From 990570b96dff809d6627d2a81f945dffc7d1d728 Mon Sep 17 00:00:00 2001 From: sundp <dp.s@yunhorn.com> Date: Sun, 8 Oct 2023 22:50:44 +0800 Subject: [PATCH] add bin file --- STM32CubeIDE/Debug/STS_RR_R125.list | 59439 ++++++++++++++++ .../Release/STS_RR_R125-YUNHORN-MASTER.bin | Bin 0 -> 90840 bytes .../Release/STS_RR_R125-YUNHORN-MASTER.list | 32756 +++++++++ STM32CubeIDE/Release/STS_RR_R125.bin | Bin 0 -> 91396 bytes STM32CubeIDE/Release/STS_RR_R125.list | 32914 +++++++++ STS-IOT-PCBA.pdf | Bin 0 -> 269464 bytes 6 files changed, 125109 insertions(+) create mode 100644 STM32CubeIDE/Debug/STS_RR_R125.list create mode 100644 STM32CubeIDE/Release/STS_RR_R125-YUNHORN-MASTER.bin create mode 100644 STM32CubeIDE/Release/STS_RR_R125-YUNHORN-MASTER.list create mode 100644 STM32CubeIDE/Release/STS_RR_R125.bin create mode 100644 STM32CubeIDE/Release/STS_RR_R125.list create mode 100644 STS-IOT-PCBA.pdf diff --git a/STM32CubeIDE/Debug/STS_RR_R125.list b/STM32CubeIDE/Debug/STS_RR_R125.list new file mode 100644 index 0000000..5c52a9e --- /dev/null +++ b/STM32CubeIDE/Debug/STS_RR_R125.list @@ -0,0 +1,59439 @@ + +STS_RR_R125.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 00000138 08000000 08000000 00010000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00017738 08000138 08000138 00010138 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 000015e8 08017870 08017870 00027870 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .USER_embedded_Keys 000000d8 08018e58 08018e58 00028e58 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 4 .ARM.extab 00000000 08018f30 08018f30 000308cc 2**0 + CONTENTS + 5 .ARM 00000008 08018f30 08018f30 00028f30 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 6 .preinit_array 00000000 08018f38 08018f38 000308cc 2**0 + CONTENTS, ALLOC, LOAD, DATA + 7 .init_array 00000004 08018f38 08018f38 00028f38 2**2 + CONTENTS, ALLOC, LOAD, DATA + 8 .fini_array 00000004 08018f3c 08018f3c 00028f3c 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .data 000008cc 20000000 08018f40 00030000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 10 .bss 00002578 200008cc 0801980c 000308cc 2**2 + ALLOC + 11 ._user_heap_stack 00000a04 20002e44 0801980c 00032e44 2**0 + ALLOC + 12 .ARM.attributes 0000002e 00000000 00000000 000308cc 2**0 + CONTENTS, READONLY + 13 .comment 00000043 00000000 00000000 000308fa 2**0 + CONTENTS, READONLY + 14 .iar_vfe_header 00000020 00000000 00000000 00030940 2**2 + CONTENTS, READONLY + 15 .debug_info 00069db0 00000000 00000000 00030960 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_abbrev 0000d77a 00000000 00000000 0009a710 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_loclists 00020684 00000000 00000000 000a7e8a 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_aranges 00003570 00000000 00000000 000c8510 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .debug_rnglists 00002b39 00000000 00000000 000cba80 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 20 .debug_macro 0002e415 00000000 00000000 000ce5b9 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line 00063196 00000000 00000000 000fc9ce 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 22 .debug_str 000dbc5e 00000000 00000000 0015fb64 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 23 .debug_frame 000098f0 00000000 00000000 0023b7c4 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 24 .debug_line_str 00000096 00000000 00000000 002450b4 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +08000138 <__do_global_dtors_aux>: + 8000138: b510 push {r4, lr} + 800013a: 4c05 ldr r4, [pc, #20] ; (8000150 <__do_global_dtors_aux+0x18>) + 800013c: 7823 ldrb r3, [r4, #0] + 800013e: b933 cbnz r3, 800014e <__do_global_dtors_aux+0x16> + 8000140: 4b04 ldr r3, [pc, #16] ; (8000154 <__do_global_dtors_aux+0x1c>) + 8000142: b113 cbz r3, 800014a <__do_global_dtors_aux+0x12> + 8000144: 4804 ldr r0, [pc, #16] ; (8000158 <__do_global_dtors_aux+0x20>) + 8000146: f3af 8000 nop.w + 800014a: 2301 movs r3, #1 + 800014c: 7023 strb r3, [r4, #0] + 800014e: bd10 pop {r4, pc} + 8000150: 200008cc .word 0x200008cc + 8000154: 00000000 .word 0x00000000 + 8000158: 08017858 .word 0x08017858 + +0800015c <frame_dummy>: + 800015c: b508 push {r3, lr} + 800015e: 4b03 ldr r3, [pc, #12] ; (800016c <frame_dummy+0x10>) + 8000160: b11b cbz r3, 800016a <frame_dummy+0xe> + 8000162: 4903 ldr r1, [pc, #12] ; (8000170 <frame_dummy+0x14>) + 8000164: 4803 ldr r0, [pc, #12] ; (8000174 <frame_dummy+0x18>) + 8000166: f3af 8000 nop.w + 800016a: bd08 pop {r3, pc} + 800016c: 00000000 .word 0x00000000 + 8000170: 200008d0 .word 0x200008d0 + 8000174: 08017858 .word 0x08017858 + +08000178 <cmox_sha1_setDefaultMacLen>: + 8000178: 2114 movs r1, #20 + 800017a: 6041 str r1, [r0, #4] + 800017c: 4770 bx lr + +0800017e <cmox_sha1_getDefaultMacLen>: + 800017e: 2014 movs r0, #20 + 8000180: 4770 bx lr + +08000182 <cmox_sha1_getBlockLen>: + 8000182: 6a40 ldr r0, [r0, #36] ; 0x24 + 8000184: 4770 bx lr + ... + +08000188 <CMOX_HMAC_SUPPORT_SHA1>: + 8000188: 0179 0800 017f 0800 0183 0800 y........... + +08000194 <CMOX_HMAC_SHA1_TABLE>: + 8000194: 0199 0800 .... + +08000198 <cmox_hmac_sha1_constructor>: + 8000198: b510 push {r4, lr} + 800019a: 4604 mov r4, r0 + 800019c: f104 0010 add.w r0, r4, #16 + 80001a0: f000 fc5c bl 8000a5c <cmox_sha1_construct> + 80001a4: f8c4 00f8 str.w r0, [r4, #248] ; 0xf8 + 80001a8: 4801 ldr r0, [pc, #4] ; (80001b0 <cmox_hmac_sha1_constructor+0x18>) + 80001aa: f8c4 017c str.w r0, [r4, #380] ; 0x17c + 80001ae: bd10 pop {r4, pc} + 80001b0: 08000188 .word 0x08000188 + +080001b4 <cmox_hmac_sha1_compute>: + 80001b4: b5f8 push {r3, r4, r5, r6, r7, lr} + 80001b6: b0e6 sub sp, #408 ; 0x198 + 80001b8: 4604 mov r4, r0 + 80001ba: 460d mov r5, r1 + 80001bc: 4616 mov r6, r2 + 80001be: 461f mov r7, r3 + 80001c0: 490a ldr r1, [pc, #40] ; (80001ec <cmox_hmac_sha1_compute+0x38>) + 80001c2: a806 add r0, sp, #24 + 80001c4: f000 feca bl 8000f5c <cmox_hmac_construct> + 80001c8: 9970 ldr r1, [sp, #448] ; 0x1c0 + 80001ca: 9a6f ldr r2, [sp, #444] ; 0x1bc + 80001cc: 9105 str r1, [sp, #20] + 80001ce: 9204 str r2, [sp, #16] + 80001d0: 9700 str r7, [sp, #0] + 80001d2: 4633 mov r3, r6 + 80001d4: 996e ldr r1, [sp, #440] ; 0x1b8 + 80001d6: 9a6d ldr r2, [sp, #436] ; 0x1b4 + 80001d8: 9103 str r1, [sp, #12] + 80001da: 9202 str r2, [sp, #8] + 80001dc: 462a mov r2, r5 + 80001de: 996c ldr r1, [sp, #432] ; 0x1b0 + 80001e0: 9101 str r1, [sp, #4] + 80001e2: 4621 mov r1, r4 + 80001e4: f000 f860 bl 80002a8 <cmox_mac_innerCompute> + 80001e8: b067 add sp, #412 ; 0x19c + 80001ea: bdf0 pop {r4, r5, r6, r7, pc} + 80001ec: 08000194 .word 0x08000194 + +080001f0 <cmox_hmac_sha1_verify>: + 80001f0: b5f8 push {r3, r4, r5, r6, r7, lr} + 80001f2: b0e6 sub sp, #408 ; 0x198 + 80001f4: 4604 mov r4, r0 + 80001f6: 460d mov r5, r1 + 80001f8: 4616 mov r6, r2 + 80001fa: 461f mov r7, r3 + 80001fc: 4909 ldr r1, [pc, #36] ; (8000224 <cmox_hmac_sha1_verify+0x34>) + 80001fe: a806 add r0, sp, #24 + 8000200: f000 feac bl 8000f5c <cmox_hmac_construct> + 8000204: 996f ldr r1, [sp, #444] ; 0x1bc + 8000206: 9a6e ldr r2, [sp, #440] ; 0x1b8 + 8000208: 9104 str r1, [sp, #16] + 800020a: 9203 str r2, [sp, #12] + 800020c: 9700 str r7, [sp, #0] + 800020e: 996d ldr r1, [sp, #436] ; 0x1b4 + 8000210: 9a6c ldr r2, [sp, #432] ; 0x1b0 + 8000212: 9102 str r1, [sp, #8] + 8000214: 9201 str r2, [sp, #4] + 8000216: 4633 mov r3, r6 + 8000218: 462a mov r2, r5 + 800021a: 4621 mov r1, r4 + 800021c: f000 f887 bl 800032e <cmox_mac_innerVerify> + 8000220: b067 add sp, #412 ; 0x19c + 8000222: bdf0 pop {r4, r5, r6, r7, pc} + 8000224: 08000194 .word 0x08000194 + +08000228 <cmox_initialize>: + 8000228: b538 push {r3, r4, r5, lr} + 800022a: 2800 cmp r0, #0 + 800022c: bf1c itt ne + 800022e: 6801 ldrne r1, [r0, #0] + 8000230: 2900 cmpne r1, #0 + 8000232: 4a18 ldr r2, [pc, #96] ; (8000294 <cmox_initialize+0x6c>) + 8000234: d123 bne.n 800027e <cmox_initialize+0x56> + 8000236: 4b18 ldr r3, [pc, #96] ; (8000298 <cmox_initialize+0x70>) + 8000238: 681c ldr r4, [r3, #0] + 800023a: f64f 71f0 movw r1, #65520 ; 0xfff0 + 800023e: 400c ands r4, r1 + 8000240: f24c 2540 movw r5, #49728 ; 0xc240 + 8000244: 42ac cmp r4, r5 + 8000246: bf1f itttt ne + 8000248: 681b ldrne r3, [r3, #0] + 800024a: 4019 andne r1, r3 + 800024c: f24c 2470 movwne r4, #49776 ; 0xc270 + 8000250: 42a1 cmpne r1, r4 + 8000252: d112 bne.n 800027a <cmox_initialize+0x52> + 8000254: 4d11 ldr r5, [pc, #68] ; (800029c <cmox_initialize+0x74>) + 8000256: 6829 ldr r1, [r5, #0] + 8000258: b979 cbnz r1, 800027a <cmox_initialize+0x52> + 800025a: 4911 ldr r1, [pc, #68] ; (80002a0 <cmox_initialize+0x78>) + 800025c: 680b ldr r3, [r1, #0] + 800025e: f3c3 030b ubfx r3, r3, #0, #12 + 8000262: f5b3 6f8a cmp.w r3, #1104 ; 0x450 + 8000266: bf1f itttt ne + 8000268: 6809 ldrne r1, [r1, #0] + 800026a: f3c1 010b ubfxne r1, r1, #0, #12 + 800026e: f240 4383 movwne r3, #1155 ; 0x483 + 8000272: 4299 cmpne r1, r3 + 8000274: bf04 itt eq + 8000276: 2101 moveq r1, #1 + 8000278: 7011 strbeq r1, [r2, #0] + 800027a: b928 cbnz r0, 8000288 <cmox_initialize+0x60> + 800027c: e005 b.n 800028a <cmox_initialize+0x62> + 800027e: 4b09 ldr r3, [pc, #36] ; (80002a4 <cmox_initialize+0x7c>) + 8000280: 4299 cmp r1, r3 + 8000282: bf04 itt eq + 8000284: 2101 moveq r1, #1 + 8000286: 7011 strbeq r1, [r2, #0] + 8000288: 6840 ldr r0, [r0, #4] + 800028a: e8bd 4032 ldmia.w sp!, {r1, r4, r5, lr} + 800028e: f001 bec5 b.w 800201c <cmox_ll_init> + 8000292: bf00 nop + 8000294: 200008e8 .word 0x200008e8 + 8000298: e000ed00 .word 0xe000ed00 + 800029c: e0042000 .word 0xe0042000 + 80002a0: 5c001000 .word 0x5c001000 + 80002a4: 48370000 .word 0x48370000 + +080002a8 <cmox_mac_innerCompute>: + 80002a8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80002ac: 4604 mov r4, r0 + 80002ae: 460d mov r5, r1 + 80002b0: 6821 ldr r1, [r4, #0] + 80002b2: 4616 mov r6, r2 + 80002b4: 684a ldr r2, [r1, #4] + 80002b6: 461f mov r7, r3 + 80002b8: 4790 blx r2 + 80002ba: 4680 mov r8, r0 + 80002bc: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002c0: d12e bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002c2: 6822 ldr r2, [r4, #0] + 80002c4: 990a ldr r1, [sp, #40] ; 0x28 + 80002c6: 6893 ldr r3, [r2, #8] + 80002c8: 4620 mov r0, r4 + 80002ca: 4798 blx r3 + 80002cc: 4680 mov r8, r0 + 80002ce: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002d2: d125 bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002d4: 6823 ldr r3, [r4, #0] + 80002d6: 9a08 ldr r2, [sp, #32] + 80002d8: 9907 ldr r1, [sp, #28] + 80002da: f8d3 c00c ldr.w ip, [r3, #12] + 80002de: 4620 mov r0, r4 + 80002e0: 47e0 blx ip + 80002e2: 4680 mov r8, r0 + 80002e4: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002e8: d11a bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002ea: 6823 ldr r3, [r4, #0] + 80002ec: 9a06 ldr r2, [sp, #24] + 80002ee: 4639 mov r1, r7 + 80002f0: 691f ldr r7, [r3, #16] + 80002f2: 4620 mov r0, r4 + 80002f4: 47b8 blx r7 + 80002f6: 4680 mov r8, r0 + 80002f8: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002fc: d110 bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002fe: 6823 ldr r3, [r4, #0] + 8000300: 4629 mov r1, r5 + 8000302: 695d ldr r5, [r3, #20] + 8000304: 4632 mov r2, r6 + 8000306: 4620 mov r0, r4 + 8000308: 47a8 blx r5 + 800030a: 4680 mov r8, r0 + 800030c: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000310: d106 bne.n 8000320 <cmox_mac_innerCompute+0x78> + 8000312: 6823 ldr r3, [r4, #0] + 8000314: 9a0b ldr r2, [sp, #44] ; 0x2c + 8000316: 9909 ldr r1, [sp, #36] ; 0x24 + 8000318: 699d ldr r5, [r3, #24] + 800031a: 4620 mov r0, r4 + 800031c: 47a8 blx r5 + 800031e: 4680 mov r8, r0 + 8000320: 6821 ldr r1, [r4, #0] + 8000322: 680a ldr r2, [r1, #0] + 8000324: 4620 mov r0, r4 + 8000326: 4790 blx r2 + 8000328: 4640 mov r0, r8 + 800032a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +0800032e <cmox_mac_innerVerify>: + 800032e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8000332: 4604 mov r4, r0 + 8000334: 460d mov r5, r1 + 8000336: 6821 ldr r1, [r4, #0] + 8000338: 4616 mov r6, r2 + 800033a: 684a ldr r2, [r1, #4] + 800033c: 461f mov r7, r3 + 800033e: 4790 blx r2 + 8000340: 4680 mov r8, r0 + 8000342: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000346: d12e bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000348: 6822 ldr r2, [r4, #0] + 800034a: 990a ldr r1, [sp, #40] ; 0x28 + 800034c: 6893 ldr r3, [r2, #8] + 800034e: 4620 mov r0, r4 + 8000350: 4798 blx r3 + 8000352: 4680 mov r8, r0 + 8000354: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000358: d125 bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 800035a: 6823 ldr r3, [r4, #0] + 800035c: 9a08 ldr r2, [sp, #32] + 800035e: 9907 ldr r1, [sp, #28] + 8000360: f8d3 c00c ldr.w ip, [r3, #12] + 8000364: 4620 mov r0, r4 + 8000366: 47e0 blx ip + 8000368: 4680 mov r8, r0 + 800036a: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 800036e: d11a bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000370: 6823 ldr r3, [r4, #0] + 8000372: 9a06 ldr r2, [sp, #24] + 8000374: 4639 mov r1, r7 + 8000376: 691f ldr r7, [r3, #16] + 8000378: 4620 mov r0, r4 + 800037a: 47b8 blx r7 + 800037c: 4680 mov r8, r0 + 800037e: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000382: d110 bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000384: 6823 ldr r3, [r4, #0] + 8000386: 4629 mov r1, r5 + 8000388: 695d ldr r5, [r3, #20] + 800038a: 4632 mov r2, r6 + 800038c: 4620 mov r0, r4 + 800038e: 47a8 blx r5 + 8000390: 4680 mov r8, r0 + 8000392: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000396: d106 bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000398: 6823 ldr r3, [r4, #0] + 800039a: 9909 ldr r1, [sp, #36] ; 0x24 + 800039c: 69dd ldr r5, [r3, #28] + 800039e: 2200 movs r2, #0 + 80003a0: 4620 mov r0, r4 + 80003a2: 47a8 blx r5 + 80003a4: 4680 mov r8, r0 + 80003a6: 6821 ldr r1, [r4, #0] + 80003a8: 680a ldr r2, [r1, #0] + 80003aa: 4620 mov r0, r4 + 80003ac: 4790 blx r2 + 80003ae: 4640 mov r0, r8 + 80003b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +080003b4 <cmox_mac_setCustomData_empty>: + 80003b4: f44f 3040 mov.w r0, #196608 ; 0x30000 + 80003b8: 4770 bx lr + ... + +080003bc <cmox_mac_compute>: + 80003bc: b5f0 push {r4, r5, r6, r7, lr} + 80003be: 460c mov r4, r1 + 80003c0: b085 sub sp, #20 + 80003c2: 4611 mov r1, r2 + 80003c4: 2800 cmp r0, #0 + 80003c6: 461a mov r2, r3 + 80003c8: bf1c itt ne + 80003ca: 6805 ldrne r5, [r0, #0] + 80003cc: 2d00 cmpne r5, #0 + 80003ce: 4b0b ldr r3, [pc, #44] ; (80003fc <cmox_mac_compute+0x40>) + 80003d0: d011 beq.n 80003f6 <cmox_mac_compute+0x3a> + 80003d2: b182 cbz r2, 80003f6 <cmox_mac_compute+0x3a> + 80003d4: b904 cbnz r4, 80003d8 <cmox_mac_compute+0x1c> + 80003d6: b971 cbnz r1, 80003f6 <cmox_mac_compute+0x3a> + 80003d8: 980d ldr r0, [sp, #52] ; 0x34 + 80003da: b160 cbz r0, 80003f6 <cmox_mac_compute+0x3a> + 80003dc: 9e0f ldr r6, [sp, #60] ; 0x3c + 80003de: 9f0e ldr r7, [sp, #56] ; 0x38 + 80003e0: 9b0a ldr r3, [sp, #40] ; 0x28 + 80003e2: 9002 str r0, [sp, #8] + 80003e4: 9604 str r6, [sp, #16] + 80003e6: 9703 str r7, [sp, #12] + 80003e8: 980b ldr r0, [sp, #44] ; 0x2c + 80003ea: 9e0c ldr r6, [sp, #48] ; 0x30 + 80003ec: 9000 str r0, [sp, #0] + 80003ee: 9601 str r6, [sp, #4] + 80003f0: 4620 mov r0, r4 + 80003f2: 47a8 blx r5 + 80003f4: 4603 mov r3, r0 + 80003f6: 4618 mov r0, r3 + 80003f8: b005 add sp, #20 + 80003fa: bdf0 pop {r4, r5, r6, r7, pc} + 80003fc: 00030002 .word 0x00030002 + +08000400 <cmox_sha1_transform>: + 8000400: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8000404: 4606 mov r6, r0 + 8000406: b0d0 sub sp, #320 ; 0x140 + 8000408: 6808 ldr r0, [r1, #0] + 800040a: 6df5 ldr r5, [r6, #92] ; 0x5c + 800040c: f8d6 e060 ldr.w lr, [r6, #96] ; 0x60 + 8000410: 6e72 ldr r2, [r6, #100] ; 0x64 + 8000412: 6eb7 ldr r7, [r6, #104] ; 0x68 + 8000414: 6ef3 ldr r3, [r6, #108] ; 0x6c + 8000416: ba00 rev r0, r0 + 8000418: 9000 str r0, [sp, #0] + 800041a: 466c mov r4, sp + 800041c: 6848 ldr r0, [r1, #4] + 800041e: ba00 rev r0, r0 + 8000420: 6060 str r0, [r4, #4] + 8000422: f10d 0840 add.w r8, sp, #64 ; 0x40 + 8000426: 6888 ldr r0, [r1, #8] + 8000428: ba00 rev r0, r0 + 800042a: 60a0 str r0, [r4, #8] + 800042c: 68c8 ldr r0, [r1, #12] + 800042e: ba00 rev r0, r0 + 8000430: 60e0 str r0, [r4, #12] + 8000432: 6908 ldr r0, [r1, #16] + 8000434: ba00 rev r0, r0 + 8000436: 6120 str r0, [r4, #16] + 8000438: 6948 ldr r0, [r1, #20] + 800043a: ba00 rev r0, r0 + 800043c: 6160 str r0, [r4, #20] + 800043e: 6988 ldr r0, [r1, #24] + 8000440: ba00 rev r0, r0 + 8000442: 61a0 str r0, [r4, #24] + 8000444: 69c8 ldr r0, [r1, #28] + 8000446: ba00 rev r0, r0 + 8000448: 61e0 str r0, [r4, #28] + 800044a: 6a08 ldr r0, [r1, #32] + 800044c: ba00 rev r0, r0 + 800044e: 6220 str r0, [r4, #32] + 8000450: 6a48 ldr r0, [r1, #36] ; 0x24 + 8000452: ba00 rev r0, r0 + 8000454: 6260 str r0, [r4, #36] ; 0x24 + 8000456: 6a88 ldr r0, [r1, #40] ; 0x28 + 8000458: ba00 rev r0, r0 + 800045a: 62a0 str r0, [r4, #40] ; 0x28 + 800045c: 6ac8 ldr r0, [r1, #44] ; 0x2c + 800045e: ba00 rev r0, r0 + 8000460: 62e0 str r0, [r4, #44] ; 0x2c + 8000462: 6b08 ldr r0, [r1, #48] ; 0x30 + 8000464: ba00 rev r0, r0 + 8000466: 6320 str r0, [r4, #48] ; 0x30 + 8000468: 6b48 ldr r0, [r1, #52] ; 0x34 + 800046a: ba00 rev r0, r0 + 800046c: 6360 str r0, [r4, #52] ; 0x34 + 800046e: 6b88 ldr r0, [r1, #56] ; 0x38 + 8000470: ba00 rev r0, r0 + 8000472: 63a0 str r0, [r4, #56] ; 0x38 + 8000474: 6bc8 ldr r0, [r1, #60] ; 0x3c + 8000476: ba00 rev r0, r0 + 8000478: 63e0 str r0, [r4, #60] ; 0x3c + 800047a: 2040 movs r0, #64 ; 0x40 + 800047c: f858 1c0c ldr.w r1, [r8, #-12] + 8000480: f858 cc20 ldr.w ip, [r8, #-32] + 8000484: f858 ac38 ldr.w sl, [r8, #-56] + 8000488: ea8c 0101 eor.w r1, ip, r1 + 800048c: f858 cc40 ldr.w ip, [r8, #-64] + 8000490: ea8a 0101 eor.w r1, sl, r1 + 8000494: ea8c 0901 eor.w r9, ip, r1 + 8000498: ea4f 79f9 mov.w r9, r9, ror #31 + 800049c: 1e40 subs r0, r0, #1 + 800049e: f848 9b04 str.w r9, [r8], #4 + 80004a2: d1eb bne.n 800047c <cmox_sha1_transform+0x7c> + 80004a4: ea87 0002 eor.w r0, r7, r2 + 80004a8: ea00 000e and.w r0, r0, lr + 80004ac: 4078 eors r0, r7 + 80004ae: eb10 61f5 adds.w r1, r0, r5, ror #27 + 80004b2: 9800 ldr r0, [sp, #0] + 80004b4: f8df c424 ldr.w ip, [pc, #1060] ; 80008dc <cmox_sha1_transform+0x4dc> + 80004b8: 1841 adds r1, r0, r1 + 80004ba: 4461 add r1, ip + 80004bc: 18c8 adds r0, r1, r3 + 80004be: ea82 03be eor.w r3, r2, lr, ror #2 + 80004c2: 402b ands r3, r5 + 80004c4: ea4f 61f0 mov.w r1, r0, ror #27 + 80004c8: 4053 eors r3, r2 + 80004ca: 1859 adds r1, r3, r1 + 80004cc: 6863 ldr r3, [r4, #4] + 80004ce: 1859 adds r1, r3, r1 + 80004d0: 4461 add r1, ip + 80004d2: 19cf adds r7, r1, r7 + 80004d4: ea4f 03b5 mov.w r3, r5, ror #2 + 80004d8: ea83 01be eor.w r1, r3, lr, ror #2 + 80004dc: 4001 ands r1, r0 + 80004de: ea81 01be eor.w r1, r1, lr, ror #2 + 80004e2: eb11 65f7 adds.w r5, r1, r7, ror #27 + 80004e6: 68a1 ldr r1, [r4, #8] + 80004e8: 194d adds r5, r1, r5 + 80004ea: 4465 add r5, ip + 80004ec: 18a9 adds r1, r5, r2 + 80004ee: ea83 02b0 eor.w r2, r3, r0, ror #2 + 80004f2: 403a ands r2, r7 + 80004f4: ea4f 65f1 mov.w r5, r1, ror #27 + 80004f8: 405a eors r2, r3 + 80004fa: 1955 adds r5, r2, r5 + 80004fc: 68e2 ldr r2, [r4, #12] + 80004fe: 1955 adds r5, r2, r5 + 8000500: ea4f 02b7 mov.w r2, r7, ror #2 + 8000504: ea82 07b0 eor.w r7, r2, r0, ror #2 + 8000508: 4465 add r5, ip + 800050a: 400f ands r7, r1 + 800050c: eb05 0ebe add.w lr, r5, lr, ror #2 + 8000510: ea97 07b0 eors.w r7, r7, r0, ror #2 + 8000514: eb17 65fe adds.w r5, r7, lr, ror #27 + 8000518: 6927 ldr r7, [r4, #16] + 800051a: 197d adds r5, r7, r5 + 800051c: ea4f 07b1 mov.w r7, r1, ror #2 + 8000520: ea82 0107 eor.w r1, r2, r7 + 8000524: 4465 add r5, ip + 8000526: ea01 010e and.w r1, r1, lr + 800052a: 18eb adds r3, r5, r3 + 800052c: 4051 eors r1, r2 + 800052e: eb11 65f3 adds.w r5, r1, r3, ror #27 + 8000532: 6961 ldr r1, [r4, #20] + 8000534: 194d adds r5, r1, r5 + 8000536: ea4f 01be mov.w r1, lr, ror #2 + 800053a: ea87 0e01 eor.w lr, r7, r1 + 800053e: 4465 add r5, ip + 8000540: ea0e 0e03 and.w lr, lr, r3 + 8000544: eb15 00b0 adds.w r0, r5, r0, ror #2 + 8000548: ea8e 0e07 eor.w lr, lr, r7 + 800054c: eb0e 65f0 add.w r5, lr, r0, ror #27 + 8000550: f8d4 e018 ldr.w lr, [r4, #24] + 8000554: 4475 add r5, lr + 8000556: 4465 add r5, ip + 8000558: 18aa adds r2, r5, r2 + 800055a: ea81 05b3 eor.w r5, r1, r3, ror #2 + 800055e: 4005 ands r5, r0 + 8000560: ea4f 6ef2 mov.w lr, r2, ror #27 + 8000564: 404d eors r5, r1 + 8000566: 44ae add lr, r5 + 8000568: 69e5 ldr r5, [r4, #28] + 800056a: 44ae add lr, r5 + 800056c: 44e6 add lr, ip + 800056e: 4477 add r7, lr + 8000570: ea4f 00b0 mov.w r0, r0, ror #2 + 8000574: ea80 0eb3 eor.w lr, r0, r3, ror #2 + 8000578: ea0e 0e02 and.w lr, lr, r2 + 800057c: ea8e 0eb3 eor.w lr, lr, r3, ror #2 + 8000580: eb0e 65f7 add.w r5, lr, r7, ror #27 + 8000584: f8d4 e020 ldr.w lr, [r4, #32] + 8000588: 4475 add r5, lr + 800058a: 4465 add r5, ip + 800058c: 1869 adds r1, r5, r1 + 800058e: ea80 05b2 eor.w r5, r0, r2, ror #2 + 8000592: 403d ands r5, r7 + 8000594: ea4f 6ef1 mov.w lr, r1, ror #27 + 8000598: 4045 eors r5, r0 + 800059a: 44ae add lr, r5 + 800059c: 6a65 ldr r5, [r4, #36] ; 0x24 + 800059e: 44ae add lr, r5 + 80005a0: 44e6 add lr, ip + 80005a2: eb0e 03b3 add.w r3, lr, r3, ror #2 + 80005a6: ea4f 07b7 mov.w r7, r7, ror #2 + 80005aa: ea87 0eb2 eor.w lr, r7, r2, ror #2 + 80005ae: ea0e 0e01 and.w lr, lr, r1 + 80005b2: ea8e 0eb2 eor.w lr, lr, r2, ror #2 + 80005b6: eb0e 65f3 add.w r5, lr, r3, ror #27 + 80005ba: f8d4 e028 ldr.w lr, [r4, #40] ; 0x28 + 80005be: 4475 add r5, lr + 80005c0: 4465 add r5, ip + 80005c2: 1828 adds r0, r5, r0 + 80005c4: ea87 05b1 eor.w r5, r7, r1, ror #2 + 80005c8: 401d ands r5, r3 + 80005ca: ea4f 6ef0 mov.w lr, r0, ror #27 + 80005ce: 407d eors r5, r7 + 80005d0: 44ae add lr, r5 + 80005d2: 6ae5 ldr r5, [r4, #44] ; 0x2c + 80005d4: 44ae add lr, r5 + 80005d6: 44e6 add lr, ip + 80005d8: eb0e 02b2 add.w r2, lr, r2, ror #2 + 80005dc: ea4f 03b3 mov.w r3, r3, ror #2 + 80005e0: ea83 0eb1 eor.w lr, r3, r1, ror #2 + 80005e4: ea0e 0e00 and.w lr, lr, r0 + 80005e8: ea8e 0eb1 eor.w lr, lr, r1, ror #2 + 80005ec: eb0e 65f2 add.w r5, lr, r2, ror #27 + 80005f0: f8d4 e030 ldr.w lr, [r4, #48] ; 0x30 + 80005f4: 4475 add r5, lr + 80005f6: 4465 add r5, ip + 80005f8: 19ef adds r7, r5, r7 + 80005fa: ea83 05b0 eor.w r5, r3, r0, ror #2 + 80005fe: 4015 ands r5, r2 + 8000600: ea4f 6ef7 mov.w lr, r7, ror #27 + 8000604: 405d eors r5, r3 + 8000606: 44ae add lr, r5 + 8000608: 6b65 ldr r5, [r4, #52] ; 0x34 + 800060a: 44ae add lr, r5 + 800060c: 44e6 add lr, ip + 800060e: eb0e 01b1 add.w r1, lr, r1, ror #2 + 8000612: ea4f 02b2 mov.w r2, r2, ror #2 + 8000616: ea82 0eb0 eor.w lr, r2, r0, ror #2 + 800061a: ea0e 0e07 and.w lr, lr, r7 + 800061e: ea8e 0eb0 eor.w lr, lr, r0, ror #2 + 8000622: eb0e 65f1 add.w r5, lr, r1, ror #27 + 8000626: f8d4 e038 ldr.w lr, [r4, #56] ; 0x38 + 800062a: 4475 add r5, lr + 800062c: 4465 add r5, ip + 800062e: 18eb adds r3, r5, r3 + 8000630: ea82 05b7 eor.w r5, r2, r7, ror #2 + 8000634: 400d ands r5, r1 + 8000636: ea4f 6ef3 mov.w lr, r3, ror #27 + 800063a: 4055 eors r5, r2 + 800063c: 44ae add lr, r5 + 800063e: 6be5 ldr r5, [r4, #60] ; 0x3c + 8000640: 44ae add lr, r5 + 8000642: 44e6 add lr, ip + 8000644: eb0e 00b0 add.w r0, lr, r0, ror #2 + 8000648: ea4f 01b1 mov.w r1, r1, ror #2 + 800064c: ea81 0eb7 eor.w lr, r1, r7, ror #2 + 8000650: ea0e 0e03 and.w lr, lr, r3 + 8000654: ea8e 0eb7 eor.w lr, lr, r7, ror #2 + 8000658: eb0e 65f0 add.w r5, lr, r0, ror #27 + 800065c: f8d4 e040 ldr.w lr, [r4, #64] ; 0x40 + 8000660: 4475 add r5, lr + 8000662: 4465 add r5, ip + 8000664: ea81 0eb3 eor.w lr, r1, r3, ror #2 + 8000668: 18aa adds r2, r5, r2 + 800066a: ea0e 0e00 and.w lr, lr, r0 + 800066e: ea4f 65f2 mov.w r5, r2, ror #27 + 8000672: ea8e 0e01 eor.w lr, lr, r1 + 8000676: 4475 add r5, lr + 8000678: f8dd e044 ldr.w lr, [sp, #68] ; 0x44 + 800067c: ea4f 00b0 mov.w r0, r0, ror #2 + 8000680: 4475 add r5, lr + 8000682: ea80 0eb3 eor.w lr, r0, r3, ror #2 + 8000686: 4465 add r5, ip + 8000688: ea0e 0e02 and.w lr, lr, r2 + 800068c: eb15 07b7 adds.w r7, r5, r7, ror #2 + 8000690: ea8e 0eb3 eor.w lr, lr, r3, ror #2 + 8000694: eb0e 65f7 add.w r5, lr, r7, ror #27 + 8000698: f8dd e048 ldr.w lr, [sp, #72] ; 0x48 + 800069c: ea4f 02b2 mov.w r2, r2, ror #2 + 80006a0: 4475 add r5, lr + 80006a2: ea80 0e02 eor.w lr, r0, r2 + 80006a6: 4465 add r5, ip + 80006a8: ea0e 0e07 and.w lr, lr, r7 + 80006ac: 1869 adds r1, r5, r1 + 80006ae: ea8e 0e00 eor.w lr, lr, r0 + 80006b2: eb0e 65f1 add.w r5, lr, r1, ror #27 + 80006b6: f8dd e04c ldr.w lr, [sp, #76] ; 0x4c + 80006ba: 4475 add r5, lr + 80006bc: 4465 add r5, ip + 80006be: eb05 03b3 add.w r3, r5, r3, ror #2 + 80006c2: ea4f 0eb7 mov.w lr, r7, ror #2 + 80006c6: 2714 movs r7, #20 + 80006c8: f10d 0c50 add.w ip, sp, #80 ; 0x50 + 80006cc: f8df 5210 ldr.w r5, [pc, #528] ; 80008e0 <cmox_sha1_transform+0x4e0> + 80006d0: ea8e 0b01 eor.w fp, lr, r1 + 80006d4: ea82 0b0b eor.w fp, r2, fp + 80006d8: eb0b 6af3 add.w sl, fp, r3, ror #27 + 80006dc: f85c bb04 ldr.w fp, [ip], #4 + 80006e0: 44da add sl, fp + 80006e2: 44aa add sl, r5 + 80006e4: 4450 add r0, sl + 80006e6: ea83 0bb1 eor.w fp, r3, r1, ror #2 + 80006ea: ea4f 6af0 mov.w sl, r0, ror #27 + 80006ee: ea8e 0b0b eor.w fp, lr, fp + 80006f2: 44da add sl, fp + 80006f4: f85c bb04 ldr.w fp, [ip], #4 + 80006f8: 44da add sl, fp + 80006fa: 44aa add sl, r5 + 80006fc: 4452 add r2, sl + 80006fe: ea80 0bb3 eor.w fp, r0, r3, ror #2 + 8000702: ea4f 6af2 mov.w sl, r2, ror #27 + 8000706: ea8b 0bb1 eor.w fp, fp, r1, ror #2 + 800070a: 44da add sl, fp + 800070c: f85c bb04 ldr.w fp, [ip], #4 + 8000710: 44da add sl, fp + 8000712: ea4f 00b0 mov.w r0, r0, ror #2 + 8000716: 44aa add sl, r5 + 8000718: ea80 0b02 eor.w fp, r0, r2 + 800071c: 44d6 add lr, sl + 800071e: ea8b 0bb3 eor.w fp, fp, r3, ror #2 + 8000722: eb0b 6afe add.w sl, fp, lr, ror #27 + 8000726: f85c bb04 ldr.w fp, [ip], #4 + 800072a: 44da add sl, fp + 800072c: ea4f 02b2 mov.w r2, r2, ror #2 + 8000730: 44aa add sl, r5 + 8000732: ea82 0b0e eor.w fp, r2, lr + 8000736: eb0a 01b1 add.w r1, sl, r1, ror #2 + 800073a: ea80 0b0b eor.w fp, r0, fp + 800073e: eb0b 6af1 add.w sl, fp, r1, ror #27 + 8000742: f85c bb04 ldr.w fp, [ip], #4 + 8000746: 44da add sl, fp + 8000748: 1d7f adds r7, r7, #5 + 800074a: 44aa add sl, r5 + 800074c: 2f28 cmp r7, #40 ; 0x28 + 800074e: eb0a 03b3 add.w r3, sl, r3, ror #2 + 8000752: ea4f 0ebe mov.w lr, lr, ror #2 + 8000756: d3bb bcc.n 80006d0 <cmox_sha1_transform+0x2d0> + 8000758: 2f3c cmp r7, #60 ; 0x3c + 800075a: d361 bcc.n 8000820 <cmox_sha1_transform+0x420> + 800075c: 2f50 cmp r7, #80 ; 0x50 + 800075e: d24d bcs.n 80007fc <cmox_sha1_transform+0x3fc> + 8000760: eb04 0c87 add.w ip, r4, r7, lsl #2 + 8000764: f1c7 0754 rsb r7, r7, #84 ; 0x54 + 8000768: 4c5e ldr r4, [pc, #376] ; (80008e4 <cmox_sha1_transform+0x4e4>) + 800076a: fba7 a504 umull sl, r5, r7, r4 + 800076e: 4604 mov r4, r0 + 8000770: 4f5d ldr r7, [pc, #372] ; (80008e8 <cmox_sha1_transform+0x4e8>) + 8000772: 08a8 lsrs r0, r5, #2 + 8000774: ea8e 0a01 eor.w sl, lr, r1 + 8000778: ea82 0a0a eor.w sl, r2, sl + 800077c: f85c bb04 ldr.w fp, [ip], #4 + 8000780: eb0a 65f3 add.w r5, sl, r3, ror #27 + 8000784: 445d add r5, fp + 8000786: 197d adds r5, r7, r5 + 8000788: 192c adds r4, r5, r4 + 800078a: ea83 0ab1 eor.w sl, r3, r1, ror #2 + 800078e: ea4f 65f4 mov.w r5, r4, ror #27 + 8000792: ea8e 0a0a eor.w sl, lr, sl + 8000796: 4455 add r5, sl + 8000798: f85c ab04 ldr.w sl, [ip], #4 + 800079c: f85c bb04 ldr.w fp, [ip], #4 + 80007a0: 4455 add r5, sl + 80007a2: 197d adds r5, r7, r5 + 80007a4: 18aa adds r2, r5, r2 + 80007a6: ea84 0ab3 eor.w sl, r4, r3, ror #2 + 80007aa: ea4f 65f2 mov.w r5, r2, ror #27 + 80007ae: ea8a 0ab1 eor.w sl, sl, r1, ror #2 + 80007b2: 4455 add r5, sl + 80007b4: 445d add r5, fp + 80007b6: ea4f 04b4 mov.w r4, r4, ror #2 + 80007ba: 197d adds r5, r7, r5 + 80007bc: ea84 0a02 eor.w sl, r4, r2 + 80007c0: 44ae add lr, r5 + 80007c2: ea8a 0ab3 eor.w sl, sl, r3, ror #2 + 80007c6: eb0a 65fe add.w r5, sl, lr, ror #27 + 80007ca: f85c ab04 ldr.w sl, [ip], #4 + 80007ce: 4455 add r5, sl + 80007d0: ea4f 02b2 mov.w r2, r2, ror #2 + 80007d4: 197d adds r5, r7, r5 + 80007d6: ea82 0a0e eor.w sl, r2, lr + 80007da: eb15 01b1 adds.w r1, r5, r1, ror #2 + 80007de: ea84 0a0a eor.w sl, r4, sl + 80007e2: f85c bb04 ldr.w fp, [ip], #4 + 80007e6: eb0a 65f1 add.w r5, sl, r1, ror #27 + 80007ea: 445d add r5, fp + 80007ec: 197d adds r5, r7, r5 + 80007ee: eb15 03b3 adds.w r3, r5, r3, ror #2 + 80007f2: 1e40 subs r0, r0, #1 + 80007f4: ea4f 0ebe mov.w lr, lr, ror #2 + 80007f8: d1bc bne.n 8000774 <cmox_sha1_transform+0x374> + 80007fa: 4620 mov r0, r4 + 80007fc: 6df4 ldr r4, [r6, #92] ; 0x5c + 80007fe: 191b adds r3, r3, r4 + 8000800: 65f3 str r3, [r6, #92] ; 0x5c + 8000802: 6e33 ldr r3, [r6, #96] ; 0x60 + 8000804: 18c9 adds r1, r1, r3 + 8000806: 6631 str r1, [r6, #96] ; 0x60 + 8000808: 6e71 ldr r1, [r6, #100] ; 0x64 + 800080a: 4471 add r1, lr + 800080c: 6671 str r1, [r6, #100] ; 0x64 + 800080e: 6eb3 ldr r3, [r6, #104] ; 0x68 + 8000810: 18d2 adds r2, r2, r3 + 8000812: 66b2 str r2, [r6, #104] ; 0x68 + 8000814: 6ef1 ldr r1, [r6, #108] ; 0x6c + 8000816: 1840 adds r0, r0, r1 + 8000818: 66f0 str r0, [r6, #108] ; 0x6c + 800081a: b050 add sp, #320 ; 0x140 + 800081c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8000820: ea4e 0b01 orr.w fp, lr, r1 + 8000824: ea0e 0a01 and.w sl, lr, r1 + 8000828: ea0b 0b02 and.w fp, fp, r2 + 800082c: ea4b 0a0a orr.w sl, fp, sl + 8000830: eb0a 65f3 add.w r5, sl, r3, ror #27 + 8000834: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 8000838: f8df c0b0 ldr.w ip, [pc, #176] ; 80008ec <cmox_sha1_transform+0x4ec> + 800083c: 4455 add r5, sl + 800083e: ea43 0bb1 orr.w fp, r3, r1, ror #2 + 8000842: 4465 add r5, ip + 8000844: ea03 0ab1 and.w sl, r3, r1, ror #2 + 8000848: ea0b 0b0e and.w fp, fp, lr + 800084c: 1828 adds r0, r5, r0 + 800084e: ea4b 0a0a orr.w sl, fp, sl + 8000852: 1c7f adds r7, r7, #1 + 8000854: eb0a 65f0 add.w r5, sl, r0, ror #27 + 8000858: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 800085c: 4455 add r5, sl + 800085e: ea40 0bb3 orr.w fp, r0, r3, ror #2 + 8000862: 4465 add r5, ip + 8000864: ea00 0ab3 and.w sl, r0, r3, ror #2 + 8000868: ea0b 0bb1 and.w fp, fp, r1, ror #2 + 800086c: 18aa adds r2, r5, r2 + 800086e: ea4b 0a0a orr.w sl, fp, sl + 8000872: 1c7f adds r7, r7, #1 + 8000874: eb0a 65f2 add.w r5, sl, r2, ror #27 + 8000878: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 800087c: 4455 add r5, sl + 800087e: ea4f 00b0 mov.w r0, r0, ror #2 + 8000882: ea40 0b02 orr.w fp, r0, r2 + 8000886: 4465 add r5, ip + 8000888: ea00 0a02 and.w sl, r0, r2 + 800088c: ea0b 0bb3 and.w fp, fp, r3, ror #2 + 8000890: 44ae add lr, r5 + 8000892: ea4b 0a0a orr.w sl, fp, sl + 8000896: 1c7f adds r7, r7, #1 + 8000898: eb0a 65fe add.w r5, sl, lr, ror #27 + 800089c: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 80008a0: 4455 add r5, sl + 80008a2: ea4f 02b2 mov.w r2, r2, ror #2 + 80008a6: ea42 0b0e orr.w fp, r2, lr + 80008aa: 4465 add r5, ip + 80008ac: ea02 0a0e and.w sl, r2, lr + 80008b0: ea0b 0b00 and.w fp, fp, r0 + 80008b4: eb15 01b1 adds.w r1, r5, r1, ror #2 + 80008b8: ea4b 0a0a orr.w sl, fp, sl + 80008bc: 1c7f adds r7, r7, #1 + 80008be: eb0a 65f1 add.w r5, sl, r1, ror #27 + 80008c2: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 80008c6: 4455 add r5, sl + 80008c8: 1c7f adds r7, r7, #1 + 80008ca: 4465 add r5, ip + 80008cc: 2f3c cmp r7, #60 ; 0x3c + 80008ce: eb05 03b3 add.w r3, r5, r3, ror #2 + 80008d2: ea4f 0ebe mov.w lr, lr, ror #2 + 80008d6: d3a3 bcc.n 8000820 <cmox_sha1_transform+0x420> + 80008d8: e740 b.n 800075c <cmox_sha1_transform+0x35c> + 80008da: bf00 nop + 80008dc: 5a827999 .word 0x5a827999 + 80008e0: 6ed9eba1 .word 0x6ed9eba1 + 80008e4: cccccccd .word 0xcccccccd + 80008e8: ca62c1d6 .word 0xca62c1d6 + 80008ec: 8f1bbcdc .word 0x8f1bbcdc + +080008f0 <cmox_sha1_cleanup>: + 80008f0: b500 push {lr} + 80008f2: b081 sub sp, #4 + 80008f4: 6801 ldr r1, [r0, #0] + 80008f6: 4a07 ldr r2, [pc, #28] ; (8000914 <cmox_sha1_cleanup+0x24>) + 80008f8: 4291 cmp r1, r2 + 80008fa: d100 bne.n 80008fe <cmox_sha1_cleanup+0xe> + 80008fc: b910 cbnz r0, 8000904 <cmox_sha1_cleanup+0x14> + 80008fe: 4806 ldr r0, [pc, #24] ; (8000918 <cmox_sha1_cleanup+0x28>) + 8000900: b001 add sp, #4 + 8000902: bd00 pop {pc} + 8000904: 217c movs r1, #124 ; 0x7c + 8000906: f016 ff11 bl 801772c <__aeabi_memclr> + 800090a: f44f 3000 mov.w r0, #131072 ; 0x20000 + 800090e: b001 add sp, #4 + 8000910: bd00 pop {pc} + 8000912: bf00 nop + 8000914: 080009fc .word 0x080009fc + 8000918: 00020003 .word 0x00020003 + +0800091c <cmox_sha1_init>: + 800091c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8000920: 4a0b ldr r2, [pc, #44] ; (8000950 <cmox_sha1_init+0x34>) + 8000922: e892 51f8 ldmia.w r2, {r3, r4, r5, r6, r7, r8, ip, lr} + 8000926: b088 sub sp, #32 + 8000928: 4669 mov r1, sp + 800092a: e881 51f8 stmia.w r1, {r3, r4, r5, r6, r7, r8, ip, lr} + 800092e: 6802 ldr r2, [r0, #0] + 8000930: 4b08 ldr r3, [pc, #32] ; (8000954 <cmox_sha1_init+0x38>) + 8000932: 429a cmp r2, r3 + 8000934: d100 bne.n 8000938 <cmox_sha1_init+0x1c> + 8000936: b918 cbnz r0, 8000940 <cmox_sha1_init+0x24> + 8000938: 4807 ldr r0, [pc, #28] ; (8000958 <cmox_sha1_init+0x3c>) + 800093a: b008 add sp, #32 + 800093c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8000940: 2214 movs r2, #20 + 8000942: 3008 adds r0, #8 + 8000944: f000 fb4f bl 8000fe6 <cmox_md_init> + 8000948: b008 add sp, #32 + 800094a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800094e: bf00 nop + 8000950: 080009dc .word 0x080009dc + 8000954: 080009fc .word 0x080009fc + 8000958: 00020003 .word 0x00020003 + +0800095c <cmox_sha1_setTagLen>: + 800095c: 2915 cmp r1, #21 + 800095e: d204 bcs.n 800096a <cmox_sha1_setTagLen+0xe> + 8000960: 6802 ldr r2, [r0, #0] + 8000962: 4b04 ldr r3, [pc, #16] ; (8000974 <cmox_sha1_setTagLen+0x18>) + 8000964: 429a cmp r2, r3 + 8000966: d100 bne.n 800096a <cmox_sha1_setTagLen+0xe> + 8000968: b908 cbnz r0, 800096e <cmox_sha1_setTagLen+0x12> + 800096a: 4803 ldr r0, [pc, #12] ; (8000978 <cmox_sha1_setTagLen+0x1c>) + 800096c: 4770 bx lr + 800096e: 3008 adds r0, #8 + 8000970: f000 bb48 b.w 8001004 <cmox_md_setTagSize> + 8000974: 080009fc .word 0x080009fc + 8000978: 00020003 .word 0x00020003 + +0800097c <cmox_sha1_append>: + 800097c: b410 push {r4} + 800097e: b081 sub sp, #4 + 8000980: 4613 mov r3, r2 + 8000982: 6802 ldr r2, [r0, #0] + 8000984: 4c07 ldr r4, [pc, #28] ; (80009a4 <cmox_sha1_append+0x28>) + 8000986: 42a2 cmp r2, r4 + 8000988: d100 bne.n 800098c <cmox_sha1_append+0x10> + 800098a: b918 cbnz r0, 8000994 <cmox_sha1_append+0x18> + 800098c: b001 add sp, #4 + 800098e: bc10 pop {r4} + 8000990: 4805 ldr r0, [pc, #20] ; (80009a8 <cmox_sha1_append+0x2c>) + 8000992: 4770 bx lr + 8000994: b001 add sp, #4 + 8000996: f100 0224 add.w r2, r0, #36 ; 0x24 + 800099a: bc10 pop {r4} + 800099c: 3008 adds r0, #8 + 800099e: f000 bb35 b.w 800100c <cmox_md_append> + 80009a2: bf00 nop + 80009a4: 080009fc .word 0x080009fc + 80009a8: 00020003 .word 0x00020003 + +080009ac <cmox_sha1_generateTag>: + 80009ac: b410 push {r4} + 80009ae: b081 sub sp, #4 + 80009b0: 4613 mov r3, r2 + 80009b2: 6802 ldr r2, [r0, #0] + 80009b4: 4c07 ldr r4, [pc, #28] ; (80009d4 <cmox_sha1_generateTag+0x28>) + 80009b6: 42a2 cmp r2, r4 + 80009b8: d100 bne.n 80009bc <cmox_sha1_generateTag+0x10> + 80009ba: b918 cbnz r0, 80009c4 <cmox_sha1_generateTag+0x18> + 80009bc: b001 add sp, #4 + 80009be: bc10 pop {r4} + 80009c0: 4805 ldr r0, [pc, #20] ; (80009d8 <cmox_sha1_generateTag+0x2c>) + 80009c2: 4770 bx lr + 80009c4: 460a mov r2, r1 + 80009c6: b001 add sp, #4 + 80009c8: f100 0124 add.w r1, r0, #36 ; 0x24 + 80009cc: bc10 pop {r4} + 80009ce: 3008 adds r0, #8 + 80009d0: f000 bb70 b.w 80010b4 <cmox_md_generateTag> + 80009d4: 080009fc .word 0x080009fc + 80009d8: 00020003 .word 0x00020003 + 80009dc: 67452301 .word 0x67452301 + 80009e0: efcdab89 .word 0xefcdab89 + 80009e4: 98badcfe .word 0x98badcfe + 80009e8: 10325476 .word 0x10325476 + 80009ec: c3d2e1f0 .word 0xc3d2e1f0 + ... + +080009fc <CMOX_SHA1_VTABLE>: + 80009fc: 080008f1 0800091d 0800095d 0800097d ........]...}... + 8000a0c: 080009ad .... + +08000a10 <CMOX_SHA1_MD_VTABLE_ST>: + 8000a10: 08000401 08000f79 08000fc5 08000f81 ....y........... + +08000a20 <cmox_sha1_compute>: + 8000a20: b5f0 push {r4, r5, r6, r7, lr} + 8000a22: b0a3 sub sp, #140 ; 0x8c + 8000a24: 4604 mov r4, r0 + 8000a26: 480b ldr r0, [pc, #44] ; (8000a54 <cmox_sha1_compute+0x34>) + 8000a28: 9002 str r0, [sp, #8] + 8000a2a: 460d mov r5, r1 + 8000a2c: 4616 mov r6, r2 + 8000a2e: 461f mov r7, r3 + 8000a30: 4b09 ldr r3, [pc, #36] ; (8000a58 <cmox_sha1_compute+0x38>) + 8000a32: 2208 movs r2, #8 + 8000a34: 2140 movs r1, #64 ; 0x40 + 8000a36: a804 add r0, sp, #16 + 8000a38: f000 fad1 bl 8000fde <cmox_md_construct> + 8000a3c: 9828 ldr r0, [sp, #160] ; 0xa0 + 8000a3e: 9001 str r0, [sp, #4] + 8000a40: 9700 str r7, [sp, #0] + 8000a42: 4633 mov r3, r6 + 8000a44: 462a mov r2, r5 + 8000a46: 4621 mov r1, r4 + 8000a48: a802 add r0, sp, #8 + 8000a4a: f000 f81b bl 8000a84 <cmox_hash_common_compute> + 8000a4e: b023 add sp, #140 ; 0x8c + 8000a50: bdf0 pop {r4, r5, r6, r7, pc} + 8000a52: bf00 nop + 8000a54: 080009fc .word 0x080009fc + 8000a58: 08000a10 .word 0x08000a10 + +08000a5c <cmox_sha1_construct>: + 8000a5c: b510 push {r4, lr} + 8000a5e: 0004 movs r4, r0 + 8000a60: bf08 it eq + 8000a62: 2400 moveq r4, #0 + 8000a64: d008 beq.n 8000a78 <cmox_sha1_construct+0x1c> + 8000a66: 4805 ldr r0, [pc, #20] ; (8000a7c <cmox_sha1_construct+0x20>) + 8000a68: 4b05 ldr r3, [pc, #20] ; (8000a80 <cmox_sha1_construct+0x24>) + 8000a6a: 6020 str r0, [r4, #0] + 8000a6c: 2208 movs r2, #8 + 8000a6e: 2140 movs r1, #64 ; 0x40 + 8000a70: f104 0008 add.w r0, r4, #8 + 8000a74: f000 fab3 bl 8000fde <cmox_md_construct> + 8000a78: 4620 mov r0, r4 + 8000a7a: bd10 pop {r4, pc} + 8000a7c: 080009fc .word 0x080009fc + 8000a80: 08000a10 .word 0x08000a10 + +08000a84 <cmox_hash_common_compute>: + 8000a84: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8000a88: 4604 mov r4, r0 + 8000a8a: 460e mov r6, r1 + 8000a8c: 6821 ldr r1, [r4, #0] + 8000a8e: 4617 mov r7, r2 + 8000a90: 684a ldr r2, [r1, #4] + 8000a92: 461d mov r5, r3 + 8000a94: 4790 blx r2 + 8000a96: 4680 mov r8, r0 + 8000a98: f5b8 3f00 cmp.w r8, #131072 ; 0x20000 + 8000a9c: d119 bne.n 8000ad2 <cmox_hash_common_compute+0x4e> + 8000a9e: 6822 ldr r2, [r4, #0] + 8000aa0: 9906 ldr r1, [sp, #24] + 8000aa2: 6893 ldr r3, [r2, #8] + 8000aa4: 4620 mov r0, r4 + 8000aa6: 4798 blx r3 + 8000aa8: 4680 mov r8, r0 + 8000aaa: f5b8 3f00 cmp.w r8, #131072 ; 0x20000 + 8000aae: d110 bne.n 8000ad2 <cmox_hash_common_compute+0x4e> + 8000ab0: 6823 ldr r3, [r4, #0] + 8000ab2: 4631 mov r1, r6 + 8000ab4: 68de ldr r6, [r3, #12] + 8000ab6: 463a mov r2, r7 + 8000ab8: 4620 mov r0, r4 + 8000aba: 47b0 blx r6 + 8000abc: 4680 mov r8, r0 + 8000abe: f5b8 3f00 cmp.w r8, #131072 ; 0x20000 + 8000ac2: d106 bne.n 8000ad2 <cmox_hash_common_compute+0x4e> + 8000ac4: 6823 ldr r3, [r4, #0] + 8000ac6: 9a07 ldr r2, [sp, #28] + 8000ac8: 4629 mov r1, r5 + 8000aca: 691d ldr r5, [r3, #16] + 8000acc: 4620 mov r0, r4 + 8000ace: 47a8 blx r5 + 8000ad0: 4680 mov r8, r0 + 8000ad2: 6821 ldr r1, [r4, #0] + 8000ad4: 680a ldr r2, [r1, #0] + 8000ad6: 4620 mov r0, r4 + 8000ad8: 4790 blx r2 + 8000ada: 4640 mov r0, r8 + 8000adc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +08000ae0 <cmox_hmac_cleanup>: + 8000ae0: b510 push {r4, lr} + 8000ae2: f000 fa33 bl 8000f4c <cmox_hmac_getByMAC> + 8000ae6: f44f 3440 mov.w r4, #196608 ; 0x30000 + 8000aea: 2800 cmp r0, #0 + 8000aec: bf0e itee eq + 8000aee: 4c03 ldreq r4, [pc, #12] ; (8000afc <cmox_hmac_cleanup+0x1c>) + 8000af0: f44f 71c0 movne.w r1, #384 ; 0x180 + 8000af4: f016 fe1a blne 801772c <__aeabi_memclr> + 8000af8: 4620 mov r0, r4 + 8000afa: bd10 pop {r4, pc} + 8000afc: 00030002 .word 0x00030002 + +08000b00 <cmox_hmac_init>: + 8000b00: b510 push {r4, lr} + 8000b02: 4604 mov r4, r0 + 8000b04: f000 fa22 bl 8000f4c <cmox_hmac_getByMAC> + 8000b08: b908 cbnz r0, 8000b0e <cmox_hmac_init+0xe> + 8000b0a: 4805 ldr r0, [pc, #20] ; (8000b20 <cmox_hmac_init+0x20>) + 8000b0c: bd10 pop {r4, pc} + 8000b0e: 2100 movs r1, #0 + 8000b10: 60a1 str r1, [r4, #8] + 8000b12: f8d0 217c ldr.w r2, [r0, #380] ; 0x17c + 8000b16: 6811 ldr r1, [r2, #0] + 8000b18: 4788 blx r1 + 8000b1a: f44f 3040 mov.w r0, #196608 ; 0x30000 + 8000b1e: bd10 pop {r4, pc} + 8000b20: 00030002 .word 0x00030002 + +08000b24 <cmox_hmac_setTagLen>: + 8000b24: b570 push {r4, r5, r6, lr} + 8000b26: 4604 mov r4, r0 + 8000b28: 460d mov r5, r1 + 8000b2a: f000 fa0f bl 8000f4c <cmox_hmac_getByMAC> + 8000b2e: 4e06 ldr r6, [pc, #24] ; (8000b48 <cmox_hmac_setTagLen+0x24>) + 8000b30: b140 cbz r0, 8000b44 <cmox_hmac_setTagLen+0x20> + 8000b32: f8d0 017c ldr.w r0, [r0, #380] ; 0x17c + 8000b36: 6841 ldr r1, [r0, #4] + 8000b38: 4788 blx r1 + 8000b3a: 42a8 cmp r0, r5 + 8000b3c: bf24 itt cs + 8000b3e: 6065 strcs r5, [r4, #4] + 8000b40: f44f 3640 movcs.w r6, #196608 ; 0x30000 + 8000b44: 4630 mov r0, r6 + 8000b46: bd70 pop {r4, r5, r6, pc} + 8000b48: 00030002 .word 0x00030002 + +08000b4c <cmox_hmac_setKey>: + 8000b4c: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 8000b50: 0015 movs r5, r2 + 8000b52: 460c mov r4, r1 + 8000b54: d000 beq.n 8000b58 <cmox_hmac_setKey+0xc> + 8000b56: b12c cbz r4, 8000b64 <cmox_hmac_setKey+0x18> + 8000b58: 4606 mov r6, r0 + 8000b5a: f000 f9f7 bl 8000f4c <cmox_hmac_getByMAC> + 8000b5e: ea5f 0800 movs.w r8, r0 + 8000b62: d101 bne.n 8000b68 <cmox_hmac_setKey+0x1c> + 8000b64: 4864 ldr r0, [pc, #400] ; (8000cf8 <cmox_hmac_setKey+0x1ac>) + 8000b66: e0c3 b.n 8000cf0 <cmox_hmac_setKey+0x1a4> + 8000b68: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000b6c: 6801 ldr r1, [r0, #0] + 8000b6e: 684a ldr r2, [r1, #4] + 8000b70: 4790 blx r2 + 8000b72: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000b76: d117 bne.n 8000ba8 <cmox_hmac_setKey+0x5c> + 8000b78: f8d8 117c ldr.w r1, [r8, #380] ; 0x17c + 8000b7c: 688a ldr r2, [r1, #8] + 8000b7e: 4640 mov r0, r8 + 8000b80: 4790 blx r2 + 8000b82: 4681 mov r9, r0 + 8000b84: f1b9 0f81 cmp.w r9, #129 ; 0x81 + 8000b88: f080 809e bcs.w 8000cc8 <cmox_hmac_setKey+0x17c> + 8000b8c: 45a9 cmp r9, r5 + 8000b8e: f108 0afc add.w sl, r8, #252 ; 0xfc + 8000b92: d217 bcs.n 8000bc4 <cmox_hmac_setKey+0x78> + 8000b94: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000b98: 6803 ldr r3, [r0, #0] + 8000b9a: f8d3 c00c ldr.w ip, [r3, #12] + 8000b9e: 462a mov r2, r5 + 8000ba0: 4621 mov r1, r4 + 8000ba2: 47e0 blx ip + 8000ba4: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ba8: f040 808e bne.w 8000cc8 <cmox_hmac_setKey+0x17c> + 8000bac: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000bb0: 6803 ldr r3, [r0, #0] + 8000bb2: f8d3 c010 ldr.w ip, [r3, #16] + 8000bb6: 466a mov r2, sp + 8000bb8: 4651 mov r1, sl + 8000bba: 47e0 blx ip + 8000bbc: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000bc0: d176 bne.n 8000cb0 <cmox_hmac_setKey+0x164> + 8000bc2: e00a b.n 8000bda <cmox_hmac_setKey+0x8e> + 8000bc4: 2000 movs r0, #0 + 8000bc6: e004 b.n 8000bd2 <cmox_hmac_setKey+0x86> + 8000bc8: 5c21 ldrb r1, [r4, r0] + 8000bca: f80a 1000 strb.w r1, [sl, r0] + 8000bce: 9800 ldr r0, [sp, #0] + 8000bd0: 1c40 adds r0, r0, #1 + 8000bd2: 9000 str r0, [sp, #0] + 8000bd4: 9800 ldr r0, [sp, #0] + 8000bd6: 42a8 cmp r0, r5 + 8000bd8: d3f6 bcc.n 8000bc8 <cmox_hmac_setKey+0x7c> + 8000bda: f04f 0c00 mov.w ip, #0 + 8000bde: 4947 ldr r1, [pc, #284] ; (8000cfc <cmox_hmac_setKey+0x1b0>) + 8000be0: 4a47 ldr r2, [pc, #284] ; (8000d00 <cmox_hmac_setKey+0x1b4>) + 8000be2: 4b48 ldr r3, [pc, #288] ; (8000d04 <cmox_hmac_setKey+0x1b8>) + 8000be4: ac01 add r4, sp, #4 + 8000be6: 9800 ldr r0, [sp, #0] + 8000be8: 4584 cmp ip, r0 + 8000bea: d258 bcs.n 8000c9e <cmox_hmac_setKey+0x152> + 8000bec: e9d3 7000 ldrd r7, r0, [r3] + 8000bf0: ad01 add r5, sp, #4 + 8000bf2: e9c5 7000 strd r7, r0, [r5] + 8000bf6: 7810 ldrb r0, [r2, #0] + 8000bf8: 2800 cmp r0, #0 + 8000bfa: bf1a itte ne + 8000bfc: 2004 movne r0, #4 + 8000bfe: 4686 movne lr, r0 + 8000c00: f04f 0e00 moveq.w lr, #0 + 8000c04: 5808 ldr r0, [r1, r0] + 8000c06: f854 500e ldr.w r5, [r4, lr] + 8000c0a: 4428 add r0, r5 + 8000c0c: 4d3e ldr r5, [pc, #248] ; (8000d08 <cmox_hmac_setKey+0x1bc>) + 8000c0e: 6005 str r5, [r0, #0] + 8000c10: 2701 movs r7, #1 + 8000c12: f8d0 e000 ldr.w lr, [r0] + 8000c16: 6087 str r7, [r0, #8] + 8000c18: 9d01 ldr r5, [sp, #4] + 8000c1a: 684f ldr r7, [r1, #4] + 8000c1c: f81a 000c ldrb.w r0, [sl, ip] + 8000c20: 407d eors r5, r7 + 8000c22: ea8e 0505 eor.w r5, lr, r5 + 8000c26: f085 0e04 eor.w lr, r5, #4 + 8000c2a: 6865 ldr r5, [r4, #4] + 8000c2c: 680f ldr r7, [r1, #0] + 8000c2e: 407d eors r5, r7 + 8000c30: f085 05fc eor.w r5, r5, #252 ; 0xfc + 8000c34: 4475 add r5, lr + 8000c36: f085 05a3 eor.w r5, r5, #163 ; 0xa3 + 8000c3a: 4068 eors r0, r5 + 8000c3c: f80a 000c strb.w r0, [sl, ip] + 8000c40: f10c 0c01 add.w ip, ip, #1 + 8000c44: e7cf b.n 8000be6 <cmox_hmac_setKey+0x9a> + 8000c46: e9d3 4500 ldrd r4, r5, [r3] + 8000c4a: a801 add r0, sp, #4 + 8000c4c: e9c0 4500 strd r4, r5, [r0] + 8000c50: 7810 ldrb r0, [r2, #0] + 8000c52: 4d2e ldr r5, [pc, #184] ; (8000d0c <cmox_hmac_setKey+0x1c0>) + 8000c54: 2800 cmp r0, #0 + 8000c56: bf14 ite ne + 8000c58: f04f 0e04 movne.w lr, #4 + 8000c5c: f04f 0e00 moveq.w lr, #0 + 8000c60: a801 add r0, sp, #4 + 8000c62: 4674 mov r4, lr + 8000c64: f851 e00e ldr.w lr, [r1, lr] + 8000c68: 5904 ldr r4, [r0, r4] + 8000c6a: 44a6 add lr, r4 + 8000c6c: 2701 movs r7, #1 + 8000c6e: f8ce 5000 str.w r5, [lr] + 8000c72: f8de 4000 ldr.w r4, [lr] + 8000c76: f8ce 7008 str.w r7, [lr, #8] + 8000c7a: 684d ldr r5, [r1, #4] + 8000c7c: 9f01 ldr r7, [sp, #4] + 8000c7e: 6840 ldr r0, [r0, #4] + 8000c80: 407d eors r5, r7 + 8000c82: 406c eors r4, r5 + 8000c84: 680d ldr r5, [r1, #0] + 8000c86: 4068 eors r0, r5 + 8000c88: f084 0404 eor.w r4, r4, #4 + 8000c8c: f080 00fc eor.w r0, r0, #252 ; 0xfc + 8000c90: 1904 adds r4, r0, r4 + 8000c92: f084 0457 eor.w r4, r4, #87 ; 0x57 + 8000c96: f80a 400c strb.w r4, [sl, ip] + 8000c9a: f10c 0c01 add.w ip, ip, #1 + 8000c9e: 45cc cmp ip, r9 + 8000ca0: d3d1 bcc.n 8000c46 <cmox_hmac_setKey+0xfa> + 8000ca2: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000ca6: 6801 ldr r1, [r0, #0] + 8000ca8: 684a ldr r2, [r1, #4] + 8000caa: 4790 blx r2 + 8000cac: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000cb0: d10a bne.n 8000cc8 <cmox_hmac_setKey+0x17c> + 8000cb2: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000cb6: 6803 ldr r3, [r0, #0] + 8000cb8: f8d3 800c ldr.w r8, [r3, #12] + 8000cbc: 464a mov r2, r9 + 8000cbe: 4651 mov r1, sl + 8000cc0: 47c0 blx r8 + 8000cc2: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000cc6: d001 beq.n 8000ccc <cmox_hmac_setKey+0x180> + 8000cc8: 4811 ldr r0, [pc, #68] ; (8000d10 <cmox_hmac_setKey+0x1c4>) + 8000cca: e011 b.n 8000cf0 <cmox_hmac_setKey+0x1a4> + 8000ccc: 2000 movs r0, #0 + 8000cce: e006 b.n 8000cde <cmox_hmac_setKey+0x192> + 8000cd0: f85a 1020 ldr.w r1, [sl, r0, lsl #2] + 8000cd4: f081 316a eor.w r1, r1, #1785358954 ; 0x6a6a6a6a + 8000cd8: f84a 1020 str.w r1, [sl, r0, lsl #2] + 8000cdc: 1c40 adds r0, r0, #1 + 8000cde: ebb0 0f99 cmp.w r0, r9, lsr #2 + 8000ce2: d3f5 bcc.n 8000cd0 <cmox_hmac_setKey+0x184> + 8000ce4: 68b0 ldr r0, [r6, #8] + 8000ce6: f040 0001 orr.w r0, r0, #1 + 8000cea: 60b0 str r0, [r6, #8] + 8000cec: f44f 3040 mov.w r0, #196608 ; 0x30000 + 8000cf0: b004 add sp, #16 + 8000cf2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000cf6: bf00 nop + 8000cf8: 00030002 .word 0x00030002 + 8000cfc: 080178d4 .word 0x080178d4 + 8000d00: 200008e8 .word 0x200008e8 + 8000d04: 08000f24 .word 0x08000f24 + 8000d08: d74ebead .word 0xd74ebead + 8000d0c: a175be0d .word 0xa175be0d + 8000d10: 00030001 .word 0x00030001 + +08000d14 <cmox_hmac_append>: + 8000d14: b538 push {r3, r4, r5, lr} + 8000d16: 460c mov r4, r1 + 8000d18: 7a01 ldrb r1, [r0, #8] + 8000d1a: 4615 mov r5, r2 + 8000d1c: 07ca lsls r2, r1, #31 + 8000d1e: d502 bpl.n 8000d26 <cmox_hmac_append+0x12> + 8000d20: f000 f914 bl 8000f4c <cmox_hmac_getByMAC> + 8000d24: b908 cbnz r0, 8000d2a <cmox_hmac_append+0x16> + 8000d26: 4808 ldr r0, [pc, #32] ; (8000d48 <cmox_hmac_append+0x34>) + 8000d28: bd32 pop {r1, r4, r5, pc} + 8000d2a: f8d0 00f8 ldr.w r0, [r0, #248] ; 0xf8 + 8000d2e: 6803 ldr r3, [r0, #0] + 8000d30: 4621 mov r1, r4 + 8000d32: 68dc ldr r4, [r3, #12] + 8000d34: 462a mov r2, r5 + 8000d36: 47a0 blx r4 + 8000d38: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000d3c: d001 beq.n 8000d42 <cmox_hmac_append+0x2e> + 8000d3e: 4803 ldr r0, [pc, #12] ; (8000d4c <cmox_hmac_append+0x38>) + 8000d40: bd32 pop {r1, r4, r5, pc} + 8000d42: f44f 3040 mov.w r0, #196608 ; 0x30000 + 8000d46: bd32 pop {r1, r4, r5, pc} + 8000d48: 00030002 .word 0x00030002 + 8000d4c: 00030001 .word 0x00030001 + +08000d50 <cmox_hmac_generateTag>: + 8000d50: e92d 41f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + 8000d54: b091 sub sp, #68 ; 0x44 + 8000d56: 4605 mov r5, r0 + 8000d58: 460e mov r6, r1 + 8000d5a: 4617 mov r7, r2 + 8000d5c: 2140 movs r1, #64 ; 0x40 + 8000d5e: a801 add r0, sp, #4 + 8000d60: f016 fce4 bl 801772c <__aeabi_memclr> + 8000d64: 7a29 ldrb r1, [r5, #8] + 8000d66: 07c8 lsls r0, r1, #31 + 8000d68: d504 bpl.n 8000d74 <cmox_hmac_generateTag+0x24> + 8000d6a: 4628 mov r0, r5 + 8000d6c: f000 f8ee bl 8000f4c <cmox_hmac_getByMAC> + 8000d70: 0004 movs r4, r0 + 8000d72: d102 bne.n 8000d7a <cmox_hmac_generateTag+0x2a> + 8000d74: f8df 80a4 ldr.w r8, [pc, #164] ; 8000e1c <cmox_hmac_generateTag+0xcc> + 8000d78: e04b b.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000d7a: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000d7e: f8df 80a0 ldr.w r8, [pc, #160] ; 8000e20 <cmox_hmac_generateTag+0xd0> + 8000d82: 6803 ldr r3, [r0, #0] + 8000d84: f8d3 c010 ldr.w ip, [r3, #16] + 8000d88: 466a mov r2, sp + 8000d8a: a901 add r1, sp, #4 + 8000d8c: 47e0 blx ip + 8000d8e: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000d92: d13e bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000d94: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000d98: 6801 ldr r1, [r0, #0] + 8000d9a: 684a ldr r2, [r1, #4] + 8000d9c: 4790 blx r2 + 8000d9e: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000da2: d136 bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000da4: f8d4 117c ldr.w r1, [r4, #380] ; 0x17c + 8000da8: 688a ldr r2, [r1, #8] + 8000daa: 4620 mov r0, r4 + 8000dac: 4790 blx r2 + 8000dae: f8d4 30f8 ldr.w r3, [r4, #248] ; 0xf8 + 8000db2: 4602 mov r2, r0 + 8000db4: 4618 mov r0, r3 + 8000db6: 681b ldr r3, [r3, #0] + 8000db8: f8d3 c00c ldr.w ip, [r3, #12] + 8000dbc: f104 01fc add.w r1, r4, #252 ; 0xfc + 8000dc0: 47e0 blx ip + 8000dc2: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000dc6: d124 bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000dc8: f8d4 017c ldr.w r0, [r4, #380] ; 0x17c + 8000dcc: 6841 ldr r1, [r0, #4] + 8000dce: 4788 blx r1 + 8000dd0: f8d4 30f8 ldr.w r3, [r4, #248] ; 0xf8 + 8000dd4: 4602 mov r2, r0 + 8000dd6: 4618 mov r0, r3 + 8000dd8: 681b ldr r3, [r3, #0] + 8000dda: f8d3 c00c ldr.w ip, [r3, #12] + 8000dde: a901 add r1, sp, #4 + 8000de0: 47e0 blx ip + 8000de2: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000de6: d114 bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000de8: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000dec: 6802 ldr r2, [r0, #0] + 8000dee: 6869 ldr r1, [r5, #4] + 8000df0: 6893 ldr r3, [r2, #8] + 8000df2: 4798 blx r3 + 8000df4: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000df8: d10b bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000dfa: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000dfe: 6803 ldr r3, [r0, #0] + 8000e00: 691c ldr r4, [r3, #16] + 8000e02: 463a mov r2, r7 + 8000e04: 4631 mov r1, r6 + 8000e06: 47a0 blx r4 + 8000e08: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e0c: bf08 it eq + 8000e0e: f44f 3840 moveq.w r8, #196608 ; 0x30000 + 8000e12: 4640 mov r0, r8 + 8000e14: b012 add sp, #72 ; 0x48 + 8000e16: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8000e1a: bf00 nop + 8000e1c: 00030002 .word 0x00030002 + 8000e20: 00030001 .word 0x00030001 + +08000e24 <cmox_hmac_verifyTag>: + 8000e24: e92d 41f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + 8000e28: b0a5 sub sp, #148 ; 0x94 + 8000e2a: 4607 mov r7, r0 + 8000e2c: 4688 mov r8, r1 + 8000e2e: 4616 mov r6, r2 + 8000e30: 2140 movs r1, #64 ; 0x40 + 8000e32: a815 add r0, sp, #84 ; 0x54 + 8000e34: f016 fc7a bl 801772c <__aeabi_memclr> + 8000e38: 2200 movs r2, #0 + 8000e3a: 9204 str r2, [sp, #16] + 8000e3c: 2140 movs r1, #64 ; 0x40 + 8000e3e: a805 add r0, sp, #20 + 8000e40: f016 fc74 bl 801772c <__aeabi_memclr> + 8000e44: 7a38 ldrb r0, [r7, #8] + 8000e46: 07c1 lsls r1, r0, #31 + 8000e48: d55e bpl.n 8000f08 <cmox_hmac_verifyTag+0xe4> + 8000e4a: 4638 mov r0, r7 + 8000e4c: f000 f87e bl 8000f4c <cmox_hmac_getByMAC> + 8000e50: 0005 movs r5, r0 + 8000e52: d059 beq.n 8000f08 <cmox_hmac_verifyTag+0xe4> + 8000e54: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000e58: 4c2d ldr r4, [pc, #180] ; (8000f10 <cmox_hmac_verifyTag+0xec>) + 8000e5a: 6803 ldr r3, [r0, #0] + 8000e5c: f8d3 c010 ldr.w ip, [r3, #16] + 8000e60: 466a mov r2, sp + 8000e62: a905 add r1, sp, #20 + 8000e64: 47e0 blx ip + 8000e66: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e6a: d13c bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000e6c: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000e70: 6801 ldr r1, [r0, #0] + 8000e72: 684a ldr r2, [r1, #4] + 8000e74: 4790 blx r2 + 8000e76: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e7a: d134 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000e7c: f8d5 117c ldr.w r1, [r5, #380] ; 0x17c + 8000e80: 688a ldr r2, [r1, #8] + 8000e82: 4628 mov r0, r5 + 8000e84: 4790 blx r2 + 8000e86: f8d5 30f8 ldr.w r3, [r5, #248] ; 0xf8 + 8000e8a: 4602 mov r2, r0 + 8000e8c: 4618 mov r0, r3 + 8000e8e: 681b ldr r3, [r3, #0] + 8000e90: f8d3 c00c ldr.w ip, [r3, #12] + 8000e94: f105 01fc add.w r1, r5, #252 ; 0xfc + 8000e98: 47e0 blx ip + 8000e9a: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e9e: d122 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000ea0: f8d5 017c ldr.w r0, [r5, #380] ; 0x17c + 8000ea4: 6841 ldr r1, [r0, #4] + 8000ea6: 4788 blx r1 + 8000ea8: f8d5 30f8 ldr.w r3, [r5, #248] ; 0xf8 + 8000eac: 4602 mov r2, r0 + 8000eae: 4618 mov r0, r3 + 8000eb0: 681b ldr r3, [r3, #0] + 8000eb2: f8d3 c00c ldr.w ip, [r3, #12] + 8000eb6: a905 add r1, sp, #20 + 8000eb8: 47e0 blx ip + 8000eba: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ebe: d112 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000ec0: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000ec4: 6802 ldr r2, [r0, #0] + 8000ec6: 6879 ldr r1, [r7, #4] + 8000ec8: 6893 ldr r3, [r2, #8] + 8000eca: 4798 blx r3 + 8000ecc: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ed0: d109 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000ed2: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000ed6: 6803 ldr r3, [r0, #0] + 8000ed8: 691d ldr r5, [r3, #16] + 8000eda: aa04 add r2, sp, #16 + 8000edc: a915 add r1, sp, #84 ; 0x54 + 8000ede: 47a8 blx r5 + 8000ee0: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ee4: d001 beq.n 8000eea <cmox_hmac_verifyTag+0xc6> + 8000ee6: 4620 mov r0, r4 + 8000ee8: e00f b.n 8000f0a <cmox_hmac_verifyTag+0xe6> + 8000eea: 4b0a ldr r3, [pc, #40] ; (8000f14 <cmox_hmac_verifyTag+0xf0>) + 8000eec: 490a ldr r1, [pc, #40] ; (8000f18 <cmox_hmac_verifyTag+0xf4>) + 8000eee: 4a0b ldr r2, [pc, #44] ; (8000f1c <cmox_hmac_verifyTag+0xf8>) + 8000ef0: 9603 str r6, [sp, #12] + 8000ef2: 9102 str r1, [sp, #8] + 8000ef4: 9201 str r2, [sp, #4] + 8000ef6: 4640 mov r0, r8 + 8000ef8: 681c ldr r4, [r3, #0] + 8000efa: 9b04 ldr r3, [sp, #16] + 8000efc: 9400 str r4, [sp, #0] + 8000efe: aa15 add r2, sp, #84 ; 0x54 + 8000f00: 6879 ldr r1, [r7, #4] + 8000f02: f000 f9e5 bl 80012d0 <cmox_utils_robustCmp> + 8000f06: e000 b.n 8000f0a <cmox_hmac_verifyTag+0xe6> + 8000f08: 4805 ldr r0, [pc, #20] ; (8000f20 <cmox_hmac_verifyTag+0xfc>) + 8000f0a: b026 add sp, #152 ; 0x98 + 8000f0c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8000f10: 00030001 .word 0x00030001 + 8000f14: 080178dc .word 0x080178dc + 8000f18: 00036e93 .word 0x00036e93 + 8000f1c: 0003c726 .word 0x0003c726 + 8000f20: 00030002 .word 0x00030002 + 8000f24: 0101b004 .word 0x0101b004 + 8000f28: 45011700 .word 0x45011700 + +08000f2c <hmac_table>: + 8000f2c: 08000ae1 08000b01 08000b25 080003b5 ........%....... + 8000f3c: 08000b4d 08000d15 08000d51 08000e25 M.......Q...%... + +08000f4c <cmox_hmac_getByMAC>: + 8000f4c: 6801 ldr r1, [r0, #0] + 8000f4e: 4a02 ldr r2, [pc, #8] ; (8000f58 <cmox_hmac_getByMAC+0xc>) + 8000f50: 4291 cmp r1, r2 + 8000f52: bf18 it ne + 8000f54: 2000 movne r0, #0 + 8000f56: 4770 bx lr + 8000f58: 08000f2c .word 0x08000f2c + +08000f5c <cmox_hmac_construct>: + 8000f5c: b510 push {r4, lr} + 8000f5e: 0004 movs r4, r0 + 8000f60: bf08 it eq + 8000f62: 2400 moveq r4, #0 + 8000f64: d004 beq.n 8000f70 <cmox_hmac_construct+0x14> + 8000f66: 4803 ldr r0, [pc, #12] ; (8000f74 <cmox_hmac_construct+0x18>) + 8000f68: 6020 str r0, [r4, #0] + 8000f6a: 4620 mov r0, r4 + 8000f6c: 6809 ldr r1, [r1, #0] + 8000f6e: 4788 blx r1 + 8000f70: 4620 mov r0, r4 + 8000f72: bd10 pop {r4, pc} + 8000f74: 08000f2c .word 0x08000f2c + +08000f78 <cmox_md_updateState_small>: + 8000f78: 2220 movs r2, #32 + 8000f7a: 305c adds r0, #92 ; 0x5c + 8000f7c: f016 bbd4 b.w 8017728 <__aeabi_memcpy> + +08000f80 <cmox_md_copyLastState_small>: + 8000f80: b5f0 push {r4, r5, r6, r7, lr} + 8000f82: 6884 ldr r4, [r0, #8] + 8000f84: 08a3 lsrs r3, r4, #2 + 8000f86: 2200 movs r2, #0 + 8000f88: f004 0403 and.w r4, r4, #3 + 8000f8c: e007 b.n 8000f9e <cmox_md_copyLastState_small+0x1e> + 8000f8e: f100 055c add.w r5, r0, #92 ; 0x5c + 8000f92: f855 6022 ldr.w r6, [r5, r2, lsl #2] + 8000f96: ba35 rev r5, r6 + 8000f98: f841 5022 str.w r5, [r1, r2, lsl #2] + 8000f9c: 1c52 adds r2, r2, #1 + 8000f9e: 429a cmp r2, r3 + 8000fa0: d3f5 bcc.n 8000f8e <cmox_md_copyLastState_small+0xe> + 8000fa2: 2200 movs r2, #0 + 8000fa4: e00b b.n 8000fbe <cmox_md_copyLastState_small+0x3e> + 8000fa6: f100 055c add.w r5, r0, #92 ; 0x5c + 8000faa: eb02 0783 add.w r7, r2, r3, lsl #2 + 8000fae: f855 6023 ldr.w r6, [r5, r3, lsl #2] + 8000fb2: 00d5 lsls r5, r2, #3 + 8000fb4: f1c5 0518 rsb r5, r5, #24 + 8000fb8: 40ee lsrs r6, r5 + 8000fba: 55ce strb r6, [r1, r7] + 8000fbc: 1c52 adds r2, r2, #1 + 8000fbe: 42a2 cmp r2, r4 + 8000fc0: d3f1 bcc.n 8000fa6 <cmox_md_copyLastState_small+0x26> + 8000fc2: bdf0 pop {r4, r5, r6, r7, pc} + +08000fc4 <cmox_md_padMsgLen_small>: + 8000fc4: b530 push {r4, r5, lr} + 8000fc6: 68c4 ldr r4, [r0, #12] + 8000fc8: 6903 ldr r3, [r0, #16] + 8000fca: 2200 movs r2, #0 + 8000fcc: 1ae3 subs r3, r4, r3 + 8000fce: 18d5 adds r5, r2, r3 + 8000fd0: 5c8c ldrb r4, [r1, r2] + 8000fd2: 4405 add r5, r0 + 8000fd4: 1c52 adds r2, r2, #1 + 8000fd6: 2a08 cmp r2, #8 + 8000fd8: 772c strb r4, [r5, #28] + 8000fda: d3f8 bcc.n 8000fce <cmox_md_padMsgLen_small+0xa> + 8000fdc: bd30 pop {r4, r5, pc} + +08000fde <cmox_md_construct>: + 8000fde: 6003 str r3, [r0, #0] + 8000fe0: 60c1 str r1, [r0, #12] + 8000fe2: 6102 str r2, [r0, #16] + 8000fe4: 4770 bx lr + +08000fe6 <cmox_md_init>: + 8000fe6: b538 push {r3, r4, r5, lr} + 8000fe8: 4604 mov r4, r0 + 8000fea: 4615 mov r5, r2 + 8000fec: 2200 movs r2, #0 + 8000fee: 6062 str r2, [r4, #4] + 8000ff0: 6823 ldr r3, [r4, #0] + 8000ff2: 685a ldr r2, [r3, #4] + 8000ff4: 4790 blx r2 + 8000ff6: 2000 movs r0, #0 + 8000ff8: 6160 str r0, [r4, #20] + 8000ffa: 61a0 str r0, [r4, #24] + 8000ffc: 60a5 str r5, [r4, #8] + 8000ffe: f44f 3000 mov.w r0, #131072 ; 0x20000 + 8001002: bd32 pop {r1, r4, r5, pc} + +08001004 <cmox_md_setTagSize>: + 8001004: 6081 str r1, [r0, #8] + 8001006: f44f 3000 mov.w r0, #131072 ; 0x20000 + 800100a: 4770 bx lr + +0800100c <cmox_md_append>: + 800100c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8001010: 4604 mov r4, r0 + 8001012: 7920 ldrb r0, [r4, #4] + 8001014: f8d4 800c ldr.w r8, [r4, #12] + 8001018: 0745 lsls r5, r0, #29 + 800101a: bf48 it mi + 800101c: 4824 ldrmi r0, [pc, #144] ; (80010b0 <cmox_md_append+0xa4>) + 800101e: d445 bmi.n 80010ac <cmox_md_append+0xa0> + 8001020: 6966 ldr r6, [r4, #20] + 8001022: 461d mov r5, r3 + 8001024: f1a8 0001 sub.w r0, r8, #1 + 8001028: ea00 03d6 and.w r3, r0, r6, lsr #3 + 800102c: eb06 06c5 add.w r6, r6, r5, lsl #3 + 8001030: ebb6 0fc5 cmp.w r6, r5, lsl #3 + 8001034: 6166 str r6, [r4, #20] + 8001036: d202 bcs.n 800103e <cmox_md_append+0x32> + 8001038: 69a6 ldr r6, [r4, #24] + 800103a: 1c76 adds r6, r6, #1 + 800103c: 61a6 str r6, [r4, #24] + 800103e: 4617 mov r7, r2 + 8001040: 69a6 ldr r6, [r4, #24] + 8001042: eb06 7655 add.w r6, r6, r5, lsr #29 + 8001046: 61a6 str r6, [r4, #24] + 8001048: 460e mov r6, r1 + 800104a: 18e9 adds r1, r5, r3 + 800104c: 4288 cmp r0, r1 + 800104e: d225 bcs.n 800109c <cmox_md_append+0x90> + 8001050: eba8 0903 sub.w r9, r8, r3 + 8001054: 464a mov r2, r9 + 8001056: 4631 mov r1, r6 + 8001058: 18f8 adds r0, r7, r3 + 800105a: f016 fb65 bl 8017728 <__aeabi_memcpy> + 800105e: 6822 ldr r2, [r4, #0] + 8001060: 6813 ldr r3, [r2, #0] + 8001062: 4639 mov r1, r7 + 8001064: e00f b.n 8001086 <cmox_md_append+0x7a> + 8001066: 4642 mov r2, r8 + 8001068: 4638 mov r0, r7 + 800106a: f016 fb5d bl 8017728 <__aeabi_memcpy> + 800106e: 6823 ldr r3, [r4, #0] + 8001070: 681a ldr r2, [r3, #0] + 8001072: 4639 mov r1, r7 + 8001074: 4620 mov r0, r4 + 8001076: 4790 blx r2 + 8001078: e007 b.n 800108a <cmox_md_append+0x7e> + 800107a: 1831 adds r1, r6, r0 + 800107c: f011 0003 ands.w r0, r1, #3 + 8001080: d1f1 bne.n 8001066 <cmox_md_append+0x5a> + 8001082: 6822 ldr r2, [r4, #0] + 8001084: 6813 ldr r3, [r2, #0] + 8001086: 4620 mov r0, r4 + 8001088: 4798 blx r3 + 800108a: 4648 mov r0, r9 + 800108c: eb00 0908 add.w r9, r0, r8 + 8001090: f1a9 0101 sub.w r1, r9, #1 + 8001094: 42a9 cmp r1, r5 + 8001096: d3f0 bcc.n 800107a <cmox_md_append+0x6e> + 8001098: 2300 movs r3, #0 + 800109a: e000 b.n 800109e <cmox_md_append+0x92> + 800109c: 2000 movs r0, #0 + 800109e: 1a2a subs r2, r5, r0 + 80010a0: 1831 adds r1, r6, r0 + 80010a2: 18f8 adds r0, r7, r3 + 80010a4: f016 fb40 bl 8017728 <__aeabi_memcpy> + 80010a8: f44f 3000 mov.w r0, #131072 ; 0x20000 + 80010ac: e8bd 83f2 ldmia.w sp!, {r1, r4, r5, r6, r7, r8, r9, pc} + 80010b0: 00020004 .word 0x00020004 + +080010b4 <cmox_md_generateTag>: + 80010b4: e92d 4ffc stmdb sp!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80010b8: 4602 mov r2, r0 + 80010ba: b085 sub sp, #20 + 80010bc: 68d0 ldr r0, [r2, #12] + 80010be: 6913 ldr r3, [r2, #16] + 80010c0: f8df c16c ldr.w ip, [pc, #364] ; 8001230 <cmox_md_generateTag+0x17c> + 80010c4: f8df 816c ldr.w r8, [pc, #364] ; 8001234 <cmox_md_generateTag+0x180> + 80010c8: eba0 0a03 sub.w sl, r0, r3 + 80010cc: 6850 ldr r0, [r2, #4] + 80010ce: f040 0004 orr.w r0, r0, #4 + 80010d2: 6050 str r0, [r2, #4] + 80010d4: 2700 movs r7, #0 + 80010d6: a803 add r0, sp, #12 + 80010d8: 9002 str r0, [sp, #8] + 80010da: f10d 0e0c add.w lr, sp, #12 + 80010de: e9d8 3400 ldrd r3, r4, [r8] + 80010e2: a803 add r0, sp, #12 + 80010e4: 4d54 ldr r5, [pc, #336] ; (8001238 <cmox_md_generateTag+0x184>) + 80010e6: e9c0 3400 strd r3, r4, [r0] + 80010ea: 7828 ldrb r0, [r5, #0] + 80010ec: 4d53 ldr r5, [pc, #332] ; (800123c <cmox_md_generateTag+0x188>) + 80010ee: 2800 cmp r0, #0 + 80010f0: bf0c ite eq + 80010f2: 2300 moveq r3, #0 + 80010f4: 2304 movne r3, #4 + 80010f6: 4699 mov r9, r3 + 80010f8: f85c 3003 ldr.w r3, [ip, r3] + 80010fc: f85e 4009 ldr.w r4, [lr, r9] + 8001100: 4423 add r3, r4 + 8001102: 2601 movs r6, #1 + 8001104: 601d str r5, [r3, #0] + 8001106: 681c ldr r4, [r3, #0] + 8001108: 609e str r6, [r3, #8] + 800110a: f8dc 3004 ldr.w r3, [ip, #4] + 800110e: 9d03 ldr r5, [sp, #12] + 8001110: f8dc 9000 ldr.w r9, [ip] + 8001114: f8de 6004 ldr.w r6, [lr, #4] + 8001118: 405d eors r5, r3 + 800111a: 4065 eors r5, r4 + 800111c: 4c48 ldr r4, [pc, #288] ; (8001240 <cmox_md_generateTag+0x18c>) + 800111e: 4065 eors r5, r4 + 8001120: ea89 0606 eor.w r6, r9, r6 + 8001124: 4c47 ldr r4, [pc, #284] ; (8001244 <cmox_md_generateTag+0x190>) + 8001126: 4066 eors r6, r4 + 8001128: 1975 adds r5, r6, r5 + 800112a: 4c47 ldr r4, [pc, #284] ; (8001248 <cmox_md_generateTag+0x194>) + 800112c: 4065 eors r5, r4 + 800112e: e9d8 6b00 ldrd r6, fp, [r8] + 8001132: ac03 add r4, sp, #12 + 8001134: 2800 cmp r0, #0 + 8001136: e9c4 6b00 strd r6, fp, [r4] + 800113a: bf0e itee eq + 800113c: 2400 moveq r4, #0 + 800113e: 2004 movne r0, #4 + 8001140: 2404 movne r4, #4 + 8001142: 9e02 ldr r6, [sp, #8] + 8001144: f85c 0000 ldr.w r0, [ip, r0] + 8001148: 5934 ldr r4, [r6, r4] + 800114a: 1820 adds r0, r4, r0 + 800114c: 4c3f ldr r4, [pc, #252] ; (800124c <cmox_md_generateTag+0x198>) + 800114e: 6004 str r4, [r0, #0] + 8001150: 2601 movs r6, #1 + 8001152: 6804 ldr r4, [r0, #0] + 8001154: 6086 str r6, [r0, #8] + 8001156: 9803 ldr r0, [sp, #12] + 8001158: 9e02 ldr r6, [sp, #8] + 800115a: 4043 eors r3, r0 + 800115c: 4063 eors r3, r4 + 800115e: 4c38 ldr r4, [pc, #224] ; (8001240 <cmox_md_generateTag+0x18c>) + 8001160: 6870 ldr r0, [r6, #4] + 8001162: 4063 eors r3, r4 + 8001164: ea89 0000 eor.w r0, r9, r0 + 8001168: 4c36 ldr r4, [pc, #216] ; (8001244 <cmox_md_generateTag+0x190>) + 800116a: 4060 eors r0, r4 + 800116c: 4403 add r3, r0 + 800116e: 4838 ldr r0, [pc, #224] ; (8001250 <cmox_md_generateTag+0x19c>) + 8001170: 4043 eors r3, r0 + 8001172: 0028 movs r0, r5 + 8001174: bf18 it ne + 8001176: 2001 movne r0, #1 + 8001178: 1e5b subs r3, r3, #1 + 800117a: 419b sbcs r3, r3 + 800117c: 2f04 cmp r7, #4 + 800117e: bf2c ite cs + 8001180: b2c0 uxtbcs r0, r0 + 8001182: 0fd8 lsrcc r0, r3, #31 + 8001184: f102 0314 add.w r3, r2, #20 + 8001188: f853 0020 ldr.w r0, [r3, r0, lsl #2] + 800118c: f007 0303 and.w r3, r7, #3 + 8001190: f1c3 0303 rsb r3, r3, #3 + 8001194: 00db lsls r3, r3, #3 + 8001196: 40d8 lsrs r0, r3 + 8001198: f80d 0007 strb.w r0, [sp, r7] + 800119c: 1c7f adds r7, r7, #1 + 800119e: 2f08 cmp r7, #8 + 80011a0: d39d bcc.n 80010de <cmox_md_generateTag+0x2a> + 80011a2: 4615 mov r5, r2 + 80011a4: 460c mov r4, r1 + 80011a6: 696a ldr r2, [r5, #20] + 80011a8: 69ab ldr r3, [r5, #24] + 80011aa: 68e8 ldr r0, [r5, #12] + 80011ac: 08d2 lsrs r2, r2, #3 + 80011ae: ea42 7243 orr.w r2, r2, r3, lsl #29 + 80011b2: 1e40 subs r0, r0, #1 + 80011b4: ea00 0702 and.w r7, r0, r2 + 80011b8: 2300 movs r3, #0 + 80011ba: 4002 ands r2, r0 + 80011bc: 429b cmp r3, r3 + 80011be: d80a bhi.n 80011d6 <cmox_md_generateTag+0x122> + 80011c0: 4552 cmp r2, sl + 80011c2: d208 bcs.n 80011d6 <cmox_md_generateTag+0x122> + 80011c4: 2080 movs r0, #128 ; 0x80 + 80011c6: 55e0 strb r0, [r4, r7] + 80011c8: 1c7f adds r7, r7, #1 + 80011ca: 4557 cmp r7, sl + 80011cc: d216 bcs.n 80011fc <cmox_md_generateTag+0x148> + 80011ce: ebaa 0107 sub.w r1, sl, r7 + 80011d2: 19e0 adds r0, r4, r7 + 80011d4: e010 b.n 80011f8 <cmox_md_generateTag+0x144> + 80011d6: 2080 movs r0, #128 ; 0x80 + 80011d8: 55e0 strb r0, [r4, r7] + 80011da: e000 b.n 80011de <cmox_md_generateTag+0x12a> + 80011dc: 55e3 strb r3, [r4, r7] + 80011de: 68e8 ldr r0, [r5, #12] + 80011e0: 1c7f adds r7, r7, #1 + 80011e2: 4287 cmp r7, r0 + 80011e4: d3fa bcc.n 80011dc <cmox_md_generateTag+0x128> + 80011e6: 682a ldr r2, [r5, #0] + 80011e8: 6813 ldr r3, [r2, #0] + 80011ea: 4628 mov r0, r5 + 80011ec: 4798 blx r3 + 80011ee: f1ba 0f00 cmp.w sl, #0 + 80011f2: d003 beq.n 80011fc <cmox_md_generateTag+0x148> + 80011f4: 4651 mov r1, sl + 80011f6: 4620 mov r0, r4 + 80011f8: f016 fa98 bl 801772c <__aeabi_memclr> + 80011fc: 682a ldr r2, [r5, #0] + 80011fe: 9e06 ldr r6, [sp, #24] + 8001200: 9f05 ldr r7, [sp, #20] + 8001202: 6893 ldr r3, [r2, #8] + 8001204: 4669 mov r1, sp + 8001206: 4628 mov r0, r5 + 8001208: 4798 blx r3 + 800120a: 682a ldr r2, [r5, #0] + 800120c: f8d2 9000 ldr.w r9, [r2] + 8001210: 4621 mov r1, r4 + 8001212: 4628 mov r0, r5 + 8001214: 47c8 blx r9 + 8001216: 682b ldr r3, [r5, #0] + 8001218: 68da ldr r2, [r3, #12] + 800121a: 4639 mov r1, r7 + 800121c: 4628 mov r0, r5 + 800121e: 4790 blx r2 + 8001220: b10e cbz r6, 8001226 <cmox_md_generateTag+0x172> + 8001222: 68a8 ldr r0, [r5, #8] + 8001224: 6030 str r0, [r6, #0] + 8001226: f44f 3000 mov.w r0, #131072 ; 0x20000 + 800122a: b007 add sp, #28 + 800122c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8001230: 080178d4 .word 0x080178d4 + 8001234: 08001254 .word 0x08001254 + 8001238: 200008e8 .word 0x200008e8 + 800123c: 9310c55f .word 0x9310c55f + 8001240: 12008504 .word 0x12008504 + 8001244: 7a0168fc .word 0x7a0168fc + 8001248: ff24f5c0 .word 0xff24f5c0 + 800124c: d433af24 .word 0xd433af24 + 8001250: 8b69af26 .word 0x8b69af26 + 8001254: 0101b004 .word 0x0101b004 + 8001258: 45011700 .word 0x45011700 + +0800125c <firstloop_bb_cmp>: + 800125c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800125e: 2401 movs r4, #1 + 8001260: 9400 str r4, [sp, #0] + 8001262: 2300 movs r3, #0 + 8001264: 2400 movs r4, #0 + 8001266: e00d b.n 8001284 <firstloop_bb_cmp+0x28> + 8001268: 9d00 ldr r5, [sp, #0] + 800126a: 5d06 ldrb r6, [r0, r4] + 800126c: 5d0f ldrb r7, [r1, r4] + 800126e: 407e eors r6, r7 + 8001270: 43f6 mvns r6, r6 + 8001272: 1c76 adds r6, r6, #1 + 8001274: 0ff6 lsrs r6, r6, #31 + 8001276: f086 0601 eor.w r6, r6, #1 + 800127a: 4035 ands r5, r6 + 800127c: 9500 str r5, [sp, #0] + 800127e: 1c64 adds r4, r4, #1 + 8001280: 9d00 ldr r5, [sp, #0] + 8001282: 18eb adds r3, r5, r3 + 8001284: 4294 cmp r4, r2 + 8001286: d3ef bcc.n 8001268 <firstloop_bb_cmp+0xc> + 8001288: 4618 mov r0, r3 + 800128a: bdf2 pop {r1, r4, r5, r6, r7, pc} + +0800128c <secondloop_bb_cmp>: + 800128c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800128e: 2300 movs r3, #0 + 8001290: 2401 movs r4, #1 + 8001292: 9400 str r4, [sp, #0] + 8001294: 2a00 cmp r2, #0 + 8001296: e011 b.n 80012bc <secondloop_bb_cmp+0x30> + 8001298: 9c00 ldr r4, [sp, #0] + 800129a: 1885 adds r5, r0, r2 + 800129c: 188f adds r7, r1, r2 + 800129e: f815 6c01 ldrb.w r6, [r5, #-1] + 80012a2: f817 5c01 ldrb.w r5, [r7, #-1] + 80012a6: 406e eors r6, r5 + 80012a8: 43f6 mvns r6, r6 + 80012aa: 1c76 adds r6, r6, #1 + 80012ac: 0ff6 lsrs r6, r6, #31 + 80012ae: f086 0601 eor.w r6, r6, #1 + 80012b2: 4034 ands r4, r6 + 80012b4: 9400 str r4, [sp, #0] + 80012b6: 9c00 ldr r4, [sp, #0] + 80012b8: 18e3 adds r3, r4, r3 + 80012ba: 1e52 subs r2, r2, #1 + 80012bc: d1ec bne.n 8001298 <secondloop_bb_cmp+0xc> + 80012be: 4618 mov r0, r3 + 80012c0: bdf2 pop {r1, r4, r5, r6, r7, pc} + ... + +080012c4 <bufType_bb>: + 80012c4: 125d 0800 128d 0800 0001 0000 ]........... + +080012d0 <cmox_utils_robustCmp>: + 80012d0: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80012d4: 461d mov r5, r3 + 80012d6: f8dd 9028 ldr.w r9, [sp, #40] ; 0x28 + 80012da: 9f0b ldr r7, [sp, #44] ; 0x2c + 80012dc: 9c0d ldr r4, [sp, #52] ; 0x34 + 80012de: f04f 33ff mov.w r3, #4294967295 + 80012e2: 9300 str r3, [sp, #0] + 80012e4: 460e mov r6, r1 + 80012e6: 4692 mov sl, r2 + 80012e8: f8d9 b000 ldr.w fp, [r9] + 80012ec: 4680 mov r8, r0 + 80012ee: 4632 mov r2, r6 + 80012f0: 4651 mov r1, sl + 80012f2: 47d8 blx fp + 80012f4: 4683 mov fp, r0 + 80012f6: b364 cbz r4, 8001352 <cmox_utils_robustCmp+0x82> + 80012f8: f8d9 3004 ldr.w r3, [r9, #4] + 80012fc: 4632 mov r2, r6 + 80012fe: 4651 mov r1, sl + 8001300: 4640 mov r0, r8 + 8001302: 4798 blx r3 + 8001304: ea6f 020b mvn.w r2, fp + 8001308: 1c52 adds r2, r2, #1 + 800130a: ea42 020b orr.w r2, r2, fp + 800130e: 9900 ldr r1, [sp, #0] + 8001310: ea6f 73d2 mvn.w r3, r2, lsr #31 + 8001314: 1c5b adds r3, r3, #1 + 8001316: 4019 ands r1, r3 + 8001318: 43c2 mvns r2, r0 + 800131a: 9100 str r1, [sp, #0] + 800131c: 1c52 adds r2, r2, #1 + 800131e: 4302 orrs r2, r0 + 8001320: 9900 ldr r1, [sp, #0] + 8001322: ea6f 73d2 mvn.w r3, r2, lsr #31 + 8001326: 1c5b adds r3, r3, #1 + 8001328: 4019 ands r1, r3 + 800132a: 9100 str r1, [sp, #0] + 800132c: f086 3155 eor.w r1, r6, #1431655765 ; 0x55555555 + 8001330: 4048 eors r0, r1 + 8001332: ea87 0100 eor.w r1, r7, r0 + 8001336: f081 3155 eor.w r1, r1, #1431655765 ; 0x55555555 + 800133a: 6021 str r1, [r4, #0] + 800133c: f080 3155 eor.w r1, r0, #1431655765 ; 0x55555555 + 8001340: 43c9 mvns r1, r1 + 8001342: 1c49 adds r1, r1, #1 + 8001344: 4308 orrs r0, r1 + 8001346: 9a00 ldr r2, [sp, #0] + 8001348: ea6f 70d0 mvn.w r0, r0, lsr #31 + 800134c: 1c40 adds r0, r0, #1 + 800134e: 4382 bics r2, r0 + 8001350: 9200 str r2, [sp, #0] + 8001352: f8d9 0008 ldr.w r0, [r9, #8] + 8001356: 2801 cmp r0, #1 + 8001358: d109 bne.n 800136e <cmox_utils_robustCmp+0x9e> + 800135a: 4075 eors r5, r6 + 800135c: 43e9 mvns r1, r5 + 800135e: 1c49 adds r1, r1, #1 + 8001360: 430d orrs r5, r1 + 8001362: 9800 ldr r0, [sp, #0] + 8001364: ea6f 72d5 mvn.w r2, r5, lsr #31 + 8001368: 1c52 adds r2, r2, #1 + 800136a: 4390 bics r0, r2 + 800136c: e00a b.n 8001384 <cmox_utils_robustCmp+0xb4> + 800136e: 1cf1 adds r1, r6, #3 + 8001370: ea85 0291 eor.w r2, r5, r1, lsr #2 + 8001374: 43d2 mvns r2, r2 + 8001376: 1c52 adds r2, r2, #1 + 8001378: 4315 orrs r5, r2 + 800137a: 9800 ldr r0, [sp, #0] + 800137c: ea6f 73d5 mvn.w r3, r5, lsr #31 + 8001380: 1c5b adds r3, r3, #1 + 8001382: 4398 bics r0, r3 + 8001384: f086 36aa eor.w r6, r6, #2863311530 ; 0xaaaaaaaa + 8001388: 9000 str r0, [sp, #0] + 800138a: ea86 060b eor.w r6, r6, fp + 800138e: f086 33aa eor.w r3, r6, #2863311530 ; 0xaaaaaaaa + 8001392: 43f2 mvns r2, r6 + 8001394: 43db mvns r3, r3 + 8001396: 980c ldr r0, [sp, #48] ; 0x30 + 8001398: f3c2 72c0 ubfx r2, r2, #31, #1 + 800139c: 1c5b adds r3, r3, #1 + 800139e: ea42 72d3 orr.w r2, r2, r3, lsr #31 + 80013a2: 9900 ldr r1, [sp, #0] + 80013a4: 43d2 mvns r2, r2 + 80013a6: 1c52 adds r2, r2, #1 + 80013a8: 4391 bics r1, r2 + 80013aa: 9100 str r1, [sp, #0] + 80013ac: 4077 eors r7, r6 + 80013ae: 9900 ldr r1, [sp, #0] + 80013b0: 4388 bics r0, r1 + 80013b2: 9900 ldr r1, [sp, #0] + 80013b4: f087 37aa eor.w r7, r7, #2863311530 ; 0xaaaaaaaa + 80013b8: 400f ands r7, r1 + 80013ba: 4338 orrs r0, r7 + 80013bc: e8bd 8ff2 ldmia.w sp!, {r1, r4, r5, r6, r7, r8, r9, sl, fp, pc} + +080013c0 <strlen>: + 80013c0: 4603 mov r3, r0 + 80013c2: f813 2b01 ldrb.w r2, [r3], #1 + 80013c6: 2a00 cmp r2, #0 + 80013c8: d1fb bne.n 80013c2 <strlen+0x2> + 80013ca: 1a18 subs r0, r3, r0 + 80013cc: 3801 subs r0, #1 + 80013ce: 4770 bx lr + +080013d0 <__aeabi_drsub>: + 80013d0: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000 + 80013d4: e002 b.n 80013dc <__adddf3> + 80013d6: bf00 nop + +080013d8 <__aeabi_dsub>: + 80013d8: f083 4300 eor.w r3, r3, #2147483648 ; 0x80000000 + +080013dc <__adddf3>: + 80013dc: b530 push {r4, r5, lr} + 80013de: ea4f 0441 mov.w r4, r1, lsl #1 + 80013e2: ea4f 0543 mov.w r5, r3, lsl #1 + 80013e6: ea94 0f05 teq r4, r5 + 80013ea: bf08 it eq + 80013ec: ea90 0f02 teqeq r0, r2 + 80013f0: bf1f itttt ne + 80013f2: ea54 0c00 orrsne.w ip, r4, r0 + 80013f6: ea55 0c02 orrsne.w ip, r5, r2 + 80013fa: ea7f 5c64 mvnsne.w ip, r4, asr #21 + 80013fe: ea7f 5c65 mvnsne.w ip, r5, asr #21 + 8001402: f000 80e2 beq.w 80015ca <__adddf3+0x1ee> + 8001406: ea4f 5454 mov.w r4, r4, lsr #21 + 800140a: ebd4 5555 rsbs r5, r4, r5, lsr #21 + 800140e: bfb8 it lt + 8001410: 426d neglt r5, r5 + 8001412: dd0c ble.n 800142e <__adddf3+0x52> + 8001414: 442c add r4, r5 + 8001416: ea80 0202 eor.w r2, r0, r2 + 800141a: ea81 0303 eor.w r3, r1, r3 + 800141e: ea82 0000 eor.w r0, r2, r0 + 8001422: ea83 0101 eor.w r1, r3, r1 + 8001426: ea80 0202 eor.w r2, r0, r2 + 800142a: ea81 0303 eor.w r3, r1, r3 + 800142e: 2d36 cmp r5, #54 ; 0x36 + 8001430: bf88 it hi + 8001432: bd30 pophi {r4, r5, pc} + 8001434: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 + 8001438: ea4f 3101 mov.w r1, r1, lsl #12 + 800143c: f44f 1c80 mov.w ip, #1048576 ; 0x100000 + 8001440: ea4c 3111 orr.w r1, ip, r1, lsr #12 + 8001444: d002 beq.n 800144c <__adddf3+0x70> + 8001446: 4240 negs r0, r0 + 8001448: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 800144c: f013 4f00 tst.w r3, #2147483648 ; 0x80000000 + 8001450: ea4f 3303 mov.w r3, r3, lsl #12 + 8001454: ea4c 3313 orr.w r3, ip, r3, lsr #12 + 8001458: d002 beq.n 8001460 <__adddf3+0x84> + 800145a: 4252 negs r2, r2 + 800145c: eb63 0343 sbc.w r3, r3, r3, lsl #1 + 8001460: ea94 0f05 teq r4, r5 + 8001464: f000 80a7 beq.w 80015b6 <__adddf3+0x1da> + 8001468: f1a4 0401 sub.w r4, r4, #1 + 800146c: f1d5 0e20 rsbs lr, r5, #32 + 8001470: db0d blt.n 800148e <__adddf3+0xb2> + 8001472: fa02 fc0e lsl.w ip, r2, lr + 8001476: fa22 f205 lsr.w r2, r2, r5 + 800147a: 1880 adds r0, r0, r2 + 800147c: f141 0100 adc.w r1, r1, #0 + 8001480: fa03 f20e lsl.w r2, r3, lr + 8001484: 1880 adds r0, r0, r2 + 8001486: fa43 f305 asr.w r3, r3, r5 + 800148a: 4159 adcs r1, r3 + 800148c: e00e b.n 80014ac <__adddf3+0xd0> + 800148e: f1a5 0520 sub.w r5, r5, #32 + 8001492: f10e 0e20 add.w lr, lr, #32 + 8001496: 2a01 cmp r2, #1 + 8001498: fa03 fc0e lsl.w ip, r3, lr + 800149c: bf28 it cs + 800149e: f04c 0c02 orrcs.w ip, ip, #2 + 80014a2: fa43 f305 asr.w r3, r3, r5 + 80014a6: 18c0 adds r0, r0, r3 + 80014a8: eb51 71e3 adcs.w r1, r1, r3, asr #31 + 80014ac: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 + 80014b0: d507 bpl.n 80014c2 <__adddf3+0xe6> + 80014b2: f04f 0e00 mov.w lr, #0 + 80014b6: f1dc 0c00 rsbs ip, ip, #0 + 80014ba: eb7e 0000 sbcs.w r0, lr, r0 + 80014be: eb6e 0101 sbc.w r1, lr, r1 + 80014c2: f5b1 1f80 cmp.w r1, #1048576 ; 0x100000 + 80014c6: d31b bcc.n 8001500 <__adddf3+0x124> + 80014c8: f5b1 1f00 cmp.w r1, #2097152 ; 0x200000 + 80014cc: d30c bcc.n 80014e8 <__adddf3+0x10c> + 80014ce: 0849 lsrs r1, r1, #1 + 80014d0: ea5f 0030 movs.w r0, r0, rrx + 80014d4: ea4f 0c3c mov.w ip, ip, rrx + 80014d8: f104 0401 add.w r4, r4, #1 + 80014dc: ea4f 5244 mov.w r2, r4, lsl #21 + 80014e0: f512 0f80 cmn.w r2, #4194304 ; 0x400000 + 80014e4: f080 809a bcs.w 800161c <__adddf3+0x240> + 80014e8: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000 + 80014ec: bf08 it eq + 80014ee: ea5f 0c50 movseq.w ip, r0, lsr #1 + 80014f2: f150 0000 adcs.w r0, r0, #0 + 80014f6: eb41 5104 adc.w r1, r1, r4, lsl #20 + 80014fa: ea41 0105 orr.w r1, r1, r5 + 80014fe: bd30 pop {r4, r5, pc} + 8001500: ea5f 0c4c movs.w ip, ip, lsl #1 + 8001504: 4140 adcs r0, r0 + 8001506: eb41 0101 adc.w r1, r1, r1 + 800150a: 3c01 subs r4, #1 + 800150c: bf28 it cs + 800150e: f5b1 1f80 cmpcs.w r1, #1048576 ; 0x100000 + 8001512: d2e9 bcs.n 80014e8 <__adddf3+0x10c> + 8001514: f091 0f00 teq r1, #0 + 8001518: bf04 itt eq + 800151a: 4601 moveq r1, r0 + 800151c: 2000 moveq r0, #0 + 800151e: fab1 f381 clz r3, r1 + 8001522: bf08 it eq + 8001524: 3320 addeq r3, #32 + 8001526: f1a3 030b sub.w r3, r3, #11 + 800152a: f1b3 0220 subs.w r2, r3, #32 + 800152e: da0c bge.n 800154a <__adddf3+0x16e> + 8001530: 320c adds r2, #12 + 8001532: dd08 ble.n 8001546 <__adddf3+0x16a> + 8001534: f102 0c14 add.w ip, r2, #20 + 8001538: f1c2 020c rsb r2, r2, #12 + 800153c: fa01 f00c lsl.w r0, r1, ip + 8001540: fa21 f102 lsr.w r1, r1, r2 + 8001544: e00c b.n 8001560 <__adddf3+0x184> + 8001546: f102 0214 add.w r2, r2, #20 + 800154a: bfd8 it le + 800154c: f1c2 0c20 rsble ip, r2, #32 + 8001550: fa01 f102 lsl.w r1, r1, r2 + 8001554: fa20 fc0c lsr.w ip, r0, ip + 8001558: bfdc itt le + 800155a: ea41 010c orrle.w r1, r1, ip + 800155e: 4090 lslle r0, r2 + 8001560: 1ae4 subs r4, r4, r3 + 8001562: bfa2 ittt ge + 8001564: eb01 5104 addge.w r1, r1, r4, lsl #20 + 8001568: 4329 orrge r1, r5 + 800156a: bd30 popge {r4, r5, pc} + 800156c: ea6f 0404 mvn.w r4, r4 + 8001570: 3c1f subs r4, #31 + 8001572: da1c bge.n 80015ae <__adddf3+0x1d2> + 8001574: 340c adds r4, #12 + 8001576: dc0e bgt.n 8001596 <__adddf3+0x1ba> + 8001578: f104 0414 add.w r4, r4, #20 + 800157c: f1c4 0220 rsb r2, r4, #32 + 8001580: fa20 f004 lsr.w r0, r0, r4 + 8001584: fa01 f302 lsl.w r3, r1, r2 + 8001588: ea40 0003 orr.w r0, r0, r3 + 800158c: fa21 f304 lsr.w r3, r1, r4 + 8001590: ea45 0103 orr.w r1, r5, r3 + 8001594: bd30 pop {r4, r5, pc} + 8001596: f1c4 040c rsb r4, r4, #12 + 800159a: f1c4 0220 rsb r2, r4, #32 + 800159e: fa20 f002 lsr.w r0, r0, r2 + 80015a2: fa01 f304 lsl.w r3, r1, r4 + 80015a6: ea40 0003 orr.w r0, r0, r3 + 80015aa: 4629 mov r1, r5 + 80015ac: bd30 pop {r4, r5, pc} + 80015ae: fa21 f004 lsr.w r0, r1, r4 + 80015b2: 4629 mov r1, r5 + 80015b4: bd30 pop {r4, r5, pc} + 80015b6: f094 0f00 teq r4, #0 + 80015ba: f483 1380 eor.w r3, r3, #1048576 ; 0x100000 + 80015be: bf06 itte eq + 80015c0: f481 1180 eoreq.w r1, r1, #1048576 ; 0x100000 + 80015c4: 3401 addeq r4, #1 + 80015c6: 3d01 subne r5, #1 + 80015c8: e74e b.n 8001468 <__adddf3+0x8c> + 80015ca: ea7f 5c64 mvns.w ip, r4, asr #21 + 80015ce: bf18 it ne + 80015d0: ea7f 5c65 mvnsne.w ip, r5, asr #21 + 80015d4: d029 beq.n 800162a <__adddf3+0x24e> + 80015d6: ea94 0f05 teq r4, r5 + 80015da: bf08 it eq + 80015dc: ea90 0f02 teqeq r0, r2 + 80015e0: d005 beq.n 80015ee <__adddf3+0x212> + 80015e2: ea54 0c00 orrs.w ip, r4, r0 + 80015e6: bf04 itt eq + 80015e8: 4619 moveq r1, r3 + 80015ea: 4610 moveq r0, r2 + 80015ec: bd30 pop {r4, r5, pc} + 80015ee: ea91 0f03 teq r1, r3 + 80015f2: bf1e ittt ne + 80015f4: 2100 movne r1, #0 + 80015f6: 2000 movne r0, #0 + 80015f8: bd30 popne {r4, r5, pc} + 80015fa: ea5f 5c54 movs.w ip, r4, lsr #21 + 80015fe: d105 bne.n 800160c <__adddf3+0x230> + 8001600: 0040 lsls r0, r0, #1 + 8001602: 4149 adcs r1, r1 + 8001604: bf28 it cs + 8001606: f041 4100 orrcs.w r1, r1, #2147483648 ; 0x80000000 + 800160a: bd30 pop {r4, r5, pc} + 800160c: f514 0480 adds.w r4, r4, #4194304 ; 0x400000 + 8001610: bf3c itt cc + 8001612: f501 1180 addcc.w r1, r1, #1048576 ; 0x100000 + 8001616: bd30 popcc {r4, r5, pc} + 8001618: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 + 800161c: f045 41fe orr.w r1, r5, #2130706432 ; 0x7f000000 + 8001620: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000 + 8001624: f04f 0000 mov.w r0, #0 + 8001628: bd30 pop {r4, r5, pc} + 800162a: ea7f 5c64 mvns.w ip, r4, asr #21 + 800162e: bf1a itte ne + 8001630: 4619 movne r1, r3 + 8001632: 4610 movne r0, r2 + 8001634: ea7f 5c65 mvnseq.w ip, r5, asr #21 + 8001638: bf1c itt ne + 800163a: 460b movne r3, r1 + 800163c: 4602 movne r2, r0 + 800163e: ea50 3401 orrs.w r4, r0, r1, lsl #12 + 8001642: bf06 itte eq + 8001644: ea52 3503 orrseq.w r5, r2, r3, lsl #12 + 8001648: ea91 0f03 teqeq r1, r3 + 800164c: f441 2100 orrne.w r1, r1, #524288 ; 0x80000 + 8001650: bd30 pop {r4, r5, pc} + 8001652: bf00 nop + +08001654 <__aeabi_ui2d>: + 8001654: f090 0f00 teq r0, #0 + 8001658: bf04 itt eq + 800165a: 2100 moveq r1, #0 + 800165c: 4770 bxeq lr + 800165e: b530 push {r4, r5, lr} + 8001660: f44f 6480 mov.w r4, #1024 ; 0x400 + 8001664: f104 0432 add.w r4, r4, #50 ; 0x32 + 8001668: f04f 0500 mov.w r5, #0 + 800166c: f04f 0100 mov.w r1, #0 + 8001670: e750 b.n 8001514 <__adddf3+0x138> + 8001672: bf00 nop + +08001674 <__aeabi_i2d>: + 8001674: f090 0f00 teq r0, #0 + 8001678: bf04 itt eq + 800167a: 2100 moveq r1, #0 + 800167c: 4770 bxeq lr + 800167e: b530 push {r4, r5, lr} + 8001680: f44f 6480 mov.w r4, #1024 ; 0x400 + 8001684: f104 0432 add.w r4, r4, #50 ; 0x32 + 8001688: f010 4500 ands.w r5, r0, #2147483648 ; 0x80000000 + 800168c: bf48 it mi + 800168e: 4240 negmi r0, r0 + 8001690: f04f 0100 mov.w r1, #0 + 8001694: e73e b.n 8001514 <__adddf3+0x138> + 8001696: bf00 nop + +08001698 <__aeabi_f2d>: + 8001698: 0042 lsls r2, r0, #1 + 800169a: ea4f 01e2 mov.w r1, r2, asr #3 + 800169e: ea4f 0131 mov.w r1, r1, rrx + 80016a2: ea4f 7002 mov.w r0, r2, lsl #28 + 80016a6: bf1f itttt ne + 80016a8: f012 437f andsne.w r3, r2, #4278190080 ; 0xff000000 + 80016ac: f093 4f7f teqne r3, #4278190080 ; 0xff000000 + 80016b0: f081 5160 eorne.w r1, r1, #939524096 ; 0x38000000 + 80016b4: 4770 bxne lr + 80016b6: f032 427f bics.w r2, r2, #4278190080 ; 0xff000000 + 80016ba: bf08 it eq + 80016bc: 4770 bxeq lr + 80016be: f093 4f7f teq r3, #4278190080 ; 0xff000000 + 80016c2: bf04 itt eq + 80016c4: f441 2100 orreq.w r1, r1, #524288 ; 0x80000 + 80016c8: 4770 bxeq lr + 80016ca: b530 push {r4, r5, lr} + 80016cc: f44f 7460 mov.w r4, #896 ; 0x380 + 80016d0: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 + 80016d4: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 80016d8: e71c b.n 8001514 <__adddf3+0x138> + 80016da: bf00 nop + +080016dc <__aeabi_ul2d>: + 80016dc: ea50 0201 orrs.w r2, r0, r1 + 80016e0: bf08 it eq + 80016e2: 4770 bxeq lr + 80016e4: b530 push {r4, r5, lr} + 80016e6: f04f 0500 mov.w r5, #0 + 80016ea: e00a b.n 8001702 <__aeabi_l2d+0x16> + +080016ec <__aeabi_l2d>: + 80016ec: ea50 0201 orrs.w r2, r0, r1 + 80016f0: bf08 it eq + 80016f2: 4770 bxeq lr + 80016f4: b530 push {r4, r5, lr} + 80016f6: f011 4500 ands.w r5, r1, #2147483648 ; 0x80000000 + 80016fa: d502 bpl.n 8001702 <__aeabi_l2d+0x16> + 80016fc: 4240 negs r0, r0 + 80016fe: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 8001702: f44f 6480 mov.w r4, #1024 ; 0x400 + 8001706: f104 0432 add.w r4, r4, #50 ; 0x32 + 800170a: ea5f 5c91 movs.w ip, r1, lsr #22 + 800170e: f43f aed8 beq.w 80014c2 <__adddf3+0xe6> + 8001712: f04f 0203 mov.w r2, #3 + 8001716: ea5f 0cdc movs.w ip, ip, lsr #3 + 800171a: bf18 it ne + 800171c: 3203 addne r2, #3 + 800171e: ea5f 0cdc movs.w ip, ip, lsr #3 + 8001722: bf18 it ne + 8001724: 3203 addne r2, #3 + 8001726: eb02 02dc add.w r2, r2, ip, lsr #3 + 800172a: f1c2 0320 rsb r3, r2, #32 + 800172e: fa00 fc03 lsl.w ip, r0, r3 + 8001732: fa20 f002 lsr.w r0, r0, r2 + 8001736: fa01 fe03 lsl.w lr, r1, r3 + 800173a: ea40 000e orr.w r0, r0, lr + 800173e: fa21 f102 lsr.w r1, r1, r2 + 8001742: 4414 add r4, r2 + 8001744: e6bd b.n 80014c2 <__adddf3+0xe6> + 8001746: bf00 nop + +08001748 <__gedf2>: + 8001748: f04f 3cff mov.w ip, #4294967295 + 800174c: e006 b.n 800175c <__cmpdf2+0x4> + 800174e: bf00 nop + +08001750 <__ledf2>: + 8001750: f04f 0c01 mov.w ip, #1 + 8001754: e002 b.n 800175c <__cmpdf2+0x4> + 8001756: bf00 nop + +08001758 <__cmpdf2>: + 8001758: f04f 0c01 mov.w ip, #1 + 800175c: f84d cd04 str.w ip, [sp, #-4]! + 8001760: ea4f 0c41 mov.w ip, r1, lsl #1 + 8001764: ea7f 5c6c mvns.w ip, ip, asr #21 + 8001768: ea4f 0c43 mov.w ip, r3, lsl #1 + 800176c: bf18 it ne + 800176e: ea7f 5c6c mvnsne.w ip, ip, asr #21 + 8001772: d01b beq.n 80017ac <__cmpdf2+0x54> + 8001774: b001 add sp, #4 + 8001776: ea50 0c41 orrs.w ip, r0, r1, lsl #1 + 800177a: bf0c ite eq + 800177c: ea52 0c43 orrseq.w ip, r2, r3, lsl #1 + 8001780: ea91 0f03 teqne r1, r3 + 8001784: bf02 ittt eq + 8001786: ea90 0f02 teqeq r0, r2 + 800178a: 2000 moveq r0, #0 + 800178c: 4770 bxeq lr + 800178e: f110 0f00 cmn.w r0, #0 + 8001792: ea91 0f03 teq r1, r3 + 8001796: bf58 it pl + 8001798: 4299 cmppl r1, r3 + 800179a: bf08 it eq + 800179c: 4290 cmpeq r0, r2 + 800179e: bf2c ite cs + 80017a0: 17d8 asrcs r0, r3, #31 + 80017a2: ea6f 70e3 mvncc.w r0, r3, asr #31 + 80017a6: f040 0001 orr.w r0, r0, #1 + 80017aa: 4770 bx lr + 80017ac: ea4f 0c41 mov.w ip, r1, lsl #1 + 80017b0: ea7f 5c6c mvns.w ip, ip, asr #21 + 80017b4: d102 bne.n 80017bc <__cmpdf2+0x64> + 80017b6: ea50 3c01 orrs.w ip, r0, r1, lsl #12 + 80017ba: d107 bne.n 80017cc <__cmpdf2+0x74> + 80017bc: ea4f 0c43 mov.w ip, r3, lsl #1 + 80017c0: ea7f 5c6c mvns.w ip, ip, asr #21 + 80017c4: d1d6 bne.n 8001774 <__cmpdf2+0x1c> + 80017c6: ea52 3c03 orrs.w ip, r2, r3, lsl #12 + 80017ca: d0d3 beq.n 8001774 <__cmpdf2+0x1c> + 80017cc: f85d 0b04 ldr.w r0, [sp], #4 + 80017d0: 4770 bx lr + 80017d2: bf00 nop + +080017d4 <__aeabi_cdrcmple>: + 80017d4: 4684 mov ip, r0 + 80017d6: 4610 mov r0, r2 + 80017d8: 4662 mov r2, ip + 80017da: 468c mov ip, r1 + 80017dc: 4619 mov r1, r3 + 80017de: 4663 mov r3, ip + 80017e0: e000 b.n 80017e4 <__aeabi_cdcmpeq> + 80017e2: bf00 nop + +080017e4 <__aeabi_cdcmpeq>: + 80017e4: b501 push {r0, lr} + 80017e6: f7ff ffb7 bl 8001758 <__cmpdf2> + 80017ea: 2800 cmp r0, #0 + 80017ec: bf48 it mi + 80017ee: f110 0f00 cmnmi.w r0, #0 + 80017f2: bd01 pop {r0, pc} + +080017f4 <__aeabi_dcmpeq>: + 80017f4: f84d ed08 str.w lr, [sp, #-8]! + 80017f8: f7ff fff4 bl 80017e4 <__aeabi_cdcmpeq> + 80017fc: bf0c ite eq + 80017fe: 2001 moveq r0, #1 + 8001800: 2000 movne r0, #0 + 8001802: f85d fb08 ldr.w pc, [sp], #8 + 8001806: bf00 nop + +08001808 <__aeabi_dcmplt>: + 8001808: f84d ed08 str.w lr, [sp, #-8]! + 800180c: f7ff ffea bl 80017e4 <__aeabi_cdcmpeq> + 8001810: bf34 ite cc + 8001812: 2001 movcc r0, #1 + 8001814: 2000 movcs r0, #0 + 8001816: f85d fb08 ldr.w pc, [sp], #8 + 800181a: bf00 nop + +0800181c <__aeabi_dcmple>: + 800181c: f84d ed08 str.w lr, [sp, #-8]! + 8001820: f7ff ffe0 bl 80017e4 <__aeabi_cdcmpeq> + 8001824: bf94 ite ls + 8001826: 2001 movls r0, #1 + 8001828: 2000 movhi r0, #0 + 800182a: f85d fb08 ldr.w pc, [sp], #8 + 800182e: bf00 nop + +08001830 <__aeabi_dcmpge>: + 8001830: f84d ed08 str.w lr, [sp, #-8]! + 8001834: f7ff ffce bl 80017d4 <__aeabi_cdrcmple> + 8001838: bf94 ite ls + 800183a: 2001 movls r0, #1 + 800183c: 2000 movhi r0, #0 + 800183e: f85d fb08 ldr.w pc, [sp], #8 + 8001842: bf00 nop + +08001844 <__aeabi_dcmpgt>: + 8001844: f84d ed08 str.w lr, [sp, #-8]! + 8001848: f7ff ffc4 bl 80017d4 <__aeabi_cdrcmple> + 800184c: bf34 ite cc + 800184e: 2001 movcc r0, #1 + 8001850: 2000 movcs r0, #0 + 8001852: f85d fb08 ldr.w pc, [sp], #8 + 8001856: bf00 nop + +08001858 <__aeabi_d2iz>: + 8001858: ea4f 0241 mov.w r2, r1, lsl #1 + 800185c: f512 1200 adds.w r2, r2, #2097152 ; 0x200000 + 8001860: d215 bcs.n 800188e <__aeabi_d2iz+0x36> + 8001862: d511 bpl.n 8001888 <__aeabi_d2iz+0x30> + 8001864: f46f 7378 mvn.w r3, #992 ; 0x3e0 + 8001868: ebb3 5262 subs.w r2, r3, r2, asr #21 + 800186c: d912 bls.n 8001894 <__aeabi_d2iz+0x3c> + 800186e: ea4f 23c1 mov.w r3, r1, lsl #11 + 8001872: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000 + 8001876: ea43 5350 orr.w r3, r3, r0, lsr #21 + 800187a: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 + 800187e: fa23 f002 lsr.w r0, r3, r2 + 8001882: bf18 it ne + 8001884: 4240 negne r0, r0 + 8001886: 4770 bx lr + 8001888: f04f 0000 mov.w r0, #0 + 800188c: 4770 bx lr + 800188e: ea50 3001 orrs.w r0, r0, r1, lsl #12 + 8001892: d105 bne.n 80018a0 <__aeabi_d2iz+0x48> + 8001894: f011 4000 ands.w r0, r1, #2147483648 ; 0x80000000 + 8001898: bf08 it eq + 800189a: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000 + 800189e: 4770 bx lr + 80018a0: f04f 0000 mov.w r0, #0 + 80018a4: 4770 bx lr + 80018a6: bf00 nop + +080018a8 <__aeabi_frsub>: + 80018a8: f080 4000 eor.w r0, r0, #2147483648 ; 0x80000000 + 80018ac: e002 b.n 80018b4 <__addsf3> + 80018ae: bf00 nop + +080018b0 <__aeabi_fsub>: + 80018b0: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000 + +080018b4 <__addsf3>: + 80018b4: 0042 lsls r2, r0, #1 + 80018b6: bf1f itttt ne + 80018b8: ea5f 0341 movsne.w r3, r1, lsl #1 + 80018bc: ea92 0f03 teqne r2, r3 + 80018c0: ea7f 6c22 mvnsne.w ip, r2, asr #24 + 80018c4: ea7f 6c23 mvnsne.w ip, r3, asr #24 + 80018c8: d06a beq.n 80019a0 <__addsf3+0xec> + 80018ca: ea4f 6212 mov.w r2, r2, lsr #24 + 80018ce: ebd2 6313 rsbs r3, r2, r3, lsr #24 + 80018d2: bfc1 itttt gt + 80018d4: 18d2 addgt r2, r2, r3 + 80018d6: 4041 eorgt r1, r0 + 80018d8: 4048 eorgt r0, r1 + 80018da: 4041 eorgt r1, r0 + 80018dc: bfb8 it lt + 80018de: 425b neglt r3, r3 + 80018e0: 2b19 cmp r3, #25 + 80018e2: bf88 it hi + 80018e4: 4770 bxhi lr + 80018e6: f010 4f00 tst.w r0, #2147483648 ; 0x80000000 + 80018ea: f440 0000 orr.w r0, r0, #8388608 ; 0x800000 + 80018ee: f020 407f bic.w r0, r0, #4278190080 ; 0xff000000 + 80018f2: bf18 it ne + 80018f4: 4240 negne r0, r0 + 80018f6: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 + 80018fa: f441 0100 orr.w r1, r1, #8388608 ; 0x800000 + 80018fe: f021 417f bic.w r1, r1, #4278190080 ; 0xff000000 + 8001902: bf18 it ne + 8001904: 4249 negne r1, r1 + 8001906: ea92 0f03 teq r2, r3 + 800190a: d03f beq.n 800198c <__addsf3+0xd8> + 800190c: f1a2 0201 sub.w r2, r2, #1 + 8001910: fa41 fc03 asr.w ip, r1, r3 + 8001914: eb10 000c adds.w r0, r0, ip + 8001918: f1c3 0320 rsb r3, r3, #32 + 800191c: fa01 f103 lsl.w r1, r1, r3 + 8001920: f000 4300 and.w r3, r0, #2147483648 ; 0x80000000 + 8001924: d502 bpl.n 800192c <__addsf3+0x78> + 8001926: 4249 negs r1, r1 + 8001928: eb60 0040 sbc.w r0, r0, r0, lsl #1 + 800192c: f5b0 0f00 cmp.w r0, #8388608 ; 0x800000 + 8001930: d313 bcc.n 800195a <__addsf3+0xa6> + 8001932: f1b0 7f80 cmp.w r0, #16777216 ; 0x1000000 + 8001936: d306 bcc.n 8001946 <__addsf3+0x92> + 8001938: 0840 lsrs r0, r0, #1 + 800193a: ea4f 0131 mov.w r1, r1, rrx + 800193e: f102 0201 add.w r2, r2, #1 + 8001942: 2afe cmp r2, #254 ; 0xfe + 8001944: d251 bcs.n 80019ea <__addsf3+0x136> + 8001946: f1b1 4f00 cmp.w r1, #2147483648 ; 0x80000000 + 800194a: eb40 50c2 adc.w r0, r0, r2, lsl #23 + 800194e: bf08 it eq + 8001950: f020 0001 biceq.w r0, r0, #1 + 8001954: ea40 0003 orr.w r0, r0, r3 + 8001958: 4770 bx lr + 800195a: 0049 lsls r1, r1, #1 + 800195c: eb40 0000 adc.w r0, r0, r0 + 8001960: 3a01 subs r2, #1 + 8001962: bf28 it cs + 8001964: f5b0 0f00 cmpcs.w r0, #8388608 ; 0x800000 + 8001968: d2ed bcs.n 8001946 <__addsf3+0x92> + 800196a: fab0 fc80 clz ip, r0 + 800196e: f1ac 0c08 sub.w ip, ip, #8 + 8001972: ebb2 020c subs.w r2, r2, ip + 8001976: fa00 f00c lsl.w r0, r0, ip + 800197a: bfaa itet ge + 800197c: eb00 50c2 addge.w r0, r0, r2, lsl #23 + 8001980: 4252 neglt r2, r2 + 8001982: 4318 orrge r0, r3 + 8001984: bfbc itt lt + 8001986: 40d0 lsrlt r0, r2 + 8001988: 4318 orrlt r0, r3 + 800198a: 4770 bx lr + 800198c: f092 0f00 teq r2, #0 + 8001990: f481 0100 eor.w r1, r1, #8388608 ; 0x800000 + 8001994: bf06 itte eq + 8001996: f480 0000 eoreq.w r0, r0, #8388608 ; 0x800000 + 800199a: 3201 addeq r2, #1 + 800199c: 3b01 subne r3, #1 + 800199e: e7b5 b.n 800190c <__addsf3+0x58> + 80019a0: ea4f 0341 mov.w r3, r1, lsl #1 + 80019a4: ea7f 6c22 mvns.w ip, r2, asr #24 + 80019a8: bf18 it ne + 80019aa: ea7f 6c23 mvnsne.w ip, r3, asr #24 + 80019ae: d021 beq.n 80019f4 <__addsf3+0x140> + 80019b0: ea92 0f03 teq r2, r3 + 80019b4: d004 beq.n 80019c0 <__addsf3+0x10c> + 80019b6: f092 0f00 teq r2, #0 + 80019ba: bf08 it eq + 80019bc: 4608 moveq r0, r1 + 80019be: 4770 bx lr + 80019c0: ea90 0f01 teq r0, r1 + 80019c4: bf1c itt ne + 80019c6: 2000 movne r0, #0 + 80019c8: 4770 bxne lr + 80019ca: f012 4f7f tst.w r2, #4278190080 ; 0xff000000 + 80019ce: d104 bne.n 80019da <__addsf3+0x126> + 80019d0: 0040 lsls r0, r0, #1 + 80019d2: bf28 it cs + 80019d4: f040 4000 orrcs.w r0, r0, #2147483648 ; 0x80000000 + 80019d8: 4770 bx lr + 80019da: f112 7200 adds.w r2, r2, #33554432 ; 0x2000000 + 80019de: bf3c itt cc + 80019e0: f500 0000 addcc.w r0, r0, #8388608 ; 0x800000 + 80019e4: 4770 bxcc lr + 80019e6: f000 4300 and.w r3, r0, #2147483648 ; 0x80000000 + 80019ea: f043 40fe orr.w r0, r3, #2130706432 ; 0x7f000000 + 80019ee: f440 0000 orr.w r0, r0, #8388608 ; 0x800000 + 80019f2: 4770 bx lr + 80019f4: ea7f 6222 mvns.w r2, r2, asr #24 + 80019f8: bf16 itet ne + 80019fa: 4608 movne r0, r1 + 80019fc: ea7f 6323 mvnseq.w r3, r3, asr #24 + 8001a00: 4601 movne r1, r0 + 8001a02: 0242 lsls r2, r0, #9 + 8001a04: bf06 itte eq + 8001a06: ea5f 2341 movseq.w r3, r1, lsl #9 + 8001a0a: ea90 0f01 teqeq r0, r1 + 8001a0e: f440 0080 orrne.w r0, r0, #4194304 ; 0x400000 + 8001a12: 4770 bx lr + +08001a14 <__aeabi_ui2f>: + 8001a14: f04f 0300 mov.w r3, #0 + 8001a18: e004 b.n 8001a24 <__aeabi_i2f+0x8> + 8001a1a: bf00 nop + +08001a1c <__aeabi_i2f>: + 8001a1c: f010 4300 ands.w r3, r0, #2147483648 ; 0x80000000 + 8001a20: bf48 it mi + 8001a22: 4240 negmi r0, r0 + 8001a24: ea5f 0c00 movs.w ip, r0 + 8001a28: bf08 it eq + 8001a2a: 4770 bxeq lr + 8001a2c: f043 4396 orr.w r3, r3, #1258291200 ; 0x4b000000 + 8001a30: 4601 mov r1, r0 + 8001a32: f04f 0000 mov.w r0, #0 + 8001a36: e01c b.n 8001a72 <__aeabi_l2f+0x2a> + +08001a38 <__aeabi_ul2f>: + 8001a38: ea50 0201 orrs.w r2, r0, r1 + 8001a3c: bf08 it eq + 8001a3e: 4770 bxeq lr + 8001a40: f04f 0300 mov.w r3, #0 + 8001a44: e00a b.n 8001a5c <__aeabi_l2f+0x14> + 8001a46: bf00 nop + +08001a48 <__aeabi_l2f>: + 8001a48: ea50 0201 orrs.w r2, r0, r1 + 8001a4c: bf08 it eq + 8001a4e: 4770 bxeq lr + 8001a50: f011 4300 ands.w r3, r1, #2147483648 ; 0x80000000 + 8001a54: d502 bpl.n 8001a5c <__aeabi_l2f+0x14> + 8001a56: 4240 negs r0, r0 + 8001a58: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 8001a5c: ea5f 0c01 movs.w ip, r1 + 8001a60: bf02 ittt eq + 8001a62: 4684 moveq ip, r0 + 8001a64: 4601 moveq r1, r0 + 8001a66: 2000 moveq r0, #0 + 8001a68: f043 43b6 orr.w r3, r3, #1526726656 ; 0x5b000000 + 8001a6c: bf08 it eq + 8001a6e: f1a3 5380 subeq.w r3, r3, #268435456 ; 0x10000000 + 8001a72: f5a3 0300 sub.w r3, r3, #8388608 ; 0x800000 + 8001a76: fabc f28c clz r2, ip + 8001a7a: 3a08 subs r2, #8 + 8001a7c: eba3 53c2 sub.w r3, r3, r2, lsl #23 + 8001a80: db10 blt.n 8001aa4 <__aeabi_l2f+0x5c> + 8001a82: fa01 fc02 lsl.w ip, r1, r2 + 8001a86: 4463 add r3, ip + 8001a88: fa00 fc02 lsl.w ip, r0, r2 + 8001a8c: f1c2 0220 rsb r2, r2, #32 + 8001a90: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000 + 8001a94: fa20 f202 lsr.w r2, r0, r2 + 8001a98: eb43 0002 adc.w r0, r3, r2 + 8001a9c: bf08 it eq + 8001a9e: f020 0001 biceq.w r0, r0, #1 + 8001aa2: 4770 bx lr + 8001aa4: f102 0220 add.w r2, r2, #32 + 8001aa8: fa01 fc02 lsl.w ip, r1, r2 + 8001aac: f1c2 0220 rsb r2, r2, #32 + 8001ab0: ea50 004c orrs.w r0, r0, ip, lsl #1 + 8001ab4: fa21 f202 lsr.w r2, r1, r2 + 8001ab8: eb43 0002 adc.w r0, r3, r2 + 8001abc: bf08 it eq + 8001abe: ea20 70dc biceq.w r0, r0, ip, lsr #31 + 8001ac2: 4770 bx lr + +08001ac4 <__aeabi_f2iz>: + 8001ac4: ea4f 0240 mov.w r2, r0, lsl #1 + 8001ac8: f1b2 4ffe cmp.w r2, #2130706432 ; 0x7f000000 + 8001acc: d30f bcc.n 8001aee <__aeabi_f2iz+0x2a> + 8001ace: f04f 039e mov.w r3, #158 ; 0x9e + 8001ad2: ebb3 6212 subs.w r2, r3, r2, lsr #24 + 8001ad6: d90d bls.n 8001af4 <__aeabi_f2iz+0x30> + 8001ad8: ea4f 2300 mov.w r3, r0, lsl #8 + 8001adc: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000 + 8001ae0: f010 4f00 tst.w r0, #2147483648 ; 0x80000000 + 8001ae4: fa23 f002 lsr.w r0, r3, r2 + 8001ae8: bf18 it ne + 8001aea: 4240 negne r0, r0 + 8001aec: 4770 bx lr + 8001aee: f04f 0000 mov.w r0, #0 + 8001af2: 4770 bx lr + 8001af4: f112 0f61 cmn.w r2, #97 ; 0x61 + 8001af8: d101 bne.n 8001afe <__aeabi_f2iz+0x3a> + 8001afa: 0242 lsls r2, r0, #9 + 8001afc: d105 bne.n 8001b0a <__aeabi_f2iz+0x46> + 8001afe: f010 4000 ands.w r0, r0, #2147483648 ; 0x80000000 + 8001b02: bf08 it eq + 8001b04: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000 + 8001b08: 4770 bx lr + 8001b0a: f04f 0000 mov.w r0, #0 + 8001b0e: 4770 bx lr + +08001b10 <__aeabi_uldivmod>: + 8001b10: b953 cbnz r3, 8001b28 <__aeabi_uldivmod+0x18> + 8001b12: b94a cbnz r2, 8001b28 <__aeabi_uldivmod+0x18> + 8001b14: 2900 cmp r1, #0 + 8001b16: bf08 it eq + 8001b18: 2800 cmpeq r0, #0 + 8001b1a: bf1c itt ne + 8001b1c: f04f 31ff movne.w r1, #4294967295 + 8001b20: f04f 30ff movne.w r0, #4294967295 + 8001b24: f000 b970 b.w 8001e08 <__aeabi_idiv0> + 8001b28: f1ad 0c08 sub.w ip, sp, #8 + 8001b2c: e96d ce04 strd ip, lr, [sp, #-16]! + 8001b30: f000 f806 bl 8001b40 <__udivmoddi4> + 8001b34: f8dd e004 ldr.w lr, [sp, #4] + 8001b38: e9dd 2302 ldrd r2, r3, [sp, #8] + 8001b3c: b004 add sp, #16 + 8001b3e: 4770 bx lr + +08001b40 <__udivmoddi4>: + 8001b40: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8001b44: 9e08 ldr r6, [sp, #32] + 8001b46: 460d mov r5, r1 + 8001b48: 4604 mov r4, r0 + 8001b4a: 460f mov r7, r1 + 8001b4c: 2b00 cmp r3, #0 + 8001b4e: d14a bne.n 8001be6 <__udivmoddi4+0xa6> + 8001b50: 428a cmp r2, r1 + 8001b52: 4694 mov ip, r2 + 8001b54: d965 bls.n 8001c22 <__udivmoddi4+0xe2> + 8001b56: fab2 f382 clz r3, r2 + 8001b5a: b143 cbz r3, 8001b6e <__udivmoddi4+0x2e> + 8001b5c: fa02 fc03 lsl.w ip, r2, r3 + 8001b60: f1c3 0220 rsb r2, r3, #32 + 8001b64: 409f lsls r7, r3 + 8001b66: fa20 f202 lsr.w r2, r0, r2 + 8001b6a: 4317 orrs r7, r2 + 8001b6c: 409c lsls r4, r3 + 8001b6e: ea4f 4e1c mov.w lr, ip, lsr #16 + 8001b72: fa1f f58c uxth.w r5, ip + 8001b76: fbb7 f1fe udiv r1, r7, lr + 8001b7a: 0c22 lsrs r2, r4, #16 + 8001b7c: fb0e 7711 mls r7, lr, r1, r7 + 8001b80: ea42 4207 orr.w r2, r2, r7, lsl #16 + 8001b84: fb01 f005 mul.w r0, r1, r5 + 8001b88: 4290 cmp r0, r2 + 8001b8a: d90a bls.n 8001ba2 <__udivmoddi4+0x62> + 8001b8c: eb1c 0202 adds.w r2, ip, r2 + 8001b90: f101 37ff add.w r7, r1, #4294967295 + 8001b94: f080 811b bcs.w 8001dce <__udivmoddi4+0x28e> + 8001b98: 4290 cmp r0, r2 + 8001b9a: f240 8118 bls.w 8001dce <__udivmoddi4+0x28e> + 8001b9e: 3902 subs r1, #2 + 8001ba0: 4462 add r2, ip + 8001ba2: 1a12 subs r2, r2, r0 + 8001ba4: b2a4 uxth r4, r4 + 8001ba6: fbb2 f0fe udiv r0, r2, lr + 8001baa: fb0e 2210 mls r2, lr, r0, r2 + 8001bae: ea44 4402 orr.w r4, r4, r2, lsl #16 + 8001bb2: fb00 f505 mul.w r5, r0, r5 + 8001bb6: 42a5 cmp r5, r4 + 8001bb8: d90a bls.n 8001bd0 <__udivmoddi4+0x90> + 8001bba: eb1c 0404 adds.w r4, ip, r4 + 8001bbe: f100 32ff add.w r2, r0, #4294967295 + 8001bc2: f080 8106 bcs.w 8001dd2 <__udivmoddi4+0x292> + 8001bc6: 42a5 cmp r5, r4 + 8001bc8: f240 8103 bls.w 8001dd2 <__udivmoddi4+0x292> + 8001bcc: 4464 add r4, ip + 8001bce: 3802 subs r0, #2 + 8001bd0: ea40 4001 orr.w r0, r0, r1, lsl #16 + 8001bd4: 1b64 subs r4, r4, r5 + 8001bd6: 2100 movs r1, #0 + 8001bd8: b11e cbz r6, 8001be2 <__udivmoddi4+0xa2> + 8001bda: 40dc lsrs r4, r3 + 8001bdc: 2300 movs r3, #0 + 8001bde: e9c6 4300 strd r4, r3, [r6] + 8001be2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8001be6: 428b cmp r3, r1 + 8001be8: d908 bls.n 8001bfc <__udivmoddi4+0xbc> + 8001bea: 2e00 cmp r6, #0 + 8001bec: f000 80ec beq.w 8001dc8 <__udivmoddi4+0x288> + 8001bf0: 2100 movs r1, #0 + 8001bf2: e9c6 0500 strd r0, r5, [r6] + 8001bf6: 4608 mov r0, r1 + 8001bf8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8001bfc: fab3 f183 clz r1, r3 + 8001c00: 2900 cmp r1, #0 + 8001c02: d149 bne.n 8001c98 <__udivmoddi4+0x158> + 8001c04: 42ab cmp r3, r5 + 8001c06: d302 bcc.n 8001c0e <__udivmoddi4+0xce> + 8001c08: 4282 cmp r2, r0 + 8001c0a: f200 80f7 bhi.w 8001dfc <__udivmoddi4+0x2bc> + 8001c0e: 1a84 subs r4, r0, r2 + 8001c10: eb65 0203 sbc.w r2, r5, r3 + 8001c14: 2001 movs r0, #1 + 8001c16: 4617 mov r7, r2 + 8001c18: 2e00 cmp r6, #0 + 8001c1a: d0e2 beq.n 8001be2 <__udivmoddi4+0xa2> + 8001c1c: e9c6 4700 strd r4, r7, [r6] + 8001c20: e7df b.n 8001be2 <__udivmoddi4+0xa2> + 8001c22: b902 cbnz r2, 8001c26 <__udivmoddi4+0xe6> + 8001c24: deff udf #255 ; 0xff + 8001c26: fab2 f382 clz r3, r2 + 8001c2a: 2b00 cmp r3, #0 + 8001c2c: f040 808f bne.w 8001d4e <__udivmoddi4+0x20e> + 8001c30: 1a8a subs r2, r1, r2 + 8001c32: ea4f 471c mov.w r7, ip, lsr #16 + 8001c36: fa1f fe8c uxth.w lr, ip + 8001c3a: 2101 movs r1, #1 + 8001c3c: fbb2 f5f7 udiv r5, r2, r7 + 8001c40: fb07 2015 mls r0, r7, r5, r2 + 8001c44: 0c22 lsrs r2, r4, #16 + 8001c46: ea42 4200 orr.w r2, r2, r0, lsl #16 + 8001c4a: fb0e f005 mul.w r0, lr, r5 + 8001c4e: 4290 cmp r0, r2 + 8001c50: d908 bls.n 8001c64 <__udivmoddi4+0x124> + 8001c52: eb1c 0202 adds.w r2, ip, r2 + 8001c56: f105 38ff add.w r8, r5, #4294967295 + 8001c5a: d202 bcs.n 8001c62 <__udivmoddi4+0x122> + 8001c5c: 4290 cmp r0, r2 + 8001c5e: f200 80ca bhi.w 8001df6 <__udivmoddi4+0x2b6> + 8001c62: 4645 mov r5, r8 + 8001c64: 1a12 subs r2, r2, r0 + 8001c66: b2a4 uxth r4, r4 + 8001c68: fbb2 f0f7 udiv r0, r2, r7 + 8001c6c: fb07 2210 mls r2, r7, r0, r2 + 8001c70: ea44 4402 orr.w r4, r4, r2, lsl #16 + 8001c74: fb0e fe00 mul.w lr, lr, r0 + 8001c78: 45a6 cmp lr, r4 + 8001c7a: d908 bls.n 8001c8e <__udivmoddi4+0x14e> + 8001c7c: eb1c 0404 adds.w r4, ip, r4 + 8001c80: f100 32ff add.w r2, r0, #4294967295 + 8001c84: d202 bcs.n 8001c8c <__udivmoddi4+0x14c> + 8001c86: 45a6 cmp lr, r4 + 8001c88: f200 80ba bhi.w 8001e00 <__udivmoddi4+0x2c0> + 8001c8c: 4610 mov r0, r2 + 8001c8e: eba4 040e sub.w r4, r4, lr + 8001c92: ea40 4005 orr.w r0, r0, r5, lsl #16 + 8001c96: e79f b.n 8001bd8 <__udivmoddi4+0x98> + 8001c98: f1c1 0720 rsb r7, r1, #32 + 8001c9c: 408b lsls r3, r1 + 8001c9e: fa22 fc07 lsr.w ip, r2, r7 + 8001ca2: ea4c 0c03 orr.w ip, ip, r3 + 8001ca6: fa05 f401 lsl.w r4, r5, r1 + 8001caa: fa20 f307 lsr.w r3, r0, r7 + 8001cae: 40fd lsrs r5, r7 + 8001cb0: 4323 orrs r3, r4 + 8001cb2: fa00 f901 lsl.w r9, r0, r1 + 8001cb6: ea4f 401c mov.w r0, ip, lsr #16 + 8001cba: fa1f fe8c uxth.w lr, ip + 8001cbe: fbb5 f8f0 udiv r8, r5, r0 + 8001cc2: 0c1c lsrs r4, r3, #16 + 8001cc4: fb00 5518 mls r5, r0, r8, r5 + 8001cc8: ea44 4405 orr.w r4, r4, r5, lsl #16 + 8001ccc: fb08 f50e mul.w r5, r8, lr + 8001cd0: 42a5 cmp r5, r4 + 8001cd2: fa02 f201 lsl.w r2, r2, r1 + 8001cd6: d90b bls.n 8001cf0 <__udivmoddi4+0x1b0> + 8001cd8: eb1c 0404 adds.w r4, ip, r4 + 8001cdc: f108 3aff add.w sl, r8, #4294967295 + 8001ce0: f080 8087 bcs.w 8001df2 <__udivmoddi4+0x2b2> + 8001ce4: 42a5 cmp r5, r4 + 8001ce6: f240 8084 bls.w 8001df2 <__udivmoddi4+0x2b2> + 8001cea: f1a8 0802 sub.w r8, r8, #2 + 8001cee: 4464 add r4, ip + 8001cf0: 1b64 subs r4, r4, r5 + 8001cf2: b29d uxth r5, r3 + 8001cf4: fbb4 f3f0 udiv r3, r4, r0 + 8001cf8: fb00 4413 mls r4, r0, r3, r4 + 8001cfc: ea45 4404 orr.w r4, r5, r4, lsl #16 + 8001d00: fb03 fe0e mul.w lr, r3, lr + 8001d04: 45a6 cmp lr, r4 + 8001d06: d908 bls.n 8001d1a <__udivmoddi4+0x1da> + 8001d08: eb1c 0404 adds.w r4, ip, r4 + 8001d0c: f103 30ff add.w r0, r3, #4294967295 + 8001d10: d26b bcs.n 8001dea <__udivmoddi4+0x2aa> + 8001d12: 45a6 cmp lr, r4 + 8001d14: d969 bls.n 8001dea <__udivmoddi4+0x2aa> + 8001d16: 3b02 subs r3, #2 + 8001d18: 4464 add r4, ip + 8001d1a: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8001d1e: fba0 8302 umull r8, r3, r0, r2 + 8001d22: eba4 040e sub.w r4, r4, lr + 8001d26: 429c cmp r4, r3 + 8001d28: 46c6 mov lr, r8 + 8001d2a: 461d mov r5, r3 + 8001d2c: d355 bcc.n 8001dda <__udivmoddi4+0x29a> + 8001d2e: d052 beq.n 8001dd6 <__udivmoddi4+0x296> + 8001d30: b156 cbz r6, 8001d48 <__udivmoddi4+0x208> + 8001d32: ebb9 030e subs.w r3, r9, lr + 8001d36: eb64 0405 sbc.w r4, r4, r5 + 8001d3a: fa04 f707 lsl.w r7, r4, r7 + 8001d3e: 40cb lsrs r3, r1 + 8001d40: 40cc lsrs r4, r1 + 8001d42: 431f orrs r7, r3 + 8001d44: e9c6 7400 strd r7, r4, [r6] + 8001d48: 2100 movs r1, #0 + 8001d4a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8001d4e: f1c3 0120 rsb r1, r3, #32 + 8001d52: fa02 fc03 lsl.w ip, r2, r3 + 8001d56: fa20 f201 lsr.w r2, r0, r1 + 8001d5a: fa25 f101 lsr.w r1, r5, r1 + 8001d5e: 409d lsls r5, r3 + 8001d60: 432a orrs r2, r5 + 8001d62: ea4f 471c mov.w r7, ip, lsr #16 + 8001d66: fa1f fe8c uxth.w lr, ip + 8001d6a: fbb1 f0f7 udiv r0, r1, r7 + 8001d6e: fb07 1510 mls r5, r7, r0, r1 + 8001d72: 0c11 lsrs r1, r2, #16 + 8001d74: ea41 4105 orr.w r1, r1, r5, lsl #16 + 8001d78: fb00 f50e mul.w r5, r0, lr + 8001d7c: 428d cmp r5, r1 + 8001d7e: fa04 f403 lsl.w r4, r4, r3 + 8001d82: d908 bls.n 8001d96 <__udivmoddi4+0x256> + 8001d84: eb1c 0101 adds.w r1, ip, r1 + 8001d88: f100 38ff add.w r8, r0, #4294967295 + 8001d8c: d22f bcs.n 8001dee <__udivmoddi4+0x2ae> + 8001d8e: 428d cmp r5, r1 + 8001d90: d92d bls.n 8001dee <__udivmoddi4+0x2ae> + 8001d92: 3802 subs r0, #2 + 8001d94: 4461 add r1, ip + 8001d96: 1b49 subs r1, r1, r5 + 8001d98: b292 uxth r2, r2 + 8001d9a: fbb1 f5f7 udiv r5, r1, r7 + 8001d9e: fb07 1115 mls r1, r7, r5, r1 + 8001da2: ea42 4201 orr.w r2, r2, r1, lsl #16 + 8001da6: fb05 f10e mul.w r1, r5, lr + 8001daa: 4291 cmp r1, r2 + 8001dac: d908 bls.n 8001dc0 <__udivmoddi4+0x280> + 8001dae: eb1c 0202 adds.w r2, ip, r2 + 8001db2: f105 38ff add.w r8, r5, #4294967295 + 8001db6: d216 bcs.n 8001de6 <__udivmoddi4+0x2a6> + 8001db8: 4291 cmp r1, r2 + 8001dba: d914 bls.n 8001de6 <__udivmoddi4+0x2a6> + 8001dbc: 3d02 subs r5, #2 + 8001dbe: 4462 add r2, ip + 8001dc0: 1a52 subs r2, r2, r1 + 8001dc2: ea45 4100 orr.w r1, r5, r0, lsl #16 + 8001dc6: e739 b.n 8001c3c <__udivmoddi4+0xfc> + 8001dc8: 4631 mov r1, r6 + 8001dca: 4630 mov r0, r6 + 8001dcc: e709 b.n 8001be2 <__udivmoddi4+0xa2> + 8001dce: 4639 mov r1, r7 + 8001dd0: e6e7 b.n 8001ba2 <__udivmoddi4+0x62> + 8001dd2: 4610 mov r0, r2 + 8001dd4: e6fc b.n 8001bd0 <__udivmoddi4+0x90> + 8001dd6: 45c1 cmp r9, r8 + 8001dd8: d2aa bcs.n 8001d30 <__udivmoddi4+0x1f0> + 8001dda: ebb8 0e02 subs.w lr, r8, r2 + 8001dde: eb63 050c sbc.w r5, r3, ip + 8001de2: 3801 subs r0, #1 + 8001de4: e7a4 b.n 8001d30 <__udivmoddi4+0x1f0> + 8001de6: 4645 mov r5, r8 + 8001de8: e7ea b.n 8001dc0 <__udivmoddi4+0x280> + 8001dea: 4603 mov r3, r0 + 8001dec: e795 b.n 8001d1a <__udivmoddi4+0x1da> + 8001dee: 4640 mov r0, r8 + 8001df0: e7d1 b.n 8001d96 <__udivmoddi4+0x256> + 8001df2: 46d0 mov r8, sl + 8001df4: e77c b.n 8001cf0 <__udivmoddi4+0x1b0> + 8001df6: 3d02 subs r5, #2 + 8001df8: 4462 add r2, ip + 8001dfa: e733 b.n 8001c64 <__udivmoddi4+0x124> + 8001dfc: 4608 mov r0, r1 + 8001dfe: e70b b.n 8001c18 <__udivmoddi4+0xd8> + 8001e00: 4464 add r4, ip + 8001e02: 3802 subs r0, #2 + 8001e04: e743 b.n 8001c8e <__udivmoddi4+0x14e> + 8001e06: bf00 nop + +08001e08 <__aeabi_idiv0>: + 8001e08: 4770 bx lr + 8001e0a: bf00 nop + +08001e0c <MX_ADC_Init>: + +ADC_HandleTypeDef hadc; + +/* ADC init function */ +void MX_ADC_Init(void) +{ + 8001e0c: b508 push {r3, lr} + + /* USER CODE END ADC_Init 1 */ + + /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) + */ + hadc.Instance = ADC; + 8001e0e: 4813 ldr r0, [pc, #76] ; (8001e5c <MX_ADC_Init+0x50>) + 8001e10: 4b13 ldr r3, [pc, #76] ; (8001e60 <MX_ADC_Init+0x54>) + 8001e12: 6003 str r3, [r0, #0] + hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; + 8001e14: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 + 8001e18: 6043 str r3, [r0, #4] + hadc.Init.Resolution = ADC_RESOLUTION_12B; + 8001e1a: 2300 movs r3, #0 + 8001e1c: 6083 str r3, [r0, #8] + hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; + 8001e1e: 60c3 str r3, [r0, #12] + hadc.Init.ScanConvMode = ADC_SCAN_DISABLE; + 8001e20: 6103 str r3, [r0, #16] + hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + 8001e22: 2204 movs r2, #4 + 8001e24: 6142 str r2, [r0, #20] + hadc.Init.LowPowerAutoWait = DISABLE; + 8001e26: 7603 strb r3, [r0, #24] + hadc.Init.LowPowerAutoPowerOff = DISABLE; + 8001e28: 7643 strb r3, [r0, #25] + hadc.Init.ContinuousConvMode = DISABLE; + 8001e2a: 7683 strb r3, [r0, #26] + hadc.Init.NbrOfConversion = 1; + 8001e2c: 2201 movs r2, #1 + 8001e2e: 61c2 str r2, [r0, #28] + hadc.Init.DiscontinuousConvMode = DISABLE; + 8001e30: f880 3020 strb.w r3, [r0, #32] + hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START; + 8001e34: 6243 str r3, [r0, #36] ; 0x24 + hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + 8001e36: 6283 str r3, [r0, #40] ; 0x28 + hadc.Init.DMAContinuousRequests = DISABLE; + 8001e38: f880 302c strb.w r3, [r0, #44] ; 0x2c + hadc.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN; + 8001e3c: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8001e40: 6302 str r2, [r0, #48] ; 0x30 + hadc.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_160CYCLES_5; + 8001e42: 2207 movs r2, #7 + 8001e44: 6342 str r2, [r0, #52] ; 0x34 + hadc.Init.SamplingTimeCommon2 = ADC_SAMPLETIME_160CYCLES_5; + 8001e46: 6382 str r2, [r0, #56] ; 0x38 + hadc.Init.OversamplingMode = DISABLE; + 8001e48: f880 303c strb.w r3, [r0, #60] ; 0x3c + hadc.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH; + 8001e4c: 64c3 str r3, [r0, #76] ; 0x4c + if (HAL_ADC_Init(&hadc) != HAL_OK) + 8001e4e: f006 f9fb bl 8008248 <HAL_ADC_Init> + 8001e52: b900 cbnz r0, 8001e56 <MX_ADC_Init+0x4a> + } + /* USER CODE BEGIN ADC_Init 2 */ + + /* USER CODE END ADC_Init 2 */ + +} + 8001e54: bd08 pop {r3, pc} + Error_Handler(); + 8001e56: f000 fc41 bl 80026dc <Error_Handler> +} + 8001e5a: e7fb b.n 8001e54 <MX_ADC_Init+0x48> + 8001e5c: 200008ec .word 0x200008ec + 8001e60: 40012400 .word 0x40012400 + +08001e64 <HAL_ADC_MspInit>: + +void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) +{ + + if(adcHandle->Instance==ADC) + 8001e64: 6802 ldr r2, [r0, #0] + 8001e66: 4b09 ldr r3, [pc, #36] ; (8001e8c <HAL_ADC_MspInit+0x28>) + 8001e68: 429a cmp r2, r3 + 8001e6a: d000 beq.n 8001e6e <HAL_ADC_MspInit+0xa> + 8001e6c: 4770 bx lr +{ + 8001e6e: b082 sub sp, #8 + * @retval None + */ +__STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB2ENR, Periphs); + 8001e70: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8001e74: 6e1a ldr r2, [r3, #96] ; 0x60 + 8001e76: f442 7200 orr.w r2, r2, #512 ; 0x200 + 8001e7a: 661a str r2, [r3, #96] ; 0x60 + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, Periphs); + 8001e7c: 6e1b ldr r3, [r3, #96] ; 0x60 + 8001e7e: f403 7300 and.w r3, r3, #512 ; 0x200 + 8001e82: 9301 str r3, [sp, #4] + (void)tmpreg; + 8001e84: 9b01 ldr r3, [sp, #4] + __HAL_RCC_ADC_CLK_ENABLE(); + /* USER CODE BEGIN ADC_MspInit 1 */ + + /* USER CODE END ADC_MspInit 1 */ + } +} + 8001e86: b002 add sp, #8 + 8001e88: 4770 bx lr + 8001e8a: bf00 nop + 8001e8c: 40012400 .word 0x40012400 + +08001e90 <HAL_ADC_MspDeInit>: + +void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) +{ + + if(adcHandle->Instance==ADC) + 8001e90: 6802 ldr r2, [r0, #0] + 8001e92: 4b05 ldr r3, [pc, #20] ; (8001ea8 <HAL_ADC_MspDeInit+0x18>) + 8001e94: 429a cmp r2, r3 + 8001e96: d000 beq.n 8001e9a <HAL_ADC_MspDeInit+0xa> + __HAL_RCC_ADC_CLK_DISABLE(); + /* USER CODE BEGIN ADC_MspDeInit 1 */ + + /* USER CODE END ADC_MspDeInit 1 */ + } +} + 8001e98: 4770 bx lr + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 + * @retval None + */ +__STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2ENR, Periphs); + 8001e9a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8001e9e: 6e13 ldr r3, [r2, #96] ; 0x60 + 8001ea0: f423 7300 bic.w r3, r3, #512 ; 0x200 + 8001ea4: 6613 str r3, [r2, #96] ; 0x60 + 8001ea6: e7f7 b.n 8001e98 <HAL_ADC_MspDeInit+0x8> + 8001ea8: 40012400 .word 0x40012400 + +08001eac <ADC_ReadChannels>: +/* USER CODE BEGIN PrFD */ + +/* USER CODE END PrFD */ + +static uint32_t ADC_ReadChannels(uint32_t channel) +{ + 8001eac: b530 push {r4, r5, lr} + 8001eae: b085 sub sp, #20 + 8001eb0: 4604 mov r4, r0 + /* USER CODE BEGIN ADC_ReadChannels_1 */ + + /* USER CODE END ADC_ReadChannels_1 */ + uint32_t ADCxConvertedValues = 0; + ADC_ChannelConfTypeDef sConfig = {0}; + 8001eb2: 2300 movs r3, #0 + 8001eb4: 9301 str r3, [sp, #4] + 8001eb6: 9302 str r3, [sp, #8] + 8001eb8: 9303 str r3, [sp, #12] + + MX_ADC_Init(); + 8001eba: f7ff ffa7 bl 8001e0c <MX_ADC_Init> + + /* Start Calibration */ + if (HAL_ADCEx_Calibration_Start(&hadc) != HAL_OK) + 8001ebe: 4816 ldr r0, [pc, #88] ; (8001f18 <ADC_ReadChannels+0x6c>) + 8001ec0: f006 fdfa bl 8008ab8 <HAL_ADCEx_Calibration_Start> + 8001ec4: b9f8 cbnz r0, 8001f06 <ADC_ReadChannels+0x5a> + { + Error_Handler(); + } + + /* Configure Regular Channel */ + sConfig.Channel = channel; + 8001ec6: 9401 str r4, [sp, #4] + sConfig.Rank = ADC_REGULAR_RANK_1; + 8001ec8: 2300 movs r3, #0 + 8001eca: 9302 str r3, [sp, #8] + sConfig.SamplingTime = ADC_SAMPLINGTIME_COMMON_1; + 8001ecc: 9303 str r3, [sp, #12] + if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) + 8001ece: a901 add r1, sp, #4 + 8001ed0: 4811 ldr r0, [pc, #68] ; (8001f18 <ADC_ReadChannels+0x6c>) + 8001ed2: f006 fb33 bl 800853c <HAL_ADC_ConfigChannel> + 8001ed6: b9c8 cbnz r0, 8001f0c <ADC_ReadChannels+0x60> + { + Error_Handler(); + } + + if (HAL_ADC_Start(&hadc) != HAL_OK) + 8001ed8: 480f ldr r0, [pc, #60] ; (8001f18 <ADC_ReadChannels+0x6c>) + 8001eda: f006 fcf1 bl 80088c0 <HAL_ADC_Start> + 8001ede: b9c0 cbnz r0, 8001f12 <ADC_ReadChannels+0x66> + { + /* Start Error */ + Error_Handler(); + } + /** Wait for end of conversion */ + HAL_ADC_PollForConversion(&hadc, HAL_MAX_DELAY); + 8001ee0: 4c0d ldr r4, [pc, #52] ; (8001f18 <ADC_ReadChannels+0x6c>) + 8001ee2: f04f 31ff mov.w r1, #4294967295 + 8001ee6: 4620 mov r0, r4 + 8001ee8: f006 fac6 bl 8008478 <HAL_ADC_PollForConversion> + + /** Wait for end of conversion */ + HAL_ADC_Stop(&hadc); /* it calls also ADC_Disable() */ + 8001eec: 4620 mov r0, r4 + 8001eee: f006 fdc3 bl 8008a78 <HAL_ADC_Stop> + + ADCxConvertedValues = HAL_ADC_GetValue(&hadc); + 8001ef2: 4620 mov r0, r4 + 8001ef4: f006 fb1f bl 8008536 <HAL_ADC_GetValue> + 8001ef8: 4605 mov r5, r0 + + HAL_ADC_DeInit(&hadc); + 8001efa: 4620 mov r0, r4 + 8001efc: f006 fd5c bl 80089b8 <HAL_ADC_DeInit> + + return ADCxConvertedValues; + /* USER CODE BEGIN ADC_ReadChannels_2 */ + + /* USER CODE END ADC_ReadChannels_2 */ +} + 8001f00: 4628 mov r0, r5 + 8001f02: b005 add sp, #20 + 8001f04: bd30 pop {r4, r5, pc} + Error_Handler(); + 8001f06: f000 fbe9 bl 80026dc <Error_Handler> + 8001f0a: e7dc b.n 8001ec6 <ADC_ReadChannels+0x1a> + Error_Handler(); + 8001f0c: f000 fbe6 bl 80026dc <Error_Handler> + 8001f10: e7e2 b.n 8001ed8 <ADC_ReadChannels+0x2c> + Error_Handler(); + 8001f12: f000 fbe3 bl 80026dc <Error_Handler> + 8001f16: e7e3 b.n 8001ee0 <ADC_ReadChannels+0x34> + 8001f18: 200008ec .word 0x200008ec + +08001f1c <SYS_InitMeasurement>: + hadc.Instance = ADC; + 8001f1c: 4b01 ldr r3, [pc, #4] ; (8001f24 <SYS_InitMeasurement+0x8>) + 8001f1e: 4a02 ldr r2, [pc, #8] ; (8001f28 <SYS_InitMeasurement+0xc>) + 8001f20: 601a str r2, [r3, #0] +} + 8001f22: 4770 bx lr + 8001f24: 200008ec .word 0x200008ec + 8001f28: 40012400 .word 0x40012400 + +08001f2c <SYS_GetBatteryLevel>: +{ + 8001f2c: b508 push {r3, lr} + measuredLevel = ADC_ReadChannels(ADC_CHANNEL_VREFINT); + 8001f2e: 480d ldr r0, [pc, #52] ; (8001f64 <SYS_GetBatteryLevel+0x38>) + 8001f30: f7ff ffbc bl 8001eac <ADC_ReadChannels> + if (measuredLevel == 0) + 8001f34: b1a0 cbz r0, 8001f60 <SYS_GetBatteryLevel+0x34> + 8001f36: 4603 mov r3, r0 + if ((uint32_t)*VREFINT_CAL_ADDR != (uint32_t)0xFFFFU) + 8001f38: 4a0b ldr r2, [pc, #44] ; (8001f68 <SYS_GetBatteryLevel+0x3c>) + 8001f3a: f8b2 00aa ldrh.w r0, [r2, #170] ; 0xaa + 8001f3e: f64f 72ff movw r2, #65535 ; 0xffff + 8001f42: 4290 cmp r0, r2 + 8001f44: d007 beq.n 8001f56 <SYS_GetBatteryLevel+0x2a> + batteryLevelmV = __LL_ADC_CALC_VREFANALOG_VOLTAGE(measuredLevel, + 8001f46: f640 42e4 movw r2, #3300 ; 0xce4 + 8001f4a: fb02 f000 mul.w r0, r2, r0 + 8001f4e: fbb0 f0f3 udiv r0, r0, r3 + 8001f52: b280 uxth r0, r0 + 8001f54: e005 b.n 8001f62 <SYS_GetBatteryLevel+0x36> + batteryLevelmV = (VREFINT_CAL_VREF * 1510) / measuredLevel; + 8001f56: 4805 ldr r0, [pc, #20] ; (8001f6c <SYS_GetBatteryLevel+0x40>) + 8001f58: fbb0 f0f3 udiv r0, r0, r3 + 8001f5c: b280 uxth r0, r0 + 8001f5e: e000 b.n 8001f62 <SYS_GetBatteryLevel+0x36> + batteryLevelmV = 0; + 8001f60: 2000 movs r0, #0 +} + 8001f62: bd08 pop {r3, pc} + 8001f64: b4002000 .word 0xb4002000 + 8001f68: 1fff7500 .word 0x1fff7500 + 8001f6c: 004c08d8 .word 0x004c08d8 + +08001f70 <SYS_GetTemperatureLevel>: +{ + 8001f70: b510 push {r4, lr} + 8001f72: b082 sub sp, #8 + __IO int16_t temperatureDegreeC = 0; + 8001f74: 2300 movs r3, #0 + 8001f76: f8ad 3006 strh.w r3, [sp, #6] + uint16_t batteryLevelmV = SYS_GetBatteryLevel(); + 8001f7a: f7ff ffd7 bl 8001f2c <SYS_GetBatteryLevel> + 8001f7e: 4604 mov r4, r0 + measuredLevel = ADC_ReadChannels(ADC_CHANNEL_TEMPSENSOR); + 8001f80: 4821 ldr r0, [pc, #132] ; (8002008 <SYS_GetTemperatureLevel+0x98>) + 8001f82: f7ff ff93 bl 8001eac <ADC_ReadChannels> + if (((int32_t)*TEMPSENSOR_CAL2_ADDR - (int32_t)*TEMPSENSOR_CAL1_ADDR) != 0) + 8001f86: 4b21 ldr r3, [pc, #132] ; (800200c <SYS_GetTemperatureLevel+0x9c>) + 8001f88: f8b3 20c8 ldrh.w r2, [r3, #200] ; 0xc8 + 8001f8c: f8b3 10a8 ldrh.w r1, [r3, #168] ; 0xa8 + 8001f90: 428a cmp r2, r1 + 8001f92: d01d beq.n 8001fd0 <SYS_GetTemperatureLevel+0x60> + temperatureDegreeC = __LL_ADC_CALC_TEMPERATURE(batteryLevelmV, + 8001f94: fb00 f304 mul.w r3, r0, r4 + 8001f98: 089b lsrs r3, r3, #2 + 8001f9a: 481d ldr r0, [pc, #116] ; (8002010 <SYS_GetTemperatureLevel+0xa0>) + 8001f9c: fba0 0303 umull r0, r3, r0, r3 + 8001fa0: ebc1 1353 rsb r3, r1, r3, lsr #5 + 8001fa4: 2064 movs r0, #100 ; 0x64 + 8001fa6: fb00 f303 mul.w r3, r0, r3 + 8001faa: 1a52 subs r2, r2, r1 + 8001fac: fb93 f3f2 sdiv r3, r3, r2 + 8001fb0: 331e adds r3, #30 + 8001fb2: b21b sxth r3, r3 + 8001fb4: f8ad 3006 strh.w r3, [sp, #6] + temperatureDegreeC <<= 8; + 8001fb8: f8bd 3006 ldrh.w r3, [sp, #6] + 8001fbc: b21b sxth r3, r3 + 8001fbe: 021b lsls r3, r3, #8 + 8001fc0: b21b sxth r3, r3 + 8001fc2: f8ad 3006 strh.w r3, [sp, #6] + return (int16_t) temperatureDegreeC; + 8001fc6: f8bd 0006 ldrh.w r0, [sp, #6] +} + 8001fca: b200 sxth r0, r0 + 8001fcc: b002 add sp, #8 + 8001fce: bd10 pop {r4, pc} + temperatureDegreeC = __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS(TEMPSENSOR_TYP_AVGSLOPE, + 8001fd0: fb04 f000 mul.w r0, r4, r0 + 8001fd4: 4b0f ldr r3, [pc, #60] ; (8002014 <SYS_GetTemperatureLevel+0xa4>) + 8001fd6: fba3 2300 umull r2, r3, r3, r0 + 8001fda: 1ac4 subs r4, r0, r3 + 8001fdc: eb03 0354 add.w r3, r3, r4, lsr #1 + 8001fe0: 0adb lsrs r3, r3, #11 + 8001fe2: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8001fe6: fb02 f303 mul.w r3, r2, r3 + 8001fea: f5a3 2339 sub.w r3, r3, #757760 ; 0xb9000 + 8001fee: f5a3 630c sub.w r3, r3, #2240 ; 0x8c0 + 8001ff2: 4a09 ldr r2, [pc, #36] ; (8002018 <SYS_GetTemperatureLevel+0xa8>) + 8001ff4: fb82 1203 smull r1, r2, r2, r3 + 8001ff8: 17db asrs r3, r3, #31 + 8001ffa: ebc3 23a2 rsb r3, r3, r2, asr #10 + 8001ffe: 331e adds r3, #30 + 8002000: b21b sxth r3, r3 + 8002002: f8ad 3006 strh.w r3, [sp, #6] + 8002006: e7d7 b.n 8001fb8 <SYS_GetTemperatureLevel+0x48> + 8002008: b0001000 .word 0xb0001000 + 800200c: 1fff7500 .word 0x1fff7500 + 8002010: 09ee009f .word 0x09ee009f + 8002014: 00100101 .word 0x00100101 + 8002018: 68db8bad .word 0x68db8bad + +0800201c <cmox_ll_init>: + * @brief CMOX library low level initialization + * @param pArg User defined parameter that is transmitted from initialize service + * @retval Initialization status: @ref CMOX_INIT_SUCCESS / @ref CMOX_INIT_FAIL + */ +cmox_init_retval_t cmox_ll_init(void *pArg) +{ + 800201c: b082 sub sp, #8 + CLEAR_BIT(RCC->AHB1RSTR, Periphs); + 800201e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002022: 6a9a ldr r2, [r3, #40] ; 0x28 + 8002024: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 8002028: 629a str r2, [r3, #40] ; 0x28 + SET_BIT(RCC->AHB1ENR, Periphs); + 800202a: 6c9a ldr r2, [r3, #72] ; 0x48 + 800202c: f442 5280 orr.w r2, r2, #4096 ; 0x1000 + 8002030: 649a str r2, [r3, #72] ; 0x48 + tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 8002032: 6c9b ldr r3, [r3, #72] ; 0x48 + 8002034: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 8002038: 9301 str r3, [sp, #4] + (void)tmpreg; + 800203a: 9b01 ldr r3, [sp, #4] + (void)pArg; + /* Ensure CRC is enabled for cryptographic processing */ + __HAL_RCC_CRC_RELEASE_RESET(); + __HAL_RCC_CRC_CLK_ENABLE(); + return CMOX_INIT_SUCCESS; +} + 800203c: 2000 movs r0, #0 + 800203e: b002 add sp, #8 + 8002040: 4770 bx lr + +08002042 <MX_DMA_Init>: + +/** + * Enable DMA controller clock + */ +void MX_DMA_Init(void) +{ + 8002042: b500 push {lr} + 8002044: b085 sub sp, #20 + SET_BIT(RCC->AHB1ENR, Periphs); + 8002046: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800204a: 6c9a ldr r2, [r3, #72] ; 0x48 + 800204c: f042 0204 orr.w r2, r2, #4 + 8002050: 649a str r2, [r3, #72] ; 0x48 + tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 8002052: 6c9a ldr r2, [r3, #72] ; 0x48 + 8002054: f002 0204 and.w r2, r2, #4 + 8002058: 9203 str r2, [sp, #12] + (void)tmpreg; + 800205a: 9a03 ldr r2, [sp, #12] + SET_BIT(RCC->AHB1ENR, Periphs); + 800205c: 6c9a ldr r2, [r3, #72] ; 0x48 + 800205e: f042 0201 orr.w r2, r2, #1 + 8002062: 649a str r2, [r3, #72] ; 0x48 + tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 8002064: 6c9a ldr r2, [r3, #72] ; 0x48 + 8002066: f002 0201 and.w r2, r2, #1 + 800206a: 9202 str r2, [sp, #8] + (void)tmpreg; + 800206c: 9a02 ldr r2, [sp, #8] + SET_BIT(RCC->AHB1ENR, Periphs); + 800206e: 6c9a ldr r2, [r3, #72] ; 0x48 + 8002070: f042 0202 orr.w r2, r2, #2 + 8002074: 649a str r2, [r3, #72] ; 0x48 + tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 8002076: 6c9b ldr r3, [r3, #72] ; 0x48 + 8002078: f003 0302 and.w r3, r3, #2 + 800207c: 9301 str r3, [sp, #4] + (void)tmpreg; + 800207e: 9b01 ldr r3, [sp, #4] + __HAL_RCC_DMA1_CLK_ENABLE(); + __HAL_RCC_DMA2_CLK_ENABLE(); + /* DMA interrupt init */ + + // **** TIM1_CH2 WS2812B @ PA-9 + HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); + 8002080: 2200 movs r2, #0 + 8002082: 4611 mov r1, r2 + 8002084: 200b movs r0, #11 + 8002086: f006 fdc9 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); + 800208a: 200b movs r0, #11 + 800208c: f006 fdfe bl 8008c8c <HAL_NVIC_EnableIRQ> + + // **** SPI1 + /* DMA1_Channel2_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0); + 8002090: 2200 movs r2, #0 + 8002092: 4611 mov r1, r2 + 8002094: 200c movs r0, #12 + 8002096: f006 fdc1 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn); + 800209a: 200c movs r0, #12 + 800209c: f006 fdf6 bl 8008c8c <HAL_NVIC_EnableIRQ> + /* DMA1_Channel3_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 0, 0); + 80020a0: 2200 movs r2, #0 + 80020a2: 4611 mov r1, r2 + 80020a4: 200d movs r0, #13 + 80020a6: f006 fdb9 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn); + 80020aa: 200d movs r0, #13 + 80020ac: f006 fdee bl 8008c8c <HAL_NVIC_EnableIRQ> + // **** SPI1 + + // **** I2C2 + /* DMA1_Channel4_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0); + 80020b0: 2200 movs r2, #0 + 80020b2: 4611 mov r1, r2 + 80020b4: 200e movs r0, #14 + 80020b6: f006 fdb1 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn); + 80020ba: 200e movs r0, #14 + 80020bc: f006 fde6 bl 8008c8c <HAL_NVIC_EnableIRQ> + /* DMA1_Channel5_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0); + 80020c0: 2200 movs r2, #0 + 80020c2: 4611 mov r1, r2 + 80020c4: 200f movs r0, #15 + 80020c6: f006 fda9 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); + 80020ca: 200f movs r0, #15 + 80020cc: f006 fdde bl 8008c8c <HAL_NVIC_EnableIRQ> + // **** I2C2 + + // **** USART2 + /* DMA1_Channel6_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 0, 0); + 80020d0: 2200 movs r2, #0 + 80020d2: 4611 mov r1, r2 + 80020d4: 2010 movs r0, #16 + 80020d6: f006 fda1 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn); + 80020da: 2010 movs r0, #16 + 80020dc: f006 fdd6 bl 8008c8c <HAL_NVIC_EnableIRQ> + /* DMA1_Channel7_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel7_IRQn, 0, 0); + 80020e0: 2200 movs r2, #0 + 80020e2: 4611 mov r1, r2 + 80020e4: 2011 movs r0, #17 + 80020e6: f006 fd99 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(DMA1_Channel7_IRQn); + 80020ea: 2011 movs r0, #17 + 80020ec: f006 fdce bl 8008c8c <HAL_NVIC_EnableIRQ> + // **** USART2 + + /* DMA2_Channel1_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA2_Channel1_IRQn, 0, 0); + 80020f0: 2200 movs r2, #0 + 80020f2: 4611 mov r1, r2 + 80020f4: 2036 movs r0, #54 ; 0x36 + 80020f6: f006 fd91 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(DMA2_Channel1_IRQn); + 80020fa: 2036 movs r0, #54 ; 0x36 + 80020fc: f006 fdc6 bl 8008c8c <HAL_NVIC_EnableIRQ> + + +} + 8002100: b005 add sp, #20 + 8002102: f85d fb04 ldr.w pc, [sp], #4 + +08002106 <FLASH_IF_INT_IsEmpty>: + int32_t status = FLASH_IF_MEM_EMPTY; + /* USER CODE BEGIN FLASH_IF_INT_IsEmpty_1 */ + + /* USER CODE END FLASH_IF_INT_IsEmpty_1 */ + uint32_t index; + for (index = 0; index < uLength; index += 8) + 8002106: 2300 movs r3, #0 + 8002108: e001 b.n 800210e <FLASH_IF_INT_IsEmpty+0x8> + if (*(uint64_t *)pStart != UINT64_MAX) + { + status = FLASH_IF_MEM_NOT_EMPTY; + break; + } + pStart = (void *)((uint32_t)pStart + 8U); + 800210a: 3008 adds r0, #8 + for (index = 0; index < uLength; index += 8) + 800210c: 3308 adds r3, #8 + 800210e: 428b cmp r3, r1 + 8002110: d20a bcs.n 8002128 <FLASH_IF_INT_IsEmpty+0x22> + if (*(uint64_t *)pStart != UINT64_MAX) + 8002112: 6842 ldr r2, [r0, #4] + 8002114: f8d0 c000 ldr.w ip, [r0] + 8002118: f1b2 3fff cmp.w r2, #4294967295 + 800211c: bf08 it eq + 800211e: f1bc 3fff cmpeq.w ip, #4294967295 + 8002122: d0f2 beq.n 800210a <FLASH_IF_INT_IsEmpty+0x4> + status = FLASH_IF_MEM_NOT_EMPTY; + 8002124: 2001 movs r0, #1 + } + /* USER CODE BEGIN FLASH_IF_INT_IsEmpty_2 */ + + /* USER CODE END FLASH_IF_INT_IsEmpty_2 */ + return status; +} + 8002126: 4770 bx lr + int32_t status = FLASH_IF_MEM_EMPTY; + 8002128: 2000 movs r0, #0 + 800212a: 4770 bx lr + +0800212c <FLASH_IF_INT_Read>: + if ((pDestination == NULL) || (pSource == NULL)) + 800212c: b130 cbz r0, 800213c <FLASH_IF_INT_Read+0x10> +{ + 800212e: b508 push {r3, lr} + if ((pDestination == NULL) || (pSource == NULL)) + 8002130: b139 cbz r1, 8002142 <FLASH_IF_INT_Read+0x16> + UTIL_MEM_cpy_8(pDestination, pSource, uLength); + 8002132: b292 uxth r2, r2 + 8002134: f014 fe16 bl 8016d64 <UTIL_MEM_cpy_8> + return ret_status; + 8002138: 2000 movs r0, #0 +} + 800213a: bd08 pop {r3, pc} + return FLASH_IF_PARAM_ERROR; + 800213c: f06f 0005 mvn.w r0, #5 +} + 8002140: 4770 bx lr + return FLASH_IF_PARAM_ERROR; + 8002142: f06f 0005 mvn.w r0, #5 + 8002146: e7f8 b.n 800213a <FLASH_IF_INT_Read+0xe> + +08002148 <FLASH_IF_INT_Clear_Error>: + +static FLASH_IF_StatusTypedef FLASH_IF_INT_Clear_Error(void) +{ + 8002148: b508 push {r3, lr} + FLASH_IF_StatusTypedef ret_status = FLASH_IF_LOCK_ERROR; + /* USER CODE BEGIN FLASH_IF_INT_Clear_Error_1 */ + + /* USER CODE END FLASH_IF_INT_Clear_Error_1 */ + /* Unlock the Program memory */ + if (HAL_FLASH_Unlock() == HAL_OK) + 800214a: f007 f85b bl 8009204 <HAL_FLASH_Unlock> + 800214e: b978 cbnz r0, 8002170 <FLASH_IF_INT_Clear_Error+0x28> + { + /* Clear all FLASH flags */ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS); + 8002150: 4b09 ldr r3, [pc, #36] ; (8002178 <FLASH_IF_INT_Clear_Error+0x30>) + 8002152: 699a ldr r2, [r3, #24] + 8002154: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000 + 8002158: 619a str r2, [r3, #24] + 800215a: f24c 32fa movw r2, #50170 ; 0xc3fa + 800215e: 611a str r2, [r3, #16] + /* Unlock the Program memory */ + if (HAL_FLASH_Lock() == HAL_OK) + 8002160: f007 f868 bl 8009234 <HAL_FLASH_Lock> + 8002164: b908 cbnz r0, 800216a <FLASH_IF_INT_Clear_Error+0x22> + { + ret_status = FLASH_IF_OK; + 8002166: 2000 movs r0, #0 + } + /* USER CODE BEGIN FLASH_IF_INT_Clear_Error_2 */ + + /* USER CODE END FLASH_IF_INT_Clear_Error_2 */ + return ret_status; +} + 8002168: bd08 pop {r3, pc} + FLASH_IF_StatusTypedef ret_status = FLASH_IF_LOCK_ERROR; + 800216a: f06f 0004 mvn.w r0, #4 + 800216e: e7fb b.n 8002168 <FLASH_IF_INT_Clear_Error+0x20> + 8002170: f06f 0004 mvn.w r0, #4 + 8002174: e7f8 b.n 8002168 <FLASH_IF_INT_Clear_Error+0x20> + 8002176: bf00 nop + 8002178: 58004000 .word 0x58004000 + +0800217c <FLASH_IF_INT_Erase>: +{ + 800217c: b570 push {r4, r5, r6, lr} + 800217e: b084 sub sp, #16 + uint32_t page_error = 0U; + 8002180: 2300 movs r3, #0 + 8002182: 9303 str r3, [sp, #12] + if (pStart == NULL) + 8002184: 2800 cmp r0, #0 + 8002186: d039 beq.n 80021fc <FLASH_IF_INT_Erase+0x80> + 8002188: 460e mov r6, r1 + 800218a: 4604 mov r4, r0 + ret_status = FLASH_IF_INT_Clear_Error(); + 800218c: f7ff ffdc bl 8002148 <FLASH_IF_INT_Clear_Error> + if (ret_status == FLASH_IF_OK) + 8002190: 4605 mov r5, r0 + 8002192: b110 cbz r0, 800219a <FLASH_IF_INT_Erase+0x1e> +} + 8002194: 4628 mov r0, r5 + 8002196: b004 add sp, #16 + 8002198: bd70 pop {r4, r5, r6, pc} + if (HAL_FLASH_Unlock() == HAL_OK) + 800219a: f007 f833 bl 8009204 <HAL_FLASH_Unlock> + 800219e: bb80 cbnz r0, 8002202 <FLASH_IF_INT_Erase+0x86> + erase_init.TypeErase = FLASH_TYPEERASE_PAGES; + 80021a0: 2302 movs r3, #2 + 80021a2: 9300 str r3, [sp, #0] + erase_init.Page = PAGE_INDEX(uStart); + 80021a4: f104 4378 add.w r3, r4, #4160749568 ; 0xf8000000 + 80021a8: 4817 ldr r0, [pc, #92] ; (8002208 <FLASH_IF_INT_Erase+0x8c>) + 80021aa: f8d0 15e0 ldr.w r1, [r0, #1504] ; 0x5e0 + 80021ae: 4a17 ldr r2, [pc, #92] ; (800220c <FLASH_IF_INT_Erase+0x90>) + 80021b0: ea02 2181 and.w r1, r2, r1, lsl #10 + 80021b4: fbb3 fcf1 udiv ip, r3, r1 + 80021b8: fb01 331c mls r3, r1, ip, r3 + 80021bc: 0adb lsrs r3, r3, #11 + 80021be: 9301 str r3, [sp, #4] + erase_init.NbPages = PAGE_INDEX(uStart + uLength - 1U) - erase_init.Page + 1U; + 80021c0: 19a1 adds r1, r4, r6 + 80021c2: f101 4178 add.w r1, r1, #4160749568 ; 0xf8000000 + 80021c6: 3901 subs r1, #1 + 80021c8: f8d0 05e0 ldr.w r0, [r0, #1504] ; 0x5e0 + 80021cc: ea02 2280 and.w r2, r2, r0, lsl #10 + 80021d0: fbb1 f0f2 udiv r0, r1, r2 + 80021d4: fb02 1110 mls r1, r2, r0, r1 + 80021d8: ebc3 23d1 rsb r3, r3, r1, lsr #11 + 80021dc: 3301 adds r3, #1 + 80021de: 9302 str r3, [sp, #8] + hal_status = HAL_FLASHEx_Erase(&erase_init, &page_error); + 80021e0: a903 add r1, sp, #12 + 80021e2: 4668 mov r0, sp + 80021e4: f007 f8f2 bl 80093cc <HAL_FLASHEx_Erase> + if (hal_status != HAL_OK) + 80021e8: b118 cbz r0, 80021f2 <FLASH_IF_INT_Erase+0x76> + ret_status = (hal_status == HAL_BUSY) ? FLASH_IF_BUSY : FLASH_IF_ERASE_ERROR; + 80021ea: 2802 cmp r0, #2 + 80021ec: d004 beq.n 80021f8 <FLASH_IF_INT_Erase+0x7c> + 80021ee: f06f 0501 mvn.w r5, #1 + HAL_FLASH_Lock(); + 80021f2: f007 f81f bl 8009234 <HAL_FLASH_Lock> + 80021f6: e7cd b.n 8002194 <FLASH_IF_INT_Erase+0x18> + ret_status = (hal_status == HAL_BUSY) ? FLASH_IF_BUSY : FLASH_IF_ERASE_ERROR; + 80021f8: 2501 movs r5, #1 + 80021fa: e7fa b.n 80021f2 <FLASH_IF_INT_Erase+0x76> + return FLASH_IF_PARAM_ERROR; + 80021fc: f06f 0505 mvn.w r5, #5 + 8002200: e7c8 b.n 8002194 <FLASH_IF_INT_Erase+0x18> + ret_status = FLASH_IF_LOCK_ERROR; + 8002202: f06f 0504 mvn.w r5, #4 + 8002206: e7c5 b.n 8002194 <FLASH_IF_INT_Erase+0x18> + 8002208: 1fff7000 .word 0x1fff7000 + 800220c: 03fffc00 .word 0x03fffc00 + +08002210 <FLASH_IF_INT_Write>: +{ + 8002210: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8002214: b089 sub sp, #36 ; 0x24 + 8002216: 9003 str r0, [sp, #12] + 8002218: 9204 str r2, [sp, #16] + uint32_t uSource = (uint32_t)pSource; + 800221a: 9101 str r1, [sp, #4] + if ((pDestination == NULL) || (pSource == NULL) || !IS_ADDR_ALIGNED_64BITS(uLength) + 800221c: 2800 cmp r0, #0 + 800221e: f000 80a9 beq.w 8002374 <FLASH_IF_INT_Write+0x164> + 8002222: 4683 mov fp, r0 + 8002224: 2900 cmp r1, #0 + 8002226: f000 80a9 beq.w 800237c <FLASH_IF_INT_Write+0x16c> + 800222a: f012 0f07 tst.w r2, #7 + 800222e: f040 80a9 bne.w 8002384 <FLASH_IF_INT_Write+0x174> + || !IS_ADDR_ALIGNED_64BITS((uint32_t)pDestination)) + 8002232: f010 0307 ands.w r3, r0, #7 + 8002236: 9305 str r3, [sp, #20] + 8002238: f040 80a8 bne.w 800238c <FLASH_IF_INT_Write+0x17c> + ret_status = FLASH_IF_INT_Clear_Error(); + 800223c: f7ff ff84 bl 8002148 <FLASH_IF_INT_Clear_Error> + if (ret_status == FLASH_IF_OK) + 8002240: 9002 str r0, [sp, #8] + 8002242: b118 cbz r0, 800224c <FLASH_IF_INT_Write+0x3c> +} + 8002244: 9802 ldr r0, [sp, #8] + 8002246: b009 add sp, #36 ; 0x24 + 8002248: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + if (HAL_FLASH_Unlock() == HAL_OK) + 800224c: f006 ffda bl 8009204 <HAL_FLASH_Unlock> + 8002250: 2800 cmp r0, #0 + 8002252: f040 809f bne.w 8002394 <FLASH_IF_INT_Write+0x184> + start_page_index = PAGE_INDEX(uDest); + 8002256: 9c03 ldr r4, [sp, #12] + 8002258: f104 4278 add.w r2, r4, #4160749568 ; 0xf8000000 + 800225c: 4b4f ldr r3, [pc, #316] ; (800239c <FLASH_IF_INT_Write+0x18c>) + 800225e: f8d3 35e0 ldr.w r3, [r3, #1504] ; 0x5e0 + 8002262: 494f ldr r1, [pc, #316] ; (80023a0 <FLASH_IF_INT_Write+0x190>) + 8002264: ea01 2183 and.w r1, r1, r3, lsl #10 + 8002268: fbb2 f3f1 udiv r3, r2, r1 + 800226c: fb01 2213 mls r2, r1, r3, r2 + 8002270: 0ad3 lsrs r3, r2, #11 + 8002272: 9306 str r3, [sp, #24] + number_pages = PAGE_INDEX(uDest + uLength - 1U) - start_page_index + 1U; + 8002274: 9b04 ldr r3, [sp, #16] + 8002276: 18e3 adds r3, r4, r3 + 8002278: f103 4378 add.w r3, r3, #4160749568 ; 0xf8000000 + 800227c: 3b01 subs r3, #1 + 800227e: fbb3 f0f1 udiv r0, r3, r1 + 8002282: fb01 3310 mls r3, r1, r0, r3 + 8002286: 0adb lsrs r3, r3, #11 + 8002288: eba3 23d2 sub.w r3, r3, r2, lsr #11 + 800228c: 3301 adds r3, #1 + 800228e: 9307 str r3, [sp, #28] + if (number_pages > 1) + 8002290: 2b01 cmp r3, #1 + 8002292: d906 bls.n 80022a2 <FLASH_IF_INT_Write+0x92> + length = FLASH_PAGE_SIZE - (uDest % FLASH_PAGE_SIZE); + 8002294: f3c4 090a ubfx r9, r4, #0, #11 + 8002298: f5c9 6900 rsb r9, r9, #2048 ; 0x800 + ret_status = FLASH_IF_WRITE_ERROR; + 800229c: f8dd a018 ldr.w sl, [sp, #24] + 80022a0: e02f b.n 8002302 <FLASH_IF_INT_Write+0xf2> + uint32_t length = uLength; + 80022a2: f8dd 9010 ldr.w r9, [sp, #16] + 80022a6: e7f9 b.n 800229c <FLASH_IF_INT_Write+0x8c> + current_length = length; + 80022a8: 46c8 mov r8, r9 + current_source = uSource; + 80022aa: 9f01 ldr r7, [sp, #4] + current_dest = uDest; + 80022ac: 465c mov r4, fp + for (address_offset = 0U; address_offset < current_length; address_offset += 8U) + 80022ae: 9d05 ldr r5, [sp, #20] + 80022b0: 4545 cmp r5, r8 + 80022b2: d215 bcs.n 80022e0 <FLASH_IF_INT_Write+0xd0> + *((uint64_t *)(current_source + address_offset))) == HAL_OK) + 80022b4: 19ee adds r6, r5, r7 + if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, current_dest, + 80022b6: e9d6 2300 ldrd r2, r3, [r6] + 80022ba: 4621 mov r1, r4 + 80022bc: 2001 movs r0, #1 + 80022be: f006 fffd bl 80092bc <HAL_FLASH_Program> + 80022c2: b950 cbnz r0, 80022da <FLASH_IF_INT_Write+0xca> + if (*(uint64_t *)current_dest != *(uint64_t *)(current_source + address_offset)) + 80022c4: 6820 ldr r0, [r4, #0] + 80022c6: 6862 ldr r2, [r4, #4] + 80022c8: 59e9 ldr r1, [r5, r7] + 80022ca: 6873 ldr r3, [r6, #4] + 80022cc: 429a cmp r2, r3 + 80022ce: bf08 it eq + 80022d0: 4288 cmpeq r0, r1 + 80022d2: d141 bne.n 8002358 <FLASH_IF_INT_Write+0x148> + current_dest = current_dest + 8U; + 80022d4: 3408 adds r4, #8 + for (address_offset = 0U; address_offset < current_length; address_offset += 8U) + 80022d6: 3508 adds r5, #8 + 80022d8: e7ea b.n 80022b0 <FLASH_IF_INT_Write+0xa0> + ret_status = FLASH_IF_WRITE_ERROR; + 80022da: f06f 0303 mvn.w r3, #3 + 80022de: 9302 str r3, [sp, #8] + if (ret_status != FLASH_IF_OK) + 80022e0: 9b02 ldr r3, [sp, #8] + 80022e2: 2b00 cmp r3, #0 + 80022e4: d13f bne.n 8002366 <FLASH_IF_INT_Write+0x156> + uDest += length; + 80022e6: 44cb add fp, r9 + uSource += length; + 80022e8: 9b01 ldr r3, [sp, #4] + 80022ea: 444b add r3, r9 + 80022ec: 9301 str r3, [sp, #4] + length = ((uLength - length) > FLASH_PAGE_SIZE) ? FLASH_PAGE_SIZE : uLength - length; + 80022ee: 9b04 ldr r3, [sp, #16] + 80022f0: eba3 0909 sub.w r9, r3, r9 + 80022f4: f5b9 6f00 cmp.w r9, #2048 ; 0x800 + 80022f8: bf28 it cs + 80022fa: f44f 6900 movcs.w r9, #2048 ; 0x800 + for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) + 80022fe: f10a 0a01 add.w sl, sl, #1 + 8002302: 9b06 ldr r3, [sp, #24] + 8002304: 9a07 ldr r2, [sp, #28] + 8002306: 4413 add r3, r2 + 8002308: 4553 cmp r3, sl + 800230a: d92c bls.n 8002366 <FLASH_IF_INT_Write+0x156> + page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; + 800230c: f50a 3480 add.w r4, sl, #65536 ; 0x10000 + 8002310: 02e4 lsls r4, r4, #11 + if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) + 8002312: 4649 mov r1, r9 + 8002314: 9803 ldr r0, [sp, #12] + 8002316: f7ff fef6 bl 8002106 <FLASH_IF_INT_IsEmpty> + 800231a: 2800 cmp r0, #0 + 800231c: d0c4 beq.n 80022a8 <FLASH_IF_INT_Write+0x98> + if (pAllocatedBuffer == NULL) + 800231e: 4b21 ldr r3, [pc, #132] ; (80023a4 <FLASH_IF_INT_Write+0x194>) + 8002320: 6818 ldr r0, [r3, #0] + 8002322: b1e8 cbz r0, 8002360 <FLASH_IF_INT_Write+0x150> + FLASH_IF_INT_Read(pAllocatedBuffer, (const void *)page_address, FLASH_PAGE_SIZE); + 8002324: f44f 6200 mov.w r2, #2048 ; 0x800 + 8002328: 4621 mov r1, r4 + 800232a: f7ff feff bl 800212c <FLASH_IF_INT_Read> + UTIL_MEM_cpy_8(&pAllocatedBuffer[uDest % FLASH_PAGE_SIZE], (const void *)uSource, length); + 800232e: 4b1d ldr r3, [pc, #116] ; (80023a4 <FLASH_IF_INT_Write+0x194>) + 8002330: 681b ldr r3, [r3, #0] + 8002332: f3cb 000a ubfx r0, fp, #0, #11 + 8002336: fa1f f289 uxth.w r2, r9 + 800233a: 9901 ldr r1, [sp, #4] + 800233c: 4418 add r0, r3 + 800233e: f014 fd11 bl 8016d64 <UTIL_MEM_cpy_8> + if (FLASH_IF_INT_Erase((void *)page_address, FLASH_PAGE_SIZE) != FLASH_IF_OK) + 8002342: f44f 6100 mov.w r1, #2048 ; 0x800 + 8002346: 4620 mov r0, r4 + 8002348: f7ff ff18 bl 800217c <FLASH_IF_INT_Erase> + 800234c: b970 cbnz r0, 800236c <FLASH_IF_INT_Write+0x15c> + current_source = (uint32_t)pAllocatedBuffer; + 800234e: 4b15 ldr r3, [pc, #84] ; (80023a4 <FLASH_IF_INT_Write+0x194>) + 8002350: 681f ldr r7, [r3, #0] + current_length = FLASH_PAGE_SIZE; + 8002352: f44f 6800 mov.w r8, #2048 ; 0x800 + 8002356: e7aa b.n 80022ae <FLASH_IF_INT_Write+0x9e> + ret_status = FLASH_IF_WRITE_ERROR; + 8002358: f06f 0303 mvn.w r3, #3 + 800235c: 9302 str r3, [sp, #8] + 800235e: e7bf b.n 80022e0 <FLASH_IF_INT_Write+0xd0> + ret_status = FLASH_IF_PARAM_ERROR; + 8002360: f06f 0305 mvn.w r3, #5 + 8002364: 9302 str r3, [sp, #8] + HAL_FLASH_Lock(); + 8002366: f006 ff65 bl 8009234 <HAL_FLASH_Lock> + 800236a: e76b b.n 8002244 <FLASH_IF_INT_Write+0x34> + ret_status = FLASH_IF_ERASE_ERROR; + 800236c: f06f 0301 mvn.w r3, #1 + 8002370: 9302 str r3, [sp, #8] + 8002372: e7f8 b.n 8002366 <FLASH_IF_INT_Write+0x156> + return FLASH_IF_PARAM_ERROR; + 8002374: f06f 0305 mvn.w r3, #5 + 8002378: 9302 str r3, [sp, #8] + 800237a: e763 b.n 8002244 <FLASH_IF_INT_Write+0x34> + 800237c: f06f 0305 mvn.w r3, #5 + 8002380: 9302 str r3, [sp, #8] + 8002382: e75f b.n 8002244 <FLASH_IF_INT_Write+0x34> + 8002384: f06f 0305 mvn.w r3, #5 + 8002388: 9302 str r3, [sp, #8] + 800238a: e75b b.n 8002244 <FLASH_IF_INT_Write+0x34> + 800238c: f06f 0305 mvn.w r3, #5 + 8002390: 9302 str r3, [sp, #8] + 8002392: e757 b.n 8002244 <FLASH_IF_INT_Write+0x34> + ret_status = FLASH_IF_LOCK_ERROR; + 8002394: f06f 0304 mvn.w r3, #4 + 8002398: 9302 str r3, [sp, #8] + 800239a: e753 b.n 8002244 <FLASH_IF_INT_Write+0x34> + 800239c: 1fff7000 .word 0x1fff7000 + 80023a0: 03fffc00 .word 0x03fffc00 + 80023a4: 20000950 .word 0x20000950 + +080023a8 <FLASH_IF_Init>: + pAllocatedBuffer = (uint8_t *)pAllocRamBuffer; + 80023a8: 4b01 ldr r3, [pc, #4] ; (80023b0 <FLASH_IF_Init+0x8>) + 80023aa: 6018 str r0, [r3, #0] +} + 80023ac: 2000 movs r0, #0 + 80023ae: 4770 bx lr + 80023b0: 20000950 .word 0x20000950 + +080023b4 <FLASH_IF_Write>: + if (IS_FLASH_MAIN_MEM_ADDRESS((uint32_t)pDestination)) + 80023b4: f1b0 6f00 cmp.w r0, #134217728 ; 0x8000000 + 80023b8: d30e bcc.n 80023d8 <FLASH_IF_Write+0x24> +{ + 80023ba: b510 push {r4, lr} + if (IS_FLASH_MAIN_MEM_ADDRESS((uint32_t)pDestination)) + 80023bc: 4b09 ldr r3, [pc, #36] ; (80023e4 <FLASH_IF_Write+0x30>) + 80023be: f8d3 45e0 ldr.w r4, [r3, #1504] ; 0x5e0 + 80023c2: 4b09 ldr r3, [pc, #36] ; (80023e8 <FLASH_IF_Write+0x34>) + 80023c4: ea03 2384 and.w r3, r3, r4, lsl #10 + 80023c8: f103 6300 add.w r3, r3, #134217728 ; 0x8000000 + 80023cc: 3b01 subs r3, #1 + 80023ce: 4298 cmp r0, r3 + 80023d0: d805 bhi.n 80023de <FLASH_IF_Write+0x2a> + ret_status = FLASH_IF_INT_Write(pDestination, pSource, uLength); + 80023d2: f7ff ff1d bl 8002210 <FLASH_IF_INT_Write> +} + 80023d6: bd10 pop {r4, pc} + FLASH_IF_StatusTypedef ret_status = FLASH_IF_ERROR; + 80023d8: f04f 30ff mov.w r0, #4294967295 +} + 80023dc: 4770 bx lr + FLASH_IF_StatusTypedef ret_status = FLASH_IF_ERROR; + 80023de: f04f 30ff mov.w r0, #4294967295 + 80023e2: e7f8 b.n 80023d6 <FLASH_IF_Write+0x22> + 80023e4: 1fff7000 .word 0x1fff7000 + 80023e8: 03fffc00 .word 0x03fffc00 + +080023ec <FLASH_IF_Read>: + if (IS_FLASH_MAIN_MEM_ADDRESS((uint32_t)pSource)) + 80023ec: f1b1 6f00 cmp.w r1, #134217728 ; 0x8000000 + 80023f0: d30e bcc.n 8002410 <FLASH_IF_Read+0x24> +{ + 80023f2: b510 push {r4, lr} + if (IS_FLASH_MAIN_MEM_ADDRESS((uint32_t)pSource)) + 80023f4: 4b09 ldr r3, [pc, #36] ; (800241c <FLASH_IF_Read+0x30>) + 80023f6: f8d3 45e0 ldr.w r4, [r3, #1504] ; 0x5e0 + 80023fa: 4b09 ldr r3, [pc, #36] ; (8002420 <FLASH_IF_Read+0x34>) + 80023fc: ea03 2384 and.w r3, r3, r4, lsl #10 + 8002400: f103 6300 add.w r3, r3, #134217728 ; 0x8000000 + 8002404: 3b01 subs r3, #1 + 8002406: 4299 cmp r1, r3 + 8002408: d805 bhi.n 8002416 <FLASH_IF_Read+0x2a> + ret_status = FLASH_IF_INT_Read(pDestination, pSource, uLength); + 800240a: f7ff fe8f bl 800212c <FLASH_IF_INT_Read> +} + 800240e: bd10 pop {r4, pc} + FLASH_IF_StatusTypedef ret_status = FLASH_IF_ERROR; + 8002410: f04f 30ff mov.w r0, #4294967295 +} + 8002414: 4770 bx lr + FLASH_IF_StatusTypedef ret_status = FLASH_IF_ERROR; + 8002416: f04f 30ff mov.w r0, #4294967295 + 800241a: e7f8 b.n 800240e <FLASH_IF_Read+0x22> + 800241c: 1fff7000 .word 0x1fff7000 + 8002420: 03fffc00 .word 0x03fffc00 + +08002424 <FLASH_IF_Erase>: + if (IS_FLASH_MAIN_MEM_ADDRESS((uint32_t)pStart)) + 8002424: f1b0 6f00 cmp.w r0, #134217728 ; 0x8000000 + 8002428: d30e bcc.n 8002448 <FLASH_IF_Erase+0x24> +{ + 800242a: b508 push {r3, lr} + if (IS_FLASH_MAIN_MEM_ADDRESS((uint32_t)pStart)) + 800242c: 4b09 ldr r3, [pc, #36] ; (8002454 <FLASH_IF_Erase+0x30>) + 800242e: f8d3 25e0 ldr.w r2, [r3, #1504] ; 0x5e0 + 8002432: 4b09 ldr r3, [pc, #36] ; (8002458 <FLASH_IF_Erase+0x34>) + 8002434: ea03 2382 and.w r3, r3, r2, lsl #10 + 8002438: f103 6300 add.w r3, r3, #134217728 ; 0x8000000 + 800243c: 3b01 subs r3, #1 + 800243e: 4298 cmp r0, r3 + 8002440: d805 bhi.n 800244e <FLASH_IF_Erase+0x2a> + ret_status = FLASH_IF_INT_Erase(pStart, uLength); + 8002442: f7ff fe9b bl 800217c <FLASH_IF_INT_Erase> +} + 8002446: bd08 pop {r3, pc} + FLASH_IF_StatusTypedef ret_status = FLASH_IF_ERROR; + 8002448: f04f 30ff mov.w r0, #4294967295 +} + 800244c: 4770 bx lr + FLASH_IF_StatusTypedef ret_status = FLASH_IF_ERROR; + 800244e: f04f 30ff mov.w r0, #4294967295 + 8002452: e7f8 b.n 8002446 <FLASH_IF_Erase+0x22> + 8002454: 1fff7000 .word 0x1fff7000 + 8002458: 03fffc00 .word 0x03fffc00 + +0800245c <MX_GPIO_Init>: + * Output + * EVENT_OUT + * EXTI +*/ +void MX_GPIO_Init(void) +{ + 800245c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8002460: b088 sub sp, #32 + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8002462: 2400 movs r4, #0 + 8002464: 9403 str r4, [sp, #12] + 8002466: 9404 str r4, [sp, #16] + 8002468: 9405 str r4, [sp, #20] + 800246a: 9406 str r4, [sp, #24] + 800246c: 9407 str r4, [sp, #28] + SET_BIT(RCC->AHB2ENR, Periphs); + 800246e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002472: 6cda ldr r2, [r3, #76] ; 0x4c + 8002474: f042 0201 orr.w r2, r2, #1 + 8002478: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 800247a: 6cda ldr r2, [r3, #76] ; 0x4c + 800247c: f002 0201 and.w r2, r2, #1 + 8002480: 9202 str r2, [sp, #8] + (void)tmpreg; + 8002482: 9a02 ldr r2, [sp, #8] + SET_BIT(RCC->AHB2ENR, Periphs); + 8002484: 6cda ldr r2, [r3, #76] ; 0x4c + 8002486: f042 0202 orr.w r2, r2, #2 + 800248a: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 800248c: 6cda ldr r2, [r3, #76] ; 0x4c + 800248e: f002 0202 and.w r2, r2, #2 + 8002492: 9201 str r2, [sp, #4] + (void)tmpreg; + 8002494: 9a01 ldr r2, [sp, #4] + SET_BIT(RCC->AHB2ENR, Periphs); + 8002496: 6cda ldr r2, [r3, #76] ; 0x4c + 8002498: f042 0204 orr.w r2, r2, #4 + 800249c: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 800249e: 6cdb ldr r3, [r3, #76] ; 0x4c + 80024a0: f003 0304 and.w r3, r3, #4 + 80024a4: 9300 str r3, [sp, #0] + (void)tmpreg; + 80024a6: 9b00 ldr r3, [sp, #0] + HAL_GPIO_WritePin(GPIOB, LED1_Pin|LED2_Pin|PROB2_Pin|PROB1_Pin + |LED3_Pin, GPIO_PIN_RESET); +#endif + /*Configure GPIO pin Output Level */ +#if defined(TOF_2) + HAL_GPIO_WritePin(TOF_C_XSHUT_GPIO_Port, TOF_C_XSHUT_Pin, GPIO_PIN_SET); + 80024a8: 4e36 ldr r6, [pc, #216] ; (8002584 <MX_GPIO_Init+0x128>) + 80024aa: 2201 movs r2, #1 + 80024ac: 2108 movs r1, #8 + 80024ae: 4630 mov r0, r6 + 80024b0: f007 f923 bl 80096fa <HAL_GPIO_WritePin> + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(BUT3_GPIO_Port, &GPIO_InitStruct); +#endif + /*Configure GPIO pin : PtPin */ + GPIO_InitStruct.Pin = BUT2_Pin; + 80024b4: 2302 movs r3, #2 + 80024b6: 9303 str r3, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + 80024b8: f44f 1704 mov.w r7, #2162688 ; 0x210000 + 80024bc: 9704 str r7, [sp, #16] + GPIO_InitStruct.Pull = GPIO_PULLUP; + 80024be: 2501 movs r5, #1 + 80024c0: 9505 str r5, [sp, #20] + HAL_GPIO_Init(BUT2_GPIO_Port, &GPIO_InitStruct); + 80024c2: a903 add r1, sp, #12 + 80024c4: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80024c8: f006 ffc0 bl 800944c <HAL_GPIO_Init> + + /*Configure GPIO pin : PtPin */ + GPIO_InitStruct.Pin = BUT1_Pin; + 80024cc: 9503 str r5, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; + 80024ce: f44f 1344 mov.w r3, #3211264 ; 0x310000 + 80024d2: 9304 str r3, [sp, #16] + GPIO_InitStruct.Pull = GPIO_PULLUP; + 80024d4: 9505 str r5, [sp, #20] + HAL_GPIO_Init(BUT1_GPIO_Port, &GPIO_InitStruct); + 80024d6: a903 add r1, sp, #12 + 80024d8: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80024dc: f006 ffb6 bl 800944c <HAL_GPIO_Init> + + + /*Configure GPIO pins : TOF_C_INT_Pin */ +#if defined(TOF_1) + GPIO_InitStruct.Pin = TOF_C_INT_Pin; + 80024e0: f04f 0820 mov.w r8, #32 + 80024e4: f8cd 800c str.w r8, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + 80024e8: 9704 str r7, [sp, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80024ea: 9405 str r4, [sp, #20] + HAL_GPIO_Init(TOF_C_INT_GPIO_Port, &GPIO_InitStruct); + 80024ec: a903 add r1, sp, #12 + 80024ee: 4630 mov r0, r6 + 80024f0: f006 ffac bl 800944c <HAL_GPIO_Init> +#endif + + /*Configure GPIO pins : TOF_L_INT_Pin */ +#if defined(TOF_2) + GPIO_InitStruct.Pin = TOF_L_INT_Pin; + 80024f4: f8cd 800c str.w r8, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + 80024f8: 9704 str r7, [sp, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80024fa: 9405 str r4, [sp, #20] + HAL_GPIO_Init(TOF_L_INT_GPIO_Port, &GPIO_InitStruct); + 80024fc: a903 add r1, sp, #12 + 80024fe: 4630 mov r0, r6 + 8002500: f006 ffa4 bl 800944c <HAL_GPIO_Init> + HAL_GPIO_Init(TOF_R_INT_GPIO_Port, &GPIO_InitStruct); +#endif + + /*Configure GPIO pins : TOF_C_XSHUT_Pin */ +#if defined(TOF_1) + GPIO_InitStruct.Pin = TOF_C_XSHUT_Pin; + 8002504: 2308 movs r3, #8 + 8002506: 9303 str r3, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8002508: 9504 str r5, [sp, #16] + GPIO_InitStruct.Pull = GPIO_PULLUP; + 800250a: 9505 str r5, [sp, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 800250c: 9406 str r4, [sp, #24] + HAL_GPIO_Init(TOF_C_XSHUT_GPIO_Port, &GPIO_InitStruct); + 800250e: a903 add r1, sp, #12 + 8002510: 4630 mov r0, r6 + 8002512: f006 ff9b bl 800944c <HAL_GPIO_Init> +#endif + /*Configure GPIO pins : TOF_L_XSHUT_Pin */ +#if defined(TOF_2) + GPIO_InitStruct.Pin = TOF_L_XSHUT_Pin; + 8002516: f44f 7300 mov.w r3, #512 ; 0x200 + 800251a: 9303 str r3, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 800251c: 9504 str r5, [sp, #16] + GPIO_InitStruct.Pull = GPIO_PULLUP; + 800251e: 9505 str r5, [sp, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8002520: 9406 str r4, [sp, #24] + HAL_GPIO_Init(TOF_L_XSHUT_GPIO_Port, &GPIO_InitStruct); + 8002522: a903 add r1, sp, #12 + 8002524: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8002528: f006 ff90 bl 800944c <HAL_GPIO_Init> + HAL_GPIO_Init(TOF_R_XSHUT_GPIO_Port, &GPIO_InitStruct); +#endif + + + /*Configure GPIO pins : PBPin PBPin PBPin */ + GPIO_InitStruct.Pin = LED1_Pin; + 800252c: 2304 movs r3, #4 + 800252e: 9303 str r3, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8002530: 9504 str r5, [sp, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8002532: 9405 str r4, [sp, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8002534: 9406 str r4, [sp, #24] + HAL_GPIO_Init(LED1_GPIO_Port, &GPIO_InitStruct); + 8002536: a903 add r1, sp, #12 + 8002538: 4630 mov r0, r6 + 800253a: f006 ff87 bl 800944c <HAL_GPIO_Init> +/* ============== SOAP LEVEL DETECTION ========================= */ +#endif + + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); + 800253e: 4622 mov r2, r4 + 8002540: 4621 mov r1, r4 + 8002542: 2006 movs r0, #6 + 8002544: f006 fb6a bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(EXTI0_IRQn); + 8002548: 2006 movs r0, #6 + 800254a: f006 fb9f bl 8008c8c <HAL_NVIC_EnableIRQ> + + HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 0); + 800254e: 4622 mov r2, r4 + 8002550: 4621 mov r1, r4 + 8002552: 2007 movs r0, #7 + 8002554: f006 fb62 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(EXTI1_IRQn); + 8002558: 2007 movs r0, #7 + 800255a: f006 fb97 bl 8008c8c <HAL_NVIC_EnableIRQ> +#if defined(TOF_1) + HAL_NVIC_SetPriority(TOF_C_INT_EXTI_IRQn, 0, 0); + 800255e: 4622 mov r2, r4 + 8002560: 4621 mov r1, r4 + 8002562: 2016 movs r0, #22 + 8002564: f006 fb5a bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(TOF_C_INT_EXTI_IRQn); + 8002568: 2016 movs r0, #22 + 800256a: f006 fb8f bl 8008c8c <HAL_NVIC_EnableIRQ> +#endif + +#if defined(TOF_2) + HAL_NVIC_SetPriority(TOF_L_INT_EXTI_IRQn, 0, 0); + 800256e: 4622 mov r2, r4 + 8002570: 4621 mov r1, r4 + 8002572: 2016 movs r0, #22 + 8002574: f006 fb52 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(TOF_L_INT_EXTI_IRQn); + 8002578: 2016 movs r0, #22 + 800257a: f006 fb87 bl 8008c8c <HAL_NVIC_EnableIRQ> + +#if defined(TOF_3) + HAL_NVIC_SetPriority(TOF_R_INT_EXTI_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TOF_R_INT_EXTI_IRQn); +#endif +} + 800257e: b008 add sp, #32 + 8002580: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8002584: 48000400 .word 0x48000400 + +08002588 <MX_I2C2_Init>: + * @brief I2C2 Initialization Function + * @param None + * @retval None + */ +void MX_I2C2_Init(void) +{ + 8002588: b508 push {r3, lr} + /* USER CODE END I2C2_Init 0 */ + + /* USER CODE BEGIN I2C2_Init 1 */ + + /* USER CODE END I2C2_Init 1 */ + hi2c2.Instance = I2C2; + 800258a: 4812 ldr r0, [pc, #72] ; (80025d4 <MX_I2C2_Init+0x4c>) + 800258c: 4b12 ldr r3, [pc, #72] ; (80025d8 <MX_I2C2_Init+0x50>) + 800258e: 6003 str r3, [r0, #0] + hi2c2.Init.Timing = 0x2010091A; //0x2010091A = 400K Fast Mode, 0x20303E5D, 100K Standard mode, 0x20000209 Fast Mode Plus, 1Mbps + 8002590: 4b12 ldr r3, [pc, #72] ; (80025dc <MX_I2C2_Init+0x54>) + 8002592: 6043 str r3, [r0, #4] + hi2c2.Init.OwnAddress1 = 0; + 8002594: 2300 movs r3, #0 + 8002596: 6083 str r3, [r0, #8] + hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + 8002598: 2201 movs r2, #1 + 800259a: 60c2 str r2, [r0, #12] + hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + 800259c: 6103 str r3, [r0, #16] + hi2c2.Init.OwnAddress2 = 0; + 800259e: 6143 str r3, [r0, #20] + hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK; + 80025a0: 6183 str r3, [r0, #24] + hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + 80025a2: 61c3 str r3, [r0, #28] + hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + 80025a4: 6203 str r3, [r0, #32] + if (HAL_I2C_Init(&hi2c2) != HAL_OK) + 80025a6: f007 fa48 bl 8009a3a <HAL_I2C_Init> + 80025aa: b950 cbnz r0, 80025c2 <MX_I2C2_Init+0x3a> + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + 80025ac: 2100 movs r1, #0 + 80025ae: 4809 ldr r0, [pc, #36] ; (80025d4 <MX_I2C2_Init+0x4c>) + 80025b0: f007 fc1e bl 8009df0 <HAL_I2CEx_ConfigAnalogFilter> + 80025b4: b940 cbnz r0, 80025c8 <MX_I2C2_Init+0x40> + { + Error_Handler(); + } + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK) + 80025b6: 2100 movs r1, #0 + 80025b8: 4806 ldr r0, [pc, #24] ; (80025d4 <MX_I2C2_Init+0x4c>) + 80025ba: f007 fc47 bl 8009e4c <HAL_I2CEx_ConfigDigitalFilter> + 80025be: b930 cbnz r0, 80025ce <MX_I2C2_Init+0x46> + } + /* USER CODE BEGIN I2C2_Init 2 */ + + /* USER CODE END I2C2_Init 2 */ + +} + 80025c0: bd08 pop {r3, pc} + Error_Handler(); + 80025c2: f000 f88b bl 80026dc <Error_Handler> + 80025c6: e7f1 b.n 80025ac <MX_I2C2_Init+0x24> + Error_Handler(); + 80025c8: f000 f888 bl 80026dc <Error_Handler> + 80025cc: e7f3 b.n 80025b6 <MX_I2C2_Init+0x2e> + Error_Handler(); + 80025ce: f000 f885 bl 80026dc <Error_Handler> +} + 80025d2: e7f5 b.n 80025c0 <MX_I2C2_Init+0x38> + 80025d4: 20000a14 .word 0x20000a14 + 80025d8: 40005800 .word 0x40005800 + 80025dc: 2010091a .word 0x2010091a + +080025e0 <HAL_I2C_MspInit>: + +void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) +{ + 80025e0: b570 push {r4, r5, r6, lr} + 80025e2: b096 sub sp, #88 ; 0x58 + 80025e4: 4604 mov r4, r0 + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 80025e6: 2100 movs r1, #0 + 80025e8: 9111 str r1, [sp, #68] ; 0x44 + 80025ea: 9112 str r1, [sp, #72] ; 0x48 + 80025ec: 9113 str r1, [sp, #76] ; 0x4c + 80025ee: 9114 str r1, [sp, #80] ; 0x50 + 80025f0: 9115 str r1, [sp, #84] ; 0x54 + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + 80025f2: 2238 movs r2, #56 ; 0x38 + 80025f4: a803 add r0, sp, #12 + 80025f6: f015 f863 bl 80176c0 <memset> + if(i2cHandle->Instance==I2C2) + 80025fa: 6822 ldr r2, [r4, #0] + 80025fc: 4b32 ldr r3, [pc, #200] ; (80026c8 <HAL_I2C_MspInit+0xe8>) + 80025fe: 429a cmp r2, r3 + 8002600: d001 beq.n 8002606 <HAL_I2C_MspInit+0x26> + + /* USER CODE BEGIN I2C2_MspInit 1 */ + + /* USER CODE END I2C2_MspInit 1 */ + } +} + 8002602: b016 add sp, #88 ; 0x58 + 8002604: bd70 pop {r4, r5, r6, pc} + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2C2; + 8002606: 2380 movs r3, #128 ; 0x80 + 8002608: 9303 str r3, [sp, #12] + PeriphClkInitStruct.I2c2ClockSelection = RCC_I2C2CLKSOURCE_PCLK1; + 800260a: f44f 2340 mov.w r3, #786432 ; 0xc0000 + 800260e: 9309 str r3, [sp, #36] ; 0x24 + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + 8002610: a803 add r0, sp, #12 + 8002612: f008 fa45 bl 800aaa0 <HAL_RCCEx_PeriphCLKConfig> + 8002616: 2800 cmp r0, #0 + 8002618: d14c bne.n 80026b4 <HAL_I2C_MspInit+0xd4> + SET_BIT(RCC->AHB2ENR, Periphs); + 800261a: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 800261e: 6cf3 ldr r3, [r6, #76] ; 0x4c + 8002620: f043 0301 orr.w r3, r3, #1 + 8002624: 64f3 str r3, [r6, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8002626: 6cf3 ldr r3, [r6, #76] ; 0x4c + 8002628: f003 0301 and.w r3, r3, #1 + 800262c: 9302 str r3, [sp, #8] + (void)tmpreg; + 800262e: 9b02 ldr r3, [sp, #8] + GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_11; + 8002630: f44f 53c0 mov.w r3, #6144 ; 0x1800 + 8002634: 9311 str r3, [sp, #68] ; 0x44 + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + 8002636: 2312 movs r3, #18 + 8002638: 9312 str r3, [sp, #72] ; 0x48 + GPIO_InitStruct.Pull = GPIO_NOPULL; //GPIO_PULLUP; + 800263a: 2500 movs r5, #0 + 800263c: 9513 str r5, [sp, #76] ; 0x4c + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 800263e: 2303 movs r3, #3 + 8002640: 9314 str r3, [sp, #80] ; 0x50 + GPIO_InitStruct.Alternate = GPIO_AF4_I2C2; + 8002642: 2304 movs r3, #4 + 8002644: 9315 str r3, [sp, #84] ; 0x54 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8002646: a911 add r1, sp, #68 ; 0x44 + 8002648: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 800264c: f006 fefe bl 800944c <HAL_GPIO_Init> + SET_BIT(RCC->APB1ENR1, Periphs); + 8002650: 6db3 ldr r3, [r6, #88] ; 0x58 + 8002652: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 + 8002656: 65b3 str r3, [r6, #88] ; 0x58 + tmpreg = READ_BIT(RCC->APB1ENR1, Periphs); + 8002658: 6db3 ldr r3, [r6, #88] ; 0x58 + 800265a: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 800265e: 9301 str r3, [sp, #4] + (void)tmpreg; + 8002660: 9b01 ldr r3, [sp, #4] + hdma_i2c2_rx.Instance = DMA1_Channel4; + 8002662: 481a ldr r0, [pc, #104] ; (80026cc <HAL_I2C_MspInit+0xec>) + 8002664: 4b1a ldr r3, [pc, #104] ; (80026d0 <HAL_I2C_MspInit+0xf0>) + 8002666: 6003 str r3, [r0, #0] + hdma_i2c2_rx.Init.Request = DMA_REQUEST_I2C2_RX; + 8002668: 230d movs r3, #13 + 800266a: 6043 str r3, [r0, #4] + hdma_i2c2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; + 800266c: 6085 str r5, [r0, #8] + hdma_i2c2_rx.Init.PeriphInc = DMA_PINC_DISABLE; + 800266e: 60c5 str r5, [r0, #12] + hdma_i2c2_rx.Init.MemInc = DMA_MINC_ENABLE; + 8002670: 2380 movs r3, #128 ; 0x80 + 8002672: 6103 str r3, [r0, #16] + hdma_i2c2_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + 8002674: 6145 str r5, [r0, #20] + hdma_i2c2_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + 8002676: 6185 str r5, [r0, #24] + hdma_i2c2_rx.Init.Mode = DMA_NORMAL; + 8002678: 61c5 str r5, [r0, #28] + hdma_i2c2_rx.Init.Priority = DMA_PRIORITY_LOW; + 800267a: 6205 str r5, [r0, #32] + if (HAL_DMA_Init(&hdma_i2c2_rx) != HAL_OK) + 800267c: f006 fb96 bl 8008dac <HAL_DMA_Init> + 8002680: b9d8 cbnz r0, 80026ba <HAL_I2C_MspInit+0xda> + __HAL_LINKDMA(i2cHandle,hdmarx,hdma_i2c2_rx); + 8002682: 4b12 ldr r3, [pc, #72] ; (80026cc <HAL_I2C_MspInit+0xec>) + 8002684: 63e3 str r3, [r4, #60] ; 0x3c + 8002686: 629c str r4, [r3, #40] ; 0x28 + hdma_i2c2_tx.Instance = DMA1_Channel5; + 8002688: 4812 ldr r0, [pc, #72] ; (80026d4 <HAL_I2C_MspInit+0xf4>) + 800268a: 4b13 ldr r3, [pc, #76] ; (80026d8 <HAL_I2C_MspInit+0xf8>) + 800268c: 6003 str r3, [r0, #0] + hdma_i2c2_tx.Init.Request = DMA_REQUEST_I2C2_TX; + 800268e: 230e movs r3, #14 + 8002690: 6043 str r3, [r0, #4] + hdma_i2c2_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; + 8002692: 2310 movs r3, #16 + 8002694: 6083 str r3, [r0, #8] + hdma_i2c2_tx.Init.PeriphInc = DMA_PINC_DISABLE; + 8002696: 2300 movs r3, #0 + 8002698: 60c3 str r3, [r0, #12] + hdma_i2c2_tx.Init.MemInc = DMA_MINC_ENABLE; + 800269a: 2280 movs r2, #128 ; 0x80 + 800269c: 6102 str r2, [r0, #16] + hdma_i2c2_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + 800269e: 6143 str r3, [r0, #20] + hdma_i2c2_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + 80026a0: 6183 str r3, [r0, #24] + hdma_i2c2_tx.Init.Mode = DMA_NORMAL; + 80026a2: 61c3 str r3, [r0, #28] + hdma_i2c2_tx.Init.Priority = DMA_PRIORITY_LOW; + 80026a4: 6203 str r3, [r0, #32] + if (HAL_DMA_Init(&hdma_i2c2_tx) != HAL_OK) + 80026a6: f006 fb81 bl 8008dac <HAL_DMA_Init> + 80026aa: b948 cbnz r0, 80026c0 <HAL_I2C_MspInit+0xe0> + __HAL_LINKDMA(i2cHandle,hdmatx,hdma_i2c2_tx); + 80026ac: 4b09 ldr r3, [pc, #36] ; (80026d4 <HAL_I2C_MspInit+0xf4>) + 80026ae: 63a3 str r3, [r4, #56] ; 0x38 + 80026b0: 629c str r4, [r3, #40] ; 0x28 +} + 80026b2: e7a6 b.n 8002602 <HAL_I2C_MspInit+0x22> + Error_Handler(); + 80026b4: f000 f812 bl 80026dc <Error_Handler> + 80026b8: e7af b.n 800261a <HAL_I2C_MspInit+0x3a> + Error_Handler(); + 80026ba: f000 f80f bl 80026dc <Error_Handler> + 80026be: e7e0 b.n 8002682 <HAL_I2C_MspInit+0xa2> + Error_Handler(); + 80026c0: f000 f80c bl 80026dc <Error_Handler> + 80026c4: e7f2 b.n 80026ac <HAL_I2C_MspInit+0xcc> + 80026c6: bf00 nop + 80026c8: 40005800 .word 0x40005800 + 80026cc: 20000954 .word 0x20000954 + 80026d0: 40020044 .word 0x40020044 + 80026d4: 200009b4 .word 0x200009b4 + 80026d8: 40020058 .word 0x40020058 + +080026dc <Error_Handler>: + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 80026dc: b672 cpsid i +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 80026de: e7fe b.n 80026de <Error_Handler+0x2> + +080026e0 <SystemClock_Config>: +{ + 80026e0: b510 push {r4, lr} + 80026e2: b09a sub sp, #104 ; 0x68 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 80026e4: 2248 movs r2, #72 ; 0x48 + 80026e6: 2100 movs r1, #0 + 80026e8: a808 add r0, sp, #32 + 80026ea: f014 ffe9 bl 80176c0 <memset> + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 80026ee: 2400 movs r4, #0 + 80026f0: 9402 str r4, [sp, #8] + 80026f2: 9403 str r4, [sp, #12] + 80026f4: 9404 str r4, [sp, #16] + 80026f6: 9405 str r4, [sp, #20] + 80026f8: 9406 str r4, [sp, #24] + 80026fa: 9407 str r4, [sp, #28] + HAL_PWR_EnableBkUpAccess(); + 80026fc: f007 fbd2 bl 8009ea4 <HAL_PWR_EnableBkUpAccess> + * @arg @ref LL_RCC_LSEDRIVE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_SetDriveCapability(uint32_t LSEDrive) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, LSEDrive); + 8002700: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002704: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8002708: f023 0318 bic.w r3, r3, #24 + 800270c: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 8002710: f502 6280 add.w r2, r2, #1024 ; 0x400 + 8002714: 6813 ldr r3, [r2, #0] + 8002716: f423 63c0 bic.w r3, r3, #1536 ; 0x600 + 800271a: f443 7300 orr.w r3, r3, #512 ; 0x200 + 800271e: 6013 str r3, [r2, #0] + 8002720: 6813 ldr r3, [r2, #0] + 8002722: f403 63c0 and.w r3, r3, #1536 ; 0x600 + 8002726: 9301 str r3, [sp, #4] + 8002728: 9b01 ldr r3, [sp, #4] + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE|RCC_OSCILLATORTYPE_MSI; + 800272a: 2324 movs r3, #36 ; 0x24 + 800272c: 9308 str r3, [sp, #32] + RCC_OscInitStruct.LSEState = RCC_LSE_ON; + 800272e: 2381 movs r3, #129 ; 0x81 + 8002730: 930b str r3, [sp, #44] ; 0x2c + RCC_OscInitStruct.MSIState = RCC_MSI_ON; + 8002732: 2301 movs r3, #1 + 8002734: 9310 str r3, [sp, #64] ; 0x40 + RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT; + 8002736: 9411 str r4, [sp, #68] ; 0x44 + RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_11; + 8002738: 23b0 movs r3, #176 ; 0xb0 + 800273a: 9312 str r3, [sp, #72] ; 0x48 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; + 800273c: 9413 str r4, [sp, #76] ; 0x4c + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 800273e: a808 add r0, sp, #32 + 8002740: f007 fd4a bl 800a1d8 <HAL_RCC_OscConfig> + 8002744: b970 cbnz r0, 8002764 <SystemClock_Config+0x84> + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK3|RCC_CLOCKTYPE_HCLK + 8002746: 234f movs r3, #79 ; 0x4f + 8002748: 9302 str r3, [sp, #8] + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI; + 800274a: 2300 movs r3, #0 + 800274c: 9303 str r3, [sp, #12] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 800274e: 9304 str r3, [sp, #16] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 8002750: 9305 str r3, [sp, #20] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 8002752: 9306 str r3, [sp, #24] + RCC_ClkInitStruct.AHBCLK3Divider = RCC_SYSCLK_DIV1; + 8002754: 9307 str r3, [sp, #28] + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + 8002756: 2102 movs r1, #2 + 8002758: a802 add r0, sp, #8 + 800275a: f008 f86f bl 800a83c <HAL_RCC_ClockConfig> + 800275e: b918 cbnz r0, 8002768 <SystemClock_Config+0x88> +} + 8002760: b01a add sp, #104 ; 0x68 + 8002762: bd10 pop {r4, pc} + Error_Handler(); + 8002764: f7ff ffba bl 80026dc <Error_Handler> + Error_Handler(); + 8002768: f7ff ffb8 bl 80026dc <Error_Handler> + +0800276c <main>: +{ + 800276c: b508 push {r3, lr} + HAL_Init(); + 800276e: f005 fd1d bl 80081ac <HAL_Init> + SystemClock_Config(); + 8002772: f7ff ffb5 bl 80026e0 <SystemClock_Config> + MX_GPIO_Init(); + 8002776: f7ff fe71 bl 800245c <MX_GPIO_Init> + MX_DMA_Init(); + 800277a: f7ff fc62 bl 8002042 <MX_DMA_Init> + MX_I2C2_Init(); + 800277e: f7ff ff03 bl 8002588 <MX_I2C2_Init> + MX_LoRaWAN_Init(); + 8002782: f000 fefa bl 800357a <MX_LoRaWAN_Init> + HAL_Delay(3000); + 8002786: f640 30b8 movw r0, #3000 ; 0xbb8 + 800278a: f000 fa91 bl 8002cb0 <HAL_Delay> + MX_LoRaWAN_Process(); + 800278e: f000 fefa bl 8003586 <MX_LoRaWAN_Process> + while (1) + 8002792: e7fc b.n 800278e <main+0x22> + +08002794 <MX_RTC_Init>: + +RTC_HandleTypeDef hrtc; + +/* RTC init function */ +void MX_RTC_Init(void) +{ + 8002794: b500 push {lr} + 8002796: b08d sub sp, #52 ; 0x34 + + /* USER CODE BEGIN RTC_Init 0 */ + + /* USER CODE END RTC_Init 0 */ + + RTC_AlarmTypeDef sAlarm = {0}; + 8002798: 222c movs r2, #44 ; 0x2c + 800279a: 2100 movs r1, #0 + 800279c: a801 add r0, sp, #4 + 800279e: f014 ff8f bl 80176c0 <memset> + + /* USER CODE END RTC_Init 1 */ + + /** Initialize RTC Only + */ + hrtc.Instance = RTC; + 80027a2: 4819 ldr r0, [pc, #100] ; (8002808 <MX_RTC_Init+0x74>) + 80027a4: 4b19 ldr r3, [pc, #100] ; (800280c <MX_RTC_Init+0x78>) + 80027a6: 6003 str r3, [r0, #0] + hrtc.Init.AsynchPrediv = RTC_PREDIV_A; + 80027a8: 231f movs r3, #31 + 80027aa: 6083 str r3, [r0, #8] + hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; + 80027ac: 2300 movs r3, #0 + 80027ae: 6103 str r3, [r0, #16] + hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE; + 80027b0: 6143 str r3, [r0, #20] + hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; + 80027b2: 6183 str r3, [r0, #24] + hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; + 80027b4: f04f 4280 mov.w r2, #1073741824 ; 0x40000000 + 80027b8: 61c2 str r2, [r0, #28] + hrtc.Init.OutPutPullUp = RTC_OUTPUT_PULLUP_NONE; + 80027ba: 6203 str r3, [r0, #32] + hrtc.Init.BinMode = RTC_BINARY_ONLY; + 80027bc: f44f 7380 mov.w r3, #256 ; 0x100 + 80027c0: 6243 str r3, [r0, #36] ; 0x24 + if (HAL_RTC_Init(&hrtc) != HAL_OK) + 80027c2: f008 fb7d bl 800aec0 <HAL_RTC_Init> + 80027c6: b9a8 cbnz r0, 80027f4 <MX_RTC_Init+0x60> + + /* USER CODE END Check_RTC_BKUP */ + + /** Initialize RTC and set the Time and Date + */ + if (HAL_RTCEx_SetSSRU_IT(&hrtc) != HAL_OK) + 80027c8: 480f ldr r0, [pc, #60] ; (8002808 <MX_RTC_Init+0x74>) + 80027ca: f008 fcbb bl 800b144 <HAL_RTCEx_SetSSRU_IT> + 80027ce: b9a0 cbnz r0, 80027fa <MX_RTC_Init+0x66> + Error_Handler(); + } + + /** Enable the Alarm A + */ + sAlarm.BinaryAutoClr = RTC_ALARMSUBSECONDBIN_AUTOCLR_NO; + 80027d0: 2200 movs r2, #0 + 80027d2: 9208 str r2, [sp, #32] + sAlarm.AlarmTime.SubSeconds = 0x0; + 80027d4: 9202 str r2, [sp, #8] + sAlarm.AlarmMask = RTC_ALARMMASK_NONE; + 80027d6: 9206 str r2, [sp, #24] + sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDBINMASK_NONE; + 80027d8: f04f 5300 mov.w r3, #536870912 ; 0x20000000 + 80027dc: 9307 str r3, [sp, #28] + sAlarm.Alarm = RTC_ALARM_A; + 80027de: f44f 7380 mov.w r3, #256 ; 0x100 + 80027e2: 930b str r3, [sp, #44] ; 0x2c + if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, 0) != HAL_OK) + 80027e4: a901 add r1, sp, #4 + 80027e6: 4808 ldr r0, [pc, #32] ; (8002808 <MX_RTC_Init+0x74>) + 80027e8: f008 fbd0 bl 800af8c <HAL_RTC_SetAlarm_IT> + 80027ec: b940 cbnz r0, 8002800 <MX_RTC_Init+0x6c> + } + /* USER CODE BEGIN RTC_Init 2 */ + + /* USER CODE END RTC_Init 2 */ + +} + 80027ee: b00d add sp, #52 ; 0x34 + 80027f0: f85d fb04 ldr.w pc, [sp], #4 + Error_Handler(); + 80027f4: f7ff ff72 bl 80026dc <Error_Handler> + 80027f8: e7e6 b.n 80027c8 <MX_RTC_Init+0x34> + Error_Handler(); + 80027fa: f7ff ff6f bl 80026dc <Error_Handler> + 80027fe: e7e7 b.n 80027d0 <MX_RTC_Init+0x3c> + Error_Handler(); + 8002800: f7ff ff6c bl 80026dc <Error_Handler> +} + 8002804: e7f3 b.n 80027ee <MX_RTC_Init+0x5a> + 8002806: bf00 nop + 8002808: 20000a68 .word 0x20000a68 + 800280c: 40002800 .word 0x40002800 + +08002810 <HAL_RTC_MspInit>: + +void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle) +{ + 8002810: b510 push {r4, lr} + 8002812: b090 sub sp, #64 ; 0x40 + 8002814: 4604 mov r4, r0 + + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + 8002816: 2238 movs r2, #56 ; 0x38 + 8002818: 2100 movs r1, #0 + 800281a: a802 add r0, sp, #8 + 800281c: f014 ff50 bl 80176c0 <memset> + if(rtcHandle->Instance==RTC) + 8002820: 6822 ldr r2, [r4, #0] + 8002822: 4b1a ldr r3, [pc, #104] ; (800288c <HAL_RTC_MspInit+0x7c>) + 8002824: 429a cmp r2, r3 + 8002826: d001 beq.n 800282c <HAL_RTC_MspInit+0x1c> + HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn); + /* USER CODE BEGIN RTC_MspInit 1 */ + + /* USER CODE END RTC_MspInit 1 */ + } +} + 8002828: b010 add sp, #64 ; 0x40 + 800282a: bd10 pop {r4, pc} + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; + 800282c: f44f 3380 mov.w r3, #65536 ; 0x10000 + 8002830: 9302 str r3, [sp, #8] + PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; + 8002832: f44f 7380 mov.w r3, #256 ; 0x100 + 8002836: 930f str r3, [sp, #60] ; 0x3c + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + 8002838: a802 add r0, sp, #8 + 800283a: f008 f931 bl 800aaa0 <HAL_RCCEx_PeriphCLKConfig> + 800283e: bb08 cbnz r0, 8002884 <HAL_RTC_MspInit+0x74> + * @rmtoll BDCR RTCEN LL_RCC_EnableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableRTC(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN); + 8002840: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002844: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 8002848: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 800284c: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + SET_BIT(RCC->APB1ENR1, Periphs); + 8002850: 6d9a ldr r2, [r3, #88] ; 0x58 + 8002852: f442 6280 orr.w r2, r2, #1024 ; 0x400 + 8002856: 659a str r2, [r3, #88] ; 0x58 + tmpreg = READ_BIT(RCC->APB1ENR1, Periphs); + 8002858: 6d9b ldr r3, [r3, #88] ; 0x58 + 800285a: f403 6380 and.w r3, r3, #1024 ; 0x400 + 800285e: 9301 str r3, [sp, #4] + (void)tmpreg; + 8002860: 9b01 ldr r3, [sp, #4] + HAL_NVIC_SetPriority(TAMP_STAMP_LSECSS_SSRU_IRQn, 0, 0); + 8002862: 2200 movs r2, #0 + 8002864: 4611 mov r1, r2 + 8002866: 2002 movs r0, #2 + 8002868: f006 f9d8 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(TAMP_STAMP_LSECSS_SSRU_IRQn); + 800286c: 2002 movs r0, #2 + 800286e: f006 fa0d bl 8008c8c <HAL_NVIC_EnableIRQ> + HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 0, 0); + 8002872: 2200 movs r2, #0 + 8002874: 4611 mov r1, r2 + 8002876: 202a movs r0, #42 ; 0x2a + 8002878: f006 f9d0 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn); + 800287c: 202a movs r0, #42 ; 0x2a + 800287e: f006 fa05 bl 8008c8c <HAL_NVIC_EnableIRQ> +} + 8002882: e7d1 b.n 8002828 <HAL_RTC_MspInit+0x18> + Error_Handler(); + 8002884: f7ff ff2a bl 80026dc <Error_Handler> + 8002888: e7da b.n 8002840 <HAL_RTC_MspInit+0x30> + 800288a: bf00 nop + 800288c: 40002800 .word 0x40002800 + +08002890 <PWR_EnterOffMode>: +void PWR_EnterOffMode(void) +{ + /* USER CODE BEGIN EnterOffMode_1 */ + + /* USER CODE END EnterOffMode_1 */ +} + 8002890: 4770 bx lr + +08002892 <PWR_ExitOffMode>: +void PWR_ExitOffMode(void) +{ + /* USER CODE BEGIN ExitOffMode_1 */ + + /* USER CODE END ExitOffMode_1 */ +} + 8002892: 4770 bx lr + +08002894 <PWR_EnterStopMode>: + +void PWR_EnterStopMode(void) +{ + 8002894: b508 push {r3, lr} + /* USER CODE BEGIN EnterStopMode_1 */ + + /* USER CODE END EnterStopMode_1 */ + HAL_SuspendTick(); + 8002896: f005 fc9f bl 80081d8 <HAL_SuspendTick> + * @rmtoll EXTSCR C1CSSF LL_PWR_ClearFlag_C1STOP_C1STB + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_C1STOP_C1STB(void) +{ + WRITE_REG(PWR->EXTSCR, PWR_EXTSCR_C1CSSF); + 800289a: 2001 movs r0, #1 + 800289c: 4b02 ldr r3, [pc, #8] ; (80028a8 <PWR_EnterStopMode+0x14>) + 800289e: f8c3 0088 str.w r0, [r3, #136] ; 0x88 + LL_PWR_ClearFlag_C1STOP_C1STB(); + + /* USER CODE BEGIN EnterStopMode_2 */ + + /* USER CODE END EnterStopMode_2 */ + HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI); + 80028a2: f007 fb63 bl 8009f6c <HAL_PWREx_EnterSTOP2Mode> + /* USER CODE BEGIN EnterStopMode_3 */ + + /* USER CODE END EnterStopMode_3 */ +} + 80028a6: bd08 pop {r3, pc} + 80028a8: 58000400 .word 0x58000400 + +080028ac <PWR_ExitSleepMode>: + + /* USER CODE END EnterSleepMode_3 */ +} + +void PWR_ExitSleepMode(void) +{ + 80028ac: b508 push {r3, lr} + /* USER CODE BEGIN ExitSleepMode_1 */ + + /* USER CODE END ExitSleepMode_1 */ + /* Resume sysTick */ + HAL_ResumeTick(); + 80028ae: f005 fc9a bl 80081e6 <HAL_ResumeTick> + + /* USER CODE BEGIN ExitSleepMode_2 */ + + /* USER CODE END ExitSleepMode_2 */ +} + 80028b2: bd08 pop {r3, pc} + +080028b4 <PWR_ExitStopMode>: +{ + 80028b4: b508 push {r3, lr} + HAL_ResumeTick(); + 80028b6: f005 fc96 bl 80081e6 <HAL_ResumeTick> + vcom_Resume(); + 80028ba: f000 fd13 bl 80032e4 <vcom_Resume> + MX_GPIO_Init(); + 80028be: f7ff fdcd bl 800245c <MX_GPIO_Init> + MX_DMA_Init(); + 80028c2: f7ff fbbe bl 8002042 <MX_DMA_Init> + MX_I2C2_Init(); + 80028c6: f7ff fe5f bl 8002588 <MX_I2C2_Init> +} + 80028ca: bd08 pop {r3, pc} + +080028cc <PWR_EnterSleepMode>: +{ + 80028cc: b508 push {r3, lr} + HAL_SuspendTick(); + 80028ce: f005 fc83 bl 80081d8 <HAL_SuspendTick> + HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); + 80028d2: 2101 movs r1, #1 + 80028d4: 2000 movs r0, #0 + 80028d6: f007 faed bl 8009eb4 <HAL_PWR_EnterSLEEPMode> +} + 80028da: bd08 pop {r3, pc} + +080028dc <HAL_MspInit>: + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 80028dc: 4770 bx lr + +080028de <NMI_Handler>: +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + 80028de: e7fe b.n 80028de <NMI_Handler> + +080028e0 <HardFault_Handler>: +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 80028e0: e7fe b.n 80028e0 <HardFault_Handler> + +080028e2 <MemManage_Handler>: +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 80028e2: e7fe b.n 80028e2 <MemManage_Handler> + +080028e4 <BusFault_Handler>: +void BusFault_Handler(void) +{ + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 80028e4: e7fe b.n 80028e4 <BusFault_Handler> + +080028e6 <UsageFault_Handler>: +void UsageFault_Handler(void) +{ + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 80028e6: e7fe b.n 80028e6 <UsageFault_Handler> + +080028e8 <SVC_Handler>: + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + 80028e8: 4770 bx lr + +080028ea <DebugMon_Handler>: + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 80028ea: 4770 bx lr + +080028ec <PendSV_Handler>: + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 80028ec: 4770 bx lr + +080028ee <SysTick_Handler>: + + /* USER CODE END SysTick_IRQn 0 */ + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 80028ee: 4770 bx lr + +080028f0 <TAMP_STAMP_LSECSS_SSRU_IRQHandler>: + +/** + * @brief This function handles RTC Tamper, RTC TimeStamp, LSECSS and RTC SSRU Interrupts. + */ +void TAMP_STAMP_LSECSS_SSRU_IRQHandler(void) +{ + 80028f0: b508 push {r3, lr} + /* USER CODE BEGIN TAMP_STAMP_LSECSS_SSRU_IRQn 0 */ + + /* USER CODE END TAMP_STAMP_LSECSS_SSRU_IRQn 0 */ + HAL_RTCEx_SSRUIRQHandler(&hrtc); + 80028f2: 4802 ldr r0, [pc, #8] ; (80028fc <TAMP_STAMP_LSECSS_SSRU_IRQHandler+0xc>) + 80028f4: f008 fc52 bl 800b19c <HAL_RTCEx_SSRUIRQHandler> + /* USER CODE BEGIN TAMP_STAMP_LSECSS_SSRU_IRQn 1 */ + + /* USER CODE END TAMP_STAMP_LSECSS_SSRU_IRQn 1 */ +} + 80028f8: bd08 pop {r3, pc} + 80028fa: bf00 nop + 80028fc: 20000a68 .word 0x20000a68 + +08002900 <EXTI0_IRQHandler>: + +/** + * @brief This function handles EXTI Line 0 Interrupt. + */ +void EXTI0_IRQHandler(void) +{ + 8002900: b508 push {r3, lr} + /* USER CODE BEGIN EXTI0_IRQn 0 */ + + /* USER CODE END EXTI0_IRQn 0 */ + //HAL_EXTI_IRQHandler(&H_EXTI_0); + HAL_GPIO_EXTI_IRQHandler(BUT1_Pin); + 8002902: 2001 movs r0, #1 + 8002904: f006 fefe bl 8009704 <HAL_GPIO_EXTI_IRQHandler> + /* USER CODE BEGIN EXTI0_IRQn 1 */ + + /* USER CODE END EXTI0_IRQn 1 */ +} + 8002908: bd08 pop {r3, pc} + +0800290a <EXTI1_IRQHandler>: + +/** + * @brief This function handles EXTI Line 1 Interrupt. + */ +void EXTI1_IRQHandler(void) +{ + 800290a: b508 push {r3, lr} + /* USER CODE BEGIN EXTI1_IRQn 0 */ + + /* USER CODE END EXTI1_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(BUT2_Pin); + 800290c: 2002 movs r0, #2 + 800290e: f006 fef9 bl 8009704 <HAL_GPIO_EXTI_IRQHandler> + /* USER CODE BEGIN EXTI1_IRQn 1 */ + + /* USER CODE END EXTI1_IRQn 1 */ +} + 8002912: bd08 pop {r3, pc} + +08002914 <DMA1_Channel2_IRQHandler>: + /* USER CODE END DMA1_Channel2_IRQn 0 */ + // HAL_DMA_IRQHandler(&hdma_spi1_rx); + /* USER CODE BEGIN DMA1_Channel2_IRQn 1 */ + + /* USER CODE END DMA1_Channel2_IRQn 1 */ +} + 8002914: 4770 bx lr + +08002916 <DMA1_Channel3_IRQHandler>: + /* USER CODE END DMA1_Channel3_IRQn 0 */ + //HAL_DMA_IRQHandler(&hdma_spi1_tx); + /* USER CODE BEGIN DMA1_Channel3_IRQn 1 */ + + /* USER CODE END DMA1_Channel3_IRQn 1 */ +} + 8002916: 4770 bx lr + +08002918 <DMA1_Channel4_IRQHandler>: + +/** + * @brief This function handles DMA1 Channel 4 Interrupt. + */ +void DMA1_Channel4_IRQHandler(void) +{ + 8002918: b508 push {r3, lr} + /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */ + + /* USER CODE END DMA1_Channel4_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_i2c2_rx); + 800291a: 4802 ldr r0, [pc, #8] ; (8002924 <DMA1_Channel4_IRQHandler+0xc>) + 800291c: f006 fbd4 bl 80090c8 <HAL_DMA_IRQHandler> + /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */ + + /* USER CODE END DMA1_Channel4_IRQn 1 */ +} + 8002920: bd08 pop {r3, pc} + 8002922: bf00 nop + 8002924: 20000954 .word 0x20000954 + +08002928 <DMA1_Channel5_IRQHandler>: + +/** + * @brief This function handles DMA1 Channel 5 Interrupt. + */ +void DMA1_Channel5_IRQHandler(void) +{ + 8002928: b508 push {r3, lr} + /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */ + + /* USER CODE END DMA1_Channel5_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_usart2_tx); + 800292a: 4802 ldr r0, [pc, #8] ; (8002934 <DMA1_Channel5_IRQHandler+0xc>) + 800292c: f006 fbcc bl 80090c8 <HAL_DMA_IRQHandler> + /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */ + + /* USER CODE END DMA1_Channel5_IRQn 1 */ +} + 8002930: bd08 pop {r3, pc} + 8002932: bf00 nop + 8002934: 20000b40 .word 0x20000b40 + +08002938 <DMA1_Channel6_IRQHandler>: + +/** + * @brief This function handles DMA1 Channel 6 Interrupt. + */ +void DMA1_Channel6_IRQHandler(void) +{ + 8002938: b508 push {r3, lr} + /* USER CODE BEGIN DMA1_Channel6_IRQn 0 */ + + /* USER CODE END DMA1_Channel6_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_usart2_rx); + 800293a: 4802 ldr r0, [pc, #8] ; (8002944 <DMA1_Channel6_IRQHandler+0xc>) + 800293c: f006 fbc4 bl 80090c8 <HAL_DMA_IRQHandler> + /* USER CODE BEGIN DMA1_Channel6_IRQn 1 */ + + /* USER CODE END DMA1_Channel6_IRQn 1 */ +} + 8002940: bd08 pop {r3, pc} + 8002942: bf00 nop + 8002944: 20000ae0 .word 0x20000ae0 + +08002948 <DMA1_Channel7_IRQHandler>: + +/** + * @brief This function handles DMA1 Channel 7 Interrupt. + */ +void DMA1_Channel7_IRQHandler(void) +{ + 8002948: b508 push {r3, lr} + /* USER CODE BEGIN DMA1_Channel7_IRQn 0 */ + + /* USER CODE END DMA1_Channel7_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_usart2_tx); + 800294a: 4802 ldr r0, [pc, #8] ; (8002954 <DMA1_Channel7_IRQHandler+0xc>) + 800294c: f006 fbbc bl 80090c8 <HAL_DMA_IRQHandler> + /* USER CODE BEGIN DMA1_Channel7_IRQn 1 */ + + /* USER CODE END DMA1_Channel7_IRQn 1 */ +} + 8002950: bd08 pop {r3, pc} + 8002952: bf00 nop + 8002954: 20000b40 .word 0x20000b40 + +08002958 <EXTI4_IRQHandler>: + /* USER CODE END EXTI9_5_IRQn 0 */ + //HAL_GPIO_EXTI_IRQHandler(TOF_INT_EXTI_PIN); + /* USER CODE BEGIN EXTI9_5_IRQn 1 */ + + /* USER CODE END EXTI9_5_IRQn 1 */ +} + 8002958: 4770 bx lr + +0800295a <EXTI9_5_IRQHandler>: + +/** + * @brief This function handles EXTI Lines [9:5] Interrupt. + */ +void EXTI9_5_IRQHandler(void) +{ + 800295a: b508 push {r3, lr} +#if defined(STM32WL55xx) + HAL_GPIO_EXTI_IRQHandler(BUT3_Pin); +#endif +#if defined(STM32WLE5xx) + //HAL_GPIO_EXTI_IRQHandler(TOF_INT_EXTI_PIN); + HAL_GPIO_EXTI_IRQHandler(TOF_INT_EXTI_PIN); + 800295c: 2020 movs r0, #32 + 800295e: f006 fed1 bl 8009704 <HAL_GPIO_EXTI_IRQHandler> +#endif + /* USER CODE BEGIN EXTI9_5_IRQn 1 */ + + /* USER CODE END EXTI9_5_IRQn 1 */ +} + 8002962: bd08 pop {r3, pc} + +08002964 <EXTI15_10_IRQHandler>: + HAL_GPIO_EXTI_IRQHandler(TOF_INT_EXTI_PIN); +#endif + /* USER CODE BEGIN EXTI15_10_IRQn 1 */ + + /* USER CODE END EXTI15_10_IRQn 1 */ +} + 8002964: 4770 bx lr + ... + +08002968 <USART2_IRQHandler>: + +/** + * @brief This function handles USART2 Interrupt. + */ +void USART2_IRQHandler(void) +{ + 8002968: b508 push {r3, lr} + /* USER CODE BEGIN USART2_IRQn 0 */ + + /* USER CODE END USART2_IRQn 0 */ + HAL_UART_IRQHandler(&huart2); + 800296a: 4802 ldr r0, [pc, #8] ; (8002974 <USART2_IRQHandler+0xc>) + 800296c: f009 f8d4 bl 800bb18 <HAL_UART_IRQHandler> + /* USER CODE BEGIN USART2_IRQn 1 */ + + /* USER CODE END USART2_IRQn 1 */ +} + 8002970: bd08 pop {r3, pc} + 8002972: bf00 nop + 8002974: 20000ba0 .word 0x20000ba0 + +08002978 <RTC_Alarm_IRQHandler>: + +/** + * @brief This function handles RTC Alarms (A and B) Interrupt. + */ +void RTC_Alarm_IRQHandler(void) +{ + 8002978: b508 push {r3, lr} + /* USER CODE BEGIN RTC_Alarm_IRQn 0 */ + + /* USER CODE END RTC_Alarm_IRQn 0 */ + HAL_RTC_AlarmIRQHandler(&hrtc); + 800297a: 4802 ldr r0, [pc, #8] ; (8002984 <RTC_Alarm_IRQHandler+0xc>) + 800297c: f008 fa1a bl 800adb4 <HAL_RTC_AlarmIRQHandler> + /* USER CODE BEGIN RTC_Alarm_IRQn 1 */ + + /* USER CODE END RTC_Alarm_IRQn 1 */ +} + 8002980: bd08 pop {r3, pc} + 8002982: bf00 nop + 8002984: 20000a68 .word 0x20000a68 + +08002988 <SUBGHZ_Radio_IRQHandler>: + +/** + * @brief This function handles SUBGHZ Radio Interrupt. + */ +void SUBGHZ_Radio_IRQHandler(void) +{ + 8002988: b508 push {r3, lr} + /* USER CODE BEGIN SUBGHZ_Radio_IRQn 0 */ + + /* USER CODE END SUBGHZ_Radio_IRQn 0 */ + HAL_SUBGHZ_IRQHandler(&hsubghz); + 800298a: 4802 ldr r0, [pc, #8] ; (8002994 <SUBGHZ_Radio_IRQHandler+0xc>) + 800298c: f008 feba bl 800b704 <HAL_SUBGHZ_IRQHandler> + /* USER CODE BEGIN SUBGHZ_Radio_IRQn 1 */ + + /* USER CODE END SUBGHZ_Radio_IRQn 1 */ +} + 8002990: bd08 pop {r3, pc} + 8002992: bf00 nop + 8002994: 20000acc .word 0x20000acc + +08002998 <sts_hmac_sha1>: + return ret; +} + + +uint32_t sts_hmac_sha1(const uint8_t *key, int key_length, const uint8_t *message, int message_length, hmac_result_t *hmac_result) +{ + 8002998: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 800299c: b089 sub sp, #36 ; 0x24 + 800299e: 4607 mov r7, r0 + 80029a0: 4688 mov r8, r1 + 80029a2: 4616 mov r6, r2 + 80029a4: 4699 mov r9, r3 + 80029a6: 9d10 ldr r5, [sp, #64] ; 0x40 + cmox_mac_retval_t retval=0; + size_t computed_size=0; + 80029a8: 2000 movs r0, #0 + 80029aa: 9007 str r0, [sp, #28] + /* Initialize cryptographic library */ + if (cmox_initialize(NULL) != CMOX_INIT_SUCCESS) + 80029ac: f7fd fc3c bl 8000228 <cmox_initialize> + 80029b0: b120 cbz r0, 80029bc <sts_hmac_sha1+0x24> + { + retval = 1; + return retval; + 80029b2: 2601 movs r6, #1 + + memcpy(hmac_result->hmac_tag, Computed_Tag_SHA1, sizeof(Computed_Tag_SHA1)); + hmac_result->hmac_tag_size = computed_size; + + return retval; +} + 80029b4: 4630 mov r0, r6 + 80029b6: b009 add sp, #36 ; 0x24 + 80029b8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + retval = cmox_mac_compute(CMOX_HMAC_SHA1_ALGO, /* Use HMAC SHA256 algorithm */ + 80029bc: ab07 add r3, sp, #28 + 80029be: 9305 str r3, [sp, #20] + 80029c0: 2314 movs r3, #20 + 80029c2: 9304 str r3, [sp, #16] + 80029c4: 4c0d ldr r4, [pc, #52] ; (80029fc <sts_hmac_sha1+0x64>) + 80029c6: 9403 str r4, [sp, #12] + 80029c8: 2300 movs r3, #0 + 80029ca: 9302 str r3, [sp, #8] + 80029cc: 9301 str r3, [sp, #4] + 80029ce: f8cd 8000 str.w r8, [sp] + 80029d2: 463b mov r3, r7 + 80029d4: 464a mov r2, r9 + 80029d6: 4631 mov r1, r6 + 80029d8: 4809 ldr r0, [pc, #36] ; (8002a00 <sts_hmac_sha1+0x68>) + 80029da: 6800 ldr r0, [r0, #0] + 80029dc: f7fd fcee bl 80003bc <cmox_mac_compute> + 80029e0: 4606 mov r6, r0 + memcpy(hmac_result->hmac_tag, Computed_Tag_SHA1, sizeof(Computed_Tag_SHA1)); + 80029e2: 46a4 mov ip, r4 + 80029e4: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 80029e8: 6028 str r0, [r5, #0] + 80029ea: 6069 str r1, [r5, #4] + 80029ec: 60aa str r2, [r5, #8] + 80029ee: 60eb str r3, [r5, #12] + 80029f0: f8dc 0000 ldr.w r0, [ip] + 80029f4: 6128 str r0, [r5, #16] + hmac_result->hmac_tag_size = computed_size; + 80029f6: 9b07 ldr r3, [sp, #28] + 80029f8: 752b strb r3, [r5, #20] + return retval; + 80029fa: e7db b.n 80029b4 <sts_hmac_sha1+0x1c> + 80029fc: 20000aa0 .word 0x20000aa0 + 8002a00: 080178d0 .word 0x080178d0 + +08002a04 <sts_hmac_verify>: +{ + 8002a04: b530 push {r4, r5, lr} + 8002a06: b085 sub sp, #20 + uint8_t uid[8]=""; + 8002a08: 2400 movs r4, #0 + 8002a0a: 9402 str r4, [sp, #8] + 8002a0c: 9403 str r4, [sp, #12] + hmac_result.ac_pass = 60; + 8002a0e: 4d1c ldr r5, [pc, #112] ; (8002a80 <sts_hmac_verify+0x7c>) + 8002a10: 233c movs r3, #60 ; 0x3c + 8002a12: 756b strb r3, [r5, #21] + hmac_result.hmac_tag_size = 0; + 8002a14: 752c strb r4, [r5, #20] + GetUniqueId(uid); + 8002a16: a802 add r0, sp, #8 + 8002a18: f000 f8e2 bl 8002be0 <GetUniqueId> + ret = sts_hmac_sha1((const uint8_t *) mKey, sizeof(mKey), (const uint8_t*)(uid+4), 4, &hmac_result); + 8002a1c: 9500 str r5, [sp, #0] + 8002a1e: 2304 movs r3, #4 + 8002a20: aa03 add r2, sp, #12 + 8002a22: 2112 movs r1, #18 + 8002a24: 4817 ldr r0, [pc, #92] ; (8002a84 <sts_hmac_verify+0x80>) + 8002a26: f7ff ffb7 bl 8002998 <sts_hmac_sha1> + for (i=0;i<sizeof(Computed_Tag_SHA1); i++) { + 8002a2a: e00a b.n 8002a42 <sts_hmac_verify+0x3e> + APP_LOG(TS_OFF,VLEVEL_M,"0x%02x ", hmac_result.hmac_tag[i]); + 8002a2c: 4b14 ldr r3, [pc, #80] ; (8002a80 <sts_hmac_verify+0x7c>) + 8002a2e: 5d1b ldrb r3, [r3, r4] + 8002a30: 9300 str r3, [sp, #0] + 8002a32: 4b15 ldr r3, [pc, #84] ; (8002a88 <sts_hmac_verify+0x84>) + 8002a34: 2200 movs r2, #0 + 8002a36: 4611 mov r1, r2 + 8002a38: 2002 movs r0, #2 + 8002a3a: f014 f87d bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + for (i=0;i<sizeof(Computed_Tag_SHA1); i++) { + 8002a3e: 3401 adds r4, #1 + 8002a40: b2e4 uxtb r4, r4 + 8002a42: 2c13 cmp r4, #19 + 8002a44: d9f2 bls.n 8002a2c <sts_hmac_verify+0x28> + ret = memcmp(hmac_result.hmac_tag, (void *)sts_ac_code, sizeof(sts_ac_code)); + 8002a46: 2214 movs r2, #20 + 8002a48: 4910 ldr r1, [pc, #64] ; (8002a8c <sts_hmac_verify+0x88>) + 8002a4a: 480d ldr r0, [pc, #52] ; (8002a80 <sts_hmac_verify+0x7c>) + 8002a4c: f014 fe28 bl 80176a0 <memcmp> + if (ret !=0) + 8002a50: 4604 mov r4, r0 + 8002a52: b150 cbz r0, 8002a6a <sts_hmac_verify+0x66> + hmac_result.ac_pass =0U; + 8002a54: 2100 movs r1, #0 + 8002a56: 4b0a ldr r3, [pc, #40] ; (8002a80 <sts_hmac_verify+0x7c>) + 8002a58: 7559 strb r1, [r3, #21] + APP_LOG(TS_OFF, VLEVEL_M, "\r\nHMAC Verify Error \r\n"); + 8002a5a: 4b0d ldr r3, [pc, #52] ; (8002a90 <sts_hmac_verify+0x8c>) + 8002a5c: 460a mov r2, r1 + 8002a5e: 2002 movs r0, #2 + 8002a60: f014 f86a bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8002a64: 4620 mov r0, r4 + 8002a66: b005 add sp, #20 + 8002a68: bd30 pop {r4, r5, pc} + hmac_result.ac_pass = 1U; + 8002a6a: 4b05 ldr r3, [pc, #20] ; (8002a80 <sts_hmac_verify+0x7c>) + 8002a6c: 2201 movs r2, #1 + 8002a6e: 755a strb r2, [r3, #21] + APP_LOG(TS_OFF, VLEVEL_M, "\r\nHMAC Verify Success\r\n"); + 8002a70: 4b08 ldr r3, [pc, #32] ; (8002a94 <sts_hmac_verify+0x90>) + 8002a72: 2200 movs r2, #0 + 8002a74: 4611 mov r1, r2 + 8002a76: 2002 movs r0, #2 + 8002a78: f014 f85e bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + return ret; + 8002a7c: e7f2 b.n 8002a64 <sts_hmac_verify+0x60> + 8002a7e: bf00 nop + 8002a80: 20000ab4 .word 0x20000ab4 + 8002a84: 08017930 .word 0x08017930 + 8002a88: 080178f8 .word 0x080178f8 + 8002a8c: 20000e58 .word 0x20000e58 + 8002a90: 08017900 .word 0x08017900 + 8002a94: 08017918 .word 0x08017918 + +08002a98 <MX_SUBGHZ_Init>: + +SUBGHZ_HandleTypeDef hsubghz; + +/* SUBGHZ init function */ +void MX_SUBGHZ_Init(void) +{ + 8002a98: b508 push {r3, lr} + /* USER CODE END SUBGHZ_Init 0 */ + + /* USER CODE BEGIN SUBGHZ_Init 1 */ + + /* USER CODE END SUBGHZ_Init 1 */ + hsubghz.Init.BaudratePrescaler = SUBGHZSPI_BAUDRATEPRESCALER_4; + 8002a9a: 4805 ldr r0, [pc, #20] ; (8002ab0 <MX_SUBGHZ_Init+0x18>) + 8002a9c: 2308 movs r3, #8 + 8002a9e: 6003 str r3, [r0, #0] + if (HAL_SUBGHZ_Init(&hsubghz) != HAL_OK) + 8002aa0: f008 fbb2 bl 800b208 <HAL_SUBGHZ_Init> + 8002aa4: b900 cbnz r0, 8002aa8 <MX_SUBGHZ_Init+0x10> + } + /* USER CODE BEGIN SUBGHZ_Init 2 */ + + /* USER CODE END SUBGHZ_Init 2 */ + +} + 8002aa6: bd08 pop {r3, pc} + Error_Handler(); + 8002aa8: f7ff fe18 bl 80026dc <Error_Handler> +} + 8002aac: e7fb b.n 8002aa6 <MX_SUBGHZ_Init+0xe> + 8002aae: bf00 nop + 8002ab0: 20000acc .word 0x20000acc + +08002ab4 <HAL_SUBGHZ_MspInit>: + +void HAL_SUBGHZ_MspInit(SUBGHZ_HandleTypeDef* subghzHandle) +{ + 8002ab4: b500 push {lr} + 8002ab6: b083 sub sp, #12 + * @retval None + */ +__STATIC_INLINE void LL_APB3_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB3ENR, Periphs); + 8002ab8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002abc: 6e5a ldr r2, [r3, #100] ; 0x64 + 8002abe: f042 0201 orr.w r2, r2, #1 + 8002ac2: 665a str r2, [r3, #100] ; 0x64 + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB3ENR, Periphs); + 8002ac4: 6e5b ldr r3, [r3, #100] ; 0x64 + 8002ac6: f003 0301 and.w r3, r3, #1 + 8002aca: 9301 str r3, [sp, #4] + (void)tmpreg; + 8002acc: 9b01 ldr r3, [sp, #4] + /* USER CODE END SUBGHZ_MspInit 0 */ + /* SUBGHZ clock enable */ + __HAL_RCC_SUBGHZSPI_CLK_ENABLE(); + + /* SUBGHZ interrupt Init */ + HAL_NVIC_SetPriority(SUBGHZ_Radio_IRQn, 0, 0); + 8002ace: 2200 movs r2, #0 + 8002ad0: 4611 mov r1, r2 + 8002ad2: 2032 movs r0, #50 ; 0x32 + 8002ad4: f006 f8a2 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(SUBGHZ_Radio_IRQn); + 8002ad8: 2032 movs r0, #50 ; 0x32 + 8002ada: f006 f8d7 bl 8008c8c <HAL_NVIC_EnableIRQ> + /* USER CODE BEGIN SUBGHZ_MspInit 1 */ + + /* USER CODE END SUBGHZ_MspInit 1 */ +} + 8002ade: b003 add sp, #12 + 8002ae0: f85d fb04 ldr.w pc, [sp], #4 + +08002ae4 <tiny_snprintf_like>: + + /* USER CODE END UTIL_LPM_SetStopMode_2 */ +} + +static void tiny_snprintf_like(char *buf, uint32_t maxsize, const char *strFormat, ...) +{ + 8002ae4: b40c push {r2, r3} + 8002ae6: b500 push {lr} + 8002ae8: b083 sub sp, #12 + 8002aea: ab04 add r3, sp, #16 + 8002aec: f853 2b04 ldr.w r2, [r3], #4 + /* USER CODE BEGIN tiny_snprintf_like_1 */ + + /* USER CODE END tiny_snprintf_like_1 */ + va_list vaArgs; + va_start(vaArgs, strFormat); + 8002af0: 9301 str r3, [sp, #4] + UTIL_ADV_TRACE_VSNPRINTF(buf, maxsize, strFormat, vaArgs); + 8002af2: f014 fd11 bl 8017518 <tiny_vsnprintf_like> + va_end(vaArgs); + /* USER CODE BEGIN tiny_snprintf_like_2 */ + + /* USER CODE END tiny_snprintf_like_2 */ +} + 8002af6: b003 add sp, #12 + 8002af8: f85d eb04 ldr.w lr, [sp], #4 + 8002afc: b002 add sp, #8 + 8002afe: 4770 bx lr + +08002b00 <TimestampNow>: +{ + 8002b00: b530 push {r4, r5, lr} + 8002b02: b085 sub sp, #20 + 8002b04: 4604 mov r4, r0 + 8002b06: 460d mov r5, r1 + SysTime_t curtime = SysTimeGet(); + 8002b08: a802 add r0, sp, #8 + 8002b0a: f014 fa79 bl 8017000 <SysTimeGet> + tiny_snprintf_like((char *)buff, MAX_TS_SIZE, "%ds%03d:", curtime.Seconds, curtime.SubSeconds); + 8002b0e: f9bd 300c ldrsh.w r3, [sp, #12] + 8002b12: 9300 str r3, [sp, #0] + 8002b14: 9b02 ldr r3, [sp, #8] + 8002b16: 4a05 ldr r2, [pc, #20] ; (8002b2c <TimestampNow+0x2c>) + 8002b18: 2110 movs r1, #16 + 8002b1a: 4620 mov r0, r4 + 8002b1c: f7ff ffe2 bl 8002ae4 <tiny_snprintf_like> + *size = strlen((char *)buff); + 8002b20: 4620 mov r0, r4 + 8002b22: f7fe fc4d bl 80013c0 <strlen> + 8002b26: 8028 strh r0, [r5, #0] +} + 8002b28: b005 add sp, #20 + 8002b2a: bd30 pop {r4, r5, pc} + 8002b2c: 08017944 .word 0x08017944 + +08002b30 <SystemApp_Init>: +{ + 8002b30: b510 push {r4, lr} + MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPWUCK, Clock); + 8002b32: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002b36: 6893 ldr r3, [r2, #8] + 8002b38: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8002b3c: 6093 str r3, [r2, #8] + UTIL_TIMER_Init(); + 8002b3e: f014 fae3 bl 8017108 <UTIL_TIMER_Init> + SYS_TimerInitialisedFlag = 1; + 8002b42: 2401 movs r4, #1 + 8002b44: 4b0d ldr r3, [pc, #52] ; (8002b7c <SystemApp_Init+0x4c>) + 8002b46: 701c strb r4, [r3, #0] + DBG_Init(); + 8002b48: f000 f8bc bl 8002cc4 <DBG_Init> + UTIL_ADV_TRACE_Init(); + 8002b4c: f013 ff80 bl 8016a50 <UTIL_ADV_TRACE_Init> + UTIL_ADV_TRACE_RegisterTimeStampFunction(TimestampNow); + 8002b50: 480b ldr r0, [pc, #44] ; (8002b80 <SystemApp_Init+0x50>) + 8002b52: f013 ff97 bl 8016a84 <UTIL_ADV_TRACE_RegisterTimeStampFunction> + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR); + 8002b56: 4b0b ldr r3, [pc, #44] ; (8002b84 <SystemApp_Init+0x54>) + 8002b58: f44f 4200 mov.w r2, #32768 ; 0x8000 + 8002b5c: 611a str r2, [r3, #16] + UTIL_ADV_TRACE_SetVerboseLevel(VERBOSE_LEVEL); + 8002b5e: 4620 mov r0, r4 + 8002b60: f013 ff96 bl 8016a90 <UTIL_ADV_TRACE_SetVerboseLevel> + SYS_InitMeasurement(); + 8002b64: f7ff f9da bl 8001f1c <SYS_InitMeasurement> + EnvSensors_Init(); + 8002b68: f000 f942 bl 8002df0 <EnvSensors_Init> + UTIL_LPM_Init(); + 8002b6c: f014 f8a0 bl 8016cb0 <UTIL_LPM_Init> + UTIL_LPM_SetOffMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_DISABLE); + 8002b70: 4621 mov r1, r4 + 8002b72: 4620 mov r0, r4 + 8002b74: f014 f8bc bl 8016cf0 <UTIL_LPM_SetOffMode> +} + 8002b78: bd10 pop {r4, pc} + 8002b7a: bf00 nop + 8002b7c: 20000ad8 .word 0x20000ad8 + 8002b80: 08002b01 .word 0x08002b01 + 8002b84: 58004000 .word 0x58004000 + +08002b88 <UTIL_SEQ_Idle>: +{ + 8002b88: b508 push {r3, lr} + UTIL_LPM_EnterLowPower(); + 8002b8a: f014 f8c7 bl 8016d1c <UTIL_LPM_EnterLowPower> +} + 8002b8e: bd08 pop {r3, pc} + +08002b90 <GetBatteryLevel>: +{ + 8002b90: b508 push {r3, lr} + batteryLevelmV = (uint16_t) SYS_GetBatteryLevel(); + 8002b92: f7ff f9cb bl 8001f2c <SYS_GetBatteryLevel> + if (batteryLevelmV > VDD_BAT) + 8002b96: f640 33b8 movw r3, #3000 ; 0xbb8 + 8002b9a: 4298 cmp r0, r3 + 8002b9c: d80d bhi.n 8002bba <GetBatteryLevel+0x2a> + else if (batteryLevelmV < VDD_MIN) + 8002b9e: f5b0 6fe1 cmp.w r0, #1800 ; 0x708 + 8002ba2: d30c bcc.n 8002bbe <GetBatteryLevel+0x2e> + batteryLevel = (((uint32_t)(batteryLevelmV - VDD_MIN) * LORAWAN_MAX_BAT) / (VDD_BAT - VDD_MIN)); + 8002ba4: f5a0 60e1 sub.w r0, r0, #1800 ; 0x708 + 8002ba8: ebc0 10c0 rsb r0, r0, r0, lsl #7 + 8002bac: 0040 lsls r0, r0, #1 + 8002bae: 4b05 ldr r3, [pc, #20] ; (8002bc4 <GetBatteryLevel+0x34>) + 8002bb0: fba3 3000 umull r3, r0, r3, r0 + 8002bb4: f3c0 10c7 ubfx r0, r0, #7, #8 + 8002bb8: e000 b.n 8002bbc <GetBatteryLevel+0x2c> + batteryLevel = LORAWAN_MAX_BAT; + 8002bba: 20fe movs r0, #254 ; 0xfe +} + 8002bbc: bd08 pop {r3, pc} + batteryLevel = 0; + 8002bbe: 2000 movs r0, #0 + 8002bc0: e7fc b.n 8002bbc <GetBatteryLevel+0x2c> + 8002bc2: bf00 nop + 8002bc4: 1b4e81b5 .word 0x1b4e81b5 + +08002bc8 <GetTemperatureLevel>: +{ + 8002bc8: b500 push {lr} + 8002bca: b087 sub sp, #28 + EnvSensors_Read(&sensor_data); + 8002bcc: 4668 mov r0, sp + 8002bce: f000 f8f3 bl 8002db8 <EnvSensors_Read> + temperatureLevel = (int16_t)(sensor_data.temperature); + 8002bd2: 9801 ldr r0, [sp, #4] + 8002bd4: f7fe ff76 bl 8001ac4 <__aeabi_f2iz> +} + 8002bd8: b200 sxth r0, r0 + 8002bda: b007 add sp, #28 + 8002bdc: f85d fb04 ldr.w pc, [sp], #4 + +08002be0 <GetUniqueId>: +{ + 8002be0: b538 push {r3, r4, r5, lr} + 8002be2: 4604 mov r4, r0 + * @brief Return the Unique Device Number + * @retval Values between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_FLASH_GetUDN(void) +{ + return (READ_REG(*((uint32_t *)UID64_BASE))); + 8002be4: 4b18 ldr r3, [pc, #96] ; (8002c48 <GetUniqueId+0x68>) + 8002be6: f8d3 3580 ldr.w r3, [r3, #1408] ; 0x580 + if (val == 0xFFFFFFFF) /* Normally this should not happen */ + 8002bea: f1b3 3fff cmp.w r3, #4294967295 + 8002bee: d013 beq.n 8002c18 <GetUniqueId+0x38> + id[7] = val & 0xFF; + 8002bf0: 71c3 strb r3, [r0, #7] + id[6] = (val >> 8) & 0xFF; + 8002bf2: 0a1a lsrs r2, r3, #8 + 8002bf4: 7182 strb r2, [r0, #6] + id[5] = (val >> 16) & 0xFF; + 8002bf6: 0c1a lsrs r2, r3, #16 + 8002bf8: 7142 strb r2, [r0, #5] + id[4] = (val >> 24) & 0xFF; + 8002bfa: 0e1b lsrs r3, r3, #24 + 8002bfc: 7103 strb r3, [r0, #4] + * For STM32WLxxxx devices, the device ID is 0x15 + * @retval Values between Min_Data=0x00 and Max_Data=0xFF (ex: Device ID is 0x15) + */ +__STATIC_INLINE uint32_t LL_FLASH_GetDeviceID(void) +{ + return ((READ_REG(*((uint32_t *)UID64_BASE + 1U))) & 0x000000FFU); + 8002bfe: 4b12 ldr r3, [pc, #72] ; (8002c48 <GetUniqueId+0x68>) + 8002c00: f8d3 2584 ldr.w r2, [r3, #1412] ; 0x584 + id[3] = val & 0xFF; + 8002c04: 70c2 strb r2, [r0, #3] + * @note For STM32WLxxxx devices, the ST Company ID is 0x0080E1 + * @retval Values between Min_Data=0x00 and Max_Data=0xFFFFFF (ex: ST Company ID is 0x0080E1) + */ +__STATIC_INLINE uint32_t LL_FLASH_GetSTCompanyID(void) +{ + return (((READ_REG(*((uint32_t *)UID64_BASE + 1U))) >> 8U) & 0x00FFFFFFU); + 8002c06: f8d3 3584 ldr.w r3, [r3, #1412] ; 0x584 + 8002c0a: 0a1a lsrs r2, r3, #8 + id[2] = val & 0xFF; + 8002c0c: 7082 strb r2, [r0, #2] + id[1] = (val >> 8) & 0xFF; + 8002c0e: 0c1a lsrs r2, r3, #16 + 8002c10: 7042 strb r2, [r0, #1] + id[0] = (val >> 16) & 0xFF; + 8002c12: 0e1b lsrs r3, r3, #24 + 8002c14: 7003 strb r3, [r0, #0] +} + 8002c16: bd38 pop {r3, r4, r5, pc} + uint32_t ID_1_3_val = HAL_GetUIDw0() + HAL_GetUIDw2(); + 8002c18: f005 faec bl 80081f4 <HAL_GetUIDw0> + 8002c1c: 4605 mov r5, r0 + 8002c1e: f005 faf5 bl 800820c <HAL_GetUIDw2> + 8002c22: 4405 add r5, r0 + uint32_t ID_2_val = HAL_GetUIDw1(); + 8002c24: f005 faec bl 8008200 <HAL_GetUIDw1> + id[7] = (ID_1_3_val) >> 24; + 8002c28: 0e2b lsrs r3, r5, #24 + 8002c2a: 71e3 strb r3, [r4, #7] + id[6] = (ID_1_3_val) >> 16; + 8002c2c: 0c2b lsrs r3, r5, #16 + 8002c2e: 71a3 strb r3, [r4, #6] + id[5] = (ID_1_3_val) >> 8; + 8002c30: 0a2b lsrs r3, r5, #8 + 8002c32: 7163 strb r3, [r4, #5] + id[4] = (ID_1_3_val); + 8002c34: 7125 strb r5, [r4, #4] + id[3] = (ID_2_val) >> 24; + 8002c36: 0e03 lsrs r3, r0, #24 + 8002c38: 70e3 strb r3, [r4, #3] + id[2] = (ID_2_val) >> 16; + 8002c3a: 0c03 lsrs r3, r0, #16 + 8002c3c: 70a3 strb r3, [r4, #2] + id[1] = (ID_2_val) >> 8; + 8002c3e: 0a03 lsrs r3, r0, #8 + 8002c40: 7063 strb r3, [r4, #1] + id[0] = (ID_2_val); + 8002c42: 7020 strb r0, [r4, #0] + 8002c44: e7e7 b.n 8002c16 <GetUniqueId+0x36> + 8002c46: bf00 nop + 8002c48: 1fff7000 .word 0x1fff7000 + +08002c4c <GetDevAddr>: +{ + 8002c4c: b538 push {r3, r4, r5, lr} + return (READ_REG(*((uint32_t *)UID64_BASE))); + 8002c4e: 4b0a ldr r3, [pc, #40] ; (8002c78 <GetDevAddr+0x2c>) + 8002c50: f8d3 3580 ldr.w r3, [r3, #1408] ; 0x580 + *devAddr = LL_FLASH_GetUDN(); + 8002c54: 6003 str r3, [r0, #0] + if (*devAddr == 0xFFFFFFFF) + 8002c56: f1b3 3fff cmp.w r3, #4294967295 + 8002c5a: d000 beq.n 8002c5e <GetDevAddr+0x12> +} + 8002c5c: bd38 pop {r3, r4, r5, pc} + 8002c5e: 4604 mov r4, r0 + *devAddr = ((HAL_GetUIDw0()) ^ (HAL_GetUIDw1()) ^ (HAL_GetUIDw2())); + 8002c60: f005 fac8 bl 80081f4 <HAL_GetUIDw0> + 8002c64: 4605 mov r5, r0 + 8002c66: f005 facb bl 8008200 <HAL_GetUIDw1> + 8002c6a: 4045 eors r5, r0 + 8002c6c: f005 face bl 800820c <HAL_GetUIDw2> + 8002c70: 4045 eors r5, r0 + 8002c72: 6025 str r5, [r4, #0] +} + 8002c74: e7f2 b.n 8002c5c <GetDevAddr+0x10> + 8002c76: bf00 nop + 8002c78: 1fff7000 .word 0x1fff7000 + +08002c7c <UTIL_ADV_TRACE_PreSendHook>: +{ + 8002c7c: b508 push {r3, lr} + UTIL_LPM_SetStopMode((1 << CFG_LPM_UART_TX_Id), UTIL_LPM_DISABLE); + 8002c7e: 2101 movs r1, #1 + 8002c80: 2002 movs r0, #2 + 8002c82: f014 f81f bl 8016cc4 <UTIL_LPM_SetStopMode> +} + 8002c86: bd08 pop {r3, pc} + +08002c88 <UTIL_ADV_TRACE_PostSendHook>: +{ + 8002c88: b508 push {r3, lr} + UTIL_LPM_SetStopMode((1 << CFG_LPM_UART_TX_Id), UTIL_LPM_ENABLE); + 8002c8a: 2100 movs r1, #0 + 8002c8c: 2002 movs r0, #2 + 8002c8e: f014 f819 bl 8016cc4 <UTIL_LPM_SetStopMode> +} + 8002c92: bd08 pop {r3, pc} + +08002c94 <HAL_InitTick>: + /* USER CODE END HAL_InitTick_1 */ + return HAL_OK; + /* USER CODE BEGIN HAL_InitTick_2 */ + + /* USER CODE END HAL_InitTick_2 */ +} + 8002c94: 2000 movs r0, #0 + 8002c96: 4770 bx lr + +08002c98 <HAL_GetTick>: + +/** + * @note This function overwrites the __weak one from HAL + */ +uint32_t HAL_GetTick(void) +{ + 8002c98: b508 push {r3, lr} + uint32_t ret = 0; + /* TIMER_IF can be based on other counter the SysTick e.g. RTC */ + /* USER CODE BEGIN HAL_GetTick_1 */ + + /* USER CODE END HAL_GetTick_1 */ + if (SYS_TimerInitialisedFlag == 0) + 8002c9a: 4b04 ldr r3, [pc, #16] ; (8002cac <HAL_GetTick+0x14>) + 8002c9c: 781b ldrb r3, [r3, #0] + 8002c9e: b90b cbnz r3, 8002ca4 <HAL_GetTick+0xc> + uint32_t ret = 0; + 8002ca0: 2000 movs r0, #0 + } + /* USER CODE BEGIN HAL_GetTick_2 */ + + /* USER CODE END HAL_GetTick_2 */ + return ret; +} + 8002ca2: bd08 pop {r3, pc} + ret = TIMER_IF_GetTimerValue(); + 8002ca4: f000 f8d0 bl 8002e48 <TIMER_IF_GetTimerValue> + 8002ca8: e7fb b.n 8002ca2 <HAL_GetTick+0xa> + 8002caa: bf00 nop + 8002cac: 20000ad8 .word 0x20000ad8 + +08002cb0 <HAL_Delay>: + +/** + * @note This function overwrites the __weak one from HAL + */ +void HAL_Delay(__IO uint32_t Delay) +{ + 8002cb0: b500 push {lr} + 8002cb2: b083 sub sp, #12 + 8002cb4: 9001 str r0, [sp, #4] + /* TIMER_IF can be based on other counter the SysTick e.g. RTC */ + /* USER CODE BEGIN HAL_Delay_1 */ + + /* USER CODE END HAL_Delay_1 */ + TIMER_IF_DelayMs(Delay); + 8002cb6: 9801 ldr r0, [sp, #4] + 8002cb8: f000 f9ac bl 8003014 <TIMER_IF_DelayMs> + /* USER CODE BEGIN HAL_Delay_2 */ + + /* USER CODE END HAL_Delay_2 */ +} + 8002cbc: b003 add sp, #12 + 8002cbe: f85d fb04 ldr.w pc, [sp], #4 + ... + +08002cc4 <DBG_Init>: + +/** + * @brief Initializes the SW probes pins and the monitor RF pins via Alternate Function + */ +void DBG_Init(void) +{ + 8002cc4: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8002cc8: b08b sub sp, #44 ; 0x2c + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableIT_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->IMR2, ExtiLine); + 8002cca: 4a39 ldr r2, [pc, #228] ; (8002db0 <DBG_Init+0xec>) + 8002ccc: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8002cd0: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 8002cd4: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + HAL_DBGMCU_DisableDBGStandbyMode(); +#elif defined (DEBUGGER_ENABLED) && ( DEBUGGER_ENABLED == 1 ) + /*Debug power up request wakeup CBDGPWRUPREQ*/ + LL_EXTI_EnableIT_32_63(LL_EXTI_LINE_46); + /* Disabled HAL_DBGMCU_ */ + HAL_DBGMCU_EnableDBGSleepMode(); + 8002cd8: f005 fa9e bl 8008218 <HAL_DBGMCU_EnableDBGSleepMode> + HAL_DBGMCU_EnableDBGStopMode(); + 8002cdc: f005 faa4 bl 8008228 <HAL_DBGMCU_EnableDBGStopMode> + HAL_DBGMCU_EnableDBGStandbyMode(); + 8002ce0: f005 faaa bl 8008238 <HAL_DBGMCU_EnableDBGStandbyMode> +#elif !defined (DEBUGGER_ENABLED) +#error "DEBUGGER_ENABLED not defined or out of range <0,1>" +#endif /* DEBUGGER_OFF */ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8002ce4: 2400 movs r4, #0 + 8002ce6: 9405 str r4, [sp, #20] + 8002ce8: 9406 str r4, [sp, #24] + 8002cea: 9407 str r4, [sp, #28] + 8002cec: 9408 str r4, [sp, #32] + 8002cee: 9409 str r4, [sp, #36] ; 0x24 + + /* Configure the GPIO pin */ + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8002cf0: 2301 movs r3, #1 + 8002cf2: 9306 str r3, [sp, #24] + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 8002cf4: 2303 movs r3, #3 + 8002cf6: 9308 str r3, [sp, #32] + SET_BIT(RCC->AHB2ENR, Periphs); + 8002cf8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002cfc: 6cda ldr r2, [r3, #76] ; 0x4c + 8002cfe: f042 0202 orr.w r2, r2, #2 + 8002d02: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8002d04: 6cda ldr r2, [r3, #76] ; 0x4c + 8002d06: f002 0202 and.w r2, r2, #2 + 8002d0a: 9204 str r2, [sp, #16] + (void)tmpreg; + 8002d0c: 9a04 ldr r2, [sp, #16] + SET_BIT(RCC->AHB2ENR, Periphs); + 8002d0e: 6cda ldr r2, [r3, #76] ; 0x4c + 8002d10: f042 0202 orr.w r2, r2, #2 + 8002d14: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8002d16: 6cda ldr r2, [r3, #76] ; 0x4c + 8002d18: f002 0202 and.w r2, r2, #2 + 8002d1c: 9203 str r2, [sp, #12] + (void)tmpreg; + 8002d1e: 9a03 ldr r2, [sp, #12] + SET_BIT(RCC->AHB2ENR, Periphs); + 8002d20: 6cda ldr r2, [r3, #76] ; 0x4c + 8002d22: f042 0202 orr.w r2, r2, #2 + 8002d26: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8002d28: 6cda ldr r2, [r3, #76] ; 0x4c + 8002d2a: f002 0202 and.w r2, r2, #2 + 8002d2e: 9202 str r2, [sp, #8] + (void)tmpreg; + 8002d30: 9a02 ldr r2, [sp, #8] + SET_BIT(RCC->AHB2ENR, Periphs); + 8002d32: 6cda ldr r2, [r3, #76] ; 0x4c + 8002d34: f042 0202 orr.w r2, r2, #2 + 8002d38: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8002d3a: 6cdb ldr r3, [r3, #76] ; 0x4c + 8002d3c: f003 0302 and.w r3, r3, #2 + 8002d40: 9301 str r3, [sp, #4] + (void)tmpreg; + 8002d42: 9b01 ldr r3, [sp, #4] + PROBE_LINE1_CLK_ENABLE(); + PROBE_LINE2_CLK_ENABLE(); + PROBE_LINE3_CLK_ENABLE(); + PROBE_LINE4_CLK_ENABLE(); + + GPIO_InitStruct.Pin = PROBE_LINE1_PIN; + 8002d44: f44f 5980 mov.w r9, #4096 ; 0x1000 + 8002d48: f8cd 9014 str.w r9, [sp, #20] + HAL_GPIO_Init(PROBE_LINE1_PORT, &GPIO_InitStruct); + 8002d4c: 4d19 ldr r5, [pc, #100] ; (8002db4 <DBG_Init+0xf0>) + 8002d4e: a905 add r1, sp, #20 + 8002d50: 4628 mov r0, r5 + 8002d52: f006 fb7b bl 800944c <HAL_GPIO_Init> + GPIO_InitStruct.Pin = PROBE_LINE2_PIN; + 8002d56: f44f 5800 mov.w r8, #8192 ; 0x2000 + 8002d5a: f8cd 8014 str.w r8, [sp, #20] + HAL_GPIO_Init(PROBE_LINE2_PORT, &GPIO_InitStruct); + 8002d5e: a905 add r1, sp, #20 + 8002d60: 4628 mov r0, r5 + 8002d62: f006 fb73 bl 800944c <HAL_GPIO_Init> + GPIO_InitStruct.Pin = PROBE_LINE3_PIN; + 8002d66: f44f 6700 mov.w r7, #2048 ; 0x800 + 8002d6a: 9705 str r7, [sp, #20] + HAL_GPIO_Init(PROBE_LINE3_PORT, &GPIO_InitStruct); + 8002d6c: a905 add r1, sp, #20 + 8002d6e: 4628 mov r0, r5 + 8002d70: f006 fb6c bl 800944c <HAL_GPIO_Init> + GPIO_InitStruct.Pin = PROBE_LINE4_PIN; + 8002d74: f44f 4600 mov.w r6, #32768 ; 0x8000 + 8002d78: 9605 str r6, [sp, #20] + HAL_GPIO_Init(PROBE_LINE4_PORT, &GPIO_InitStruct); + 8002d7a: a905 add r1, sp, #20 + 8002d7c: 4628 mov r0, r5 + 8002d7e: f006 fb65 bl 800944c <HAL_GPIO_Init> + + /* Reset probe Pins */ + HAL_GPIO_WritePin(PROBE_LINE1_PORT, PROBE_LINE1_PIN, GPIO_PIN_RESET); + 8002d82: 4622 mov r2, r4 + 8002d84: 4649 mov r1, r9 + 8002d86: 4628 mov r0, r5 + 8002d88: f006 fcb7 bl 80096fa <HAL_GPIO_WritePin> + HAL_GPIO_WritePin(PROBE_LINE2_PORT, PROBE_LINE2_PIN, GPIO_PIN_RESET); + 8002d8c: 4622 mov r2, r4 + 8002d8e: 4641 mov r1, r8 + 8002d90: 4628 mov r0, r5 + 8002d92: f006 fcb2 bl 80096fa <HAL_GPIO_WritePin> + HAL_GPIO_WritePin(PROBE_LINE3_PORT, PROBE_LINE3_PIN, GPIO_PIN_RESET); + 8002d96: 4622 mov r2, r4 + 8002d98: 4639 mov r1, r7 + 8002d9a: 4628 mov r0, r5 + 8002d9c: f006 fcad bl 80096fa <HAL_GPIO_WritePin> + HAL_GPIO_WritePin(PROBE_LINE4_PORT, PROBE_LINE4_PIN, GPIO_PIN_RESET); + 8002da0: 4622 mov r2, r4 + 8002da2: 4631 mov r1, r6 + 8002da4: 4628 mov r0, r5 + 8002da6: f006 fca8 bl 80096fa <HAL_GPIO_WritePin> +#endif /* DEBUG_RF_BUSY_ENABLED */ + + /* USER CODE BEGIN DBG_Init_3 */ + + /* USER CODE END DBG_Init_3 */ +} + 8002daa: b00b add sp, #44 ; 0x2c + 8002dac: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8002db0: 58000800 .word 0x58000800 + 8002db4: 48000400 .word 0x48000400 + +08002db8 <EnvSensors_Read>: + +/* USER CODE END PFP */ + +/* Exported functions --------------------------------------------------------*/ +int32_t EnvSensors_Read(sensor_t *sensor_data) +{ + 8002db8: b510 push {r4, lr} + 8002dba: 4604 mov r4, r0 +#if (USE_IKS01A3_ENV_SENSOR_LPS22HH_0 == 1) + IKS01A3_ENV_SENSOR_GetValue(IKS01A3_LPS22HH_0, ENV_PRESSURE, &PRESSURE_Value); + IKS01A3_ENV_SENSOR_GetValue(IKS01A3_LPS22HH_0, ENV_TEMPERATURE, &TEMPERATURE_Value); +#endif /* USE_IKS01A3_ENV_SENSOR_LPS22HH_0 */ +#else + TEMPERATURE_Value = (SYS_GetTemperatureLevel() >> 8); + 8002dbc: f7ff f8d8 bl 8001f70 <SYS_GetTemperatureLevel> + 8002dc0: f340 200f sbfx r0, r0, #8, #16 + 8002dc4: f7fe fe2a bl 8001a1c <__aeabi_i2f> +#endif /* SENSOR_ENABLED */ + + sensor_data->humidity = HUMIDITY_Value; + 8002dc8: 4b05 ldr r3, [pc, #20] ; (8002de0 <EnvSensors_Read+0x28>) + 8002dca: 60a3 str r3, [r4, #8] + sensor_data->temperature = TEMPERATURE_Value; + 8002dcc: 6060 str r0, [r4, #4] + sensor_data->pressure = PRESSURE_Value; + 8002dce: 4b05 ldr r3, [pc, #20] ; (8002de4 <EnvSensors_Read+0x2c>) + 8002dd0: 6023 str r3, [r4, #0] + + sensor_data->latitude = (int32_t)((STSOP_LATTITUDE * MAX_GPS_POS) / 90); + 8002dd2: 4b05 ldr r3, [pc, #20] ; (8002de8 <EnvSensors_Read+0x30>) + 8002dd4: 60e3 str r3, [r4, #12] + sensor_data->longitude = (int32_t)((STSOP_LONGITUDE * MAX_GPS_POS) / 180); + 8002dd6: 4b05 ldr r3, [pc, #20] ; (8002dec <EnvSensors_Read+0x34>) + 8002dd8: 6123 str r3, [r4, #16] + + return 0; + /* USER CODE END EnvSensors_Read */ +} + 8002dda: 2000 movs r0, #0 + 8002ddc: bd10 pop {r4, pc} + 8002dde: bf00 nop + 8002de0: 42480000 .word 0x42480000 + 8002de4: 447a0000 .word 0x447a0000 + 8002de8: 003e090d .word 0x003e090d + 8002dec: 000503ab .word 0x000503ab + +08002df0 <EnvSensors_Init>: +#elif !defined (SENSOR_ENABLED) +#error SENSOR_ENABLED not defined +#endif /* SENSOR_ENABLED */ + /* USER CODE END EnvSensors_Init */ + return ret; +} + 8002df0: 2000 movs r0, #0 + 8002df2: 4770 bx lr + +08002df4 <TIMER_IF_SetTimerContext>: + * @retval If binary mode is none, Value between Min_Data=0x0 and Max_Data=0x7FFF + * else Value between Min_Data=0x0 and Max_Data=0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_RTC_TIME_GetSubSecond(RTC_TypeDef *RTCx) +{ + return (uint32_t)(READ_BIT(RTCx->SSR, RTC_SSR_SS)); + 8002df4: 4b06 ldr r3, [pc, #24] ; (8002e10 <TIMER_IF_SetTimerContext+0x1c>) + 8002df6: 6898 ldr r0, [r3, #8] + /* USER CODE BEGIN GetTimerTicks */ + + /* USER CODE END GetTimerTicks */ + uint32_t ssr = LL_RTC_TIME_GetSubSecond(RTC); + /* read twice to make sure value it valid*/ + while (ssr != LL_RTC_TIME_GetSubSecond(RTC)) + 8002df8: e001 b.n 8002dfe <TIMER_IF_SetTimerContext+0xa> + 8002dfa: 4b05 ldr r3, [pc, #20] ; (8002e10 <TIMER_IF_SetTimerContext+0x1c>) + 8002dfc: 6898 ldr r0, [r3, #8] + 8002dfe: 4b04 ldr r3, [pc, #16] ; (8002e10 <TIMER_IF_SetTimerContext+0x1c>) + 8002e00: 689b ldr r3, [r3, #8] + 8002e02: 4283 cmp r3, r0 + 8002e04: d1f9 bne.n 8002dfa <TIMER_IF_SetTimerContext+0x6> + { + ssr = LL_RTC_TIME_GetSubSecond(RTC); + } + return UINT32_MAX - ssr; + 8002e06: 43c0 mvns r0, r0 + RtcTimerContext = GetTimerTicks(); + 8002e08: 4b02 ldr r3, [pc, #8] ; (8002e14 <TIMER_IF_SetTimerContext+0x20>) + 8002e0a: 6018 str r0, [r3, #0] +} + 8002e0c: 4770 bx lr + 8002e0e: bf00 nop + 8002e10: 40002800 .word 0x40002800 + 8002e14: 20000adc .word 0x20000adc + +08002e18 <TIMER_IF_GetTimerContext>: +} + 8002e18: 4b01 ldr r3, [pc, #4] ; (8002e20 <TIMER_IF_GetTimerContext+0x8>) + 8002e1a: 6818 ldr r0, [r3, #0] + 8002e1c: 4770 bx lr + 8002e1e: bf00 nop + 8002e20: 20000adc .word 0x20000adc + +08002e24 <TIMER_IF_GetTimerElapsedTime>: + 8002e24: 4b06 ldr r3, [pc, #24] ; (8002e40 <TIMER_IF_GetTimerElapsedTime+0x1c>) + 8002e26: 6898 ldr r0, [r3, #8] + while (ssr != LL_RTC_TIME_GetSubSecond(RTC)) + 8002e28: e001 b.n 8002e2e <TIMER_IF_GetTimerElapsedTime+0xa> + 8002e2a: 4b05 ldr r3, [pc, #20] ; (8002e40 <TIMER_IF_GetTimerElapsedTime+0x1c>) + 8002e2c: 6898 ldr r0, [r3, #8] + 8002e2e: 4b04 ldr r3, [pc, #16] ; (8002e40 <TIMER_IF_GetTimerElapsedTime+0x1c>) + 8002e30: 689b ldr r3, [r3, #8] + 8002e32: 4283 cmp r3, r0 + 8002e34: d1f9 bne.n 8002e2a <TIMER_IF_GetTimerElapsedTime+0x6> + return UINT32_MAX - ssr; + 8002e36: 43c0 mvns r0, r0 + ret = ((uint32_t)(GetTimerTicks() - RtcTimerContext)); + 8002e38: 4b02 ldr r3, [pc, #8] ; (8002e44 <TIMER_IF_GetTimerElapsedTime+0x20>) + 8002e3a: 681b ldr r3, [r3, #0] +} + 8002e3c: 1ac0 subs r0, r0, r3 + 8002e3e: 4770 bx lr + 8002e40: 40002800 .word 0x40002800 + 8002e44: 20000adc .word 0x20000adc + +08002e48 <TIMER_IF_GetTimerValue>: + if (RTC_Initialized == true) + 8002e48: 4b07 ldr r3, [pc, #28] ; (8002e68 <TIMER_IF_GetTimerValue+0x20>) + 8002e4a: 781b ldrb r3, [r3, #0] + 8002e4c: b153 cbz r3, 8002e64 <TIMER_IF_GetTimerValue+0x1c> + 8002e4e: 4b07 ldr r3, [pc, #28] ; (8002e6c <TIMER_IF_GetTimerValue+0x24>) + 8002e50: 6898 ldr r0, [r3, #8] + while (ssr != LL_RTC_TIME_GetSubSecond(RTC)) + 8002e52: e001 b.n 8002e58 <TIMER_IF_GetTimerValue+0x10> + 8002e54: 4b05 ldr r3, [pc, #20] ; (8002e6c <TIMER_IF_GetTimerValue+0x24>) + 8002e56: 6898 ldr r0, [r3, #8] + 8002e58: 4b04 ldr r3, [pc, #16] ; (8002e6c <TIMER_IF_GetTimerValue+0x24>) + 8002e5a: 689b ldr r3, [r3, #8] + 8002e5c: 4283 cmp r3, r0 + 8002e5e: d1f9 bne.n 8002e54 <TIMER_IF_GetTimerValue+0xc> + return UINT32_MAX - ssr; + 8002e60: 43c0 mvns r0, r0 + 8002e62: 4770 bx lr + uint32_t ret = 0; + 8002e64: 2000 movs r0, #0 +} + 8002e66: 4770 bx lr + 8002e68: 20000ad9 .word 0x20000ad9 + 8002e6c: 40002800 .word 0x40002800 + +08002e70 <TIMER_IF_GetMinimumTimeout>: +} + 8002e70: 2003 movs r0, #3 + 8002e72: 4770 bx lr + +08002e74 <TIMER_IF_Convert_ms2Tick>: +{ + 8002e74: b508 push {r3, lr} + 8002e76: 4601 mov r1, r0 + ret = ((uint32_t)((((uint64_t) timeMilliSec) << RTC_N_PREDIV_S) / 1000)); + 8002e78: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8002e7c: 2300 movs r3, #0 + 8002e7e: 0280 lsls r0, r0, #10 + 8002e80: 0d89 lsrs r1, r1, #22 + 8002e82: f7fe fe45 bl 8001b10 <__aeabi_uldivmod> +} + 8002e86: bd08 pop {r3, pc} + +08002e88 <TIMER_IF_Convert_Tick2ms>: + ret = ((uint32_t)((((uint64_t)(tick)) * 1000) >> RTC_N_PREDIV_S)); + 8002e88: 0ec2 lsrs r2, r0, #27 + 8002e8a: 0143 lsls r3, r0, #5 + 8002e8c: 1a1b subs r3, r3, r0 + 8002e8e: f162 0200 sbc.w r2, r2, #0 + 8002e92: 0092 lsls r2, r2, #2 + 8002e94: ea42 7293 orr.w r2, r2, r3, lsr #30 + 8002e98: 009b lsls r3, r3, #2 + 8002e9a: 181b adds r3, r3, r0 + 8002e9c: f142 0000 adc.w r0, r2, #0 + 8002ea0: 00c0 lsls r0, r0, #3 + 8002ea2: ea40 7053 orr.w r0, r0, r3, lsr #29 + 8002ea6: f3c3 13d5 ubfx r3, r3, #7, #22 +} + 8002eaa: ea43 5080 orr.w r0, r3, r0, lsl #22 + 8002eae: 4770 bx lr + +08002eb0 <TIMER_IF_StopTimer>: +{ + 8002eb0: b510 push {r4, lr} + __HAL_RTC_ALARM_CLEAR_FLAG(&hrtc, RTC_FLAG_ALRAF); + 8002eb2: 4b07 ldr r3, [pc, #28] ; (8002ed0 <TIMER_IF_StopTimer+0x20>) + 8002eb4: 2201 movs r2, #1 + 8002eb6: 65da str r2, [r3, #92] ; 0x5c + HAL_RTC_DeactivateAlarm(&hrtc, RTC_ALARM_A); + 8002eb8: 4c06 ldr r4, [pc, #24] ; (8002ed4 <TIMER_IF_StopTimer+0x24>) + 8002eba: f44f 7180 mov.w r1, #256 ; 0x100 + 8002ebe: 4620 mov r0, r4 + 8002ec0: f007 ff38 bl 800ad34 <HAL_RTC_DeactivateAlarm> + hrtc.IsEnabled.RtcFeatures = UINT32_MAX; + 8002ec4: f04f 33ff mov.w r3, #4294967295 + 8002ec8: 6323 str r3, [r4, #48] ; 0x30 +} + 8002eca: 2000 movs r0, #0 + 8002ecc: bd10 pop {r4, pc} + 8002ece: bf00 nop + 8002ed0: 40002800 .word 0x40002800 + 8002ed4: 20000a68 .word 0x20000a68 + +08002ed8 <TIMER_IF_BkUp_Write_MSBticks>: +{ + 8002ed8: b508 push {r3, lr} + 8002eda: 4602 mov r2, r0 + HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_MSBTICKS, MSBticks); + 8002edc: 2102 movs r1, #2 + 8002ede: 4802 ldr r0, [pc, #8] ; (8002ee8 <TIMER_IF_BkUp_Write_MSBticks+0x10>) + 8002ee0: f008 f971 bl 800b1c6 <HAL_RTCEx_BKUPWrite> +} + 8002ee4: bd08 pop {r3, pc} + 8002ee6: bf00 nop + 8002ee8: 20000a68 .word 0x20000a68 + +08002eec <TIMER_IF_Init>: +{ + 8002eec: b538 push {r3, r4, r5, lr} + if (RTC_Initialized == false) + 8002eee: 4b0f ldr r3, [pc, #60] ; (8002f2c <TIMER_IF_Init+0x40>) + 8002ef0: 781b ldrb r3, [r3, #0] + 8002ef2: b10b cbz r3, 8002ef8 <TIMER_IF_Init+0xc> +} + 8002ef4: 2000 movs r0, #0 + 8002ef6: bd38 pop {r3, r4, r5, pc} + hrtc.IsEnabled.RtcFeatures = UINT32_MAX; + 8002ef8: 4c0d ldr r4, [pc, #52] ; (8002f30 <TIMER_IF_Init+0x44>) + 8002efa: f04f 35ff mov.w r5, #4294967295 + 8002efe: 6325 str r5, [r4, #48] ; 0x30 + MX_RTC_Init(); + 8002f00: f7ff fc48 bl 8002794 <MX_RTC_Init> + TIMER_IF_StopTimer(); + 8002f04: f7ff ffd4 bl 8002eb0 <TIMER_IF_StopTimer> + HAL_RTC_DeactivateAlarm(&hrtc, RTC_ALARM_A); + 8002f08: f44f 7180 mov.w r1, #256 ; 0x100 + 8002f0c: 4620 mov r0, r4 + 8002f0e: f007 ff11 bl 800ad34 <HAL_RTC_DeactivateAlarm> + hrtc.IsEnabled.RtcFeatures = UINT32_MAX; + 8002f12: 6325 str r5, [r4, #48] ; 0x30 + HAL_RTCEx_EnableBypassShadow(&hrtc); + 8002f14: 4620 mov r0, r4 + 8002f16: f008 f8f5 bl 800b104 <HAL_RTCEx_EnableBypassShadow> + TIMER_IF_BkUp_Write_MSBticks(0); + 8002f1a: 2000 movs r0, #0 + 8002f1c: f7ff ffdc bl 8002ed8 <TIMER_IF_BkUp_Write_MSBticks> + TIMER_IF_SetTimerContext(); + 8002f20: f7ff ff68 bl 8002df4 <TIMER_IF_SetTimerContext> + RTC_Initialized = true; + 8002f24: 4b01 ldr r3, [pc, #4] ; (8002f2c <TIMER_IF_Init+0x40>) + 8002f26: 2201 movs r2, #1 + 8002f28: 701a strb r2, [r3, #0] + 8002f2a: e7e3 b.n 8002ef4 <TIMER_IF_Init+0x8> + 8002f2c: 20000ad9 .word 0x20000ad9 + 8002f30: 20000a68 .word 0x20000a68 + +08002f34 <TIMER_IF_BkUp_Write_Seconds>: +{ + 8002f34: b508 push {r3, lr} + 8002f36: 4602 mov r2, r0 + HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_SECONDS, Seconds); + 8002f38: 2100 movs r1, #0 + 8002f3a: 4802 ldr r0, [pc, #8] ; (8002f44 <TIMER_IF_BkUp_Write_Seconds+0x10>) + 8002f3c: f008 f943 bl 800b1c6 <HAL_RTCEx_BKUPWrite> +} + 8002f40: bd08 pop {r3, pc} + 8002f42: bf00 nop + 8002f44: 20000a68 .word 0x20000a68 + +08002f48 <TIMER_IF_BkUp_Write_SubSeconds>: +{ + 8002f48: b508 push {r3, lr} + 8002f4a: 4602 mov r2, r0 + HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_SUBSECONDS, SubSeconds); + 8002f4c: 2101 movs r1, #1 + 8002f4e: 4802 ldr r0, [pc, #8] ; (8002f58 <TIMER_IF_BkUp_Write_SubSeconds+0x10>) + 8002f50: f008 f939 bl 800b1c6 <HAL_RTCEx_BKUPWrite> +} + 8002f54: bd08 pop {r3, pc} + 8002f56: bf00 nop + 8002f58: 20000a68 .word 0x20000a68 + +08002f5c <TIMER_IF_StartTimer>: +{ + 8002f5c: b510 push {r4, lr} + 8002f5e: b08c sub sp, #48 ; 0x30 + 8002f60: 4604 mov r4, r0 + RTC_AlarmTypeDef sAlarm = {0}; + 8002f62: 222c movs r2, #44 ; 0x2c + 8002f64: 2100 movs r1, #0 + 8002f66: a801 add r0, sp, #4 + 8002f68: f014 fbaa bl 80176c0 <memset> + TIMER_IF_StopTimer(); + 8002f6c: f7ff ffa0 bl 8002eb0 <TIMER_IF_StopTimer> + timeout += RtcTimerContext; + 8002f70: 4b0c ldr r3, [pc, #48] ; (8002fa4 <TIMER_IF_StartTimer+0x48>) + 8002f72: 681b ldr r3, [r3, #0] + 8002f74: 441c add r4, r3 + sAlarm.BinaryAutoClr = RTC_ALARMSUBSECONDBIN_AUTOCLR_NO; + 8002f76: 2300 movs r3, #0 + 8002f78: 9308 str r3, [sp, #32] + sAlarm.AlarmTime.SubSeconds = UINT32_MAX - timeout; + 8002f7a: 43e4 mvns r4, r4 + 8002f7c: 9402 str r4, [sp, #8] + sAlarm.AlarmMask = RTC_ALARMMASK_NONE; + 8002f7e: 9306 str r3, [sp, #24] + sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDBINMASK_NONE; + 8002f80: f04f 5300 mov.w r3, #536870912 ; 0x20000000 + 8002f84: 9307 str r3, [sp, #28] + sAlarm.Alarm = RTC_ALARM_A; + 8002f86: f44f 7380 mov.w r3, #256 ; 0x100 + 8002f8a: 930b str r3, [sp, #44] ; 0x2c + if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BCD) != HAL_OK) + 8002f8c: 2201 movs r2, #1 + 8002f8e: a901 add r1, sp, #4 + 8002f90: 4805 ldr r0, [pc, #20] ; (8002fa8 <TIMER_IF_StartTimer+0x4c>) + 8002f92: f007 fffb bl 800af8c <HAL_RTC_SetAlarm_IT> + 8002f96: b910 cbnz r0, 8002f9e <TIMER_IF_StartTimer+0x42> +} + 8002f98: 2000 movs r0, #0 + 8002f9a: b00c add sp, #48 ; 0x30 + 8002f9c: bd10 pop {r4, pc} + Error_Handler(); + 8002f9e: f7ff fb9d bl 80026dc <Error_Handler> + 8002fa2: e7f9 b.n 8002f98 <TIMER_IF_StartTimer+0x3c> + 8002fa4: 20000adc .word 0x20000adc + 8002fa8: 20000a68 .word 0x20000a68 + +08002fac <TIMER_IF_BkUp_Read_MSBticks>: +{ + 8002fac: b508 push {r3, lr} + MSBticks = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_MSBTICKS); + 8002fae: 2102 movs r1, #2 + 8002fb0: 4801 ldr r0, [pc, #4] ; (8002fb8 <TIMER_IF_BkUp_Read_MSBticks+0xc>) + 8002fb2: f008 f90f bl 800b1d4 <HAL_RTCEx_BKUPRead> +} + 8002fb6: bd08 pop {r3, pc} + 8002fb8: 20000a68 .word 0x20000a68 + +08002fbc <TIMER_IF_GetTime>: +{ + 8002fbc: b538 push {r3, r4, r5, lr} + 8002fbe: 4605 mov r5, r0 + 8002fc0: 4b0b ldr r3, [pc, #44] ; (8002ff0 <TIMER_IF_GetTime+0x34>) + 8002fc2: 689c ldr r4, [r3, #8] + while (ssr != LL_RTC_TIME_GetSubSecond(RTC)) + 8002fc4: e001 b.n 8002fca <TIMER_IF_GetTime+0xe> + 8002fc6: 4b0a ldr r3, [pc, #40] ; (8002ff0 <TIMER_IF_GetTime+0x34>) + 8002fc8: 689c ldr r4, [r3, #8] + 8002fca: 4a09 ldr r2, [pc, #36] ; (8002ff0 <TIMER_IF_GetTime+0x34>) + 8002fcc: 6892 ldr r2, [r2, #8] + 8002fce: 42a2 cmp r2, r4 + 8002fd0: d1f9 bne.n 8002fc6 <TIMER_IF_GetTime+0xa> + return UINT32_MAX - ssr; + 8002fd2: 43e4 mvns r4, r4 + uint32_t timerValueMSB = TIMER_IF_BkUp_Read_MSBticks(); + 8002fd4: f7ff ffea bl 8002fac <TIMER_IF_BkUp_Read_MSBticks> + ticks = (((uint64_t) timerValueMSB) << 32) + timerValueLsb; + 8002fd8: 4623 mov r3, r4 + seconds = (uint32_t)(ticks >> RTC_N_PREDIV_S); + 8002fda: 0aa4 lsrs r4, r4, #10 + 8002fdc: ea44 5480 orr.w r4, r4, r0, lsl #22 + *mSeconds = TIMER_IF_Convert_Tick2ms(ticks); + 8002fe0: f3c3 0009 ubfx r0, r3, #0, #10 + 8002fe4: f7ff ff50 bl 8002e88 <TIMER_IF_Convert_Tick2ms> + 8002fe8: 8028 strh r0, [r5, #0] +} + 8002fea: 4620 mov r0, r4 + 8002fec: bd38 pop {r3, r4, r5, pc} + 8002fee: bf00 nop + 8002ff0: 40002800 .word 0x40002800 + +08002ff4 <TIMER_IF_BkUp_Read_Seconds>: +{ + 8002ff4: b508 push {r3, lr} + ret = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_SECONDS); + 8002ff6: 2100 movs r1, #0 + 8002ff8: 4801 ldr r0, [pc, #4] ; (8003000 <TIMER_IF_BkUp_Read_Seconds+0xc>) + 8002ffa: f008 f8eb bl 800b1d4 <HAL_RTCEx_BKUPRead> +} + 8002ffe: bd08 pop {r3, pc} + 8003000: 20000a68 .word 0x20000a68 + +08003004 <TIMER_IF_BkUp_Read_SubSeconds>: +{ + 8003004: b508 push {r3, lr} + ret = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_SUBSECONDS); + 8003006: 2101 movs r1, #1 + 8003008: 4801 ldr r0, [pc, #4] ; (8003010 <TIMER_IF_BkUp_Read_SubSeconds+0xc>) + 800300a: f008 f8e3 bl 800b1d4 <HAL_RTCEx_BKUPRead> +} + 800300e: bd08 pop {r3, pc} + 8003010: 20000a68 .word 0x20000a68 + +08003014 <TIMER_IF_DelayMs>: +{ + 8003014: b508 push {r3, lr} + uint32_t delayTicks = TIMER_IF_Convert_ms2Tick(delay); + 8003016: f7ff ff2d bl 8002e74 <TIMER_IF_Convert_ms2Tick> + 800301a: 4b0d ldr r3, [pc, #52] ; (8003050 <TIMER_IF_DelayMs+0x3c>) + 800301c: 6899 ldr r1, [r3, #8] + while (ssr != LL_RTC_TIME_GetSubSecond(RTC)) + 800301e: e001 b.n 8003024 <TIMER_IF_DelayMs+0x10> + 8003020: 4b0b ldr r3, [pc, #44] ; (8003050 <TIMER_IF_DelayMs+0x3c>) + 8003022: 6899 ldr r1, [r3, #8] + 8003024: 4a0a ldr r2, [pc, #40] ; (8003050 <TIMER_IF_DelayMs+0x3c>) + 8003026: 6892 ldr r2, [r2, #8] + 8003028: 428a cmp r2, r1 + 800302a: d1f9 bne.n 8003020 <TIMER_IF_DelayMs+0xc> + return UINT32_MAX - ssr; + 800302c: 43c9 mvns r1, r1 + while (((GetTimerTicks() - timeout)) < delayTicks) + 800302e: e00a b.n 8003046 <TIMER_IF_DelayMs+0x32> + 8003030: 4b07 ldr r3, [pc, #28] ; (8003050 <TIMER_IF_DelayMs+0x3c>) + 8003032: 689b ldr r3, [r3, #8] + 8003034: 4a06 ldr r2, [pc, #24] ; (8003050 <TIMER_IF_DelayMs+0x3c>) + 8003036: 6892 ldr r2, [r2, #8] + while (ssr != LL_RTC_TIME_GetSubSecond(RTC)) + 8003038: 429a cmp r2, r3 + 800303a: d1f9 bne.n 8003030 <TIMER_IF_DelayMs+0x1c> + return UINT32_MAX - ssr; + 800303c: 43db mvns r3, r3 + while (((GetTimerTicks() - timeout)) < delayTicks) + 800303e: 1a5b subs r3, r3, r1 + 8003040: 4283 cmp r3, r0 + 8003042: d203 bcs.n 800304c <TIMER_IF_DelayMs+0x38> + __NOP(); + 8003044: bf00 nop + 8003046: 4b02 ldr r3, [pc, #8] ; (8003050 <TIMER_IF_DelayMs+0x3c>) + 8003048: 689b ldr r3, [r3, #8] + while (ssr != LL_RTC_TIME_GetSubSecond(RTC)) + 800304a: e7f3 b.n 8003034 <TIMER_IF_DelayMs+0x20> +} + 800304c: bd08 pop {r3, pc} + 800304e: bf00 nop + 8003050: 40002800 .word 0x40002800 + +08003054 <HAL_RTC_AlarmAEventCallback>: +{ + 8003054: b508 push {r3, lr} + UTIL_TIMER_IRQ_MAP_PROCESS(); + 8003056: f014 f97b bl 8017350 <UTIL_TIMER_IRQ_Handler> +} + 800305a: bd08 pop {r3, pc} + +0800305c <HAL_RTCEx_SSRUEventCallback>: +{ + 800305c: b508 push {r3, lr} + uint32_t MSB_ticks = TIMER_IF_BkUp_Read_MSBticks(); + 800305e: f7ff ffa5 bl 8002fac <TIMER_IF_BkUp_Read_MSBticks> + TIMER_IF_BkUp_Write_MSBticks(MSB_ticks + 1); + 8003062: 3001 adds r0, #1 + 8003064: f7ff ff38 bl 8002ed8 <TIMER_IF_BkUp_Write_MSBticks> +} + 8003068: bd08 pop {r3, pc} + ... + +0800306c <MX_USART2_UART_Init>: +DMA_HandleTypeDef hdma_usart2_rx; + +/* USART2 init function */ + +void MX_USART2_UART_Init(void) +{ + 800306c: b508 push {r3, lr} + /* USER CODE END USART2_Init 0 */ + + /* USER CODE BEGIN USART2_Init 1 */ + + /* USER CODE END USART2_Init 1 */ + huart2.Instance = USART2; + 800306e: 4817 ldr r0, [pc, #92] ; (80030cc <MX_USART2_UART_Init+0x60>) + 8003070: 4b17 ldr r3, [pc, #92] ; (80030d0 <MX_USART2_UART_Init+0x64>) + 8003072: 6003 str r3, [r0, #0] + huart2.Init.BaudRate = 115200; + 8003074: f44f 33e1 mov.w r3, #115200 ; 0x1c200 + 8003078: 6043 str r3, [r0, #4] + huart2.Init.WordLength = UART_WORDLENGTH_8B; + 800307a: 2300 movs r3, #0 + 800307c: 6083 str r3, [r0, #8] + huart2.Init.StopBits = UART_STOPBITS_1; + 800307e: 60c3 str r3, [r0, #12] + huart2.Init.Parity = UART_PARITY_NONE; + 8003080: 6103 str r3, [r0, #16] + huart2.Init.Mode = UART_MODE_TX_RX; + 8003082: 220c movs r2, #12 + 8003084: 6142 str r2, [r0, #20] + huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + 8003086: 6183 str r3, [r0, #24] + huart2.Init.OverSampling = UART_OVERSAMPLING_16; + 8003088: 61c3 str r3, [r0, #28] + huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + 800308a: 6203 str r3, [r0, #32] + huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1; + 800308c: 6243 str r3, [r0, #36] ; 0x24 + huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + 800308e: 6283 str r3, [r0, #40] ; 0x28 + if (HAL_UART_Init(&huart2) != HAL_OK) + 8003090: f009 fbfc bl 800c88c <HAL_UART_Init> + 8003094: b970 cbnz r0, 80030b4 <MX_USART2_UART_Init+0x48> + { + Error_Handler(); + } + if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) + 8003096: 2100 movs r1, #0 + 8003098: 480c ldr r0, [pc, #48] ; (80030cc <MX_USART2_UART_Init+0x60>) + 800309a: f009 fdac bl 800cbf6 <HAL_UARTEx_SetTxFifoThreshold> + 800309e: b960 cbnz r0, 80030ba <MX_USART2_UART_Init+0x4e> + { + Error_Handler(); + } + if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) + 80030a0: 2100 movs r1, #0 + 80030a2: 480a ldr r0, [pc, #40] ; (80030cc <MX_USART2_UART_Init+0x60>) + 80030a4: f009 fdcc bl 800cc40 <HAL_UARTEx_SetRxFifoThreshold> + 80030a8: b950 cbnz r0, 80030c0 <MX_USART2_UART_Init+0x54> + { + Error_Handler(); + } + if (HAL_UARTEx_EnableFifoMode(&huart2) != HAL_OK) + 80030aa: 4808 ldr r0, [pc, #32] ; (80030cc <MX_USART2_UART_Init+0x60>) + 80030ac: f009 fd7f bl 800cbae <HAL_UARTEx_EnableFifoMode> + 80030b0: b948 cbnz r0, 80030c6 <MX_USART2_UART_Init+0x5a> + } + /* USER CODE BEGIN USART2_Init 2 */ + + /* USER CODE END USART2_Init 2 */ + +} + 80030b2: bd08 pop {r3, pc} + Error_Handler(); + 80030b4: f7ff fb12 bl 80026dc <Error_Handler> + 80030b8: e7ed b.n 8003096 <MX_USART2_UART_Init+0x2a> + Error_Handler(); + 80030ba: f7ff fb0f bl 80026dc <Error_Handler> + 80030be: e7ef b.n 80030a0 <MX_USART2_UART_Init+0x34> + Error_Handler(); + 80030c0: f7ff fb0c bl 80026dc <Error_Handler> + 80030c4: e7f1 b.n 80030aa <MX_USART2_UART_Init+0x3e> + Error_Handler(); + 80030c6: f7ff fb09 bl 80026dc <Error_Handler> +} + 80030ca: e7f2 b.n 80030b2 <MX_USART2_UART_Init+0x46> + 80030cc: 20000ba0 .word 0x20000ba0 + 80030d0: 40004400 .word 0x40004400 + +080030d4 <HAL_UART_MspInit>: + +void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) +{ + 80030d4: b530 push {r4, r5, lr} + 80030d6: b097 sub sp, #92 ; 0x5c + 80030d8: 4604 mov r4, r0 + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 80030da: 2100 movs r1, #0 + 80030dc: 9111 str r1, [sp, #68] ; 0x44 + 80030de: 9112 str r1, [sp, #72] ; 0x48 + 80030e0: 9113 str r1, [sp, #76] ; 0x4c + 80030e2: 9114 str r1, [sp, #80] ; 0x50 + 80030e4: 9115 str r1, [sp, #84] ; 0x54 + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + 80030e6: 2238 movs r2, #56 ; 0x38 + 80030e8: a803 add r0, sp, #12 + 80030ea: f014 fae9 bl 80176c0 <memset> + if(uartHandle->Instance==USART2) + 80030ee: 6822 ldr r2, [r4, #0] + 80030f0: 4b35 ldr r3, [pc, #212] ; (80031c8 <HAL_UART_MspInit+0xf4>) + 80030f2: 429a cmp r2, r3 + 80030f4: d001 beq.n 80030fa <HAL_UART_MspInit+0x26> + HAL_NVIC_EnableIRQ(USART2_IRQn); + /* USER CODE BEGIN USART2_MspInit 1 */ + + /* USER CODE END USART2_MspInit 1 */ + } +} + 80030f6: b017 add sp, #92 ; 0x5c + 80030f8: bd30 pop {r4, r5, pc} + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART2; + 80030fa: 2302 movs r3, #2 + 80030fc: 9303 str r3, [sp, #12] + PeriphClkInitStruct.Usart2ClockSelection = RCC_USART2CLKSOURCE_SYSCLK; + 80030fe: 4b33 ldr r3, [pc, #204] ; (80031cc <HAL_UART_MspInit+0xf8>) + 8003100: 9305 str r3, [sp, #20] + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + 8003102: a803 add r0, sp, #12 + 8003104: f007 fccc bl 800aaa0 <HAL_RCCEx_PeriphCLKConfig> + 8003108: 2800 cmp r0, #0 + 800310a: d154 bne.n 80031b6 <HAL_UART_MspInit+0xe2> + SET_BIT(RCC->APB1ENR1, Periphs); + 800310c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8003110: 6d9a ldr r2, [r3, #88] ; 0x58 + 8003112: f442 3200 orr.w r2, r2, #131072 ; 0x20000 + 8003116: 659a str r2, [r3, #88] ; 0x58 + tmpreg = READ_BIT(RCC->APB1ENR1, Periphs); + 8003118: 6d9a ldr r2, [r3, #88] ; 0x58 + 800311a: f402 3200 and.w r2, r2, #131072 ; 0x20000 + 800311e: 9202 str r2, [sp, #8] + (void)tmpreg; + 8003120: 9a02 ldr r2, [sp, #8] + SET_BIT(RCC->AHB2ENR, Periphs); + 8003122: 6cda ldr r2, [r3, #76] ; 0x4c + 8003124: f042 0201 orr.w r2, r2, #1 + 8003128: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 800312a: 6cdb ldr r3, [r3, #76] ; 0x4c + 800312c: f003 0301 and.w r3, r3, #1 + 8003130: 9301 str r3, [sp, #4] + (void)tmpreg; + 8003132: 9b01 ldr r3, [sp, #4] + GPIO_InitStruct.Pin = USARTx_RX_Pin|USARTx_TX_Pin; + 8003134: 230c movs r3, #12 + 8003136: 9311 str r3, [sp, #68] ; 0x44 + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8003138: 2302 movs r3, #2 + 800313a: 9312 str r3, [sp, #72] ; 0x48 + GPIO_InitStruct.Pull = GPIO_NOPULL; + 800313c: 2500 movs r5, #0 + 800313e: 9513 str r5, [sp, #76] ; 0x4c + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 8003140: 2303 movs r3, #3 + 8003142: 9314 str r3, [sp, #80] ; 0x50 + GPIO_InitStruct.Alternate = GPIO_AF7_USART2; + 8003144: 2307 movs r3, #7 + 8003146: 9315 str r3, [sp, #84] ; 0x54 + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8003148: a911 add r1, sp, #68 ; 0x44 + 800314a: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 800314e: f006 f97d bl 800944c <HAL_GPIO_Init> + hdma_usart2_tx.Instance = DMA1_Channel7; + 8003152: 481f ldr r0, [pc, #124] ; (80031d0 <HAL_UART_MspInit+0xfc>) + 8003154: 4b1f ldr r3, [pc, #124] ; (80031d4 <HAL_UART_MspInit+0x100>) + 8003156: 6003 str r3, [r0, #0] + hdma_usart2_tx.Init.Request = DMA_REQUEST_USART2_TX; + 8003158: 2314 movs r3, #20 + 800315a: 6043 str r3, [r0, #4] + hdma_usart2_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; + 800315c: 2310 movs r3, #16 + 800315e: 6083 str r3, [r0, #8] + hdma_usart2_tx.Init.PeriphInc = DMA_PINC_DISABLE; + 8003160: 60c5 str r5, [r0, #12] + hdma_usart2_tx.Init.MemInc = DMA_MINC_ENABLE; + 8003162: 2380 movs r3, #128 ; 0x80 + 8003164: 6103 str r3, [r0, #16] + hdma_usart2_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + 8003166: 6145 str r5, [r0, #20] + hdma_usart2_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + 8003168: 6185 str r5, [r0, #24] + hdma_usart2_tx.Init.Mode = DMA_NORMAL; + 800316a: 61c5 str r5, [r0, #28] + hdma_usart2_tx.Init.Priority = DMA_PRIORITY_LOW; + 800316c: 6205 str r5, [r0, #32] + if (HAL_DMA_Init(&hdma_usart2_tx) != HAL_OK) + 800316e: f005 fe1d bl 8008dac <HAL_DMA_Init> + 8003172: bb18 cbnz r0, 80031bc <HAL_UART_MspInit+0xe8> + __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart2_tx); + 8003174: 4b16 ldr r3, [pc, #88] ; (80031d0 <HAL_UART_MspInit+0xfc>) + 8003176: 67e3 str r3, [r4, #124] ; 0x7c + 8003178: 629c str r4, [r3, #40] ; 0x28 + hdma_usart2_rx.Instance = DMA1_Channel6; + 800317a: 4817 ldr r0, [pc, #92] ; (80031d8 <HAL_UART_MspInit+0x104>) + 800317c: 4b17 ldr r3, [pc, #92] ; (80031dc <HAL_UART_MspInit+0x108>) + 800317e: 6003 str r3, [r0, #0] + hdma_usart2_rx.Init.Request = DMA_REQUEST_USART2_RX; + 8003180: 2313 movs r3, #19 + 8003182: 6043 str r3, [r0, #4] + hdma_usart2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; + 8003184: 2300 movs r3, #0 + 8003186: 6083 str r3, [r0, #8] + hdma_usart2_rx.Init.PeriphInc = DMA_PINC_DISABLE; + 8003188: 60c3 str r3, [r0, #12] + hdma_usart2_rx.Init.MemInc = DMA_MINC_ENABLE; + 800318a: 2280 movs r2, #128 ; 0x80 + 800318c: 6102 str r2, [r0, #16] + hdma_usart2_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + 800318e: 6143 str r3, [r0, #20] + hdma_usart2_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + 8003190: 6183 str r3, [r0, #24] + hdma_usart2_rx.Init.Mode = DMA_NORMAL; + 8003192: 61c3 str r3, [r0, #28] + hdma_usart2_rx.Init.Priority = DMA_PRIORITY_LOW; + 8003194: 6203 str r3, [r0, #32] + if (HAL_DMA_Init(&hdma_usart2_rx) != HAL_OK) + 8003196: f005 fe09 bl 8008dac <HAL_DMA_Init> + 800319a: b990 cbnz r0, 80031c2 <HAL_UART_MspInit+0xee> + __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart2_rx); + 800319c: 4b0e ldr r3, [pc, #56] ; (80031d8 <HAL_UART_MspInit+0x104>) + 800319e: f8c4 3080 str.w r3, [r4, #128] ; 0x80 + 80031a2: 629c str r4, [r3, #40] ; 0x28 + HAL_NVIC_SetPriority(USART2_IRQn, 2, 0); + 80031a4: 2200 movs r2, #0 + 80031a6: 2102 movs r1, #2 + 80031a8: 2025 movs r0, #37 ; 0x25 + 80031aa: f005 fd37 bl 8008c1c <HAL_NVIC_SetPriority> + HAL_NVIC_EnableIRQ(USART2_IRQn); + 80031ae: 2025 movs r0, #37 ; 0x25 + 80031b0: f005 fd6c bl 8008c8c <HAL_NVIC_EnableIRQ> +} + 80031b4: e79f b.n 80030f6 <HAL_UART_MspInit+0x22> + Error_Handler(); + 80031b6: f7ff fa91 bl 80026dc <Error_Handler> + 80031ba: e7a7 b.n 800310c <HAL_UART_MspInit+0x38> + Error_Handler(); + 80031bc: f7ff fa8e bl 80026dc <Error_Handler> + 80031c0: e7d8 b.n 8003174 <HAL_UART_MspInit+0xa0> + Error_Handler(); + 80031c2: f7ff fa8b bl 80026dc <Error_Handler> + 80031c6: e7e9 b.n 800319c <HAL_UART_MspInit+0xc8> + 80031c8: 40004400 .word 0x40004400 + 80031cc: 000c0004 .word 0x000c0004 + 80031d0: 20000b40 .word 0x20000b40 + 80031d4: 40020080 .word 0x40020080 + 80031d8: 20000ae0 .word 0x20000ae0 + 80031dc: 4002006c .word 0x4002006c + +080031e0 <HAL_UART_MspDeInit>: + +void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) +{ + + if(uartHandle->Instance==USART2) + 80031e0: 6802 ldr r2, [r0, #0] + 80031e2: 4b0e ldr r3, [pc, #56] ; (800321c <HAL_UART_MspDeInit+0x3c>) + 80031e4: 429a cmp r2, r3 + 80031e6: d000 beq.n 80031ea <HAL_UART_MspDeInit+0xa> + 80031e8: 4770 bx lr +{ + 80031ea: b510 push {r4, lr} + 80031ec: 4604 mov r4, r0 + CLEAR_BIT(RCC->APB1ENR1, Periphs); + 80031ee: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80031f2: 6d93 ldr r3, [r2, #88] ; 0x58 + 80031f4: f423 3300 bic.w r3, r3, #131072 ; 0x20000 + 80031f8: 6593 str r3, [r2, #88] ; 0x58 + + /**USART2 GPIO Configuration + PA3 ------> USART2_RX + PA2 ------> USART2_TX + */ + HAL_GPIO_DeInit(GPIOA, USARTx_RX_Pin|USARTx_TX_Pin); + 80031fa: 210c movs r1, #12 + 80031fc: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8003200: f006 f9f6 bl 80095f0 <HAL_GPIO_DeInit> + + /* USART2 DMA DeInit */ + HAL_DMA_DeInit(uartHandle->hdmatx); + 8003204: 6fe0 ldr r0, [r4, #124] ; 0x7c + 8003206: f005 fe43 bl 8008e90 <HAL_DMA_DeInit> + HAL_DMA_DeInit(uartHandle->hdmarx); + 800320a: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800320e: f005 fe3f bl 8008e90 <HAL_DMA_DeInit> + /* USART2 interrupt Deinit */ + HAL_NVIC_DisableIRQ(USART2_IRQn); + 8003212: 2025 movs r0, #37 ; 0x25 + 8003214: f005 fd48 bl 8008ca8 <HAL_NVIC_DisableIRQ> + /* USER CODE BEGIN USART2_MspDeInit 1 */ + + /* USER CODE END USART2_MspDeInit 1 */ + } +} + 8003218: bd10 pop {r4, pc} + 800321a: bf00 nop + 800321c: 40004400 .word 0x40004400 + +08003220 <vcom_Init>: +/* USER CODE END PFP */ + +/* Exported functions --------------------------------------------------------*/ + +UTIL_ADV_TRACE_Status_t vcom_Init(void (*cb)(void *)) +{ + 8003220: b508 push {r3, lr} + /* USER CODE BEGIN vcom_Init_1 */ + + /* USER CODE END vcom_Init_1 */ + TxCpltCallback = cb; + 8003222: 4b07 ldr r3, [pc, #28] ; (8003240 <vcom_Init+0x20>) + 8003224: 6018 str r0, [r3, #0] + MX_DMA_Init(); + 8003226: f7fe ff0c bl 8002042 <MX_DMA_Init> + MX_USART2_UART_Init(); + 800322a: f7ff ff1f bl 800306c <MX_USART2_UART_Init> + SET_BIT(EXTI->IMR1, ExtiLine); + 800322e: 4a05 ldr r2, [pc, #20] ; (8003244 <vcom_Init+0x24>) + 8003230: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 + 8003234: f043 6300 orr.w r3, r3, #134217728 ; 0x8000000 + 8003238: f8c2 3080 str.w r3, [r2, #128] ; 0x80 + LL_EXTI_EnableIT_0_31(LL_EXTI_LINE_27); + return UTIL_ADV_TRACE_OK; + /* USER CODE BEGIN vcom_Init_2 */ + + /* USER CODE END vcom_Init_2 */ +} + 800323c: 2000 movs r0, #0 + 800323e: bd08 pop {r3, pc} + 8003240: 20000c38 .word 0x20000c38 + 8003244: 58000800 .word 0x58000800 + +08003248 <vcom_DeInit>: + +UTIL_ADV_TRACE_Status_t vcom_DeInit(void) +{ + 8003248: b508 push {r3, lr} + SET_BIT(RCC->APB1RSTR1, Periphs); + 800324a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800324e: 6b9a ldr r2, [r3, #56] ; 0x38 + 8003250: f442 3200 orr.w r2, r2, #131072 ; 0x20000 + 8003254: 639a str r2, [r3, #56] ; 0x38 + CLEAR_BIT(RCC->APB1RSTR1, Periphs); + 8003256: 6b9a ldr r2, [r3, #56] ; 0x38 + 8003258: f422 3200 bic.w r2, r2, #131072 ; 0x20000 + 800325c: 639a str r2, [r3, #56] ; 0x38 + /* ##-1- Reset peripherals ################################################## */ + __HAL_RCC_USART2_FORCE_RESET(); + __HAL_RCC_USART2_RELEASE_RESET(); + + /* ##-2- MspDeInit ################################################## */ + HAL_UART_MspDeInit(&huart2); + 800325e: 4804 ldr r0, [pc, #16] ; (8003270 <vcom_DeInit+0x28>) + 8003260: f7ff ffbe bl 80031e0 <HAL_UART_MspDeInit> + + /* ##-3- Disable the NVIC for DMA ########################################### */ + /* USER CODE BEGIN 1 */ + HAL_NVIC_DisableIRQ(DMA1_Channel5_IRQn); + 8003264: 200f movs r0, #15 + 8003266: f005 fd1f bl 8008ca8 <HAL_NVIC_DisableIRQ> + return UTIL_ADV_TRACE_OK; + /* USER CODE END 1 */ + /* USER CODE BEGIN vcom_DeInit_2 */ + + /* USER CODE END vcom_DeInit_2 */ +} + 800326a: 2000 movs r0, #0 + 800326c: bd08 pop {r3, pc} + 800326e: bf00 nop + 8003270: 20000ba0 .word 0x20000ba0 + +08003274 <vcom_Trace_DMA>: + + /* USER CODE END vcom_Trace_2 */ +} + +UTIL_ADV_TRACE_Status_t vcom_Trace_DMA(uint8_t *p_data, uint16_t size) +{ + 8003274: b508 push {r3, lr} + 8003276: 460a mov r2, r1 + /* USER CODE BEGIN vcom_Trace_DMA_1 */ + + /* USER CODE END vcom_Trace_DMA_1 */ + HAL_UART_Transmit_DMA(&huart2, p_data, size); + 8003278: 4601 mov r1, r0 + 800327a: 4802 ldr r0, [pc, #8] ; (8003284 <vcom_Trace_DMA+0x10>) + 800327c: f008 fb88 bl 800b990 <HAL_UART_Transmit_DMA> + return UTIL_ADV_TRACE_OK; + /* USER CODE BEGIN vcom_Trace_DMA_2 */ + + /* USER CODE END vcom_Trace_DMA_2 */ +} + 8003280: 2000 movs r0, #0 + 8003282: bd08 pop {r3, pc} + 8003284: 20000ba0 .word 0x20000ba0 + +08003288 <vcom_ReceiveInit>: + +UTIL_ADV_TRACE_Status_t vcom_ReceiveInit(void (*RxCb)(uint8_t *rxChar, uint16_t size, uint8_t error)) +{ + 8003288: b510 push {r4, lr} + 800328a: b082 sub sp, #8 + + /* USER CODE END vcom_ReceiveInit_1 */ + UART_WakeUpTypeDef WakeUpSelection; + + /*record call back*/ + RxCpltCallback = RxCb; + 800328c: 4b12 ldr r3, [pc, #72] ; (80032d8 <vcom_ReceiveInit+0x50>) + 800328e: 6018 str r0, [r3, #0] + + /*Set wakeUp event on start bit*/ + WakeUpSelection.WakeUpEvent = UART_WAKEUP_ON_STARTBIT; + 8003290: f44f 1300 mov.w r3, #2097152 ; 0x200000 + 8003294: 9300 str r3, [sp, #0] + + HAL_UARTEx_StopModeWakeUpSourceConfig(&huart2, WakeUpSelection); + 8003296: ab02 add r3, sp, #8 + 8003298: e913 0006 ldmdb r3, {r1, r2} + 800329c: 480f ldr r0, [pc, #60] ; (80032dc <vcom_ReceiveInit+0x54>) + 800329e: f009 fc2e bl 800cafe <HAL_UARTEx_StopModeWakeUpSourceConfig> + + /* Make sure that no UART transfer is on-going */ + while (__HAL_UART_GET_FLAG(&huart2, USART_ISR_BUSY) == SET); + 80032a2: 4b0e ldr r3, [pc, #56] ; (80032dc <vcom_ReceiveInit+0x54>) + 80032a4: 681b ldr r3, [r3, #0] + 80032a6: 69da ldr r2, [r3, #28] + 80032a8: f412 3f80 tst.w r2, #65536 ; 0x10000 + 80032ac: d1f9 bne.n 80032a2 <vcom_ReceiveInit+0x1a> + + /* Make sure that UART is ready to receive) */ + while (__HAL_UART_GET_FLAG(&huart2, USART_ISR_REACK) == RESET); + 80032ae: 69da ldr r2, [r3, #28] + 80032b0: f412 0f80 tst.w r2, #4194304 ; 0x400000 + 80032b4: d0fb beq.n 80032ae <vcom_ReceiveInit+0x26> + + /* Enable USART interrupt */ + __HAL_UART_ENABLE_IT(&huart2, UART_IT_WUF); + 80032b6: 689a ldr r2, [r3, #8] + 80032b8: f442 0280 orr.w r2, r2, #4194304 ; 0x400000 + 80032bc: 609a str r2, [r3, #8] + + /*Enable wakeup from stop mode*/ + HAL_UARTEx_EnableStopMode(&huart2); + 80032be: 4c07 ldr r4, [pc, #28] ; (80032dc <vcom_ReceiveInit+0x54>) + 80032c0: 4620 mov r0, r4 + 80032c2: f009 fc5d bl 800cb80 <HAL_UARTEx_EnableStopMode> + + /*Start LPUART receive on IT*/ + HAL_UART_Receive_IT(&huart2, &charRx, 1); + 80032c6: 2201 movs r2, #1 + 80032c8: 4905 ldr r1, [pc, #20] ; (80032e0 <vcom_ReceiveInit+0x58>) + 80032ca: 4620 mov r0, r4 + 80032cc: f009 fbb0 bl 800ca30 <HAL_UART_Receive_IT> + + return UTIL_ADV_TRACE_OK; + /* USER CODE BEGIN vcom_ReceiveInit_2 */ + + /* USER CODE END vcom_ReceiveInit_2 */ +} + 80032d0: 2000 movs r0, #0 + 80032d2: b002 add sp, #8 + 80032d4: bd10 pop {r4, pc} + 80032d6: bf00 nop + 80032d8: 20000c34 .word 0x20000c34 + 80032dc: 20000ba0 .word 0x20000ba0 + 80032e0: 20000c3c .word 0x20000c3c + +080032e4 <vcom_Resume>: + +void vcom_Resume(void) +{ + 80032e4: b508 push {r3, lr} + /* USER CODE BEGIN vcom_Resume_1 */ + + /* USER CODE END vcom_Resume_1 */ + /*to re-enable lost UART settings*/ + if (HAL_UART_Init(&huart2) != HAL_OK) + 80032e6: 4807 ldr r0, [pc, #28] ; (8003304 <vcom_Resume+0x20>) + 80032e8: f009 fad0 bl 800c88c <HAL_UART_Init> + 80032ec: b920 cbnz r0, 80032f8 <vcom_Resume+0x14> + { + Error_Handler(); + } + + /*to re-enable lost DMA settings*/ + if (HAL_DMA_Init(&hdma_usart2_tx) != HAL_OK) + 80032ee: 4806 ldr r0, [pc, #24] ; (8003308 <vcom_Resume+0x24>) + 80032f0: f005 fd5c bl 8008dac <HAL_DMA_Init> + 80032f4: b918 cbnz r0, 80032fe <vcom_Resume+0x1a> + Error_Handler(); + } + /* USER CODE BEGIN vcom_Resume_2 */ + + /* USER CODE END vcom_Resume_2 */ +} + 80032f6: bd08 pop {r3, pc} + Error_Handler(); + 80032f8: f7ff f9f0 bl 80026dc <Error_Handler> + 80032fc: e7f7 b.n 80032ee <vcom_Resume+0xa> + Error_Handler(); + 80032fe: f7ff f9ed bl 80026dc <Error_Handler> +} + 8003302: e7f8 b.n 80032f6 <vcom_Resume+0x12> + 8003304: 20000ba0 .word 0x20000ba0 + 8003308: 20000b40 .word 0x20000b40 + +0800330c <HAL_UART_TxCpltCallback>: + +void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) +{ + 800330c: b508 push {r3, lr} + /* USER CODE BEGIN HAL_UART_TxCpltCallback_1 */ + + /* USER CODE END HAL_UART_TxCpltCallback_1 */ + /* buffer transmission complete*/ + if (huart->Instance == USART2) + 800330e: 6802 ldr r2, [r0, #0] + 8003310: 4b04 ldr r3, [pc, #16] ; (8003324 <HAL_UART_TxCpltCallback+0x18>) + 8003312: 429a cmp r2, r3 + 8003314: d000 beq.n 8003318 <HAL_UART_TxCpltCallback+0xc> + TxCpltCallback(NULL); + } + /* USER CODE BEGIN HAL_UART_TxCpltCallback_2 */ + + /* USER CODE END HAL_UART_TxCpltCallback_2 */ +} + 8003316: bd08 pop {r3, pc} + TxCpltCallback(NULL); + 8003318: 4b03 ldr r3, [pc, #12] ; (8003328 <HAL_UART_TxCpltCallback+0x1c>) + 800331a: 681b ldr r3, [r3, #0] + 800331c: 2000 movs r0, #0 + 800331e: 4798 blx r3 +} + 8003320: e7f9 b.n 8003316 <HAL_UART_TxCpltCallback+0xa> + 8003322: bf00 nop + 8003324: 40004400 .word 0x40004400 + 8003328: 20000c38 .word 0x20000c38 + +0800332c <HAL_UART_RxCpltCallback>: +void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) +{ + /* USER CODE BEGIN HAL_UART_RxCpltCallback_1 */ + + /* USER CODE END HAL_UART_RxCpltCallback_1 */ + if (huart->Instance == USART2) + 800332c: 6802 ldr r2, [r0, #0] + 800332e: 4b0a ldr r3, [pc, #40] ; (8003358 <HAL_UART_RxCpltCallback+0x2c>) + 8003330: 429a cmp r2, r3 + 8003332: d000 beq.n 8003336 <HAL_UART_RxCpltCallback+0xa> + 8003334: 4770 bx lr +{ + 8003336: b510 push {r4, lr} + 8003338: 4604 mov r4, r0 + { + if ((NULL != RxCpltCallback) && (HAL_UART_ERROR_NONE == huart->ErrorCode)) + 800333a: 4b08 ldr r3, [pc, #32] ; (800335c <HAL_UART_RxCpltCallback+0x30>) + 800333c: 681b ldr r3, [r3, #0] + 800333e: b12b cbz r3, 800334c <HAL_UART_RxCpltCallback+0x20> + 8003340: f8d0 2090 ldr.w r2, [r0, #144] ; 0x90 + 8003344: b912 cbnz r2, 800334c <HAL_UART_RxCpltCallback+0x20> + { + RxCpltCallback(&charRx, 1, 0); + 8003346: 2101 movs r1, #1 + 8003348: 4805 ldr r0, [pc, #20] ; (8003360 <HAL_UART_RxCpltCallback+0x34>) + 800334a: 4798 blx r3 + } + HAL_UART_Receive_IT(huart, &charRx, 1); + 800334c: 2201 movs r2, #1 + 800334e: 4904 ldr r1, [pc, #16] ; (8003360 <HAL_UART_RxCpltCallback+0x34>) + 8003350: 4620 mov r0, r4 + 8003352: f009 fb6d bl 800ca30 <HAL_UART_Receive_IT> + } + /* USER CODE BEGIN HAL_UART_RxCpltCallback_2 */ + + /* USER CODE END HAL_UART_RxCpltCallback_2 */ +} + 8003356: bd10 pop {r4, pc} + 8003358: 40004400 .word 0x40004400 + 800335c: 20000c34 .word 0x20000c34 + 8003360: 20000c3c .word 0x20000c3c + +08003364 <STS_YunhornAuthenticationCode_Process>: +/* USER CODE END PFP */ + +/* Exported functions --------------------------------------------------------*/ + +void STS_YunhornAuthenticationCode_Process(void) +{ + 8003364: b500 push {lr} + 8003366: b083 sub sp, #12 + if (sts_ac_code[0] == 0x00) { + 8003368: 4b12 ldr r3, [pc, #72] ; (80033b4 <STS_YunhornAuthenticationCode_Process+0x50>) + 800336a: 781b ldrb r3, [r3, #0] + 800336c: b1ab cbz r3, 800339a <STS_YunhornAuthenticationCode_Process+0x36> + APP_LOG(TS_OFF,VLEVEL_M, "Initial AC CODE blank... \r\n"); + return; + } + + sts_service_mask = (sts_hmac_verify()!= 0)? STS_SERVICE_MASK_L2:STS_SERVICE_MASK_L0; + 800336e: f7ff fb49 bl 8002a04 <sts_hmac_verify> + 8003372: b1c8 cbz r0, 80033a8 <STS_YunhornAuthenticationCode_Process+0x44> + 8003374: 2202 movs r2, #2 + 8003376: 4b10 ldr r3, [pc, #64] ; (80033b8 <STS_YunhornAuthenticationCode_Process+0x54>) + 8003378: 701a strb r2, [r3, #0] + if (sts_service_mask == STS_SERVICE_MASK_L2) { + 800337a: 781b ldrb r3, [r3, #0] + 800337c: b2db uxtb r3, r3 + 800337e: 2b02 cmp r3, #2 + 8003380: d014 beq.n 80033ac <STS_YunhornAuthenticationCode_Process+0x48> + sts_ac_code[0] = 0x0; + } + APP_LOG(TS_OFF, VLEVEL_H, "STS_SERVICE_MASK:%d \r\n",sts_service_mask); + 8003382: 4b0d ldr r3, [pc, #52] ; (80033b8 <STS_YunhornAuthenticationCode_Process+0x54>) + 8003384: 781b ldrb r3, [r3, #0] + 8003386: 9300 str r3, [sp, #0] + 8003388: 4b0c ldr r3, [pc, #48] ; (80033bc <STS_YunhornAuthenticationCode_Process+0x58>) + 800338a: 2200 movs r2, #0 + 800338c: 4611 mov r1, r2 + 800338e: 2003 movs r0, #3 + 8003390: f013 fbd2 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8003394: b003 add sp, #12 + 8003396: f85d fb04 ldr.w pc, [sp], #4 + APP_LOG(TS_OFF,VLEVEL_M, "Initial AC CODE blank... \r\n"); + 800339a: 4b09 ldr r3, [pc, #36] ; (80033c0 <STS_YunhornAuthenticationCode_Process+0x5c>) + 800339c: 2200 movs r2, #0 + 800339e: 4611 mov r1, r2 + 80033a0: 2002 movs r0, #2 + 80033a2: f013 fbc9 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + return; + 80033a6: e7f5 b.n 8003394 <STS_YunhornAuthenticationCode_Process+0x30> + sts_service_mask = (sts_hmac_verify()!= 0)? STS_SERVICE_MASK_L2:STS_SERVICE_MASK_L0; + 80033a8: 2200 movs r2, #0 + 80033aa: e7e4 b.n 8003376 <STS_YunhornAuthenticationCode_Process+0x12> + sts_ac_code[0] = 0x0; + 80033ac: 4b01 ldr r3, [pc, #4] ; (80033b4 <STS_YunhornAuthenticationCode_Process+0x50>) + 80033ae: 2200 movs r2, #0 + 80033b0: 701a strb r2, [r3, #0] + 80033b2: e7e6 b.n 8003382 <STS_YunhornAuthenticationCode_Process+0x1e> + 80033b4: 20000e58 .word 0x20000e58 + 80033b8: 20000c44 .word 0x20000c44 + 80033bc: 080179bc .word 0x080179bc + 80033c0: 080179a0 .word 0x080179a0 + +080033c4 <STS_YunhornSTSEventRFAC_Process>: + +void STS_YunhornSTSEventRFAC_Process(void) +{ + if (sts_ac_code[0] ==0x0) + 80033c4: 4b19 ldr r3, [pc, #100] ; (800342c <STS_YunhornSTSEventRFAC_Process+0x68>) + 80033c6: 781b ldrb r3, [r3, #0] + 80033c8: bb7b cbnz r3, 800342a <STS_YunhornSTSEventRFAC_Process+0x66> +{ + 80033ca: b510 push {r4, lr} + 80033cc: f003 04ff and.w r4, r3, #255 ; 0xff + { + if ((rfac_timer >= STS_BURN_IN_RFAC) && (rfac_timer < (STS_BURN_IN_RFAC +3))) + 80033d0: 4b17 ldr r3, [pc, #92] ; (8003430 <STS_YunhornSTSEventRFAC_Process+0x6c>) + 80033d2: 681b ldr r3, [r3, #0] + 80033d4: 2b01 cmp r3, #1 + 80033d6: d903 bls.n 80033e0 <STS_YunhornSTSEventRFAC_Process+0x1c> + 80033d8: 4b15 ldr r3, [pc, #84] ; (8003430 <STS_YunhornSTSEventRFAC_Process+0x6c>) + 80033da: 681b ldr r3, [r3, #0] + 80033dc: 2b04 cmp r3, #4 + 80033de: d904 bls.n 80033ea <STS_YunhornSTSEventRFAC_Process+0x26> + { + APP_LOG(TS_OFF, VLEVEL_M, "\r\n -------------------RFAC Process\r\n"); + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 4, "RFAC"); + } + if ((rfac_timer > (STS_BURN_IN_RFAC + 2))) + 80033e0: 4b13 ldr r3, [pc, #76] ; (8003430 <STS_YunhornSTSEventRFAC_Process+0x6c>) + 80033e2: 681b ldr r3, [r3, #0] + 80033e4: 2b04 cmp r3, #4 + 80033e6: d80c bhi.n 8003402 <STS_YunhornSTSEventRFAC_Process+0x3e> + sts_ac_code[0] = 0x0; + } + } + } + +} + 80033e8: bd10 pop {r4, pc} + APP_LOG(TS_OFF, VLEVEL_M, "\r\n -------------------RFAC Process\r\n"); + 80033ea: 4b12 ldr r3, [pc, #72] ; (8003434 <STS_YunhornSTSEventRFAC_Process+0x70>) + 80033ec: 2200 movs r2, #0 + 80033ee: 4611 mov r1, r2 + 80033f0: 2002 movs r0, #2 + 80033f2: f013 fba1 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 4, "RFAC"); + 80033f6: 4a10 ldr r2, [pc, #64] ; (8003438 <STS_YunhornSTSEventRFAC_Process+0x74>) + 80033f8: 2104 movs r1, #4 + 80033fa: 2001 movs r0, #1 + 80033fc: f000 fc8a bl 8003d14 <STS_SENSOR_Upload_Message> + 8003400: e7ee b.n 80033e0 <STS_YunhornSTSEventRFAC_Process+0x1c> + APP_LOG(TS_OFF, VLEVEL_M, "\r\n -------------------Verify RFAC Success or Not\r\n"); + 8003402: 4b0e ldr r3, [pc, #56] ; (800343c <STS_YunhornSTSEventRFAC_Process+0x78>) + 8003404: 2200 movs r2, #0 + 8003406: 4611 mov r1, r2 + 8003408: 2002 movs r0, #2 + 800340a: f013 fb95 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + sts_service_mask = (sts_hmac_verify()!= 0)? STS_SERVICE_MASK_L2:STS_SERVICE_MASK_L0; + 800340e: f7ff faf9 bl 8002a04 <sts_hmac_verify> + 8003412: b100 cbz r0, 8003416 <STS_YunhornSTSEventRFAC_Process+0x52> + 8003414: 2402 movs r4, #2 + 8003416: 4b0a ldr r3, [pc, #40] ; (8003440 <STS_YunhornSTSEventRFAC_Process+0x7c>) + 8003418: 701c strb r4, [r3, #0] + if (sts_service_mask == STS_SERVICE_MASK_L2) { + 800341a: 781b ldrb r3, [r3, #0] + 800341c: b2db uxtb r3, r3 + 800341e: 2b02 cmp r3, #2 + 8003420: d1e2 bne.n 80033e8 <STS_YunhornSTSEventRFAC_Process+0x24> + sts_ac_code[0] = 0x0; + 8003422: 4b02 ldr r3, [pc, #8] ; (800342c <STS_YunhornSTSEventRFAC_Process+0x68>) + 8003424: 2200 movs r2, #0 + 8003426: 701a strb r2, [r3, #0] +} + 8003428: e7de b.n 80033e8 <STS_YunhornSTSEventRFAC_Process+0x24> + 800342a: 4770 bx lr + 800342c: 20000e58 .word 0x20000e58 + 8003430: 20000c40 .word 0x20000c40 + 8003434: 080179d4 .word 0x080179d4 + 8003438: 080179fc .word 0x080179fc + 800343c: 08017a04 .word 0x08017a04 + 8003440: 20000c44 .word 0x20000c44 + +08003444 <STS_SENSOR_Power_ON>: +#endif +} + +void STS_SENSOR_Power_ON(uint8_t cnt) +{ + switch (cnt) { + 8003444: 2802 cmp r0, #2 + 8003446: d900 bls.n 800344a <STS_SENSOR_Power_ON+0x6> + 8003448: 4770 bx lr +{ + 800344a: b508 push {r3, lr} + case 0: + case 1: + case 2: +#if (defined(YUNHORN_STS_M7_ENABLED) || defined(YUNHORN_STS_R0_ENABLED)) + HAL_GPIO_WritePin(MEMS_POWER_GPIO_Port, MEMS_POWER_Pin, GPIO_PIN_SET); + 800344c: 2201 movs r2, #1 + 800344e: 2110 movs r1, #16 + 8003450: 4801 ldr r0, [pc, #4] ; (8003458 <STS_SENSOR_Power_ON+0x14>) + 8003452: f006 f952 bl 80096fa <HAL_GPIO_WritePin> + break; + default: + break; + } + +} + 8003456: bd08 pop {r3, pc} + 8003458: 48000400 .word 0x48000400 + +0800345c <STS_SENSOR_Power_OFF>: +void STS_SENSOR_Power_OFF(uint8_t cnt) +{ + switch (cnt) { + 800345c: 2802 cmp r0, #2 + 800345e: d900 bls.n 8003462 <STS_SENSOR_Power_OFF+0x6> + 8003460: 4770 bx lr +{ + 8003462: b508 push {r3, lr} + case 0: + case 1: + case 2: +#if (defined(YUNHORN_STS_M7_ENABLED) || defined(YUNHORN_STS_R0_ENABLED)) + HAL_GPIO_WritePin(MEMS_POWER_GPIO_Port, MEMS_POWER_Pin, GPIO_PIN_RESET); + 8003464: 2200 movs r2, #0 + 8003466: 2110 movs r1, #16 + 8003468: 4801 ldr r0, [pc, #4] ; (8003470 <STS_SENSOR_Power_OFF+0x14>) + 800346a: f006 f946 bl 80096fa <HAL_GPIO_WritePin> + + break; + default: + break; + } +} + 800346e: bd08 pop {r3, pc} + 8003470: 48000400 .word 0x48000400 + +08003474 <STS_YunhornSTSEventP4_Process>: +{ + 8003474: b510 push {r4, lr} + STS_SENSOR_Power_ON(0); + 8003476: 2000 movs r0, #0 + 8003478: f7ff ffe4 bl 8003444 <STS_SENSOR_Power_ON> + LED_ON; + 800347c: 4c0c ldr r4, [pc, #48] ; (80034b0 <STS_YunhornSTSEventP4_Process+0x3c>) + 800347e: 2201 movs r2, #1 + 8003480: 2104 movs r1, #4 + 8003482: 4620 mov r0, r4 + 8003484: f006 f939 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(50); + 8003488: 2032 movs r0, #50 ; 0x32 + 800348a: f7ff fc11 bl 8002cb0 <HAL_Delay> + APP_LOG(TS_OFF, VLEVEL_L, "\r\n P4 Testing Process\r\n"); + 800348e: 4b09 ldr r3, [pc, #36] ; (80034b4 <STS_YunhornSTSEventP4_Process+0x40>) + 8003490: 2200 movs r2, #0 + 8003492: 4611 mov r1, r2 + 8003494: 2001 movs r0, #1 + 8003496: f013 fb4f bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + STS_TOF_VL53L0X_Range_Process(); + 800349a: f001 ff67 bl 800536c <STS_TOF_VL53L0X_Range_Process> + LED_OFF; + 800349e: 2200 movs r2, #0 + 80034a0: 2104 movs r1, #4 + 80034a2: 4620 mov r0, r4 + 80034a4: f006 f929 bl 80096fa <HAL_GPIO_WritePin> + STS_SENSOR_Power_OFF(0); + 80034a8: 2000 movs r0, #0 + 80034aa: f7ff ffd7 bl 800345c <STS_SENSOR_Power_OFF> +} + 80034ae: bd10 pop {r4, pc} + 80034b0: 48000400 .word 0x48000400 + 80034b4: 08017a38 .word 0x08017a38 + +080034b8 <STS_YunhornSTSEventP6_Process>: +{ + 80034b8: b510 push {r4, lr} + APP_LOG(TS_OFF, VLEVEL_L, "\r\n P6 Testing Process\r\n"); + 80034ba: 4b1c ldr r3, [pc, #112] ; (800352c <STS_YunhornSTSEventP6_Process+0x74>) + 80034bc: 2200 movs r2, #0 + 80034be: 4611 mov r1, r2 + 80034c0: 2001 movs r0, #1 + 80034c2: f013 fb39 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + STS_SENSOR_Power_ON(0); + 80034c6: 2000 movs r0, #0 + 80034c8: f7ff ffbc bl 8003444 <STS_SENSOR_Power_ON> + LED_ON; + 80034cc: 4c18 ldr r4, [pc, #96] ; (8003530 <STS_YunhornSTSEventP6_Process+0x78>) + 80034ce: 2201 movs r2, #1 + 80034d0: 2104 movs r1, #4 + 80034d2: 4620 mov r0, r4 + 80034d4: f006 f911 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(50); + 80034d8: 2032 movs r0, #50 ; 0x32 + 80034da: f7ff fbe9 bl 8002cb0 <HAL_Delay> + LED_OFF; + 80034de: 2200 movs r2, #0 + 80034e0: 2104 movs r1, #4 + 80034e2: 4620 mov r0, r4 + 80034e4: f006 f909 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(20); + 80034e8: 2014 movs r0, #20 + 80034ea: f7ff fbe1 bl 8002cb0 <HAL_Delay> + LED_ON; + 80034ee: 2201 movs r2, #1 + 80034f0: 2104 movs r1, #4 + 80034f2: 4620 mov r0, r4 + 80034f4: f006 f901 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(50); + 80034f8: 2032 movs r0, #50 ; 0x32 + 80034fa: f7ff fbd9 bl 8002cb0 <HAL_Delay> + LED_OFF; + 80034fe: 2200 movs r2, #0 + 8003500: 2104 movs r1, #4 + 8003502: 4620 mov r0, r4 + 8003504: f006 f8f9 bl 80096fa <HAL_GPIO_WritePin> + STS_SENSOR_Power_OFF(0); + 8003508: 2000 movs r0, #0 + 800350a: f7ff ffa7 bl 800345c <STS_SENSOR_Power_OFF> + LED_ON; + 800350e: 2201 movs r2, #1 + 8003510: 2104 movs r1, #4 + 8003512: 4620 mov r0, r4 + 8003514: f006 f8f1 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(500); + 8003518: f44f 70fa mov.w r0, #500 ; 0x1f4 + 800351c: f7ff fbc8 bl 8002cb0 <HAL_Delay> + LED_OFF; + 8003520: 2200 movs r2, #0 + 8003522: 2104 movs r1, #4 + 8003524: 4620 mov r0, r4 + 8003526: f006 f8e8 bl 80096fa <HAL_GPIO_WritePin> +} + 800352a: bd10 pop {r4, pc} + 800352c: 08017a50 .word 0x08017a50 + 8003530: 48000400 .word 0x48000400 + +08003534 <STS_SENSOR_MEMS_Reset>: + +void STS_SENSOR_MEMS_Reset(uint8_t cnt) +{ + switch (cnt) { + 8003534: 2802 cmp r0, #2 + 8003536: d900 bls.n 800353a <STS_SENSOR_MEMS_Reset+0x6> + 8003538: 4770 bx lr +{ + 800353a: b510 push {r4, lr} + case 0: + case 1: + case 2: +#if (defined(YUNHORN_STS_M7_ENABLED) || defined(YUNHORN_STS_R0_ENABLED)) + HAL_GPIO_WritePin(MEMS_RESET_GPIO_Port, MEMS_RESET_Pin, GPIO_PIN_SET); + 800353c: 4c0d ldr r4, [pc, #52] ; (8003574 <STS_SENSOR_MEMS_Reset+0x40>) + 800353e: 2201 movs r2, #1 + 8003540: 2110 movs r1, #16 + 8003542: 4620 mov r0, r4 + 8003544: f006 f8d9 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(50); + 8003548: 2032 movs r0, #50 ; 0x32 + 800354a: f7ff fbb1 bl 8002cb0 <HAL_Delay> + HAL_GPIO_WritePin(MEMS_RESET_GPIO_Port, MEMS_RESET_Pin, GPIO_PIN_RESET); + 800354e: 2200 movs r2, #0 + 8003550: 2110 movs r1, #16 + 8003552: 4620 mov r0, r4 + 8003554: f006 f8d1 bl 80096fa <HAL_GPIO_WritePin> +#endif + HAL_GPIO_WritePin(MEMS_RESET_GPIO_Port, MEMS_RESET_Pin, GPIO_PIN_SET); + 8003558: 2201 movs r2, #1 + 800355a: 2110 movs r1, #16 + 800355c: 4620 mov r0, r4 + 800355e: f006 f8cc bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(50); + 8003562: 2032 movs r0, #50 ; 0x32 + 8003564: f7ff fba4 bl 8002cb0 <HAL_Delay> + HAL_GPIO_WritePin(MEMS_RESET_GPIO_Port, MEMS_RESET_Pin, GPIO_PIN_RESET); + 8003568: 2200 movs r2, #0 + 800356a: 2110 movs r1, #16 + 800356c: 4620 mov r0, r4 + 800356e: f006 f8c4 bl 80096fa <HAL_GPIO_WritePin> + break; + default: + break; + } + +} + 8003572: bd10 pop {r4, pc} + 8003574: 48000400 .word 0x48000400 + +08003578 <STS_SENSOR_NVM_CFG_SIMPLE>: +} + +void STS_SENSOR_NVM_CFG_SIMPLE(void) +{ + +} + 8003578: 4770 bx lr + +0800357a <MX_LoRaWAN_Init>: +/* USER CODE END PFP */ + +/* Exported functions --------------------------------------------------------*/ + +void MX_LoRaWAN_Init(void) +{ + 800357a: b508 push {r3, lr} + /* USER CODE BEGIN MX_LoRaWAN_Init_1 */ + + /* USER CODE END MX_LoRaWAN_Init_1 */ + SystemApp_Init(); + 800357c: f7ff fad8 bl 8002b30 <SystemApp_Init> + /* USER CODE BEGIN MX_LoRaWAN_Init_2 */ + + /* USER CODE END MX_LoRaWAN_Init_2 */ + LoRaWAN_Init(); + 8003580: f000 fdc0 bl 8004104 <LoRaWAN_Init> + /* USER CODE BEGIN MX_LoRaWAN_Init_3 */ + + /* USER CODE END MX_LoRaWAN_Init_3 */ +} + 8003584: bd08 pop {r3, pc} + +08003586 <MX_LoRaWAN_Process>: + +void MX_LoRaWAN_Process(void) +{ + 8003586: b508 push {r3, lr} + /* USER CODE BEGIN MX_LoRaWAN_Process_1 */ + + /* USER CODE END MX_LoRaWAN_Process_1 */ + UTIL_SEQ_Run(UTIL_SEQ_DEFAULT); + 8003588: f04f 30ff mov.w r0, #4294967295 + 800358c: f013 fc32 bl 8016df4 <UTIL_SEQ_Run> + /* USER CODE BEGIN MX_LoRaWAN_Process_2 */ + + /* USER CODE END MX_LoRaWAN_Process_2 */ +} + 8003590: bd08 pop {r3, pc} + +08003592 <OnTxTimerLedEvent>: +static void OnTxTimerLedEvent(void *context) +{ +#if defined(STM32WL55xx) + HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); /* LED_GREEN */ +#endif +} + 8003592: 4770 bx lr + +08003594 <OnRxTimerLedEvent>: +static void OnRxTimerLedEvent(void *context) +{ +#if defined(STM32WL55xx) + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); /* LED_BLUE */ +#endif +} + 8003594: 4770 bx lr + +08003596 <OnJoinTimerLedEvent>: +static void OnJoinTimerLedEvent(void *context) +{ +#if defined(STM32WL55xx) + HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin); /* LED_RED */ +#endif +} + 8003596: 4770 bx lr + +08003598 <OnSysTimeUpdate>: +static void OnSysTimeUpdate(void) +{ + /* USER CODE BEGIN OnSysTimeUpdate_1 */ + + /* USER CODE END OnSysTimeUpdate_1 */ +} + 8003598: 4770 bx lr + ... + +0800359c <OnTxFrameCtrlChanged>: +static void OnTxFrameCtrlChanged(LmHandlerMsgTypes_t isTxConfirmed) +{ + /* USER CODE BEGIN OnTxFrameCtrlChanged_1 */ + + /* USER CODE END OnTxFrameCtrlChanged_1 */ + LmHandlerParams.IsTxConfirmed = isTxConfirmed; + 800359c: 4b01 ldr r3, [pc, #4] ; (80035a4 <OnTxFrameCtrlChanged+0x8>) + 800359e: 70d8 strb r0, [r3, #3] + /* USER CODE BEGIN OnTxFrameCtrlChanged_2 */ + + /* USER CODE END OnTxFrameCtrlChanged_2 */ +} + 80035a0: 4770 bx lr + 80035a2: bf00 nop + 80035a4: 2000005c .word 0x2000005c + +080035a8 <OnPingSlotPeriodicityChanged>: +static void OnPingSlotPeriodicityChanged(uint8_t pingSlotPeriodicity) +{ + /* USER CODE BEGIN OnPingSlotPeriodicityChanged_1 */ + + /* USER CODE END OnPingSlotPeriodicityChanged_1 */ + LmHandlerParams.PingSlotPeriodicity = pingSlotPeriodicity; + 80035a8: 4b01 ldr r3, [pc, #4] ; (80035b0 <OnPingSlotPeriodicityChanged+0x8>) + 80035aa: 7418 strb r0, [r3, #16] + /* USER CODE BEGIN OnPingSlotPeriodicityChanged_2 */ + + /* USER CODE END OnPingSlotPeriodicityChanged_2 */ +} + 80035ac: 4770 bx lr + 80035ae: bf00 nop + 80035b0: 2000005c .word 0x2000005c + +080035b4 <OnBeaconStatusChange>: + if (params != NULL) + 80035b4: 2800 cmp r0, #0 + 80035b6: d03f beq.n 8003638 <OnBeaconStatusChange+0x84> +{ + 80035b8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80035bc: b08c sub sp, #48 ; 0x30 + 80035be: 4603 mov r3, r0 + switch (params->State) + 80035c0: 7842 ldrb r2, [r0, #1] + 80035c2: 2a02 cmp r2, #2 + 80035c4: d00a beq.n 80035dc <OnBeaconStatusChange+0x28> + 80035c6: 2a03 cmp r2, #3 + 80035c8: d02f beq.n 800362a <OnBeaconStatusChange+0x76> + APP_LOG(TS_OFF, VLEVEL_M, "\r\n###### BEACON LOST\r\n"); + 80035ca: 4b1c ldr r3, [pc, #112] ; (800363c <OnBeaconStatusChange+0x88>) + 80035cc: 2200 movs r2, #0 + 80035ce: 4611 mov r1, r2 + 80035d0: 2002 movs r0, #2 + 80035d2: f013 fab1 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 80035d6: b00c add sp, #48 ; 0x30 + 80035d8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + APP_LOG(TS_OFF, VLEVEL_M, + 80035dc: 7c02 ldrb r2, [r0, #16] + 80035de: f9b0 1012 ldrsh.w r1, [r0, #18] + 80035e2: f990 0014 ldrsb.w r0, [r0, #20] + 80035e6: 7d5c ldrb r4, [r3, #21] + 80035e8: 7d9d ldrb r5, [r3, #22] + 80035ea: 7dde ldrb r6, [r3, #23] + 80035ec: 7e1f ldrb r7, [r3, #24] + 80035ee: f893 c019 ldrb.w ip, [r3, #25] + 80035f2: f893 e01a ldrb.w lr, [r3, #26] + 80035f6: f893 801b ldrb.w r8, [r3, #27] + 80035fa: f8cd 802c str.w r8, [sp, #44] ; 0x2c + 80035fe: f8cd e028 str.w lr, [sp, #40] ; 0x28 + 8003602: f8cd c024 str.w ip, [sp, #36] ; 0x24 + 8003606: 9708 str r7, [sp, #32] + 8003608: 9607 str r6, [sp, #28] + 800360a: 9506 str r5, [sp, #24] + 800360c: 9405 str r4, [sp, #20] + 800360e: 685c ldr r4, [r3, #4] + 8003610: 9404 str r4, [sp, #16] + 8003612: 68db ldr r3, [r3, #12] + 8003614: 9303 str r3, [sp, #12] + 8003616: 9002 str r0, [sp, #8] + 8003618: 9101 str r1, [sp, #4] + 800361a: 9200 str r2, [sp, #0] + 800361c: 4b08 ldr r3, [pc, #32] ; (8003640 <OnBeaconStatusChange+0x8c>) + 800361e: 2200 movs r2, #0 + 8003620: 4611 mov r1, r2 + 8003622: 2002 movs r0, #2 + 8003624: f013 fa88 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + break; + 8003628: e7d5 b.n 80035d6 <OnBeaconStatusChange+0x22> + APP_LOG(TS_OFF, VLEVEL_M, "\r\n###### BEACON NOT RECEIVED\r\n"); + 800362a: 4b06 ldr r3, [pc, #24] ; (8003644 <OnBeaconStatusChange+0x90>) + 800362c: 2200 movs r2, #0 + 800362e: 4611 mov r1, r2 + 8003630: 2002 movs r0, #2 + 8003632: f013 fa81 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8003636: e7ce b.n 80035d6 <OnBeaconStatusChange+0x22> + 8003638: 4770 bx lr + 800363a: bf00 nop + 800363c: 08017a68 .word 0x08017a68 + 8003640: 08017a80 .word 0x08017a80 + 8003644: 08017af4 .word 0x08017af4 + +08003648 <OnClassChange>: +{ + 8003648: b500 push {lr} + 800364a: b083 sub sp, #12 + APP_LOG(TS_OFF, VLEVEL_M, "Switch to Class %c done\r\n", "ABC"[deviceClass]); + 800364c: 4b05 ldr r3, [pc, #20] ; (8003664 <OnClassChange+0x1c>) + 800364e: 5c1b ldrb r3, [r3, r0] + 8003650: 9300 str r3, [sp, #0] + 8003652: 4b05 ldr r3, [pc, #20] ; (8003668 <OnClassChange+0x20>) + 8003654: 2200 movs r2, #0 + 8003656: 4611 mov r1, r2 + 8003658: 2002 movs r0, #2 + 800365a: f013 fa6d bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 800365e: b003 add sp, #12 + 8003660: f85d fb04 ldr.w pc, [sp], #4 + 8003664: 08017b30 .word 0x08017b30 + 8003668: 08017b14 .word 0x08017b14 + +0800366c <OnNvmDataChange>: + + /* USER CODE END StoreContext_Last */ +} + +static void OnNvmDataChange(LmHandlerNvmContextStates_t state) +{ + 800366c: b508 push {r3, lr} + /* USER CODE BEGIN OnNvmDataChange_1 */ + + /* USER CODE END OnNvmDataChange_1 */ + if (state == LORAMAC_HANDLER_NVM_STORE) + 800366e: 2801 cmp r0, #1 + 8003670: d006 beq.n 8003680 <OnNvmDataChange+0x14> + { + APP_LOG(TS_OFF, VLEVEL_M, "NVM DATA STORED\r\n"); + } + else + { + APP_LOG(TS_OFF, VLEVEL_M, "NVM DATA RESTORED\r\n"); + 8003672: 4b07 ldr r3, [pc, #28] ; (8003690 <OnNvmDataChange+0x24>) + 8003674: 2200 movs r2, #0 + 8003676: 4611 mov r1, r2 + 8003678: 2002 movs r0, #2 + 800367a: f013 fa5d bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + } + /* USER CODE BEGIN OnNvmDataChange_Last */ + + /* USER CODE END OnNvmDataChange_Last */ +} + 800367e: bd08 pop {r3, pc} + APP_LOG(TS_OFF, VLEVEL_M, "NVM DATA STORED\r\n"); + 8003680: 4b04 ldr r3, [pc, #16] ; (8003694 <OnNvmDataChange+0x28>) + 8003682: 2200 movs r2, #0 + 8003684: 4611 mov r1, r2 + 8003686: 2002 movs r0, #2 + 8003688: f013 fa56 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 800368c: e7f7 b.n 800367e <OnNvmDataChange+0x12> + 800368e: bf00 nop + 8003690: 08017b48 .word 0x08017b48 + 8003694: 08017b34 .word 0x08017b34 + +08003698 <OnTxData>: + if ((params != NULL)) + 8003698: 2800 cmp r0, #0 + 800369a: d03c beq.n 8003716 <OnTxData+0x7e> +{ + 800369c: b510 push {r4, lr} + 800369e: b084 sub sp, #16 + 80036a0: 4604 mov r4, r0 + if (params->IsMcpsConfirm != 0) + 80036a2: 7803 ldrb r3, [r0, #0] + 80036a4: b90b cbnz r3, 80036aa <OnTxData+0x12> +} + 80036a6: b004 add sp, #16 + 80036a8: bd10 pop {r4, pc} + UTIL_TIMER_Start(&TxLedTimer); + 80036aa: 481b ldr r0, [pc, #108] ; (8003718 <OnTxData+0x80>) + 80036ac: f013 fdf0 bl 8017290 <UTIL_TIMER_Start> + APP_LOG(TS_OFF, VLEVEL_M, "\r\n###### ========== MCPS-Confirm =============\r\n"); + 80036b0: 4b1a ldr r3, [pc, #104] ; (800371c <OnTxData+0x84>) + 80036b2: 2200 movs r2, #0 + 80036b4: 4611 mov r1, r2 + 80036b6: 2002 movs r0, #2 + 80036b8: f013 fa3e bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:%04d | PORT:%d | DR:%d | PWR:%d", params->UplinkCounter, + 80036bc: 7c23 ldrb r3, [r4, #16] + 80036be: f994 200a ldrsb.w r2, [r4, #10] + 80036c2: f994 1018 ldrsb.w r1, [r4, #24] + 80036c6: 9103 str r1, [sp, #12] + 80036c8: 9202 str r2, [sp, #8] + 80036ca: 9301 str r3, [sp, #4] + 80036cc: 68e3 ldr r3, [r4, #12] + 80036ce: 9300 str r3, [sp, #0] + 80036d0: 4b13 ldr r3, [pc, #76] ; (8003720 <OnTxData+0x88>) + 80036d2: 2200 movs r2, #0 + 80036d4: 4611 mov r1, r2 + 80036d6: 2003 movs r0, #3 + 80036d8: f013 fa2e bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + APP_LOG(TS_OFF, VLEVEL_H, " | MSG TYPE:"); + 80036dc: 4b11 ldr r3, [pc, #68] ; (8003724 <OnTxData+0x8c>) + 80036de: 2200 movs r2, #0 + 80036e0: 4611 mov r1, r2 + 80036e2: 2003 movs r0, #3 + 80036e4: f013 fa28 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + if (params->MsgType == LORAMAC_HANDLER_CONFIRMED_MSG) + 80036e8: 7a23 ldrb r3, [r4, #8] + 80036ea: 2b01 cmp r3, #1 + 80036ec: d10c bne.n 8003708 <OnTxData+0x70> + APP_LOG(TS_OFF, VLEVEL_H, "CONFIRMED [%s]\r\n", (params->AckReceived != 0) ? "ACK" : "NACK"); + 80036ee: 7a63 ldrb r3, [r4, #9] + 80036f0: b143 cbz r3, 8003704 <OnTxData+0x6c> + 80036f2: 4b0d ldr r3, [pc, #52] ; (8003728 <OnTxData+0x90>) + 80036f4: 9300 str r3, [sp, #0] + 80036f6: 4b0d ldr r3, [pc, #52] ; (800372c <OnTxData+0x94>) + 80036f8: 2200 movs r2, #0 + 80036fa: 4611 mov r1, r2 + 80036fc: 2003 movs r0, #3 + 80036fe: f013 fa1b bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8003702: e7d0 b.n 80036a6 <OnTxData+0xe> + 8003704: 4b0a ldr r3, [pc, #40] ; (8003730 <OnTxData+0x98>) + 8003706: e7f5 b.n 80036f4 <OnTxData+0x5c> + APP_LOG(TS_OFF, VLEVEL_H, "UNCONFIRMED\r\n"); + 8003708: 4b0a ldr r3, [pc, #40] ; (8003734 <OnTxData+0x9c>) + 800370a: 2200 movs r2, #0 + 800370c: 4611 mov r1, r2 + 800370e: 2003 movs r0, #3 + 8003710: f013 fa12 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8003714: e7c7 b.n 80036a6 <OnTxData+0xe> + 8003716: 4770 bx lr + 8003718: 20000d88 .word 0x20000d88 + 800371c: 08017b68 .word 0x08017b68 + 8003720: 08017b9c .word 0x08017b9c + 8003724: 08017bd0 .word 0x08017bd0 + 8003728: 08017b5c .word 0x08017b5c + 800372c: 08017be0 .word 0x08017be0 + 8003730: 08017b60 .word 0x08017b60 + 8003734: 08017bf4 .word 0x08017bf4 + +08003738 <OnYunhornSTSHeartBeatTimerEvent>: +/** + * @brief Yunhorn STS Sensor Heart Beat Timer callback function + * @param context ptr of STS Sampling Check context + */ +static void OnYunhornSTSHeartBeatTimerEvent(void *context) +{ + 8003738: b508 push {r3, lr} + heart_beat_timer = 1; + 800373a: 4b0e ldr r3, [pc, #56] ; (8003774 <OnYunhornSTSHeartBeatTimerEvent+0x3c>) + 800373c: 2201 movs r2, #1 + 800373e: 701a strb r2, [r3, #0] + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); + 8003740: 2100 movs r1, #0 + 8003742: 2002 movs r0, #2 + 8003744: f013 fb22 bl 8016d8c <UTIL_SEQ_SetTask> + UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); + 8003748: 480b ldr r0, [pc, #44] ; (8003778 <OnYunhornSTSHeartBeatTimerEvent+0x40>) + 800374a: f013 fda1 bl 8017290 <UTIL_TIMER_Start> + + if ((STS_LoRa_WAN_Joined ) && (sts_ac_code[0]==0x0)) + 800374e: 4b0b ldr r3, [pc, #44] ; (800377c <OnYunhornSTSHeartBeatTimerEvent+0x44>) + 8003750: 781b ldrb r3, [r3, #0] + 8003752: b173 cbz r3, 8003772 <OnYunhornSTSHeartBeatTimerEvent+0x3a> + 8003754: 4b0a ldr r3, [pc, #40] ; (8003780 <OnYunhornSTSHeartBeatTimerEvent+0x48>) + 8003756: 781b ldrb r3, [r3, #0] + 8003758: b95b cbnz r3, 8003772 <OnYunhornSTSHeartBeatTimerEvent+0x3a> + { + /* RFAC Challenge */ + if (rfac_timer < (STS_BURN_IN_RFAC+3)) { + 800375a: 4b0a ldr r3, [pc, #40] ; (8003784 <OnYunhornSTSHeartBeatTimerEvent+0x4c>) + 800375c: 681b ldr r3, [r3, #0] + 800375e: 2b04 cmp r3, #4 + 8003760: d803 bhi.n 800376a <OnYunhornSTSHeartBeatTimerEvent+0x32> + rfac_timer ++; + 8003762: 4a08 ldr r2, [pc, #32] ; (8003784 <OnYunhornSTSHeartBeatTimerEvent+0x4c>) + 8003764: 6813 ldr r3, [r2, #0] + 8003766: 3301 adds r3, #1 + 8003768: 6013 str r3, [r2, #0] + } + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), CFG_SEQ_Prio_0); + 800376a: 2100 movs r1, #0 + 800376c: 2010 movs r0, #16 + 800376e: f013 fb0d bl 8016d8c <UTIL_SEQ_SetTask> + } +} + 8003772: bd08 pop {r3, pc} + 8003774: 20000dd0 .word 0x20000dd0 + 8003778: 20000db8 .word 0x20000db8 + 800377c: 20000d6c .word 0x20000d6c + 8003780: 20000e58 .word 0x20000e58 + 8003784: 20000c40 .word 0x20000c40 + +08003788 <OnTxTimerEvent>: +{ + 8003788: b508 push {r3, lr} + upload_message_timer =1U; + 800378a: 4b05 ldr r3, [pc, #20] ; (80037a0 <OnTxTimerEvent+0x18>) + 800378c: 2201 movs r2, #1 + 800378e: 701a strb r2, [r3, #0] + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); + 8003790: 2100 movs r1, #0 + 8003792: 2002 movs r0, #2 + 8003794: f013 fafa bl 8016d8c <UTIL_SEQ_SetTask> + UTIL_TIMER_Start(&TxTimer); + 8003798: 4802 ldr r0, [pc, #8] ; (80037a4 <OnTxTimerEvent+0x1c>) + 800379a: f013 fd79 bl 8017290 <UTIL_TIMER_Start> +} + 800379e: bd08 pop {r3, pc} + 80037a0: 20000e6d .word 0x20000e6d + 80037a4: 20000da0 .word 0x20000da0 + +080037a8 <OnMacProcessNotify>: +{ + 80037a8: b508 push {r3, lr} + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LmHandlerProcess), CFG_SEQ_Prio_0); + 80037aa: 2100 movs r1, #0 + 80037ac: 2001 movs r0, #1 + 80037ae: f013 faed bl 8016d8c <UTIL_SEQ_SetTask> +} + 80037b2: bd08 pop {r3, pc} + +080037b4 <OnStopJoinTimerEvent>: +{ + 80037b4: b508 push {r3, lr} + if (ActivationType == LORAWAN_DEFAULT_ACTIVATION_TYPE) + 80037b6: 4b05 ldr r3, [pc, #20] ; (80037cc <OnStopJoinTimerEvent+0x18>) + 80037b8: 781b ldrb r3, [r3, #0] + 80037ba: 2b02 cmp r3, #2 + 80037bc: d000 beq.n 80037c0 <OnStopJoinTimerEvent+0xc> +} + 80037be: bd08 pop {r3, pc} + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), CFG_SEQ_Prio_0); + 80037c0: 2100 movs r1, #0 + 80037c2: 2008 movs r0, #8 + 80037c4: f013 fae2 bl 8016d8c <UTIL_SEQ_SetTask> +} + 80037c8: e7f9 b.n 80037be <OnStopJoinTimerEvent+0xa> + 80037ca: bf00 nop + 80037cc: 20000000 .word 0x20000000 + +080037d0 <OnSystemReset>: +{ + 80037d0: b508 push {r3, lr} + if ((LORAMAC_HANDLER_SUCCESS == LmHandlerHalt()) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET)) + 80037d2: f009 fef9 bl 800d5c8 <LmHandlerHalt> + 80037d6: b100 cbz r0, 80037da <OnSystemReset+0xa> +} + 80037d8: bd08 pop {r3, pc} + if ((LORAMAC_HANDLER_SUCCESS == LmHandlerHalt()) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET)) + 80037da: f009 fb53 bl 800ce84 <LmHandlerJoinStatus> + 80037de: 2801 cmp r0, #1 + 80037e0: d1fa bne.n 80037d8 <OnSystemReset+0x8> + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); + 80037e2: f3bf 8f4f dsb sy +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + 80037e6: 4905 ldr r1, [pc, #20] ; (80037fc <OnSystemReset+0x2c>) + 80037e8: 68ca ldr r2, [r1, #12] + 80037ea: f402 62e0 and.w r2, r2, #1792 ; 0x700 + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 80037ee: 4b04 ldr r3, [pc, #16] ; (8003800 <OnSystemReset+0x30>) + 80037f0: 4313 orrs r3, r2 + 80037f2: 60cb str r3, [r1, #12] + 80037f4: f3bf 8f4f dsb sy + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + 80037f8: bf00 nop + for(;;) /* wait until reset */ + 80037fa: e7fd b.n 80037f8 <OnSystemReset+0x28> + 80037fc: e000ed00 .word 0xe000ed00 + 8003800: 05fa0004 .word 0x05fa0004 + +08003804 <OnJoinRequest>: + if (joinParams != NULL) + 8003804: 2800 cmp r0, #0 + 8003806: d03e beq.n 8003886 <OnJoinRequest+0x82> +{ + 8003808: b510 push {r4, lr} + 800380a: b082 sub sp, #8 + 800380c: 4604 mov r4, r0 + if (joinParams->Status == LORAMAC_HANDLER_SUCCESS) + 800380e: f990 3006 ldrsb.w r3, [r0, #6] + 8003812: bb8b cbnz r3, 8003878 <OnJoinRequest+0x74> + UTIL_TIMER_Stop(&JoinLedTimer); + 8003814: 481c ldr r0, [pc, #112] ; (8003888 <OnJoinRequest+0x84>) + 8003816: f013 fce1 bl 80171dc <UTIL_TIMER_Stop> + APP_LOG(TS_OFF, VLEVEL_M, "\r\n###### = JOINED = "); + 800381a: 4b1c ldr r3, [pc, #112] ; (800388c <OnJoinRequest+0x88>) + 800381c: 2200 movs r2, #0 + 800381e: 4611 mov r1, r2 + 8003820: 2002 movs r0, #2 + 8003822: f013 f989 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + if (joinParams->Mode == ACTIVATION_TYPE_ABP) + 8003826: 79e3 ldrb r3, [r4, #7] + 8003828: 2b01 cmp r3, #1 + 800382a: d01e beq.n 800386a <OnJoinRequest+0x66> + APP_LOG(TS_OFF, VLEVEL_M, "OTAA =====================\r\n"); + 800382c: 4b18 ldr r3, [pc, #96] ; (8003890 <OnJoinRequest+0x8c>) + 800382e: 2200 movs r2, #0 + 8003830: 4611 mov r1, r2 + 8003832: 2002 movs r0, #2 + 8003834: f013 f980 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + STS_LoRa_WAN_Joined = (uint8_t) joinParams->Mode; + 8003838: 79e2 ldrb r2, [r4, #7] + 800383a: 4b16 ldr r3, [pc, #88] ; (8003894 <OnJoinRequest+0x90>) + 800383c: 701a strb r2, [r3, #0] + APP_LOG(TS_OFF, VLEVEL_L,"\r\n STS_LoRa_WAN_Joined = %d \r\n", STS_LoRa_WAN_Joined); + 800383e: 781b ldrb r3, [r3, #0] + 8003840: 9300 str r3, [sp, #0] + 8003842: 4b15 ldr r3, [pc, #84] ; (8003898 <OnJoinRequest+0x94>) + 8003844: 2200 movs r2, #0 + 8003846: 4611 mov r1, r2 + 8003848: 2001 movs r0, #1 + 800384a: f013 f975 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower); + 800384e: f994 3004 ldrsb.w r3, [r4, #4] + 8003852: f994 2005 ldrsb.w r2, [r4, #5] + 8003856: 9201 str r2, [sp, #4] + 8003858: 9300 str r3, [sp, #0] + 800385a: 4b10 ldr r3, [pc, #64] ; (800389c <OnJoinRequest+0x98>) + 800385c: 2200 movs r2, #0 + 800385e: 4611 mov r1, r2 + 8003860: 2003 movs r0, #3 + 8003862: f013 f969 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8003866: b002 add sp, #8 + 8003868: bd10 pop {r4, pc} + APP_LOG(TS_OFF, VLEVEL_M, "ABP ======================\r\n"); + 800386a: 4b0d ldr r3, [pc, #52] ; (80038a0 <OnJoinRequest+0x9c>) + 800386c: 2200 movs r2, #0 + 800386e: 4611 mov r1, r2 + 8003870: 2002 movs r0, #2 + 8003872: f013 f961 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8003876: e7df b.n 8003838 <OnJoinRequest+0x34> + APP_LOG(TS_OFF, VLEVEL_M, "\r\n###### = JOIN FAILED\r\n"); + 8003878: 4b0a ldr r3, [pc, #40] ; (80038a4 <OnJoinRequest+0xa0>) + 800387a: 2200 movs r2, #0 + 800387c: 4611 mov r1, r2 + 800387e: 2002 movs r0, #2 + 8003880: f013 f95a bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8003884: e7e3 b.n 800384e <OnJoinRequest+0x4a> + 8003886: 4770 bx lr + 8003888: 20000d3c .word 0x20000d3c + 800388c: 08017c04 .word 0x08017c04 + 8003890: 08017c3c .word 0x08017c3c + 8003894: 20000d6c .word 0x20000d6c + 8003898: 08017c5c .word 0x08017c5c + 800389c: 08017c98 .word 0x08017c98 + 80038a0: 08017c1c .word 0x08017c1c + 80038a4: 08017c7c .word 0x08017c7c + +080038a8 <OnTxPeriodicityChanged>: +{ + 80038a8: b530 push {r4, r5, lr} + 80038aa: b083 sub sp, #12 + TxPeriodicity = periodicity; + 80038ac: 4b0d ldr r3, [pc, #52] ; (80038e4 <OnTxPeriodicityChanged+0x3c>) + 80038ae: 6018 str r0, [r3, #0] + if (TxPeriodicity == 0) + 80038b0: b910 cbnz r0, 80038b8 <OnTxPeriodicityChanged+0x10> + TxPeriodicity = APP_TX_DUTYCYCLE; + 80038b2: f242 7210 movw r2, #10000 ; 0x2710 + 80038b6: 601a str r2, [r3, #0] + UTIL_TIMER_Stop(&TxTimer); + 80038b8: 4c0b ldr r4, [pc, #44] ; (80038e8 <OnTxPeriodicityChanged+0x40>) + 80038ba: 4620 mov r0, r4 + 80038bc: f013 fc8e bl 80171dc <UTIL_TIMER_Stop> + UTIL_TIMER_SetPeriod(&TxTimer, TxPeriodicity); + 80038c0: 4d08 ldr r5, [pc, #32] ; (80038e4 <OnTxPeriodicityChanged+0x3c>) + 80038c2: 6829 ldr r1, [r5, #0] + 80038c4: 4620 mov r0, r4 + 80038c6: f013 fd29 bl 801731c <UTIL_TIMER_SetPeriod> + UTIL_TIMER_Start(&TxTimer); + 80038ca: 4620 mov r0, r4 + 80038cc: f013 fce0 bl 8017290 <UTIL_TIMER_Start> + APP_LOG(TS_OFF, VLEVEL_L,"\r\n TxPeriodicity changed to %u (msec) \r\n", TxPeriodicity); + 80038d0: 682b ldr r3, [r5, #0] + 80038d2: 9300 str r3, [sp, #0] + 80038d4: 4b05 ldr r3, [pc, #20] ; (80038ec <OnTxPeriodicityChanged+0x44>) + 80038d6: 2200 movs r2, #0 + 80038d8: 4611 mov r1, r2 + 80038da: 2001 movs r0, #1 + 80038dc: f013 f92c bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 80038e0: b003 add sp, #12 + 80038e2: bd30 pop {r4, r5, pc} + 80038e4: 20000074 .word 0x20000074 + 80038e8: 20000da0 .word 0x20000da0 + 80038ec: 08017cc4 .word 0x08017cc4 + +080038f0 <OnYunhornSTSHeartBeatPeriodicityChanged>: +{ + 80038f0: b530 push {r4, r5, lr} + 80038f2: b083 sub sp, #12 + HeartBeatPeriodicity = periodicity; + 80038f4: 4b0e ldr r3, [pc, #56] ; (8003930 <OnYunhornSTSHeartBeatPeriodicityChanged+0x40>) + 80038f6: 6018 str r0, [r3, #0] + if (HeartBeatPeriodicity == 0) + 80038f8: 681b ldr r3, [r3, #0] + 80038fa: b913 cbnz r3, 8003902 <OnYunhornSTSHeartBeatPeriodicityChanged+0x12> + HeartBeatPeriodicity = 10*APP_TX_DUTYCYCLE; + 80038fc: 4b0c ldr r3, [pc, #48] ; (8003930 <OnYunhornSTSHeartBeatPeriodicityChanged+0x40>) + 80038fe: 4a0d ldr r2, [pc, #52] ; (8003934 <OnYunhornSTSHeartBeatPeriodicityChanged+0x44>) + 8003900: 601a str r2, [r3, #0] + UTIL_TIMER_Stop(&YunhornSTSHeartBeatTimer); + 8003902: 4c0d ldr r4, [pc, #52] ; (8003938 <OnYunhornSTSHeartBeatPeriodicityChanged+0x48>) + 8003904: 4620 mov r0, r4 + 8003906: f013 fc69 bl 80171dc <UTIL_TIMER_Stop> + UTIL_TIMER_SetPeriod(&YunhornSTSHeartBeatTimer, HeartBeatPeriodicity); + 800390a: 4d09 ldr r5, [pc, #36] ; (8003930 <OnYunhornSTSHeartBeatPeriodicityChanged+0x40>) + 800390c: 6829 ldr r1, [r5, #0] + 800390e: 4620 mov r0, r4 + 8003910: f013 fd04 bl 801731c <UTIL_TIMER_SetPeriod> + UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); + 8003914: 4620 mov r0, r4 + 8003916: f013 fcbb bl 8017290 <UTIL_TIMER_Start> + APP_LOG(TS_OFF, VLEVEL_L,"**************** HeartBeatPeriodicity Changed to: %u (ms)\r\n", HeartBeatPeriodicity ); + 800391a: 682b ldr r3, [r5, #0] + 800391c: 9300 str r3, [sp, #0] + 800391e: 4b07 ldr r3, [pc, #28] ; (800393c <OnYunhornSTSHeartBeatPeriodicityChanged+0x4c>) + 8003920: 2200 movs r2, #0 + 8003922: 4611 mov r1, r2 + 8003924: 2001 movs r0, #1 + 8003926: f013 f907 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 800392a: b003 add sp, #12 + 800392c: bd30 pop {r4, r5, pc} + 800392e: bf00 nop + 8003930: 2000000c .word 0x2000000c + 8003934: 000186a0 .word 0x000186a0 + 8003938: 20000db8 .word 0x20000db8 + 800393c: 08017cf0 .word 0x08017cf0 + +08003940 <OnStoreContextRequest>: +{ + 8003940: b538 push {r3, r4, r5, lr} + 8003942: 4604 mov r4, r0 + 8003944: 460d mov r5, r1 + if (FLASH_IF_Erase(LORAWAN_NVM_BASE_ADDRESS, FLASH_PAGE_SIZE) == FLASH_IF_OK) + 8003946: f44f 6100 mov.w r1, #2048 ; 0x800 + 800394a: 4805 ldr r0, [pc, #20] ; (8003960 <OnStoreContextRequest+0x20>) + 800394c: f7fe fd6a bl 8002424 <FLASH_IF_Erase> + 8003950: b100 cbz r0, 8003954 <OnStoreContextRequest+0x14> +} + 8003952: bd38 pop {r3, r4, r5, pc} + FLASH_IF_Write(LORAWAN_NVM_BASE_ADDRESS, (const void *)nvm, nvm_size); + 8003954: 462a mov r2, r5 + 8003956: 4621 mov r1, r4 + 8003958: 4801 ldr r0, [pc, #4] ; (8003960 <OnStoreContextRequest+0x20>) + 800395a: f7fe fd2b bl 80023b4 <FLASH_IF_Write> +} + 800395e: e7f8 b.n 8003952 <OnStoreContextRequest+0x12> + 8003960: 0803f000 .word 0x0803f000 + +08003964 <OnRestoreContextRequest>: +{ + 8003964: b508 push {r3, lr} + 8003966: 460a mov r2, r1 + FLASH_IF_Read(nvm, LORAWAN_NVM_BASE_ADDRESS, nvm_size); + 8003968: 4901 ldr r1, [pc, #4] ; (8003970 <OnRestoreContextRequest+0xc>) + 800396a: f7fe fd3f bl 80023ec <FLASH_IF_Read> +} + 800396e: bd08 pop {r3, pc} + 8003970: 0803f000 .word 0x0803f000 + +08003974 <StopJoin>: +{ + 8003974: b538 push {r3, r4, r5, lr} + UTIL_TIMER_Stop(&TxTimer); + 8003976: 4815 ldr r0, [pc, #84] ; (80039cc <StopJoin+0x58>) + 8003978: f013 fc30 bl 80171dc <UTIL_TIMER_Stop> + if (LORAMAC_HANDLER_SUCCESS != LmHandlerStop()) + 800397c: f009 fe1c bl 800d5b8 <LmHandlerStop> + 8003980: b148 cbz r0, 8003996 <StopJoin+0x22> + APP_LOG(TS_OFF, VLEVEL_M, "LmHandler Stop on going ...\r\n"); + 8003982: 4b13 ldr r3, [pc, #76] ; (80039d0 <StopJoin+0x5c>) + 8003984: 2200 movs r2, #0 + 8003986: 4611 mov r1, r2 + 8003988: 2002 movs r0, #2 + 800398a: f013 f8d5 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + UTIL_TIMER_Start(&StopJoinTimer); + 800398e: 4811 ldr r0, [pc, #68] ; (80039d4 <StopJoin+0x60>) + 8003990: f013 fc7e bl 8017290 <UTIL_TIMER_Start> +} + 8003994: bd38 pop {r3, r4, r5, pc} + APP_LOG(TS_OFF, VLEVEL_M, "LmHandler Stopped\r\n"); + 8003996: 4b10 ldr r3, [pc, #64] ; (80039d8 <StopJoin+0x64>) + 8003998: 2200 movs r2, #0 + 800399a: 4611 mov r1, r2 + 800399c: 2002 movs r0, #2 + 800399e: f013 f8cb bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + ActivationType = ACTIVATION_TYPE_ABP; + 80039a2: 4c0e ldr r4, [pc, #56] ; (80039dc <StopJoin+0x68>) + 80039a4: 2501 movs r5, #1 + 80039a6: 7025 strb r5, [r4, #0] + APP_LOG(TS_OFF, VLEVEL_M, "LmHandler switch to ABP mode\r\n"); + 80039a8: 4b0d ldr r3, [pc, #52] ; (80039e0 <StopJoin+0x6c>) + 80039aa: 2200 movs r2, #0 + 80039ac: 4611 mov r1, r2 + 80039ae: 2002 movs r0, #2 + 80039b0: f013 f8c2 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + LmHandlerConfigure(&LmHandlerParams); + 80039b4: 480b ldr r0, [pc, #44] ; (80039e4 <StopJoin+0x70>) + 80039b6: f009 fc87 bl 800d2c8 <LmHandlerConfigure> + LmHandlerJoin(ActivationType, true); + 80039ba: 4629 mov r1, r5 + 80039bc: 7820 ldrb r0, [r4, #0] + 80039be: f009 facd bl 800cf5c <LmHandlerJoin> + UTIL_TIMER_Start(&TxTimer); + 80039c2: 4802 ldr r0, [pc, #8] ; (80039cc <StopJoin+0x58>) + 80039c4: f013 fc64 bl 8017290 <UTIL_TIMER_Start> + 80039c8: e7e1 b.n 800398e <StopJoin+0x1a> + 80039ca: bf00 nop + 80039cc: 20000da0 .word 0x20000da0 + 80039d0: 08017d2c .word 0x08017d2c + 80039d4: 20000d70 .word 0x20000d70 + 80039d8: 08017d4c .word 0x08017d4c + 80039dc: 20000000 .word 0x20000000 + 80039e0: 08017d60 .word 0x08017d60 + 80039e4: 2000005c .word 0x2000005c + +080039e8 <StoreContext>: +{ + 80039e8: b508 push {r3, lr} + status = LmHandlerNvmDataStore(); + 80039ea: f009 fe77 bl 800d6dc <LmHandlerNvmDataStore> + if (status == LORAMAC_HANDLER_NVM_DATA_UP_TO_DATE) + 80039ee: f110 0f08 cmn.w r0, #8 + 80039f2: d003 beq.n 80039fc <StoreContext+0x14> + else if (status == LORAMAC_HANDLER_ERROR) + 80039f4: f1b0 3fff cmp.w r0, #4294967295 + 80039f8: d007 beq.n 8003a0a <StoreContext+0x22> +} + 80039fa: bd08 pop {r3, pc} + APP_LOG(TS_OFF, VLEVEL_M, "NVM DATA UP TO DATE\r\n"); + 80039fc: 4b06 ldr r3, [pc, #24] ; (8003a18 <StoreContext+0x30>) + 80039fe: 2200 movs r2, #0 + 8003a00: 4611 mov r1, r2 + 8003a02: 2002 movs r0, #2 + 8003a04: f013 f898 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8003a08: e7f7 b.n 80039fa <StoreContext+0x12> + APP_LOG(TS_OFF, VLEVEL_M, "NVM DATA STORE FAILED\r\n"); + 8003a0a: 4b04 ldr r3, [pc, #16] ; (8003a1c <StoreContext+0x34>) + 8003a0c: 2200 movs r2, #0 + 8003a0e: 4611 mov r1, r2 + 8003a10: 2002 movs r0, #2 + 8003a12: f013 f891 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8003a16: e7f0 b.n 80039fa <StoreContext+0x12> + 8003a18: 08017d80 .word 0x08017d80 + 8003a1c: 08017d98 .word 0x08017d98 + +08003a20 <SendTxData>: +{ + 8003a20: b570 push {r4, r5, r6, lr} + 8003a22: b08e sub sp, #56 ; 0x38 + uint8_t batteryLevel = GetBatteryLevel(); + 8003a24: f7ff f8b4 bl 8002b90 <GetBatteryLevel> + 8003a28: 4604 mov r4, r0 + uint16_t batteryLevelmV = SYS_GetBatteryLevel(); + 8003a2a: f7fe fa7f bl 8001f2c <SYS_GetBatteryLevel> + 8003a2e: 4605 mov r5, r0 + APP_LOG(TS_ON, VLEVEL_H, "\r\n Flag: Heart-beat-timer = %u \r\n upload_message_timer %u \r\n sensor_data_ready = %u \r\n", + 8003a30: 4b7a ldr r3, [pc, #488] ; (8003c1c <SendTxData+0x1fc>) + 8003a32: 781b ldrb r3, [r3, #0] + 8003a34: 4a7a ldr r2, [pc, #488] ; (8003c20 <SendTxData+0x200>) + 8003a36: 7812 ldrb r2, [r2, #0] + 8003a38: 497a ldr r1, [pc, #488] ; (8003c24 <SendTxData+0x204>) + 8003a3a: 7809 ldrb r1, [r1, #0] + 8003a3c: 9102 str r1, [sp, #8] + 8003a3e: 9201 str r2, [sp, #4] + 8003a40: 9300 str r3, [sp, #0] + 8003a42: 4b79 ldr r3, [pc, #484] ; (8003c28 <SendTxData+0x208>) + 8003a44: 2201 movs r2, #1 + 8003a46: 2100 movs r1, #0 + 8003a48: 2003 movs r0, #3 + 8003a4a: f013 f875 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + APP_LOG(TS_ON, VLEVEL_L, "\r\nVDDA: %4d (mV)\r\n", batteryLevelmV); + 8003a4e: 9500 str r5, [sp, #0] + 8003a50: 4b76 ldr r3, [pc, #472] ; (8003c2c <SendTxData+0x20c>) + 8003a52: 2201 movs r2, #1 + 8003a54: 2100 movs r1, #0 + 8003a56: 4610 mov r0, r2 + 8003a58: f013 f86e bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + if (LmHandlerIsBusy() == false) + 8003a5c: f009 faf8 bl 800d050 <LmHandlerIsBusy> + 8003a60: b188 cbz r0, 8003a86 <SendTxData+0x66> + UTIL_TIMER_Time_t nextTxIn = 0; + 8003a62: 2500 movs r5, #0 + UTIL_TIMER_Stop(&TxTimer); + 8003a64: 4c72 ldr r4, [pc, #456] ; (8003c30 <SendTxData+0x210>) + 8003a66: 4620 mov r0, r4 + 8003a68: f013 fbb8 bl 80171dc <UTIL_TIMER_Stop> + UTIL_TIMER_SetPeriod(&TxTimer, MAX(nextTxIn, TxPeriodicity)); + 8003a6c: 4b71 ldr r3, [pc, #452] ; (8003c34 <SendTxData+0x214>) + 8003a6e: 6819 ldr r1, [r3, #0] + 8003a70: 42a9 cmp r1, r5 + 8003a72: bf38 it cc + 8003a74: 4629 movcc r1, r5 + 8003a76: 4620 mov r0, r4 + 8003a78: f013 fc50 bl 801731c <UTIL_TIMER_SetPeriod> + UTIL_TIMER_Start(&TxTimer); + 8003a7c: 4620 mov r0, r4 + 8003a7e: f013 fc07 bl 8017290 <UTIL_TIMER_Start> +} + 8003a82: b00e add sp, #56 ; 0x38 + 8003a84: bd70 pop {r4, r5, r6, pc} + LED_ON; + 8003a86: 4e6c ldr r6, [pc, #432] ; (8003c38 <SendTxData+0x218>) + 8003a88: 2201 movs r2, #1 + 8003a8a: 2104 movs r1, #4 + 8003a8c: 4630 mov r0, r6 + 8003a8e: f005 fe34 bl 80096fa <HAL_GPIO_WritePin> + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP4), CFG_SEQ_Prio_0); + 8003a92: 2100 movs r1, #0 + 8003a94: f44f 7080 mov.w r0, #256 ; 0x100 + 8003a98: f013 f978 bl 8016d8c <UTIL_SEQ_SetTask> + LED_OFF; + 8003a9c: 2200 movs r2, #0 + 8003a9e: 2104 movs r1, #4 + 8003aa0: 4630 mov r0, r6 + 8003aa2: f005 fe2a bl 80096fa <HAL_GPIO_WritePin> + STS_R0_SENSOR_Read(&r0_data); + 8003aa6: a804 add r0, sp, #16 + 8003aa8: f001 fa3c bl 8004f24 <STS_R0_SENSOR_Read> + r0_data.battery_mV = batteryLevelmV; + 8003aac: f8ad 5012 strh.w r5, [sp, #18] + r0_data.battery_Pct = (uint8_t)(99*batteryLevel/254); + 8003ab0: eb04 0444 add.w r4, r4, r4, lsl #1 + 8003ab4: eb04 1444 add.w r4, r4, r4, lsl #5 + 8003ab8: 4b60 ldr r3, [pc, #384] ; (8003c3c <SendTxData+0x21c>) + 8003aba: fb83 2304 smull r2, r3, r3, r4 + 8003abe: 4423 add r3, r4 + 8003ac0: 17e4 asrs r4, r4, #31 + 8003ac2: ebc4 14e3 rsb r4, r4, r3, asr #7 + 8003ac6: f88d 401c strb.w r4, [sp, #28] + EnvSensors_Read(&sensor_data); + 8003aca: a808 add r0, sp, #32 + 8003acc: f7ff f974 bl 8002db8 <EnvSensors_Read> + AppData.Port = LORAWAN_USER_APP_PORT; + 8003ad0: 4b5b ldr r3, [pc, #364] ; (8003c40 <SendTxData+0x220>) + 8003ad2: 220a movs r2, #10 + 8003ad4: 701a strb r2, [r3, #0] + AppData.Buffer[i++] = AppLedStateOn; + 8003ad6: 685a ldr r2, [r3, #4] + 8003ad8: 495a ldr r1, [pc, #360] ; (8003c44 <SendTxData+0x224>) + 8003ada: 7809 ldrb r1, [r1, #0] + 8003adc: 7011 strb r1, [r2, #0] + AppData.Buffer[i++] = (uint8_t)(0xFF & sts_mtmcode1); //mtmcode1; //#02 + 8003ade: 685a ldr r2, [r3, #4] + 8003ae0: 2100 movs r1, #0 + 8003ae2: 7051 strb r1, [r2, #1] + AppData.Buffer[i++] = (uint8_t)(0xFF & sts_mtmcode2); //mtmcode2; //#03 + 8003ae4: 685a ldr r2, [r3, #4] + 8003ae6: 2110 movs r1, #16 + 8003ae8: 7091 strb r1, [r2, #2] + AppData.Buffer[i++] = (uint8_t)(0xFF & sts_hardware_ver); //hardware_Ver; //#04 + 8003aea: 685a ldr r2, [r3, #4] + 8003aec: 2101 movs r1, #1 + 8003aee: 70d1 strb r1, [r2, #3] + AppData.Buffer[i++] = (uint8_t)(r0_data.battery_Pct); //#05 + 8003af0: 685a ldr r2, [r3, #4] + 8003af2: f89d 301c ldrb.w r3, [sp, #28] + 8003af6: 7113 strb r3, [r2, #4] + if (heart_beat_timer) + 8003af8: 4a48 ldr r2, [pc, #288] ; (8003c1c <SendTxData+0x1fc>) + 8003afa: 7812 ldrb r2, [r2, #0] + 8003afc: 2a00 cmp r2, #0 + 8003afe: d152 bne.n 8003ba6 <SendTxData+0x186> + } else if ((upload_message_timer)||(sensor_data_ready)) //sensor_data_ready for manual push button-1 trigger) + 8003b00: 4b47 ldr r3, [pc, #284] ; (8003c20 <SendTxData+0x200>) + 8003b02: 781b ldrb r3, [r3, #0] + 8003b04: b91b cbnz r3, 8003b0e <SendTxData+0xee> + 8003b06: 4b47 ldr r3, [pc, #284] ; (8003c24 <SendTxData+0x204>) + 8003b08: 781b ldrb r3, [r3, #0] + 8003b0a: 2b00 cmp r3, #0 + 8003b0c: d062 beq.n 8003bd4 <SendTxData+0x1b4> + sensor_data_ready =0; + 8003b0e: 2100 movs r1, #0 + 8003b10: 4b44 ldr r3, [pc, #272] ; (8003c24 <SendTxData+0x204>) + 8003b12: 7019 strb r1, [r3, #0] + upload_message_timer =0; + 8003b14: 4b42 ldr r3, [pc, #264] ; (8003c20 <SendTxData+0x200>) + 8003b16: 7019 strb r1, [r3, #0] + AppData.Buffer[i++] = (uint8_t)(r0_data.distance_mm >>8)&0xff; //#05 + 8003b18: f8bd 2010 ldrh.w r2, [sp, #16] + 8003b1c: 4b48 ldr r3, [pc, #288] ; (8003c40 <SendTxData+0x220>) + 8003b1e: 6858 ldr r0, [r3, #4] + 8003b20: 0a14 lsrs r4, r2, #8 + 8003b22: 7144 strb r4, [r0, #5] + AppData.Buffer[i++] = (uint8_t)(r0_data.distance_mm)&0xff; //#06 + 8003b24: 6858 ldr r0, [r3, #4] + 8003b26: 7182 strb r2, [r0, #6] + AppData.Buffer[i++] = (uint8_t)(r0_data.distance1_mm >>8)&0xff; //#07 + 8003b28: f8bd 0018 ldrh.w r0, [sp, #24] + 8003b2c: 685c ldr r4, [r3, #4] + 8003b2e: 0a00 lsrs r0, r0, #8 + 8003b30: 71e0 strb r0, [r4, #7] + AppData.Buffer[i++] = (uint8_t)(r0_data.distance1_mm)&0xff; //#08 + 8003b32: 685b ldr r3, [r3, #4] + 8003b34: f89d 0018 ldrb.w r0, [sp, #24] + 8003b38: 7218 strb r0, [r3, #8] + AppData.Buffer[i++] = (uint8_t)(r0_data.distance2_mm >>8)&0xff; //#09 + 8003b3a: f8bd 001a ldrh.w r0, [sp, #26] + 8003b3e: 0a00 lsrs r0, r0, #8 + 8003b40: 7258 strb r0, [r3, #9] + AppData.Buffer[i++] = (uint8_t)(r0_data.distance2_mm)&0xff; //#10 + 8003b42: f89d 001a ldrb.w r0, [sp, #26] + 8003b46: 7298 strb r0, [r3, #10] + AppData.Buffer[i++] = (uint8_t)(sts_soap_level_state)&0xff; //#11 + 8003b48: 483f ldr r0, [pc, #252] ; (8003c48 <SendTxData+0x228>) + 8003b4a: 7800 ldrb r0, [r0, #0] + 8003b4c: 72d8 strb r0, [r3, #11] + AppData.Buffer[i++] = (uint8_t)(r0_data.battery_mV >>8)&0xff; //#12 + 8003b4e: f8bd 0012 ldrh.w r0, [sp, #18] + 8003b52: 0a04 lsrs r4, r0, #8 + 8003b54: 731c strb r4, [r3, #12] + AppData.Buffer[i++] = (uint8_t)(r0_data.battery_mV)&0xff; //#13 + 8003b56: 7358 strb r0, [r3, #13] + APP_LOG(TS_ON, VLEVEL_H, "\r\n------------ Heart-Beat ------------- \r\n ------------------\r\nDistance0 = %d mm, \r\nDistance1 = %d mm,\r\nDistance2 = %d mm, \r\nVBAT=%d\r\n", + 8003b58: f8bd 3018 ldrh.w r3, [sp, #24] + 8003b5c: f8bd 001a ldrh.w r0, [sp, #26] + 8003b60: f89d 401c ldrb.w r4, [sp, #28] + 8003b64: 9403 str r4, [sp, #12] + 8003b66: 9002 str r0, [sp, #8] + 8003b68: 9301 str r3, [sp, #4] + 8003b6a: 9200 str r2, [sp, #0] + 8003b6c: 4b37 ldr r3, [pc, #220] ; (8003c4c <SendTxData+0x22c>) + 8003b6e: 2201 movs r2, #1 + 8003b70: 2003 movs r0, #3 + 8003b72: f012 ffe1 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + AppData.Buffer[i++] = (uint8_t)(r0_data.battery_mV)&0xff; //#13 + 8003b76: 220e movs r2, #14 + AppData.BufferSize = (sts_service_mask >1?0:i); + 8003b78: 4b35 ldr r3, [pc, #212] ; (8003c50 <SendTxData+0x230>) + 8003b7a: 781b ldrb r3, [r3, #0] + 8003b7c: b2db uxtb r3, r3 + 8003b7e: 2b01 cmp r3, #1 + 8003b80: d900 bls.n 8003b84 <SendTxData+0x164> + 8003b82: 2200 movs r2, #0 + 8003b84: 4b2e ldr r3, [pc, #184] ; (8003c40 <SendTxData+0x220>) + 8003b86: 705a strb r2, [r3, #1] + if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET)) + 8003b88: 4b32 ldr r3, [pc, #200] ; (8003c54 <SendTxData+0x234>) + 8003b8a: 7a5b ldrb r3, [r3, #9] + 8003b8c: bb23 cbnz r3, 8003bd8 <SendTxData+0x1b8> + status = LmHandlerSend(&AppData, LmHandlerParams.IsTxConfirmed, false); + 8003b8e: 2200 movs r2, #0 + 8003b90: 4b31 ldr r3, [pc, #196] ; (8003c58 <SendTxData+0x238>) + 8003b92: 78d9 ldrb r1, [r3, #3] + 8003b94: 482a ldr r0, [pc, #168] ; (8003c40 <SendTxData+0x220>) + 8003b96: f009 fa79 bl 800d08c <LmHandlerSend> + if (LORAMAC_HANDLER_SUCCESS == status) + 8003b9a: b328 cbz r0, 8003be8 <SendTxData+0x1c8> + else if (LORAMAC_HANDLER_DUTYCYCLE_RESTRICTED == status) + 8003b9c: f110 0f06 cmn.w r0, #6 + 8003ba0: d02a beq.n 8003bf8 <SendTxData+0x1d8> + UTIL_TIMER_Time_t nextTxIn = 0; + 8003ba2: 2500 movs r5, #0 + 8003ba4: e75e b.n 8003a64 <SendTxData+0x44> + heart_beat_timer = 0; + 8003ba6: 2100 movs r1, #0 + 8003ba8: 4a1c ldr r2, [pc, #112] ; (8003c1c <SendTxData+0x1fc>) + 8003baa: 7011 strb r1, [r2, #0] + AppData.Port = LORAWAN_USER_HTBT_PORT; //LORAWAN_USER_APP_PORT+1; + 8003bac: 4a24 ldr r2, [pc, #144] ; (8003c40 <SendTxData+0x220>) + 8003bae: 200b movs r0, #11 + 8003bb0: 7010 strb r0, [r2, #0] + APP_LOG(TS_ON, VLEVEL_H, "\r\n------------ Heart-Beat ------------- \r\n ------------------\r\nDistance0 = %d mm, \r\nDistance1 = %d mm,\r\nDistance2 = %d mm, \r\nVBAT=%d\r\n", + 8003bb2: f8bd 2010 ldrh.w r2, [sp, #16] + 8003bb6: f8bd 0018 ldrh.w r0, [sp, #24] + 8003bba: f8bd 401a ldrh.w r4, [sp, #26] + 8003bbe: 9303 str r3, [sp, #12] + 8003bc0: 9402 str r4, [sp, #8] + 8003bc2: 9001 str r0, [sp, #4] + 8003bc4: 9200 str r2, [sp, #0] + 8003bc6: 4b21 ldr r3, [pc, #132] ; (8003c4c <SendTxData+0x22c>) + 8003bc8: 2201 movs r2, #1 + 8003bca: 2003 movs r0, #3 + 8003bcc: f012 ffb4 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + AppData.Buffer[i++] = (uint8_t)(r0_data.battery_Pct); //#05 + 8003bd0: 2205 movs r2, #5 + 8003bd2: e7d1 b.n 8003b78 <SendTxData+0x158> + 8003bd4: 2205 movs r2, #5 + 8003bd6: e7cf b.n 8003b78 <SendTxData+0x158> + if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET)) + 8003bd8: f009 f954 bl 800ce84 <LmHandlerJoinStatus> + 8003bdc: 2801 cmp r0, #1 + 8003bde: d1d6 bne.n 8003b8e <SendTxData+0x16e> + UTIL_TIMER_Stop(&JoinLedTimer); + 8003be0: 481c ldr r0, [pc, #112] ; (8003c54 <SendTxData+0x234>) + 8003be2: f013 fafb bl 80171dc <UTIL_TIMER_Stop> + 8003be6: e7d2 b.n 8003b8e <SendTxData+0x16e> + APP_LOG(TS_ON, VLEVEL_M, "SEND REQUEST\r\n"); + 8003be8: 4b1c ldr r3, [pc, #112] ; (8003c5c <SendTxData+0x23c>) + 8003bea: 2201 movs r2, #1 + 8003bec: 2100 movs r1, #0 + 8003bee: 2002 movs r0, #2 + 8003bf0: f012 ffa2 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + UTIL_TIMER_Time_t nextTxIn = 0; + 8003bf4: 2500 movs r5, #0 + 8003bf6: e735 b.n 8003a64 <SendTxData+0x44> + nextTxIn = LmHandlerGetDutyCycleWaitTime(); + 8003bf8: f009 f93e bl 800ce78 <LmHandlerGetDutyCycleWaitTime> + if (nextTxIn > 0) + 8003bfc: 4605 mov r5, r0 + 8003bfe: 2800 cmp r0, #0 + 8003c00: f43f af30 beq.w 8003a64 <SendTxData+0x44> + APP_LOG(TS_ON, VLEVEL_L, "Next Tx in : ~%d second(s)\r\n", (nextTxIn / 1000)); + 8003c04: 4b16 ldr r3, [pc, #88] ; (8003c60 <SendTxData+0x240>) + 8003c06: fba3 2300 umull r2, r3, r3, r0 + 8003c0a: 099b lsrs r3, r3, #6 + 8003c0c: 9300 str r3, [sp, #0] + 8003c0e: 4b15 ldr r3, [pc, #84] ; (8003c64 <SendTxData+0x244>) + 8003c10: 2201 movs r2, #1 + 8003c12: 2100 movs r1, #0 + 8003c14: 4610 mov r0, r2 + 8003c16: f012 ff8f bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8003c1a: e723 b.n 8003a64 <SendTxData+0x44> + 8003c1c: 20000dd0 .word 0x20000dd0 + 8003c20: 20000e6d .word 0x20000e6d + 8003c24: 20000e54 .word 0x20000e54 + 8003c28: 08017db0 .word 0x08017db0 + 8003c2c: 08017e0c .word 0x08017e0c + 8003c30: 20000da0 .word 0x20000da0 + 8003c34: 20000074 .word 0x20000074 + 8003c38: 48000400 .word 0x48000400 + 8003c3c: 81020409 .word 0x81020409 + 8003c40: 20000004 .word 0x20000004 + 8003c44: 20000d3a .word 0x20000d3a + 8003c48: 20000c45 .word 0x20000c45 + 8003c4c: 08017e20 .word 0x08017e20 + 8003c50: 20000c44 .word 0x20000c44 + 8003c54: 20000d3c .word 0x20000d3c + 8003c58: 2000005c .word 0x2000005c + 8003c5c: 08017ea8 .word 0x08017ea8 + 8003c60: 10624dd3 .word 0x10624dd3 + 8003c64: 08017eb8 .word 0x08017eb8 + +08003c68 <STS_YUNHORN_RFAC_HANDLE_PROCESS>: + if (sts_service_mask == STS_SERVICE_MASK_L0) + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 5, "PVXXX"); +} + +static void STS_YUNHORN_RFAC_HANDLE_PROCESS(void) +{ + 8003c68: b508 push {r3, lr} + + STS_YunhornAuthenticationCode_Process(); + 8003c6a: f7ff fb7b bl 8003364 <STS_YunhornAuthenticationCode_Process> + +} + 8003c6e: bd08 pop {r3, pc} + +08003c70 <HAL_GPIO_EXTI_Callback>: +{ + 8003c70: b530 push {r4, r5, lr} + 8003c72: b083 sub sp, #12 + switch (GPIO_Pin) + 8003c74: 2802 cmp r0, #2 + 8003c76: d03b beq.n 8003cf0 <HAL_GPIO_EXTI_Callback+0x80> + 8003c78: 2820 cmp r0, #32 + 8003c7a: d03e beq.n 8003cfa <HAL_GPIO_EXTI_Callback+0x8a> + 8003c7c: 2801 cmp r0, #1 + 8003c7e: d001 beq.n 8003c84 <HAL_GPIO_EXTI_Callback+0x14> +} + 8003c80: b003 add sp, #12 + 8003c82: bd30 pop {r4, r5, pc} + sensor_data_ready =1; + 8003c84: 2501 movs r5, #1 + 8003c86: 4b1f ldr r3, [pc, #124] ; (8003d04 <HAL_GPIO_EXTI_Callback+0x94>) + 8003c88: 701d strb r5, [r3, #0] + uint8_t pinstate = HAL_GPIO_ReadPin(BUT1_GPIO_Port,BUT1_Pin); + 8003c8a: 4629 mov r1, r5 + 8003c8c: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8003c90: f005 fd2c bl 80096ec <HAL_GPIO_ReadPin> + 8003c94: 4604 mov r4, r0 + APP_LOG(TS_OFF, VLEVEL_L, "##################################### BUTTON-1 DETECTED: %2d \r\n", pinstate); + 8003c96: 9000 str r0, [sp, #0] + 8003c98: 4b1b ldr r3, [pc, #108] ; (8003d08 <HAL_GPIO_EXTI_Callback+0x98>) + 8003c9a: 2200 movs r2, #0 + 8003c9c: 4611 mov r1, r2 + 8003c9e: 4628 mov r0, r5 + 8003ca0: f012 ff4a bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + if (pinstate == 1) + 8003ca4: 42ac cmp r4, r5 + 8003ca6: d01e beq.n 8003ce6 <HAL_GPIO_EXTI_Callback+0x76> + LED_ON; + 8003ca8: 4c18 ldr r4, [pc, #96] ; (8003d0c <HAL_GPIO_EXTI_Callback+0x9c>) + 8003caa: 2201 movs r2, #1 + 8003cac: 2104 movs r1, #4 + 8003cae: 4620 mov r0, r4 + 8003cb0: f005 fd23 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(50); + 8003cb4: 2032 movs r0, #50 ; 0x32 + 8003cb6: f7fe fffb bl 8002cb0 <HAL_Delay> + LED_OFF; + 8003cba: 2200 movs r2, #0 + 8003cbc: 2104 movs r1, #4 + 8003cbe: 4620 mov r0, r4 + 8003cc0: f005 fd1b bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(20); + 8003cc4: 2014 movs r0, #20 + 8003cc6: f7fe fff3 bl 8002cb0 <HAL_Delay> + LED_ON; + 8003cca: 2201 movs r2, #1 + 8003ccc: 2104 movs r1, #4 + 8003cce: 4620 mov r0, r4 + 8003cd0: f005 fd13 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(50); + 8003cd4: 2032 movs r0, #50 ; 0x32 + 8003cd6: f7fe ffeb bl 8002cb0 <HAL_Delay> + LED_OFF; + 8003cda: 2200 movs r2, #0 + 8003cdc: 2104 movs r1, #4 + 8003cde: 4620 mov r0, r4 + 8003ce0: f005 fd0b bl 80096fa <HAL_GPIO_WritePin> + 8003ce4: e7cc b.n 8003c80 <HAL_GPIO_EXTI_Callback+0x10> + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); + 8003ce6: 2100 movs r1, #0 + 8003ce8: 2002 movs r0, #2 + 8003cea: f013 f84f bl 8016d8c <UTIL_SEQ_SetTask> + 8003cee: e7c7 b.n 8003c80 <HAL_GPIO_EXTI_Callback+0x10> + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), CFG_SEQ_Prio_0); + 8003cf0: 2100 movs r1, #0 + 8003cf2: 2008 movs r0, #8 + 8003cf4: f013 f84a bl 8016d8c <UTIL_SEQ_SetTask> + break; + 8003cf8: e7c2 b.n 8003c80 <HAL_GPIO_EXTI_Callback+0x10> + ToF_EventDetected = 1; + 8003cfa: 4b05 ldr r3, [pc, #20] ; (8003d10 <HAL_GPIO_EXTI_Callback+0xa0>) + 8003cfc: 2201 movs r2, #1 + 8003cfe: 701a strb r2, [r3, #0] +} + 8003d00: e7be b.n 8003c80 <HAL_GPIO_EXTI_Callback+0x10> + 8003d02: bf00 nop + 8003d04: 20000e54 .word 0x20000e54 + 8003d08: 08017ed8 .word 0x08017ed8 + 8003d0c: 48000400 .word 0x48000400 + 8003d10: 20000ed4 .word 0x20000ed4 + +08003d14 <STS_SENSOR_Upload_Message>: + +void STS_SENSOR_Upload_Message(uint8_t appDataPort, uint8_t appBufferSize, char *appDataBuffer) +{ + 8003d14: b570 push {r4, r5, r6, lr} + 8003d16: b082 sub sp, #8 + 8003d18: 4606 mov r6, r0 + 8003d1a: 460c mov r4, r1 + 8003d1c: 4615 mov r5, r2 + LmHandlerErrorStatus_t status = LORAMAC_HANDLER_ERROR; + UTIL_TIMER_Time_t nextTxIn = 0; + + if (LmHandlerIsBusy() == false) + 8003d1e: f009 f997 bl 800d050 <LmHandlerIsBusy> + 8003d22: 2800 cmp r0, #0 + 8003d24: d144 bne.n 8003db0 <STS_SENSOR_Upload_Message+0x9c> + { + + for (uint8_t i=0;i<appBufferSize; i++) { + 8003d26: 2300 movs r3, #0 + 8003d28: e007 b.n 8003d3a <STS_SENSOR_Upload_Message+0x26> + AppData.Buffer[i] = appDataBuffer[i]; + 8003d2a: 492a ldr r1, [pc, #168] ; (8003dd4 <STS_SENSOR_Upload_Message+0xc0>) + 8003d2c: 6849 ldr r1, [r1, #4] + 8003d2e: f815 c003 ldrb.w ip, [r5, r3] + 8003d32: f801 c003 strb.w ip, [r1, r3] + for (uint8_t i=0;i<appBufferSize; i++) { + 8003d36: 3301 adds r3, #1 + 8003d38: b2db uxtb r3, r3 + 8003d3a: 42a3 cmp r3, r4 + 8003d3c: d3f5 bcc.n 8003d2a <STS_SENSOR_Upload_Message+0x16> + } + + AppData.Port = appDataPort; + 8003d3e: 4b25 ldr r3, [pc, #148] ; (8003dd4 <STS_SENSOR_Upload_Message+0xc0>) + 8003d40: 701e strb r6, [r3, #0] + AppData.BufferSize = (sts_service_mask >1?0:appBufferSize); + 8003d42: 4b25 ldr r3, [pc, #148] ; (8003dd8 <STS_SENSOR_Upload_Message+0xc4>) + 8003d44: 781b ldrb r3, [r3, #0] + 8003d46: b2db uxtb r3, r3 + 8003d48: 2b01 cmp r3, #1 + 8003d4a: d900 bls.n 8003d4e <STS_SENSOR_Upload_Message+0x3a> + 8003d4c: 2400 movs r4, #0 + 8003d4e: 4b21 ldr r3, [pc, #132] ; (8003dd4 <STS_SENSOR_Upload_Message+0xc0>) + 8003d50: 705c strb r4, [r3, #1] + + if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET)) + 8003d52: 4b22 ldr r3, [pc, #136] ; (8003ddc <STS_SENSOR_Upload_Message+0xc8>) + 8003d54: 7a5b ldrb r3, [r3, #9] + 8003d56: b95b cbnz r3, 8003d70 <STS_SENSOR_Upload_Message+0x5c> +#if defined(STM32WL55xx) + HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); /* LED_RED */ +#endif + } + + status = LmHandlerSend(&AppData, LmHandlerParams.IsTxConfirmed, false); + 8003d58: 2200 movs r2, #0 + 8003d5a: 4b21 ldr r3, [pc, #132] ; (8003de0 <STS_SENSOR_Upload_Message+0xcc>) + 8003d5c: 78d9 ldrb r1, [r3, #3] + 8003d5e: 481d ldr r0, [pc, #116] ; (8003dd4 <STS_SENSOR_Upload_Message+0xc0>) + 8003d60: f009 f994 bl 800d08c <LmHandlerSend> + if (LORAMAC_HANDLER_SUCCESS == status) + 8003d64: b160 cbz r0, 8003d80 <STS_SENSOR_Upload_Message+0x6c> + { + APP_LOG(TS_ON, VLEVEL_L, "SEND REQUEST\r\n"); + } + else if (LORAMAC_HANDLER_DUTYCYCLE_RESTRICTED == status) + 8003d66: f110 0f06 cmn.w r0, #6 + 8003d6a: d011 beq.n 8003d90 <STS_SENSOR_Upload_Message+0x7c> + UTIL_TIMER_Time_t nextTxIn = 0; + 8003d6c: 2500 movs r5, #0 + 8003d6e: e020 b.n 8003db2 <STS_SENSOR_Upload_Message+0x9e> + if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET)) + 8003d70: f009 f888 bl 800ce84 <LmHandlerJoinStatus> + 8003d74: 2801 cmp r0, #1 + 8003d76: d1ef bne.n 8003d58 <STS_SENSOR_Upload_Message+0x44> + UTIL_TIMER_Stop(&JoinLedTimer); + 8003d78: 4818 ldr r0, [pc, #96] ; (8003ddc <STS_SENSOR_Upload_Message+0xc8>) + 8003d7a: f013 fa2f bl 80171dc <UTIL_TIMER_Stop> + 8003d7e: e7eb b.n 8003d58 <STS_SENSOR_Upload_Message+0x44> + APP_LOG(TS_ON, VLEVEL_L, "SEND REQUEST\r\n"); + 8003d80: 4b18 ldr r3, [pc, #96] ; (8003de4 <STS_SENSOR_Upload_Message+0xd0>) + 8003d82: 2201 movs r2, #1 + 8003d84: 2100 movs r1, #0 + 8003d86: 4610 mov r0, r2 + 8003d88: f012 fed6 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + UTIL_TIMER_Time_t nextTxIn = 0; + 8003d8c: 2500 movs r5, #0 + 8003d8e: e010 b.n 8003db2 <STS_SENSOR_Upload_Message+0x9e> + { + nextTxIn = LmHandlerGetDutyCycleWaitTime(); + 8003d90: f009 f872 bl 800ce78 <LmHandlerGetDutyCycleWaitTime> + if (nextTxIn > 0) + 8003d94: 4605 mov r5, r0 + 8003d96: b160 cbz r0, 8003db2 <STS_SENSOR_Upload_Message+0x9e> + { + APP_LOG(TS_ON, VLEVEL_L, "Next Tx in : ~%d second(s)\r\n", (nextTxIn / 1000)); + 8003d98: 4b13 ldr r3, [pc, #76] ; (8003de8 <STS_SENSOR_Upload_Message+0xd4>) + 8003d9a: fba3 2300 umull r2, r3, r3, r0 + 8003d9e: 099b lsrs r3, r3, #6 + 8003da0: 9300 str r3, [sp, #0] + 8003da2: 4b12 ldr r3, [pc, #72] ; (8003dec <STS_SENSOR_Upload_Message+0xd8>) + 8003da4: 2201 movs r2, #1 + 8003da6: 2100 movs r1, #0 + 8003da8: 4610 mov r0, r2 + 8003daa: f012 fec5 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8003dae: e000 b.n 8003db2 <STS_SENSOR_Upload_Message+0x9e> + UTIL_TIMER_Time_t nextTxIn = 0; + 8003db0: 2500 movs r5, #0 + + } + + if (EventType == TX_ON_TIMER) + { + UTIL_TIMER_Stop(&TxTimer); + 8003db2: 4c0f ldr r4, [pc, #60] ; (8003df0 <STS_SENSOR_Upload_Message+0xdc>) + 8003db4: 4620 mov r0, r4 + 8003db6: f013 fa11 bl 80171dc <UTIL_TIMER_Stop> + UTIL_TIMER_SetPeriod(&TxTimer, MAX(nextTxIn, TxPeriodicity)); + 8003dba: 4b0e ldr r3, [pc, #56] ; (8003df4 <STS_SENSOR_Upload_Message+0xe0>) + 8003dbc: 6819 ldr r1, [r3, #0] + 8003dbe: 42a9 cmp r1, r5 + 8003dc0: bf38 it cc + 8003dc2: 4629 movcc r1, r5 + 8003dc4: 4620 mov r0, r4 + 8003dc6: f013 faa9 bl 801731c <UTIL_TIMER_SetPeriod> + UTIL_TIMER_Start(&TxTimer); + 8003dca: 4620 mov r0, r4 + 8003dcc: f013 fa60 bl 8017290 <UTIL_TIMER_Start> + } +} + 8003dd0: b002 add sp, #8 + 8003dd2: bd70 pop {r4, r5, r6, pc} + 8003dd4: 20000004 .word 0x20000004 + 8003dd8: 20000c44 .word 0x20000c44 + 8003ddc: 20000d3c .word 0x20000d3c + 8003de0: 2000005c .word 0x2000005c + 8003de4: 08017ea8 .word 0x08017ea8 + 8003de8: 10624dd3 .word 0x10624dd3 + 8003dec: 08017eb8 .word 0x08017eb8 + 8003df0: 20000da0 .word 0x20000da0 + 8003df4: 20000074 .word 0x20000074 + +08003df8 <STS_SENSOR_Upload_Config_Invalid_Message>: +{ + 8003df8: b508 push {r3, lr} + if (sts_service_mask == STS_SERVICE_MASK_L0) + 8003dfa: 4b05 ldr r3, [pc, #20] ; (8003e10 <STS_SENSOR_Upload_Config_Invalid_Message+0x18>) + 8003dfc: 781b ldrb r3, [r3, #0] + 8003dfe: b103 cbz r3, 8003e02 <STS_SENSOR_Upload_Config_Invalid_Message+0xa> +} + 8003e00: bd08 pop {r3, pc} + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 5, "PVXXX"); + 8003e02: 4a04 ldr r2, [pc, #16] ; (8003e14 <STS_SENSOR_Upload_Config_Invalid_Message+0x1c>) + 8003e04: 2105 movs r1, #5 + 8003e06: 2001 movs r0, #1 + 8003e08: f7ff ff84 bl 8003d14 <STS_SENSOR_Upload_Message> +} + 8003e0c: e7f8 b.n 8003e00 <STS_SENSOR_Upload_Config_Invalid_Message+0x8> + 8003e0e: bf00 nop + 8003e10: 20000c44 .word 0x20000c44 + 8003e14: 08017f1c .word 0x08017f1c + +08003e18 <OnStoreSTSCFGContextRequest>: + + +void OnStoreSTSCFGContextRequest(void) +{ + 8003e18: b510 push {r4, lr} + 8003e1a: b090 sub sp, #64 ; 0x40 + /* USER CODE BEGIN OnStoreContextRequest_1 */ + uint8_t i=0, j=0, nvm_store_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]=""; + 8003e1c: 2400 movs r4, #0 + 8003e1e: 9400 str r4, [sp, #0] + 8003e20: 223c movs r2, #60 ; 0x3c + 8003e22: 4621 mov r1, r4 + 8003e24: a801 add r0, sp, #4 + 8003e26: f013 fc4b bl 80176c0 <memset> + +#if (defined(YUNHORN_STS_O6_ENABLED) || defined(YUNHORN_STS_R0_ENABLED)) + sts_cfg_nvm.length = STS_NVM_CFG_SIZE; + 8003e2a: 4b3a ldr r3, [pc, #232] ; (8003f14 <OnStoreSTSCFGContextRequest+0xfc>) + 8003e2c: 2220 movs r2, #32 + 8003e2e: 72da strb r2, [r3, #11] + nvm_store_value[i++] = sts_cfg_nvm.mtmcode1; + 8003e30: 7819 ldrb r1, [r3, #0] + 8003e32: f88d 1000 strb.w r1, [sp] + nvm_store_value[i++] = sts_cfg_nvm.mtmcode2; + 8003e36: 7859 ldrb r1, [r3, #1] + 8003e38: f88d 1001 strb.w r1, [sp, #1] + nvm_store_value[i++] = sts_cfg_nvm.version; + 8003e3c: 7899 ldrb r1, [r3, #2] + 8003e3e: f88d 1002 strb.w r1, [sp, #2] + nvm_store_value[i++] = sts_cfg_nvm.hardware_ver; + 8003e42: 78d9 ldrb r1, [r3, #3] + 8003e44: f88d 1003 strb.w r1, [sp, #3] + nvm_store_value[i++] = sts_cfg_nvm.periodicity; + 8003e48: 7919 ldrb r1, [r3, #4] + 8003e4a: f88d 1004 strb.w r1, [sp, #4] + nvm_store_value[i++] = sts_cfg_nvm.unit; + 8003e4e: 7959 ldrb r1, [r3, #5] + 8003e50: f88d 1005 strb.w r1, [sp, #5] + nvm_store_value[i++] = sts_cfg_nvm.sampling; + 8003e54: 7999 ldrb r1, [r3, #6] + 8003e56: f88d 1006 strb.w r1, [sp, #6] + nvm_store_value[i++] = sts_cfg_nvm.s_unit; + 8003e5a: 79d9 ldrb r1, [r3, #7] + 8003e5c: f88d 1007 strb.w r1, [sp, #7] + nvm_store_value[i++] = sts_cfg_nvm.work_mode; + 8003e60: 7a19 ldrb r1, [r3, #8] + 8003e62: f88d 1008 strb.w r1, [sp, #8] + nvm_store_value[i++] = sts_cfg_nvm.sts_service_mask; + 8003e66: 7a59 ldrb r1, [r3, #9] + 8003e68: f88d 1009 strb.w r1, [sp, #9] + nvm_store_value[i++] = sts_cfg_nvm.reseve01; + 8003e6c: 7a9b ldrb r3, [r3, #10] + 8003e6e: f88d 300a strb.w r3, [sp, #10] + nvm_store_value[i++] = (uint8_t) STS_NVM_CFG_SIZE; //sts_cfg_nvm.length; + 8003e72: f88d 200b strb.w r2, [sp, #11] + + for (j = 0; j < STS_CFG_PCFG_SIZE; j++) { + 8003e76: 4621 mov r1, r4 + nvm_store_value[i++] = (uint8_t) STS_NVM_CFG_SIZE; //sts_cfg_nvm.length; + 8003e78: 230c movs r3, #12 + for (j = 0; j < STS_CFG_PCFG_SIZE; j++) { + 8003e7a: e00a b.n 8003e92 <OnStoreSTSCFGContextRequest+0x7a> + nvm_store_value[i++] = (sts_cfg_nvm.p[j]); + 8003e7c: 1c58 adds r0, r3, #1 + 8003e7e: 4a25 ldr r2, [pc, #148] ; (8003f14 <OnStoreSTSCFGContextRequest+0xfc>) + 8003e80: 440a add r2, r1 + 8003e82: 7b12 ldrb r2, [r2, #12] + 8003e84: 3340 adds r3, #64 ; 0x40 + 8003e86: 446b add r3, sp + 8003e88: f803 2c40 strb.w r2, [r3, #-64] + for (j = 0; j < STS_CFG_PCFG_SIZE; j++) { + 8003e8c: 3101 adds r1, #1 + 8003e8e: b2c9 uxtb r1, r1 + nvm_store_value[i++] = (sts_cfg_nvm.p[j]); + 8003e90: b2c3 uxtb r3, r0 + for (j = 0; j < STS_CFG_PCFG_SIZE; j++) { + 8003e92: 291b cmp r1, #27 + 8003e94: d9f2 bls.n 8003e7c <OnStoreSTSCFGContextRequest+0x64> + } + + nvm_store_value[i++] = sts_cfg_nvm.fall_detection_acc_threshold; + 8003e96: 1c59 adds r1, r3, #1 + 8003e98: 4a1e ldr r2, [pc, #120] ; (8003f14 <OnStoreSTSCFGContextRequest+0xfc>) + 8003e9a: f892 4028 ldrb.w r4, [r2, #40] ; 0x28 + 8003e9e: f103 0040 add.w r0, r3, #64 ; 0x40 + 8003ea2: 4468 add r0, sp + 8003ea4: f800 4c40 strb.w r4, [r0, #-64] + nvm_store_value[i++] = sts_cfg_nvm.fall_detection_depth_threshold; + 8003ea8: 1c98 adds r0, r3, #2 + 8003eaa: f892 4029 ldrb.w r4, [r2, #41] ; 0x29 + 8003eae: f10d 0c40 add.w ip, sp, #64 ; 0x40 + 8003eb2: fa5c f181 uxtab r1, ip, r1 + 8003eb6: f801 4c40 strb.w r4, [r1, #-64] + nvm_store_value[i++] = sts_cfg_nvm.fall_detection_reserve; + 8003eba: 1cd9 adds r1, r3, #3 + 8003ebc: f892 402a ldrb.w r4, [r2, #42] ; 0x2a + 8003ec0: fa5c f080 uxtab r0, ip, r0 + 8003ec4: f800 4c40 strb.w r4, [r0, #-64] + nvm_store_value[i++] = sts_cfg_nvm.occupancy_overtime_threshold; + 8003ec8: 3304 adds r3, #4 + 8003eca: b2db uxtb r3, r3 + 8003ecc: f892 002b ldrb.w r0, [r2, #43] ; 0x2b + 8003ed0: fa5c f281 uxtab r2, ip, r1 + 8003ed4: f802 0c40 strb.w r0, [r2, #-64] + + for (j = 0; j < YUNHORN_STS_AC_CODE_SIZE; j++) { + 8003ed8: 2200 movs r2, #0 + 8003eda: e00b b.n 8003ef4 <OnStoreSTSCFGContextRequest+0xdc> + nvm_store_value[i++] = (sts_cfg_nvm.ac[j]); + 8003edc: 1c58 adds r0, r3, #1 + 8003ede: 490d ldr r1, [pc, #52] ; (8003f14 <OnStoreSTSCFGContextRequest+0xfc>) + 8003ee0: 4411 add r1, r2 + 8003ee2: f891 102c ldrb.w r1, [r1, #44] ; 0x2c + 8003ee6: 3340 adds r3, #64 ; 0x40 + 8003ee8: 446b add r3, sp + 8003eea: f803 1c40 strb.w r1, [r3, #-64] + for (j = 0; j < YUNHORN_STS_AC_CODE_SIZE; j++) { + 8003eee: 3201 adds r2, #1 + 8003ef0: b2d2 uxtb r2, r2 + nvm_store_value[i++] = (sts_cfg_nvm.ac[j]); + 8003ef2: b2c3 uxtb r3, r0 + for (j = 0; j < YUNHORN_STS_AC_CODE_SIZE; j++) { + 8003ef4: 2a13 cmp r2, #19 + 8003ef6: d9f1 bls.n 8003edc <OnStoreSTSCFGContextRequest+0xc4> + } +#endif + /* USER CODE END OnStoreContextRequest_1 */ + /* store nvm in flash */ + + if (FLASH_IF_Erase(STS_CONFIG_NVM_BASE_ADDRESS, FLASH_PAGE_SIZE) == FLASH_IF_OK) + 8003ef8: f44f 6100 mov.w r1, #2048 ; 0x800 + 8003efc: 4806 ldr r0, [pc, #24] ; (8003f18 <OnStoreSTSCFGContextRequest+0x100>) + 8003efe: f7fe fa91 bl 8002424 <FLASH_IF_Erase> + 8003f02: b108 cbz r0, 8003f08 <OnStoreSTSCFGContextRequest+0xf0> + + /* USER CODE BEGIN OnStoreContextRequest_Last */ + + + /* USER CODE END OnStoreContextRequest_Last */ +} + 8003f04: b010 add sp, #64 ; 0x40 + 8003f06: bd10 pop {r4, pc} + FLASH_IF_Write(STS_CONFIG_NVM_BASE_ADDRESS, (const void *)nvm_store_value, YUNHORN_STS_MAX_NVM_CFG_SIZE); + 8003f08: 2240 movs r2, #64 ; 0x40 + 8003f0a: 4669 mov r1, sp + 8003f0c: 4802 ldr r0, [pc, #8] ; (8003f18 <OnStoreSTSCFGContextRequest+0x100>) + 8003f0e: f7fe fa51 bl 80023b4 <FLASH_IF_Write> +} + 8003f12: e7f7 b.n 8003f04 <OnStoreSTSCFGContextRequest+0xec> + 8003f14: 20000078 .word 0x20000078 + 8003f18: 0803f800 .word 0x0803f800 + +08003f1c <OnRestoreSTSCFGContextRequest>: + +void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm) +{ + 8003f1c: b508 push {r3, lr} + /* USER CODE BEGIN OnRestoreSTSCFGContextRequest_1 */ + + /* USER CODE END OnRestoreSTSCFGContextRequest_1 */ + UTIL_MEM_cpy_8(cfg_in_nvm, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); + 8003f1e: 2240 movs r2, #64 ; 0x40 + 8003f20: 4901 ldr r1, [pc, #4] ; (8003f28 <OnRestoreSTSCFGContextRequest+0xc>) + 8003f22: f012 ff1f bl 8016d64 <UTIL_MEM_cpy_8> + /* USER CODE BEGIN OnRestoreSTSCFGContextRequest_Last */ + + /* USER CODE END OnRestoreSTSCFGContextRequest_Last */ +} + 8003f26: bd08 pop {r3, pc} + 8003f28: 0803f800 .word 0x0803f800 + +08003f2c <OnRestoreSTSCFGContextProcess>: + + /* USER CODE END OnRestoreContextRequest_Last */ +} + +void OnRestoreSTSCFGContextProcess(void) +{ + 8003f2c: b508 push {r3, lr} + uint32_t periodicity = (sts_cfg_nvm.periodicity); //TxPeriodicty interval + 8003f2e: 4b2c ldr r3, [pc, #176] ; (8003fe0 <OnRestoreSTSCFGContextProcess+0xb4>) + 8003f30: 7918 ldrb r0, [r3, #4] + 8003f32: b2c0 uxtb r0, r0 + if ((char)sts_cfg_nvm.unit =='M') { + 8003f34: 795b ldrb r3, [r3, #5] + 8003f36: b2db uxtb r3, r3 + 8003f38: 2b4d cmp r3, #77 ; 0x4d + 8003f3a: d032 beq.n 8003fa2 <OnRestoreSTSCFGContextProcess+0x76> + periodicity *= 60; + } else if ((char) sts_cfg_nvm.unit =='H') { + 8003f3c: 4b28 ldr r3, [pc, #160] ; (8003fe0 <OnRestoreSTSCFGContextProcess+0xb4>) + 8003f3e: 795b ldrb r3, [r3, #5] + 8003f40: b2db uxtb r3, r3 + 8003f42: 2b48 cmp r3, #72 ; 0x48 + 8003f44: d031 beq.n 8003faa <OnRestoreSTSCFGContextProcess+0x7e> + periodicity *= 3600; + } else if ((char) sts_cfg_nvm.unit =='S') { + 8003f46: 4b26 ldr r3, [pc, #152] ; (8003fe0 <OnRestoreSTSCFGContextProcess+0xb4>) + 8003f48: 795b ldrb r3, [r3, #5] + periodicity *= 1; + } + periodicity = (periodicity > 10)? periodicity : 10; // in seconds unit + 8003f4a: 280a cmp r0, #10 + 8003f4c: bf38 it cc + 8003f4e: 200a movcc r0, #10 + TxPeriodicity= periodicity*1000; // to ms + 8003f50: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8003f54: fb03 f000 mul.w r0, r3, r0 + 8003f58: 4b22 ldr r3, [pc, #136] ; (8003fe4 <OnRestoreSTSCFGContextProcess+0xb8>) + 8003f5a: 6018 str r0, [r3, #0] + OnTxPeriodicityChanged(TxPeriodicity); // in msec unit + 8003f5c: f7ff fca4 bl 80038a8 <OnTxPeriodicityChanged> + + uint32_t samplingperiodicity = (sts_cfg_nvm.sampling); //Heart-beat or Sampling interval + 8003f60: 4a1f ldr r2, [pc, #124] ; (8003fe0 <OnRestoreSTSCFGContextProcess+0xb4>) + 8003f62: 7993 ldrb r3, [r2, #6] + 8003f64: b2db uxtb r3, r3 + if ((char)sts_cfg_nvm.s_unit =='M') { + 8003f66: 79d2 ldrb r2, [r2, #7] + 8003f68: b2d2 uxtb r2, r2 + 8003f6a: 2a4d cmp r2, #77 ; 0x4d + 8003f6c: d022 beq.n 8003fb4 <OnRestoreSTSCFGContextProcess+0x88> + samplingperiodicity *= 60; + } else if ((char) sts_cfg_nvm.s_unit =='H') { + 8003f6e: 4a1c ldr r2, [pc, #112] ; (8003fe0 <OnRestoreSTSCFGContextProcess+0xb4>) + 8003f70: 79d2 ldrb r2, [r2, #7] + 8003f72: b2d2 uxtb r2, r2 + 8003f74: 2a48 cmp r2, #72 ; 0x48 + 8003f76: d021 beq.n 8003fbc <OnRestoreSTSCFGContextProcess+0x90> + samplingperiodicity *= 3600; + } else if ((char) sts_cfg_nvm.s_unit =='S') { + 8003f78: 4a19 ldr r2, [pc, #100] ; (8003fe0 <OnRestoreSTSCFGContextProcess+0xb4>) + 8003f7a: 79d2 ldrb r2, [r2, #7] + samplingperiodicity *= 1; + } + + //Heart-beat or Sampling interval + samplingperiodicity = (samplingperiodicity > 0)? samplingperiodicity : 1; // in seconds unit + 8003f7c: b903 cbnz r3, 8003f80 <OnRestoreSTSCFGContextProcess+0x54> + 8003f7e: 2301 movs r3, #1 +#ifdef YUNHORN_STS_O6_ENABLED + OnYunhornSTSSamplingPeriodicityChanged(samplingperiodicity*1000); // in m-sec unit +#endif + +#ifdef YUNHORN_STS_R0_ENABLED + OnYunhornSTSHeartBeatPeriodicityChanged(samplingperiodicity*1000); + 8003f80: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8003f84: fb03 f000 mul.w r0, r3, r0 + 8003f88: f7ff fcb2 bl 80038f0 <OnYunhornSTSHeartBeatPeriodicityChanged> +#endif + + sts_work_mode = sts_cfg_nvm.work_mode; + 8003f8c: 4a14 ldr r2, [pc, #80] ; (8003fe0 <OnRestoreSTSCFGContextProcess+0xb4>) + 8003f8e: 7a13 ldrb r3, [r2, #8] + 8003f90: b2db uxtb r3, r3 + 8003f92: 4915 ldr r1, [pc, #84] ; (8003fe8 <OnRestoreSTSCFGContextProcess+0xbc>) + 8003f94: 700b strb r3, [r1, #0] + sts_service_mask = sts_cfg_nvm.sts_service_mask; + 8003f96: 7a53 ldrb r3, [r2, #9] + 8003f98: b2db uxtb r3, r3 + 8003f9a: 4a14 ldr r2, [pc, #80] ; (8003fec <OnRestoreSTSCFGContextProcess+0xc0>) + 8003f9c: 7013 strb r3, [r2, #0] + // **** = sts_cfg_nvm.fall_detection_reserve; + sts_occupancy_overtime_threshold = (uint8_t)sts_cfg_nvm.occupancy_overtime_threshold*10; // minutes +#endif + + + for (uint8_t j=0; j< YUNHORN_STS_AC_CODE_SIZE; j++) + 8003f9e: 2300 movs r3, #0 + 8003fa0: e01a b.n 8003fd8 <OnRestoreSTSCFGContextProcess+0xac> + periodicity *= 60; + 8003fa2: ebc0 1300 rsb r3, r0, r0, lsl #4 + 8003fa6: 0098 lsls r0, r3, #2 + 8003fa8: e7cf b.n 8003f4a <OnRestoreSTSCFGContextProcess+0x1e> + periodicity *= 3600; + 8003faa: f44f 6361 mov.w r3, #3600 ; 0xe10 + 8003fae: fb03 f000 mul.w r0, r3, r0 + 8003fb2: e7ca b.n 8003f4a <OnRestoreSTSCFGContextProcess+0x1e> + samplingperiodicity *= 60; + 8003fb4: ebc3 1203 rsb r2, r3, r3, lsl #4 + 8003fb8: 0093 lsls r3, r2, #2 + 8003fba: e7df b.n 8003f7c <OnRestoreSTSCFGContextProcess+0x50> + samplingperiodicity *= 3600; + 8003fbc: f44f 6261 mov.w r2, #3600 ; 0xe10 + 8003fc0: fb02 f303 mul.w r3, r2, r3 + 8003fc4: e7da b.n 8003f7c <OnRestoreSTSCFGContextProcess+0x50> + { + sts_ac_code[j] = sts_cfg_nvm.ac[j]; + 8003fc6: 4a06 ldr r2, [pc, #24] ; (8003fe0 <OnRestoreSTSCFGContextProcess+0xb4>) + 8003fc8: 441a add r2, r3 + 8003fca: f892 202c ldrb.w r2, [r2, #44] ; 0x2c + 8003fce: b2d2 uxtb r2, r2 + 8003fd0: 4907 ldr r1, [pc, #28] ; (8003ff0 <OnRestoreSTSCFGContextProcess+0xc4>) + 8003fd2: 54ca strb r2, [r1, r3] + for (uint8_t j=0; j< YUNHORN_STS_AC_CODE_SIZE; j++) + 8003fd4: 3301 adds r3, #1 + 8003fd6: b2db uxtb r3, r3 + 8003fd8: 2b13 cmp r3, #19 + 8003fda: d9f4 bls.n 8003fc6 <OnRestoreSTSCFGContextProcess+0x9a> + STS_PRESENCE_SENSOR_Init(); + STS_PRESENCE_SENSOR_RSS_Init(); + } +#endif + +} + 8003fdc: bd08 pop {r3, pc} + 8003fde: bf00 nop + 8003fe0: 20000078 .word 0x20000078 + 8003fe4: 20000074 .word 0x20000074 + 8003fe8: 20000e6c .word 0x20000e6c + 8003fec: 20000c44 .word 0x20000c44 + 8003ff0: 20000e58 .word 0x20000e58 + +08003ff4 <STS_REBOOT_CONFIG_Init>: +{ + 8003ff4: b500 push {lr} + 8003ff6: b091 sub sp, #68 ; 0x44 + uint8_t nvm_stored_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]={0x0}; + 8003ff8: 2100 movs r1, #0 + 8003ffa: 9100 str r1, [sp, #0] + 8003ffc: 223c movs r2, #60 ; 0x3c + 8003ffe: a801 add r0, sp, #4 + 8004000: f013 fb5e bl 80176c0 <memset> + UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); + 8004004: 2240 movs r2, #64 ; 0x40 + 8004006: 493b ldr r1, [pc, #236] ; (80040f4 <STS_REBOOT_CONFIG_Init+0x100>) + 8004008: 4668 mov r0, sp + 800400a: f012 feab bl 8016d64 <UTIL_MEM_cpy_8> + if ((nvm_stored_value[NVM_MTM1] != sts_mtmcode1) || (nvm_stored_value[NVM_MTM2] != sts_mtmcode2) || (nvm_stored_value[NVM_VER] != sts_version)) + 800400e: f89d 3000 ldrb.w r3, [sp] + 8004012: b91b cbnz r3, 800401c <STS_REBOOT_CONFIG_Init+0x28> + 8004014: f89d 2001 ldrb.w r2, [sp, #1] + 8004018: 2a10 cmp r2, #16 + 800401a: d015 beq.n 8004048 <STS_REBOOT_CONFIG_Init+0x54> + APP_LOG(TS_OFF, VLEVEL_L, "\r\nInitial Boot with Empty Config, Flash with default config....\r\n"); + 800401c: 4b36 ldr r3, [pc, #216] ; (80040f8 <STS_REBOOT_CONFIG_Init+0x104>) + 800401e: 2200 movs r2, #0 + 8004020: 4611 mov r1, r2 + 8004022: 2001 movs r0, #1 + 8004024: f012 fd88 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + OnStoreSTSCFGContextRequest(); + 8004028: f7ff fef6 bl 8003e18 <OnStoreSTSCFGContextRequest> + UTIL_MEM_set_8((void *)sts_ac_code, 0x00, YUNHORN_STS_AC_CODE_SIZE); + 800402c: 2214 movs r2, #20 + 800402e: 2100 movs r1, #0 + 8004030: 4832 ldr r0, [pc, #200] ; (80040fc <STS_REBOOT_CONFIG_Init+0x108>) + 8004032: f012 fea2 bl 8016d7a <UTIL_MEM_set_8> + HAL_Delay(1000); + 8004036: f44f 707a mov.w r0, #1000 ; 0x3e8 + 800403a: f7fe fe39 bl 8002cb0 <HAL_Delay> + OnRestoreSTSCFGContextProcess(); + 800403e: f7ff ff75 bl 8003f2c <OnRestoreSTSCFGContextProcess> +} + 8004042: b011 add sp, #68 ; 0x44 + 8004044: f85d fb04 ldr.w pc, [sp], #4 + if ((nvm_stored_value[NVM_MTM1] != sts_mtmcode1) || (nvm_stored_value[NVM_MTM2] != sts_mtmcode2) || (nvm_stored_value[NVM_VER] != sts_version)) + 8004048: f89d 0002 ldrb.w r0, [sp, #2] + 800404c: 2801 cmp r0, #1 + 800404e: d1e5 bne.n 800401c <STS_REBOOT_CONFIG_Init+0x28> + sts_cfg_nvm.mtmcode1 = (uint8_t)nvm_stored_value[NVM_MTM1]; + 8004050: 492b ldr r1, [pc, #172] ; (8004100 <STS_REBOOT_CONFIG_Init+0x10c>) + 8004052: 700b strb r3, [r1, #0] + sts_cfg_nvm.mtmcode2 = (uint8_t)nvm_stored_value[NVM_MTM2]; + 8004054: 704a strb r2, [r1, #1] + sts_cfg_nvm.version = (uint8_t)nvm_stored_value[NVM_VER]; + 8004056: 7088 strb r0, [r1, #2] + sts_cfg_nvm.hardware_ver = (uint8_t)nvm_stored_value[NVM_HWV]; + 8004058: f89d 2003 ldrb.w r2, [sp, #3] + 800405c: 70ca strb r2, [r1, #3] + sts_cfg_nvm.periodicity = (uint8_t)(nvm_stored_value[NVM_PERIODICITY]); //TxPeriodicity interval + 800405e: f89d 2004 ldrb.w r2, [sp, #4] + 8004062: 710a strb r2, [r1, #4] + sts_cfg_nvm.unit = (uint8_t)(nvm_stored_value[NVM_UNIT]); + 8004064: f89d 2005 ldrb.w r2, [sp, #5] + 8004068: 714a strb r2, [r1, #5] + sts_cfg_nvm.sampling = (uint8_t)(nvm_stored_value[NVM_SAMPLING]); //Heart-beat or sampling interval + 800406a: f89d 2006 ldrb.w r2, [sp, #6] + 800406e: 718a strb r2, [r1, #6] + sts_cfg_nvm.s_unit = (uint8_t)(nvm_stored_value[NVM_S_UNIT]); + 8004070: f89d 2007 ldrb.w r2, [sp, #7] + 8004074: 71ca strb r2, [r1, #7] + sts_cfg_nvm.work_mode = (uint8_t)(nvm_stored_value[NVM_WORK_MODE]); + 8004076: f89d 2008 ldrb.w r2, [sp, #8] + 800407a: 720a strb r2, [r1, #8] + sts_cfg_nvm.sts_service_mask = (uint8_t)(nvm_stored_value[NVM_SERVICE_MASK]); + 800407c: f89d 2009 ldrb.w r2, [sp, #9] + 8004080: 724a strb r2, [r1, #9] + sts_cfg_nvm.reseve01 = (uint8_t)(nvm_stored_value[NVM_RESERVE01]); + 8004082: f89d 200a ldrb.w r2, [sp, #10] + 8004086: 728a strb r2, [r1, #10] + sts_cfg_nvm.length = (uint8_t)(nvm_stored_value[NVM_LEN]&0x3F); //MAX 32 bytes + 8004088: f89d 200b ldrb.w r2, [sp, #11] + 800408c: f002 023f and.w r2, r2, #63 ; 0x3f + 8004090: 72ca strb r2, [r1, #11] + for (uint8_t j=0; j< sts_cfg_nvm.length; j++) { + 8004092: 461a mov r2, r3 + 8004094: e009 b.n 80040aa <STS_REBOOT_CONFIG_Init+0xb6> + sts_cfg_nvm.p[j] = (uint8_t)nvm_stored_value[NVM_CFG_START+j]; + 8004096: f102 014c add.w r1, r2, #76 ; 0x4c + 800409a: 4469 add r1, sp + 800409c: f811 0c40 ldrb.w r0, [r1, #-64] + 80040a0: 4917 ldr r1, [pc, #92] ; (8004100 <STS_REBOOT_CONFIG_Init+0x10c>) + 80040a2: 4411 add r1, r2 + 80040a4: 7308 strb r0, [r1, #12] + for (uint8_t j=0; j< sts_cfg_nvm.length; j++) { + 80040a6: 3201 adds r2, #1 + 80040a8: b2d2 uxtb r2, r2 + 80040aa: 4915 ldr r1, [pc, #84] ; (8004100 <STS_REBOOT_CONFIG_Init+0x10c>) + 80040ac: 7ac9 ldrb r1, [r1, #11] + 80040ae: b2c9 uxtb r1, r1 + 80040b0: 4291 cmp r1, r2 + 80040b2: d8f0 bhi.n 8004096 <STS_REBOOT_CONFIG_Init+0xa2> + sts_cfg_nvm.fall_detection_acc_threshold = (uint8_t)nvm_stored_value[NVM_FALL_DETECTION_ACC_THRESHOLD]; + 80040b4: f89d 1028 ldrb.w r1, [sp, #40] ; 0x28 + 80040b8: 4a11 ldr r2, [pc, #68] ; (8004100 <STS_REBOOT_CONFIG_Init+0x10c>) + 80040ba: f882 1028 strb.w r1, [r2, #40] ; 0x28 + sts_cfg_nvm.fall_detection_depth_threshold = (uint8_t)nvm_stored_value[NVM_FALL_DETECTION_DEPTH_THRESHOLD]; + 80040be: f89d 1029 ldrb.w r1, [sp, #41] ; 0x29 + 80040c2: f882 1029 strb.w r1, [r2, #41] ; 0x29 + sts_cfg_nvm.fall_detection_reserve = (uint8_t)nvm_stored_value[NVM_FALL_DETECTION_RESERVE]; + 80040c6: f89d 102a ldrb.w r1, [sp, #42] ; 0x2a + 80040ca: f882 102a strb.w r1, [r2, #42] ; 0x2a + sts_cfg_nvm.occupancy_overtime_threshold = (uint8_t)nvm_stored_value[NVM_OCCUPANCY_OVERTIME_THRESHOLD]; + 80040ce: f89d 102b ldrb.w r1, [sp, #43] ; 0x2b + 80040d2: f882 102b strb.w r1, [r2, #43] ; 0x2b + for (uint8_t j=0; j< YUNHORN_STS_AC_CODE_SIZE; j++) { + 80040d6: e00a b.n 80040ee <STS_REBOOT_CONFIG_Init+0xfa> + sts_cfg_nvm.ac[j] = (uint8_t)nvm_stored_value[NVM_AC_CODE_START +j]; + 80040d8: f103 026c add.w r2, r3, #108 ; 0x6c + 80040dc: 446a add r2, sp + 80040de: f812 1c40 ldrb.w r1, [r2, #-64] + 80040e2: 4a07 ldr r2, [pc, #28] ; (8004100 <STS_REBOOT_CONFIG_Init+0x10c>) + 80040e4: 441a add r2, r3 + 80040e6: f882 102c strb.w r1, [r2, #44] ; 0x2c + for (uint8_t j=0; j< YUNHORN_STS_AC_CODE_SIZE; j++) { + 80040ea: 3301 adds r3, #1 + 80040ec: b2db uxtb r3, r3 + 80040ee: 2b13 cmp r3, #19 + 80040f0: d9f2 bls.n 80040d8 <STS_REBOOT_CONFIG_Init+0xe4> + 80040f2: e7a4 b.n 800403e <STS_REBOOT_CONFIG_Init+0x4a> + 80040f4: 0803f800 .word 0x0803f800 + 80040f8: 08017f24 .word 0x08017f24 + 80040fc: 20000e58 .word 0x20000e58 + 8004100: 20000078 .word 0x20000078 + +08004104 <LoRaWAN_Init>: +{ + 8004104: b5f0 push {r4, r5, r6, r7, lr} + 8004106: b08b sub sp, #44 ; 0x2c + uint32_t feature_version = 0UL; + 8004108: 2400 movs r4, #0 + 800410a: 9409 str r4, [sp, #36] ; 0x24 + APP_LOG(TS_OFF, VLEVEL_M, "\r\n\n\n##### YUNHORN_STS_FW:%d SWV%d HWV:%d MTM:%d.%d R:%d.%d.%d ####\r\n\n\n", + 800410c: 231c movs r3, #28 + 800410e: 9307 str r3, [sp, #28] + 8004110: 2306 movs r3, #6 + 8004112: 9306 str r3, [sp, #24] + 8004114: 2317 movs r3, #23 + 8004116: 9305 str r3, [sp, #20] + 8004118: 2310 movs r3, #16 + 800411a: 9304 str r3, [sp, #16] + 800411c: 9403 str r4, [sp, #12] + 800411e: 2501 movs r5, #1 + 8004120: 9502 str r5, [sp, #8] + 8004122: 9501 str r5, [sp, #4] + 8004124: 2703 movs r7, #3 + 8004126: 9700 str r7, [sp, #0] + 8004128: 4b62 ldr r3, [pc, #392] ; (80042b4 <LoRaWAN_Init+0x1b0>) + 800412a: 4622 mov r2, r4 + 800412c: 4621 mov r1, r4 + 800412e: 2002 movs r0, #2 + 8004130: f012 fd02 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + APP_LOG(TS_OFF, VLEVEL_M, "APPLICATION_VERSION: V%X.%X.%X\r\n", + 8004134: 9402 str r4, [sp, #8] + 8004136: 9701 str r7, [sp, #4] + 8004138: 9500 str r5, [sp, #0] + 800413a: 4b5f ldr r3, [pc, #380] ; (80042b8 <LoRaWAN_Init+0x1b4>) + 800413c: 4622 mov r2, r4 + 800413e: 4621 mov r1, r4 + 8004140: 2002 movs r0, #2 + 8004142: f012 fcf9 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + APP_LOG(TS_OFF, VLEVEL_M, "MW_LORAWAN_VERSION: V%X.%X.%X\r\n", + 8004146: 9402 str r4, [sp, #8] + 8004148: 2305 movs r3, #5 + 800414a: 9301 str r3, [sp, #4] + 800414c: 2602 movs r6, #2 + 800414e: 9600 str r6, [sp, #0] + 8004150: 4b5a ldr r3, [pc, #360] ; (80042bc <LoRaWAN_Init+0x1b8>) + 8004152: 4622 mov r2, r4 + 8004154: 4621 mov r1, r4 + 8004156: 4630 mov r0, r6 + 8004158: f012 fcee bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + APP_LOG(TS_OFF, VLEVEL_M, "MW_RADIO_VERSION: V%X.%X.%X\r\n", + 800415c: 9402 str r4, [sp, #8] + 800415e: 9701 str r7, [sp, #4] + 8004160: 9500 str r5, [sp, #0] + 8004162: 4b57 ldr r3, [pc, #348] ; (80042c0 <LoRaWAN_Init+0x1bc>) + 8004164: 4622 mov r2, r4 + 8004166: 4621 mov r1, r4 + 8004168: 4630 mov r0, r6 + 800416a: f012 fce5 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + LmHandlerGetVersion(LORAMAC_HANDLER_L2_VERSION, &feature_version); + 800416e: a909 add r1, sp, #36 ; 0x24 + 8004170: 4620 mov r0, r4 + 8004172: f009 fa0b bl 800d58c <LmHandlerGetVersion> + APP_LOG(TS_OFF, VLEVEL_M, "L2_SPEC_VERSION: V%X.%X.%X\r\n", + 8004176: 9b09 ldr r3, [sp, #36] ; 0x24 + 8004178: 0e1a lsrs r2, r3, #24 + 800417a: f3c3 2107 ubfx r1, r3, #8, #8 + 800417e: 9102 str r1, [sp, #8] + 8004180: f3c3 4307 ubfx r3, r3, #16, #8 + 8004184: 9301 str r3, [sp, #4] + 8004186: 9200 str r2, [sp, #0] + 8004188: 4b4e ldr r3, [pc, #312] ; (80042c4 <LoRaWAN_Init+0x1c0>) + 800418a: 4622 mov r2, r4 + 800418c: 4621 mov r1, r4 + 800418e: 4630 mov r0, r6 + 8004190: f012 fcd2 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + LmHandlerGetVersion(LORAMAC_HANDLER_REGION_VERSION, &feature_version); + 8004194: a909 add r1, sp, #36 ; 0x24 + 8004196: 4628 mov r0, r5 + 8004198: f009 f9f8 bl 800d58c <LmHandlerGetVersion> + APP_LOG(TS_OFF, VLEVEL_M, "RP_SPEC_VERSION: V%X-%X.%X.%X\r\n", + 800419c: 9b09 ldr r3, [sp, #36] ; 0x24 + 800419e: 0e1a lsrs r2, r3, #24 + 80041a0: b2d9 uxtb r1, r3 + 80041a2: 9103 str r1, [sp, #12] + 80041a4: f3c3 2107 ubfx r1, r3, #8, #8 + 80041a8: 9102 str r1, [sp, #8] + 80041aa: f3c3 4307 ubfx r3, r3, #16, #8 + 80041ae: 9301 str r3, [sp, #4] + 80041b0: 9200 str r2, [sp, #0] + 80041b2: 4b45 ldr r3, [pc, #276] ; (80042c8 <LoRaWAN_Init+0x1c4>) + 80041b4: 4622 mov r2, r4 + 80041b6: 4621 mov r1, r4 + 80041b8: 4630 mov r0, r6 + 80041ba: f012 fcbd bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL); + 80041be: 9400 str r4, [sp, #0] + 80041c0: 4b42 ldr r3, [pc, #264] ; (80042cc <LoRaWAN_Init+0x1c8>) + 80041c2: 4622 mov r2, r4 + 80041c4: f44f 71fa mov.w r1, #500 ; 0x1f4 + 80041c8: 4841 ldr r0, [pc, #260] ; (80042d0 <LoRaWAN_Init+0x1cc>) + 80041ca: f012 ffa9 bl 8017120 <UTIL_TIMER_Create> + UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL); + 80041ce: 9400 str r4, [sp, #0] + 80041d0: 4b40 ldr r3, [pc, #256] ; (80042d4 <LoRaWAN_Init+0x1d0>) + 80041d2: 4622 mov r2, r4 + 80041d4: f44f 71fa mov.w r1, #500 ; 0x1f4 + 80041d8: 483f ldr r0, [pc, #252] ; (80042d8 <LoRaWAN_Init+0x1d4>) + 80041da: f012 ffa1 bl 8017120 <UTIL_TIMER_Create> + UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL); + 80041de: 9400 str r4, [sp, #0] + 80041e0: 4b3e ldr r3, [pc, #248] ; (80042dc <LoRaWAN_Init+0x1d8>) + 80041e2: 462a mov r2, r5 + 80041e4: f44f 71fa mov.w r1, #500 ; 0x1f4 + 80041e8: 483d ldr r0, [pc, #244] ; (80042e0 <LoRaWAN_Init+0x1dc>) + 80041ea: f012 ff99 bl 8017120 <UTIL_TIMER_Create> + if (FLASH_IF_Init(NULL) != FLASH_IF_OK) + 80041ee: 4620 mov r0, r4 + 80041f0: f7fe f8da bl 80023a8 <FLASH_IF_Init> + 80041f4: 2800 cmp r0, #0 + 80041f6: d15a bne.n 80042ae <LoRaWAN_Init+0x1aa> + UTIL_TIMER_Create(&StopJoinTimer, JOIN_TIME, UTIL_TIMER_ONESHOT, OnStopJoinTimerEvent, NULL); + 80041f8: 2400 movs r4, #0 + 80041fa: 9400 str r4, [sp, #0] + 80041fc: 4b39 ldr r3, [pc, #228] ; (80042e4 <LoRaWAN_Init+0x1e0>) + 80041fe: 4622 mov r2, r4 + 8004200: f44f 61fa mov.w r1, #2000 ; 0x7d0 + 8004204: 4838 ldr r0, [pc, #224] ; (80042e8 <LoRaWAN_Init+0x1e4>) + 8004206: f012 ff8b bl 8017120 <UTIL_TIMER_Create> + UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_LmHandlerProcess), UTIL_SEQ_RFU, LmHandlerProcess); + 800420a: 4a38 ldr r2, [pc, #224] ; (80042ec <LoRaWAN_Init+0x1e8>) + 800420c: 4621 mov r1, r4 + 800420e: 2001 movs r0, #1 + 8004210: f012 fe86 bl 8016f20 <UTIL_SEQ_RegTask> + UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), UTIL_SEQ_RFU, SendTxData); + 8004214: 4a36 ldr r2, [pc, #216] ; (80042f0 <LoRaWAN_Init+0x1ec>) + 8004216: 4621 mov r1, r4 + 8004218: 2002 movs r0, #2 + 800421a: f012 fe81 bl 8016f20 <UTIL_SEQ_RegTask> + UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_LoRaStoreContextEvent), UTIL_SEQ_RFU, StoreContext); + 800421e: 4a35 ldr r2, [pc, #212] ; (80042f4 <LoRaWAN_Init+0x1f0>) + 8004220: 4621 mov r1, r4 + 8004222: 2004 movs r0, #4 + 8004224: f012 fe7c bl 8016f20 <UTIL_SEQ_RegTask> + UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_LoRaStopJoinEvent), UTIL_SEQ_RFU, StopJoin); + 8004228: 4a33 ldr r2, [pc, #204] ; (80042f8 <LoRaWAN_Init+0x1f4>) + 800422a: 4621 mov r1, r4 + 800422c: 2008 movs r0, #8 + 800422e: f012 fe77 bl 8016f20 <UTIL_SEQ_RegTask> + LoraInfo_Init(); + 8004232: f000 fcaf bl 8004b94 <LoraInfo_Init> + LmHandlerInit(&LmHandlerCallbacks, APP_VERSION); + 8004236: 4931 ldr r1, [pc, #196] ; (80042fc <LoRaWAN_Init+0x1f8>) + 8004238: 4831 ldr r0, [pc, #196] ; (8004300 <LoRaWAN_Init+0x1fc>) + 800423a: f009 f967 bl 800d50c <LmHandlerInit> + LmHandlerConfigure(&LmHandlerParams); + 800423e: 4831 ldr r0, [pc, #196] ; (8004304 <LoRaWAN_Init+0x200>) + 8004240: f009 f842 bl 800d2c8 <LmHandlerConfigure> + UTIL_TIMER_Start(&JoinLedTimer); + 8004244: 4826 ldr r0, [pc, #152] ; (80042e0 <LoRaWAN_Init+0x1dc>) + 8004246: f013 f823 bl 8017290 <UTIL_TIMER_Start> + LmHandlerJoin(ActivationType, ForceRejoin); + 800424a: 4621 mov r1, r4 + 800424c: 4b2e ldr r3, [pc, #184] ; (8004308 <LoRaWAN_Init+0x204>) + 800424e: 7818 ldrb r0, [r3, #0] + 8004250: f008 fe84 bl 800cf5c <LmHandlerJoin> + UTIL_TIMER_Create(&TxTimer, TxPeriodicity, UTIL_TIMER_ONESHOT, OnTxTimerEvent, NULL); + 8004254: 4d2d ldr r5, [pc, #180] ; (800430c <LoRaWAN_Init+0x208>) + 8004256: 9400 str r4, [sp, #0] + 8004258: 4b2d ldr r3, [pc, #180] ; (8004310 <LoRaWAN_Init+0x20c>) + 800425a: 4622 mov r2, r4 + 800425c: 492d ldr r1, [pc, #180] ; (8004314 <LoRaWAN_Init+0x210>) + 800425e: 6809 ldr r1, [r1, #0] + 8004260: 4628 mov r0, r5 + 8004262: f012 ff5d bl 8017120 <UTIL_TIMER_Create> + UTIL_TIMER_Start(&TxTimer); + 8004266: 4628 mov r0, r5 + 8004268: f013 f812 bl 8017290 <UTIL_TIMER_Start> + STS_REBOOT_CONFIG_Init(); + 800426c: f7ff fec2 bl 8003ff4 <STS_REBOOT_CONFIG_Init> + UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), UTIL_SEQ_RFU, STS_YunhornSTSEventRFAC_Process); + 8004270: 4a29 ldr r2, [pc, #164] ; (8004318 <LoRaWAN_Init+0x214>) + 8004272: 4621 mov r1, r4 + 8004274: 2010 movs r0, #16 + 8004276: f012 fe53 bl 8016f20 <UTIL_SEQ_RegTask> + UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP4), UTIL_SEQ_RFU, STS_YunhornSTSEventP4_Process); + 800427a: 4a28 ldr r2, [pc, #160] ; (800431c <LoRaWAN_Init+0x218>) + 800427c: 4621 mov r1, r4 + 800427e: f44f 7080 mov.w r0, #256 ; 0x100 + 8004282: f012 fe4d bl 8016f20 <UTIL_SEQ_RegTask> + UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP6), UTIL_SEQ_RFU, STS_YunhornSTSEventP6_Process); + 8004286: 4a26 ldr r2, [pc, #152] ; (8004320 <LoRaWAN_Init+0x21c>) + 8004288: 4621 mov r1, r4 + 800428a: f44f 6080 mov.w r0, #1024 ; 0x400 + 800428e: f012 fe47 bl 8016f20 <UTIL_SEQ_RegTask> + UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, HeartBeatPeriodicity, + 8004292: 4b24 ldr r3, [pc, #144] ; (8004324 <LoRaWAN_Init+0x220>) + 8004294: 6819 ldr r1, [r3, #0] + 8004296: 4d24 ldr r5, [pc, #144] ; (8004328 <LoRaWAN_Init+0x224>) + 8004298: 9400 str r4, [sp, #0] + 800429a: 4b24 ldr r3, [pc, #144] ; (800432c <LoRaWAN_Init+0x228>) + 800429c: 4622 mov r2, r4 + 800429e: 4628 mov r0, r5 + 80042a0: f012 ff3e bl 8017120 <UTIL_TIMER_Create> + UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); + 80042a4: 4628 mov r0, r5 + 80042a6: f012 fff3 bl 8017290 <UTIL_TIMER_Start> +} + 80042aa: b00b add sp, #44 ; 0x2c + 80042ac: bdf0 pop {r4, r5, r6, r7, pc} + Error_Handler(); + 80042ae: f7fe fa15 bl 80026dc <Error_Handler> + 80042b2: e7a1 b.n 80041f8 <LoRaWAN_Init+0xf4> + 80042b4: 08017f68 .word 0x08017f68 + 80042b8: 08017fb0 .word 0x08017fb0 + 80042bc: 08017fd4 .word 0x08017fd4 + 80042c0: 08017ff8 .word 0x08017ff8 + 80042c4: 0801801c .word 0x0801801c + 80042c8: 08018040 .word 0x08018040 + 80042cc: 08003593 .word 0x08003593 + 80042d0: 20000d88 .word 0x20000d88 + 80042d4: 08003595 .word 0x08003595 + 80042d8: 20000d54 .word 0x20000d54 + 80042dc: 08003597 .word 0x08003597 + 80042e0: 20000d3c .word 0x20000d3c + 80042e4: 080037b5 .word 0x080037b5 + 80042e8: 20000d70 .word 0x20000d70 + 80042ec: 0800ce69 .word 0x0800ce69 + 80042f0: 08003a21 .word 0x08003a21 + 80042f4: 080039e9 .word 0x080039e9 + 80042f8: 08003975 .word 0x08003975 + 80042fc: 01030000 .word 0x01030000 + 8004300: 20000010 .word 0x20000010 + 8004304: 2000005c .word 0x2000005c + 8004308: 20000000 .word 0x20000000 + 800430c: 20000da0 .word 0x20000da0 + 8004310: 08003789 .word 0x08003789 + 8004314: 20000074 .word 0x20000074 + 8004318: 080033c5 .word 0x080033c5 + 800431c: 08003475 .word 0x08003475 + 8004320: 080034b9 .word 0x080034b9 + 8004324: 2000000c .word 0x2000000c + 8004328: 20000db8 .word 0x20000db8 + 800432c: 08003739 .word 0x08003739 + +08004330 <STS_SENSOR_Distance_Test_Process>: + +void STS_SENSOR_Distance_Test_Process(void) +{ + 8004330: b508 push {r3, lr} + + APP_LOG(TS_OFF, VLEVEL_M, "\r\nSensor Function Test: Distance Measured =%u mm\r\n", (int)sts_distance_rss_distance); +#endif + +#ifdef YUNHORN_STS_R0_ENABLED + MX_TOF_Process(); + 8004332: f000 fde7 bl 8004f04 <MX_TOF_Process> +#endif +} + 8004336: bd08 pop {r3, pc} + +08004338 <STS_SENSOR_Function_Test_Process>: + +void STS_SENSOR_Function_Test_Process(void) +{ + 8004338: b530 push {r4, r5, lr} + 800433a: b0a3 sub sp, #140 ; 0x8c + char tstbuf[128] =""; uint8_t i=0; + 800433c: 2400 movs r4, #0 + 800433e: 9402 str r4, [sp, #8] + 8004340: 227c movs r2, #124 ; 0x7c + 8004342: 4621 mov r1, r4 + 8004344: a803 add r0, sp, #12 + 8004346: f013 f9bb bl 80176c0 <memset> + uint8_t count = 0; + uint8_t mems_Dev_ID[2] = ""; + 800434a: f8ad 4004 strh.w r4, [sp, #4] + + tstbuf[i++] = (uint8_t) 'S'; + 800434e: 2353 movs r3, #83 ; 0x53 + 8004350: f88d 3008 strb.w r3, [sp, #8] + tstbuf[i++] = (uint8_t) sts_mtmcode1; + tstbuf[i++] = (uint8_t) sts_mtmcode2; + 8004354: 2310 movs r3, #16 + 8004356: f88d 300a strb.w r3, [sp, #10] + tstbuf[i++] = (uint8_t) sts_version; + 800435a: 2301 movs r3, #1 + 800435c: f88d 300b strb.w r3, [sp, #11] + tstbuf[i++] = (uint8_t) sts_hardware_ver; + 8004360: f88d 300c strb.w r3, [sp, #12] + tstbuf[i++] = (uint8_t) (99*((GetBatteryLevel()/254)&0xff)); + 8004364: f7fe fc14 bl 8002b90 <GetBatteryLevel> + 8004368: 0840 lsrs r0, r0, #1 + 800436a: 4b1f ldr r3, [pc, #124] ; (80043e8 <STS_SENSOR_Function_Test_Process+0xb0>) + 800436c: fba3 3000 umull r3, r0, r3, r0 + 8004370: 0980 lsrs r0, r0, #6 + 8004372: eb00 0040 add.w r0, r0, r0, lsl #1 + 8004376: eb00 1040 add.w r0, r0, r0, lsl #5 + 800437a: f88d 000d strb.w r0, [sp, #13] + + + count = STS_SENSOR_MEMS_Get_ID(mems_Dev_ID); + 800437e: a801 add r0, sp, #4 + 8004380: f000 fde0 bl 8004f44 <STS_SENSOR_MEMS_Get_ID> + +// if ((mems_Dev_ID[0]==0X0) && (mems_Dev_ID[1]==0x0)) + if (count ==0) + 8004384: b980 cbnz r0, 80043a8 <STS_SENSOR_Function_Test_Process+0x70> + { + tstbuf[i++] = (uint8_t) 'X'; // Slave MEMS Not Avaliable + 8004386: 2358 movs r3, #88 ; 0x58 + 8004388: f88d 300e strb.w r3, [sp, #14] + 800438c: 2507 movs r5, #7 + tstbuf[i++] = (uint8_t) (sts_tof_distance_data[2] &0xff); + + +#endif + } + memset((void*)outbuf,sizeof(outbuf),0x30); + 800438e: 4c17 ldr r4, [pc, #92] ; (80043ec <STS_SENSOR_Function_Test_Process+0xb4>) + 8004390: 2230 movs r2, #48 ; 0x30 + 8004392: 2180 movs r1, #128 ; 0x80 + 8004394: 4620 mov r0, r4 + 8004396: f013 f993 bl 80176c0 <memset> + memcpy((void*)outbuf, tstbuf, i); + 800439a: 462a mov r2, r5 + 800439c: a902 add r1, sp, #8 + 800439e: 4620 mov r0, r4 + 80043a0: f013 f9c7 bl 8017732 <memcpy> + + //STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + +} + 80043a4: b023 add sp, #140 ; 0x8c + 80043a6: bd30 pop {r4, r5, pc} + tstbuf[i++] = (uint8_t)2; //length of following data + 80043a8: 2302 movs r3, #2 + 80043aa: f88d 300e strb.w r3, [sp, #14] + MX_TOF_Process(); + 80043ae: f000 fda9 bl 8004f04 <MX_TOF_Process> + tstbuf[i++] = (uint8_t) ((sts_tof_distance_data[0] >>8 ) &0xff); + 80043b2: 4b0f ldr r3, [pc, #60] ; (80043f0 <STS_SENSOR_Function_Test_Process+0xb8>) + 80043b4: 681a ldr r2, [r3, #0] + 80043b6: f3c2 2207 ubfx r2, r2, #8, #8 + 80043ba: f88d 200f strb.w r2, [sp, #15] + tstbuf[i++] = (uint8_t) (sts_tof_distance_data[0] &0xff); + 80043be: 681a ldr r2, [r3, #0] + 80043c0: f88d 2010 strb.w r2, [sp, #16] + tstbuf[i++] = (uint8_t) ((sts_tof_distance_data[1] >>8 ) &0xff); + 80043c4: 685a ldr r2, [r3, #4] + 80043c6: f3c2 2207 ubfx r2, r2, #8, #8 + 80043ca: f88d 2011 strb.w r2, [sp, #17] + tstbuf[i++] = (uint8_t) (sts_tof_distance_data[1] &0xff); + 80043ce: 685a ldr r2, [r3, #4] + 80043d0: f88d 2012 strb.w r2, [sp, #18] + tstbuf[i++] = (uint8_t) ((sts_tof_distance_data[2] >>8 ) &0xff); + 80043d4: 689a ldr r2, [r3, #8] + 80043d6: f3c2 2207 ubfx r2, r2, #8, #8 + 80043da: f88d 2013 strb.w r2, [sp, #19] + tstbuf[i++] = (uint8_t) (sts_tof_distance_data[2] &0xff); + 80043de: 689b ldr r3, [r3, #8] + 80043e0: f88d 3014 strb.w r3, [sp, #20] + 80043e4: 250d movs r5, #13 + 80043e6: e7d2 b.n 800438e <STS_SENSOR_Function_Test_Process+0x56> + 80043e8: 81020409 .word 0x81020409 + 80043ec: 20000dd4 .word 0x20000dd4 + 80043f0: 20000f00 .word 0x20000f00 + +080043f4 <USER_APP_AUTO_RESPONDER_Parse>: +{ + 80043f4: b570 push {r4, r5, r6, lr} + 80043f6: b094 sub sp, #80 ; 0x50 + 80043f8: 4604 mov r4, r0 + 80043fa: 460d mov r5, r1 + if (((char)tlv_buf[CFG_CMD1] == 'Y') && (tlv_buf_size <=5)) // BEGIN OF *** BOARD LEVEL CONTROL OR REPORT + 80043fc: 7803 ldrb r3, [r0, #0] + 80043fe: 2b59 cmp r3, #89 ; 0x59 + 8004400: d007 beq.n 8004412 <USER_APP_AUTO_RESPONDER_Parse+0x1e> + else if (((char)tlv_buf[CFG_CMD1] == 'P') && (tlv_buf_size >= 3)) // BEGIN OF PARAMETER CONFIG + 8004402: 2b50 cmp r3, #80 ; 0x50 + 8004404: f000 828a beq.w 800491c <USER_APP_AUTO_RESPONDER_Parse+0x528> + else if (((char)tlv_buf[CFG_CMD1] == 'A') && ((char)tlv_buf[CFG_CMD2] == 'C') && (tlv_buf_size == (YUNHORN_STS_AC_CODE_SIZE+2))) // BEGIN OF *** BOARD LEVEL AUTHORIZATION CODE + 8004408: 2b41 cmp r3, #65 ; 0x41 + 800440a: f000 82ef beq.w 80049ec <USER_APP_AUTO_RESPONDER_Parse+0x5f8> +} // END OF USER_APP_AUTO_RESPONDER_Parse + 800440e: b014 add sp, #80 ; 0x50 + 8004410: bd70 pop {r4, r5, r6, pc} + if (((char)tlv_buf[CFG_CMD1] == 'Y') && (tlv_buf_size <=5)) // BEGIN OF *** BOARD LEVEL CONTROL OR REPORT + 8004412: 2905 cmp r1, #5 + 8004414: d8f5 bhi.n 8004402 <USER_APP_AUTO_RESPONDER_Parse+0xe> + switch ((char)tlv_buf[CFG_CMD2]) + 8004416: 7843 ldrb r3, [r0, #1] + 8004418: 3b44 subs r3, #68 ; 0x44 + 800441a: 2b16 cmp r3, #22 + 800441c: d8f7 bhi.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + 800441e: a201 add r2, pc, #4 ; (adr r2, 8004424 <USER_APP_AUTO_RESPONDER_Parse+0x30>) + 8004420: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8004424: 0800475b .word 0x0800475b + 8004428: 0800440f .word 0x0800440f + 800442c: 08004703 .word 0x08004703 + 8004430: 0800440f .word 0x0800440f + 8004434: 0800472f .word 0x0800472f + 8004438: 0800440f .word 0x0800440f + 800443c: 0800440f .word 0x0800440f + 8004440: 0800440f .word 0x0800440f + 8004444: 0800440f .word 0x0800440f + 8004448: 080045c3 .word 0x080045c3 + 800444c: 0800440f .word 0x0800440f + 8004450: 080046d7 .word 0x080046d7 + 8004454: 0800440f .word 0x0800440f + 8004458: 0800440f .word 0x0800440f + 800445c: 0800440f .word 0x0800440f + 8004460: 0800484f .word 0x0800484f + 8004464: 0800440f .word 0x0800440f + 8004468: 0800440f .word 0x0800440f + 800446c: 08004609 .word 0x08004609 + 8004470: 0800440f .word 0x0800440f + 8004474: 0800440f .word 0x0800440f + 8004478: 0800440f .word 0x0800440f + 800447c: 08004481 .word 0x08004481 + if ((char)tlv_buf[CFG_CMD3] == 'H') { //BOARD SOFT RESET, REVIVE "YZH" + 8004480: 7883 ldrb r3, [r0, #2] + 8004482: 2b48 cmp r3, #72 ; 0x48 + 8004484: d05f beq.n 8004546 <USER_APP_AUTO_RESPONDER_Parse+0x152> + } else if ((char)tlv_buf[CFG_CMD3] == 'S') { // Self Function Testing "YZS" + 8004486: 2b53 cmp r3, #83 ; 0x53 + 8004488: d073 beq.n 8004572 <USER_APP_AUTO_RESPONDER_Parse+0x17e> + } else if ((char)tlv_buf[CFG_CMD3] == 'C') { // Lora-WAN Class "YZC" LORAWAN CLASS A/B/C + 800448a: 2b43 cmp r3, #67 ; 0x43 + 800448c: f000 8083 beq.w 8004596 <USER_APP_AUTO_RESPONDER_Parse+0x1a2> + } else if ((char)tlv_buf[CFG_CMD3] == 'D') { // Distance Measure "YZD" + 8004490: 2b44 cmp r3, #68 ; 0x44 + 8004492: d1bc bne.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + outbuf[i++] = (uint8_t) 'Y'; + 8004494: 4cbb ldr r4, [pc, #748] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 8004496: 2359 movs r3, #89 ; 0x59 + 8004498: 7023 strb r3, [r4, #0] + outbuf[i++] = (uint8_t) 'Z'; + 800449a: 235a movs r3, #90 ; 0x5a + 800449c: 7063 strb r3, [r4, #1] + outbuf[i++] = (uint8_t) 'D'; + 800449e: 2544 movs r5, #68 ; 0x44 + 80044a0: 70a5 strb r5, [r4, #2] + STS_SENSOR_Distance_Test_Process(); + 80044a2: f7ff ff45 bl 8004330 <STS_SENSOR_Distance_Test_Process> + memset(outbuf,sizeof(outbuf),0x30); + 80044a6: 2230 movs r2, #48 ; 0x30 + 80044a8: 2180 movs r1, #128 ; 0x80 + 80044aa: 4620 mov r0, r4 + 80044ac: f013 f908 bl 80176c0 <memset> + outbuf[i++] = (uint8_t)'D'; + 80044b0: 7025 strb r5, [r4, #0] + outbuf[i++] = (uint8_t)sts_mtmcode1; + 80044b2: 2300 movs r3, #0 + 80044b4: 7063 strb r3, [r4, #1] + outbuf[i++] = (uint8_t)sts_mtmcode2; + 80044b6: 2310 movs r3, #16 + 80044b8: 70a3 strb r3, [r4, #2] + outbuf[i++] = (uint8_t)sts_version; + 80044ba: 2501 movs r5, #1 + 80044bc: 70e5 strb r5, [r4, #3] + outbuf[i++] = (uint8_t)sts_hardware_ver; + 80044be: 7125 strb r5, [r4, #4] + outbuf[i++] = (uint8_t)(99*((GetBatteryLevel()/254)&0xff)); + 80044c0: f7fe fb66 bl 8002b90 <GetBatteryLevel> + 80044c4: fa20 f305 lsr.w r3, r0, r5 + 80044c8: 4aaf ldr r2, [pc, #700] ; (8004788 <USER_APP_AUTO_RESPONDER_Parse+0x394>) + 80044ca: fba2 2303 umull r2, r3, r2, r3 + 80044ce: 099b lsrs r3, r3, #6 + 80044d0: eb03 0343 add.w r3, r3, r3, lsl #1 + 80044d4: eb03 1343 add.w r3, r3, r3, lsl #5 + 80044d8: 7163 strb r3, [r4, #5] + outbuf[i++] = (uint8_t) (((uint16_t)sts_tof_distance_data[0])/100)&0xff; + 80044da: 48ac ldr r0, [pc, #688] ; (800478c <USER_APP_AUTO_RESPONDER_Parse+0x398>) + 80044dc: 6802 ldr r2, [r0, #0] + 80044de: b292 uxth r2, r2 + 80044e0: 4bab ldr r3, [pc, #684] ; (8004790 <USER_APP_AUTO_RESPONDER_Parse+0x39c>) + 80044e2: fba3 1202 umull r1, r2, r3, r2 + 80044e6: f3c2 1247 ubfx r2, r2, #5, #8 + 80044ea: 71a2 strb r2, [r4, #6] + outbuf[i++] = (uint8_t) (((uint16_t)sts_tof_distance_data[0])%100)&0xff; + 80044ec: 6802 ldr r2, [r0, #0] + 80044ee: b292 uxth r2, r2 + 80044f0: fba3 1602 umull r1, r6, r3, r2 + 80044f4: 0976 lsrs r6, r6, #5 + 80044f6: 2164 movs r1, #100 ; 0x64 + 80044f8: fb01 2216 mls r2, r1, r6, r2 + 80044fc: 71e2 strb r2, [r4, #7] + outbuf[i++] = (uint8_t) (((uint16_t)sts_tof_distance_data[1])/100)&0xff; + 80044fe: 6842 ldr r2, [r0, #4] + 8004500: b292 uxth r2, r2 + 8004502: fba3 6202 umull r6, r2, r3, r2 + 8004506: f3c2 1247 ubfx r2, r2, #5, #8 + 800450a: 7222 strb r2, [r4, #8] + outbuf[i++] = (uint8_t) (((uint16_t)sts_tof_distance_data[1])%100)&0xff; + 800450c: 6842 ldr r2, [r0, #4] + 800450e: b292 uxth r2, r2 + 8004510: fba3 c602 umull ip, r6, r3, r2 + 8004514: 0976 lsrs r6, r6, #5 + 8004516: fb01 2216 mls r2, r1, r6, r2 + 800451a: 7262 strb r2, [r4, #9] + outbuf[i++] = (uint8_t) (((uint16_t)sts_tof_distance_data[2])/100)&0xff; + 800451c: 6882 ldr r2, [r0, #8] + 800451e: b292 uxth r2, r2 + 8004520: fba3 6202 umull r6, r2, r3, r2 + 8004524: f3c2 1247 ubfx r2, r2, #5, #8 + 8004528: 72a2 strb r2, [r4, #10] + outbuf[i++] = (uint8_t) (((uint16_t)sts_tof_distance_data[2])%100)&0xff; + 800452a: 6882 ldr r2, [r0, #8] + 800452c: b292 uxth r2, r2 + 800452e: fba3 0302 umull r0, r3, r3, r2 + 8004532: 095b lsrs r3, r3, #5 + 8004534: fb01 2213 mls r2, r1, r3, r2 + 8004538: 72e2 strb r2, [r4, #11] + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 800453a: 4622 mov r2, r4 + 800453c: 210c movs r1, #12 + 800453e: 4628 mov r0, r5 + 8004540: f7ff fbe8 bl 8003d14 <STS_SENSOR_Upload_Message> + 8004544: e763 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 20, "!YunHorn STS Revive!"); + 8004546: 4a93 ldr r2, [pc, #588] ; (8004794 <USER_APP_AUTO_RESPONDER_Parse+0x3a0>) + 8004548: 2114 movs r1, #20 + 800454a: 2001 movs r0, #1 + 800454c: f7ff fbe2 bl 8003d14 <STS_SENSOR_Upload_Message> + HAL_Delay(5000); + 8004550: f241 3088 movw r0, #5000 ; 0x1388 + 8004554: f7fe fbac bl 8002cb0 <HAL_Delay> + APP_LOG(TS_OFF, VLEVEL_H, "\r\n Yunhorn STS Node Revive ... \r\n"); + 8004558: 4b8f ldr r3, [pc, #572] ; (8004798 <USER_APP_AUTO_RESPONDER_Parse+0x3a4>) + 800455a: 2200 movs r2, #0 + 800455c: 4611 mov r1, r2 + 800455e: 2003 movs r0, #3 + 8004560: f012 faea bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + HAL_Delay(3000); + 8004564: f640 30b8 movw r0, #3000 ; 0xbb8 + 8004568: f7fe fba2 bl 8002cb0 <HAL_Delay> + OnSystemReset(); + 800456c: f7ff f930 bl 80037d0 <OnSystemReset> + 8004570: e74d b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + memset(outbuf,sizeof(outbuf),0x30); + 8004572: 4c84 ldr r4, [pc, #528] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 8004574: 2230 movs r2, #48 ; 0x30 + 8004576: 2180 movs r1, #128 ; 0x80 + 8004578: 4620 mov r0, r4 + 800457a: f013 f8a1 bl 80176c0 <memset> + STS_SENSOR_Function_Test_Process(); + 800457e: f7ff fedb bl 8004338 <STS_SENSOR_Function_Test_Process> + HAL_Delay(5000); + 8004582: f241 3088 movw r0, #5000 ; 0x1388 + 8004586: f7fe fb93 bl 8002cb0 <HAL_Delay> + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 800458a: 4622 mov r2, r4 + 800458c: 2115 movs r1, #21 + 800458e: 2001 movs r0, #1 + 8004590: f7ff fbc0 bl 8003d14 <STS_SENSOR_Upload_Message> + 8004594: e73b b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + DeviceClass_t deviceClass = CLASS_A; + 8004596: 2400 movs r4, #0 + 8004598: f88d 4010 strb.w r4, [sp, #16] + LmHandlerGetCurrentClass( &deviceClass ); + 800459c: a804 add r0, sp, #16 + 800459e: f008 fe07 bl 800d1b0 <LmHandlerGetCurrentClass> + outbuf[i++] = (uint8_t) 'L'; + 80045a2: 4a78 ldr r2, [pc, #480] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 80045a4: 234c movs r3, #76 ; 0x4c + 80045a6: 7013 strb r3, [r2, #0] + outbuf[i++] = (uint8_t) sts_mtmcode1; + 80045a8: 7054 strb r4, [r2, #1] + outbuf[i++] = (uint8_t) sts_mtmcode2; + 80045aa: 2310 movs r3, #16 + 80045ac: 7093 strb r3, [r2, #2] + outbuf[i++] = (uint8_t) sts_version; + 80045ae: 2001 movs r0, #1 + 80045b0: 70d0 strb r0, [r2, #3] + outbuf[i++] = (uint8_t) (0x41+ deviceClass); //translate to 'A','B','C' + 80045b2: f89d 3010 ldrb.w r3, [sp, #16] + 80045b6: 3341 adds r3, #65 ; 0x41 + 80045b8: 7113 strb r3, [r2, #4] + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 80045ba: 2105 movs r1, #5 + 80045bc: f7ff fbaa bl 8003d14 <STS_SENSOR_Upload_Message> + 80045c0: e725 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + if ((char)tlv_buf[CFG_CMD3] >= '0' && (char)tlv_buf[CFG_CMD3]<='9') // Service Mask "YZM" + 80045c2: 7883 ldrb r3, [r0, #2] + 80045c4: 3b30 subs r3, #48 ; 0x30 + 80045c6: b2db uxtb r3, r3 + 80045c8: 2b09 cmp r3, #9 + 80045ca: f63f af20 bhi.w 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + sts_service_mask = (uint8_t)(tlv_buf[CFG_CMD3]-0x30)&0xFF; + 80045ce: 4c73 ldr r4, [pc, #460] ; (800479c <USER_APP_AUTO_RESPONDER_Parse+0x3a8>) + 80045d0: 7023 strb r3, [r4, #0] + sts_cfg_nvm.sts_service_mask = (uint8_t)sts_service_mask; + 80045d2: 7823 ldrb r3, [r4, #0] + 80045d4: b2db uxtb r3, r3 + 80045d6: 4a72 ldr r2, [pc, #456] ; (80047a0 <USER_APP_AUTO_RESPONDER_Parse+0x3ac>) + 80045d8: 7253 strb r3, [r2, #9] + outbuf[i++] = (uint8_t) 'Y'; + 80045da: 4a6a ldr r2, [pc, #424] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 80045dc: 2359 movs r3, #89 ; 0x59 + 80045de: 7013 strb r3, [r2, #0] + outbuf[i++] = (uint8_t) 'M'; + 80045e0: 234d movs r3, #77 ; 0x4d + 80045e2: 7053 strb r3, [r2, #1] + outbuf[i++] = (uint8_t) (sts_service_mask+0x30); + 80045e4: 7823 ldrb r3, [r4, #0] + 80045e6: 3330 adds r3, #48 ; 0x30 + 80045e8: 7093 strb r3, [r2, #2] + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 80045ea: 2103 movs r1, #3 + 80045ec: 2001 movs r0, #1 + 80045ee: f7ff fb91 bl 8003d14 <STS_SENSOR_Upload_Message> + APP_LOG(TS_OFF, VLEVEL_L, ">>>>>>>>>>>>>>>>>>>>> Mask = [ %02x ] \r\n", sts_service_mask); + 80045f2: 7823 ldrb r3, [r4, #0] + 80045f4: 9300 str r3, [sp, #0] + 80045f6: 4b6b ldr r3, [pc, #428] ; (80047a4 <USER_APP_AUTO_RESPONDER_Parse+0x3b0>) + 80045f8: 2200 movs r2, #0 + 80045fa: 4611 mov r1, r2 + 80045fc: 2001 movs r0, #1 + 80045fe: f012 fa9b bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + OnStoreSTSCFGContextRequest(); + 8004602: f7ff fc09 bl 8003e18 <OnStoreSTSCFGContextRequest> + 8004606: e702 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + if ((char)tlv_buf[CFG_CMD3] == 'H') { // "YVH" REPORT FIRMWARE VERSION "YVH" + 8004608: 7883 ldrb r3, [r0, #2] + 800460a: 2b48 cmp r3, #72 ; 0x48 + 800460c: d03c beq.n 8004688 <USER_APP_AUTO_RESPONDER_Parse+0x294> + if ((char)tlv_buf[CFG_CMD3] == 'C') { // "YVC" REPORT NVM STORED CONFIG PARAMETERS "YVC" + 800460e: 2b43 cmp r3, #67 ; 0x43 + 8004610: f47f aefd bne.w 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + uint8_t cfg_in_nvm[YUNHORN_STS_MAX_NVM_CFG_SIZE]=""; + 8004614: 2400 movs r4, #0 + 8004616: 9404 str r4, [sp, #16] + 8004618: 223c movs r2, #60 ; 0x3c + 800461a: 4621 mov r1, r4 + 800461c: a805 add r0, sp, #20 + 800461e: f013 f84f bl 80176c0 <memset> + OnRestoreSTSCFGContextRequest((uint8_t *)cfg_in_nvm); + 8004622: a804 add r0, sp, #16 + 8004624: f7ff fc7a bl 8003f1c <OnRestoreSTSCFGContextRequest> + memset(outbuf,sizeof(outbuf),0x30); + 8004628: 4d56 ldr r5, [pc, #344] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 800462a: 2230 movs r2, #48 ; 0x30 + 800462c: 2180 movs r1, #128 ; 0x80 + 800462e: 4628 mov r0, r5 + 8004630: f013 f846 bl 80176c0 <memset> + outbuf[i++] = (uint8_t) 'C'; + 8004634: 2343 movs r3, #67 ; 0x43 + 8004636: 702b strb r3, [r5, #0] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_MTM1]; //MTM Code + 8004638: f89d 3010 ldrb.w r3, [sp, #16] + 800463c: 706b strb r3, [r5, #1] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_MTM2]; //MTM Code + 800463e: f89d 3011 ldrb.w r3, [sp, #17] + 8004642: 70ab strb r3, [r5, #2] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_VER]; //STS Version + 8004644: f89d 3012 ldrb.w r3, [sp, #18] + 8004648: 70eb strb r3, [r5, #3] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_HWV]; //STS Version + 800464a: f89d 3013 ldrb.w r3, [sp, #19] + 800464e: 712b strb r3, [r5, #4] + outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_PERIODICITY]); //UPLINK Periodicity + 8004650: f89d 3014 ldrb.w r3, [sp, #20] + 8004654: 716b strb r3, [r5, #5] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_UNIT]; //UPLINK Periodicity unit + 8004656: f89d 3015 ldrb.w r3, [sp, #21] + 800465a: 71ab strb r3, [r5, #6] + outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_SAMPLING]); //Heart-beat or SAMPLING Periodicity + 800465c: f89d 3016 ldrb.w r3, [sp, #22] + 8004660: 71eb strb r3, [r5, #7] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_S_UNIT]; //Heart-beat or SAMPLING Periodicity unit + 8004662: f89d 3017 ldrb.w r3, [sp, #23] + 8004666: 722b strb r3, [r5, #8] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_WORK_MODE]; // STS WORK MODE + 8004668: f89d 3018 ldrb.w r3, [sp, #24] + 800466c: 726b strb r3, [r5, #9] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_SERVICE_MASK]; //service mask + 800466e: f89d 3019 ldrb.w r3, [sp, #25] + 8004672: 72ab strb r3, [r5, #10] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_RESERVE01]; //service mask + 8004674: f89d 301a ldrb.w r3, [sp, #26] + 8004678: 72eb strb r3, [r5, #11] + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_LEN]; //length of following cfg value + 800467a: f89d c01b ldrb.w ip, [sp, #27] + 800467e: f885 c00c strb.w ip, [r5, #12] + for (uint8_t j=0; j < cfg_in_nvm[NVM_LEN]; j++) { + 8004682: 4623 mov r3, r4 + outbuf[i++] = (uint8_t) cfg_in_nvm[NVM_LEN]; //length of following cfg value + 8004684: 210d movs r1, #13 + for (uint8_t j=0; j < cfg_in_nvm[NVM_LEN]; j++) { + 8004686: e01f b.n 80046c8 <USER_APP_AUTO_RESPONDER_Parse+0x2d4> + outbuf[i++] = (uint8_t) 'V'; + 8004688: 4a3e ldr r2, [pc, #248] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 800468a: 2356 movs r3, #86 ; 0x56 + 800468c: 7013 strb r3, [r2, #0] + outbuf[i++] = (uint8_t) sts_mtmcode1; + 800468e: 2300 movs r3, #0 + 8004690: 7053 strb r3, [r2, #1] + outbuf[i++] = (uint8_t) sts_mtmcode2; + 8004692: 2310 movs r3, #16 + 8004694: 7093 strb r3, [r2, #2] + outbuf[i++] = (uint8_t) sts_version; + 8004696: 2001 movs r0, #1 + 8004698: 70d0 strb r0, [r2, #3] + outbuf[i++] = (uint8_t) FirmwareVersion; + 800469a: 2303 movs r3, #3 + 800469c: 7113 strb r3, [r2, #4] + outbuf[i++] = (uint8_t) MajorVer; + 800469e: 2317 movs r3, #23 + 80046a0: 7153 strb r3, [r2, #5] + outbuf[i++] = (uint8_t) MinorVer; + 80046a2: 2306 movs r3, #6 + 80046a4: 7193 strb r3, [r2, #6] + outbuf[i++] = (uint8_t) SubMinorVer; + 80046a6: 231c movs r3, #28 + 80046a8: 71d3 strb r3, [r2, #7] + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 80046aa: 2108 movs r1, #8 + 80046ac: f7ff fb32 bl 8003d14 <STS_SENSOR_Upload_Message> + 80046b0: e6ad b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_CFG_START+j]); + 80046b2: 1c48 adds r0, r1, #1 + 80046b4: f103 025c add.w r2, r3, #92 ; 0x5c + 80046b8: 446a add r2, sp + 80046ba: f812 4c40 ldrb.w r4, [r2, #-64] + 80046be: 4a31 ldr r2, [pc, #196] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 80046c0: 5454 strb r4, [r2, r1] + for (uint8_t j=0; j < cfg_in_nvm[NVM_LEN]; j++) { + 80046c2: 3301 adds r3, #1 + 80046c4: b2db uxtb r3, r3 + outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_CFG_START+j]); + 80046c6: b2c1 uxtb r1, r0 + for (uint8_t j=0; j < cfg_in_nvm[NVM_LEN]; j++) { + 80046c8: 459c cmp ip, r3 + 80046ca: d8f2 bhi.n 80046b2 <USER_APP_AUTO_RESPONDER_Parse+0x2be> + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 80046cc: 4a2d ldr r2, [pc, #180] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 80046ce: 2001 movs r0, #1 + 80046d0: f7ff fb20 bl 8003d14 <STS_SENSOR_Upload_Message> + 80046d4: e69b b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + if (((uint8_t)(tlv_buf[CFG_CMD3]-0x30) >= 0) && ((uint8_t)tlv_buf[CFG_CMD3]-0x30) <=9) + 80046d6: 7883 ldrb r3, [r0, #2] + 80046d8: 2b39 cmp r3, #57 ; 0x39 + 80046da: d80f bhi.n 80046fc <USER_APP_AUTO_RESPONDER_Parse+0x308> + STS_SENSOR_Power_ON((uint8_t)(tlv_buf[CFG_CMD3]-0x30)); + 80046dc: 3b30 subs r3, #48 ; 0x30 + 80046de: b2d8 uxtb r0, r3 + 80046e0: f7fe feb0 bl 8003444 <STS_SENSOR_Power_ON> + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; + 80046e4: 7823 ldrb r3, [r4, #0] + 80046e6: 4a27 ldr r2, [pc, #156] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 80046e8: 7013 strb r3, [r2, #0] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; + 80046ea: 7863 ldrb r3, [r4, #1] + 80046ec: 7053 strb r3, [r2, #1] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; + 80046ee: 78a3 ldrb r3, [r4, #2] + 80046f0: 7093 strb r3, [r2, #2] + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 80046f2: 2103 movs r1, #3 + 80046f4: 2001 movs r0, #1 + 80046f6: f7ff fb0d bl 8003d14 <STS_SENSOR_Upload_Message> + 80046fa: e688 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + STS_SENSOR_Upload_Config_Invalid_Message(); + 80046fc: f7ff fb7c bl 8003df8 <STS_SENSOR_Upload_Config_Invalid_Message> + 8004700: e685 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + if (((uint8_t)(tlv_buf[CFG_CMD3]-0x30) >= 0) && ((uint8_t)tlv_buf[CFG_CMD3]-0x30) <=9) { + 8004702: 7883 ldrb r3, [r0, #2] + 8004704: 2b39 cmp r3, #57 ; 0x39 + 8004706: d80f bhi.n 8004728 <USER_APP_AUTO_RESPONDER_Parse+0x334> + STS_SENSOR_Power_OFF((tlv_buf[CFG_CMD3]-0x30)); + 8004708: 3b30 subs r3, #48 ; 0x30 + 800470a: b2d8 uxtb r0, r3 + 800470c: f7fe fea6 bl 800345c <STS_SENSOR_Power_OFF> + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; + 8004710: 7823 ldrb r3, [r4, #0] + 8004712: 4a1c ldr r2, [pc, #112] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 8004714: 7013 strb r3, [r2, #0] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; + 8004716: 7863 ldrb r3, [r4, #1] + 8004718: 7053 strb r3, [r2, #1] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; + 800471a: 78a3 ldrb r3, [r4, #2] + 800471c: 7093 strb r3, [r2, #2] + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 800471e: 2103 movs r1, #3 + 8004720: 2001 movs r0, #1 + 8004722: f7ff faf7 bl 8003d14 <STS_SENSOR_Upload_Message> + 8004726: e672 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + STS_SENSOR_Upload_Config_Invalid_Message(); + 8004728: f7ff fb66 bl 8003df8 <STS_SENSOR_Upload_Config_Invalid_Message> + 800472c: e66f b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + if (((uint8_t)(tlv_buf[CFG_CMD3]-0x30) >= 0) && ((uint8_t)tlv_buf[CFG_CMD3]-0x30) <=9) { + 800472e: 7883 ldrb r3, [r0, #2] + 8004730: 2b39 cmp r3, #57 ; 0x39 + 8004732: d80f bhi.n 8004754 <USER_APP_AUTO_RESPONDER_Parse+0x360> + STS_SENSOR_MEMS_Reset((tlv_buf[CFG_CMD3]-0x30)); + 8004734: 3b30 subs r3, #48 ; 0x30 + 8004736: b2d8 uxtb r0, r3 + 8004738: f7fe fefc bl 8003534 <STS_SENSOR_MEMS_Reset> + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; + 800473c: 7823 ldrb r3, [r4, #0] + 800473e: 4a11 ldr r2, [pc, #68] ; (8004784 <USER_APP_AUTO_RESPONDER_Parse+0x390>) + 8004740: 7013 strb r3, [r2, #0] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; + 8004742: 7863 ldrb r3, [r4, #1] + 8004744: 7053 strb r3, [r2, #1] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; + 8004746: 78a3 ldrb r3, [r4, #2] + 8004748: 7093 strb r3, [r2, #2] + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 800474a: 2103 movs r1, #3 + 800474c: 2001 movs r0, #1 + 800474e: f7ff fae1 bl 8003d14 <STS_SENSOR_Upload_Message> + 8004752: e65c b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + STS_SENSOR_Upload_Config_Invalid_Message(); + 8004754: f7ff fb50 bl 8003df8 <STS_SENSOR_Upload_Config_Invalid_Message> + 8004758: e659 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + if ((((char)tlv_buf[CFG_CMD3] >= '0') && ((char)tlv_buf[CFG_CMD3] <='9') + 800475a: 7882 ldrb r2, [r0, #2] + 800475c: f1a2 0330 sub.w r3, r2, #48 ; 0x30 + 8004760: b2db uxtb r3, r3 + 8004762: 2b09 cmp r3, #9 + 8004764: d80b bhi.n 800477e <USER_APP_AUTO_RESPONDER_Parse+0x38a> + && ((char)tlv_buf[CFG_CMD4] >='0') && ((char)tlv_buf[CFG_CMD4] <='9')) && + 8004766: 78c3 ldrb r3, [r0, #3] + 8004768: 2b2f cmp r3, #47 ; 0x2f + 800476a: d908 bls.n 800477e <USER_APP_AUTO_RESPONDER_Parse+0x38a> + 800476c: 2b39 cmp r3, #57 ; 0x39 + 800476e: d806 bhi.n 800477e <USER_APP_AUTO_RESPONDER_Parse+0x38a> + (((char)tlv_buf[CFG_CMD5] == 'M' || ((char)tlv_buf[CFG_CMD5] =='H') ||((char)tlv_buf[CFG_CMD5] =='S')))) + 8004770: 7901 ldrb r1, [r0, #4] + && ((char)tlv_buf[CFG_CMD4] >='0') && ((char)tlv_buf[CFG_CMD4] <='9')) && + 8004772: 294d cmp r1, #77 ; 0x4d + 8004774: d018 beq.n 80047a8 <USER_APP_AUTO_RESPONDER_Parse+0x3b4> + (((char)tlv_buf[CFG_CMD5] == 'M' || ((char)tlv_buf[CFG_CMD5] =='H') ||((char)tlv_buf[CFG_CMD5] =='S')))) + 8004776: 2948 cmp r1, #72 ; 0x48 + 8004778: d016 beq.n 80047a8 <USER_APP_AUTO_RESPONDER_Parse+0x3b4> + 800477a: 2953 cmp r1, #83 ; 0x53 + 800477c: d014 beq.n 80047a8 <USER_APP_AUTO_RESPONDER_Parse+0x3b4> + STS_SENSOR_Upload_Config_Invalid_Message(); + 800477e: f7ff fb3b bl 8003df8 <STS_SENSOR_Upload_Config_Invalid_Message> + 8004782: e644 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + 8004784: 20000dd4 .word 0x20000dd4 + 8004788: 81020409 .word 0x81020409 + 800478c: 20000f00 .word 0x20000f00 + 8004790: 51eb851f .word 0x51eb851f + 8004794: 08018064 .word 0x08018064 + 8004798: 0801807c .word 0x0801807c + 800479c: 20000c44 .word 0x20000c44 + 80047a0: 20000078 .word 0x20000078 + 80047a4: 080180a0 .word 0x080180a0 + uint32_t periodicity_length = (tlv_buf[CFG_CMD3]-0x30)*10+ (tlv_buf[CFG_CMD4]-0x30); + 80047a8: 3a30 subs r2, #48 ; 0x30 + 80047aa: eb02 0282 add.w r2, r2, r2, lsl #2 + 80047ae: 3b30 subs r3, #48 ; 0x30 + 80047b0: eb03 0542 add.w r5, r3, r2, lsl #1 + if ((char)tlv_buf[CFG_CMD5] == 'M') { + 80047b4: 294d cmp r1, #77 ; 0x4d + 80047b6: d041 beq.n 800483c <USER_APP_AUTO_RESPONDER_Parse+0x448> + } else if ((char)tlv_buf[CFG_CMD5] == 'H') { + 80047b8: 2948 cmp r1, #72 ; 0x48 + 80047ba: d043 beq.n 8004844 <USER_APP_AUTO_RESPONDER_Parse+0x450> + TxPeriodicity = periodicity_length*1000; //translate to 1000ms=1s + 80047bc: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80047c0: fb05 f000 mul.w r0, r5, r0 + 80047c4: 4bab ldr r3, [pc, #684] ; (8004a74 <USER_APP_AUTO_RESPONDER_Parse+0x680>) + 80047c6: 6018 str r0, [r3, #0] + HeartBeatPeriodicity = TxPeriodicity; + 80047c8: 4bab ldr r3, [pc, #684] ; (8004a78 <USER_APP_AUTO_RESPONDER_Parse+0x684>) + 80047ca: 6018 str r0, [r3, #0] + OnTxPeriodicityChanged(TxPeriodicity); + 80047cc: f7ff f86c bl 80038a8 <OnTxPeriodicityChanged> + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; + 80047d0: 7823 ldrb r3, [r4, #0] + 80047d2: 4aaa ldr r2, [pc, #680] ; (8004a7c <USER_APP_AUTO_RESPONDER_Parse+0x688>) + 80047d4: 7013 strb r3, [r2, #0] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; + 80047d6: 7863 ldrb r3, [r4, #1] + 80047d8: 7053 strb r3, [r2, #1] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; + 80047da: 78a3 ldrb r3, [r4, #2] + 80047dc: 7093 strb r3, [r2, #2] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4]; + 80047de: 78e3 ldrb r3, [r4, #3] + 80047e0: 70d3 strb r3, [r2, #3] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5]; + 80047e2: 7923 ldrb r3, [r4, #4] + 80047e4: 7113 strb r3, [r2, #4] + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 80047e6: 2105 movs r1, #5 + 80047e8: 2001 movs r0, #1 + 80047ea: f7ff fa93 bl 8003d14 <STS_SENSOR_Upload_Message> + sts_cfg_nvm.mtmcode1 = (uint8_t)sts_mtmcode1; + 80047ee: 4aa4 ldr r2, [pc, #656] ; (8004a80 <USER_APP_AUTO_RESPONDER_Parse+0x68c>) + 80047f0: 2600 movs r6, #0 + 80047f2: 7016 strb r6, [r2, #0] + sts_cfg_nvm.mtmcode2 = (uint8_t)sts_mtmcode2; + 80047f4: 2310 movs r3, #16 + 80047f6: 7053 strb r3, [r2, #1] + sts_cfg_nvm.version = (uint8_t)sts_version; + 80047f8: 2301 movs r3, #1 + 80047fa: 7093 strb r3, [r2, #2] + sts_cfg_nvm.hardware_ver = (uint8_t)sts_hardware_ver; + 80047fc: 70d3 strb r3, [r2, #3] + sts_cfg_nvm.periodicity = (uint8_t)((tlv_buf[CFG_CMD3]-0x30)*10+(tlv_buf[CFG_CMD4]-0x30)); + 80047fe: 78a1 ldrb r1, [r4, #2] + 8004800: 78e3 ldrb r3, [r4, #3] + 8004802: 3930 subs r1, #48 ; 0x30 + 8004804: eb01 0181 add.w r1, r1, r1, lsl #2 + 8004808: eb03 0341 add.w r3, r3, r1, lsl #1 + 800480c: b2db uxtb r3, r3 + 800480e: 3b30 subs r3, #48 ; 0x30 + 8004810: b2db uxtb r3, r3 + 8004812: 7113 strb r3, [r2, #4] + sts_cfg_nvm.unit = (uint8_t)tlv_buf[CFG_CMD5]; + 8004814: 7923 ldrb r3, [r4, #4] + 8004816: 7153 strb r3, [r2, #5] + sts_cfg_nvm.work_mode = (uint8_t)sts_work_mode; + 8004818: 4b9a ldr r3, [pc, #616] ; (8004a84 <USER_APP_AUTO_RESPONDER_Parse+0x690>) + 800481a: 781b ldrb r3, [r3, #0] + 800481c: b2db uxtb r3, r3 + 800481e: 7213 strb r3, [r2, #8] + sts_cfg_nvm.sts_service_mask = (uint8_t)sts_service_mask; + 8004820: 4b99 ldr r3, [pc, #612] ; (8004a88 <USER_APP_AUTO_RESPONDER_Parse+0x694>) + 8004822: 781b ldrb r3, [r3, #0] + 8004824: b2db uxtb r3, r3 + 8004826: 7253 strb r3, [r2, #9] + OnStoreSTSCFGContextRequest(); + 8004828: f7ff faf6 bl 8003e18 <OnStoreSTSCFGContextRequest> + APP_LOG(TS_OFF, VLEVEL_M, "###### YUNHORN Periodicity Changed to [ %d ] Seconds\r\n", periodicity_length); + 800482c: 9500 str r5, [sp, #0] + 800482e: 4b97 ldr r3, [pc, #604] ; (8004a8c <USER_APP_AUTO_RESPONDER_Parse+0x698>) + 8004830: 4632 mov r2, r6 + 8004832: 4631 mov r1, r6 + 8004834: 2002 movs r0, #2 + 8004836: f012 f97f bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + { + 800483a: e5e8 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + periodicity_length *= 60; + 800483c: 233c movs r3, #60 ; 0x3c + 800483e: fb03 f505 mul.w r5, r3, r5 + 8004842: e7bb b.n 80047bc <USER_APP_AUTO_RESPONDER_Parse+0x3c8> + periodicity_length *= 3600; + 8004844: f44f 6361 mov.w r3, #3600 ; 0xe10 + 8004848: fb03 f505 mul.w r5, r3, r5 + 800484c: e7b6 b.n 80047bc <USER_APP_AUTO_RESPONDER_Parse+0x3c8> + if ((((char)tlv_buf[CFG_CMD3] >= '0') && ((char)tlv_buf[CFG_CMD3] <='9') + 800484e: 7882 ldrb r2, [r0, #2] + 8004850: f1a2 0330 sub.w r3, r2, #48 ; 0x30 + 8004854: b2db uxtb r3, r3 + 8004856: 2b09 cmp r3, #9 + 8004858: d80b bhi.n 8004872 <USER_APP_AUTO_RESPONDER_Parse+0x47e> + && ((char)tlv_buf[CFG_CMD4] >='0') && ((char)tlv_buf[CFG_CMD4] <='9')) && + 800485a: 78c3 ldrb r3, [r0, #3] + 800485c: 2b2f cmp r3, #47 ; 0x2f + 800485e: d908 bls.n 8004872 <USER_APP_AUTO_RESPONDER_Parse+0x47e> + 8004860: 2b39 cmp r3, #57 ; 0x39 + 8004862: d806 bhi.n 8004872 <USER_APP_AUTO_RESPONDER_Parse+0x47e> + (((char)tlv_buf[CFG_CMD5] == 'M' || ((char)tlv_buf[CFG_CMD5] =='H') ||((char)tlv_buf[CFG_CMD5] =='S')))) + 8004864: 7901 ldrb r1, [r0, #4] + && ((char)tlv_buf[CFG_CMD4] >='0') && ((char)tlv_buf[CFG_CMD4] <='9')) && + 8004866: 294d cmp r1, #77 ; 0x4d + 8004868: d006 beq.n 8004878 <USER_APP_AUTO_RESPONDER_Parse+0x484> + (((char)tlv_buf[CFG_CMD5] == 'M' || ((char)tlv_buf[CFG_CMD5] =='H') ||((char)tlv_buf[CFG_CMD5] =='S')))) + 800486a: 2948 cmp r1, #72 ; 0x48 + 800486c: d004 beq.n 8004878 <USER_APP_AUTO_RESPONDER_Parse+0x484> + 800486e: 2953 cmp r1, #83 ; 0x53 + 8004870: d002 beq.n 8004878 <USER_APP_AUTO_RESPONDER_Parse+0x484> + STS_SENSOR_Upload_Config_Invalid_Message(); + 8004872: f7ff fac1 bl 8003df8 <STS_SENSOR_Upload_Config_Invalid_Message> + 8004876: e5ca b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + uint32_t heart_beat_or_sampling_periodicity_length = (tlv_buf[CFG_CMD3]-0x30)*10+ (tlv_buf[CFG_CMD4]-0x30); + 8004878: 3a30 subs r2, #48 ; 0x30 + 800487a: eb02 0282 add.w r2, r2, r2, lsl #2 + 800487e: 3b30 subs r3, #48 ; 0x30 + 8004880: eb03 0542 add.w r5, r3, r2, lsl #1 + if ((char)tlv_buf[CFG_CMD5] == 'M') { + 8004884: 294d cmp r1, #77 ; 0x4d + 8004886: d040 beq.n 800490a <USER_APP_AUTO_RESPONDER_Parse+0x516> + } else if ((char)tlv_buf[CFG_CMD5] == 'H') { + 8004888: 2948 cmp r1, #72 ; 0x48 + 800488a: d042 beq.n 8004912 <USER_APP_AUTO_RESPONDER_Parse+0x51e> + HeartBeatPeriodicity = heart_beat_or_sampling_periodicity_length*1000; //translate to 1000ms=1s + 800488c: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8004890: fb05 f303 mul.w r3, r5, r3 + 8004894: 4a78 ldr r2, [pc, #480] ; (8004a78 <USER_APP_AUTO_RESPONDER_Parse+0x684>) + 8004896: 6013 str r3, [r2, #0] + OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); + 8004898: 6810 ldr r0, [r2, #0] + 800489a: f7ff f829 bl 80038f0 <OnYunhornSTSHeartBeatPeriodicityChanged> + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD1]; + 800489e: 7823 ldrb r3, [r4, #0] + 80048a0: 4a76 ldr r2, [pc, #472] ; (8004a7c <USER_APP_AUTO_RESPONDER_Parse+0x688>) + 80048a2: 7013 strb r3, [r2, #0] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD2]; + 80048a4: 7863 ldrb r3, [r4, #1] + 80048a6: 7053 strb r3, [r2, #1] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD3]; + 80048a8: 78a3 ldrb r3, [r4, #2] + 80048aa: 7093 strb r3, [r2, #2] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD4]; + 80048ac: 78e3 ldrb r3, [r4, #3] + 80048ae: 70d3 strb r3, [r2, #3] + outbuf[i++] = (uint8_t) tlv_buf[CFG_CMD5]; + 80048b0: 7923 ldrb r3, [r4, #4] + 80048b2: 7113 strb r3, [r2, #4] + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 80048b4: 2105 movs r1, #5 + 80048b6: 2001 movs r0, #1 + 80048b8: f7ff fa2c bl 8003d14 <STS_SENSOR_Upload_Message> + sts_cfg_nvm.mtmcode1 = (uint8_t)sts_mtmcode1; + 80048bc: 4a70 ldr r2, [pc, #448] ; (8004a80 <USER_APP_AUTO_RESPONDER_Parse+0x68c>) + 80048be: 2600 movs r6, #0 + 80048c0: 7016 strb r6, [r2, #0] + sts_cfg_nvm.mtmcode2 = (uint8_t)sts_mtmcode2; + 80048c2: 2310 movs r3, #16 + 80048c4: 7053 strb r3, [r2, #1] + sts_cfg_nvm.version = (uint8_t)sts_version; + 80048c6: 2301 movs r3, #1 + 80048c8: 7093 strb r3, [r2, #2] + sts_cfg_nvm.hardware_ver = (uint8_t)sts_hardware_ver; + 80048ca: 70d3 strb r3, [r2, #3] + sts_cfg_nvm.sampling = (uint8_t)((tlv_buf[CFG_CMD3]-0x30)*10+(tlv_buf[CFG_CMD4]-0x30)); + 80048cc: 78a1 ldrb r1, [r4, #2] + 80048ce: 78e3 ldrb r3, [r4, #3] + 80048d0: 3930 subs r1, #48 ; 0x30 + 80048d2: eb01 0181 add.w r1, r1, r1, lsl #2 + 80048d6: eb03 0341 add.w r3, r3, r1, lsl #1 + 80048da: b2db uxtb r3, r3 + 80048dc: 3b30 subs r3, #48 ; 0x30 + 80048de: b2db uxtb r3, r3 + 80048e0: 7193 strb r3, [r2, #6] + sts_cfg_nvm.s_unit = (uint8_t)tlv_buf[CFG_CMD5]; + 80048e2: 7923 ldrb r3, [r4, #4] + 80048e4: 71d3 strb r3, [r2, #7] + sts_cfg_nvm.work_mode = (uint8_t)sts_work_mode; + 80048e6: 4b67 ldr r3, [pc, #412] ; (8004a84 <USER_APP_AUTO_RESPONDER_Parse+0x690>) + 80048e8: 781b ldrb r3, [r3, #0] + 80048ea: b2db uxtb r3, r3 + 80048ec: 7213 strb r3, [r2, #8] + sts_cfg_nvm.sts_service_mask = (uint8_t)sts_service_mask; + 80048ee: 4b66 ldr r3, [pc, #408] ; (8004a88 <USER_APP_AUTO_RESPONDER_Parse+0x694>) + 80048f0: 781b ldrb r3, [r3, #0] + 80048f2: b2db uxtb r3, r3 + 80048f4: 7253 strb r3, [r2, #9] + OnStoreSTSCFGContextRequest(); + 80048f6: f7ff fa8f bl 8003e18 <OnStoreSTSCFGContextRequest> + APP_LOG(TS_OFF, VLEVEL_M, "###### YUNHORN Sampling Or Heart-Beat Interval Changed to [ %d ] Seconds\r\n", heart_beat_or_sampling_periodicity_length); + 80048fa: 9500 str r5, [sp, #0] + 80048fc: 4b64 ldr r3, [pc, #400] ; (8004a90 <USER_APP_AUTO_RESPONDER_Parse+0x69c>) + 80048fe: 4632 mov r2, r6 + 8004900: 4631 mov r1, r6 + 8004902: 2002 movs r0, #2 + 8004904: f012 f918 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + { + 8004908: e581 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + heart_beat_or_sampling_periodicity_length *= 60; + 800490a: 233c movs r3, #60 ; 0x3c + 800490c: fb03 f505 mul.w r5, r3, r5 + 8004910: e7bc b.n 800488c <USER_APP_AUTO_RESPONDER_Parse+0x498> + heart_beat_or_sampling_periodicity_length *= 3600; + 8004912: f44f 6361 mov.w r3, #3600 ; 0xe10 + 8004916: fb03 f505 mul.w r5, r3, r5 + 800491a: e7b7 b.n 800488c <USER_APP_AUTO_RESPONDER_Parse+0x498> + else if (((char)tlv_buf[CFG_CMD1] == 'P') && (tlv_buf_size >= 3)) // BEGIN OF PARAMETER CONFIG + 800491c: 2d02 cmp r5, #2 + 800491e: f67f ad73 bls.w 8004408 <USER_APP_AUTO_RESPONDER_Parse+0x14> + switch ((char)tlv_buf[CFG_CMD2]) //BEGIN OF SWITCH TVL_BUF_P_MEMS_NO + 8004922: 7863 ldrb r3, [r4, #1] + 8004924: 3b30 subs r3, #48 ; 0x30 + 8004926: 2b01 cmp r3, #1 + 8004928: f63f ad71 bhi.w 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + mems_ver = (uint8_t)(tlv_buf[CFG_CMD3]-0x30); + 800492c: 78a3 ldrb r3, [r4, #2] + if (mems_ver == sts_version) + 800492e: 2b31 cmp r3, #49 ; 0x31 + 8004930: f47f ad6d bne.w 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + if (tlv_buf_size >= CFG_CMD_TOF_SIMPLE_SIZE) + 8004934: 2d0b cmp r5, #11 + 8004936: d901 bls.n 800493c <USER_APP_AUTO_RESPONDER_Parse+0x548> + for (j =0; j < CFG_CMD_TOF_SIMPLE_SIZE; j++) + 8004938: 2500 movs r5, #0 + 800493a: e018 b.n 800496e <USER_APP_AUTO_RESPONDER_Parse+0x57a> + STS_SENSOR_Upload_Config_Invalid_Message(); + 800493c: f7ff fa5c bl 8003df8 <STS_SENSOR_Upload_Config_Invalid_Message> + uint8_t i=0, mems_ver, invalid_flag=1; + 8004940: 2400 movs r4, #0 + 8004942: e04d b.n 80049e0 <USER_APP_AUTO_RESPONDER_Parse+0x5ec> + sts_cfg_nvm.p[j] = (uint8_t)((tlv_buf[CFG_CMD4+j] - 0x30)&0xff); + 8004944: 1ce9 adds r1, r5, #3 + 8004946: 5c63 ldrb r3, [r4, r1] + 8004948: 3b30 subs r3, #48 ; 0x30 + 800494a: b2db uxtb r3, r3 + 800494c: 4a4c ldr r2, [pc, #304] ; (8004a80 <USER_APP_AUTO_RESPONDER_Parse+0x68c>) + 800494e: 442a add r2, r5 + 8004950: 7313 strb r3, [r2, #12] + APP_LOG(TS_OFF,VLEVEL_L,"\r\n tlv_buf %d = %02x cfg->p[%d]=%02x \r\n", + 8004952: 5c63 ldrb r3, [r4, r1] + 8004954: 7b12 ldrb r2, [r2, #12] + 8004956: 9203 str r2, [sp, #12] + 8004958: 9502 str r5, [sp, #8] + 800495a: 9301 str r3, [sp, #4] + 800495c: 9500 str r5, [sp, #0] + 800495e: 4b4d ldr r3, [pc, #308] ; (8004a94 <USER_APP_AUTO_RESPONDER_Parse+0x6a0>) + 8004960: 2200 movs r2, #0 + 8004962: 4611 mov r1, r2 + 8004964: 2001 movs r0, #1 + 8004966: f012 f8e7 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + for (j =0; j < CFG_CMD_TOF_SIMPLE_SIZE; j++) + 800496a: 3501 adds r5, #1 + 800496c: b2ed uxtb r5, r5 + 800496e: 2d0b cmp r5, #11 + 8004970: d9e8 bls.n 8004944 <USER_APP_AUTO_RESPONDER_Parse+0x550> + STS_SENSOR_NVM_CFG_SIMPLE(); + 8004972: f7fe fe01 bl 8003578 <STS_SENSOR_NVM_CFG_SIMPLE> + outbuf[i++] = (char) 'P'; + 8004976: 4a41 ldr r2, [pc, #260] ; (8004a7c <USER_APP_AUTO_RESPONDER_Parse+0x688>) + 8004978: 2350 movs r3, #80 ; 0x50 + 800497a: 7013 strb r3, [r2, #0] + outbuf[i++] = sts_mtmcode1; + 800497c: 2300 movs r3, #0 + 800497e: 7053 strb r3, [r2, #1] + outbuf[i++] = sts_mtmcode2; + 8004980: 2110 movs r1, #16 + 8004982: 7091 strb r1, [r2, #2] + outbuf[i++] = sts_version; + 8004984: 2101 movs r1, #1 + 8004986: 70d1 strb r1, [r2, #3] + outbuf[i++] = sts_hardware_ver; + 8004988: 7111 strb r1, [r2, #4] + 800498a: 2405 movs r4, #5 + for (j=0; j < CFG_CMD_TOF_SIMPLE_SIZE; j++) + 800498c: e009 b.n 80049a2 <USER_APP_AUTO_RESPONDER_Parse+0x5ae> + outbuf[i++] = (uint8_t)(sts_cfg_nvm.p[j]+0x30)&0xff; + 800498e: 4a3c ldr r2, [pc, #240] ; (8004a80 <USER_APP_AUTO_RESPONDER_Parse+0x68c>) + 8004990: 441a add r2, r3 + 8004992: 7b12 ldrb r2, [r2, #12] + 8004994: 1c61 adds r1, r4, #1 + 8004996: 3230 adds r2, #48 ; 0x30 + 8004998: 4838 ldr r0, [pc, #224] ; (8004a7c <USER_APP_AUTO_RESPONDER_Parse+0x688>) + 800499a: 5502 strb r2, [r0, r4] + for (j=0; j < CFG_CMD_TOF_SIMPLE_SIZE; j++) + 800499c: 3301 adds r3, #1 + 800499e: b2db uxtb r3, r3 + outbuf[i++] = (uint8_t)(sts_cfg_nvm.p[j]+0x30)&0xff; + 80049a0: b2cc uxtb r4, r1 + for (j=0; j < CFG_CMD_TOF_SIMPLE_SIZE; j++) + 80049a2: 2b0b cmp r3, #11 + 80049a4: d9f3 bls.n 800498e <USER_APP_AUTO_RESPONDER_Parse+0x59a> + APP_LOG(TS_OFF, VLEVEL_L, "###### RSS Simple CFG=%s\r\n",*outbuf); + 80049a6: 4b35 ldr r3, [pc, #212] ; (8004a7c <USER_APP_AUTO_RESPONDER_Parse+0x688>) + 80049a8: 781b ldrb r3, [r3, #0] + 80049aa: 9300 str r3, [sp, #0] + 80049ac: 4b3a ldr r3, [pc, #232] ; (8004a98 <USER_APP_AUTO_RESPONDER_Parse+0x6a4>) + 80049ae: 2200 movs r2, #0 + 80049b0: 4611 mov r1, r2 + 80049b2: 2001 movs r0, #1 + 80049b4: f012 f8c0 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + sts_cfg_nvm.mtmcode1 = sts_mtmcode1; + 80049b8: 4b31 ldr r3, [pc, #196] ; (8004a80 <USER_APP_AUTO_RESPONDER_Parse+0x68c>) + 80049ba: 2200 movs r2, #0 + 80049bc: 701a strb r2, [r3, #0] + sts_cfg_nvm.mtmcode2 = sts_mtmcode2; + 80049be: 2210 movs r2, #16 + 80049c0: 705a strb r2, [r3, #1] + sts_cfg_nvm.version = sts_version; + 80049c2: 2201 movs r2, #1 + 80049c4: 709a strb r2, [r3, #2] + sts_cfg_nvm.hardware_ver = sts_hardware_ver; + 80049c6: 70da strb r2, [r3, #3] + sts_cfg_nvm.work_mode = sts_work_mode; + 80049c8: 4a2e ldr r2, [pc, #184] ; (8004a84 <USER_APP_AUTO_RESPONDER_Parse+0x690>) + 80049ca: 7812 ldrb r2, [r2, #0] + 80049cc: b2d2 uxtb r2, r2 + 80049ce: 721a strb r2, [r3, #8] + sts_cfg_nvm.sts_service_mask = sts_service_mask; + 80049d0: 4a2d ldr r2, [pc, #180] ; (8004a88 <USER_APP_AUTO_RESPONDER_Parse+0x694>) + 80049d2: 7812 ldrb r2, [r2, #0] + 80049d4: b2d2 uxtb r2, r2 + 80049d6: 725a strb r2, [r3, #9] + sts_cfg_nvm.length = CFG_CMD_TOF_SIMPLE_SIZE; + 80049d8: 220c movs r2, #12 + 80049da: 72da strb r2, [r3, #11] + OnStoreSTSCFGContextRequest(); + 80049dc: f7ff fa1c bl 8003e18 <OnStoreSTSCFGContextRequest> + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, outbuf); + 80049e0: 4a26 ldr r2, [pc, #152] ; (8004a7c <USER_APP_AUTO_RESPONDER_Parse+0x688>) + 80049e2: 4621 mov r1, r4 + 80049e4: 2001 movs r0, #1 + 80049e6: f7ff f995 bl 8003d14 <STS_SENSOR_Upload_Message> + 80049ea: e510 b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + else if (((char)tlv_buf[CFG_CMD1] == 'A') && ((char)tlv_buf[CFG_CMD2] == 'C') && (tlv_buf_size == (YUNHORN_STS_AC_CODE_SIZE+2))) // BEGIN OF *** BOARD LEVEL AUTHORIZATION CODE + 80049ec: 7863 ldrb r3, [r4, #1] + 80049ee: 2b43 cmp r3, #67 ; 0x43 + 80049f0: f47f ad0d bne.w 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + 80049f4: 2d16 cmp r5, #22 + 80049f6: f47f ad0a bne.w 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + for (uint8_t j=0; j< YUNHORN_STS_AC_CODE_SIZE; j++) + 80049fa: 2300 movs r3, #0 + 80049fc: e005 b.n 8004a0a <USER_APP_AUTO_RESPONDER_Parse+0x616> + sts_ac_code[j] = (uint8_t) tlv_buf[2+j]; + 80049fe: 1c9a adds r2, r3, #2 + 8004a00: 5ca1 ldrb r1, [r4, r2] + 8004a02: 4a26 ldr r2, [pc, #152] ; (8004a9c <USER_APP_AUTO_RESPONDER_Parse+0x6a8>) + 8004a04: 54d1 strb r1, [r2, r3] + for (uint8_t j=0; j< YUNHORN_STS_AC_CODE_SIZE; j++) + 8004a06: 3301 adds r3, #1 + 8004a08: b2db uxtb r3, r3 + 8004a0a: 2b13 cmp r3, #19 + 8004a0c: d9f7 bls.n 80049fe <USER_APP_AUTO_RESPONDER_Parse+0x60a> + STS_YUNHORN_RFAC_HANDLE_PROCESS(); + 8004a0e: f7ff f92b bl 8003c68 <STS_YUNHORN_RFAC_HANDLE_PROCESS> + if ((hmac_result.ac_pass == 1U)) + 8004a12: 4b23 ldr r3, [pc, #140] ; (8004aa0 <USER_APP_AUTO_RESPONDER_Parse+0x6ac>) + 8004a14: 7d5b ldrb r3, [r3, #21] + 8004a16: 2b01 cmp r3, #1 + 8004a18: d01a beq.n 8004a50 <USER_APP_AUTO_RESPONDER_Parse+0x65c> + sts_service_mask = STS_SERVICE_MASK_L2; + 8004a1a: 4b1b ldr r3, [pc, #108] ; (8004a88 <USER_APP_AUTO_RESPONDER_Parse+0x694>) + 8004a1c: 2202 movs r2, #2 + 8004a1e: 701a strb r2, [r3, #0] + for (uint8_t j=0; j < YUNHORN_STS_AC_CODE_SIZE; j++) + 8004a20: 2300 movs r3, #0 + 8004a22: 4619 mov r1, r3 + 8004a24: e01f b.n 8004a66 <USER_APP_AUTO_RESPONDER_Parse+0x672> + sts_cfg_nvm.ac[j] = sts_ac_code[j]; + 8004a26: 4a1d ldr r2, [pc, #116] ; (8004a9c <USER_APP_AUTO_RESPONDER_Parse+0x6a8>) + 8004a28: 5cd1 ldrb r1, [r2, r3] + 8004a2a: b2c9 uxtb r1, r1 + 8004a2c: 4a14 ldr r2, [pc, #80] ; (8004a80 <USER_APP_AUTO_RESPONDER_Parse+0x68c>) + 8004a2e: 441a add r2, r3 + 8004a30: f882 102c strb.w r1, [r2, #44] ; 0x2c + for (uint8_t j=0; j < YUNHORN_STS_AC_CODE_SIZE; j++) + 8004a34: 3301 adds r3, #1 + 8004a36: b2db uxtb r3, r3 + 8004a38: 2b13 cmp r3, #19 + 8004a3a: d9f4 bls.n 8004a26 <USER_APP_AUTO_RESPONDER_Parse+0x632> + sts_service_mask = STS_SERVICE_MASK_L0; + 8004a3c: 4b12 ldr r3, [pc, #72] ; (8004a88 <USER_APP_AUTO_RESPONDER_Parse+0x694>) + 8004a3e: 2200 movs r2, #0 + 8004a40: 701a strb r2, [r3, #0] + sts_cfg_nvm.sts_service_mask = sts_service_mask; + 8004a42: 781b ldrb r3, [r3, #0] + 8004a44: b2db uxtb r3, r3 + 8004a46: 4a0e ldr r2, [pc, #56] ; (8004a80 <USER_APP_AUTO_RESPONDER_Parse+0x68c>) + 8004a48: 7253 strb r3, [r2, #9] + OnStoreSTSCFGContextRequest(); + 8004a4a: f7ff f9e5 bl 8003e18 <OnStoreSTSCFGContextRequest> + 8004a4e: e7e7 b.n 8004a20 <USER_APP_AUTO_RESPONDER_Parse+0x62c> + for (uint8_t j=0; j < YUNHORN_STS_AC_CODE_SIZE; j++) + 8004a50: 2300 movs r3, #0 + 8004a52: e7f1 b.n 8004a38 <USER_APP_AUTO_RESPONDER_Parse+0x644> + outbuf[i++] = (uint8_t) tlv_buf[j]; + 8004a54: 1c4a adds r2, r1, #1 + 8004a56: f814 c003 ldrb.w ip, [r4, r3] + 8004a5a: 4808 ldr r0, [pc, #32] ; (8004a7c <USER_APP_AUTO_RESPONDER_Parse+0x688>) + 8004a5c: f800 c001 strb.w ip, [r0, r1] + for (uint8_t j=0; j <(tlv_buf_size) ; j++) { + 8004a60: 3301 adds r3, #1 + 8004a62: b2db uxtb r3, r3 + outbuf[i++] = (uint8_t) tlv_buf[j]; + 8004a64: b2d1 uxtb r1, r2 + for (uint8_t j=0; j <(tlv_buf_size) ; j++) { + 8004a66: 42ab cmp r3, r5 + 8004a68: d3f4 bcc.n 8004a54 <USER_APP_AUTO_RESPONDER_Parse+0x660> + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (char*)outbuf); + 8004a6a: 4a04 ldr r2, [pc, #16] ; (8004a7c <USER_APP_AUTO_RESPONDER_Parse+0x688>) + 8004a6c: 2001 movs r0, #1 + 8004a6e: f7ff f951 bl 8003d14 <STS_SENSOR_Upload_Message> +} // END OF USER_APP_AUTO_RESPONDER_Parse + 8004a72: e4cc b.n 800440e <USER_APP_AUTO_RESPONDER_Parse+0x1a> + 8004a74: 20000074 .word 0x20000074 + 8004a78: 2000000c .word 0x2000000c + 8004a7c: 20000dd4 .word 0x20000dd4 + 8004a80: 20000078 .word 0x20000078 + 8004a84: 20000e6c .word 0x20000e6c + 8004a88: 20000c44 .word 0x20000c44 + 8004a8c: 080180cc .word 0x080180cc + 8004a90: 08018104 .word 0x08018104 + 8004a94: 08018150 .word 0x08018150 + 8004a98: 08018178 .word 0x08018178 + 8004a9c: 20000e58 .word 0x20000e58 + 8004aa0: 20000ab4 .word 0x20000ab4 + +08004aa4 <OnRxData>: + if (params != NULL) + 8004aa4: 2900 cmp r1, #0 + 8004aa6: d067 beq.n 8004b78 <OnRxData+0xd4> +{ + 8004aa8: b570 push {r4, r5, r6, lr} + 8004aaa: b086 sub sp, #24 + 8004aac: 4604 mov r4, r0 + 8004aae: 460d mov r5, r1 + UTIL_TIMER_Start(&RxLedTimer); + 8004ab0: 4832 ldr r0, [pc, #200] ; (8004b7c <OnRxData+0xd8>) + 8004ab2: f012 fbed bl 8017290 <UTIL_TIMER_Start> + if (params->IsMcpsIndication) + 8004ab6: 782e ldrb r6, [r5, #0] + 8004ab8: b156 cbz r6, 8004ad0 <OnRxData+0x2c> + if (appData != NULL) + 8004aba: 2c00 cmp r4, #0 + 8004abc: d043 beq.n 8004b46 <OnRxData+0xa2> + RxPort = appData->Port; + 8004abe: 7826 ldrb r6, [r4, #0] + if (appData->Buffer != NULL) + 8004ac0: 6860 ldr r0, [r4, #4] + 8004ac2: b128 cbz r0, 8004ad0 <OnRxData+0x2c> + switch (appData->Port) + 8004ac4: 2e03 cmp r6, #3 + 8004ac6: d008 beq.n 8004ada <OnRxData+0x36> + 8004ac8: 2e0a cmp r6, #10 + 8004aca: d01c beq.n 8004b06 <OnRxData+0x62> + 8004acc: 2e02 cmp r6, #2 + 8004ace: d031 beq.n 8004b34 <OnRxData+0x90> + if (params->RxSlot < RX_SLOT_NONE) + 8004ad0: 7c2b ldrb r3, [r5, #16] + 8004ad2: 2b05 cmp r3, #5 + 8004ad4: d939 bls.n 8004b4a <OnRxData+0xa6> +} + 8004ad6: b006 add sp, #24 + 8004ad8: bd70 pop {r4, r5, r6, pc} + if (appData->BufferSize == 1) + 8004ada: 7863 ldrb r3, [r4, #1] + 8004adc: 2b01 cmp r3, #1 + 8004ade: d1f7 bne.n 8004ad0 <OnRxData+0x2c> + switch (appData->Buffer[0]) + 8004ae0: 7803 ldrb r3, [r0, #0] + 8004ae2: 2b01 cmp r3, #1 + 8004ae4: d007 beq.n 8004af6 <OnRxData+0x52> + 8004ae6: 2b02 cmp r3, #2 + 8004ae8: d009 beq.n 8004afe <OnRxData+0x5a> + 8004aea: 2b00 cmp r3, #0 + 8004aec: d1f0 bne.n 8004ad0 <OnRxData+0x2c> + LmHandlerRequestClass(CLASS_A); + 8004aee: 2000 movs r0, #0 + 8004af0: f008 f9da bl 800cea8 <LmHandlerRequestClass> + break; + 8004af4: e7ec b.n 8004ad0 <OnRxData+0x2c> + LmHandlerRequestClass(CLASS_B); + 8004af6: 2001 movs r0, #1 + 8004af8: f008 f9d6 bl 800cea8 <LmHandlerRequestClass> + break; + 8004afc: e7e8 b.n 8004ad0 <OnRxData+0x2c> + LmHandlerRequestClass(CLASS_C); + 8004afe: 2002 movs r0, #2 + 8004b00: f008 f9d2 bl 800cea8 <LmHandlerRequestClass> + break; + 8004b04: e7e4 b.n 8004ad0 <OnRxData+0x2c> + if (appData->BufferSize == 1) + 8004b06: 7863 ldrb r3, [r4, #1] + 8004b08: 2b01 cmp r3, #1 + 8004b0a: d1e1 bne.n 8004ad0 <OnRxData+0x2c> + AppLedStateOn = appData->Buffer[0] & 0x01; + 8004b0c: 7803 ldrb r3, [r0, #0] + 8004b0e: f003 0301 and.w r3, r3, #1 + 8004b12: 4a1b ldr r2, [pc, #108] ; (8004b80 <OnRxData+0xdc>) + 8004b14: 7013 strb r3, [r2, #0] + if (AppLedStateOn == RESET) + 8004b16: b933 cbnz r3, 8004b26 <OnRxData+0x82> + APP_LOG(TS_OFF, VLEVEL_H, "LED OFF\r\n"); + 8004b18: 4b1a ldr r3, [pc, #104] ; (8004b84 <OnRxData+0xe0>) + 8004b1a: 2200 movs r2, #0 + 8004b1c: 4611 mov r1, r2 + 8004b1e: 2003 movs r0, #3 + 8004b20: f012 f80a bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8004b24: e7d4 b.n 8004ad0 <OnRxData+0x2c> + APP_LOG(TS_OFF, VLEVEL_H, "LED ON\r\n"); + 8004b26: 4b18 ldr r3, [pc, #96] ; (8004b88 <OnRxData+0xe4>) + 8004b28: 2200 movs r2, #0 + 8004b2a: 4611 mov r1, r2 + 8004b2c: 2003 movs r0, #3 + 8004b2e: f012 f803 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8004b32: e7cd b.n 8004ad0 <OnRxData+0x2c> + if (appData->BufferSize != 1) + 8004b34: 7861 ldrb r1, [r4, #1] + 8004b36: 2901 cmp r1, #1 + 8004b38: d0ca beq.n 8004ad0 <OnRxData+0x2c> + if (appData->BufferSize < 128) { + 8004b3a: f011 0f80 tst.w r1, #128 ; 0x80 + 8004b3e: d1c7 bne.n 8004ad0 <OnRxData+0x2c> + USER_APP_AUTO_RESPONDER_Parse((char*)appData->Buffer, appData->BufferSize); + 8004b40: f7ff fc58 bl 80043f4 <USER_APP_AUTO_RESPONDER_Parse> + 8004b44: e7c4 b.n 8004ad0 <OnRxData+0x2c> + uint8_t RxPort = 0; + 8004b46: 2600 movs r6, #0 + 8004b48: e7c2 b.n 8004ad0 <OnRxData+0x2c> + APP_LOG(TS_OFF, VLEVEL_H, "###### D/L FRAME:%04d | PORT:%d | DR:%d | SLOT:%s | RSSI:%d | SNR:%d\r\n", + 8004b4a: f995 2008 ldrsb.w r2, [r5, #8] + 8004b4e: f995 1009 ldrsb.w r1, [r5, #9] + 8004b52: f995 000a ldrsb.w r0, [r5, #10] + 8004b56: 9005 str r0, [sp, #20] + 8004b58: 9104 str r1, [sp, #16] + 8004b5a: 490c ldr r1, [pc, #48] ; (8004b8c <OnRxData+0xe8>) + 8004b5c: f851 3023 ldr.w r3, [r1, r3, lsl #2] + 8004b60: 9303 str r3, [sp, #12] + 8004b62: 9202 str r2, [sp, #8] + 8004b64: 9601 str r6, [sp, #4] + 8004b66: 68eb ldr r3, [r5, #12] + 8004b68: 9300 str r3, [sp, #0] + 8004b6a: 4b09 ldr r3, [pc, #36] ; (8004b90 <OnRxData+0xec>) + 8004b6c: 2200 movs r2, #0 + 8004b6e: 4611 mov r1, r2 + 8004b70: 2003 movs r0, #3 + 8004b72: f011 ffe1 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8004b76: e7ae b.n 8004ad6 <OnRxData+0x32> + 8004b78: 4770 bx lr + 8004b7a: bf00 nop + 8004b7c: 20000d54 .word 0x20000d54 + 8004b80: 20000d3a .word 0x20000d3a + 8004b84: 08018194 .word 0x08018194 + 8004b88: 080181a0 .word 0x080181a0 + 8004b8c: 08018214 .word 0x08018214 + 8004b90: 080181ac .word 0x080181ac + +08004b94 <LoraInfo_Init>: +/* USER CODE END EV */ + +/* Exported functions --------------------------------------------------------*/ +void LoraInfo_Init(void) +{ + loraInfo.ContextManagement = 0; + 8004b94: 4b04 ldr r3, [pc, #16] ; (8004ba8 <LoraInfo_Init+0x14>) + 8004b96: 2200 movs r2, #0 + 8004b98: 601a str r2, [r3, #0] + loraInfo.Region = 0; + 8004b9a: 605a str r2, [r3, #4] + loraInfo.ClassB = 0; + 8004b9c: 609a str r2, [r3, #8] + loraInfo.Kms = 0; + 8004b9e: 60da str r2, [r3, #12] + /* USER CODE BEGIN LoraInfo_Init_1 */ + + /* USER CODE END LoraInfo_Init_1 */ + +#ifdef REGION_AS923 + loraInfo.Region |= (1 << LORAMAC_REGION_AS923); + 8004ba0: 2201 movs r2, #1 + 8004ba2: 605a str r2, [r3, #4] +#endif /* LORAWAN_KMS */ + +#if (!defined (CONTEXT_MANAGEMENT_ENABLED) || (CONTEXT_MANAGEMENT_ENABLED == 0)) + loraInfo.ContextManagement = 0; +#else /* CONTEXT_MANAGEMENT_ENABLED == 1 */ + loraInfo.ContextManagement = 1; + 8004ba4: 601a str r2, [r3, #0] +#endif /* CONTEXT_MANAGEMENT_ENABLED */ + + /* USER CODE BEGIN LoraInfo_Init_2 */ + + /* USER CODE END LoraInfo_Init_2 */ +} + 8004ba6: 4770 bx lr + 8004ba8: 20000e70 .word 0x20000e70 + +08004bac <LoraInfo_GetPtr>: +{ + /* USER CODE BEGIN LoraInfo_GetPtr */ + + /* USER CODE END LoraInfo_GetPtr */ + return &loraInfo; +} + 8004bac: 4800 ldr r0, [pc, #0] ; (8004bb0 <LoraInfo_GetPtr+0x4>) + 8004bae: 4770 bx lr + 8004bb0: 20000e70 .word 0x20000e70 + +08004bb4 <RBI_Init>: + +/* USER CODE END PFP */ + +/* Exported functions --------------------------------------------------------*/ +int32_t RBI_Init(void) +{ + 8004bb4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8004bb8: b088 sub sp, #32 + /* and define USE_BSP_DRIVER in the preprocessor definitions or in platform.h */ + return BSP_RADIO_Init(); +#elif defined(YUNHORN_STS_WLE5CCxx) + /* should be calling BSP_RADIO_Init() but not supported by MX*/ + + GPIO_InitTypeDef gpio_init_structure = {0}; + 8004bba: 2400 movs r4, #0 + 8004bbc: 9403 str r4, [sp, #12] + 8004bbe: 9404 str r4, [sp, #16] + 8004bc0: 9405 str r4, [sp, #20] + 8004bc2: 9406 str r4, [sp, #24] + 8004bc4: 9407 str r4, [sp, #28] + SET_BIT(RCC->AHB2ENR, Periphs); + 8004bc6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8004bca: 6cda ldr r2, [r3, #76] ; 0x4c + 8004bcc: f042 0202 orr.w r2, r2, #2 + 8004bd0: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8004bd2: 6cda ldr r2, [r3, #76] ; 0x4c + 8004bd4: f002 0202 and.w r2, r2, #2 + 8004bd8: 9202 str r2, [sp, #8] + (void)tmpreg; + 8004bda: 9a02 ldr r2, [sp, #8] + SET_BIT(RCC->AHB2ENR, Periphs); + 8004bdc: 6cda ldr r2, [r3, #76] ; 0x4c + 8004bde: f042 0204 orr.w r2, r2, #4 + 8004be2: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8004be4: 6cdb ldr r3, [r3, #76] ; 0x4c + 8004be6: f003 0304 and.w r3, r3, #4 + 8004bea: 9301 str r3, [sp, #4] + (void)tmpreg; + 8004bec: 9b01 ldr r3, [sp, #4] +#if defined(YUNHORN_STS_RF_CHANNEL_SWITCH) + /* Enable the Radio Switch Clock */ + RF_SW_CTRL1_GPIO_CLK_ENABLE(); + RF_SW_CTRL2_GPIO_CLK_ENABLE(); + /* Configure the Radio Switch pin */ + gpio_init_structure.Pin = RF_SW_CTRL1_PIN; + 8004bee: f44f 7680 mov.w r6, #256 ; 0x100 + 8004bf2: 9603 str r6, [sp, #12] + gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP; + 8004bf4: 2301 movs r3, #1 + 8004bf6: 9304 str r3, [sp, #16] + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 8004bf8: 2303 movs r3, #3 + 8004bfa: 9306 str r3, [sp, #24] + HAL_GPIO_Init(RF_SW_CTRL1_GPIO_PORT, &gpio_init_structure); + 8004bfc: 4d0d ldr r5, [pc, #52] ; (8004c34 <RBI_Init+0x80>) + 8004bfe: a903 add r1, sp, #12 + 8004c00: 4628 mov r0, r5 + 8004c02: f004 fc23 bl 800944c <HAL_GPIO_Init> + gpio_init_structure.Pin = RF_SW_CTRL2_PIN; + 8004c06: f44f 5800 mov.w r8, #8192 ; 0x2000 + 8004c0a: f8cd 800c str.w r8, [sp, #12] + HAL_GPIO_Init(RF_SW_CTRL2_GPIO_PORT, &gpio_init_structure); + 8004c0e: 4f0a ldr r7, [pc, #40] ; (8004c38 <RBI_Init+0x84>) + 8004c10: a903 add r1, sp, #12 + 8004c12: 4638 mov r0, r7 + 8004c14: f004 fc1a bl 800944c <HAL_GPIO_Init> + + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_RESET); + 8004c18: 4622 mov r2, r4 + 8004c1a: 4641 mov r1, r8 + 8004c1c: 4638 mov r0, r7 + 8004c1e: f004 fd6c bl 80096fa <HAL_GPIO_WritePin> + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_RESET); + 8004c22: 4622 mov r2, r4 + 8004c24: 4631 mov r1, r6 + 8004c26: 4628 mov r0, r5 + 8004c28: f004 fd67 bl 80096fa <HAL_GPIO_WritePin> + /* USER CODE END RBI_Init_2 */ +#endif /* USE_BSP_DRIVER || YUNHORN_STS_WLE5CCxx */ + /* USER CODE BEGIN RBI_Init_3 */ + + /* USER CODE END RBI_Init_3 */ +} + 8004c2c: 4620 mov r0, r4 + 8004c2e: b008 add sp, #32 + 8004c30: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8004c34: 48000400 .word 0x48000400 + 8004c38: 48000800 .word 0x48000800 + +08004c3c <RBI_ConfigRFSwitch>: + + /* USER CODE END RBI_DeInit_3 */ +} + +int32_t RBI_ConfigRFSwitch(RBI_Switch_TypeDef Config) +{ + 8004c3c: b508 push {r3, lr} + /* code generated by MX does not support BSP */ + /* In order to use BSP driver, add the correspondent files in the IDE workspace */ + /* and define USE_BSP_DRIVER in the preprocessor definitions or in platform.h */ + return BSP_RADIO_ConfigRFSwitch((BSP_RADIO_Switch_TypeDef) Config); +#elif defined(YUNHORN_STS_WLE5CCxx) + switch (Config) + 8004c3e: 2803 cmp r0, #3 + 8004c40: d80f bhi.n 8004c62 <RBI_ConfigRFSwitch+0x26> + 8004c42: e8df f000 tbb [pc, r0] + 8004c46: 1002 .short 0x1002 + 8004c48: 2a1d .short 0x2a1d + { + case RBI_SWITCH_OFF: + { +#if defined(YUNHORN_STS_RF_CHANNEL_SWITCH) + /* Turn off switch */ + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_RESET); + 8004c4a: 2200 movs r2, #0 + 8004c4c: f44f 7180 mov.w r1, #256 ; 0x100 + 8004c50: 4818 ldr r0, [pc, #96] ; (8004cb4 <RBI_ConfigRFSwitch+0x78>) + 8004c52: f004 fd52 bl 80096fa <HAL_GPIO_WritePin> + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_RESET); + 8004c56: 2200 movs r2, #0 + 8004c58: f44f 5100 mov.w r1, #8192 ; 0x2000 + 8004c5c: 4816 ldr r0, [pc, #88] ; (8004cb8 <RBI_ConfigRFSwitch+0x7c>) + 8004c5e: f004 fd4c bl 80096fa <HAL_GPIO_WritePin> + /* USER CODE END RBI_ConfigRFSwitch_2 */ +#endif /* USE_BSP_DRIVER || YUNHORN_STS_WLE5CCxx */ + /* USER CODE BEGIN RBI_ConfigRFSwitch_3 */ + + /* USER CODE END RBI_ConfigRFSwitch_3 */ +} + 8004c62: 2000 movs r0, #0 + 8004c64: bd08 pop {r3, pc} + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_SET); + 8004c66: 2201 movs r2, #1 + 8004c68: f44f 7180 mov.w r1, #256 ; 0x100 + 8004c6c: 4811 ldr r0, [pc, #68] ; (8004cb4 <RBI_ConfigRFSwitch+0x78>) + 8004c6e: f004 fd44 bl 80096fa <HAL_GPIO_WritePin> + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_RESET); + 8004c72: 2200 movs r2, #0 + 8004c74: f44f 5100 mov.w r1, #8192 ; 0x2000 + 8004c78: 480f ldr r0, [pc, #60] ; (8004cb8 <RBI_ConfigRFSwitch+0x7c>) + 8004c7a: f004 fd3e bl 80096fa <HAL_GPIO_WritePin> + break; + 8004c7e: e7f0 b.n 8004c62 <RBI_ConfigRFSwitch+0x26> + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_RESET); + 8004c80: 2200 movs r2, #0 + 8004c82: f44f 7180 mov.w r1, #256 ; 0x100 + 8004c86: 480b ldr r0, [pc, #44] ; (8004cb4 <RBI_ConfigRFSwitch+0x78>) + 8004c88: f004 fd37 bl 80096fa <HAL_GPIO_WritePin> + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_SET); + 8004c8c: 2201 movs r2, #1 + 8004c8e: f44f 5100 mov.w r1, #8192 ; 0x2000 + 8004c92: 4809 ldr r0, [pc, #36] ; (8004cb8 <RBI_ConfigRFSwitch+0x7c>) + 8004c94: f004 fd31 bl 80096fa <HAL_GPIO_WritePin> + break; + 8004c98: e7e3 b.n 8004c62 <RBI_ConfigRFSwitch+0x26> + HAL_GPIO_WritePin(RF_SW_CTRL1_GPIO_PORT, RF_SW_CTRL1_PIN, GPIO_PIN_RESET); + 8004c9a: 2200 movs r2, #0 + 8004c9c: f44f 7180 mov.w r1, #256 ; 0x100 + 8004ca0: 4804 ldr r0, [pc, #16] ; (8004cb4 <RBI_ConfigRFSwitch+0x78>) + 8004ca2: f004 fd2a bl 80096fa <HAL_GPIO_WritePin> + HAL_GPIO_WritePin(RF_SW_CTRL2_GPIO_PORT, RF_SW_CTRL2_PIN, GPIO_PIN_SET); + 8004ca6: 2201 movs r2, #1 + 8004ca8: f44f 5100 mov.w r1, #8192 ; 0x2000 + 8004cac: 4802 ldr r0, [pc, #8] ; (8004cb8 <RBI_ConfigRFSwitch+0x7c>) + 8004cae: f004 fd24 bl 80096fa <HAL_GPIO_WritePin> + break; + 8004cb2: e7d6 b.n 8004c62 <RBI_ConfigRFSwitch+0x26> + 8004cb4: 48000400 .word 0x48000400 + 8004cb8: 48000800 .word 0x48000800 + +08004cbc <RBI_GetTxConfig>: + /* USER CODE END RBI_GetTxConfig_2 */ +#endif /* USE_BSP_DRIVER || YUNHORN_STS_WLE5CCxx */ + /* USER CODE BEGIN RBI_GetTxConfig_3 */ + + /* USER CODE END RBI_GetTxConfig_3 */ +} + 8004cbc: 2002 movs r0, #2 + 8004cbe: 4770 bx lr + +08004cc0 <RBI_IsTCXO>: + /* USER CODE END RBI_IsTCXO_2 */ +#endif /* USE_BSP_DRIVER || YUNHORN_STS_WLE5CCxx */ + /* USER CODE BEGIN RBI_IsTCXO_3 */ + + /* USER CODE END RBI_IsTCXO_3 */ +} + 8004cc0: 2000 movs r0, #0 + 8004cc2: 4770 bx lr + +08004cc4 <RBI_IsDCDC>: + /* USER CODE END RBI_IsDCDC_2 */ +#endif /* USE_BSP_DRIVER || YUNHORN_STS_WLE5CCxx */ + /* USER CODE BEGIN RBI_IsDCDC_3 */ + + /* USER CODE END RBI_IsDCDC_3 */ +} + 8004cc4: 2001 movs r0, #1 + 8004cc6: 4770 bx lr + +08004cc8 <RBI_GetRFOMaxPowerConfig>: +#else + /* 2/ Or implement RBI_RBI_GetRFOMaxPowerConfig here */ + int32_t ret = 0; + /* USER CODE BEGIN RBI_GetRFOMaxPowerConfig_2 */ + /* #warning user to provide its board code or to call his board driver functions */ + if (Config == RBI_RFO_LP_MAXPOWER) + 8004cc8: b908 cbnz r0, 8004cce <RBI_GetRFOMaxPowerConfig+0x6> + { + ret = 15; /*dBm*/ + 8004cca: 200f movs r0, #15 + 8004ccc: 4770 bx lr + } + else + { + ret = 22; /*dBm*/ + 8004cce: 2016 movs r0, #22 + } + /* USER CODE END RBI_GetRFOMaxPowerConfig_2 */ + return ret; +#endif /* USE_BSP_DRIVER */ +} + 8004cd0: 4770 bx lr + ... + +08004cd4 <Reset_Handler>: + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + 8004cd4: 480d ldr r0, [pc, #52] ; (8004d0c <LoopForever+0x2>) + mov sp, r0 /* set stack pointer */ + 8004cd6: 4685 mov sp, r0 + +/* Call the clock system initialization function.*/ + bl SystemInit + 8004cd8: f003 fa66 bl 80081a8 <SystemInit> + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8004cdc: 480c ldr r0, [pc, #48] ; (8004d10 <LoopForever+0x6>) + ldr r1, =_edata + 8004cde: 490d ldr r1, [pc, #52] ; (8004d14 <LoopForever+0xa>) + ldr r2, =_sidata + 8004ce0: 4a0d ldr r2, [pc, #52] ; (8004d18 <LoopForever+0xe>) + movs r3, #0 + 8004ce2: 2300 movs r3, #0 + b LoopCopyDataInit + 8004ce4: e002 b.n 8004cec <LoopCopyDataInit> + +08004ce6 <CopyDataInit>: + +CopyDataInit: + ldr r4, [r2, r3] + 8004ce6: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8004ce8: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 8004cea: 3304 adds r3, #4 + +08004cec <LoopCopyDataInit>: + +LoopCopyDataInit: + adds r4, r0, r3 + 8004cec: 18c4 adds r4, r0, r3 + cmp r4, r1 + 8004cee: 428c cmp r4, r1 + bcc CopyDataInit + 8004cf0: d3f9 bcc.n 8004ce6 <CopyDataInit> + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8004cf2: 4a0a ldr r2, [pc, #40] ; (8004d1c <LoopForever+0x12>) + ldr r4, =_ebss + 8004cf4: 4c0a ldr r4, [pc, #40] ; (8004d20 <LoopForever+0x16>) + movs r3, #0 + 8004cf6: 2300 movs r3, #0 + b LoopFillZerobss + 8004cf8: e001 b.n 8004cfe <LoopFillZerobss> + +08004cfa <FillZerobss>: + +FillZerobss: + str r3, [r2] + 8004cfa: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8004cfc: 3204 adds r2, #4 + +08004cfe <LoopFillZerobss>: + +LoopFillZerobss: + cmp r2, r4 + 8004cfe: 42a2 cmp r2, r4 + bcc FillZerobss + 8004d00: d3fb bcc.n 8004cfa <FillZerobss> + +/* Call static constructors */ + bl __libc_init_array + 8004d02: f012 fce5 bl 80176d0 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 8004d06: f7fd fd31 bl 800276c <main> + +08004d0a <LoopForever>: + +LoopForever: + b LoopForever + 8004d0a: e7fe b.n 8004d0a <LoopForever> + ldr r0, =_estack + 8004d0c: 20010000 .word 0x20010000 + ldr r0, =_sdata + 8004d10: 20000000 .word 0x20000000 + ldr r1, =_edata + 8004d14: 200008cc .word 0x200008cc + ldr r2, =_sidata + 8004d18: 08018f40 .word 0x08018f40 + ldr r2, =_sbss + 8004d1c: 200008cc .word 0x200008cc + ldr r4, =_ebss + 8004d20: 20002e44 .word 0x20002e44 + +08004d24 <ADC_IRQHandler>: + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8004d24: e7fe b.n 8004d24 <ADC_IRQHandler> + ... + +08004d28 <_I2cFailRecover>: + * + * We may get reset in middle of an i2c access (h/w reset button, debug or f/w load) + * hence some agent on bus may be in middle of a transaction and can create issue or even prevent starting (SDA is low) + * this routine does use gpio to manipulate and recover i2c bus line in all cases. + */ +static void _I2cFailRecover(){ + 8004d28: b530 push {r4, r5, lr} + 8004d2a: b089 sub sp, #36 ; 0x24 + SET_BIT(RCC->AHB2ENR, Periphs); + 8004d2c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8004d30: 6cda ldr r2, [r3, #76] ; 0x4c + 8004d32: f042 0201 orr.w r2, r2, #1 + 8004d36: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8004d38: 6cdb ldr r3, [r3, #76] ; 0x4c + 8004d3a: f003 0301 and.w r3, r3, #1 + 8004d3e: 9301 str r3, [sp, #4] + (void)tmpreg; + 8004d40: 9b01 ldr r3, [sp, #4] + // by setting SDA high and toggling SCL at least 10 time we ensure whatever agent and state + // all agent should end up seeing a "stop" and bus get back to an known idle i2c bus state + + // Enable I/O + __GPIOA_CLK_ENABLE(); + HAL_GPIO_WritePin(I2C2_SCL_PORT, I2C2_SCL_PIN, GPIO_PIN_SET); + 8004d42: 2201 movs r2, #1 + 8004d44: f44f 5180 mov.w r1, #4096 ; 0x1000 + 8004d48: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004d4c: f004 fcd5 bl 80096fa <HAL_GPIO_WritePin> + HAL_GPIO_WritePin(I2C2_SDA_PORT, I2C2_SDA_PIN, GPIO_PIN_SET); + 8004d50: 2201 movs r2, #1 + 8004d52: f44f 6100 mov.w r1, #2048 ; 0x800 + 8004d56: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004d5a: f004 fcce bl 80096fa <HAL_GPIO_WritePin> + GPIO_InitStruct.Pin = I2C2_SCL_PIN|I2C2_SDA_PIN ; + 8004d5e: f44f 53c0 mov.w r3, #6144 ; 0x1800 + 8004d62: 9303 str r3, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; + 8004d64: 2311 movs r3, #17 + 8004d66: 9304 str r3, [sp, #16] + GPIO_InitStruct.Pull = GPIO_PULLUP; + 8004d68: 2301 movs r3, #1 + 8004d6a: 9305 str r3, [sp, #20] + HAL_GPIO_Init(I2C2_SDA_PORT, &GPIO_InitStruct); + 8004d6c: a903 add r1, sp, #12 + 8004d6e: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004d72: f004 fb6b bl 800944c <HAL_GPIO_Init> + int i, nRetry=0; + 8004d76: 2500 movs r5, #0 + 8004d78: e021 b.n 8004dbe <_I2cFailRecover+0x96> + //TODO we could do this faster by not using HAL delay 1ms for clk timing + do{ + for( i=0; i<10; i++){ + HAL_GPIO_WritePin(I2C2_SCL_PORT, I2C2_SCL_PIN, GPIO_PIN_RESET); + 8004d7a: 2200 movs r2, #0 + 8004d7c: f44f 5180 mov.w r1, #4096 ; 0x1000 + 8004d80: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004d84: f004 fcb9 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(1); + 8004d88: 2001 movs r0, #1 + 8004d8a: f7fd ff91 bl 8002cb0 <HAL_Delay> + HAL_GPIO_WritePin(I2C2_SCL_PORT, I2C2_SCL_PIN, GPIO_PIN_SET); + 8004d8e: 2201 movs r2, #1 + 8004d90: f44f 5180 mov.w r1, #4096 ; 0x1000 + 8004d94: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004d98: f004 fcaf bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(1); + 8004d9c: 2001 movs r0, #1 + 8004d9e: f7fd ff87 bl 8002cb0 <HAL_Delay> + for( i=0; i<10; i++){ + 8004da2: 3401 adds r4, #1 + 8004da4: 2c09 cmp r4, #9 + 8004da6: dde8 ble.n 8004d7a <_I2cFailRecover+0x52> + } +// if( HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_9) == 0 ){ +// static int RetryRecover; +// RetryRecover++; +// } + }while(HAL_GPIO_ReadPin(I2C2_SDA_PORT, I2C2_SDA_PIN) == 0 && nRetry++<7); + 8004da8: f44f 6100 mov.w r1, #2048 ; 0x800 + 8004dac: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004db0: f004 fc9c bl 80096ec <HAL_GPIO_ReadPin> + 8004db4: b928 cbnz r0, 8004dc2 <_I2cFailRecover+0x9a> + 8004db6: 1c6b adds r3, r5, #1 + 8004db8: 2d06 cmp r5, #6 + 8004dba: dc02 bgt.n 8004dc2 <_I2cFailRecover+0x9a> + 8004dbc: 461d mov r5, r3 + for( i=0; i<10; i++){ + 8004dbe: 2400 movs r4, #0 + 8004dc0: e7f0 b.n 8004da4 <_I2cFailRecover+0x7c> + + if( HAL_GPIO_ReadPin(I2C2_SDA_PORT, I2C2_SDA_PIN) == 0 ){ + 8004dc2: f44f 6100 mov.w r1, #2048 ; 0x800 + 8004dc6: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004dca: f004 fc8f bl 80096ec <HAL_GPIO_ReadPin> + 8004dce: b108 cbz r0, 8004dd4 <_I2cFailRecover+0xac> + HAL_Delay(33); + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); + HAL_Delay(33*20); + }while(1); + } +} + 8004dd0: b009 add sp, #36 ; 0x24 + 8004dd2: bd30 pop {r4, r5, pc} + SET_BIT(RCC->AHB2ENR, Periphs); + 8004dd4: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8004dd8: 6cda ldr r2, [r3, #76] ; 0x4c + 8004dda: f042 0201 orr.w r2, r2, #1 + 8004dde: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8004de0: 6cdb ldr r3, [r3, #76] ; 0x4c + 8004de2: f003 0301 and.w r3, r3, #1 + 8004de6: 9302 str r3, [sp, #8] + (void)tmpreg; + 8004de8: 9b02 ldr r3, [sp, #8] + GPIO_InitStruct.Pin = LED1_Pin ; + 8004dea: 2304 movs r3, #4 + 8004dec: 9303 str r3, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8004dee: 2301 movs r3, #1 + 8004df0: 9304 str r3, [sp, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8004df2: 2300 movs r3, #0 + 8004df4: 9305 str r3, [sp, #20] + HAL_GPIO_Init(LED1_GPIO_Port, &GPIO_InitStruct); + 8004df6: a903 add r1, sp, #12 + 8004df8: 4812 ldr r0, [pc, #72] ; (8004e44 <_I2cFailRecover+0x11c>) + 8004dfa: f004 fb27 bl 800944c <HAL_GPIO_Init> + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET); + 8004dfe: 4c11 ldr r4, [pc, #68] ; (8004e44 <_I2cFailRecover+0x11c>) + 8004e00: 2201 movs r2, #1 + 8004e02: 2104 movs r1, #4 + 8004e04: 4620 mov r0, r4 + 8004e06: f004 fc78 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(33); + 8004e0a: 2021 movs r0, #33 ; 0x21 + 8004e0c: f7fd ff50 bl 8002cb0 <HAL_Delay> + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); + 8004e10: 2200 movs r2, #0 + 8004e12: 2104 movs r1, #4 + 8004e14: 4620 mov r0, r4 + 8004e16: f004 fc70 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(33); + 8004e1a: 2021 movs r0, #33 ; 0x21 + 8004e1c: f7fd ff48 bl 8002cb0 <HAL_Delay> + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET); + 8004e20: 2201 movs r2, #1 + 8004e22: 2104 movs r1, #4 + 8004e24: 4620 mov r0, r4 + 8004e26: f004 fc68 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(33); + 8004e2a: 2021 movs r0, #33 ; 0x21 + 8004e2c: f7fd ff40 bl 8002cb0 <HAL_Delay> + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); + 8004e30: 2200 movs r2, #0 + 8004e32: 2104 movs r1, #4 + 8004e34: 4620 mov r0, r4 + 8004e36: f004 fc60 bl 80096fa <HAL_GPIO_WritePin> + HAL_Delay(33*20); + 8004e3a: f44f 7025 mov.w r0, #660 ; 0x294 + 8004e3e: f7fd ff37 bl 8002cb0 <HAL_Delay> + do{ + 8004e42: e7dc b.n 8004dfe <_I2cFailRecover+0xd6> + 8004e44: 48000400 .word 0x48000400 + +08004e48 <XWL55_WLE5_53L0X_I2C2Configure>: + + + +int XWL55_WLE5_53L0X_I2C2Configure() { + 8004e48: b510 push {r4, lr} + 8004e4a: b088 sub sp, #32 + int status; + GPIO_InitTypeDef GPIO_InitStruct; + + _I2cFailRecover(); + 8004e4c: f7ff ff6c bl 8004d28 <_I2cFailRecover> + SET_BIT(RCC->AHB2ENR, Periphs); + 8004e50: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8004e54: 6cda ldr r2, [r3, #76] ; 0x4c + 8004e56: f042 0201 orr.w r2, r2, #1 + 8004e5a: 64da str r2, [r3, #76] ; 0x4c + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 8004e5c: 6cda ldr r2, [r3, #76] ; 0x4c + 8004e5e: f002 0201 and.w r2, r2, #1 + 8004e62: 9202 str r2, [sp, #8] + (void)tmpreg; + 8004e64: 9a02 ldr r2, [sp, #8] + SET_BIT(RCC->APB1ENR1, Periphs); + 8004e66: 6d9a ldr r2, [r3, #88] ; 0x58 + 8004e68: f442 0280 orr.w r2, r2, #4194304 ; 0x400000 + 8004e6c: 659a str r2, [r3, #88] ; 0x58 + tmpreg = READ_BIT(RCC->APB1ENR1, Periphs); + 8004e6e: 6d9b ldr r3, [r3, #88] ; 0x58 + 8004e70: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 8004e74: 9301 str r3, [sp, #4] + (void)tmpreg; + 8004e76: 9b01 ldr r3, [sp, #4] + PB9 ------> I2C1_SDA + *I2C2 GPIO configuration + PA12 -------> I2C2_SCL + PA11 -------> I2C2_SDA + */ + GPIO_InitStruct.Pin = I2C2_SCL_PIN | I2C2_SDA_PIN; + 8004e78: f44f 53c0 mov.w r3, #6144 ; 0x1800 + 8004e7c: 9303 str r3, [sp, #12] + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + 8004e7e: 2312 movs r3, #18 + 8004e80: 9304 str r3, [sp, #16] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8004e82: 2400 movs r4, #0 + 8004e84: 9405 str r4, [sp, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 8004e86: 2303 movs r3, #3 + 8004e88: 9306 str r3, [sp, #24] + GPIO_InitStruct.Alternate = GPIO_AF4_I2C2; + 8004e8a: 2304 movs r3, #4 + 8004e8c: 9307 str r3, [sp, #28] + HAL_GPIO_Init(I2C2_SDA_PORT, &GPIO_InitStruct); + 8004e8e: a903 add r1, sp, #12 + 8004e90: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004e94: f004 fada bl 800944c <HAL_GPIO_Init> + + XNUCLEO53L1A1_hi2c.Instance = I2C2; + 8004e98: 4807 ldr r0, [pc, #28] ; (8004eb8 <XWL55_WLE5_53L0X_I2C2Configure+0x70>) + 8004e9a: 4b08 ldr r3, [pc, #32] ; (8004ebc <XWL55_WLE5_53L0X_I2C2Configure+0x74>) + 8004e9c: 6003 str r3, [r0, #0] + //XNUCLEO53L1A1_hi2c.Init.Timing = 0x00300F38; /* set 400KHz fast mode i2c*/ + XNUCLEO53L1A1_hi2c.Init.Timing = 0x2010091A; //0x2010091A = 400K Fast Mode, 0x20303E5D, 100K Standard mode, 0x20000209 Fast Mode Plus, 1Mbps + 8004e9e: 4b08 ldr r3, [pc, #32] ; (8004ec0 <XWL55_WLE5_53L0X_I2C2Configure+0x78>) + 8004ea0: 6043 str r3, [r0, #4] + + XNUCLEO53L1A1_hi2c.Init.OwnAddress1 = 0; + 8004ea2: 6084 str r4, [r0, #8] + XNUCLEO53L1A1_hi2c.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + 8004ea4: 2301 movs r3, #1 + 8004ea6: 60c3 str r3, [r0, #12] + XNUCLEO53L1A1_hi2c.Init.DualAddressMode = I2C_DUALADDRESS_DISABLED; + 8004ea8: 6104 str r4, [r0, #16] + XNUCLEO53L1A1_hi2c.Init.OwnAddress2 = 0; + 8004eaa: 6144 str r4, [r0, #20] + XNUCLEO53L1A1_hi2c.Init.GeneralCallMode = I2C_GENERALCALL_DISABLED; + 8004eac: 61c4 str r4, [r0, #28] + XNUCLEO53L1A1_hi2c.Init.NoStretchMode = I2C_NOSTRETCH_DISABLED; + 8004eae: 6204 str r4, [r0, #32] + status = HAL_I2C_Init(&XNUCLEO53L1A1_hi2c); + 8004eb0: f004 fdc3 bl 8009a3a <HAL_I2C_Init> + return status; +} + 8004eb4: b008 add sp, #32 + 8004eb6: bd10 pop {r4, pc} + 8004eb8: 20000e80 .word 0x20000e80 + 8004ebc: 40005800 .word 0x40005800 + 8004ec0: 2010091a .word 0x2010091a + +08004ec4 <XWL55_WLE5_53L0X_Init>: + + return status; +} + +int XWL55_WLE5_53L0X_Init(void) +{ + 8004ec4: b508 push {r3, lr} + int status; + status = XWL55_WLE5_53L0X_I2C2Configure(); + 8004ec6: f7ff ffbf bl 8004e48 <XWL55_WLE5_53L0X_I2C2Configure> + return status; +} + 8004eca: bd08 pop {r3, pc} + +08004ecc <XWL55_WLE5_53L0X_ResetId>: + + +void XWL55_WLE5_53L0X_ResetId(uint8_t DevNo, int state) +{ + 8004ecc: b508 push {r3, lr} + + switch(DevNo) { + 8004ece: b110 cbz r0, 8004ed6 <XWL55_WLE5_53L0X_ResetId+0xa> + 8004ed0: 2801 cmp r0, #1 + 8004ed2: d00b beq.n 8004eec <XWL55_WLE5_53L0X_ResetId+0x20> + break; + + default: + break; + } +} + 8004ed4: bd08 pop {r3, pc} + HAL_GPIO_WritePin(TOF_L_XSHUT_GPIO_Port, TOF_L_XSHUT_Pin, ((state == 1)?GPIO_PIN_SET:GPIO_PIN_RESET)); + 8004ed6: 2901 cmp r1, #1 + 8004ed8: bf14 ite ne + 8004eda: 2200 movne r2, #0 + 8004edc: 2201 moveq r2, #1 + 8004ede: f44f 7100 mov.w r1, #512 ; 0x200 + 8004ee2: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004ee6: f004 fc08 bl 80096fa <HAL_GPIO_WritePin> + break; + 8004eea: e7f3 b.n 8004ed4 <XWL55_WLE5_53L0X_ResetId+0x8> + HAL_GPIO_WritePin(TOF_C_XSHUT_GPIO_Port, TOF_C_XSHUT_Pin, ((state == 1)?GPIO_PIN_SET:GPIO_PIN_RESET)); + 8004eec: 2901 cmp r1, #1 + 8004eee: bf14 ite ne + 8004ef0: 2200 movne r2, #0 + 8004ef2: 2201 moveq r2, #1 + 8004ef4: 2108 movs r1, #8 + 8004ef6: 4802 ldr r0, [pc, #8] ; (8004f00 <XWL55_WLE5_53L0X_ResetId+0x34>) + 8004ef8: f004 fbff bl 80096fa <HAL_GPIO_WritePin> +} + 8004efc: e7ea b.n 8004ed4 <XWL55_WLE5_53L0X_ResetId+0x8> + 8004efe: bf00 nop + 8004f00: 48000400 .word 0x48000400 + +08004f04 <MX_TOF_Process>: + +/* + * LM background task + */ +void MX_TOF_Process(void) +{ + 8004f04: b508 push {r3, lr} +#ifdef STS_USE_TOF_VL53L1X + STS_TOF_VL53L1X_Range_Process(); +#endif + +#ifdef STS_USE_TOF_VL53L0X + STS_SENSOR_Power_ON(1); + 8004f06: 2001 movs r0, #1 + 8004f08: f7fe fa9c bl 8003444 <STS_SENSOR_Power_ON> + HAL_Delay(100); + 8004f0c: 2064 movs r0, #100 ; 0x64 + 8004f0e: f7fd fecf bl 8002cb0 <HAL_Delay> + STS_TOF_VL53L0X_Range_Process(); + 8004f12: f000 fa2b bl 800536c <STS_TOF_VL53L0X_Range_Process> + HAL_Delay(100); + 8004f16: 2064 movs r0, #100 ; 0x64 + 8004f18: f7fd feca bl 8002cb0 <HAL_Delay> + STS_SENSOR_Power_OFF(1); + 8004f1c: 2001 movs r0, #1 + 8004f1e: f7fe fa9d bl 800345c <STS_SENSOR_Power_OFF> + + + /* USER CODE BEGIN TOF_Process_PostTreatment */ + + /* USER CODE END TOF_Process_PostTreatment */ +} + 8004f22: bd08 pop {r3, pc} + +08004f24 <STS_R0_SENSOR_Read>: +void STS_R0_SENSOR_Read(STS_R0_SensorDataTypeDef *r0_data) +{ + r0_data->distance_mm = sts_tof_distance_data[0]; + 8004f24: 4b05 ldr r3, [pc, #20] ; (8004f3c <STS_R0_SENSOR_Read+0x18>) + 8004f26: 681a ldr r2, [r3, #0] + 8004f28: 8002 strh r2, [r0, #0] + r0_data->distance1_mm = sts_tof_distance_data[1]; + 8004f2a: 685a ldr r2, [r3, #4] + 8004f2c: 8102 strh r2, [r0, #8] + r0_data->distance2_mm = sts_tof_distance_data[2]; + 8004f2e: 689b ldr r3, [r3, #8] + 8004f30: 8143 strh r3, [r0, #10] + + sensor_data_ready = 1; + 8004f32: 4b03 ldr r3, [pc, #12] ; (8004f40 <STS_R0_SENSOR_Read+0x1c>) + 8004f34: 2201 movs r2, #1 + 8004f36: 701a strb r2, [r3, #0] +} + 8004f38: 4770 bx lr + 8004f3a: bf00 nop + 8004f3c: 20000f00 .word 0x20000f00 + 8004f40: 20000e54 .word 0x20000e54 + +08004f44 <STS_SENSOR_MEMS_Get_ID>: + STS_TOF_VL53L6X, + STS_TOF_VL53L7X +} vl53lx_model; + +uint8_t STS_SENSOR_MEMS_Get_ID(uint8_t *mems_Dev_ID) +{ + 8004f44: b530 push {r4, r5, lr} + 8004f46: b083 sub sp, #12 + 8004f48: 4604 mov r4, r0 + uint16_t Id = 0xEEAA; //0xeeaa for VL53L0X + uint8_t cnt =0; + + cnt = sts_tof_vl53l0x_DetectSensors(); + 8004f4a: f000 f815 bl 8004f78 <sts_tof_vl53l0x_DetectSensors> + + if (cnt > 0) + 8004f4e: f010 05ff ands.w r5, r0, #255 ; 0xff + 8004f52: d001 beq.n 8004f58 <STS_SENSOR_MEMS_Get_ID+0x14> + mems_Dev_ID[0] = (Id >>8)&0xff; + 8004f54: 23ee movs r3, #238 ; 0xee + 8004f56: 7023 strb r3, [r4, #0] + mems_Dev_ID[1] = (Id & 0xff); + 8004f58: 23aa movs r3, #170 ; 0xaa + 8004f5a: 7063 strb r3, [r4, #1] + + APP_LOG(TS_OFF, VLEVEL_L,"MEMS ID=%02x %02x \r\n", mems_Dev_ID[0],mems_Dev_ID[1]); + 8004f5c: 7822 ldrb r2, [r4, #0] + 8004f5e: 9301 str r3, [sp, #4] + 8004f60: 9200 str r2, [sp, #0] + 8004f62: 4b04 ldr r3, [pc, #16] ; (8004f74 <STS_SENSOR_MEMS_Get_ID+0x30>) + 8004f64: 2200 movs r2, #0 + 8004f66: 4611 mov r1, r2 + 8004f68: 2001 movs r0, #1 + 8004f6a: f011 fde5 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + return cnt; +} + 8004f6e: 4628 mov r0, r5 + 8004f70: b003 add sp, #12 + 8004f72: bd30 pop {r4, r5, pc} + 8004f74: 0801822c .word 0x0801822c + +08004f78 <sts_tof_vl53l0x_DetectSensors>: + * + * All present devices are data initiated and assigned with their final address + * @return + */ +int sts_tof_vl53l0x_DetectSensors(void) +{ + 8004f78: b5f0 push {r4, r5, r6, r7, lr} + 8004f7a: b087 sub sp, #28 + int i; + uint16_t Id; + int status; + int FinalAddress; + nDevPresent = 0; + 8004f7c: 2400 movs r4, #0 + 8004f7e: 4b4a ldr r3, [pc, #296] ; (80050a8 <sts_tof_vl53l0x_DetectSensors+0x130>) + 8004f80: 601c str r4, [r3, #0] + + for (i=0; i < MAX_TOF_COUNT; i++) { + 8004f82: e004 b.n 8004f8e <sts_tof_vl53l0x_DetectSensors+0x16> + XWL55_WLE5_53L0X_ResetId(i,0); + 8004f84: 2100 movs r1, #0 + 8004f86: b2e0 uxtb r0, r4 + 8004f88: f7ff ffa0 bl 8004ecc <XWL55_WLE5_53L0X_ResetId> + for (i=0; i < MAX_TOF_COUNT; i++) { + 8004f8c: 3401 adds r4, #1 + 8004f8e: 2c02 cmp r4, #2 + 8004f90: ddf8 ble.n 8004f84 <sts_tof_vl53l0x_DetectSensors+0xc> + //XWL55_WLE5_53L0X_SetIntrStateId(0,i); + } + + /* detect all sensors (even on-board)*/ + for (i=0; i < MAX_TOF_COUNT; i++) + 8004f92: 2500 movs r5, #0 + 8004f94: e00b b.n 8004fae <sts_tof_vl53l0x_DetectSensors+0x36> + + /* Try to read one register using default 0x52 address */ + status = VL53L0X_RdWord(pDev, VL53L0X_REG_IDENTIFICATION_MODEL_ID, &Id); + //APP_LOG(TS_OFF, VLEVEL_H, "#%u read id = %04x I2C ADDR=0x%2X\r\n",i, Id, pDev->I2cDevAddr); + if (status) { + APP_LOG(TS_OFF, VLEVEL_L, "# Read id fail \r\n"); + 8004f96: 4b45 ldr r3, [pc, #276] ; (80050ac <sts_tof_vl53l0x_DetectSensors+0x134>) + 8004f98: 2200 movs r2, #0 + 8004f9a: 4611 mov r1, r2 + 8004f9c: 2001 movs r0, #1 + 8004f9e: f011 fdcb bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + APP_LOG(TS_OFF, VLEVEL_L, "# unknown ID %x\r\n", Id); + status = 1; + } + } while(0); + /* Display detected sensor(s) */ + if (status) { + 8004fa2: b11f cbz r7, 8004fac <sts_tof_vl53l0x_DetectSensors+0x34> + XWL55_WLE5_53L0X_ResetId(i,0); + 8004fa4: 2100 movs r1, #0 + 8004fa6: b2e8 uxtb r0, r5 + 8004fa8: f7ff ff90 bl 8004ecc <XWL55_WLE5_53L0X_ResetId> + for (i=0; i < MAX_TOF_COUNT; i++) + 8004fac: 3501 adds r5, #1 + 8004fae: 2d02 cmp r5, #2 + 8004fb0: dc75 bgt.n 800509e <sts_tof_vl53l0x_DetectSensors+0x126> + pDev = &VL53L0XDevs[i]; + 8004fb2: 4c3f ldr r4, [pc, #252] ; (80050b0 <sts_tof_vl53l0x_DetectSensors+0x138>) + 8004fb4: f44f 73c8 mov.w r3, #400 ; 0x190 + 8004fb8: fb03 4405 mla r4, r3, r5, r4 + pDev->I2cDevAddr = 0x52; + 8004fbc: 2352 movs r3, #82 ; 0x52 + 8004fbe: f884 3160 strb.w r3, [r4, #352] ; 0x160 + pDev->Present = 0; + 8004fc2: 2300 movs r3, #0 + 8004fc4: f8c4 3168 str.w r3, [r4, #360] ; 0x168 + XWL55_WLE5_53L0X_ResetId(pDev->Id, 1); + 8004fc8: 2101 movs r1, #1 + 8004fca: f894 0164 ldrb.w r0, [r4, #356] ; 0x164 + 8004fce: f7ff ff7d bl 8004ecc <XWL55_WLE5_53L0X_ResetId> + HAL_Delay(3); + 8004fd2: 2003 movs r0, #3 + 8004fd4: f7fd fe6c bl 8002cb0 <HAL_Delay> + FinalAddress = 0x52+(i+1)*2; + 8004fd8: f105 012a add.w r1, r5, #42 ; 0x2a + 8004fdc: 004e lsls r6, r1, #1 + status = VL53L0X_RdWord(pDev, VL53L0X_REG_IDENTIFICATION_MODEL_ID, &Id); + 8004fde: f10d 0216 add.w r2, sp, #22 + 8004fe2: 21c0 movs r1, #192 ; 0xc0 + 8004fe4: 4620 mov r0, r4 + 8004fe6: f003 f88f bl 8008108 <VL53L0X_RdWord> + 8004fea: 4607 mov r7, r0 + if (status) { + 8004fec: 2800 cmp r0, #0 + 8004fee: d1d2 bne.n 8004f96 <sts_tof_vl53l0x_DetectSensors+0x1e> + if (Id == 0xEEAA) { + 8004ff0: f8bd 3016 ldrh.w r3, [sp, #22] + 8004ff4: f64e 62aa movw r2, #61098 ; 0xeeaa + 8004ff8: 4293 cmp r3, r2 + 8004ffa: d007 beq.n 800500c <sts_tof_vl53l0x_DetectSensors+0x94> + APP_LOG(TS_OFF, VLEVEL_L, "# unknown ID %x\r\n", Id); + 8004ffc: 9300 str r3, [sp, #0] + 8004ffe: 4b2d ldr r3, [pc, #180] ; (80050b4 <sts_tof_vl53l0x_DetectSensors+0x13c>) + 8005000: 2200 movs r2, #0 + 8005002: 4611 mov r1, r2 + 8005004: 2001 movs r0, #1 + 8005006: f011 fd97 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + if (status) { + 800500a: e7cb b.n 8004fa4 <sts_tof_vl53l0x_DetectSensors+0x2c> + status = VL53L0X_SetDeviceAddress(pDev,FinalAddress); + 800500c: b2f6 uxtb r6, r6 + 800500e: 4631 mov r1, r6 + 8005010: 4620 mov r0, r4 + 8005012: f000 fa37 bl 8005484 <VL53L0X_SetDeviceAddress> + 8005016: 4607 mov r7, r0 + if (status != 0) { + 8005018: b130 cbz r0, 8005028 <sts_tof_vl53l0x_DetectSensors+0xb0> + APP_LOG(TS_OFF, VLEVEL_L, "#i VL53L0X_SetDeviceAddress fail\r\n"); + 800501a: 4b27 ldr r3, [pc, #156] ; (80050b8 <sts_tof_vl53l0x_DetectSensors+0x140>) + 800501c: 2200 movs r2, #0 + 800501e: 4611 mov r1, r2 + 8005020: 2001 movs r0, #1 + 8005022: f011 fd89 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + break; + 8005026: e7bc b.n 8004fa2 <sts_tof_vl53l0x_DetectSensors+0x2a> + pDev->I2cDevAddr = FinalAddress; + 8005028: 4b21 ldr r3, [pc, #132] ; (80050b0 <sts_tof_vl53l0x_DetectSensors+0x138>) + 800502a: f44f 72c8 mov.w r2, #400 ; 0x190 + 800502e: fb02 3305 mla r3, r2, r5, r3 + 8005032: f883 6160 strb.w r6, [r3, #352] ; 0x160 + status = VL53L0X_RdWord(pDev, VL53L0X_REG_IDENTIFICATION_MODEL_ID, &Id); + 8005036: f10d 0216 add.w r2, sp, #22 + 800503a: 21c0 movs r1, #192 ; 0xc0 + 800503c: 4620 mov r0, r4 + 800503e: f003 f863 bl 8008108 <VL53L0X_RdWord> + status = VL53L0X_DataInit(pDev); + 8005042: 4620 mov r0, r4 + 8005044: f000 fc9c bl 8005980 <VL53L0X_DataInit> + 8005048: 4607 mov r7, r0 + if( status == 0 ){ + 800504a: b9f0 cbnz r0, 800508a <sts_tof_vl53l0x_DetectSensors+0x112> + pDev->Present = 1; + 800504c: 4b18 ldr r3, [pc, #96] ; (80050b0 <sts_tof_vl53l0x_DetectSensors+0x138>) + 800504e: f44f 72c8 mov.w r2, #400 ; 0x190 + 8005052: fb02 3305 mla r3, r2, r5, r3 + 8005056: 2001 movs r0, #1 + 8005058: f8c3 0168 str.w r0, [r3, #360] ; 0x168 + nDevPresent++; + 800505c: 4912 ldr r1, [pc, #72] ; (80050a8 <sts_tof_vl53l0x_DetectSensors+0x130>) + 800505e: 680a ldr r2, [r1, #0] + 8005060: 4402 add r2, r0 + 8005062: 600a str r2, [r1, #0] + nDevMask |= 1 << i; + 8005064: fa00 f205 lsl.w r2, r0, r5 + 8005068: 4914 ldr r1, [pc, #80] ; (80050bc <sts_tof_vl53l0x_DetectSensors+0x144>) + 800506a: 680c ldr r4, [r1, #0] + 800506c: 4322 orrs r2, r4 + 800506e: 600a str r2, [r1, #0] + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X %d Present and initiated to final 0x%2x, Position Mask=0x%02x\r\n", pDev->Id, pDev->I2cDevAddr, nDevMask); + 8005070: f893 1160 ldrb.w r1, [r3, #352] ; 0x160 + 8005074: 9202 str r2, [sp, #8] + 8005076: 9101 str r1, [sp, #4] + 8005078: f8d3 3164 ldr.w r3, [r3, #356] ; 0x164 + 800507c: 9300 str r3, [sp, #0] + 800507e: 4b10 ldr r3, [pc, #64] ; (80050c0 <sts_tof_vl53l0x_DetectSensors+0x148>) + 8005080: 2200 movs r2, #0 + 8005082: 4611 mov r1, r2 + 8005084: f011 fd58 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8005088: e78b b.n 8004fa2 <sts_tof_vl53l0x_DetectSensors+0x2a> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_DataInit %d fail\r\n", Id); + 800508a: f8bd 3016 ldrh.w r3, [sp, #22] + 800508e: 9300 str r3, [sp, #0] + 8005090: 4b0c ldr r3, [pc, #48] ; (80050c4 <sts_tof_vl53l0x_DetectSensors+0x14c>) + 8005092: 2200 movs r2, #0 + 8005094: 4611 mov r1, r2 + 8005096: 2001 movs r0, #1 + 8005098: f011 fd4e bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + break; + 800509c: e781 b.n 8004fa2 <sts_tof_vl53l0x_DetectSensors+0x2a> + } + } + + return nDevPresent; +} + 800509e: 4b02 ldr r3, [pc, #8] ; (80050a8 <sts_tof_vl53l0x_DetectSensors+0x130>) + 80050a0: 6818 ldr r0, [r3, #0] + 80050a2: b007 add sp, #28 + 80050a4: bdf0 pop {r4, r5, r6, r7, pc} + 80050a6: bf00 nop + 80050a8: 20000ef8 .word 0x20000ef8 + 80050ac: 08018244 .word 0x08018244 + 80050b0: 200000bc .word 0x200000bc + 80050b4: 080182e4 .word 0x080182e4 + 80050b8: 08018258 .word 0x08018258 + 80050bc: 20000ef4 .word 0x20000ef4 + 80050c0: 0801827c .word 0x0801827c + 80050c4: 080182c8 .word 0x080182c8 + +080050c8 <sts_tof_vl53l0x_SetupSingleShot>: + +/** + * Setup all detected sensors for single shot mode and setup ranging configuration + */ +void sts_tof_vl53l0x_SetupSingleShot(RangingConfig_e rangingConfig) +{ int i; + 80050c8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80050cc: b087 sub sp, #28 + 80050ce: 4606 mov r6, r0 + uint8_t isApertureSpads; + FixPoint1616_t signalLimit = (FixPoint1616_t)(0.25*65536); + FixPoint1616_t sigmaLimit = (FixPoint1616_t)(18*65536); + uint32_t timingBudget = 33000; + uint8_t preRangeVcselPeriod = 14; + uint8_t finalRangeVcselPeriod = 10; + 80050d0: f04f 0b0a mov.w fp, #10 + uint8_t preRangeVcselPeriod = 14; + 80050d4: f04f 0a0e mov.w sl, #14 + uint32_t timingBudget = 33000; + 80050d8: f248 09e8 movw r9, #33000 ; 0x80e8 + FixPoint1616_t sigmaLimit = (FixPoint1616_t)(18*65536); + 80050dc: f44f 1890 mov.w r8, #1179648 ; 0x120000 + FixPoint1616_t signalLimit = (FixPoint1616_t)(0.25*65536); + 80050e0: f44f 4780 mov.w r7, #16384 ; 0x4000 + // uart_printf("\r\n######### start setup for single shot \r\n"); + for( i=0; i< MAX_TOF_COUNT; i++){ + 80050e4: 2400 movs r4, #0 + 80050e6: e078 b.n 80051da <sts_tof_vl53l0x_SetupSingleShot+0x112> + + APP_LOG(TS_OFF, VLEVEL_L, "\r\n ###### Starting Range #%u sensor \r\n",i); + + status=VL53L0X_StaticInit(&VL53L0XDevs[i]); + if( status ){ + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_StaticInit failed\n"); + 80050e8: 4b83 ldr r3, [pc, #524] ; (80052f8 <sts_tof_vl53l0x_SetupSingleShot+0x230>) + 80050ea: 2200 movs r2, #0 + 80050ec: 4611 mov r1, r2 + 80050ee: 2001 movs r0, #1 + 80050f0: f011 fd22 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 80050f4: e08f b.n 8005216 <sts_tof_vl53l0x_SetupSingleShot+0x14e> + } + + status = VL53L0X_PerformRefCalibration(&VL53L0XDevs[i], &VhvSettings, &PhaseCal); + if( status ){ + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_PerformRefCalibration failed\n"); + 80050f6: 4b81 ldr r3, [pc, #516] ; (80052fc <sts_tof_vl53l0x_SetupSingleShot+0x234>) + 80050f8: 2200 movs r2, #0 + 80050fa: 4611 mov r1, r2 + 80050fc: 2001 movs r0, #1 + 80050fe: f011 fd1b bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8005102: e092 b.n 800522a <sts_tof_vl53l0x_SetupSingleShot+0x162> + } + + status = VL53L0X_PerformRefSpadManagement(&VL53L0XDevs[i], &refSpadCount, &isApertureSpads); + if( status ){ + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_PerformRefSpadManagement failed\n"); + 8005104: 4b7e ldr r3, [pc, #504] ; (8005300 <sts_tof_vl53l0x_SetupSingleShot+0x238>) + 8005106: 2200 movs r2, #0 + 8005108: 4611 mov r1, r2 + 800510a: 2001 movs r0, #1 + 800510c: f011 fd14 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8005110: e094 b.n 800523c <sts_tof_vl53l0x_SetupSingleShot+0x174> + } + + status = VL53L0X_SetDeviceMode(&VL53L0XDevs[i], VL53L0X_DEVICEMODE_SINGLE_RANGING); // Setup in single ranging mode + if( status ){ + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetDeviceMode failed\n"); + 8005112: 4b7c ldr r3, [pc, #496] ; (8005304 <sts_tof_vl53l0x_SetupSingleShot+0x23c>) + 8005114: 2200 movs r2, #0 + 8005116: 4611 mov r1, r2 + 8005118: 2001 movs r0, #1 + 800511a: f011 fd0d bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 800511e: e094 b.n 800524a <sts_tof_vl53l0x_SetupSingleShot+0x182> + } + status = VL53L0X_SetLimitCheckEnable(&VL53L0XDevs[i], VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, 1); // Enable Sigma limit + if( status ){ + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetLimitCheckEnable failed\n"); + 8005120: 4b79 ldr r3, [pc, #484] ; (8005308 <sts_tof_vl53l0x_SetupSingleShot+0x240>) + 8005122: 2200 movs r2, #0 + 8005124: 4611 mov r1, r2 + 8005126: 2001 movs r0, #1 + 8005128: f011 fd06 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 800512c: e095 b.n 800525a <sts_tof_vl53l0x_SetupSingleShot+0x192> + } + status = VL53L0X_SetLimitCheckEnable(&VL53L0XDevs[i], VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE, 1); // Enable Signa limit + if( status ){ + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetLimitCheckEnable failed\n"); + 800512e: 4b76 ldr r3, [pc, #472] ; (8005308 <sts_tof_vl53l0x_SetupSingleShot+0x240>) + 8005130: 2200 movs r2, #0 + 8005132: 4611 mov r1, r2 + 8005134: 2001 movs r0, #1 + 8005136: f011 fcff bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 800513a: e096 b.n 800526a <sts_tof_vl53l0x_SetupSingleShot+0x1a2> + case HIGH_SPEED: + signalLimit = (FixPoint1616_t)(0.25*65536); + sigmaLimit = (FixPoint1616_t)(32*65536); + timingBudget = 20000; + preRangeVcselPeriod = 14; + finalRangeVcselPeriod = 10; + 800513c: f04f 0b0a mov.w fp, #10 + preRangeVcselPeriod = 14; + 8005140: f04f 0a0e mov.w sl, #14 + timingBudget = 20000; + 8005144: f644 6920 movw r9, #20000 ; 0x4e20 + sigmaLimit = (FixPoint1616_t)(32*65536); + 8005148: f44f 1800 mov.w r8, #2097152 ; 0x200000 + signalLimit = (FixPoint1616_t)(0.25*65536); + 800514c: f44f 4780 mov.w r7, #16384 ; 0x4000 + 8005150: e009 b.n 8005166 <sts_tof_vl53l0x_SetupSingleShot+0x9e> + finalRangeVcselPeriod = 10; + 8005152: f04f 0b0a mov.w fp, #10 + preRangeVcselPeriod = 14; + 8005156: f04f 0a0e mov.w sl, #14 + timingBudget = 200000; + 800515a: f8df 91b0 ldr.w r9, [pc, #432] ; 800530c <sts_tof_vl53l0x_SetupSingleShot+0x244> + sigmaLimit = (FixPoint1616_t)(18*65536); + 800515e: f44f 1890 mov.w r8, #1179648 ; 0x120000 + signalLimit = (FixPoint1616_t)(0.25*65536); + 8005162: f44f 4780 mov.w r7, #16384 ; 0x4000 + default: + APP_LOG(TS_OFF, VLEVEL_L, "Not Supported"); + break; + } + + status = VL53L0X_SetLimitCheckValue(&VL53L0XDevs[i], VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE, signalLimit); + 8005166: 463a mov r2, r7 + 8005168: 2101 movs r1, #1 + 800516a: 4628 mov r0, r5 + 800516c: f000 fb10 bl 8005790 <VL53L0X_SetLimitCheckValue> + if( status ){ + 8005170: 2800 cmp r0, #0 + 8005172: f040 8093 bne.w 800529c <sts_tof_vl53l0x_SetupSingleShot+0x1d4> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetLimitCheckValue failed\n"); + } + + status = VL53L0X_SetLimitCheckValue(&VL53L0XDevs[i], VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, sigmaLimit); + 8005176: 4642 mov r2, r8 + 8005178: 2100 movs r1, #0 + 800517a: 4628 mov r0, r5 + 800517c: f000 fb08 bl 8005790 <VL53L0X_SetLimitCheckValue> + if( status ){ + 8005180: 2800 cmp r0, #0 + 8005182: f040 8092 bne.w 80052aa <sts_tof_vl53l0x_SetupSingleShot+0x1e2> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetLimitCheckValue failed\n"); + } + + status = VL53L0X_SetMeasurementTimingBudgetMicroSeconds(&VL53L0XDevs[i], timingBudget); + 8005186: 4649 mov r1, r9 + 8005188: 4628 mov r0, r5 + 800518a: f000 f9a3 bl 80054d4 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds> + if( status ){ + 800518e: 2800 cmp r0, #0 + 8005190: f040 8092 bne.w 80052b8 <sts_tof_vl53l0x_SetupSingleShot+0x1f0> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetMeasurementTimingBudgetMicroSeconds failed\n"); + } + + status = VL53L0X_SetVcselPulsePeriod(&VL53L0XDevs[i], VL53L0X_VCSEL_PERIOD_PRE_RANGE, preRangeVcselPeriod); + 8005194: 4652 mov r2, sl + 8005196: 2100 movs r1, #0 + 8005198: 4628 mov r0, r5 + 800519a: f000 f9a3 bl 80054e4 <VL53L0X_SetVcselPulsePeriod> + if( status ){ + 800519e: 2800 cmp r0, #0 + 80051a0: f040 8091 bne.w 80052c6 <sts_tof_vl53l0x_SetupSingleShot+0x1fe> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetVcselPulsePeriod failed\n"); + } + + status = VL53L0X_SetVcselPulsePeriod(&VL53L0XDevs[i], VL53L0X_VCSEL_PERIOD_FINAL_RANGE, finalRangeVcselPeriod); + 80051a4: 465a mov r2, fp + 80051a6: 2101 movs r1, #1 + 80051a8: 4628 mov r0, r5 + 80051aa: f000 f99b bl 80054e4 <VL53L0X_SetVcselPulsePeriod> + if( status ){ + 80051ae: 2800 cmp r0, #0 + 80051b0: f040 8090 bne.w 80052d4 <sts_tof_vl53l0x_SetupSingleShot+0x20c> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetVcselPulsePeriod failed\n"); + } + + status = VL53L0X_PerformRefCalibration(&VL53L0XDevs[i], &VhvSettings, &PhaseCal); + 80051b4: f10d 0216 add.w r2, sp, #22 + 80051b8: f10d 0117 add.w r1, sp, #23 + 80051bc: 4628 mov r0, r5 + 80051be: f000 fcc5 bl 8005b4c <VL53L0X_PerformRefCalibration> + if( status ){ + 80051c2: 2800 cmp r0, #0 + 80051c4: f040 808d bne.w 80052e2 <sts_tof_vl53l0x_SetupSingleShot+0x21a> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_PerformRefCalibration failed\n"); + } + + VL53L0XDevs[i].LeakyFirst =1; + 80051c8: 4b51 ldr r3, [pc, #324] ; (8005310 <sts_tof_vl53l0x_SetupSingleShot+0x248>) + 80051ca: f44f 72c8 mov.w r2, #400 ; 0x190 + 80051ce: fb02 3304 mla r3, r2, r4, r3 + 80051d2: 2201 movs r2, #1 + 80051d4: f8c3 217c str.w r2, [r3, #380] ; 0x17c + for( i=0; i< MAX_TOF_COUNT; i++){ + 80051d8: 3401 adds r4, #1 + 80051da: 2c02 cmp r4, #2 + 80051dc: f300 8088 bgt.w 80052f0 <sts_tof_vl53l0x_SetupSingleShot+0x228> + if( VL53L0XDevs[i].Present){ + 80051e0: 4b4b ldr r3, [pc, #300] ; (8005310 <sts_tof_vl53l0x_SetupSingleShot+0x248>) + 80051e2: f44f 72c8 mov.w r2, #400 ; 0x190 + 80051e6: fb02 3304 mla r3, r2, r4, r3 + 80051ea: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 + 80051ee: 2b00 cmp r3, #0 + 80051f0: d0f2 beq.n 80051d8 <sts_tof_vl53l0x_SetupSingleShot+0x110> + APP_LOG(TS_OFF, VLEVEL_L, "\r\n ###### Starting Range #%u sensor \r\n",i); + 80051f2: 9400 str r4, [sp, #0] + 80051f4: 4b47 ldr r3, [pc, #284] ; (8005314 <sts_tof_vl53l0x_SetupSingleShot+0x24c>) + 80051f6: 2200 movs r2, #0 + 80051f8: 4611 mov r1, r2 + 80051fa: 2001 movs r0, #1 + 80051fc: f011 fc9c bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + status=VL53L0X_StaticInit(&VL53L0XDevs[i]); + 8005200: 4d43 ldr r5, [pc, #268] ; (8005310 <sts_tof_vl53l0x_SetupSingleShot+0x248>) + 8005202: f44f 73c8 mov.w r3, #400 ; 0x190 + 8005206: fb03 5504 mla r5, r3, r4, r5 + 800520a: 4628 mov r0, r5 + 800520c: f000 ff3a bl 8006084 <VL53L0X_StaticInit> + if( status ){ + 8005210: 2800 cmp r0, #0 + 8005212: f47f af69 bne.w 80050e8 <sts_tof_vl53l0x_SetupSingleShot+0x20> + status = VL53L0X_PerformRefCalibration(&VL53L0XDevs[i], &VhvSettings, &PhaseCal); + 8005216: f10d 0216 add.w r2, sp, #22 + 800521a: f10d 0117 add.w r1, sp, #23 + 800521e: 4628 mov r0, r5 + 8005220: f000 fc94 bl 8005b4c <VL53L0X_PerformRefCalibration> + if( status ){ + 8005224: 2800 cmp r0, #0 + 8005226: f47f af66 bne.w 80050f6 <sts_tof_vl53l0x_SetupSingleShot+0x2e> + status = VL53L0X_PerformRefSpadManagement(&VL53L0XDevs[i], &refSpadCount, &isApertureSpads); + 800522a: f10d 020f add.w r2, sp, #15 + 800522e: a904 add r1, sp, #16 + 8005230: 4628 mov r0, r5 + 8005232: f001 f857 bl 80062e4 <VL53L0X_PerformRefSpadManagement> + if( status ){ + 8005236: 2800 cmp r0, #0 + 8005238: f47f af64 bne.w 8005104 <sts_tof_vl53l0x_SetupSingleShot+0x3c> + status = VL53L0X_SetDeviceMode(&VL53L0XDevs[i], VL53L0X_DEVICEMODE_SINGLE_RANGING); // Setup in single ranging mode + 800523c: 2100 movs r1, #0 + 800523e: 4628 mov r0, r5 + 8005240: f000 f926 bl 8005490 <VL53L0X_SetDeviceMode> + if( status ){ + 8005244: 2800 cmp r0, #0 + 8005246: f47f af64 bne.w 8005112 <sts_tof_vl53l0x_SetupSingleShot+0x4a> + status = VL53L0X_SetLimitCheckEnable(&VL53L0XDevs[i], VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, 1); // Enable Sigma limit + 800524a: 2201 movs r2, #1 + 800524c: 2100 movs r1, #0 + 800524e: 4628 mov r0, r5 + 8005250: f000 fa46 bl 80056e0 <VL53L0X_SetLimitCheckEnable> + if( status ){ + 8005254: 2800 cmp r0, #0 + 8005256: f47f af63 bne.w 8005120 <sts_tof_vl53l0x_SetupSingleShot+0x58> + status = VL53L0X_SetLimitCheckEnable(&VL53L0XDevs[i], VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE, 1); // Enable Signa limit + 800525a: 2201 movs r2, #1 + 800525c: 4611 mov r1, r2 + 800525e: 4628 mov r0, r5 + 8005260: f000 fa3e bl 80056e0 <VL53L0X_SetLimitCheckEnable> + if( status ){ + 8005264: 2800 cmp r0, #0 + 8005266: f47f af62 bne.w 800512e <sts_tof_vl53l0x_SetupSingleShot+0x66> + switch(rangingConfig) { + 800526a: 2e01 cmp r6, #1 + 800526c: f43f af66 beq.w 800513c <sts_tof_vl53l0x_SetupSingleShot+0x74> + 8005270: 2e02 cmp r6, #2 + 8005272: f43f af6e beq.w 8005152 <sts_tof_vl53l0x_SetupSingleShot+0x8a> + 8005276: b136 cbz r6, 8005286 <sts_tof_vl53l0x_SetupSingleShot+0x1be> + APP_LOG(TS_OFF, VLEVEL_L, "Not Supported"); + 8005278: 4b27 ldr r3, [pc, #156] ; (8005318 <sts_tof_vl53l0x_SetupSingleShot+0x250>) + 800527a: 2200 movs r2, #0 + 800527c: 4611 mov r1, r2 + 800527e: 2001 movs r0, #1 + 8005280: f011 fc5a bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + break; + 8005284: e76f b.n 8005166 <sts_tof_vl53l0x_SetupSingleShot+0x9e> + switch(rangingConfig) { + 8005286: f04f 0b0e mov.w fp, #14 + 800528a: f04f 0a12 mov.w sl, #18 + 800528e: f248 09e8 movw r9, #33000 ; 0x80e8 + 8005292: f44f 1870 mov.w r8, #3932160 ; 0x3c0000 + 8005296: f641 1799 movw r7, #6553 ; 0x1999 + 800529a: e764 b.n 8005166 <sts_tof_vl53l0x_SetupSingleShot+0x9e> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetLimitCheckValue failed\n"); + 800529c: 4b1f ldr r3, [pc, #124] ; (800531c <sts_tof_vl53l0x_SetupSingleShot+0x254>) + 800529e: 2200 movs r2, #0 + 80052a0: 4611 mov r1, r2 + 80052a2: 2001 movs r0, #1 + 80052a4: f011 fc48 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 80052a8: e765 b.n 8005176 <sts_tof_vl53l0x_SetupSingleShot+0xae> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetLimitCheckValue failed\n"); + 80052aa: 4b1c ldr r3, [pc, #112] ; (800531c <sts_tof_vl53l0x_SetupSingleShot+0x254>) + 80052ac: 2200 movs r2, #0 + 80052ae: 4611 mov r1, r2 + 80052b0: 2001 movs r0, #1 + 80052b2: f011 fc41 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 80052b6: e766 b.n 8005186 <sts_tof_vl53l0x_SetupSingleShot+0xbe> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetMeasurementTimingBudgetMicroSeconds failed\n"); + 80052b8: 4b19 ldr r3, [pc, #100] ; (8005320 <sts_tof_vl53l0x_SetupSingleShot+0x258>) + 80052ba: 2200 movs r2, #0 + 80052bc: 4611 mov r1, r2 + 80052be: 2001 movs r0, #1 + 80052c0: f011 fc3a bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 80052c4: e766 b.n 8005194 <sts_tof_vl53l0x_SetupSingleShot+0xcc> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetVcselPulsePeriod failed\n"); + 80052c6: 4b17 ldr r3, [pc, #92] ; (8005324 <sts_tof_vl53l0x_SetupSingleShot+0x25c>) + 80052c8: 2200 movs r2, #0 + 80052ca: 4611 mov r1, r2 + 80052cc: 2001 movs r0, #1 + 80052ce: f011 fc33 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 80052d2: e767 b.n 80051a4 <sts_tof_vl53l0x_SetupSingleShot+0xdc> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_SetVcselPulsePeriod failed\n"); + 80052d4: 4b13 ldr r3, [pc, #76] ; (8005324 <sts_tof_vl53l0x_SetupSingleShot+0x25c>) + 80052d6: 2200 movs r2, #0 + 80052d8: 4611 mov r1, r2 + 80052da: 2001 movs r0, #1 + 80052dc: f011 fc2c bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 80052e0: e768 b.n 80051b4 <sts_tof_vl53l0x_SetupSingleShot+0xec> + APP_LOG(TS_OFF, VLEVEL_L, "VL53L0X_PerformRefCalibration failed\n"); + 80052e2: 4b06 ldr r3, [pc, #24] ; (80052fc <sts_tof_vl53l0x_SetupSingleShot+0x234>) + 80052e4: 2200 movs r2, #0 + 80052e6: 4611 mov r1, r2 + 80052e8: 2001 movs r0, #1 + 80052ea: f011 fc25 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 80052ee: e76b b.n 80051c8 <sts_tof_vl53l0x_SetupSingleShot+0x100> + + } + } + +} + 80052f0: b007 add sp, #28 + 80052f2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80052f6: bf00 nop + 80052f8: 08018324 .word 0x08018324 + 80052fc: 08018340 .word 0x08018340 + 8005300: 08018368 .word 0x08018368 + 8005304: 08018394 .word 0x08018394 + 8005308: 080183b4 .word 0x080183b4 + 800530c: 00030d40 .word 0x00030d40 + 8005310: 200000bc .word 0x200000bc + 8005314: 080182f8 .word 0x080182f8 + 8005318: 080183d8 .word 0x080183d8 + 800531c: 080183e8 .word 0x080183e8 + 8005320: 0801840c .word 0x0801840c + 8005324: 08018444 .word 0x08018444 + +08005328 <sts_tof_vl53l0x_Sensor_SetNewRange>: + + +/* Store new ranging data into the device structure, apply leaky integrator if needed */ +void sts_tof_vl53l0x_Sensor_SetNewRange(VL53L0X_Dev_t *pDev, VL53L0X_RangingMeasurementData_t *pRange) +{ + if( pRange->RangeStatus == 0 ){ + 8005328: 7e0b ldrb r3, [r1, #24] + 800532a: b9c3 cbnz r3, 800535e <sts_tof_vl53l0x_Sensor_SetNewRange+0x36> + if( pDev->LeakyFirst ){ + 800532c: f8d0 317c ldr.w r3, [r0, #380] ; 0x17c + 8005330: b133 cbz r3, 8005340 <sts_tof_vl53l0x_Sensor_SetNewRange+0x18> + pDev->LeakyFirst = 0; + 8005332: 2300 movs r3, #0 + 8005334: f8c0 317c str.w r3, [r0, #380] ; 0x17c + pDev->LeakyRange = pRange->RangeMilliMeter; + 8005338: 890b ldrh r3, [r1, #8] + 800533a: f8c0 3178 str.w r3, [r0, #376] ; 0x178 + 800533e: 4770 bx lr + } + else{ + pDev->LeakyRange = (pDev->LeakyRange*LeakyFactorFix8 + (256-LeakyFactorFix8)*pRange->RangeMilliMeter)>>8; + 8005340: 4b09 ldr r3, [pc, #36] ; (8005368 <sts_tof_vl53l0x_Sensor_SetNewRange+0x40>) + 8005342: 681a ldr r2, [r3, #0] + 8005344: f5c2 7380 rsb r3, r2, #256 ; 0x100 + 8005348: 8909 ldrh r1, [r1, #8] + 800534a: fb01 f303 mul.w r3, r1, r3 + 800534e: f8d0 1178 ldr.w r1, [r0, #376] ; 0x178 + 8005352: fb02 3301 mla r3, r2, r1, r3 + 8005356: 121b asrs r3, r3, #8 + 8005358: f8c0 3178 str.w r3, [r0, #376] ; 0x178 + 800535c: 4770 bx lr + } + } + else{ + pDev->LeakyFirst = 1; + 800535e: 2301 movs r3, #1 + 8005360: f8c0 317c str.w r3, [r0, #380] ; 0x17c + } +} + 8005364: 4770 bx lr + 8005366: bf00 nop + 8005368: 200000b8 .word 0x200000b8 + +0800536c <STS_TOF_VL53L0X_Range_Process>: + +/* USER CODE END 0 */ + +void STS_TOF_VL53L0X_Range_Process(void) +{ + 800536c: b570 push {r4, r5, r6, lr} + 800536e: b084 sub sp, #16 + int status=0, i; + RangingConfig_e RangingConfig = HIGH_ACCURACY; //HIGH_ACCURACY; //LONG_RANGE; + XWL55_WLE5_53L0X_Init(); + 8005370: f7ff fda8 bl 8004ec4 <XWL55_WLE5_53L0X_Init> + if ((nDevMask ==0) || (nSensorPresent ==0)) + 8005374: 4b38 ldr r3, [pc, #224] ; (8005458 <STS_TOF_VL53L0X_Range_Process+0xec>) + 8005376: 681b ldr r3, [r3, #0] + 8005378: b113 cbz r3, 8005380 <STS_TOF_VL53L0X_Range_Process+0x14> + 800537a: 4b38 ldr r3, [pc, #224] ; (800545c <STS_TOF_VL53L0X_Range_Process+0xf0>) + 800537c: 681b ldr r3, [r3, #0] + 800537e: b953 cbnz r3, 8005396 <STS_TOF_VL53L0X_Range_Process+0x2a> + { + nSensorPresent = sts_tof_vl53l0x_DetectSensors(); // confirm sensor online + 8005380: f7ff fdfa bl 8004f78 <sts_tof_vl53l0x_DetectSensors> + 8005384: 4b35 ldr r3, [pc, #212] ; (800545c <STS_TOF_VL53L0X_Range_Process+0xf0>) + 8005386: 6018 str r0, [r3, #0] + APP_LOG(TS_OFF, VLEVEL_L, "\r\n %u pcs sensor(s) online \r\n", nSensorPresent); + 8005388: 9000 str r0, [sp, #0] + 800538a: 4b35 ldr r3, [pc, #212] ; (8005460 <STS_TOF_VL53L0X_Range_Process+0xf4>) + 800538c: 2200 movs r2, #0 + 800538e: 4611 mov r1, r2 + 8005390: 2001 movs r0, #1 + 8005392: f011 fbd1 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + } + sts_tof_distance_data[0] = 0; + 8005396: 4b33 ldr r3, [pc, #204] ; (8005464 <STS_TOF_VL53L0X_Range_Process+0xf8>) + 8005398: 2200 movs r2, #0 + 800539a: 601a str r2, [r3, #0] + sts_tof_distance_data[1] = 0; + 800539c: 605a str r2, [r3, #4] + sts_tof_distance_data[2] = 0; + 800539e: 609a str r2, [r3, #8] + + if (nSensorPresent > 0) + 80053a0: 4b2e ldr r3, [pc, #184] ; (800545c <STS_TOF_VL53L0X_Range_Process+0xf0>) + 80053a2: 681b ldr r3, [r3, #0] + 80053a4: 4293 cmp r3, r2 + 80053a6: dc01 bgt.n 80053ac <STS_TOF_VL53L0X_Range_Process+0x40> + APP_LOG(TS_OFF, VLEVEL_L, "\r\n## Measured Range: \r\nTOF #0 = %4u mm, \r\nTOF #1 = %4u mm, \r\nTOF #2 = %4u mm\r\n", + (int)sts_tof_distance_data[0],(int)sts_tof_distance_data[1],(int)sts_tof_distance_data[2]); + } + + } // nSensorPresent >0 +} + 80053a8: b004 add sp, #16 + 80053aa: bd70 pop {r4, r5, r6, pc} + sts_tof_vl53l0x_SetupSingleShot(RangingConfig); + 80053ac: 2002 movs r0, #2 + 80053ae: f7ff fe8b bl 80050c8 <sts_tof_vl53l0x_SetupSingleShot> + sts_tof_distance_data[0]=0; + 80053b2: 4b2c ldr r3, [pc, #176] ; (8005464 <STS_TOF_VL53L0X_Range_Process+0xf8>) + 80053b4: 2400 movs r4, #0 + 80053b6: 601c str r4, [r3, #0] + sts_tof_distance_data[1]=0; + 80053b8: 605c str r4, [r3, #4] + sts_tof_distance_data[2]=0; + 80053ba: 609c str r4, [r3, #8] + sensor_data_ready = 0 ; + 80053bc: 4b2a ldr r3, [pc, #168] ; (8005468 <STS_TOF_VL53L0X_Range_Process+0xfc>) + 80053be: 701c strb r4, [r3, #0] + for (i=0; i< MAX_TOF_COUNT; i++) + 80053c0: e00b b.n 80053da <STS_TOF_VL53L0X_Range_Process+0x6e> + APP_LOG(TS_OFF, VLEVEL_L,"\r\n#%u sensor ERR code = %04u\r\n",i, ERR_DEMO_RANGE_ONE); + 80053c2: 2001 movs r0, #1 + 80053c4: 9001 str r0, [sp, #4] + 80053c6: 9400 str r4, [sp, #0] + 80053c8: 4b28 ldr r3, [pc, #160] ; (800546c <STS_TOF_VL53L0X_Range_Process+0x100>) + 80053ca: 2200 movs r2, #0 + 80053cc: 4611 mov r1, r2 + 80053ce: f011 fbb3 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + HAL_Delay(30); + 80053d2: 201e movs r0, #30 + 80053d4: f7fd fc6c bl 8002cb0 <HAL_Delay> + for (i=0; i< MAX_TOF_COUNT; i++) + 80053d8: 3401 adds r4, #1 + 80053da: 2c02 cmp r4, #2 + 80053dc: dc2a bgt.n 8005434 <STS_TOF_VL53L0X_Range_Process+0xc8> + if (VL53L0XDevs[i].Present ==1) + 80053de: 4b24 ldr r3, [pc, #144] ; (8005470 <STS_TOF_VL53L0X_Range_Process+0x104>) + 80053e0: f44f 72c8 mov.w r2, #400 ; 0x190 + 80053e4: fb02 3304 mla r3, r2, r4, r3 + 80053e8: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 + 80053ec: 2b01 cmp r3, #1 + 80053ee: d1f0 bne.n 80053d2 <STS_TOF_VL53L0X_Range_Process+0x66> + status = VL53L0X_PerformSingleRangingMeasurement(&VL53L0XDevs[i], &RangingMeasurementData); + 80053f0: 4d1f ldr r5, [pc, #124] ; (8005470 <STS_TOF_VL53L0X_Range_Process+0x104>) + 80053f2: fb02 5504 mla r5, r2, r4, r5 + 80053f6: 491f ldr r1, [pc, #124] ; (8005474 <STS_TOF_VL53L0X_Range_Process+0x108>) + 80053f8: 4628 mov r0, r5 + 80053fa: f000 fd88 bl 8005f0e <VL53L0X_PerformSingleRangingMeasurement> + if( status ==0 ) + 80053fe: 2800 cmp r0, #0 + 8005400: d1e7 bne.n 80053d2 <STS_TOF_VL53L0X_Range_Process+0x66> + sts_tof_vl53l0x_Sensor_SetNewRange(&VL53L0XDevs[i],&RangingMeasurementData); + 8005402: 4e1c ldr r6, [pc, #112] ; (8005474 <STS_TOF_VL53L0X_Range_Process+0x108>) + 8005404: 4631 mov r1, r6 + 8005406: 4628 mov r0, r5 + 8005408: f7ff ff8e bl 8005328 <sts_tof_vl53l0x_Sensor_SetNewRange> + if( RangingMeasurementData.RangeStatus == 0 ) + 800540c: 7e33 ldrb r3, [r6, #24] + 800540e: 2b00 cmp r3, #0 + 8005410: d1d7 bne.n 80053c2 <STS_TOF_VL53L0X_Range_Process+0x56> + sts_tof_distance_data[i] = (int)VL53L0XDevs[i].LeakyRange; + 8005412: f8d5 2178 ldr.w r2, [r5, #376] ; 0x178 + 8005416: 4b13 ldr r3, [pc, #76] ; (8005464 <STS_TOF_VL53L0X_Range_Process+0xf8>) + 8005418: f843 2024 str.w r2, [r3, r4, lsl #2] + nDevMask |= (1 << i); + 800541c: 2201 movs r2, #1 + 800541e: 40a2 lsls r2, r4 + 8005420: 490d ldr r1, [pc, #52] ; (8005458 <STS_TOF_VL53L0X_Range_Process+0xec>) + 8005422: 680b ldr r3, [r1, #0] + 8005424: 4313 orrs r3, r2 + 8005426: 600b str r3, [r1, #0] + sensor_data_ready |= 1; + 8005428: 4a0f ldr r2, [pc, #60] ; (8005468 <STS_TOF_VL53L0X_Range_Process+0xfc>) + 800542a: 7813 ldrb r3, [r2, #0] + 800542c: f043 0301 orr.w r3, r3, #1 + 8005430: 7013 strb r3, [r2, #0] + 8005432: e7ce b.n 80053d2 <STS_TOF_VL53L0X_Range_Process+0x66> + if (sensor_data_ready != 0) { + 8005434: 4b0c ldr r3, [pc, #48] ; (8005468 <STS_TOF_VL53L0X_Range_Process+0xfc>) + 8005436: 781b ldrb r3, [r3, #0] + 8005438: 2b00 cmp r3, #0 + 800543a: d0b5 beq.n 80053a8 <STS_TOF_VL53L0X_Range_Process+0x3c> + APP_LOG(TS_OFF, VLEVEL_L, "\r\n## Measured Range: \r\nTOF #0 = %4u mm, \r\nTOF #1 = %4u mm, \r\nTOF #2 = %4u mm\r\n", + 800543c: 4b09 ldr r3, [pc, #36] ; (8005464 <STS_TOF_VL53L0X_Range_Process+0xf8>) + 800543e: 681a ldr r2, [r3, #0] + 8005440: 6859 ldr r1, [r3, #4] + 8005442: 689b ldr r3, [r3, #8] + 8005444: 9302 str r3, [sp, #8] + 8005446: 9101 str r1, [sp, #4] + 8005448: 9200 str r2, [sp, #0] + 800544a: 4b0b ldr r3, [pc, #44] ; (8005478 <STS_TOF_VL53L0X_Range_Process+0x10c>) + 800544c: 2200 movs r2, #0 + 800544e: 4611 mov r1, r2 + 8005450: 2001 movs r0, #1 + 8005452: f011 fb71 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8005456: e7a7 b.n 80053a8 <STS_TOF_VL53L0X_Range_Process+0x3c> + 8005458: 20000ef4 .word 0x20000ef4 + 800545c: 20000efc .word 0x20000efc + 8005460: 08018468 .word 0x08018468 + 8005464: 20000f00 .word 0x20000f00 + 8005468: 20000e54 .word 0x20000e54 + 800546c: 08018488 .word 0x08018488 + 8005470: 200000bc .word 0x200000bc + 8005474: 20000ed8 .word 0x20000ed8 + 8005478: 080184ac .word 0x080184ac + +0800547c <VL53L0X_GetOffsetCalibrationDataMicroMeter>: + return Status; +} + +VL53L0X_Error VL53L0X_GetOffsetCalibrationDataMicroMeter(VL53L0X_DEV Dev, + int32_t *pOffsetCalibrationDataMicroMeter) +{ + 800547c: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + Status = VL53L0X_get_offset_calibration_data_micro_meter(Dev, + 800547e: f000 ff35 bl 80062ec <VL53L0X_get_offset_calibration_data_micro_meter> + pOffsetCalibrationDataMicroMeter); + + LOG_FUNCTION_END(Status); + return Status; +} + 8005482: bd08 pop {r3, pc} + +08005484 <VL53L0X_SetDeviceAddress>: + +/* End Group PAL General Functions */ + +/* Group PAL Init Functions */ +VL53L0X_Error VL53L0X_SetDeviceAddress(VL53L0X_DEV Dev, uint8_t DeviceAddress) +{ + 8005484: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_I2C_SLAVE_DEVICE_ADDRESS, + 8005486: 084a lsrs r2, r1, #1 + 8005488: 218a movs r1, #138 ; 0x8a + 800548a: f002 fde7 bl 800805c <VL53L0X_WrByte> + DeviceAddress / 2); + + LOG_FUNCTION_END(Status); + return Status; +} + 800548e: bd08 pop {r3, pc} + +08005490 <VL53L0X_SetDeviceMode>: +{ + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + + LOG_FUNCTION_START("%d", (int)DeviceMode); + + switch (DeviceMode) { + 8005490: 2915 cmp r1, #21 + 8005492: d80a bhi.n 80054aa <VL53L0X_SetDeviceMode+0x1a> + 8005494: 4b06 ldr r3, [pc, #24] ; (80054b0 <VL53L0X_SetDeviceMode+0x20>) + 8005496: 40cb lsrs r3, r1 + 8005498: f013 0f01 tst.w r3, #1 + 800549c: d102 bne.n 80054a4 <VL53L0X_SetDeviceMode+0x14> + 800549e: f06f 0007 mvn.w r0, #7 + Status = VL53L0X_ERROR_MODE_NOT_SUPPORTED; + } + + LOG_FUNCTION_END(Status); + return Status; +} + 80054a2: 4770 bx lr + VL53L0X_SETPARAMETERFIELD(Dev, DeviceMode, DeviceMode); + 80054a4: 7401 strb r1, [r0, #16] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80054a6: 2000 movs r0, #0 + break; + 80054a8: 4770 bx lr + switch (DeviceMode) { + 80054aa: f06f 0007 mvn.w r0, #7 + 80054ae: 4770 bx lr + 80054b0: 0030000b .word 0x0030000b + +080054b4 <VL53L0X_GetDeviceMode>: + VL53L0X_DeviceModes *pDeviceMode) +{ + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + VL53L0X_GETPARAMETERFIELD(Dev, DeviceMode, *pDeviceMode); + 80054b4: 7c03 ldrb r3, [r0, #16] + 80054b6: 700b strb r3, [r1, #0] + + LOG_FUNCTION_END(Status); + return Status; +} + 80054b8: 2000 movs r0, #0 + 80054ba: 4770 bx lr + +080054bc <VL53L0X_GetFractionEnable>: + LOG_FUNCTION_END(Status); + return Status; +} + +VL53L0X_Error VL53L0X_GetFractionEnable(VL53L0X_DEV Dev, uint8_t *pEnabled) +{ + 80054bc: b510 push {r4, lr} + 80054be: 460c mov r4, r1 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + Status = VL53L0X_RdByte(Dev, VL53L0X_REG_SYSTEM_RANGE_CONFIG, pEnabled); + 80054c0: 460a mov r2, r1 + 80054c2: 2109 movs r1, #9 + 80054c4: f002 fdec bl 80080a0 <VL53L0X_RdByte> + + if (Status == VL53L0X_ERROR_NONE) + 80054c8: b918 cbnz r0, 80054d2 <VL53L0X_GetFractionEnable+0x16> + *pEnabled = (*pEnabled & 1); + 80054ca: 7823 ldrb r3, [r4, #0] + 80054cc: f003 0301 and.w r3, r3, #1 + 80054d0: 7023 strb r3, [r4, #0] + + LOG_FUNCTION_END(Status); + return Status; +} + 80054d2: bd10 pop {r4, pc} + +080054d4 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds>: + return Status; +} + +VL53L0X_Error VL53L0X_SetMeasurementTimingBudgetMicroSeconds(VL53L0X_DEV Dev, + uint32_t MeasurementTimingBudgetMicroSeconds) +{ + 80054d4: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + Status = VL53L0X_set_measurement_timing_budget_micro_seconds(Dev, + 80054d6: f002 f929 bl 800772c <VL53L0X_set_measurement_timing_budget_micro_seconds> + MeasurementTimingBudgetMicroSeconds); + + LOG_FUNCTION_END(Status); + + return Status; +} + 80054da: bd08 pop {r3, pc} + +080054dc <VL53L0X_GetMeasurementTimingBudgetMicroSeconds>: + +VL53L0X_Error VL53L0X_GetMeasurementTimingBudgetMicroSeconds(VL53L0X_DEV Dev, + uint32_t *pMeasurementTimingBudgetMicroSeconds) +{ + 80054dc: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + Status = VL53L0X_get_measurement_timing_budget_micro_seconds(Dev, + 80054de: f002 f998 bl 8007812 <VL53L0X_get_measurement_timing_budget_micro_seconds> + pMeasurementTimingBudgetMicroSeconds); + + LOG_FUNCTION_END(Status); + return Status; +} + 80054e2: bd08 pop {r3, pc} + +080054e4 <VL53L0X_SetVcselPulsePeriod>: + +VL53L0X_Error VL53L0X_SetVcselPulsePeriod(VL53L0X_DEV Dev, + VL53L0X_VcselPeriod VcselPeriodType, uint8_t VCSELPulsePeriodPCLK) +{ + 80054e4: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + Status = VL53L0X_set_vcsel_pulse_period(Dev, VcselPeriodType, + 80054e6: f001 ff74 bl 80073d2 <VL53L0X_set_vcsel_pulse_period> + VCSELPulsePeriodPCLK); + + LOG_FUNCTION_END(Status); + return Status; +} + 80054ea: bd08 pop {r3, pc} + +080054ec <VL53L0X_GetVcselPulsePeriod>: + +VL53L0X_Error VL53L0X_GetVcselPulsePeriod(VL53L0X_DEV Dev, + VL53L0X_VcselPeriod VcselPeriodType, uint8_t *pVCSELPulsePeriodPCLK) +{ + 80054ec: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + Status = VL53L0X_get_vcsel_pulse_period(Dev, VcselPeriodType, + 80054ee: f002 f8fd bl 80076ec <VL53L0X_get_vcsel_pulse_period> + pVCSELPulsePeriodPCLK); + + LOG_FUNCTION_END(Status); + return Status; +} + 80054f2: bd08 pop {r3, pc} + +080054f4 <VL53L0X_SetSequenceStepEnable>: + +VL53L0X_Error VL53L0X_SetSequenceStepEnable(VL53L0X_DEV Dev, + VL53L0X_SequenceStepId SequenceStepId, uint8_t SequenceStepEnabled) +{ + 80054f4: b5f0 push {r4, r5, r6, r7, lr} + 80054f6: b083 sub sp, #12 + 80054f8: 4605 mov r5, r0 + 80054fa: 460f mov r7, r1 + 80054fc: 4616 mov r6, r2 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t SequenceConfig = 0; + 80054fe: 2300 movs r3, #0 + 8005500: f88d 3007 strb.w r3, [sp, #7] + uint8_t SequenceConfigNew = 0; + uint32_t MeasurementTimingBudgetMicroSeconds; + LOG_FUNCTION_START(""); + + Status = VL53L0X_RdByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, + 8005504: f10d 0207 add.w r2, sp, #7 + 8005508: 2101 movs r1, #1 + 800550a: f002 fdc9 bl 80080a0 <VL53L0X_RdByte> + &SequenceConfig); + + SequenceConfigNew = SequenceConfig; + 800550e: f89d 3007 ldrb.w r3, [sp, #7] + + if (Status == VL53L0X_ERROR_NONE) { + 8005512: 4604 mov r4, r0 + 8005514: bb68 cbnz r0, 8005572 <VL53L0X_SetSequenceStepEnable+0x7e> + if (SequenceStepEnabled == 1) { + 8005516: 2e01 cmp r6, #1 + 8005518: d006 beq.n 8005528 <VL53L0X_SetSequenceStepEnable+0x34> + Status = VL53L0X_ERROR_INVALID_PARAMS; + } + } else { + /* Disable requested sequence step + */ + switch (SequenceStepId) { + 800551a: 2f04 cmp r7, #4 + 800551c: d838 bhi.n 8005590 <VL53L0X_SetSequenceStepEnable+0x9c> + 800551e: e8df f007 tbb [pc, r7] + 8005522: 1c19 .short 0x1c19 + 8005524: 221f .short 0x221f + 8005526: 25 .byte 0x25 + 8005527: 00 .byte 0x00 + switch (SequenceStepId) { + 8005528: 2f04 cmp r7, #4 + 800552a: d82d bhi.n 8005588 <VL53L0X_SetSequenceStepEnable+0x94> + 800552c: e8df f007 tbb [pc, r7] + 8005530: 0c090603 .word 0x0c090603 + 8005534: 0f .byte 0x0f + 8005535: 00 .byte 0x00 + SequenceConfigNew |= 0x10; + 8005536: f043 0610 orr.w r6, r3, #16 + break; + 800553a: e01b b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + SequenceConfigNew |= 0x28; + 800553c: f043 0628 orr.w r6, r3, #40 ; 0x28 + break; + 8005540: e018 b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + SequenceConfigNew |= 0x04; + 8005542: f043 0604 orr.w r6, r3, #4 + break; + 8005546: e015 b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + SequenceConfigNew |= 0x40; + 8005548: f043 0640 orr.w r6, r3, #64 ; 0x40 + break; + 800554c: e012 b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + SequenceConfigNew |= 0x80; + 800554e: f043 0680 orr.w r6, r3, #128 ; 0x80 + break; + 8005552: e00f b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + case VL53L0X_SEQUENCESTEP_TCC: + SequenceConfigNew &= 0xef; + 8005554: f003 06ef and.w r6, r3, #239 ; 0xef + break; + 8005558: e00c b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + case VL53L0X_SEQUENCESTEP_DSS: + SequenceConfigNew &= 0xd7; + 800555a: f003 06d7 and.w r6, r3, #215 ; 0xd7 + break; + 800555e: e009 b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + case VL53L0X_SEQUENCESTEP_MSRC: + SequenceConfigNew &= 0xfb; + 8005560: f003 06fb and.w r6, r3, #251 ; 0xfb + break; + 8005564: e006 b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + case VL53L0X_SEQUENCESTEP_PRE_RANGE: + SequenceConfigNew &= 0xbf; + 8005566: f003 06bf and.w r6, r3, #191 ; 0xbf + break; + 800556a: e003 b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + case VL53L0X_SEQUENCESTEP_FINAL_RANGE: + SequenceConfigNew &= 0x7f; + 800556c: f003 067f and.w r6, r3, #127 ; 0x7f + break; + 8005570: e000 b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + SequenceConfigNew = SequenceConfig; + 8005572: 461e mov r6, r3 + Status = VL53L0X_ERROR_INVALID_PARAMS; + } + } + } + + if (SequenceConfigNew != SequenceConfig) { + 8005574: 429e cmp r6, r3 + 8005576: d004 beq.n 8005582 <VL53L0X_SetSequenceStepEnable+0x8e> + /* Apply New Setting */ + if (Status == VL53L0X_ERROR_NONE) { + 8005578: b174 cbz r4, 8005598 <VL53L0X_SetSequenceStepEnable+0xa4> + Status = VL53L0X_WrByte(Dev, + VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, SequenceConfigNew); + } + if (Status == VL53L0X_ERROR_NONE) + 800557a: b90c cbnz r4, 8005580 <VL53L0X_SetSequenceStepEnable+0x8c> + PALDevDataSet(Dev, SequenceConfig, SequenceConfigNew); + 800557c: f885 6130 strb.w r6, [r5, #304] ; 0x130 + + + /* Recalculate timing budget */ + if (Status == VL53L0X_ERROR_NONE) { + 8005580: b18c cbz r4, 80055a6 <VL53L0X_SetSequenceStepEnable+0xb2> + } + + LOG_FUNCTION_END(Status); + + return Status; +} + 8005582: 4620 mov r0, r4 + 8005584: b003 add sp, #12 + 8005586: bdf0 pop {r4, r5, r6, r7, pc} + switch (SequenceStepId) { + 8005588: 461e mov r6, r3 + 800558a: f06f 0403 mvn.w r4, #3 + 800558e: e7f1 b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + switch (SequenceStepId) { + 8005590: 461e mov r6, r3 + 8005592: f06f 0403 mvn.w r4, #3 + 8005596: e7ed b.n 8005574 <VL53L0X_SetSequenceStepEnable+0x80> + Status = VL53L0X_WrByte(Dev, + 8005598: 4632 mov r2, r6 + 800559a: 2101 movs r1, #1 + 800559c: 4628 mov r0, r5 + 800559e: f002 fd5d bl 800805c <VL53L0X_WrByte> + 80055a2: 4604 mov r4, r0 + 80055a4: e7e9 b.n 800557a <VL53L0X_SetSequenceStepEnable+0x86> + VL53L0X_SetMeasurementTimingBudgetMicroSeconds(Dev, + 80055a6: 6969 ldr r1, [r5, #20] + 80055a8: 4628 mov r0, r5 + 80055aa: f7ff ff93 bl 80054d4 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds> + 80055ae: e7e8 b.n 8005582 <VL53L0X_SetSequenceStepEnable+0x8e> + +080055b0 <sequence_step_enabled>: +VL53L0X_Error sequence_step_enabled(VL53L0X_DEV Dev, + VL53L0X_SequenceStepId SequenceStepId, uint8_t SequenceConfig, + uint8_t *pSequenceStepEnabled) +{ + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + *pSequenceStepEnabled = 0; + 80055b0: 2000 movs r0, #0 + 80055b2: 7018 strb r0, [r3, #0] + LOG_FUNCTION_START(""); + + switch (SequenceStepId) { + 80055b4: 2904 cmp r1, #4 + 80055b6: d81c bhi.n 80055f2 <sequence_step_enabled+0x42> + 80055b8: e8df f001 tbb [pc, r1] + 80055bc: 120d0803 .word 0x120d0803 + 80055c0: 17 .byte 0x17 + 80055c1: 00 .byte 0x00 + case VL53L0X_SEQUENCESTEP_TCC: + *pSequenceStepEnabled = (SequenceConfig & 0x10) >> 4; + 80055c2: f3c2 1200 ubfx r2, r2, #4, #1 + 80055c6: 701a strb r2, [r3, #0] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80055c8: 2000 movs r0, #0 + break; + 80055ca: 4770 bx lr + case VL53L0X_SEQUENCESTEP_DSS: + *pSequenceStepEnabled = (SequenceConfig & 0x08) >> 3; + 80055cc: f3c2 02c0 ubfx r2, r2, #3, #1 + 80055d0: 701a strb r2, [r3, #0] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80055d2: 2000 movs r0, #0 + break; + 80055d4: 4770 bx lr + case VL53L0X_SEQUENCESTEP_MSRC: + *pSequenceStepEnabled = (SequenceConfig & 0x04) >> 2; + 80055d6: f3c2 0280 ubfx r2, r2, #2, #1 + 80055da: 701a strb r2, [r3, #0] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80055dc: 2000 movs r0, #0 + break; + 80055de: 4770 bx lr + case VL53L0X_SEQUENCESTEP_PRE_RANGE: + *pSequenceStepEnabled = (SequenceConfig & 0x40) >> 6; + 80055e0: f3c2 1280 ubfx r2, r2, #6, #1 + 80055e4: 701a strb r2, [r3, #0] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80055e6: 2000 movs r0, #0 + break; + 80055e8: 4770 bx lr + case VL53L0X_SEQUENCESTEP_FINAL_RANGE: + *pSequenceStepEnabled = (SequenceConfig & 0x80) >> 7; + 80055ea: 09d2 lsrs r2, r2, #7 + 80055ec: 701a strb r2, [r3, #0] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80055ee: 2000 movs r0, #0 + break; + 80055f0: 4770 bx lr + switch (SequenceStepId) { + 80055f2: f06f 0003 mvn.w r0, #3 + Status = VL53L0X_ERROR_INVALID_PARAMS; + } + + LOG_FUNCTION_END(Status); + return Status; +} + 80055f6: 4770 bx lr + +080055f8 <VL53L0X_GetSequenceStepEnables>: + return Status; +} + +VL53L0X_Error VL53L0X_GetSequenceStepEnables(VL53L0X_DEV Dev, + VL53L0X_SchedulerSequenceSteps_t *pSchedulerSequenceSteps) +{ + 80055f8: b530 push {r4, r5, lr} + 80055fa: b083 sub sp, #12 + 80055fc: 4604 mov r4, r0 + 80055fe: 460d mov r5, r1 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t SequenceConfig = 0; + 8005600: 2300 movs r3, #0 + 8005602: f88d 3007 strb.w r3, [sp, #7] + LOG_FUNCTION_START(""); + + Status = VL53L0X_RdByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, + 8005606: f10d 0207 add.w r2, sp, #7 + 800560a: 2101 movs r1, #1 + 800560c: f002 fd48 bl 80080a0 <VL53L0X_RdByte> + &SequenceConfig); + + if (Status == VL53L0X_ERROR_NONE) { + 8005610: b128 cbz r0, 800561e <VL53L0X_GetSequenceStepEnables+0x26> + Status = sequence_step_enabled(Dev, + VL53L0X_SEQUENCESTEP_TCC, SequenceConfig, + &pSchedulerSequenceSteps->TccOn); + } + if (Status == VL53L0X_ERROR_NONE) { + 8005612: b160 cbz r0, 800562e <VL53L0X_GetSequenceStepEnables+0x36> + Status = sequence_step_enabled(Dev, + VL53L0X_SEQUENCESTEP_DSS, SequenceConfig, + &pSchedulerSequenceSteps->DssOn); + } + if (Status == VL53L0X_ERROR_NONE) { + 8005614: b198 cbz r0, 800563e <VL53L0X_GetSequenceStepEnables+0x46> + Status = sequence_step_enabled(Dev, + VL53L0X_SEQUENCESTEP_MSRC, SequenceConfig, + &pSchedulerSequenceSteps->MsrcOn); + } + if (Status == VL53L0X_ERROR_NONE) { + 8005616: b1d0 cbz r0, 800564e <VL53L0X_GetSequenceStepEnables+0x56> + Status = sequence_step_enabled(Dev, + VL53L0X_SEQUENCESTEP_PRE_RANGE, SequenceConfig, + &pSchedulerSequenceSteps->PreRangeOn); + } + if (Status == VL53L0X_ERROR_NONE) { + 8005618: b308 cbz r0, 800565e <VL53L0X_GetSequenceStepEnables+0x66> + &pSchedulerSequenceSteps->FinalRangeOn); + } + + LOG_FUNCTION_END(Status); + return Status; +} + 800561a: b003 add sp, #12 + 800561c: bd30 pop {r4, r5, pc} + Status = sequence_step_enabled(Dev, + 800561e: 462b mov r3, r5 + 8005620: f89d 2007 ldrb.w r2, [sp, #7] + 8005624: 2100 movs r1, #0 + 8005626: 4620 mov r0, r4 + 8005628: f7ff ffc2 bl 80055b0 <sequence_step_enabled> + 800562c: e7f1 b.n 8005612 <VL53L0X_GetSequenceStepEnables+0x1a> + Status = sequence_step_enabled(Dev, + 800562e: 1cab adds r3, r5, #2 + 8005630: f89d 2007 ldrb.w r2, [sp, #7] + 8005634: 2101 movs r1, #1 + 8005636: 4620 mov r0, r4 + 8005638: f7ff ffba bl 80055b0 <sequence_step_enabled> + 800563c: e7ea b.n 8005614 <VL53L0X_GetSequenceStepEnables+0x1c> + Status = sequence_step_enabled(Dev, + 800563e: 1c6b adds r3, r5, #1 + 8005640: f89d 2007 ldrb.w r2, [sp, #7] + 8005644: 2102 movs r1, #2 + 8005646: 4620 mov r0, r4 + 8005648: f7ff ffb2 bl 80055b0 <sequence_step_enabled> + 800564c: e7e3 b.n 8005616 <VL53L0X_GetSequenceStepEnables+0x1e> + Status = sequence_step_enabled(Dev, + 800564e: 1ceb adds r3, r5, #3 + 8005650: f89d 2007 ldrb.w r2, [sp, #7] + 8005654: 2103 movs r1, #3 + 8005656: 4620 mov r0, r4 + 8005658: f7ff ffaa bl 80055b0 <sequence_step_enabled> + 800565c: e7dc b.n 8005618 <VL53L0X_GetSequenceStepEnables+0x20> + Status = sequence_step_enabled(Dev, + 800565e: 1d2b adds r3, r5, #4 + 8005660: f89d 2007 ldrb.w r2, [sp, #7] + 8005664: 2104 movs r1, #4 + 8005666: 4620 mov r0, r4 + 8005668: f7ff ffa2 bl 80055b0 <sequence_step_enabled> + 800566c: e7d5 b.n 800561a <VL53L0X_GetSequenceStepEnables+0x22> + +0800566e <VL53L0X_GetInterMeasurementPeriodMilliSeconds>: + return Status; +} + +VL53L0X_Error VL53L0X_GetInterMeasurementPeriodMilliSeconds(VL53L0X_DEV Dev, + uint32_t *pInterMeasurementPeriodMilliSeconds) +{ + 800566e: b530 push {r4, r5, lr} + 8005670: b083 sub sp, #12 + 8005672: 4605 mov r5, r0 + 8005674: 460c mov r4, r1 + uint16_t osc_calibrate_val; + uint32_t IMPeriodMilliSeconds; + + LOG_FUNCTION_START(""); + + Status = VL53L0X_RdWord(Dev, VL53L0X_REG_OSC_CALIBRATE_VAL, + 8005676: f10d 0206 add.w r2, sp, #6 + 800567a: 21f8 movs r1, #248 ; 0xf8 + 800567c: f002 fd44 bl 8008108 <VL53L0X_RdWord> + &osc_calibrate_val); + + if (Status == VL53L0X_ERROR_NONE) { + 8005680: b158 cbz r0, 800569a <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x2c> + Status = VL53L0X_RdDWord(Dev, + VL53L0X_REG_SYSTEM_INTERMEASUREMENT_PERIOD, + &IMPeriodMilliSeconds); + } + + if (Status == VL53L0X_ERROR_NONE) { + 8005682: b940 cbnz r0, 8005696 <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x28> + if (osc_calibrate_val != 0) { + 8005684: f8bd 3006 ldrh.w r3, [sp, #6] + 8005688: b11b cbz r3, 8005692 <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x24> + *pInterMeasurementPeriodMilliSeconds = + IMPeriodMilliSeconds / osc_calibrate_val; + 800568a: 9a00 ldr r2, [sp, #0] + 800568c: fbb2 f2f3 udiv r2, r2, r3 + *pInterMeasurementPeriodMilliSeconds = + 8005690: 6022 str r2, [r4, #0] + } + VL53L0X_SETPARAMETERFIELD(Dev, + 8005692: 6823 ldr r3, [r4, #0] + 8005694: 61ab str r3, [r5, #24] + *pInterMeasurementPeriodMilliSeconds); + } + + LOG_FUNCTION_END(Status); + return Status; +} + 8005696: b003 add sp, #12 + 8005698: bd30 pop {r4, r5, pc} + Status = VL53L0X_RdDWord(Dev, + 800569a: 466a mov r2, sp + 800569c: 2104 movs r1, #4 + 800569e: 4628 mov r0, r5 + 80056a0: f002 fd54 bl 800814c <VL53L0X_RdDWord> + 80056a4: e7ed b.n 8005682 <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x14> + +080056a6 <VL53L0X_GetXTalkCompensationEnable>: +{ + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t Temp8; + LOG_FUNCTION_START(""); + + VL53L0X_GETPARAMETERFIELD(Dev, XTalkCompensationEnable, Temp8); + 80056a6: 7f03 ldrb r3, [r0, #28] + *pXTalkCompensationEnable = Temp8; + 80056a8: 700b strb r3, [r1, #0] + + LOG_FUNCTION_END(Status); + return Status; +} + 80056aa: 2000 movs r0, #0 + 80056ac: 4770 bx lr + +080056ae <VL53L0X_GetXTalkCompensationRateMegaCps>: + return Status; +} + +VL53L0X_Error VL53L0X_GetXTalkCompensationRateMegaCps(VL53L0X_DEV Dev, + FixPoint1616_t *pXTalkCompensationRateMegaCps) +{ + 80056ae: b530 push {r4, r5, lr} + 80056b0: b083 sub sp, #12 + 80056b2: 4604 mov r4, r0 + 80056b4: 460d mov r5, r1 + uint16_t Value; + FixPoint1616_t TempFix1616; + + LOG_FUNCTION_START(""); + + Status = VL53L0X_RdWord(Dev, + 80056b6: f10d 0206 add.w r2, sp, #6 + 80056ba: 2120 movs r1, #32 + 80056bc: f002 fd24 bl 8008108 <VL53L0X_RdWord> + VL53L0X_REG_CROSSTALK_COMPENSATION_PEAK_RATE_MCPS, (uint16_t *)&Value); + if (Status == VL53L0X_ERROR_NONE) { + 80056c0: b930 cbnz r0, 80056d0 <VL53L0X_GetXTalkCompensationRateMegaCps+0x22> + if (Value == 0) { + 80056c2: f8bd 3006 ldrh.w r3, [sp, #6] + 80056c6: b92b cbnz r3, 80056d4 <VL53L0X_GetXTalkCompensationRateMegaCps+0x26> + /* the Xtalk is disabled return value from memory */ + VL53L0X_GETPARAMETERFIELD(Dev, + 80056c8: 6a23 ldr r3, [r4, #32] + XTalkCompensationRateMegaCps, TempFix1616); + *pXTalkCompensationRateMegaCps = TempFix1616; + 80056ca: 602b str r3, [r5, #0] + VL53L0X_SETPARAMETERFIELD(Dev, XTalkCompensationEnable, + 80056cc: 2300 movs r3, #0 + 80056ce: 7723 strb r3, [r4, #28] + } + } + + LOG_FUNCTION_END(Status); + return Status; +} + 80056d0: b003 add sp, #12 + 80056d2: bd30 pop {r4, r5, pc} + TempFix1616 = VL53L0X_FIXPOINT313TOFIXPOINT1616(Value); + 80056d4: 00db lsls r3, r3, #3 + *pXTalkCompensationRateMegaCps = TempFix1616; + 80056d6: 602b str r3, [r5, #0] + VL53L0X_SETPARAMETERFIELD(Dev, + 80056d8: 6223 str r3, [r4, #32] + VL53L0X_SETPARAMETERFIELD(Dev, XTalkCompensationEnable, + 80056da: 2301 movs r3, #1 + 80056dc: 7723 strb r3, [r4, #28] + 80056de: e7f7 b.n 80056d0 <VL53L0X_GetXTalkCompensationRateMegaCps+0x22> + +080056e0 <VL53L0X_SetLimitCheckEnable>: + uint8_t LimitCheckDisable = 0; + uint8_t Temp8; + + LOG_FUNCTION_START(""); + + if (LimitCheckId >= VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS) { + 80056e0: 2905 cmp r1, #5 + 80056e2: d842 bhi.n 800576a <VL53L0X_SetLimitCheckEnable+0x8a> +{ + 80056e4: b570 push {r4, r5, r6, lr} + 80056e6: 4605 mov r5, r0 + 80056e8: 460c mov r4, r1 + 80056ea: 4616 mov r6, r2 + Status = VL53L0X_ERROR_INVALID_PARAMS; + } else { + if (LimitCheckEnable == 0) { + 80056ec: b13a cbz r2, 80056fe <VL53L0X_SetLimitCheckEnable+0x1e> + TempFix1616 = 0; + LimitCheckEnableInt = 0; + LimitCheckDisable = 1; + + } else { + VL53L0X_GETARRAYPARAMETERFIELD(Dev, LimitChecksValue, + 80056ee: f101 030c add.w r3, r1, #12 + 80056f2: eb00 0383 add.w r3, r0, r3, lsl #2 + 80056f6: 685a ldr r2, [r3, #4] + LimitCheckId, TempFix1616); + LimitCheckDisable = 0; + 80056f8: 2300 movs r3, #0 + /* this to be sure to have either 0 or 1 */ + LimitCheckEnableInt = 1; + 80056fa: 2101 movs r1, #1 + 80056fc: e002 b.n 8005704 <VL53L0X_SetLimitCheckEnable+0x24> + LimitCheckEnableInt = 0; + 80056fe: 4611 mov r1, r2 + LimitCheckDisable = 1; + 8005700: 2301 movs r3, #1 + TempFix1616 = 0; + 8005702: 2200 movs r2, #0 + } + + switch (LimitCheckId) { + 8005704: 2c05 cmp r4, #5 + 8005706: d833 bhi.n 8005770 <VL53L0X_SetLimitCheckEnable+0x90> + 8005708: e8df f004 tbb [pc, r4] + 800570c: 18140703 .word 0x18140703 + 8005710: 231c .short 0x231c + + case VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE: + /* internal computation: */ + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksEnable, + 8005712: f885 1028 strb.w r1, [r5, #40] ; 0x28 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 8005716: 2000 movs r0, #0 + 8005718: e006 b.n 8005728 <VL53L0X_SetLimitCheckEnable+0x48> + + break; + + case VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE: + + Status = VL53L0X_WrWord(Dev, + 800571a: f3c2 224f ubfx r2, r2, #9, #16 + 800571e: 2144 movs r1, #68 ; 0x44 + 8005720: 4628 mov r0, r5 + 8005722: f002 fcab bl 800807c <VL53L0X_WrWord> + + } + + } + + if (Status == VL53L0X_ERROR_NONE) { + 8005726: b920 cbnz r0, 8005732 <VL53L0X_SetLimitCheckEnable+0x52> + if (LimitCheckEnable == 0) { + 8005728: b9d6 cbnz r6, 8005760 <VL53L0X_SetLimitCheckEnable+0x80> + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksEnable, + 800572a: 442c add r4, r5 + 800572c: 2300 movs r3, #0 + 800572e: f884 3028 strb.w r3, [r4, #40] ; 0x28 + } + } + + LOG_FUNCTION_END(Status); + return Status; +} + 8005732: bd70 pop {r4, r5, r6, pc} + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksEnable, + 8005734: f885 102a strb.w r1, [r5, #42] ; 0x2a + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 8005738: 2000 movs r0, #0 + 800573a: e7f5 b.n 8005728 <VL53L0X_SetLimitCheckEnable+0x48> + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksEnable, + 800573c: f885 102b strb.w r1, [r5, #43] ; 0x2b + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 8005740: 2000 movs r0, #0 + 8005742: e7f1 b.n 8005728 <VL53L0X_SetLimitCheckEnable+0x48> + Status = VL53L0X_UpdateByte(Dev, + 8005744: 005b lsls r3, r3, #1 + 8005746: 22fe movs r2, #254 ; 0xfe + 8005748: 2160 movs r1, #96 ; 0x60 + 800574a: 4628 mov r0, r5 + 800574c: f002 fcc2 bl 80080d4 <VL53L0X_UpdateByte> + break; + 8005750: e7e9 b.n 8005726 <VL53L0X_SetLimitCheckEnable+0x46> + Status = VL53L0X_UpdateByte(Dev, + 8005752: 011b lsls r3, r3, #4 + 8005754: 22ef movs r2, #239 ; 0xef + 8005756: 2160 movs r1, #96 ; 0x60 + 8005758: 4628 mov r0, r5 + 800575a: f002 fcbb bl 80080d4 <VL53L0X_UpdateByte> + break; + 800575e: e7e2 b.n 8005726 <VL53L0X_SetLimitCheckEnable+0x46> + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksEnable, + 8005760: 4425 add r5, r4 + 8005762: 2301 movs r3, #1 + 8005764: f885 3028 strb.w r3, [r5, #40] ; 0x28 + 8005768: e7e3 b.n 8005732 <VL53L0X_SetLimitCheckEnable+0x52> + Status = VL53L0X_ERROR_INVALID_PARAMS; + 800576a: f06f 0003 mvn.w r0, #3 +} + 800576e: 4770 bx lr + switch (LimitCheckId) { + 8005770: f06f 0003 mvn.w r0, #3 + 8005774: e7dd b.n 8005732 <VL53L0X_SetLimitCheckEnable+0x52> + +08005776 <VL53L0X_GetLimitCheckEnable>: + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t Temp8; + + LOG_FUNCTION_START(""); + + if (LimitCheckId >= VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS) { + 8005776: 2905 cmp r1, #5 + 8005778: d805 bhi.n 8005786 <VL53L0X_GetLimitCheckEnable+0x10> + Status = VL53L0X_ERROR_INVALID_PARAMS; + *pLimitCheckEnable = 0; + } else { + VL53L0X_GETARRAYPARAMETERFIELD(Dev, LimitChecksEnable, + 800577a: 4408 add r0, r1 + 800577c: f890 3028 ldrb.w r3, [r0, #40] ; 0x28 + LimitCheckId, Temp8); + *pLimitCheckEnable = Temp8; + 8005780: 7013 strb r3, [r2, #0] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 8005782: 2000 movs r0, #0 + } + + LOG_FUNCTION_END(Status); + return Status; +} + 8005784: 4770 bx lr + *pLimitCheckEnable = 0; + 8005786: 2300 movs r3, #0 + 8005788: 7013 strb r3, [r2, #0] + Status = VL53L0X_ERROR_INVALID_PARAMS; + 800578a: f06f 0003 mvn.w r0, #3 + 800578e: 4770 bx lr + +08005790 <VL53L0X_SetLimitCheckValue>: + +VL53L0X_Error VL53L0X_SetLimitCheckValue(VL53L0X_DEV Dev, uint16_t LimitCheckId, + FixPoint1616_t LimitCheckValue) +{ + 8005790: b570 push {r4, r5, r6, lr} + 8005792: 4606 mov r6, r0 + 8005794: 460c mov r4, r1 + 8005796: 4615 mov r5, r2 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t Temp8; + + LOG_FUNCTION_START(""); + + VL53L0X_GETARRAYPARAMETERFIELD(Dev, LimitChecksEnable, LimitCheckId, + 8005798: 1843 adds r3, r0, r1 + 800579a: f893 3028 ldrb.w r3, [r3, #40] ; 0x28 + Temp8); + + if (Temp8 == 0) { /* disabled write only internal value */ + 800579e: b92b cbnz r3, 80057ac <VL53L0X_SetLimitCheckValue+0x1c> + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksValue, + 80057a0: 340c adds r4, #12 + 80057a2: eb00 0084 add.w r0, r0, r4, lsl #2 + 80057a6: 6042 str r2, [r0, #4] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80057a8: 2000 movs r0, #0 + } + } + + LOG_FUNCTION_END(Status); + return Status; +} + 80057aa: bd70 pop {r4, r5, r6, pc} + switch (LimitCheckId) { + 80057ac: 2905 cmp r1, #5 + 80057ae: d81f bhi.n 80057f0 <VL53L0X_SetLimitCheckValue+0x60> + 80057b0: e8df f001 tbb [pc, r1] + 80057b4: 15120a03 .word 0x15120a03 + 80057b8: 1818 .short 0x1818 + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksValue, + 80057ba: 6372 str r2, [r6, #52] ; 0x34 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80057bc: 2000 movs r0, #0 + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksValue, + 80057be: 340c adds r4, #12 + 80057c0: eb06 0384 add.w r3, r6, r4, lsl #2 + 80057c4: 605d str r5, [r3, #4] + 80057c6: e7f0 b.n 80057aa <VL53L0X_SetLimitCheckValue+0x1a> + Status = VL53L0X_WrWord(Dev, + 80057c8: f3c2 224f ubfx r2, r2, #9, #16 + 80057cc: 2144 movs r1, #68 ; 0x44 + 80057ce: f002 fc55 bl 800807c <VL53L0X_WrWord> + if (Status == VL53L0X_ERROR_NONE) { + 80057d2: 2800 cmp r0, #0 + 80057d4: d1e9 bne.n 80057aa <VL53L0X_SetLimitCheckValue+0x1a> + 80057d6: e7f2 b.n 80057be <VL53L0X_SetLimitCheckValue+0x2e> + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksValue, + 80057d8: 63f2 str r2, [r6, #60] ; 0x3c + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80057da: 2000 movs r0, #0 + 80057dc: e7ef b.n 80057be <VL53L0X_SetLimitCheckValue+0x2e> + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksValue, + 80057de: 6432 str r2, [r6, #64] ; 0x40 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80057e0: 2000 movs r0, #0 + 80057e2: e7ec b.n 80057be <VL53L0X_SetLimitCheckValue+0x2e> + Status = VL53L0X_WrWord(Dev, + 80057e4: f3c2 224f ubfx r2, r2, #9, #16 + 80057e8: 2164 movs r1, #100 ; 0x64 + 80057ea: f002 fc47 bl 800807c <VL53L0X_WrWord> + break; + 80057ee: e7f0 b.n 80057d2 <VL53L0X_SetLimitCheckValue+0x42> + switch (LimitCheckId) { + 80057f0: f06f 0003 mvn.w r0, #3 + 80057f4: e7d9 b.n 80057aa <VL53L0X_SetLimitCheckValue+0x1a> + +080057f6 <VL53L0X_GetLimitCheckValue>: + +VL53L0X_Error VL53L0X_GetLimitCheckValue(VL53L0X_DEV Dev, uint16_t LimitCheckId, + FixPoint1616_t *pLimitCheckValue) +{ + 80057f6: b5f0 push {r4, r5, r6, r7, lr} + 80057f8: b083 sub sp, #12 + 80057fa: 4606 mov r6, r0 + 80057fc: 460c mov r4, r1 + 80057fe: 4615 mov r5, r2 + uint16_t Temp16; + FixPoint1616_t TempFix1616; + + LOG_FUNCTION_START(""); + + switch (LimitCheckId) { + 8005800: 2905 cmp r1, #5 + 8005802: d82a bhi.n 800585a <VL53L0X_GetLimitCheckValue+0x64> + 8005804: e8df f001 tbb [pc, r1] + 8005808: 1a160b03 .word 0x1a160b03 + 800580c: 1e1e .short 0x1e1e + + case VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE: + /* internal computation: */ + VL53L0X_GETARRAYPARAMETERFIELD(Dev, LimitChecksValue, + 800580e: 6b47 ldr r7, [r0, #52] ; 0x34 + VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, TempFix1616); + EnableZeroValue = 0; + 8005810: 2300 movs r3, #0 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 8005812: 4618 mov r0, r3 + default: + Status = VL53L0X_ERROR_INVALID_PARAMS; + + } + + if (Status == VL53L0X_ERROR_NONE) { + 8005814: b908 cbnz r0, 800581a <VL53L0X_GetLimitCheckValue+0x24> + + if (EnableZeroValue == 1) { + 8005816: bb43 cbnz r3, 800586a <VL53L0X_GetLimitCheckValue+0x74> + TempFix1616); + VL53L0X_SETARRAYPARAMETERFIELD(Dev, + LimitChecksEnable, LimitCheckId, 1); + } + } else { + *pLimitCheckValue = TempFix1616; + 8005818: 602f str r7, [r5, #0] + } + + LOG_FUNCTION_END(Status); + return Status; + +} + 800581a: b003 add sp, #12 + 800581c: bdf0 pop {r4, r5, r6, r7, pc} + Status = VL53L0X_RdWord(Dev, + 800581e: f10d 0206 add.w r2, sp, #6 + 8005822: 2144 movs r1, #68 ; 0x44 + 8005824: f002 fc70 bl 8008108 <VL53L0X_RdWord> + if (Status == VL53L0X_ERROR_NONE) + 8005828: b9d8 cbnz r0, 8005862 <VL53L0X_GetLimitCheckValue+0x6c> + TempFix1616 = VL53L0X_FIXPOINT97TOFIXPOINT1616(Temp16); + 800582a: f8bd 7006 ldrh.w r7, [sp, #6] + 800582e: 027f lsls r7, r7, #9 + EnableZeroValue = 1; + 8005830: 2301 movs r3, #1 + 8005832: e7ef b.n 8005814 <VL53L0X_GetLimitCheckValue+0x1e> + VL53L0X_GETARRAYPARAMETERFIELD(Dev, LimitChecksValue, + 8005834: 6bc7 ldr r7, [r0, #60] ; 0x3c + EnableZeroValue = 0; + 8005836: 2300 movs r3, #0 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 8005838: 4618 mov r0, r3 + break; + 800583a: e7eb b.n 8005814 <VL53L0X_GetLimitCheckValue+0x1e> + VL53L0X_GETARRAYPARAMETERFIELD(Dev, LimitChecksValue, + 800583c: 6c07 ldr r7, [r0, #64] ; 0x40 + EnableZeroValue = 0; + 800583e: 2300 movs r3, #0 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 8005840: 4618 mov r0, r3 + break; + 8005842: e7e7 b.n 8005814 <VL53L0X_GetLimitCheckValue+0x1e> + Status = VL53L0X_RdWord(Dev, + 8005844: f10d 0206 add.w r2, sp, #6 + 8005848: 2164 movs r1, #100 ; 0x64 + 800584a: f002 fc5d bl 8008108 <VL53L0X_RdWord> + 800584e: 4603 mov r3, r0 + if (Status == VL53L0X_ERROR_NONE) + 8005850: b948 cbnz r0, 8005866 <VL53L0X_GetLimitCheckValue+0x70> + TempFix1616 = VL53L0X_FIXPOINT97TOFIXPOINT1616(Temp16); + 8005852: f8bd 7006 ldrh.w r7, [sp, #6] + 8005856: 027f lsls r7, r7, #9 + 8005858: e7dc b.n 8005814 <VL53L0X_GetLimitCheckValue+0x1e> + switch (LimitCheckId) { + 800585a: 2300 movs r3, #0 + 800585c: f06f 0003 mvn.w r0, #3 + 8005860: e7d8 b.n 8005814 <VL53L0X_GetLimitCheckValue+0x1e> + EnableZeroValue = 1; + 8005862: 2301 movs r3, #1 + 8005864: e7d6 b.n 8005814 <VL53L0X_GetLimitCheckValue+0x1e> + EnableZeroValue = 0; + 8005866: 2300 movs r3, #0 + 8005868: e7d4 b.n 8005814 <VL53L0X_GetLimitCheckValue+0x1e> + if (TempFix1616 == 0) { + 800586a: b957 cbnz r7, 8005882 <VL53L0X_GetLimitCheckValue+0x8c> + VL53L0X_GETARRAYPARAMETERFIELD(Dev, + 800586c: f104 030c add.w r3, r4, #12 + 8005870: eb06 0383 add.w r3, r6, r3, lsl #2 + 8005874: 685b ldr r3, [r3, #4] + *pLimitCheckValue = TempFix1616; + 8005876: 602b str r3, [r5, #0] + VL53L0X_SETARRAYPARAMETERFIELD(Dev, + 8005878: 4434 add r4, r6 + 800587a: 2300 movs r3, #0 + 800587c: f884 3028 strb.w r3, [r4, #40] ; 0x28 + 8005880: e7cb b.n 800581a <VL53L0X_GetLimitCheckValue+0x24> + *pLimitCheckValue = TempFix1616; + 8005882: 602f str r7, [r5, #0] + VL53L0X_SETARRAYPARAMETERFIELD(Dev, + 8005884: f104 030c add.w r3, r4, #12 + 8005888: eb06 0383 add.w r3, r6, r3, lsl #2 + 800588c: 605f str r7, [r3, #4] + VL53L0X_SETARRAYPARAMETERFIELD(Dev, + 800588e: 1933 adds r3, r6, r4 + 8005890: 2201 movs r2, #1 + 8005892: f883 2028 strb.w r2, [r3, #40] ; 0x28 + 8005896: e7c0 b.n 800581a <VL53L0X_GetLimitCheckValue+0x24> + +08005898 <VL53L0X_GetWrapAroundCheckEnable>: + return Status; +} + +VL53L0X_Error VL53L0X_GetWrapAroundCheckEnable(VL53L0X_DEV Dev, + uint8_t *pWrapAroundCheckEnable) +{ + 8005898: b530 push {r4, r5, lr} + 800589a: b083 sub sp, #12 + 800589c: 4604 mov r4, r0 + 800589e: 460d mov r5, r1 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t data; + + LOG_FUNCTION_START(""); + + Status = VL53L0X_RdByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, &data); + 80058a0: f10d 0207 add.w r2, sp, #7 + 80058a4: 2101 movs r1, #1 + 80058a6: f002 fbfb bl 80080a0 <VL53L0X_RdByte> + if (Status == VL53L0X_ERROR_NONE) { + 80058aa: 4603 mov r3, r0 + 80058ac: b940 cbnz r0, 80058c0 <VL53L0X_GetWrapAroundCheckEnable+0x28> + PALDevDataSet(Dev, SequenceConfig, data); + 80058ae: f89d 2007 ldrb.w r2, [sp, #7] + 80058b2: f884 2130 strb.w r2, [r4, #304] ; 0x130 + if (data & (0x01 << 7)) + 80058b6: f012 0f80 tst.w r2, #128 ; 0x80 + 80058ba: d108 bne.n 80058ce <VL53L0X_GetWrapAroundCheckEnable+0x36> + *pWrapAroundCheckEnable = 0x01; + else + *pWrapAroundCheckEnable = 0x00; + 80058bc: 2200 movs r2, #0 + 80058be: 702a strb r2, [r5, #0] + } + if (Status == VL53L0X_ERROR_NONE) { + 80058c0: b913 cbnz r3, 80058c8 <VL53L0X_GetWrapAroundCheckEnable+0x30> + VL53L0X_SETPARAMETERFIELD(Dev, WrapAroundCheckEnable, + 80058c2: 782a ldrb r2, [r5, #0] + 80058c4: f884 204c strb.w r2, [r4, #76] ; 0x4c + *pWrapAroundCheckEnable); + } + + LOG_FUNCTION_END(Status); + return Status; +} + 80058c8: 4618 mov r0, r3 + 80058ca: b003 add sp, #12 + 80058cc: bd30 pop {r4, r5, pc} + *pWrapAroundCheckEnable = 0x01; + 80058ce: 2201 movs r2, #1 + 80058d0: 702a strb r2, [r5, #0] + 80058d2: e7f5 b.n 80058c0 <VL53L0X_GetWrapAroundCheckEnable+0x28> + +080058d4 <VL53L0X_GetDeviceParameters>: +{ + 80058d4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80058d8: 4607 mov r7, r0 + 80058da: 460e mov r6, r1 + Status = VL53L0X_GetDeviceMode(Dev, &(pDeviceParameters->DeviceMode)); + 80058dc: f7ff fdea bl 80054b4 <VL53L0X_GetDeviceMode> + if (Status == VL53L0X_ERROR_NONE) + 80058e0: 4604 mov r4, r0 + 80058e2: b160 cbz r0, 80058fe <VL53L0X_GetDeviceParameters+0x2a> + if (Status == VL53L0X_ERROR_NONE) + 80058e4: b90c cbnz r4, 80058ea <VL53L0X_GetDeviceParameters+0x16> + pDeviceParameters->XTalkCompensationEnable = 0; + 80058e6: 2300 movs r3, #0 + 80058e8: 7333 strb r3, [r6, #12] + if (Status == VL53L0X_ERROR_NONE) + 80058ea: b17c cbz r4, 800590c <VL53L0X_GetDeviceParameters+0x38> + if (Status == VL53L0X_ERROR_NONE) + 80058ec: b1ac cbz r4, 800591a <VL53L0X_GetDeviceParameters+0x46> + if (Status == VL53L0X_ERROR_NONE) { + 80058ee: b1dc cbz r4, 8005928 <VL53L0X_GetDeviceParameters+0x54> + if (Status == VL53L0X_ERROR_NONE) { + 80058f0: 2c00 cmp r4, #0 + 80058f2: d038 beq.n 8005966 <VL53L0X_GetDeviceParameters+0x92> + if (Status == VL53L0X_ERROR_NONE) { + 80058f4: 2c00 cmp r4, #0 + 80058f6: d03d beq.n 8005974 <VL53L0X_GetDeviceParameters+0xa0> +} + 80058f8: 4620 mov r0, r4 + 80058fa: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + Status = VL53L0X_GetInterMeasurementPeriodMilliSeconds(Dev, + 80058fe: f106 0108 add.w r1, r6, #8 + 8005902: 4638 mov r0, r7 + 8005904: f7ff feb3 bl 800566e <VL53L0X_GetInterMeasurementPeriodMilliSeconds> + 8005908: 4604 mov r4, r0 + 800590a: e7eb b.n 80058e4 <VL53L0X_GetDeviceParameters+0x10> + Status = VL53L0X_GetXTalkCompensationRateMegaCps(Dev, + 800590c: f106 0110 add.w r1, r6, #16 + 8005910: 4638 mov r0, r7 + 8005912: f7ff fecc bl 80056ae <VL53L0X_GetXTalkCompensationRateMegaCps> + 8005916: 4604 mov r4, r0 + 8005918: e7e8 b.n 80058ec <VL53L0X_GetDeviceParameters+0x18> + Status = VL53L0X_GetOffsetCalibrationDataMicroMeter(Dev, + 800591a: f106 0114 add.w r1, r6, #20 + 800591e: 4638 mov r0, r7 + 8005920: f7ff fdac bl 800547c <VL53L0X_GetOffsetCalibrationDataMicroMeter> + 8005924: 4604 mov r4, r0 + 8005926: e7e2 b.n 80058ee <VL53L0X_GetDeviceParameters+0x1a> + for (i = 0; i < VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS; i++) { + 8005928: 2500 movs r5, #0 + 800592a: 2d05 cmp r5, #5 + 800592c: dce0 bgt.n 80058f0 <VL53L0X_GetDeviceParameters+0x1c> + if (Status == VL53L0X_ERROR_NONE) { + 800592e: 2c00 cmp r4, #0 + 8005930: d1de bne.n 80058f0 <VL53L0X_GetDeviceParameters+0x1c> + Status |= VL53L0X_GetLimitCheckValue(Dev, i, + 8005932: fa1f f885 uxth.w r8, r5 + 8005936: f105 0208 add.w r2, r5, #8 + 800593a: eb06 0282 add.w r2, r6, r2, lsl #2 + 800593e: 3204 adds r2, #4 + 8005940: 4641 mov r1, r8 + 8005942: 4638 mov r0, r7 + 8005944: f7ff ff57 bl 80057f6 <VL53L0X_GetLimitCheckValue> + 8005948: 4320 orrs r0, r4 + 800594a: b244 sxtb r4, r0 + if (Status == VL53L0X_ERROR_NONE) { + 800594c: 2c00 cmp r4, #0 + 800594e: d1cf bne.n 80058f0 <VL53L0X_GetDeviceParameters+0x1c> + Status |= VL53L0X_GetLimitCheckEnable(Dev, i, + 8005950: f105 0218 add.w r2, r5, #24 + 8005954: 4432 add r2, r6 + 8005956: 4641 mov r1, r8 + 8005958: 4638 mov r0, r7 + 800595a: f7ff ff0c bl 8005776 <VL53L0X_GetLimitCheckEnable> + 800595e: 4320 orrs r0, r4 + 8005960: b244 sxtb r4, r0 + for (i = 0; i < VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS; i++) { + 8005962: 3501 adds r5, #1 + 8005964: e7e1 b.n 800592a <VL53L0X_GetDeviceParameters+0x56> + Status = VL53L0X_GetWrapAroundCheckEnable(Dev, + 8005966: f106 013c add.w r1, r6, #60 ; 0x3c + 800596a: 4638 mov r0, r7 + 800596c: f7ff ff94 bl 8005898 <VL53L0X_GetWrapAroundCheckEnable> + 8005970: 4604 mov r4, r0 + 8005972: e7bf b.n 80058f4 <VL53L0X_GetDeviceParameters+0x20> + Status = VL53L0X_GetMeasurementTimingBudgetMicroSeconds(Dev, + 8005974: 1d31 adds r1, r6, #4 + 8005976: 4638 mov r0, r7 + 8005978: f7ff fdb0 bl 80054dc <VL53L0X_GetMeasurementTimingBudgetMicroSeconds> + 800597c: 4604 mov r4, r0 + 800597e: e7bb b.n 80058f8 <VL53L0X_GetDeviceParameters+0x24> + +08005980 <VL53L0X_DataInit>: +{ + 8005980: b570 push {r4, r5, r6, lr} + 8005982: b092 sub sp, #72 ; 0x48 + 8005984: 4605 mov r5, r0 + Status = VL53L0X_WrByte(Dev, 0x88, 0x00); + 8005986: 2200 movs r2, #0 + 8005988: 2188 movs r1, #136 ; 0x88 + 800598a: f002 fb67 bl 800805c <VL53L0X_WrByte> + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, ReadDataFromDeviceDone, 0); + 800598e: 2300 movs r3, #0 + 8005990: f885 30f0 strb.w r3, [r5, #240] ; 0xf0 + PALDevDataSet(Dev, LinearityCorrectiveGain, 1000); + 8005994: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8005998: f8a5 2152 strh.w r2, [r5, #338] ; 0x152 + PALDevDataSet(Dev, DmaxCalRangeMilliMeter, 400); + 800599c: f44f 72c8 mov.w r2, #400 ; 0x190 + 80059a0: f8a5 2154 strh.w r2, [r5, #340] ; 0x154 + PALDevDataSet(Dev, DmaxCalSignalRateRtnMegaCps, + 80059a4: 4a67 ldr r2, [pc, #412] ; (8005b44 <VL53L0X_DataInit+0x1c4>) + 80059a6: f8c5 2158 str.w r2, [r5, #344] ; 0x158 + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, OscFrequencyMHz, 618660); + 80059aa: 4a67 ldr r2, [pc, #412] ; (8005b48 <VL53L0X_DataInit+0x1c8>) + 80059ac: f8c5 20d4 str.w r2, [r5, #212] ; 0xd4 + VL53L0X_SETPARAMETERFIELD(Dev, XTalkCompensationRateMegaCps, 0); + 80059b0: 622b str r3, [r5, #32] + Status = VL53L0X_GetDeviceParameters(Dev, &CurrentParameters); + 80059b2: a902 add r1, sp, #8 + 80059b4: 4628 mov r0, r5 + 80059b6: f7ff ff8d bl 80058d4 <VL53L0X_GetDeviceParameters> + if (Status == VL53L0X_ERROR_NONE) { + 80059ba: 4604 mov r4, r0 + 80059bc: b9a8 cbnz r0, 80059ea <VL53L0X_DataInit+0x6a> + CurrentParameters.DeviceMode = VL53L0X_DEVICEMODE_SINGLE_RANGING; + 80059be: 2300 movs r3, #0 + 80059c0: f88d 3008 strb.w r3, [sp, #8] + CurrentParameters.HistogramMode = VL53L0X_HISTOGRAMMODE_DISABLED; + 80059c4: f88d 3009 strb.w r3, [sp, #9] + PALDevDataSet(Dev, CurrentParameters, CurrentParameters); + 80059c8: f105 0610 add.w r6, r5, #16 + 80059cc: f10d 0c08 add.w ip, sp, #8 + 80059d0: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 80059d4: c60f stmia r6!, {r0, r1, r2, r3} + 80059d6: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 80059da: c60f stmia r6!, {r0, r1, r2, r3} + 80059dc: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 80059e0: c60f stmia r6!, {r0, r1, r2, r3} + 80059e2: e89c 000f ldmia.w ip, {r0, r1, r2, r3} + 80059e6: e886 000f stmia.w r6, {r0, r1, r2, r3} + PALDevDataSet(Dev, SigmaEstRefArray, 100); + 80059ea: 2364 movs r3, #100 ; 0x64 + 80059ec: f8a5 3134 strh.w r3, [r5, #308] ; 0x134 + PALDevDataSet(Dev, SigmaEstEffPulseWidth, 900); + 80059f0: f44f 7361 mov.w r3, #900 ; 0x384 + 80059f4: f8a5 3136 strh.w r3, [r5, #310] ; 0x136 + PALDevDataSet(Dev, SigmaEstEffAmbWidth, 500); + 80059f8: f44f 73fa mov.w r3, #500 ; 0x1f4 + 80059fc: f8a5 3138 strh.w r3, [r5, #312] ; 0x138 + PALDevDataSet(Dev, targetRefRate, 0x0A00); /* 20 MCPS in 9:7 format */ + 8005a00: f44f 6320 mov.w r3, #2560 ; 0xa00 + 8005a04: f8a5 313c strh.w r3, [r5, #316] ; 0x13c + PALDevDataSet(Dev, UseInternalTuningSettings, 1); + 8005a08: 2601 movs r6, #1 + 8005a0a: f885 6150 strb.w r6, [r5, #336] ; 0x150 + Status |= VL53L0X_WrByte(Dev, 0x80, 0x01); + 8005a0e: 4632 mov r2, r6 + 8005a10: 2180 movs r1, #128 ; 0x80 + 8005a12: 4628 mov r0, r5 + 8005a14: f002 fb22 bl 800805c <VL53L0X_WrByte> + 8005a18: 4304 orrs r4, r0 + 8005a1a: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x01); + 8005a1c: 4632 mov r2, r6 + 8005a1e: 21ff movs r1, #255 ; 0xff + 8005a20: 4628 mov r0, r5 + 8005a22: f002 fb1b bl 800805c <VL53L0X_WrByte> + 8005a26: 4304 orrs r4, r0 + 8005a28: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x00, 0x00); + 8005a2a: 2200 movs r2, #0 + 8005a2c: 4611 mov r1, r2 + 8005a2e: 4628 mov r0, r5 + 8005a30: f002 fb14 bl 800805c <VL53L0X_WrByte> + 8005a34: 4304 orrs r4, r0 + 8005a36: b264 sxtb r4, r4 + Status |= VL53L0X_RdByte(Dev, 0x91, &StopVariable); + 8005a38: f10d 0207 add.w r2, sp, #7 + 8005a3c: 2191 movs r1, #145 ; 0x91 + 8005a3e: 4628 mov r0, r5 + 8005a40: f002 fb2e bl 80080a0 <VL53L0X_RdByte> + 8005a44: 4304 orrs r4, r0 + 8005a46: b264 sxtb r4, r4 + PALDevDataSet(Dev, StopVariable, StopVariable); + 8005a48: f89d 3007 ldrb.w r3, [sp, #7] + 8005a4c: f885 313a strb.w r3, [r5, #314] ; 0x13a + Status |= VL53L0X_WrByte(Dev, 0x00, 0x01); + 8005a50: 4632 mov r2, r6 + 8005a52: 2100 movs r1, #0 + 8005a54: 4628 mov r0, r5 + 8005a56: f002 fb01 bl 800805c <VL53L0X_WrByte> + 8005a5a: 4304 orrs r4, r0 + 8005a5c: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x00); + 8005a5e: 2200 movs r2, #0 + 8005a60: 21ff movs r1, #255 ; 0xff + 8005a62: 4628 mov r0, r5 + 8005a64: f002 fafa bl 800805c <VL53L0X_WrByte> + 8005a68: 4304 orrs r4, r0 + 8005a6a: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x80, 0x00); + 8005a6c: 2200 movs r2, #0 + 8005a6e: 2180 movs r1, #128 ; 0x80 + 8005a70: 4628 mov r0, r5 + 8005a72: f002 faf3 bl 800805c <VL53L0X_WrByte> + 8005a76: 4320 orrs r0, r4 + 8005a78: b244 sxtb r4, r0 + for (i = 0; i < VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS; i++) { + 8005a7a: 2600 movs r6, #0 + 8005a7c: 2e05 cmp r6, #5 + 8005a7e: dc09 bgt.n 8005a94 <VL53L0X_DataInit+0x114> + if (Status == VL53L0X_ERROR_NONE) + 8005a80: b944 cbnz r4, 8005a94 <VL53L0X_DataInit+0x114> + Status |= VL53L0X_SetLimitCheckEnable(Dev, i, 1); + 8005a82: 2201 movs r2, #1 + 8005a84: b2b1 uxth r1, r6 + 8005a86: 4628 mov r0, r5 + 8005a88: f7ff fe2a bl 80056e0 <VL53L0X_SetLimitCheckEnable> + 8005a8c: 4320 orrs r0, r4 + 8005a8e: b244 sxtb r4, r0 + for (i = 0; i < VL53L0X_CHECKENABLE_NUMBER_OF_CHECKS; i++) { + 8005a90: 3601 adds r6, #1 + 8005a92: e7f3 b.n 8005a7c <VL53L0X_DataInit+0xfc> + if (Status == VL53L0X_ERROR_NONE) + 8005a94: b17c cbz r4, 8005ab6 <VL53L0X_DataInit+0x136> + if (Status == VL53L0X_ERROR_NONE) + 8005a96: b1ac cbz r4, 8005ac4 <VL53L0X_DataInit+0x144> + if (Status == VL53L0X_ERROR_NONE) + 8005a98: b1dc cbz r4, 8005ad2 <VL53L0X_DataInit+0x152> + if (Status == VL53L0X_ERROR_NONE) + 8005a9a: b30c cbz r4, 8005ae0 <VL53L0X_DataInit+0x160> + if (Status == VL53L0X_ERROR_NONE) { + 8005a9c: b33c cbz r4, 8005aee <VL53L0X_DataInit+0x16e> + if (Status == VL53L0X_ERROR_NONE) { + 8005a9e: b374 cbz r4, 8005afe <VL53L0X_DataInit+0x17e> + if (Status == VL53L0X_ERROR_NONE) { + 8005aa0: b3ac cbz r4, 8005b0e <VL53L0X_DataInit+0x18e> + if (Status == VL53L0X_ERROR_NONE) { + 8005aa2: b3e4 cbz r4, 8005b1e <VL53L0X_DataInit+0x19e> + if (Status == VL53L0X_ERROR_NONE) { + 8005aa4: 2c00 cmp r4, #0 + 8005aa6: d041 beq.n 8005b2c <VL53L0X_DataInit+0x1ac> + if (Status == VL53L0X_ERROR_NONE) + 8005aa8: b914 cbnz r4, 8005ab0 <VL53L0X_DataInit+0x130> + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, RefSpadsInitialised, 0); + 8005aaa: 2300 movs r3, #0 + 8005aac: f885 3115 strb.w r3, [r5, #277] ; 0x115 +} + 8005ab0: 4620 mov r0, r4 + 8005ab2: b012 add sp, #72 ; 0x48 + 8005ab4: bd70 pop {r4, r5, r6, pc} + Status = VL53L0X_SetLimitCheckEnable(Dev, + 8005ab6: 2200 movs r2, #0 + 8005ab8: 2102 movs r1, #2 + 8005aba: 4628 mov r0, r5 + 8005abc: f7ff fe10 bl 80056e0 <VL53L0X_SetLimitCheckEnable> + 8005ac0: 4604 mov r4, r0 + 8005ac2: e7e8 b.n 8005a96 <VL53L0X_DataInit+0x116> + Status = VL53L0X_SetLimitCheckEnable(Dev, + 8005ac4: 2200 movs r2, #0 + 8005ac6: 2103 movs r1, #3 + 8005ac8: 4628 mov r0, r5 + 8005aca: f7ff fe09 bl 80056e0 <VL53L0X_SetLimitCheckEnable> + 8005ace: 4604 mov r4, r0 + 8005ad0: e7e2 b.n 8005a98 <VL53L0X_DataInit+0x118> + Status = VL53L0X_SetLimitCheckEnable(Dev, + 8005ad2: 2200 movs r2, #0 + 8005ad4: 2104 movs r1, #4 + 8005ad6: 4628 mov r0, r5 + 8005ad8: f7ff fe02 bl 80056e0 <VL53L0X_SetLimitCheckEnable> + 8005adc: 4604 mov r4, r0 + 8005ade: e7dc b.n 8005a9a <VL53L0X_DataInit+0x11a> + Status = VL53L0X_SetLimitCheckEnable(Dev, + 8005ae0: 2200 movs r2, #0 + 8005ae2: 2105 movs r1, #5 + 8005ae4: 4628 mov r0, r5 + 8005ae6: f7ff fdfb bl 80056e0 <VL53L0X_SetLimitCheckEnable> + 8005aea: 4604 mov r4, r0 + 8005aec: e7d6 b.n 8005a9c <VL53L0X_DataInit+0x11c> + Status = VL53L0X_SetLimitCheckValue(Dev, + 8005aee: f44f 1290 mov.w r2, #1179648 ; 0x120000 + 8005af2: 2100 movs r1, #0 + 8005af4: 4628 mov r0, r5 + 8005af6: f7ff fe4b bl 8005790 <VL53L0X_SetLimitCheckValue> + 8005afa: 4604 mov r4, r0 + 8005afc: e7cf b.n 8005a9e <VL53L0X_DataInit+0x11e> + Status = VL53L0X_SetLimitCheckValue(Dev, + 8005afe: f44f 4280 mov.w r2, #16384 ; 0x4000 + 8005b02: 2101 movs r1, #1 + 8005b04: 4628 mov r0, r5 + 8005b06: f7ff fe43 bl 8005790 <VL53L0X_SetLimitCheckValue> + 8005b0a: 4604 mov r4, r0 + 8005b0c: e7c8 b.n 8005aa0 <VL53L0X_DataInit+0x120> + Status = VL53L0X_SetLimitCheckValue(Dev, + 8005b0e: f44f 120c mov.w r2, #2293760 ; 0x230000 + 8005b12: 2102 movs r1, #2 + 8005b14: 4628 mov r0, r5 + 8005b16: f7ff fe3b bl 8005790 <VL53L0X_SetLimitCheckValue> + 8005b1a: 4604 mov r4, r0 + 8005b1c: e7c1 b.n 8005aa2 <VL53L0X_DataInit+0x122> + Status = VL53L0X_SetLimitCheckValue(Dev, + 8005b1e: 2200 movs r2, #0 + 8005b20: 2103 movs r1, #3 + 8005b22: 4628 mov r0, r5 + 8005b24: f7ff fe34 bl 8005790 <VL53L0X_SetLimitCheckValue> + 8005b28: 4604 mov r4, r0 + 8005b2a: e7bb b.n 8005aa4 <VL53L0X_DataInit+0x124> + PALDevDataSet(Dev, SequenceConfig, 0xFF); + 8005b2c: 22ff movs r2, #255 ; 0xff + 8005b2e: f885 2130 strb.w r2, [r5, #304] ; 0x130 + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, + 8005b32: 2101 movs r1, #1 + 8005b34: 4628 mov r0, r5 + 8005b36: f002 fa91 bl 800805c <VL53L0X_WrByte> + 8005b3a: 4604 mov r4, r0 + PALDevDataSet(Dev, PalState, VL53L0X_STATE_WAIT_STATICINIT); + 8005b3c: 2301 movs r3, #1 + 8005b3e: f885 3132 strb.w r3, [r5, #306] ; 0x132 + 8005b42: e7b1 b.n 8005aa8 <VL53L0X_DataInit+0x128> + 8005b44: 00016b85 .word 0x00016b85 + 8005b48: 000970a4 .word 0x000970a4 + +08005b4c <VL53L0X_PerformRefCalibration>: + return Status; +} + +VL53L0X_Error VL53L0X_PerformRefCalibration(VL53L0X_DEV Dev, uint8_t *pVhvSettings, + uint8_t *pPhaseCal) +{ + 8005b4c: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + Status = VL53L0X_perform_ref_calibration(Dev, pVhvSettings, + 8005b4e: 2301 movs r3, #1 + 8005b50: f000 fe2c bl 80067ac <VL53L0X_perform_ref_calibration> + pPhaseCal, 1); + + LOG_FUNCTION_END(Status); + return Status; +} + 8005b54: bd08 pop {r3, pc} + ... + +08005b58 <VL53L0X_GetRangingMeasurementData>: +} + + +VL53L0X_Error VL53L0X_GetRangingMeasurementData(VL53L0X_DEV Dev, + VL53L0X_RangingMeasurementData_t *pRangingMeasurementData) +{ + 8005b58: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8005b5c: b08e sub sp, #56 ; 0x38 + 8005b5e: 4605 mov r5, r0 + 8005b60: 460c mov r4, r1 + * use multi read even if some registers are not useful, result will + * be more efficient + * start reading at 0x14 dec20 + * end reading at 0x21 dec33 total 14 bytes to read + */ + Status = VL53L0X_ReadMulti(Dev, 0x14, localBuffer, 12); + 8005b62: 230c movs r3, #12 + 8005b64: aa0a add r2, sp, #40 ; 0x28 + 8005b66: 2114 movs r1, #20 + 8005b68: f002 fa5c bl 8008024 <VL53L0X_ReadMulti> + + if (Status == VL53L0X_ERROR_NONE) { + 8005b6c: 4606 mov r6, r0 + 8005b6e: 2800 cmp r0, #0 + 8005b70: d168 bne.n 8005c44 <VL53L0X_GetRangingMeasurementData+0xec> + + pRangingMeasurementData->ZoneId = 0; /* Only one zone */ + 8005b72: 2300 movs r3, #0 + 8005b74: 75a3 strb r3, [r4, #22] + pRangingMeasurementData->TimeStamp = 0; /* Not Implemented */ + 8005b76: 6023 str r3, [r4, #0] + + tmpuint16 = VL53L0X_MAKEUINT16(localBuffer[11], localBuffer[10]); + 8005b78: f89d 2032 ldrb.w r2, [sp, #50] ; 0x32 + 8005b7c: f89d 0033 ldrb.w r0, [sp, #51] ; 0x33 + 8005b80: eb00 2002 add.w r0, r0, r2, lsl #8 + 8005b84: b280 uxth r0, r0 + /* cut1.1 if SYSTEM__RANGE_CONFIG if 1 range is 2bits fractional + *(format 11.2) else no fractional + */ + + pRangingMeasurementData->MeasurementTimeUsec = 0; + 8005b86: 6063 str r3, [r4, #4] + + SignalRate = VL53L0X_FIXPOINT97TOFIXPOINT1616( + 8005b88: f89d 302e ldrb.w r3, [sp, #46] ; 0x2e + 8005b8c: f89d 202f ldrb.w r2, [sp, #47] ; 0x2f + 8005b90: eb02 2203 add.w r2, r2, r3, lsl #8 + 8005b94: b292 uxth r2, r2 + 8005b96: 0252 lsls r2, r2, #9 + VL53L0X_MAKEUINT16(localBuffer[7], localBuffer[6])); + /* peak_signal_count_rate_rtn_mcps */ + pRangingMeasurementData->SignalRateRtnMegaCps = SignalRate; + 8005b98: 60e2 str r2, [r4, #12] + + AmbientRate = VL53L0X_MAKEUINT16(localBuffer[9], localBuffer[8]); + 8005b9a: f89d 1030 ldrb.w r1, [sp, #48] ; 0x30 + 8005b9e: f89d 3031 ldrb.w r3, [sp, #49] ; 0x31 + 8005ba2: eb03 2301 add.w r3, r3, r1, lsl #8 + 8005ba6: b29b uxth r3, r3 + pRangingMeasurementData->AmbientRateRtnMegaCps = + VL53L0X_FIXPOINT97TOFIXPOINT1616(AmbientRate); + 8005ba8: 025b lsls r3, r3, #9 + pRangingMeasurementData->AmbientRateRtnMegaCps = + 8005baa: 6123 str r3, [r4, #16] + + EffectiveSpadRtnCount = VL53L0X_MAKEUINT16(localBuffer[3], + 8005bac: f89d 102a ldrb.w r1, [sp, #42] ; 0x2a + 8005bb0: f89d 302b ldrb.w r3, [sp, #43] ; 0x2b + 8005bb4: eb03 2301 add.w r3, r3, r1, lsl #8 + 8005bb8: b29b uxth r3, r3 + localBuffer[2]); + /* EffectiveSpadRtnCount is 8.8 format */ + pRangingMeasurementData->EffectiveSpadRtnCount = + 8005bba: 82a3 strh r3, [r4, #20] + EffectiveSpadRtnCount; + + DeviceRangeStatus = localBuffer[0]; + 8005bbc: f89d 1028 ldrb.w r1, [sp, #40] ; 0x28 + + /* Get Linearity Corrective Gain */ + LinearityCorrectiveGain = PALDevDataGet(Dev, + 8005bc0: f8b5 c152 ldrh.w ip, [r5, #338] ; 0x152 + LinearityCorrectiveGain); + + /* Get ranging configuration */ + RangeFractionalEnable = PALDevDataGet(Dev, + 8005bc4: f895 7131 ldrb.w r7, [r5, #305] ; 0x131 + RangeFractionalEnable); + + if (LinearityCorrectiveGain != 1000) { + 8005bc8: f5bc 7f7a cmp.w ip, #1000 ; 0x3e8 + 8005bcc: d026 beq.n 8005c1c <VL53L0X_GetRangingMeasurementData+0xc4> + + tmpuint16 = (uint16_t)((LinearityCorrectiveGain + * tmpuint16 + 500) / 1000); + 8005bce: fb00 fc0c mul.w ip, r0, ip + 8005bd2: f50c 7cfa add.w ip, ip, #500 ; 0x1f4 + 8005bd6: 4837 ldr r0, [pc, #220] ; (8005cb4 <VL53L0X_GetRangingMeasurementData+0x15c>) + 8005bd8: fb80 e00c smull lr, r0, r0, ip + 8005bdc: ea4f 7cec mov.w ip, ip, asr #31 + 8005be0: ebcc 1ca0 rsb ip, ip, r0, asr #6 + tmpuint16 = (uint16_t)((LinearityCorrectiveGain + 8005be4: fa1f f08c uxth.w r0, ip + + /* Implement Xtalk */ + VL53L0X_GETPARAMETERFIELD(Dev, + 8005be8: f8d5 e020 ldr.w lr, [r5, #32] + XTalkCompensationRateMegaCps, + XTalkCompensationRateMegaCps); + VL53L0X_GETPARAMETERFIELD(Dev, XTalkCompensationEnable, + 8005bec: f895 801c ldrb.w r8, [r5, #28] + XTalkCompensationEnable); + + if (XTalkCompensationEnable) { + 8005bf0: f1b8 0f00 cmp.w r8, #0 + 8005bf4: d012 beq.n 8005c1c <VL53L0X_GetRangingMeasurementData+0xc4> + + if ((SignalRate + - ((XTalkCompensationRateMegaCps + * EffectiveSpadRtnCount) >> 8)) + 8005bf6: fa1f f08e uxth.w r0, lr + 8005bfa: fb03 f000 mul.w r0, r3, r0 + 8005bfe: ea4f 2e20 mov.w lr, r0, asr #8 + if ((SignalRate + 8005c02: ebb2 2f20 cmp.w r2, r0, asr #8 + 8005c06: d04a beq.n 8005c9e <VL53L0X_GetRangingMeasurementData+0x146> + else + XtalkRangeMilliMeter = 8888 + << 2; + } else { + XtalkRangeMilliMeter = + (tmpuint16 * SignalRate) + 8005c08: fa1f fc8c uxth.w ip, ip + 8005c0c: fb02 fc0c mul.w ip, r2, ip + / (SignalRate + - ((XTalkCompensationRateMegaCps + 8005c10: eba2 0e0e sub.w lr, r2, lr + / (SignalRate + 8005c14: fbbc fcfe udiv ip, ip, lr + XtalkRangeMilliMeter = + 8005c18: fa1f f08c uxth.w r0, ip + tmpuint16 = XtalkRangeMilliMeter; + } + + } + + if (RangeFractionalEnable) { + 8005c1c: 2f00 cmp r7, #0 + 8005c1e: d045 beq.n 8005cac <VL53L0X_GetRangingMeasurementData+0x154> + pRangingMeasurementData->RangeMilliMeter = + (uint16_t)((tmpuint16) >> 2); + 8005c20: 0887 lsrs r7, r0, #2 + pRangingMeasurementData->RangeMilliMeter = + 8005c22: 8127 strh r7, [r4, #8] + pRangingMeasurementData->RangeFractionalPart = + (uint8_t)((tmpuint16 & 0x03) << 6); + 8005c24: b2c0 uxtb r0, r0 + 8005c26: 0180 lsls r0, r0, #6 + pRangingMeasurementData->RangeFractionalPart = + 8005c28: 75e0 strb r0, [r4, #23] + * For a standard definition of RangeStatus, this should + * return 0 in case of good result after a ranging + * The range status depends on the device so call a device + * specific function to obtain the right Status. + */ + Status |= VL53L0X_get_pal_range_status(Dev, DeviceRangeStatus, + 8005c2a: f10d 0037 add.w r0, sp, #55 ; 0x37 + 8005c2e: 9001 str r0, [sp, #4] + 8005c30: 9400 str r4, [sp, #0] + 8005c32: 4628 mov r0, r5 + 8005c34: f002 f88c bl 8007d50 <VL53L0X_get_pal_range_status> + 8005c38: 4330 orrs r0, r6 + 8005c3a: b246 sxtb r6, r0 + SignalRate, EffectiveSpadRtnCount, + pRangingMeasurementData, &PalRangeStatus); + + if (Status == VL53L0X_ERROR_NONE) + 8005c3c: b916 cbnz r6, 8005c44 <VL53L0X_GetRangingMeasurementData+0xec> + pRangingMeasurementData->RangeStatus = PalRangeStatus; + 8005c3e: f89d 3037 ldrb.w r3, [sp, #55] ; 0x37 + 8005c42: 7623 strb r3, [r4, #24] + + } + + if (Status == VL53L0X_ERROR_NONE) { + 8005c44: bb3e cbnz r6, 8005c96 <VL53L0X_GetRangingMeasurementData+0x13e> + /* Copy last read data into Dev buffer */ + LastRangeDataBuffer = PALDevDataGet(Dev, LastRangeMeasure); + 8005c46: af03 add r7, sp, #12 + 8005c48: f105 0c50 add.w ip, r5, #80 ; 0x50 + 8005c4c: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 8005c50: c70f stmia r7!, {r0, r1, r2, r3} + 8005c52: e89c 0007 ldmia.w ip, {r0, r1, r2} + 8005c56: e887 0007 stmia.w r7, {r0, r1, r2} + + LastRangeDataBuffer.RangeMilliMeter = + pRangingMeasurementData->RangeMilliMeter; + 8005c5a: 8923 ldrh r3, [r4, #8] + LastRangeDataBuffer.RangeMilliMeter = + 8005c5c: f8ad 3014 strh.w r3, [sp, #20] + LastRangeDataBuffer.RangeFractionalPart = + pRangingMeasurementData->RangeFractionalPart; + 8005c60: 7de3 ldrb r3, [r4, #23] + LastRangeDataBuffer.RangeFractionalPart = + 8005c62: f88d 3023 strb.w r3, [sp, #35] ; 0x23 + LastRangeDataBuffer.RangeDMaxMilliMeter = + pRangingMeasurementData->RangeDMaxMilliMeter; + 8005c66: 8963 ldrh r3, [r4, #10] + LastRangeDataBuffer.RangeDMaxMilliMeter = + 8005c68: f8ad 3016 strh.w r3, [sp, #22] + LastRangeDataBuffer.MeasurementTimeUsec = + pRangingMeasurementData->MeasurementTimeUsec; + 8005c6c: 6863 ldr r3, [r4, #4] + LastRangeDataBuffer.MeasurementTimeUsec = + 8005c6e: 9304 str r3, [sp, #16] + LastRangeDataBuffer.SignalRateRtnMegaCps = + pRangingMeasurementData->SignalRateRtnMegaCps; + 8005c70: 68e3 ldr r3, [r4, #12] + LastRangeDataBuffer.SignalRateRtnMegaCps = + 8005c72: 9306 str r3, [sp, #24] + LastRangeDataBuffer.AmbientRateRtnMegaCps = + pRangingMeasurementData->AmbientRateRtnMegaCps; + 8005c74: 6923 ldr r3, [r4, #16] + LastRangeDataBuffer.AmbientRateRtnMegaCps = + 8005c76: 9307 str r3, [sp, #28] + LastRangeDataBuffer.EffectiveSpadRtnCount = + pRangingMeasurementData->EffectiveSpadRtnCount; + 8005c78: 8aa3 ldrh r3, [r4, #20] + LastRangeDataBuffer.EffectiveSpadRtnCount = + 8005c7a: f8ad 3020 strh.w r3, [sp, #32] + LastRangeDataBuffer.RangeStatus = + pRangingMeasurementData->RangeStatus; + 8005c7e: 7e23 ldrb r3, [r4, #24] + LastRangeDataBuffer.RangeStatus = + 8005c80: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + + PALDevDataSet(Dev, LastRangeMeasure, LastRangeDataBuffer); + 8005c84: f105 0450 add.w r4, r5, #80 ; 0x50 + 8005c88: ad03 add r5, sp, #12 + 8005c8a: cd0f ldmia r5!, {r0, r1, r2, r3} + 8005c8c: c40f stmia r4!, {r0, r1, r2, r3} + 8005c8e: e895 0007 ldmia.w r5, {r0, r1, r2} + 8005c92: e884 0007 stmia.w r4, {r0, r1, r2} + } + + LOG_FUNCTION_END(Status); + return Status; +} + 8005c96: 4630 mov r0, r6 + 8005c98: b00e add sp, #56 ; 0x38 + 8005c9a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + if (RangeFractionalEnable) + 8005c9e: b117 cbz r7, 8005ca6 <VL53L0X_GetRangingMeasurementData+0x14e> + XtalkRangeMilliMeter = 8888; + 8005ca0: f242 20b8 movw r0, #8888 ; 0x22b8 + 8005ca4: e7ba b.n 8005c1c <VL53L0X_GetRangingMeasurementData+0xc4> + XtalkRangeMilliMeter = 8888 + 8005ca6: f648 20e0 movw r0, #35552 ; 0x8ae0 + 8005caa: e7b7 b.n 8005c1c <VL53L0X_GetRangingMeasurementData+0xc4> + pRangingMeasurementData->RangeMilliMeter = tmpuint16; + 8005cac: 8120 strh r0, [r4, #8] + pRangingMeasurementData->RangeFractionalPart = 0; + 8005cae: 2000 movs r0, #0 + 8005cb0: 75e0 strb r0, [r4, #23] + 8005cb2: e7ba b.n 8005c2a <VL53L0X_GetRangingMeasurementData+0xd2> + 8005cb4: 10624dd3 .word 0x10624dd3 + +08005cb8 <VL53L0X_GetInterruptThresholds>: +} + +VL53L0X_Error VL53L0X_GetInterruptThresholds(VL53L0X_DEV Dev, + VL53L0X_DeviceModes DeviceMode, FixPoint1616_t *pThresholdLow, + FixPoint1616_t *pThresholdHigh) +{ + 8005cb8: b570 push {r4, r5, r6, lr} + 8005cba: b082 sub sp, #8 + 8005cbc: 4606 mov r6, r0 + 8005cbe: 4614 mov r4, r2 + 8005cc0: 461d mov r5, r3 + uint16_t Threshold16; + LOG_FUNCTION_START(""); + + /* no dependency on DeviceMode for Ewok */ + + Status = VL53L0X_RdWord(Dev, VL53L0X_REG_SYSTEM_THRESH_LOW, &Threshold16); + 8005cc2: f10d 0206 add.w r2, sp, #6 + 8005cc6: 210e movs r1, #14 + 8005cc8: f002 fa1e bl 8008108 <VL53L0X_RdWord> + /* Need to multiply by 2 because the FW will apply a x2 */ + *pThresholdLow = (FixPoint1616_t)((0x00fff & Threshold16) << 17); + 8005ccc: f8bd 1006 ldrh.w r1, [sp, #6] + 8005cd0: 4a09 ldr r2, [pc, #36] ; (8005cf8 <VL53L0X_GetInterruptThresholds+0x40>) + 8005cd2: ea02 4241 and.w r2, r2, r1, lsl #17 + 8005cd6: 6022 str r2, [r4, #0] + + if (Status == VL53L0X_ERROR_NONE) { + 8005cd8: b108 cbz r0, 8005cde <VL53L0X_GetInterruptThresholds+0x26> + (FixPoint1616_t)((0x00fff & Threshold16) << 17); + } + + LOG_FUNCTION_END(Status); + return Status; +} + 8005cda: b002 add sp, #8 + 8005cdc: bd70 pop {r4, r5, r6, pc} + Status = VL53L0X_RdWord(Dev, VL53L0X_REG_SYSTEM_THRESH_HIGH, + 8005cde: f10d 0206 add.w r2, sp, #6 + 8005ce2: 210c movs r1, #12 + 8005ce4: 4630 mov r0, r6 + 8005ce6: f002 fa0f bl 8008108 <VL53L0X_RdWord> + (FixPoint1616_t)((0x00fff & Threshold16) << 17); + 8005cea: f8bd 2006 ldrh.w r2, [sp, #6] + 8005cee: 4b02 ldr r3, [pc, #8] ; (8005cf8 <VL53L0X_GetInterruptThresholds+0x40>) + 8005cf0: ea03 4342 and.w r3, r3, r2, lsl #17 + *pThresholdHigh = + 8005cf4: 602b str r3, [r5, #0] + 8005cf6: e7f0 b.n 8005cda <VL53L0X_GetInterruptThresholds+0x22> + 8005cf8: 1ffe0000 .word 0x1ffe0000 + +08005cfc <VL53L0X_CheckAndLoadInterruptSettings>: +{ + 8005cfc: b570 push {r4, r5, r6, lr} + 8005cfe: b082 sub sp, #8 + InterruptConfig = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, + 8005d00: f890 30da ldrb.w r3, [r0, #218] ; 0xda + VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_HIGH) || + 8005d04: 3b01 subs r3, #1 + 8005d06: b2db uxtb r3, r3 + if ((InterruptConfig == + 8005d08: 2b02 cmp r3, #2 + 8005d0a: d903 bls.n 8005d14 <VL53L0X_CheckAndLoadInterruptSettings+0x18> + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 8005d0c: 2500 movs r5, #0 +} + 8005d0e: 4628 mov r0, r5 + 8005d10: b002 add sp, #8 + 8005d12: bd70 pop {r4, r5, r6, pc} + 8005d14: 4604 mov r4, r0 + 8005d16: 460e mov r6, r1 + Status = VL53L0X_GetInterruptThresholds(Dev, + 8005d18: 466b mov r3, sp + 8005d1a: aa01 add r2, sp, #4 + 8005d1c: 2101 movs r1, #1 + 8005d1e: f7ff ffcb bl 8005cb8 <VL53L0X_GetInterruptThresholds> + 8005d22: 4605 mov r5, r0 + if (((ThresholdLow > 255*65536) || + 8005d24: 9b01 ldr r3, [sp, #4] + 8005d26: f5b3 0f7f cmp.w r3, #16711680 ; 0xff0000 + 8005d2a: d803 bhi.n 8005d34 <VL53L0X_CheckAndLoadInterruptSettings+0x38> + (ThresholdHigh > 255*65536)) && + 8005d2c: 9b00 ldr r3, [sp, #0] + if (((ThresholdLow > 255*65536) || + 8005d2e: f5b3 0f7f cmp.w r3, #16711680 ; 0xff0000 + 8005d32: d9ec bls.n 8005d0e <VL53L0X_CheckAndLoadInterruptSettings+0x12> + (ThresholdHigh > 255*65536)) && + 8005d34: 2d00 cmp r5, #0 + 8005d36: d1ea bne.n 8005d0e <VL53L0X_CheckAndLoadInterruptSettings+0x12> + if (StartNotStopFlag != 0) { + 8005d38: b12e cbz r6, 8005d46 <VL53L0X_CheckAndLoadInterruptSettings+0x4a> + Status = VL53L0X_load_tuning_settings(Dev, + 8005d3a: 4911 ldr r1, [pc, #68] ; (8005d80 <VL53L0X_CheckAndLoadInterruptSettings+0x84>) + 8005d3c: 4620 mov r0, r4 + 8005d3e: f001 fdcf bl 80078e0 <VL53L0X_load_tuning_settings> + 8005d42: 4605 mov r5, r0 + 8005d44: e7e3 b.n 8005d0e <VL53L0X_CheckAndLoadInterruptSettings+0x12> + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x04); + 8005d46: 2204 movs r2, #4 + 8005d48: 21ff movs r1, #255 ; 0xff + 8005d4a: 4620 mov r0, r4 + 8005d4c: f002 f986 bl 800805c <VL53L0X_WrByte> + 8005d50: 4305 orrs r5, r0 + 8005d52: b26d sxtb r5, r5 + Status |= VL53L0X_WrByte(Dev, 0x70, 0x00); + 8005d54: 2200 movs r2, #0 + 8005d56: 2170 movs r1, #112 ; 0x70 + 8005d58: 4620 mov r0, r4 + 8005d5a: f002 f97f bl 800805c <VL53L0X_WrByte> + 8005d5e: 4305 orrs r5, r0 + 8005d60: b26d sxtb r5, r5 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x00); + 8005d62: 2200 movs r2, #0 + 8005d64: 21ff movs r1, #255 ; 0xff + 8005d66: 4620 mov r0, r4 + 8005d68: f002 f978 bl 800805c <VL53L0X_WrByte> + 8005d6c: 4305 orrs r5, r0 + 8005d6e: b26d sxtb r5, r5 + Status |= VL53L0X_WrByte(Dev, 0x80, 0x00); + 8005d70: 2200 movs r2, #0 + 8005d72: 2180 movs r1, #128 ; 0x80 + 8005d74: 4620 mov r0, r4 + 8005d76: f002 f971 bl 800805c <VL53L0X_WrByte> + 8005d7a: 4305 orrs r5, r0 + 8005d7c: b26d sxtb r5, r5 + 8005d7e: e7c6 b.n 8005d0e <VL53L0X_CheckAndLoadInterruptSettings+0x12> + 8005d80: 20000660 .word 0x20000660 + +08005d84 <VL53L0X_StartMeasurement>: +{ + 8005d84: b530 push {r4, r5, lr} + 8005d86: b083 sub sp, #12 + 8005d88: 4604 mov r4, r0 + VL53L0X_GetDeviceMode(Dev, &DeviceMode); + 8005d8a: f10d 0107 add.w r1, sp, #7 + 8005d8e: f7ff fb91 bl 80054b4 <VL53L0X_GetDeviceMode> + Status = VL53L0X_WrByte(Dev, 0x80, 0x01); + 8005d92: 2201 movs r2, #1 + 8005d94: 2180 movs r1, #128 ; 0x80 + 8005d96: 4620 mov r0, r4 + 8005d98: f002 f960 bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, 0xFF, 0x01); + 8005d9c: 2201 movs r2, #1 + 8005d9e: 21ff movs r1, #255 ; 0xff + 8005da0: 4620 mov r0, r4 + 8005da2: f002 f95b bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, 0x00, 0x00); + 8005da6: 2200 movs r2, #0 + 8005da8: 4611 mov r1, r2 + 8005daa: 4620 mov r0, r4 + 8005dac: f002 f956 bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, 0x91, PALDevDataGet(Dev, StopVariable)); + 8005db0: f894 213a ldrb.w r2, [r4, #314] ; 0x13a + 8005db4: 2191 movs r1, #145 ; 0x91 + 8005db6: 4620 mov r0, r4 + 8005db8: f002 f950 bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, 0x00, 0x01); + 8005dbc: 2201 movs r2, #1 + 8005dbe: 2100 movs r1, #0 + 8005dc0: 4620 mov r0, r4 + 8005dc2: f002 f94b bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, 0xFF, 0x00); + 8005dc6: 2200 movs r2, #0 + 8005dc8: 21ff movs r1, #255 ; 0xff + 8005dca: 4620 mov r0, r4 + 8005dcc: f002 f946 bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, 0x80, 0x00); + 8005dd0: 2200 movs r2, #0 + 8005dd2: 2180 movs r1, #128 ; 0x80 + 8005dd4: 4620 mov r0, r4 + 8005dd6: f002 f941 bl 800805c <VL53L0X_WrByte> + switch (DeviceMode) { + 8005dda: f89d 3007 ldrb.w r3, [sp, #7] + 8005dde: 2b01 cmp r3, #1 + 8005de0: d02b beq.n 8005e3a <VL53L0X_StartMeasurement+0xb6> + 8005de2: 2b03 cmp r3, #3 + 8005de4: d03a beq.n 8005e5c <VL53L0X_StartMeasurement+0xd8> + 8005de6: b11b cbz r3, 8005df0 <VL53L0X_StartMeasurement+0x6c> + 8005de8: f06f 0007 mvn.w r0, #7 +} + 8005dec: b003 add sp, #12 + 8005dee: bd30 pop {r4, r5, pc} + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSRANGE_START, 0x01); + 8005df0: 2201 movs r2, #1 + 8005df2: 2100 movs r1, #0 + 8005df4: 4620 mov r0, r4 + 8005df6: f002 f931 bl 800805c <VL53L0X_WrByte> + Byte = StartStopByte; + 8005dfa: 2201 movs r2, #1 + 8005dfc: f88d 2006 strb.w r2, [sp, #6] + if (Status == VL53L0X_ERROR_NONE) { + 8005e00: 2800 cmp r0, #0 + 8005e02: d1f3 bne.n 8005dec <VL53L0X_StartMeasurement+0x68> + LoopNb = 0; + 8005e04: 2500 movs r5, #0 + 8005e06: e00f b.n 8005e28 <VL53L0X_StartMeasurement+0xa4> + Status = VL53L0X_RdByte(Dev, + 8005e08: f10d 0206 add.w r2, sp, #6 + 8005e0c: 2100 movs r1, #0 + 8005e0e: 4620 mov r0, r4 + 8005e10: f002 f946 bl 80080a0 <VL53L0X_RdByte> + LoopNb = LoopNb + 1; + 8005e14: 3501 adds r5, #1 + } while (((Byte & StartStopByte) == StartStopByte) + 8005e16: f89d 3006 ldrb.w r3, [sp, #6] + && (LoopNb < VL53L0X_DEFAULT_MAX_LOOP)); + 8005e1a: f013 0f01 tst.w r3, #1 + 8005e1e: d006 beq.n 8005e2e <VL53L0X_StartMeasurement+0xaa> + && (Status == VL53L0X_ERROR_NONE) + 8005e20: b928 cbnz r0, 8005e2e <VL53L0X_StartMeasurement+0xaa> + && (LoopNb < VL53L0X_DEFAULT_MAX_LOOP)); + 8005e22: f5b5 6ffa cmp.w r5, #2000 ; 0x7d0 + 8005e26: d202 bcs.n 8005e2e <VL53L0X_StartMeasurement+0xaa> + if (LoopNb > 0) + 8005e28: 2d00 cmp r5, #0 + 8005e2a: d0f3 beq.n 8005e14 <VL53L0X_StartMeasurement+0x90> + 8005e2c: e7ec b.n 8005e08 <VL53L0X_StartMeasurement+0x84> + if (LoopNb >= VL53L0X_DEFAULT_MAX_LOOP) + 8005e2e: f5b5 6ffa cmp.w r5, #2000 ; 0x7d0 + 8005e32: d3db bcc.n 8005dec <VL53L0X_StartMeasurement+0x68> + Status = VL53L0X_ERROR_TIME_OUT; + 8005e34: f06f 0006 mvn.w r0, #6 + 8005e38: e7d8 b.n 8005dec <VL53L0X_StartMeasurement+0x68> + if (Status == VL53L0X_ERROR_NONE) + 8005e3a: b150 cbz r0, 8005e52 <VL53L0X_StartMeasurement+0xce> + Status = VL53L0X_WrByte(Dev, + 8005e3c: 2202 movs r2, #2 + 8005e3e: 2100 movs r1, #0 + 8005e40: 4620 mov r0, r4 + 8005e42: f002 f90b bl 800805c <VL53L0X_WrByte> + if (Status == VL53L0X_ERROR_NONE) { + 8005e46: 2800 cmp r0, #0 + 8005e48: d1d0 bne.n 8005dec <VL53L0X_StartMeasurement+0x68> + PALDevDataSet(Dev, PalState, VL53L0X_STATE_RUNNING); + 8005e4a: 2304 movs r3, #4 + 8005e4c: f884 3132 strb.w r3, [r4, #306] ; 0x132 + 8005e50: e7cc b.n 8005dec <VL53L0X_StartMeasurement+0x68> + Status = VL53L0X_CheckAndLoadInterruptSettings(Dev, 1); + 8005e52: 2101 movs r1, #1 + 8005e54: 4620 mov r0, r4 + 8005e56: f7ff ff51 bl 8005cfc <VL53L0X_CheckAndLoadInterruptSettings> + 8005e5a: e7ef b.n 8005e3c <VL53L0X_StartMeasurement+0xb8> + if (Status == VL53L0X_ERROR_NONE) + 8005e5c: b150 cbz r0, 8005e74 <VL53L0X_StartMeasurement+0xf0> + Status = VL53L0X_WrByte(Dev, + 8005e5e: 2204 movs r2, #4 + 8005e60: 2100 movs r1, #0 + 8005e62: 4620 mov r0, r4 + 8005e64: f002 f8fa bl 800805c <VL53L0X_WrByte> + if (Status == VL53L0X_ERROR_NONE) { + 8005e68: 2800 cmp r0, #0 + 8005e6a: d1bf bne.n 8005dec <VL53L0X_StartMeasurement+0x68> + PALDevDataSet(Dev, PalState, VL53L0X_STATE_RUNNING); + 8005e6c: 2304 movs r3, #4 + 8005e6e: f884 3132 strb.w r3, [r4, #306] ; 0x132 + 8005e72: e7bb b.n 8005dec <VL53L0X_StartMeasurement+0x68> + Status = VL53L0X_CheckAndLoadInterruptSettings(Dev, 1); + 8005e74: 2101 movs r1, #1 + 8005e76: 4620 mov r0, r4 + 8005e78: f7ff ff40 bl 8005cfc <VL53L0X_CheckAndLoadInterruptSettings> + 8005e7c: e7ef b.n 8005e5e <VL53L0X_StartMeasurement+0xda> + +08005e7e <VL53L0X_PerformSingleMeasurement>: +{ + 8005e7e: b510 push {r4, lr} + 8005e80: b082 sub sp, #8 + 8005e82: 4604 mov r4, r0 + Status = VL53L0X_GetDeviceMode(Dev, &DeviceMode); + 8005e84: f10d 0107 add.w r1, sp, #7 + 8005e88: f7ff fb14 bl 80054b4 <VL53L0X_GetDeviceMode> + if (Status == VL53L0X_ERROR_NONE + 8005e8c: b910 cbnz r0, 8005e94 <VL53L0X_PerformSingleMeasurement+0x16> + && DeviceMode == VL53L0X_DEVICEMODE_SINGLE_RANGING) + 8005e8e: f89d 3007 ldrb.w r3, [sp, #7] + 8005e92: b14b cbz r3, 8005ea8 <VL53L0X_PerformSingleMeasurement+0x2a> + if (Status == VL53L0X_ERROR_NONE) + 8005e94: b160 cbz r0, 8005eb0 <VL53L0X_PerformSingleMeasurement+0x32> + if (Status == VL53L0X_ERROR_NONE + 8005e96: b928 cbnz r0, 8005ea4 <VL53L0X_PerformSingleMeasurement+0x26> + && DeviceMode == VL53L0X_DEVICEMODE_SINGLE_RANGING) + 8005e98: f89d 3007 ldrb.w r3, [sp, #7] + 8005e9c: b913 cbnz r3, 8005ea4 <VL53L0X_PerformSingleMeasurement+0x26> + PALDevDataSet(Dev, PalState, VL53L0X_STATE_IDLE); + 8005e9e: 2303 movs r3, #3 + 8005ea0: f884 3132 strb.w r3, [r4, #306] ; 0x132 +} + 8005ea4: b002 add sp, #8 + 8005ea6: bd10 pop {r4, pc} + Status = VL53L0X_StartMeasurement(Dev); + 8005ea8: 4620 mov r0, r4 + 8005eaa: f7ff ff6b bl 8005d84 <VL53L0X_StartMeasurement> + 8005eae: e7f1 b.n 8005e94 <VL53L0X_PerformSingleMeasurement+0x16> + Status = VL53L0X_measurement_poll_for_completion(Dev); + 8005eb0: 4620 mov r0, r4 + 8005eb2: f000 fe04 bl 8006abe <VL53L0X_measurement_poll_for_completion> + 8005eb6: e7ee b.n 8005e96 <VL53L0X_PerformSingleMeasurement+0x18> + +08005eb8 <VL53L0X_ClearInterruptMask>: + return Status; +} + +/* Group PAL Interrupt Functions */ +VL53L0X_Error VL53L0X_ClearInterruptMask(VL53L0X_DEV Dev, uint32_t InterruptMask) +{ + 8005eb8: b570 push {r4, r5, r6, lr} + 8005eba: b082 sub sp, #8 + 8005ebc: 4606 mov r6, r0 + uint8_t LoopCount; + uint8_t Byte; + LOG_FUNCTION_START(""); + + /* clear bit 0 range interrupt, bit 1 error interrupt */ + LoopCount = 0; + 8005ebe: 2500 movs r5, #0 + do { + Status = VL53L0X_WrByte(Dev, + 8005ec0: 2201 movs r2, #1 + 8005ec2: 210b movs r1, #11 + 8005ec4: 4630 mov r0, r6 + 8005ec6: f002 f8c9 bl 800805c <VL53L0X_WrByte> + 8005eca: 4604 mov r4, r0 + VL53L0X_REG_SYSTEM_INTERRUPT_CLEAR, 0x01); + Status |= VL53L0X_WrByte(Dev, + 8005ecc: 2200 movs r2, #0 + 8005ece: 210b movs r1, #11 + 8005ed0: 4630 mov r0, r6 + 8005ed2: f002 f8c3 bl 800805c <VL53L0X_WrByte> + 8005ed6: 4304 orrs r4, r0 + 8005ed8: b264 sxtb r4, r4 + VL53L0X_REG_SYSTEM_INTERRUPT_CLEAR, 0x00); + Status |= VL53L0X_RdByte(Dev, + 8005eda: f10d 0207 add.w r2, sp, #7 + 8005ede: 2113 movs r1, #19 + 8005ee0: 4630 mov r0, r6 + 8005ee2: f002 f8dd bl 80080a0 <VL53L0X_RdByte> + 8005ee6: 4304 orrs r4, r0 + 8005ee8: b260 sxtb r0, r4 + VL53L0X_REG_RESULT_INTERRUPT_STATUS, &Byte); + LoopCount++; + 8005eea: 3501 adds r5, #1 + 8005eec: b2ed uxtb r5, r5 + } while (((Byte & 0x07) != 0x00) + 8005eee: f89d 3007 ldrb.w r3, [sp, #7] + && (LoopCount < 3) + && (Status == VL53L0X_ERROR_NONE)); + 8005ef2: f013 0f07 tst.w r3, #7 + 8005ef6: d003 beq.n 8005f00 <VL53L0X_ClearInterruptMask+0x48> + && (LoopCount < 3) + 8005ef8: 2d02 cmp r5, #2 + 8005efa: d801 bhi.n 8005f00 <VL53L0X_ClearInterruptMask+0x48> + && (Status == VL53L0X_ERROR_NONE)); + 8005efc: 2800 cmp r0, #0 + 8005efe: d0df beq.n 8005ec0 <VL53L0X_ClearInterruptMask+0x8> + + + if (LoopCount >= 3) + 8005f00: 2d02 cmp r5, #2 + 8005f02: d801 bhi.n 8005f08 <VL53L0X_ClearInterruptMask+0x50> + Status = VL53L0X_ERROR_INTERRUPT_NOT_CLEARED; + + LOG_FUNCTION_END(Status); + return Status; +} + 8005f04: b002 add sp, #8 + 8005f06: bd70 pop {r4, r5, r6, pc} + Status = VL53L0X_ERROR_INTERRUPT_NOT_CLEARED; + 8005f08: f06f 000b mvn.w r0, #11 + 8005f0c: e7fa b.n 8005f04 <VL53L0X_ClearInterruptMask+0x4c> + +08005f0e <VL53L0X_PerformSingleRangingMeasurement>: +{ + 8005f0e: b538 push {r3, r4, r5, lr} + 8005f10: 4604 mov r4, r0 + 8005f12: 460d mov r5, r1 + Status = VL53L0X_SetDeviceMode(Dev, VL53L0X_DEVICEMODE_SINGLE_RANGING); + 8005f14: 2100 movs r1, #0 + 8005f16: f7ff fabb bl 8005490 <VL53L0X_SetDeviceMode> + if (Status == VL53L0X_ERROR_NONE) + 8005f1a: b110 cbz r0, 8005f22 <VL53L0X_PerformSingleRangingMeasurement+0x14> + if (Status == VL53L0X_ERROR_NONE) + 8005f1c: b128 cbz r0, 8005f2a <VL53L0X_PerformSingleRangingMeasurement+0x1c> + if (Status == VL53L0X_ERROR_NONE) + 8005f1e: b148 cbz r0, 8005f34 <VL53L0X_PerformSingleRangingMeasurement+0x26> +} + 8005f20: bd38 pop {r3, r4, r5, pc} + Status = VL53L0X_PerformSingleMeasurement(Dev); + 8005f22: 4620 mov r0, r4 + 8005f24: f7ff ffab bl 8005e7e <VL53L0X_PerformSingleMeasurement> + 8005f28: e7f8 b.n 8005f1c <VL53L0X_PerformSingleRangingMeasurement+0xe> + Status = VL53L0X_GetRangingMeasurementData(Dev, + 8005f2a: 4629 mov r1, r5 + 8005f2c: 4620 mov r0, r4 + 8005f2e: f7ff fe13 bl 8005b58 <VL53L0X_GetRangingMeasurementData> + 8005f32: e7f4 b.n 8005f1e <VL53L0X_PerformSingleRangingMeasurement+0x10> + Status = VL53L0X_ClearInterruptMask(Dev, 0); + 8005f34: 2100 movs r1, #0 + 8005f36: 4620 mov r0, r4 + 8005f38: f7ff ffbe bl 8005eb8 <VL53L0X_ClearInterruptMask> + 8005f3c: e7f0 b.n 8005f20 <VL53L0X_PerformSingleRangingMeasurement+0x12> + +08005f3e <VL53L0X_SetGpioConfig>: +{ + 8005f3e: b570 push {r4, r5, r6, lr} + 8005f40: f89d 6010 ldrb.w r6, [sp, #16] + if (Pin != 0) { + 8005f44: 2900 cmp r1, #0 + 8005f46: f040 8099 bne.w 800607c <VL53L0X_SetGpioConfig+0x13e> + 8005f4a: 4605 mov r5, r0 + 8005f4c: 461c mov r4, r3 + } else if (DeviceMode == VL53L0X_DEVICEMODE_GPIO_DRIVE) { + 8005f4e: 2a14 cmp r2, #20 + 8005f50: d009 beq.n 8005f66 <VL53L0X_SetGpioConfig+0x28> + } else if (DeviceMode == VL53L0X_DEVICEMODE_GPIO_OSC) { + 8005f52: 2a15 cmp r2, #21 + 8005f54: d010 beq.n 8005f78 <VL53L0X_SetGpioConfig+0x3a> + switch (Functionality) { + 8005f56: 2c04 cmp r4, #4 + 8005f58: f200 8088 bhi.w 800606c <VL53L0X_SetGpioConfig+0x12e> + 8005f5c: e8df f004 tbb [pc, r4] + 8005f60: 74747474 .word 0x74747474 + 8005f64: 74 .byte 0x74 + 8005f65: 00 .byte 0x00 + if (Polarity == VL53L0X_INTERRUPTPOLARITY_LOW) + 8005f66: b92e cbnz r6, 8005f74 <VL53L0X_SetGpioConfig+0x36> + data = 0x10; + 8005f68: 2210 movs r2, #16 + Status = VL53L0X_WrByte(Dev, + 8005f6a: 2184 movs r1, #132 ; 0x84 + 8005f6c: 4628 mov r0, r5 + 8005f6e: f002 f875 bl 800805c <VL53L0X_WrByte> + 8005f72: e07a b.n 800606a <VL53L0X_SetGpioConfig+0x12c> + data = 1; + 8005f74: 2201 movs r2, #1 + 8005f76: e7f8 b.n 8005f6a <VL53L0X_SetGpioConfig+0x2c> + Status |= VL53L0X_WrByte(Dev, 0xff, 0x01); + 8005f78: 2201 movs r2, #1 + 8005f7a: 21ff movs r1, #255 ; 0xff + 8005f7c: f002 f86e bl 800805c <VL53L0X_WrByte> + 8005f80: 4604 mov r4, r0 + Status |= VL53L0X_WrByte(Dev, 0x00, 0x00); + 8005f82: 2200 movs r2, #0 + 8005f84: 4611 mov r1, r2 + 8005f86: 4628 mov r0, r5 + 8005f88: f002 f868 bl 800805c <VL53L0X_WrByte> + 8005f8c: 4304 orrs r4, r0 + 8005f8e: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x00); + 8005f90: 2200 movs r2, #0 + 8005f92: 21ff movs r1, #255 ; 0xff + 8005f94: 4628 mov r0, r5 + 8005f96: f002 f861 bl 800805c <VL53L0X_WrByte> + 8005f9a: 4304 orrs r4, r0 + 8005f9c: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x80, 0x01); + 8005f9e: 2201 movs r2, #1 + 8005fa0: 2180 movs r1, #128 ; 0x80 + 8005fa2: 4628 mov r0, r5 + 8005fa4: f002 f85a bl 800805c <VL53L0X_WrByte> + 8005fa8: 4304 orrs r4, r0 + 8005faa: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x85, 0x02); + 8005fac: 2202 movs r2, #2 + 8005fae: 2185 movs r1, #133 ; 0x85 + 8005fb0: 4628 mov r0, r5 + 8005fb2: f002 f853 bl 800805c <VL53L0X_WrByte> + 8005fb6: 4304 orrs r4, r0 + 8005fb8: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x04); + 8005fba: 2204 movs r2, #4 + 8005fbc: 21ff movs r1, #255 ; 0xff + 8005fbe: 4628 mov r0, r5 + 8005fc0: f002 f84c bl 800805c <VL53L0X_WrByte> + 8005fc4: 4304 orrs r4, r0 + 8005fc6: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xcd, 0x00); + 8005fc8: 2200 movs r2, #0 + 8005fca: 21cd movs r1, #205 ; 0xcd + 8005fcc: 4628 mov r0, r5 + 8005fce: f002 f845 bl 800805c <VL53L0X_WrByte> + 8005fd2: 4304 orrs r4, r0 + 8005fd4: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xcc, 0x11); + 8005fd6: 2211 movs r2, #17 + 8005fd8: 21cc movs r1, #204 ; 0xcc + 8005fda: 4628 mov r0, r5 + 8005fdc: f002 f83e bl 800805c <VL53L0X_WrByte> + 8005fe0: 4304 orrs r4, r0 + 8005fe2: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x07); + 8005fe4: 2207 movs r2, #7 + 8005fe6: 21ff movs r1, #255 ; 0xff + 8005fe8: 4628 mov r0, r5 + 8005fea: f002 f837 bl 800805c <VL53L0X_WrByte> + 8005fee: 4304 orrs r4, r0 + 8005ff0: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xbe, 0x00); + 8005ff2: 2200 movs r2, #0 + 8005ff4: 21be movs r1, #190 ; 0xbe + 8005ff6: 4628 mov r0, r5 + 8005ff8: f002 f830 bl 800805c <VL53L0X_WrByte> + 8005ffc: 4304 orrs r4, r0 + 8005ffe: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x06); + 8006000: 2206 movs r2, #6 + 8006002: 21ff movs r1, #255 ; 0xff + 8006004: 4628 mov r0, r5 + 8006006: f002 f829 bl 800805c <VL53L0X_WrByte> + 800600a: 4304 orrs r4, r0 + 800600c: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xcc, 0x09); + 800600e: 2209 movs r2, #9 + 8006010: 21cc movs r1, #204 ; 0xcc + 8006012: 4628 mov r0, r5 + 8006014: f002 f822 bl 800805c <VL53L0X_WrByte> + 8006018: 4304 orrs r4, r0 + 800601a: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x00); + 800601c: 2200 movs r2, #0 + 800601e: 21ff movs r1, #255 ; 0xff + 8006020: 4628 mov r0, r5 + 8006022: f002 f81b bl 800805c <VL53L0X_WrByte> + 8006026: 4304 orrs r4, r0 + 8006028: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x01); + 800602a: 2201 movs r2, #1 + 800602c: 21ff movs r1, #255 ; 0xff + 800602e: 4628 mov r0, r5 + 8006030: f002 f814 bl 800805c <VL53L0X_WrByte> + 8006034: 4304 orrs r4, r0 + 8006036: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x00, 0x00); + 8006038: 2200 movs r2, #0 + 800603a: 4611 mov r1, r2 + 800603c: 4628 mov r0, r5 + 800603e: f002 f80d bl 800805c <VL53L0X_WrByte> + 8006042: 4320 orrs r0, r4 + 8006044: b240 sxtb r0, r0 + 8006046: e010 b.n 800606a <VL53L0X_SetGpioConfig+0x12c> + Status = VL53L0X_WrByte(Dev, + 8006048: 4622 mov r2, r4 + 800604a: 210a movs r1, #10 + 800604c: f002 f806 bl 800805c <VL53L0X_WrByte> + if (Status == VL53L0X_ERROR_NONE) { + 8006050: b938 cbnz r0, 8006062 <VL53L0X_SetGpioConfig+0x124> + if (Polarity == VL53L0X_INTERRUPTPOLARITY_LOW) + 8006052: b106 cbz r6, 8006056 <VL53L0X_SetGpioConfig+0x118> + data = (uint8_t)(1 << 4); + 8006054: 2610 movs r6, #16 + Status = VL53L0X_UpdateByte(Dev, + 8006056: 4633 mov r3, r6 + 8006058: 22ef movs r2, #239 ; 0xef + 800605a: 2184 movs r1, #132 ; 0x84 + 800605c: 4628 mov r0, r5 + 800605e: f002 f839 bl 80080d4 <VL53L0X_UpdateByte> + if (Status == VL53L0X_ERROR_NONE) + 8006062: b908 cbnz r0, 8006068 <VL53L0X_SetGpioConfig+0x12a> + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 8006064: f885 40da strb.w r4, [r5, #218] ; 0xda + if (Status == VL53L0X_ERROR_NONE) + 8006068: b118 cbz r0, 8006072 <VL53L0X_SetGpioConfig+0x134> +} + 800606a: bd70 pop {r4, r5, r6, pc} + switch (Functionality) { + 800606c: f06f 000a mvn.w r0, #10 + 8006070: e7ee b.n 8006050 <VL53L0X_SetGpioConfig+0x112> + Status = VL53L0X_ClearInterruptMask(Dev, 0); + 8006072: 2100 movs r1, #0 + 8006074: 4628 mov r0, r5 + 8006076: f7ff ff1f bl 8005eb8 <VL53L0X_ClearInterruptMask> + 800607a: e7f6 b.n 800606a <VL53L0X_SetGpioConfig+0x12c> + Status = VL53L0X_ERROR_GPIO_NOT_EXISTING; + 800607c: f06f 0009 mvn.w r0, #9 + 8006080: e7f3 b.n 800606a <VL53L0X_SetGpioConfig+0x12c> + ... + +08006084 <VL53L0X_StaticInit>: +{ + 8006084: b530 push {r4, r5, lr} + 8006086: b097 sub sp, #92 ; 0x5c + 8006088: 4605 mov r5, r0 + VL53L0X_DeviceParameters_t CurrentParameters = {0}; + 800608a: 2240 movs r2, #64 ; 0x40 + 800608c: 2100 movs r1, #0 + 800608e: a806 add r0, sp, #24 + 8006090: f011 fb16 bl 80176c0 <memset> + uint16_t tempword = 0; + 8006094: 2300 movs r3, #0 + 8006096: f8ad 3016 strh.w r3, [sp, #22] + uint8_t tempbyte = 0; + 800609a: f88d 3015 strb.w r3, [sp, #21] + uint8_t isApertureSpads = 0; + 800609e: f88d 3014 strb.w r3, [sp, #20] + uint32_t refSpadCount = 0; + 80060a2: 9304 str r3, [sp, #16] + Status = VL53L0X_get_info_from_device(Dev, 1); + 80060a4: 2101 movs r1, #1 + 80060a6: 4628 mov r0, r5 + 80060a8: f000 fd6c bl 8006b84 <VL53L0X_get_info_from_device> + count = (uint32_t)VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, + 80060ac: f895 1113 ldrb.w r1, [r5, #275] ; 0x113 + ApertureSpads = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, + 80060b0: f895 2114 ldrb.w r2, [r5, #276] ; 0x114 + if ((ApertureSpads > 1) || + 80060b4: 2a01 cmp r2, #1 + 80060b6: d803 bhi.n 80060c0 <VL53L0X_StaticInit+0x3c> + 80060b8: d010 beq.n 80060dc <VL53L0X_StaticInit+0x58> + ((ApertureSpads == 1) && (count > 32)) || + 80060ba: b992 cbnz r2, 80060e2 <VL53L0X_StaticInit+0x5e> + ((ApertureSpads == 0) && (count > 12))) + 80060bc: 290c cmp r1, #12 + 80060be: d910 bls.n 80060e2 <VL53L0X_StaticInit+0x5e> + Status = VL53L0X_perform_ref_spad_management(Dev, &refSpadCount, + 80060c0: aa05 add r2, sp, #20 + 80060c2: a904 add r1, sp, #16 + 80060c4: 4628 mov r0, r5 + 80060c6: f000 fb93 bl 80067f0 <VL53L0X_perform_ref_spad_management> + 80060ca: 4604 mov r4, r0 + if (Status == VL53L0X_ERROR_NONE) { + 80060cc: b974 cbnz r4, 80060ec <VL53L0X_StaticInit+0x68> + UseInternalTuningSettings = PALDevDataGet(Dev, + 80060ce: f895 3150 ldrb.w r3, [r5, #336] ; 0x150 + if (UseInternalTuningSettings == 0) + 80060d2: 2b00 cmp r3, #0 + 80060d4: d157 bne.n 8006186 <VL53L0X_StaticInit+0x102> + pTuningSettingBuffer = PALDevDataGet(Dev, + 80060d6: f8d5 114c ldr.w r1, [r5, #332] ; 0x14c + 80060da: e008 b.n 80060ee <VL53L0X_StaticInit+0x6a> + ((ApertureSpads == 1) && (count > 32)) || + 80060dc: 2920 cmp r1, #32 + 80060de: d8ef bhi.n 80060c0 <VL53L0X_StaticInit+0x3c> + 80060e0: e7eb b.n 80060ba <VL53L0X_StaticInit+0x36> + Status = VL53L0X_set_reference_spads(Dev, count, ApertureSpads); + 80060e2: 4628 mov r0, r5 + 80060e4: f000 fa03 bl 80064ee <VL53L0X_set_reference_spads> + 80060e8: 4604 mov r4, r0 + 80060ea: e7ef b.n 80060cc <VL53L0X_StaticInit+0x48> + pTuningSettingBuffer = DefaultTuningSettings; + 80060ec: 495f ldr r1, [pc, #380] ; (800626c <VL53L0X_StaticInit+0x1e8>) + if (Status == VL53L0X_ERROR_NONE) + 80060ee: 2c00 cmp r4, #0 + 80060f0: d04b beq.n 800618a <VL53L0X_StaticInit+0x106> + if (Status == VL53L0X_ERROR_NONE) { + 80060f2: 2c00 cmp r4, #0 + 80060f4: d04e beq.n 8006194 <VL53L0X_StaticInit+0x110> + if (Status == VL53L0X_ERROR_NONE) { + 80060f6: 2c00 cmp r4, #0 + 80060f8: d055 beq.n 80061a6 <VL53L0X_StaticInit+0x122> + if (Status == VL53L0X_ERROR_NONE) { + 80060fa: b924 cbnz r4, 8006106 <VL53L0X_StaticInit+0x82> + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, OscFrequencyMHz, + 80060fc: f8bd 3016 ldrh.w r3, [sp, #22] + 8006100: 011b lsls r3, r3, #4 + 8006102: f8c5 30d4 str.w r3, [r5, #212] ; 0xd4 + if (Status == VL53L0X_ERROR_NONE) + 8006106: 2c00 cmp r4, #0 + 8006108: d063 beq.n 80061d2 <VL53L0X_StaticInit+0x14e> + if (Status == VL53L0X_ERROR_NONE) { + 800610a: 2c00 cmp r4, #0 + 800610c: d067 beq.n 80061de <VL53L0X_StaticInit+0x15a> + if (Status == VL53L0X_ERROR_NONE) + 800610e: b99c cbnz r4, 8006138 <VL53L0X_StaticInit+0xb4> + PALDevDataSet(Dev, CurrentParameters, CurrentParameters); + 8006110: f105 0c10 add.w ip, r5, #16 + 8006114: f10d 0e18 add.w lr, sp, #24 + 8006118: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 800611c: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 8006120: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 8006124: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 8006128: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 800612c: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 8006130: e89e 000f ldmia.w lr, {r0, r1, r2, r3} + 8006134: e88c 000f stmia.w ip, {r0, r1, r2, r3} + if (Status == VL53L0X_ERROR_NONE) { + 8006138: 2c00 cmp r4, #0 + 800613a: d05d beq.n 80061f8 <VL53L0X_StaticInit+0x174> + if (Status == VL53L0X_ERROR_NONE) + 800613c: 2c00 cmp r4, #0 + 800613e: d069 beq.n 8006214 <VL53L0X_StaticInit+0x190> + if (Status == VL53L0X_ERROR_NONE) + 8006140: 2c00 cmp r4, #0 + 8006142: d06e beq.n 8006222 <VL53L0X_StaticInit+0x19e> + if (Status == VL53L0X_ERROR_NONE) + 8006144: b914 cbnz r4, 800614c <VL53L0X_StaticInit+0xc8> + PALDevDataSet(Dev, PalState, VL53L0X_STATE_IDLE); + 8006146: 2303 movs r3, #3 + 8006148: f885 3132 strb.w r3, [r5, #306] ; 0x132 + if (Status == VL53L0X_ERROR_NONE) { + 800614c: 2c00 cmp r4, #0 + 800614e: d06f beq.n 8006230 <VL53L0X_StaticInit+0x1ac> + if (Status == VL53L0X_ERROR_NONE) { + 8006150: b91c cbnz r4, 800615a <VL53L0X_StaticInit+0xd6> + VL53L0X_SETDEVICESPECIFICPARAMETER( + 8006152: f89d 300f ldrb.w r3, [sp, #15] + 8006156: f885 30e8 strb.w r3, [r5, #232] ; 0xe8 + if (Status == VL53L0X_ERROR_NONE) { + 800615a: 2c00 cmp r4, #0 + 800615c: d070 beq.n 8006240 <VL53L0X_StaticInit+0x1bc> + if (Status == VL53L0X_ERROR_NONE) { + 800615e: b91c cbnz r4, 8006168 <VL53L0X_StaticInit+0xe4> + VL53L0X_SETDEVICESPECIFICPARAMETER( + 8006160: f89d 300f ldrb.w r3, [sp, #15] + 8006164: f885 30e0 strb.w r3, [r5, #224] ; 0xe0 + if (Status == VL53L0X_ERROR_NONE) { + 8006168: 2c00 cmp r4, #0 + 800616a: d071 beq.n 8006250 <VL53L0X_StaticInit+0x1cc> + if (Status == VL53L0X_ERROR_NONE) { + 800616c: b914 cbnz r4, 8006174 <VL53L0X_StaticInit+0xf0> + VL53L0X_SETDEVICESPECIFICPARAMETER( + 800616e: 9b02 ldr r3, [sp, #8] + 8006170: f8c5 30e4 str.w r3, [r5, #228] ; 0xe4 + if (Status == VL53L0X_ERROR_NONE) { + 8006174: 2c00 cmp r4, #0 + 8006176: d072 beq.n 800625e <VL53L0X_StaticInit+0x1da> + if (Status == VL53L0X_ERROR_NONE) { + 8006178: b914 cbnz r4, 8006180 <VL53L0X_StaticInit+0xfc> + VL53L0X_SETDEVICESPECIFICPARAMETER( + 800617a: 9b02 ldr r3, [sp, #8] + 800617c: f8c5 30dc str.w r3, [r5, #220] ; 0xdc +} + 8006180: 4620 mov r0, r4 + 8006182: b017 add sp, #92 ; 0x5c + 8006184: bd30 pop {r4, r5, pc} + pTuningSettingBuffer = DefaultTuningSettings; + 8006186: 4939 ldr r1, [pc, #228] ; (800626c <VL53L0X_StaticInit+0x1e8>) + 8006188: e7b1 b.n 80060ee <VL53L0X_StaticInit+0x6a> + Status = VL53L0X_load_tuning_settings(Dev, pTuningSettingBuffer); + 800618a: 4628 mov r0, r5 + 800618c: f001 fba8 bl 80078e0 <VL53L0X_load_tuning_settings> + 8006190: 4604 mov r4, r0 + 8006192: e7ae b.n 80060f2 <VL53L0X_StaticInit+0x6e> + Status = VL53L0X_SetGpioConfig(Dev, 0, 0, + 8006194: 2100 movs r1, #0 + 8006196: 9100 str r1, [sp, #0] + 8006198: 2304 movs r3, #4 + 800619a: 460a mov r2, r1 + 800619c: 4628 mov r0, r5 + 800619e: f7ff fece bl 8005f3e <VL53L0X_SetGpioConfig> + 80061a2: 4604 mov r4, r0 + 80061a4: e7a7 b.n 80060f6 <VL53L0X_StaticInit+0x72> + Status = VL53L0X_WrByte(Dev, 0xFF, 0x01); + 80061a6: 2201 movs r2, #1 + 80061a8: 21ff movs r1, #255 ; 0xff + 80061aa: 4628 mov r0, r5 + 80061ac: f001 ff56 bl 800805c <VL53L0X_WrByte> + 80061b0: 4604 mov r4, r0 + Status |= VL53L0X_RdWord(Dev, 0x84, &tempword); + 80061b2: f10d 0216 add.w r2, sp, #22 + 80061b6: 2184 movs r1, #132 ; 0x84 + 80061b8: 4628 mov r0, r5 + 80061ba: f001 ffa5 bl 8008108 <VL53L0X_RdWord> + 80061be: 4304 orrs r4, r0 + 80061c0: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x00); + 80061c2: 2200 movs r2, #0 + 80061c4: 21ff movs r1, #255 ; 0xff + 80061c6: 4628 mov r0, r5 + 80061c8: f001 ff48 bl 800805c <VL53L0X_WrByte> + 80061cc: 4304 orrs r4, r0 + 80061ce: b264 sxtb r4, r4 + 80061d0: e793 b.n 80060fa <VL53L0X_StaticInit+0x76> + Status = VL53L0X_GetDeviceParameters(Dev, &CurrentParameters); + 80061d2: a906 add r1, sp, #24 + 80061d4: 4628 mov r0, r5 + 80061d6: f7ff fb7d bl 80058d4 <VL53L0X_GetDeviceParameters> + 80061da: 4604 mov r4, r0 + 80061dc: e795 b.n 800610a <VL53L0X_StaticInit+0x86> + Status = VL53L0X_GetFractionEnable(Dev, &tempbyte); + 80061de: f10d 0115 add.w r1, sp, #21 + 80061e2: 4628 mov r0, r5 + 80061e4: f7ff f96a bl 80054bc <VL53L0X_GetFractionEnable> + if (Status == VL53L0X_ERROR_NONE) + 80061e8: 4604 mov r4, r0 + 80061ea: 2800 cmp r0, #0 + 80061ec: d18f bne.n 800610e <VL53L0X_StaticInit+0x8a> + PALDevDataSet(Dev, RangeFractionalEnable, tempbyte); + 80061ee: f89d 3015 ldrb.w r3, [sp, #21] + 80061f2: f885 3131 strb.w r3, [r5, #305] ; 0x131 + 80061f6: e78a b.n 800610e <VL53L0X_StaticInit+0x8a> + Status = VL53L0X_RdByte(Dev, + 80061f8: f10d 0215 add.w r2, sp, #21 + 80061fc: 2101 movs r1, #1 + 80061fe: 4628 mov r0, r5 + 8006200: f001 ff4e bl 80080a0 <VL53L0X_RdByte> + if (Status == VL53L0X_ERROR_NONE) + 8006204: 4604 mov r4, r0 + 8006206: 2800 cmp r0, #0 + 8006208: d198 bne.n 800613c <VL53L0X_StaticInit+0xb8> + PALDevDataSet(Dev, SequenceConfig, tempbyte); + 800620a: f89d 3015 ldrb.w r3, [sp, #21] + 800620e: f885 3130 strb.w r3, [r5, #304] ; 0x130 + 8006212: e793 b.n 800613c <VL53L0X_StaticInit+0xb8> + Status = VL53L0X_SetSequenceStepEnable(Dev, + 8006214: 2200 movs r2, #0 + 8006216: 4611 mov r1, r2 + 8006218: 4628 mov r0, r5 + 800621a: f7ff f96b bl 80054f4 <VL53L0X_SetSequenceStepEnable> + 800621e: 4604 mov r4, r0 + 8006220: e78e b.n 8006140 <VL53L0X_StaticInit+0xbc> + Status = VL53L0X_SetSequenceStepEnable(Dev, + 8006222: 2200 movs r2, #0 + 8006224: 2102 movs r1, #2 + 8006226: 4628 mov r0, r5 + 8006228: f7ff f964 bl 80054f4 <VL53L0X_SetSequenceStepEnable> + 800622c: 4604 mov r4, r0 + 800622e: e789 b.n 8006144 <VL53L0X_StaticInit+0xc0> + Status = VL53L0X_GetVcselPulsePeriod( + 8006230: f10d 020f add.w r2, sp, #15 + 8006234: 2100 movs r1, #0 + 8006236: 4628 mov r0, r5 + 8006238: f7ff f958 bl 80054ec <VL53L0X_GetVcselPulsePeriod> + 800623c: 4604 mov r4, r0 + 800623e: e787 b.n 8006150 <VL53L0X_StaticInit+0xcc> + Status = VL53L0X_GetVcselPulsePeriod( + 8006240: f10d 020f add.w r2, sp, #15 + 8006244: 2101 movs r1, #1 + 8006246: 4628 mov r0, r5 + 8006248: f7ff f950 bl 80054ec <VL53L0X_GetVcselPulsePeriod> + 800624c: 4604 mov r4, r0 + 800624e: e786 b.n 800615e <VL53L0X_StaticInit+0xda> + Status = get_sequence_step_timeout( + 8006250: aa02 add r2, sp, #8 + 8006252: 2103 movs r1, #3 + 8006254: 4628 mov r0, r5 + 8006256: f000 ffa1 bl 800719c <get_sequence_step_timeout> + 800625a: 4604 mov r4, r0 + 800625c: e786 b.n 800616c <VL53L0X_StaticInit+0xe8> + Status = get_sequence_step_timeout( + 800625e: aa02 add r2, sp, #8 + 8006260: 2104 movs r1, #4 + 8006262: 4628 mov r0, r5 + 8006264: f000 ff9a bl 800719c <get_sequence_step_timeout> + 8006268: 4604 mov r4, r0 + 800626a: e785 b.n 8006178 <VL53L0X_StaticInit+0xf4> + 800626c: 2000056c .word 0x2000056c + +08006270 <VL53L0X_GetInterruptMaskStatus>: + +VL53L0X_Error VL53L0X_GetInterruptMaskStatus(VL53L0X_DEV Dev, + uint32_t *pInterruptMaskStatus) +{ + 8006270: b510 push {r4, lr} + 8006272: b082 sub sp, #8 + 8006274: 460c mov r4, r1 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t Byte; + LOG_FUNCTION_START(""); + + Status = VL53L0X_RdByte(Dev, VL53L0X_REG_RESULT_INTERRUPT_STATUS, &Byte); + 8006276: f10d 0207 add.w r2, sp, #7 + 800627a: 2113 movs r1, #19 + 800627c: f001 ff10 bl 80080a0 <VL53L0X_RdByte> + *pInterruptMaskStatus = Byte & 0x07; + 8006280: f89d 3007 ldrb.w r3, [sp, #7] + 8006284: f003 0207 and.w r2, r3, #7 + 8006288: 6022 str r2, [r4, #0] + + if (Byte & 0x18) + 800628a: f013 0f18 tst.w r3, #24 + 800628e: d101 bne.n 8006294 <VL53L0X_GetInterruptMaskStatus+0x24> + Status = VL53L0X_ERROR_RANGE_ERROR; + + LOG_FUNCTION_END(Status); + return Status; +} + 8006290: b002 add sp, #8 + 8006292: bd10 pop {r4, pc} + Status = VL53L0X_ERROR_RANGE_ERROR; + 8006294: f06f 0005 mvn.w r0, #5 + 8006298: e7fa b.n 8006290 <VL53L0X_GetInterruptMaskStatus+0x20> + +0800629a <VL53L0X_GetMeasurementDataReady>: +{ + 800629a: b510 push {r4, lr} + 800629c: b082 sub sp, #8 + 800629e: 460c mov r4, r1 + InterruptConfig = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, + 80062a0: f890 30da ldrb.w r3, [r0, #218] ; 0xda + if (InterruptConfig == + 80062a4: 2b04 cmp r3, #4 + 80062a6: d00d beq.n 80062c4 <VL53L0X_GetMeasurementDataReady+0x2a> + Status = VL53L0X_RdByte(Dev, VL53L0X_REG_RESULT_RANGE_STATUS, + 80062a8: f10d 0207 add.w r2, sp, #7 + 80062ac: 2114 movs r1, #20 + 80062ae: f001 fef7 bl 80080a0 <VL53L0X_RdByte> + if (Status == VL53L0X_ERROR_NONE) { + 80062b2: b978 cbnz r0, 80062d4 <VL53L0X_GetMeasurementDataReady+0x3a> + if (SysRangeStatusRegister & 0x01) + 80062b4: f89d 3007 ldrb.w r3, [sp, #7] + 80062b8: f013 0f01 tst.w r3, #1 + 80062bc: d00f beq.n 80062de <VL53L0X_GetMeasurementDataReady+0x44> + *pMeasurementDataReady = 1; + 80062be: 2301 movs r3, #1 + 80062c0: 7023 strb r3, [r4, #0] + 80062c2: e007 b.n 80062d4 <VL53L0X_GetMeasurementDataReady+0x3a> + Status = VL53L0X_GetInterruptMaskStatus(Dev, &InterruptMask); + 80062c4: 4669 mov r1, sp + 80062c6: f7ff ffd3 bl 8006270 <VL53L0X_GetInterruptMaskStatus> + if (InterruptMask == + 80062ca: 9b00 ldr r3, [sp, #0] + 80062cc: 2b04 cmp r3, #4 + 80062ce: d003 beq.n 80062d8 <VL53L0X_GetMeasurementDataReady+0x3e> + *pMeasurementDataReady = 0; + 80062d0: 2300 movs r3, #0 + 80062d2: 7023 strb r3, [r4, #0] +} + 80062d4: b002 add sp, #8 + 80062d6: bd10 pop {r4, pc} + *pMeasurementDataReady = 1; + 80062d8: 2301 movs r3, #1 + 80062da: 7023 strb r3, [r4, #0] + 80062dc: e7fa b.n 80062d4 <VL53L0X_GetMeasurementDataReady+0x3a> + *pMeasurementDataReady = 0; + 80062de: 2300 movs r3, #0 + 80062e0: 7023 strb r3, [r4, #0] + 80062e2: e7f7 b.n 80062d4 <VL53L0X_GetMeasurementDataReady+0x3a> + +080062e4 <VL53L0X_PerformRefSpadManagement>: + return Status; +} + +VL53L0X_Error VL53L0X_PerformRefSpadManagement(VL53L0X_DEV Dev, + uint32_t *refSpadCount, uint8_t *isApertureSpads) +{ + 80062e4: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + LOG_FUNCTION_START(""); + + Status = VL53L0X_perform_ref_spad_management(Dev, refSpadCount, + 80062e6: f000 fa83 bl 80067f0 <VL53L0X_perform_ref_spad_management> + isApertureSpads); + + LOG_FUNCTION_END(Status); + + return Status; +} + 80062ea: bd08 pop {r3, pc} + +080062ec <VL53L0X_get_offset_calibration_data_micro_meter>: + return Status; +} + +VL53L0X_Error VL53L0X_get_offset_calibration_data_micro_meter(VL53L0X_DEV Dev, + int32_t *pOffsetCalibrationDataMicroMeter) +{ + 80062ec: b510 push {r4, lr} + 80062ee: b082 sub sp, #8 + 80062f0: 460c mov r4, r1 + int16_t cMaxOffset = 2047; + int16_t cOffsetRange = 4096; + + /* Note that offset has 10.2 format */ + + Status = VL53L0X_RdWord(Dev, + 80062f2: f10d 0206 add.w r2, sp, #6 + 80062f6: 2128 movs r1, #40 ; 0x28 + 80062f8: f001 ff06 bl 8008108 <VL53L0X_RdWord> + VL53L0X_REG_ALGO_PART_TO_PART_RANGE_OFFSET_MM, + &RangeOffsetRegister); + + if (Status == VL53L0X_ERROR_NONE) { + 80062fc: b970 cbnz r0, 800631c <VL53L0X_get_offset_calibration_data_micro_meter+0x30> + RangeOffsetRegister = (RangeOffsetRegister & 0x0fff); + 80062fe: f8bd 3006 ldrh.w r3, [sp, #6] + 8006302: f3c3 030b ubfx r3, r3, #0, #12 + 8006306: f8ad 3006 strh.w r3, [sp, #6] + + /* Apply 12 bit 2's compliment conversion */ + if (RangeOffsetRegister > cMaxOffset) + 800630a: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 800630e: d307 bcc.n 8006320 <VL53L0X_get_offset_calibration_data_micro_meter+0x34> + *pOffsetCalibrationDataMicroMeter = + (int16_t)(RangeOffsetRegister - cOffsetRange) + 8006310: f5a3 5380 sub.w r3, r3, #4096 ; 0x1000 + * 250; + 8006314: 22fa movs r2, #250 ; 0xfa + 8006316: fb02 f303 mul.w r3, r2, r3 + *pOffsetCalibrationDataMicroMeter = + 800631a: 6023 str r3, [r4, #0] + (int16_t)RangeOffsetRegister * 250; + + } + + return Status; +} + 800631c: b002 add sp, #8 + 800631e: bd10 pop {r4, pc} + (int16_t)RangeOffsetRegister * 250; + 8006320: 22fa movs r2, #250 ; 0xfa + 8006322: fb02 f303 mul.w r3, r2, r3 + *pOffsetCalibrationDataMicroMeter = + 8006326: 6023 str r3, [r4, #0] + 8006328: e7f8 b.n 800631c <VL53L0X_get_offset_calibration_data_micro_meter+0x30> + +0800632a <get_next_good_spad>: + return Status; +} + +void get_next_good_spad(uint8_t goodSpadArray[], uint32_t size, + uint32_t curr, int32_t *next) +{ + 800632a: b570 push {r4, r5, r6, lr} + 800632c: 4604 mov r4, r0 + 800632e: 4608 mov r0, r1 + 8006330: 461e mov r6, r3 + * + * The coarse index is the byte index of the array and the fine index is + * the index of the bit within each byte. + */ + + *next = -1; + 8006332: f04f 33ff mov.w r3, #4294967295 + 8006336: 6033 str r3, [r6, #0] + + startIndex = curr / cSpadsPerByte; + 8006338: 08d3 lsrs r3, r2, #3 + fineOffset = curr % cSpadsPerByte; + 800633a: f002 0507 and.w r5, r2, #7 + + for (coarseIndex = startIndex; ((coarseIndex < size) && !success); + 800633e: 469e mov lr, r3 + uint8_t success = 0; + 8006340: 2100 movs r1, #0 + for (coarseIndex = startIndex; ((coarseIndex < size) && !success); + 8006342: e00b b.n 800635c <get_next_good_spad+0x32> + dataByte = goodSpadArray[coarseIndex]; + + if (coarseIndex == startIndex) { + /* locate the bit position of the provided current + * spad bit before iterating */ + dataByte >>= fineOffset; + 8006344: fa4c fc05 asr.w ip, ip, r5 + 8006348: fa5f fc8c uxtb.w ip, ip + fineIndex = fineOffset; + 800634c: 462a mov r2, r5 + 800634e: e00d b.n 800636c <get_next_good_spad+0x42> + } + + while (fineIndex < cSpadsPerByte) { + if ((dataByte & 0x1) == 1) { + success = 1; + *next = coarseIndex * cSpadsPerByte + fineIndex; + 8006350: eb02 02ce add.w r2, r2, lr, lsl #3 + 8006354: 6032 str r2, [r6, #0] + success = 1; + 8006356: 2101 movs r1, #1 + coarseIndex++) { + 8006358: f10e 0e01 add.w lr, lr, #1 + for (coarseIndex = startIndex; ((coarseIndex < size) && !success); + 800635c: 4586 cmp lr, r0 + 800635e: d20e bcs.n 800637e <get_next_good_spad+0x54> + 8006360: b969 cbnz r1, 800637e <get_next_good_spad+0x54> + dataByte = goodSpadArray[coarseIndex]; + 8006362: f814 c00e ldrb.w ip, [r4, lr] + if (coarseIndex == startIndex) { + 8006366: 459e cmp lr, r3 + 8006368: d0ec beq.n 8006344 <get_next_good_spad+0x1a> + fineIndex = 0; + 800636a: 2200 movs r2, #0 + while (fineIndex < cSpadsPerByte) { + 800636c: 2a07 cmp r2, #7 + 800636e: d8f3 bhi.n 8006358 <get_next_good_spad+0x2e> + if ((dataByte & 0x1) == 1) { + 8006370: f01c 0f01 tst.w ip, #1 + 8006374: d1ec bne.n 8006350 <get_next_good_spad+0x26> + break; + } + dataByte >>= 1; + 8006376: ea4f 0c5c mov.w ip, ip, lsr #1 + fineIndex++; + 800637a: 3201 adds r2, #1 + 800637c: e7f6 b.n 800636c <get_next_good_spad+0x42> + } + } +} + 800637e: bd70 pop {r4, r5, r6, pc} + +08006380 <is_aperture>: + * This function reports if a given spad index is an aperture SPAD by + * deriving the quadrant. + */ + uint32_t quadrant; + uint8_t isAperture = 1; + quadrant = spadIndex >> 6; + 8006380: 0980 lsrs r0, r0, #6 + if (refArrayQuadrants[quadrant] == REF_ARRAY_SPAD_0) + 8006382: 4b04 ldr r3, [pc, #16] ; (8006394 <is_aperture+0x14>) + 8006384: f853 3020 ldr.w r3, [r3, r0, lsl #2] + 8006388: b10b cbz r3, 800638e <is_aperture+0xe> + uint8_t isAperture = 1; + 800638a: 2001 movs r0, #1 + 800638c: 4770 bx lr + isAperture = 0; + 800638e: 2000 movs r0, #0 + + return isAperture; +} + 8006390: 4770 bx lr + 8006392: bf00 nop + 8006394: 20000818 .word 0x20000818 + +08006398 <enable_spad_bit>: + VL53L0X_Error status = VL53L0X_ERROR_NONE; + uint32_t cSpadsPerByte = 8; + uint32_t coarseIndex; + uint32_t fineIndex; + + coarseIndex = spadIndex / cSpadsPerByte; + 8006398: ea4f 0cd2 mov.w ip, r2, lsr #3 + fineIndex = spadIndex % cSpadsPerByte; + 800639c: f002 0307 and.w r3, r2, #7 + if (coarseIndex >= size) + 80063a0: ebb1 0fd2 cmp.w r1, r2, lsr #3 + 80063a4: d908 bls.n 80063b8 <enable_spad_bit+0x20> + status = VL53L0X_ERROR_REF_SPAD_INIT; + else + spadArray[coarseIndex] |= (1 << fineIndex); + 80063a6: 2201 movs r2, #1 + 80063a8: 409a lsls r2, r3 + 80063aa: f810 300c ldrb.w r3, [r0, ip] + 80063ae: 4313 orrs r3, r2 + 80063b0: f800 300c strb.w r3, [r0, ip] + VL53L0X_Error status = VL53L0X_ERROR_NONE; + 80063b4: 2000 movs r0, #0 + 80063b6: 4770 bx lr + status = VL53L0X_ERROR_REF_SPAD_INIT; + 80063b8: f06f 0031 mvn.w r0, #49 ; 0x31 + + return status; +} + 80063bc: 4770 bx lr + +080063be <set_ref_spad_map>: + + return status; +} + +VL53L0X_Error set_ref_spad_map(VL53L0X_DEV Dev, uint8_t *refSpadArray) +{ + 80063be: b508 push {r3, lr} + 80063c0: 460a mov r2, r1 + VL53L0X_Error status = VL53L0X_WriteMulti(Dev, + 80063c2: 2306 movs r3, #6 + 80063c4: 21b0 movs r1, #176 ; 0xb0 + 80063c6: f001 fe0f bl 8007fe8 <VL53L0X_WriteMulti> + VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_0, + refSpadArray, 6); + return status; +} + 80063ca: bd08 pop {r3, pc} + +080063cc <get_ref_spad_map>: + +VL53L0X_Error get_ref_spad_map(VL53L0X_DEV Dev, uint8_t *refSpadArray) +{ + 80063cc: b508 push {r3, lr} + 80063ce: 460a mov r2, r1 + VL53L0X_Error status = VL53L0X_ReadMulti(Dev, + 80063d0: 2306 movs r3, #6 + 80063d2: 21b0 movs r1, #176 ; 0xb0 + 80063d4: f001 fe26 bl 8008024 <VL53L0X_ReadMulti> + VL53L0X_REG_GLOBAL_CONFIG_SPAD_ENABLES_REF_0, + refSpadArray, + 6); + return status; +} + 80063d8: bd08 pop {r3, pc} + +080063da <enable_ref_spads>: + uint32_t size, + uint32_t start, + uint32_t offset, + uint32_t spadCount, + uint32_t *lastSpad) +{ + 80063da: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80063de: b087 sub sp, #28 + 80063e0: 9001 str r0, [sp, #4] + 80063e2: 4689 mov r9, r1 + 80063e4: 9200 str r2, [sp, #0] + 80063e6: 4698 mov r8, r3 + 80063e8: 9e10 ldr r6, [sp, #64] ; 0x40 + 80063ea: f8dd b044 ldr.w fp, [sp, #68] ; 0x44 + 80063ee: 9f12 ldr r7, [sp, #72] ; 0x48 + 80063f0: f8dd a04c ldr.w sl, [sp, #76] ; 0x4c + VL53L0X_Error status = VL53L0X_ERROR_NONE; + uint32_t index; + uint32_t i; + int32_t nextGoodSpad = offset; + 80063f4: 9705 str r7, [sp, #20] + * This function applies to only aperture or only non-aperture spads. + * Checks are performed to ensure this. + */ + + currentSpad = offset; + for (index = 0; index < spadCount; index++) { + 80063f6: 2500 movs r5, #0 + 80063f8: e006 b.n 8006408 <enable_ref_spads+0x2e> + */ + status = VL53L0X_ERROR_REF_SPAD_INIT; + break; + } + currentSpad = (uint32_t)nextGoodSpad; + enable_spad_bit(spadArray, size, currentSpad); + 80063fa: 4622 mov r2, r4 + 80063fc: 4631 mov r1, r6 + 80063fe: 4640 mov r0, r8 + 8006400: f7ff ffca bl 8006398 <enable_spad_bit> + currentSpad++; + 8006404: 1c67 adds r7, r4, #1 + for (index = 0; index < spadCount; index++) { + 8006406: 3501 adds r5, #1 + 8006408: 4555 cmp r5, sl + 800640a: d212 bcs.n 8006432 <enable_ref_spads+0x58> + get_next_good_spad(goodSpadArray, size, currentSpad, + 800640c: ab05 add r3, sp, #20 + 800640e: 463a mov r2, r7 + 8006410: 4631 mov r1, r6 + 8006412: 9800 ldr r0, [sp, #0] + 8006414: f7ff ff89 bl 800632a <get_next_good_spad> + if (nextGoodSpad == -1) { + 8006418: 9c05 ldr r4, [sp, #20] + 800641a: f1b4 3fff cmp.w r4, #4294967295 + 800641e: d010 beq.n 8006442 <enable_ref_spads+0x68> + if (is_aperture(start + nextGoodSpad) != apertureSpads) { + 8006420: eb04 000b add.w r0, r4, fp + 8006424: f7ff ffac bl 8006380 <is_aperture> + 8006428: 4548 cmp r0, r9 + 800642a: d0e6 beq.n 80063fa <enable_ref_spads+0x20> + status = VL53L0X_ERROR_REF_SPAD_INIT; + 800642c: f06f 0031 mvn.w r0, #49 ; 0x31 + 8006430: e000 b.n 8006434 <enable_ref_spads+0x5a> + VL53L0X_Error status = VL53L0X_ERROR_NONE; + 8006432: 2000 movs r0, #0 + } + *lastSpad = currentSpad; + 8006434: 9b14 ldr r3, [sp, #80] ; 0x50 + 8006436: 601f str r7, [r3, #0] + + if (status == VL53L0X_ERROR_NONE) + 8006438: b130 cbz r0, 8006448 <enable_ref_spads+0x6e> + status = set_ref_spad_map(Dev, spadArray); + + + if (status == VL53L0X_ERROR_NONE) { + 800643a: b150 cbz r0, 8006452 <enable_ref_spads+0x78> + } + i++; + } + } + return status; +} + 800643c: b007 add sp, #28 + 800643e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + status = VL53L0X_ERROR_REF_SPAD_INIT; + 8006442: f06f 0031 mvn.w r0, #49 ; 0x31 + 8006446: e7f5 b.n 8006434 <enable_ref_spads+0x5a> + status = set_ref_spad_map(Dev, spadArray); + 8006448: 4641 mov r1, r8 + 800644a: 9801 ldr r0, [sp, #4] + 800644c: f7ff ffb7 bl 80063be <set_ref_spad_map> + 8006450: e7f3 b.n 800643a <enable_ref_spads+0x60> + status = get_ref_spad_map(Dev, checkSpadArray); + 8006452: a903 add r1, sp, #12 + 8006454: 9801 ldr r0, [sp, #4] + 8006456: f7ff ffb9 bl 80063cc <get_ref_spad_map> + i = 0; + 800645a: 2300 movs r3, #0 + while (i < size) { + 800645c: 42b3 cmp r3, r6 + 800645e: d2ed bcs.n 800643c <enable_ref_spads+0x62> + if (spadArray[i] != checkSpadArray[i]) { + 8006460: f818 1003 ldrb.w r1, [r8, r3] + 8006464: f103 0218 add.w r2, r3, #24 + 8006468: 446a add r2, sp + 800646a: f812 2c0c ldrb.w r2, [r2, #-12] + 800646e: 4291 cmp r1, r2 + 8006470: d101 bne.n 8006476 <enable_ref_spads+0x9c> + i++; + 8006472: 3301 adds r3, #1 + 8006474: e7f2 b.n 800645c <enable_ref_spads+0x82> + status = VL53L0X_ERROR_REF_SPAD_INIT; + 8006476: f06f 0031 mvn.w r0, #49 ; 0x31 + 800647a: e7df b.n 800643c <enable_ref_spads+0x62> + +0800647c <perform_ref_signal_measurement>: + + +VL53L0X_Error perform_ref_signal_measurement(VL53L0X_DEV Dev, + uint16_t *refSignalRate) +{ + 800647c: b570 push {r4, r5, r6, lr} + 800647e: b088 sub sp, #32 + 8006480: 4604 mov r4, r0 + 8006482: 460d mov r5, r1 + + /* store the value of the sequence config, + * this will be reset before the end of the function + */ + + SequenceConfig = PALDevDataGet(Dev, SequenceConfig); + 8006484: f890 6130 ldrb.w r6, [r0, #304] ; 0x130 + + /* + * This function performs a reference signal rate measurement. + */ + if (status == VL53L0X_ERROR_NONE) + status = VL53L0X_WrByte(Dev, + 8006488: 22c0 movs r2, #192 ; 0xc0 + 800648a: 2101 movs r1, #1 + 800648c: f001 fde6 bl 800805c <VL53L0X_WrByte> + VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, 0xC0); + + if (status == VL53L0X_ERROR_NONE) + 8006490: 4603 mov r3, r0 + 8006492: b130 cbz r0, 80064a2 <perform_ref_signal_measurement+0x26> + status = VL53L0X_PerformSingleRangingMeasurement(Dev, + &rangingMeasurementData); + + if (status == VL53L0X_ERROR_NONE) + 8006494: b15b cbz r3, 80064ae <perform_ref_signal_measurement+0x32> + status = VL53L0X_WrByte(Dev, 0xFF, 0x01); + + if (status == VL53L0X_ERROR_NONE) + 8006496: b18b cbz r3, 80064bc <perform_ref_signal_measurement+0x40> + status = VL53L0X_RdWord(Dev, + VL53L0X_REG_RESULT_PEAK_SIGNAL_RATE_REF, + refSignalRate); + + if (status == VL53L0X_ERROR_NONE) + 8006498: b1bb cbz r3, 80064ca <perform_ref_signal_measurement+0x4e> + status = VL53L0X_WrByte(Dev, 0xFF, 0x00); + + if (status == VL53L0X_ERROR_NONE) { + 800649a: b1eb cbz r3, 80064d8 <perform_ref_signal_measurement+0x5c> + if (status == VL53L0X_ERROR_NONE) + PALDevDataSet(Dev, SequenceConfig, SequenceConfig); + } + + return status; +} + 800649c: 4618 mov r0, r3 + 800649e: b008 add sp, #32 + 80064a0: bd70 pop {r4, r5, r6, pc} + status = VL53L0X_PerformSingleRangingMeasurement(Dev, + 80064a2: a901 add r1, sp, #4 + 80064a4: 4620 mov r0, r4 + 80064a6: f7ff fd32 bl 8005f0e <VL53L0X_PerformSingleRangingMeasurement> + 80064aa: 4603 mov r3, r0 + 80064ac: e7f2 b.n 8006494 <perform_ref_signal_measurement+0x18> + status = VL53L0X_WrByte(Dev, 0xFF, 0x01); + 80064ae: 2201 movs r2, #1 + 80064b0: 21ff movs r1, #255 ; 0xff + 80064b2: 4620 mov r0, r4 + 80064b4: f001 fdd2 bl 800805c <VL53L0X_WrByte> + 80064b8: 4603 mov r3, r0 + 80064ba: e7ec b.n 8006496 <perform_ref_signal_measurement+0x1a> + status = VL53L0X_RdWord(Dev, + 80064bc: 462a mov r2, r5 + 80064be: 21b6 movs r1, #182 ; 0xb6 + 80064c0: 4620 mov r0, r4 + 80064c2: f001 fe21 bl 8008108 <VL53L0X_RdWord> + 80064c6: 4603 mov r3, r0 + 80064c8: e7e6 b.n 8006498 <perform_ref_signal_measurement+0x1c> + status = VL53L0X_WrByte(Dev, 0xFF, 0x00); + 80064ca: 2200 movs r2, #0 + 80064cc: 21ff movs r1, #255 ; 0xff + 80064ce: 4620 mov r0, r4 + 80064d0: f001 fdc4 bl 800805c <VL53L0X_WrByte> + 80064d4: 4603 mov r3, r0 + 80064d6: e7e0 b.n 800649a <perform_ref_signal_measurement+0x1e> + status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, + 80064d8: 4632 mov r2, r6 + 80064da: 2101 movs r1, #1 + 80064dc: 4620 mov r0, r4 + 80064de: f001 fdbd bl 800805c <VL53L0X_WrByte> + if (status == VL53L0X_ERROR_NONE) + 80064e2: 4603 mov r3, r0 + 80064e4: 2800 cmp r0, #0 + 80064e6: d1d9 bne.n 800649c <perform_ref_signal_measurement+0x20> + PALDevDataSet(Dev, SequenceConfig, SequenceConfig); + 80064e8: f884 6130 strb.w r6, [r4, #304] ; 0x130 + 80064ec: e7d6 b.n 800649c <perform_ref_signal_measurement+0x20> + +080064ee <VL53L0X_set_reference_spads>: + return Status; +} + +VL53L0X_Error VL53L0X_set_reference_spads(VL53L0X_DEV Dev, + uint32_t count, uint8_t isApertureSpads) +{ + 80064ee: b5f0 push {r4, r5, r6, r7, lr} + 80064f0: b089 sub sp, #36 ; 0x24 + 80064f2: 4605 mov r5, r0 + 80064f4: 460f mov r7, r1 + 80064f6: 4616 mov r6, r2 + * aperture or + * non-aperture, as requested. + * The good spad map will be applied. + */ + + Status = VL53L0X_WrByte(Dev, 0xFF, 0x01); + 80064f8: 2201 movs r2, #1 + 80064fa: 21ff movs r1, #255 ; 0xff + 80064fc: f001 fdae bl 800805c <VL53L0X_WrByte> + + if (Status == VL53L0X_ERROR_NONE) + 8006500: 4603 mov r3, r0 + 8006502: b120 cbz r0, 800650e <VL53L0X_set_reference_spads+0x20> + Status = VL53L0X_WrByte(Dev, + VL53L0X_REG_DYNAMIC_SPAD_REF_EN_START_OFFSET, 0x00); + + if (Status == VL53L0X_ERROR_NONE) + 8006504: b153 cbz r3, 800651c <VL53L0X_set_reference_spads+0x2e> + Status = VL53L0X_WrByte(Dev, + VL53L0X_REG_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD, 0x2C); + + if (Status == VL53L0X_ERROR_NONE) + 8006506: b183 cbz r3, 800652a <VL53L0X_set_reference_spads+0x3c> + Status = VL53L0X_WrByte(Dev, 0xFF, 0x00); + + if (Status == VL53L0X_ERROR_NONE) + 8006508: b1b3 cbz r3, 8006538 <VL53L0X_set_reference_spads+0x4a> +{ + 800650a: 2300 movs r3, #0 + 800650c: e01f b.n 800654e <VL53L0X_set_reference_spads+0x60> + Status = VL53L0X_WrByte(Dev, + 800650e: 2200 movs r2, #0 + 8006510: 214f movs r1, #79 ; 0x4f + 8006512: 4628 mov r0, r5 + 8006514: f001 fda2 bl 800805c <VL53L0X_WrByte> + 8006518: 4603 mov r3, r0 + 800651a: e7f3 b.n 8006504 <VL53L0X_set_reference_spads+0x16> + Status = VL53L0X_WrByte(Dev, + 800651c: 222c movs r2, #44 ; 0x2c + 800651e: 214e movs r1, #78 ; 0x4e + 8006520: 4628 mov r0, r5 + 8006522: f001 fd9b bl 800805c <VL53L0X_WrByte> + 8006526: 4603 mov r3, r0 + 8006528: e7ed b.n 8006506 <VL53L0X_set_reference_spads+0x18> + Status = VL53L0X_WrByte(Dev, 0xFF, 0x00); + 800652a: 2200 movs r2, #0 + 800652c: 21ff movs r1, #255 ; 0xff + 800652e: 4628 mov r0, r5 + 8006530: f001 fd94 bl 800805c <VL53L0X_WrByte> + 8006534: 4603 mov r3, r0 + 8006536: e7e7 b.n 8006508 <VL53L0X_set_reference_spads+0x1a> + Status = VL53L0X_WrByte(Dev, + 8006538: 22b4 movs r2, #180 ; 0xb4 + 800653a: 21b6 movs r1, #182 ; 0xb6 + 800653c: 4628 mov r0, r5 + 800653e: f001 fd8d bl 800805c <VL53L0X_WrByte> + 8006542: e7e2 b.n 800650a <VL53L0X_set_reference_spads+0x1c> + VL53L0X_REG_GLOBAL_CONFIG_REF_EN_START_SELECT, + startSelect); + + for (index = 0; index < spadArraySize; index++) + Dev->Data.SpadData.RefSpadEnables[index] = 0; + 8006544: 18e8 adds r0, r5, r3 + 8006546: 2400 movs r4, #0 + 8006548: f880 4124 strb.w r4, [r0, #292] ; 0x124 + for (index = 0; index < spadArraySize; index++) + 800654c: 3301 adds r3, #1 + 800654e: 2b05 cmp r3, #5 + 8006550: d9f8 bls.n 8006544 <VL53L0X_set_reference_spads+0x56> + + if (isApertureSpads) { + 8006552: b9d6 cbnz r6, 800658a <VL53L0X_set_reference_spads+0x9c> + uint32_t currentSpadIndex = 0; + 8006554: 2400 movs r4, #0 + while ((is_aperture(startSelect + currentSpadIndex) == 0) && + (currentSpadIndex < maxSpadCount)) { + currentSpadIndex++; + } + } + Status = enable_ref_spads(Dev, + 8006556: ab07 add r3, sp, #28 + 8006558: 9304 str r3, [sp, #16] + 800655a: 9703 str r7, [sp, #12] + 800655c: 9402 str r4, [sp, #8] + 800655e: 23b4 movs r3, #180 ; 0xb4 + 8006560: 9301 str r3, [sp, #4] + 8006562: 2306 movs r3, #6 + 8006564: 9300 str r3, [sp, #0] + 8006566: f505 7392 add.w r3, r5, #292 ; 0x124 + 800656a: f505 7295 add.w r2, r5, #298 ; 0x12a + 800656e: 4631 mov r1, r6 + 8006570: 4628 mov r0, r5 + 8006572: f7ff ff32 bl 80063da <enable_ref_spads> + startSelect, + currentSpadIndex, + count, + &lastSpadIndex); + + if (Status == VL53L0X_ERROR_NONE) { + 8006576: b930 cbnz r0, 8006586 <VL53L0X_set_reference_spads+0x98> + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, RefSpadsInitialised, 1); + 8006578: 2301 movs r3, #1 + 800657a: f885 3115 strb.w r3, [r5, #277] ; 0x115 + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 800657e: f885 7113 strb.w r7, [r5, #275] ; 0x113 + ReferenceSpadCount, (uint8_t)(count)); + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 8006582: f885 6114 strb.w r6, [r5, #276] ; 0x114 + ReferenceSpadType, isApertureSpads); + } + + return Status; +} + 8006586: b009 add sp, #36 ; 0x24 + 8006588: bdf0 pop {r4, r5, r6, r7, pc} + uint32_t currentSpadIndex = 0; + 800658a: 2400 movs r4, #0 + while ((is_aperture(startSelect + currentSpadIndex) == 0) && + 800658c: f104 00b4 add.w r0, r4, #180 ; 0xb4 + 8006590: f7ff fef6 bl 8006380 <is_aperture> + 8006594: 2800 cmp r0, #0 + 8006596: d1de bne.n 8006556 <VL53L0X_set_reference_spads+0x68> + 8006598: 2c2b cmp r4, #43 ; 0x2b + 800659a: d8dc bhi.n 8006556 <VL53L0X_set_reference_spads+0x68> + currentSpadIndex++; + 800659c: 3401 adds r4, #1 + 800659e: e7f5 b.n 800658c <VL53L0X_set_reference_spads+0x9e> + +080065a0 <VL53L0X_perform_single_ref_calibration>: +} + + +VL53L0X_Error VL53L0X_perform_single_ref_calibration(VL53L0X_DEV Dev, + uint8_t vhv_init_byte) +{ + 80065a0: b510 push {r4, lr} + 80065a2: 4604 mov r4, r0 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + + if (Status == VL53L0X_ERROR_NONE) + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSRANGE_START, + 80065a4: f041 0201 orr.w r2, r1, #1 + 80065a8: 2100 movs r1, #0 + 80065aa: f001 fd57 bl 800805c <VL53L0X_WrByte> + VL53L0X_REG_SYSRANGE_MODE_START_STOP | + vhv_init_byte); + + if (Status == VL53L0X_ERROR_NONE) + 80065ae: b110 cbz r0, 80065b6 <VL53L0X_perform_single_ref_calibration+0x16> + Status = VL53L0X_measurement_poll_for_completion(Dev); + + if (Status == VL53L0X_ERROR_NONE) + 80065b0: b128 cbz r0, 80065be <VL53L0X_perform_single_ref_calibration+0x1e> + Status = VL53L0X_ClearInterruptMask(Dev, 0); + + if (Status == VL53L0X_ERROR_NONE) + 80065b2: b148 cbz r0, 80065c8 <VL53L0X_perform_single_ref_calibration+0x28> + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSRANGE_START, 0x00); + + return Status; +} + 80065b4: bd10 pop {r4, pc} + Status = VL53L0X_measurement_poll_for_completion(Dev); + 80065b6: 4620 mov r0, r4 + 80065b8: f000 fa81 bl 8006abe <VL53L0X_measurement_poll_for_completion> + 80065bc: e7f8 b.n 80065b0 <VL53L0X_perform_single_ref_calibration+0x10> + Status = VL53L0X_ClearInterruptMask(Dev, 0); + 80065be: 2100 movs r1, #0 + 80065c0: 4620 mov r0, r4 + 80065c2: f7ff fc79 bl 8005eb8 <VL53L0X_ClearInterruptMask> + 80065c6: e7f4 b.n 80065b2 <VL53L0X_perform_single_ref_calibration+0x12> + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSRANGE_START, 0x00); + 80065c8: 2200 movs r2, #0 + 80065ca: 4611 mov r1, r2 + 80065cc: 4620 mov r0, r4 + 80065ce: f001 fd45 bl 800805c <VL53L0X_WrByte> + 80065d2: e7ef b.n 80065b4 <VL53L0X_perform_single_ref_calibration+0x14> + +080065d4 <VL53L0X_ref_calibration_io>: + +VL53L0X_Error VL53L0X_ref_calibration_io(VL53L0X_DEV Dev, uint8_t read_not_write, + uint8_t VhvSettings, uint8_t PhaseCal, + uint8_t *pVhvSettings, uint8_t *pPhaseCal, + const uint8_t vhv_enable, const uint8_t phase_enable) +{ + 80065d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80065d8: b083 sub sp, #12 + 80065da: 4605 mov r5, r0 + 80065dc: 460e mov r6, r1 + 80065de: 4690 mov r8, r2 + 80065e0: 461f mov r7, r3 + 80065e2: f89d a038 ldrb.w sl, [sp, #56] ; 0x38 + 80065e6: f89d 903c ldrb.w r9, [sp, #60] ; 0x3c + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t PhaseCalint = 0; + 80065ea: f04f 0b00 mov.w fp, #0 + 80065ee: f88d b007 strb.w fp, [sp, #7] + + /* Read VHV from device */ + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x01); + 80065f2: 2201 movs r2, #1 + 80065f4: 21ff movs r1, #255 ; 0xff + 80065f6: f001 fd31 bl 800805c <VL53L0X_WrByte> + 80065fa: 4604 mov r4, r0 + Status |= VL53L0X_WrByte(Dev, 0x00, 0x00); + 80065fc: 465a mov r2, fp + 80065fe: 4659 mov r1, fp + 8006600: 4628 mov r0, r5 + 8006602: f001 fd2b bl 800805c <VL53L0X_WrByte> + 8006606: 4304 orrs r4, r0 + 8006608: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x00); + 800660a: 465a mov r2, fp + 800660c: 21ff movs r1, #255 ; 0xff + 800660e: 4628 mov r0, r5 + 8006610: f001 fd24 bl 800805c <VL53L0X_WrByte> + 8006614: 4304 orrs r4, r0 + 8006616: b264 sxtb r4, r4 + + if (read_not_write) { + 8006618: b3a6 cbz r6, 8006684 <VL53L0X_ref_calibration_io+0xb0> + if (vhv_enable) + 800661a: f1ba 0f00 cmp.w sl, #0 + 800661e: d120 bne.n 8006662 <VL53L0X_ref_calibration_io+0x8e> + Status |= VL53L0X_RdByte(Dev, 0xCB, pVhvSettings); + if (phase_enable) + 8006620: f1b9 0f00 cmp.w r9, #0 + 8006624: d125 bne.n 8006672 <VL53L0X_ref_calibration_io+0x9e> + Status |= VL53L0X_WrByte(Dev, 0xCB, VhvSettings); + if (phase_enable) + Status |= VL53L0X_UpdateByte(Dev, 0xEE, 0x80, PhaseCal); + } + + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x01); + 8006626: 2201 movs r2, #1 + 8006628: 21ff movs r1, #255 ; 0xff + 800662a: 4628 mov r0, r5 + 800662c: f001 fd16 bl 800805c <VL53L0X_WrByte> + 8006630: 4304 orrs r4, r0 + 8006632: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x00, 0x01); + 8006634: 2201 movs r2, #1 + 8006636: 2100 movs r1, #0 + 8006638: 4628 mov r0, r5 + 800663a: f001 fd0f bl 800805c <VL53L0X_WrByte> + 800663e: 4304 orrs r4, r0 + 8006640: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x00); + 8006642: 2200 movs r2, #0 + 8006644: 21ff movs r1, #255 ; 0xff + 8006646: 4628 mov r0, r5 + 8006648: f001 fd08 bl 800805c <VL53L0X_WrByte> + 800664c: 4320 orrs r0, r4 + + *pPhaseCal = (uint8_t)(PhaseCalint&0xEF); + 800664e: f89d 3007 ldrb.w r3, [sp, #7] + 8006652: f003 03ef and.w r3, r3, #239 ; 0xef + 8006656: 9a0d ldr r2, [sp, #52] ; 0x34 + 8006658: 7013 strb r3, [r2, #0] + + return Status; +} + 800665a: b240 sxtb r0, r0 + 800665c: b003 add sp, #12 + 800665e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + Status |= VL53L0X_RdByte(Dev, 0xCB, pVhvSettings); + 8006662: 9a0c ldr r2, [sp, #48] ; 0x30 + 8006664: 21cb movs r1, #203 ; 0xcb + 8006666: 4628 mov r0, r5 + 8006668: f001 fd1a bl 80080a0 <VL53L0X_RdByte> + 800666c: 4320 orrs r0, r4 + 800666e: b244 sxtb r4, r0 + 8006670: e7d6 b.n 8006620 <VL53L0X_ref_calibration_io+0x4c> + Status |= VL53L0X_RdByte(Dev, 0xEE, &PhaseCalint); + 8006672: f10d 0207 add.w r2, sp, #7 + 8006676: 21ee movs r1, #238 ; 0xee + 8006678: 4628 mov r0, r5 + 800667a: f001 fd11 bl 80080a0 <VL53L0X_RdByte> + 800667e: 4320 orrs r0, r4 + 8006680: b244 sxtb r4, r0 + 8006682: e7d0 b.n 8006626 <VL53L0X_ref_calibration_io+0x52> + if (vhv_enable) + 8006684: f1ba 0f00 cmp.w sl, #0 + 8006688: d10b bne.n 80066a2 <VL53L0X_ref_calibration_io+0xce> + if (phase_enable) + 800668a: f1b9 0f00 cmp.w r9, #0 + 800668e: d0ca beq.n 8006626 <VL53L0X_ref_calibration_io+0x52> + Status |= VL53L0X_UpdateByte(Dev, 0xEE, 0x80, PhaseCal); + 8006690: 463b mov r3, r7 + 8006692: 2280 movs r2, #128 ; 0x80 + 8006694: 21ee movs r1, #238 ; 0xee + 8006696: 4628 mov r0, r5 + 8006698: f001 fd1c bl 80080d4 <VL53L0X_UpdateByte> + 800669c: 4320 orrs r0, r4 + 800669e: b244 sxtb r4, r0 + 80066a0: e7c1 b.n 8006626 <VL53L0X_ref_calibration_io+0x52> + Status |= VL53L0X_WrByte(Dev, 0xCB, VhvSettings); + 80066a2: 4642 mov r2, r8 + 80066a4: 21cb movs r1, #203 ; 0xcb + 80066a6: 4628 mov r0, r5 + 80066a8: f001 fcd8 bl 800805c <VL53L0X_WrByte> + 80066ac: 4320 orrs r0, r4 + 80066ae: b244 sxtb r4, r0 + 80066b0: e7eb b.n 800668a <VL53L0X_ref_calibration_io+0xb6> + +080066b2 <VL53L0X_perform_vhv_calibration>: + + +VL53L0X_Error VL53L0X_perform_vhv_calibration(VL53L0X_DEV Dev, + uint8_t *pVhvSettings, const uint8_t get_data_enable, + const uint8_t restore_config) +{ + 80066b2: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80066b6: b086 sub sp, #24 + 80066b8: 4604 mov r4, r0 + 80066ba: 460d mov r5, r1 + 80066bc: 4616 mov r6, r2 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t SequenceConfig = 0; + uint8_t VhvSettings = 0; + uint8_t PhaseCal = 0; + uint8_t PhaseCalInt = 0; + 80066be: 2200 movs r2, #0 + 80066c0: f88d 2017 strb.w r2, [sp, #23] + + /* store the value of the sequence config, + * this will be reset before the end of the function + */ + + if (restore_config) + 80066c4: 461f mov r7, r3 + 80066c6: b19b cbz r3, 80066f0 <VL53L0X_perform_vhv_calibration+0x3e> + SequenceConfig = PALDevDataGet(Dev, SequenceConfig); + 80066c8: f890 8130 ldrb.w r8, [r0, #304] ; 0x130 + + /* Run VHV */ + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, 0x01); + 80066cc: 2201 movs r2, #1 + 80066ce: 4611 mov r1, r2 + 80066d0: 4620 mov r0, r4 + 80066d2: f001 fcc3 bl 800805c <VL53L0X_WrByte> + + if (Status == VL53L0X_ERROR_NONE) + 80066d6: 4603 mov r3, r0 + 80066d8: b160 cbz r0, 80066f4 <VL53L0X_perform_vhv_calibration+0x42> + Status = VL53L0X_perform_single_ref_calibration(Dev, 0x40); + + /* Read VHV from device */ + if ((Status == VL53L0X_ERROR_NONE) && (get_data_enable == 1)) { + 80066da: b90b cbnz r3, 80066e0 <VL53L0X_perform_vhv_calibration+0x2e> + 80066dc: 2e01 cmp r6, #1 + 80066de: d00f beq.n 8006700 <VL53L0X_perform_vhv_calibration+0x4e> + Status = VL53L0X_ref_calibration_io(Dev, 1, + VhvSettings, PhaseCal, /* Not used here */ + pVhvSettings, &PhaseCalInt, + 1, 0); + } else + *pVhvSettings = 0; + 80066e0: 2200 movs r2, #0 + 80066e2: 702a strb r2, [r5, #0] + + + if ((Status == VL53L0X_ERROR_NONE) && restore_config) { + 80066e4: b903 cbnz r3, 80066e8 <VL53L0X_perform_vhv_calibration+0x36> + 80066e6: b9cf cbnz r7, 800671c <VL53L0X_perform_vhv_calibration+0x6a> + PALDevDataSet(Dev, SequenceConfig, SequenceConfig); + + } + + return Status; +} + 80066e8: 4618 mov r0, r3 + 80066ea: b006 add sp, #24 + 80066ec: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + uint8_t SequenceConfig = 0; + 80066f0: 4698 mov r8, r3 + 80066f2: e7eb b.n 80066cc <VL53L0X_perform_vhv_calibration+0x1a> + Status = VL53L0X_perform_single_ref_calibration(Dev, 0x40); + 80066f4: 2140 movs r1, #64 ; 0x40 + 80066f6: 4620 mov r0, r4 + 80066f8: f7ff ff52 bl 80065a0 <VL53L0X_perform_single_ref_calibration> + 80066fc: 4603 mov r3, r0 + 80066fe: e7ec b.n 80066da <VL53L0X_perform_vhv_calibration+0x28> + Status = VL53L0X_ref_calibration_io(Dev, 1, + 8006700: 2200 movs r2, #0 + 8006702: 9203 str r2, [sp, #12] + 8006704: 2101 movs r1, #1 + 8006706: 9102 str r1, [sp, #8] + 8006708: f10d 0317 add.w r3, sp, #23 + 800670c: 9301 str r3, [sp, #4] + 800670e: 9500 str r5, [sp, #0] + 8006710: 4613 mov r3, r2 + 8006712: 4620 mov r0, r4 + 8006714: f7ff ff5e bl 80065d4 <VL53L0X_ref_calibration_io> + 8006718: 4603 mov r3, r0 + 800671a: e7e3 b.n 80066e4 <VL53L0X_perform_vhv_calibration+0x32> + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, + 800671c: 4642 mov r2, r8 + 800671e: 2101 movs r1, #1 + 8006720: 4620 mov r0, r4 + 8006722: f001 fc9b bl 800805c <VL53L0X_WrByte> + if (Status == VL53L0X_ERROR_NONE) + 8006726: 4603 mov r3, r0 + 8006728: 2800 cmp r0, #0 + 800672a: d1dd bne.n 80066e8 <VL53L0X_perform_vhv_calibration+0x36> + PALDevDataSet(Dev, SequenceConfig, SequenceConfig); + 800672c: f884 8130 strb.w r8, [r4, #304] ; 0x130 + 8006730: e7da b.n 80066e8 <VL53L0X_perform_vhv_calibration+0x36> + +08006732 <VL53L0X_perform_phase_calibration>: + +VL53L0X_Error VL53L0X_perform_phase_calibration(VL53L0X_DEV Dev, + uint8_t *pPhaseCal, const uint8_t get_data_enable, + const uint8_t restore_config) +{ + 8006732: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8006736: b086 sub sp, #24 + 8006738: 4604 mov r4, r0 + 800673a: 460d mov r5, r1 + 800673c: 4616 mov r6, r2 + + /* store the value of the sequence config, + * this will be reset before the end of the function + */ + + if (restore_config) + 800673e: 461f mov r7, r3 + 8006740: b19b cbz r3, 800676a <VL53L0X_perform_phase_calibration+0x38> + SequenceConfig = PALDevDataGet(Dev, SequenceConfig); + 8006742: f890 8130 ldrb.w r8, [r0, #304] ; 0x130 + + /* Run PhaseCal */ + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, 0x02); + 8006746: 2202 movs r2, #2 + 8006748: 2101 movs r1, #1 + 800674a: 4620 mov r0, r4 + 800674c: f001 fc86 bl 800805c <VL53L0X_WrByte> + + if (Status == VL53L0X_ERROR_NONE) + 8006750: 4603 mov r3, r0 + 8006752: b160 cbz r0, 800676e <VL53L0X_perform_phase_calibration+0x3c> + Status = VL53L0X_perform_single_ref_calibration(Dev, 0x0); + + /* Read PhaseCal from device */ + if ((Status == VL53L0X_ERROR_NONE) && (get_data_enable == 1)) { + 8006754: b90b cbnz r3, 800675a <VL53L0X_perform_phase_calibration+0x28> + 8006756: 2e01 cmp r6, #1 + 8006758: d00f beq.n 800677a <VL53L0X_perform_phase_calibration+0x48> + Status = VL53L0X_ref_calibration_io(Dev, 1, + VhvSettings, PhaseCal, /* Not used here */ + &VhvSettingsint, pPhaseCal, + 0, 1); + } else + *pPhaseCal = 0; + 800675a: 2200 movs r2, #0 + 800675c: 702a strb r2, [r5, #0] + + + if ((Status == VL53L0X_ERROR_NONE) && restore_config) { + 800675e: b903 cbnz r3, 8006762 <VL53L0X_perform_phase_calibration+0x30> + 8006760: b9cf cbnz r7, 8006796 <VL53L0X_perform_phase_calibration+0x64> + PALDevDataSet(Dev, SequenceConfig, SequenceConfig); + + } + + return Status; +} + 8006762: 4618 mov r0, r3 + 8006764: b006 add sp, #24 + 8006766: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + uint8_t SequenceConfig = 0; + 800676a: 4698 mov r8, r3 + 800676c: e7eb b.n 8006746 <VL53L0X_perform_phase_calibration+0x14> + Status = VL53L0X_perform_single_ref_calibration(Dev, 0x0); + 800676e: 2100 movs r1, #0 + 8006770: 4620 mov r0, r4 + 8006772: f7ff ff15 bl 80065a0 <VL53L0X_perform_single_ref_calibration> + 8006776: 4603 mov r3, r0 + 8006778: e7ec b.n 8006754 <VL53L0X_perform_phase_calibration+0x22> + Status = VL53L0X_ref_calibration_io(Dev, 1, + 800677a: 2101 movs r1, #1 + 800677c: 9103 str r1, [sp, #12] + 800677e: 2200 movs r2, #0 + 8006780: 9202 str r2, [sp, #8] + 8006782: 9501 str r5, [sp, #4] + 8006784: f10d 0317 add.w r3, sp, #23 + 8006788: 9300 str r3, [sp, #0] + 800678a: 4613 mov r3, r2 + 800678c: 4620 mov r0, r4 + 800678e: f7ff ff21 bl 80065d4 <VL53L0X_ref_calibration_io> + 8006792: 4603 mov r3, r0 + 8006794: e7e3 b.n 800675e <VL53L0X_perform_phase_calibration+0x2c> + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, + 8006796: 4642 mov r2, r8 + 8006798: 2101 movs r1, #1 + 800679a: 4620 mov r0, r4 + 800679c: f001 fc5e bl 800805c <VL53L0X_WrByte> + if (Status == VL53L0X_ERROR_NONE) + 80067a0: 4603 mov r3, r0 + 80067a2: 2800 cmp r0, #0 + 80067a4: d1dd bne.n 8006762 <VL53L0X_perform_phase_calibration+0x30> + PALDevDataSet(Dev, SequenceConfig, SequenceConfig); + 80067a6: f884 8130 strb.w r8, [r4, #304] ; 0x130 + 80067aa: e7da b.n 8006762 <VL53L0X_perform_phase_calibration+0x30> + +080067ac <VL53L0X_perform_ref_calibration>: + +VL53L0X_Error VL53L0X_perform_ref_calibration(VL53L0X_DEV Dev, + uint8_t *pVhvSettings, uint8_t *pPhaseCal, uint8_t get_data_enable) +{ + 80067ac: b5f8 push {r3, r4, r5, r6, r7, lr} + 80067ae: 4604 mov r4, r0 + 80067b0: 4616 mov r6, r2 + 80067b2: 461d mov r5, r3 + + /* store the value of the sequence config, + * this will be reset before the end of the function + */ + + SequenceConfig = PALDevDataGet(Dev, SequenceConfig); + 80067b4: f890 7130 ldrb.w r7, [r0, #304] ; 0x130 + + /* In the following function we don't save the config to optimize + * writes on device. Config is saved and restored only once. */ + Status = VL53L0X_perform_vhv_calibration( + 80067b8: 2300 movs r3, #0 + 80067ba: 462a mov r2, r5 + 80067bc: f7ff ff79 bl 80066b2 <VL53L0X_perform_vhv_calibration> + Dev, pVhvSettings, get_data_enable, 0); + + + if (Status == VL53L0X_ERROR_NONE) + 80067c0: 4603 mov r3, r0 + 80067c2: b110 cbz r0, 80067ca <VL53L0X_perform_ref_calibration+0x1e> + Status = VL53L0X_perform_phase_calibration( + Dev, pPhaseCal, get_data_enable, 0); + + + if (Status == VL53L0X_ERROR_NONE) { + 80067c4: b14b cbz r3, 80067da <VL53L0X_perform_ref_calibration+0x2e> + PALDevDataSet(Dev, SequenceConfig, SequenceConfig); + + } + + return Status; +} + 80067c6: 4618 mov r0, r3 + 80067c8: bdf8 pop {r3, r4, r5, r6, r7, pc} + Status = VL53L0X_perform_phase_calibration( + 80067ca: 2300 movs r3, #0 + 80067cc: 462a mov r2, r5 + 80067ce: 4631 mov r1, r6 + 80067d0: 4620 mov r0, r4 + 80067d2: f7ff ffae bl 8006732 <VL53L0X_perform_phase_calibration> + 80067d6: 4603 mov r3, r0 + 80067d8: e7f4 b.n 80067c4 <VL53L0X_perform_ref_calibration+0x18> + Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSTEM_SEQUENCE_CONFIG, + 80067da: 463a mov r2, r7 + 80067dc: 2101 movs r1, #1 + 80067de: 4620 mov r0, r4 + 80067e0: f001 fc3c bl 800805c <VL53L0X_WrByte> + if (Status == VL53L0X_ERROR_NONE) + 80067e4: 4603 mov r3, r0 + 80067e6: 2800 cmp r0, #0 + 80067e8: d1ed bne.n 80067c6 <VL53L0X_perform_ref_calibration+0x1a> + PALDevDataSet(Dev, SequenceConfig, SequenceConfig); + 80067ea: f884 7130 strb.w r7, [r4, #304] ; 0x130 + 80067ee: e7ea b.n 80067c6 <VL53L0X_perform_ref_calibration+0x1a> + +080067f0 <VL53L0X_perform_ref_spad_management>: +{ + 80067f0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80067f4: b093 sub sp, #76 ; 0x4c + 80067f6: 4605 mov r5, r0 + 80067f8: 910a str r1, [sp, #40] ; 0x28 + 80067fa: 920b str r2, [sp, #44] ; 0x2c + uint32_t lastSpadIndex = 0; + 80067fc: 2300 movs r3, #0 + 80067fe: 930f str r3, [sp, #60] ; 0x3c + int32_t nextGoodSpad = 0; + 8006800: 930e str r3, [sp, #56] ; 0x38 + uint8_t VhvSettings = 0; + 8006802: f88d 3035 strb.w r3, [sp, #53] ; 0x35 + uint8_t PhaseCal = 0; + 8006806: f88d 3034 strb.w r3, [sp, #52] ; 0x34 + targetRefRate = PALDevDataGet(Dev, targetRefRate); + 800680a: f8b0 913c ldrh.w r9, [r0, #316] ; 0x13c + for (index = 0; index < spadArraySize; index++) + 800680e: e004 b.n 800681a <VL53L0X_perform_ref_spad_management+0x2a> + Dev->Data.SpadData.RefSpadEnables[index] = 0; + 8006810: 18ea adds r2, r5, r3 + 8006812: 2100 movs r1, #0 + 8006814: f882 1124 strb.w r1, [r2, #292] ; 0x124 + for (index = 0; index < spadArraySize; index++) + 8006818: 3301 adds r3, #1 + 800681a: 2b05 cmp r3, #5 + 800681c: d9f8 bls.n 8006810 <VL53L0X_perform_ref_spad_management+0x20> + Status = VL53L0X_WrByte(Dev, 0xFF, 0x01); + 800681e: 2201 movs r2, #1 + 8006820: 21ff movs r1, #255 ; 0xff + 8006822: 4628 mov r0, r5 + 8006824: f001 fc1a bl 800805c <VL53L0X_WrByte> + if (Status == VL53L0X_ERROR_NONE) + 8006828: 4604 mov r4, r0 + 800682a: 2800 cmp r0, #0 + 800682c: d02f beq.n 800688e <VL53L0X_perform_ref_spad_management+0x9e> + if (Status == VL53L0X_ERROR_NONE) + 800682e: 2c00 cmp r4, #0 + 8006830: d034 beq.n 800689c <VL53L0X_perform_ref_spad_management+0xac> + if (Status == VL53L0X_ERROR_NONE) + 8006832: 2c00 cmp r4, #0 + 8006834: d039 beq.n 80068aa <VL53L0X_perform_ref_spad_management+0xba> + if (Status == VL53L0X_ERROR_NONE) + 8006836: 2c00 cmp r4, #0 + 8006838: d03e beq.n 80068b8 <VL53L0X_perform_ref_spad_management+0xc8> + if (Status == VL53L0X_ERROR_NONE) + 800683a: 2c00 cmp r4, #0 + 800683c: d043 beq.n 80068c6 <VL53L0X_perform_ref_spad_management+0xd6> + if (Status == VL53L0X_ERROR_NONE) + 800683e: 2c00 cmp r4, #0 + 8006840: d048 beq.n 80068d4 <VL53L0X_perform_ref_spad_management+0xe4> + if (Status == VL53L0X_ERROR_NONE) { + 8006842: 2c00 cmp r4, #0 + 8006844: d04f beq.n 80068e6 <VL53L0X_perform_ref_spad_management+0xf6> + if (Status == VL53L0X_ERROR_NONE) { + 8006846: 2c00 cmp r4, #0 + 8006848: d061 beq.n 800690e <VL53L0X_perform_ref_spad_management+0x11e> + uint8_t isApertureSpads_int = 0; + 800684a: 2700 movs r7, #0 + 800684c: 9709 str r7, [sp, #36] ; 0x24 + uint32_t refSpadCount_int = 0; + 800684e: 46b8 mov r8, r7 + 8006850: 9707 str r7, [sp, #28] + if ((Status == VL53L0X_ERROR_NONE) && + 8006852: 2c00 cmp r4, #0 + 8006854: f040 8119 bne.w 8006a8a <VL53L0X_perform_ref_spad_management+0x29a> + (peakSignalRateRef < targetRefRate)) { + 8006858: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 + if ((Status == VL53L0X_ERROR_NONE) && + 800685c: 454b cmp r3, r9 + 800685e: f080 8114 bcs.w 8006a8a <VL53L0X_perform_ref_spad_management+0x29a> + isApertureSpads_int = needAptSpads; + 8006862: f89d 201c ldrb.w r2, [sp, #28] + 8006866: 9209 str r2, [sp, #36] ; 0x24 + memcpy(lastSpadArray, Dev->Data.SpadData.RefSpadEnables, + 8006868: f8d5 0124 ldr.w r0, [r5, #292] ; 0x124 + 800686c: 9010 str r0, [sp, #64] ; 0x40 + 800686e: f8b5 2128 ldrh.w r2, [r5, #296] ; 0x128 + 8006872: f8ad 2044 strh.w r2, [sp, #68] ; 0x44 + lastSignalRateDiff = abs(peakSignalRateRef - + 8006876: eba3 0309 sub.w r3, r3, r9 + 800687a: ea83 72e3 eor.w r2, r3, r3, asr #31 + 800687e: eba2 72e3 sub.w r2, r2, r3, asr #31 + 8006882: 9208 str r2, [sp, #32] + refSpadCount_int = minimumSpadCount; + 8006884: f04f 0803 mov.w r8, #3 + complete = 0; + 8006888: f04f 0b00 mov.w fp, #0 + while (!complete) { + 800688c: e0c1 b.n 8006a12 <VL53L0X_perform_ref_spad_management+0x222> + Status = VL53L0X_WrByte(Dev, + 800688e: 2200 movs r2, #0 + 8006890: 214f movs r1, #79 ; 0x4f + 8006892: 4628 mov r0, r5 + 8006894: f001 fbe2 bl 800805c <VL53L0X_WrByte> + 8006898: 4604 mov r4, r0 + 800689a: e7c8 b.n 800682e <VL53L0X_perform_ref_spad_management+0x3e> + Status = VL53L0X_WrByte(Dev, + 800689c: 222c movs r2, #44 ; 0x2c + 800689e: 214e movs r1, #78 ; 0x4e + 80068a0: 4628 mov r0, r5 + 80068a2: f001 fbdb bl 800805c <VL53L0X_WrByte> + 80068a6: 4604 mov r4, r0 + 80068a8: e7c3 b.n 8006832 <VL53L0X_perform_ref_spad_management+0x42> + Status = VL53L0X_WrByte(Dev, 0xFF, 0x00); + 80068aa: 2200 movs r2, #0 + 80068ac: 21ff movs r1, #255 ; 0xff + 80068ae: 4628 mov r0, r5 + 80068b0: f001 fbd4 bl 800805c <VL53L0X_WrByte> + 80068b4: 4604 mov r4, r0 + 80068b6: e7be b.n 8006836 <VL53L0X_perform_ref_spad_management+0x46> + Status = VL53L0X_WrByte(Dev, + 80068b8: 22b4 movs r2, #180 ; 0xb4 + 80068ba: 21b6 movs r1, #182 ; 0xb6 + 80068bc: 4628 mov r0, r5 + 80068be: f001 fbcd bl 800805c <VL53L0X_WrByte> + 80068c2: 4604 mov r4, r0 + 80068c4: e7b9 b.n 800683a <VL53L0X_perform_ref_spad_management+0x4a> + Status = VL53L0X_WrByte(Dev, + 80068c6: 2200 movs r2, #0 + 80068c8: 2180 movs r1, #128 ; 0x80 + 80068ca: 4628 mov r0, r5 + 80068cc: f001 fbc6 bl 800805c <VL53L0X_WrByte> + 80068d0: 4604 mov r4, r0 + 80068d2: e7b4 b.n 800683e <VL53L0X_perform_ref_spad_management+0x4e> + Status = VL53L0X_perform_ref_calibration(Dev, &VhvSettings, + 80068d4: 2300 movs r3, #0 + 80068d6: aa0d add r2, sp, #52 ; 0x34 + 80068d8: f10d 0135 add.w r1, sp, #53 ; 0x35 + 80068dc: 4628 mov r0, r5 + 80068de: f7ff ff65 bl 80067ac <VL53L0X_perform_ref_calibration> + 80068e2: 4604 mov r4, r0 + 80068e4: e7ad b.n 8006842 <VL53L0X_perform_ref_spad_management+0x52> + lastSpadIndex = currentSpadIndex; + 80068e6: 2100 movs r1, #0 + 80068e8: 910f str r1, [sp, #60] ; 0x3c + Status = enable_ref_spads(Dev, + 80068ea: ab0f add r3, sp, #60 ; 0x3c + 80068ec: 9304 str r3, [sp, #16] + 80068ee: 2303 movs r3, #3 + 80068f0: 9303 str r3, [sp, #12] + 80068f2: 9102 str r1, [sp, #8] + 80068f4: 23b4 movs r3, #180 ; 0xb4 + 80068f6: 9301 str r3, [sp, #4] + 80068f8: 2306 movs r3, #6 + 80068fa: 9300 str r3, [sp, #0] + 80068fc: f505 7392 add.w r3, r5, #292 ; 0x124 + 8006900: f505 7295 add.w r2, r5, #298 ; 0x12a + 8006904: 4628 mov r0, r5 + 8006906: f7ff fd68 bl 80063da <enable_ref_spads> + 800690a: 4604 mov r4, r0 + 800690c: e79b b.n 8006846 <VL53L0X_perform_ref_spad_management+0x56> + currentSpadIndex = lastSpadIndex; + 800690e: 9f0f ldr r7, [sp, #60] ; 0x3c + Status = perform_ref_signal_measurement(Dev, + 8006910: f10d 0136 add.w r1, sp, #54 ; 0x36 + 8006914: 4628 mov r0, r5 + 8006916: f7ff fdb1 bl 800647c <perform_ref_signal_measurement> + if ((Status == VL53L0X_ERROR_NONE) && + 800691a: 4604 mov r4, r0 + 800691c: 2800 cmp r0, #0 + 800691e: d145 bne.n 80069ac <VL53L0X_perform_ref_spad_management+0x1bc> + (peakSignalRateRef > targetRefRate)) { + 8006920: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 + if ((Status == VL53L0X_ERROR_NONE) && + 8006924: 454b cmp r3, r9 + 8006926: d80c bhi.n 8006942 <VL53L0X_perform_ref_spad_management+0x152> + uint8_t isApertureSpads_int = 0; + 8006928: 2300 movs r3, #0 + 800692a: 9309 str r3, [sp, #36] ; 0x24 + uint32_t refSpadCount_int = 0; + 800692c: 4698 mov r8, r3 + needAptSpads = 0; + 800692e: 9307 str r3, [sp, #28] + 8006930: e78f b.n 8006852 <VL53L0X_perform_ref_spad_management+0x62> + Dev->Data.SpadData.RefSpadEnables[index] = 0; + 8006932: 18ea adds r2, r5, r3 + 8006934: 2100 movs r1, #0 + 8006936: f882 1124 strb.w r1, [r2, #292] ; 0x124 + for (index = 0; index < spadArraySize; index++) + 800693a: 3301 adds r3, #1 + 800693c: 2b05 cmp r3, #5 + 800693e: d9f8 bls.n 8006932 <VL53L0X_perform_ref_spad_management+0x142> + 8006940: e002 b.n 8006948 <VL53L0X_perform_ref_spad_management+0x158> + 8006942: 2300 movs r3, #0 + 8006944: e7fa b.n 800693c <VL53L0X_perform_ref_spad_management+0x14c> + currentSpadIndex++; + 8006946: 3701 adds r7, #1 + while ((is_aperture(startSelect + currentSpadIndex) + 8006948: f107 00b4 add.w r0, r7, #180 ; 0xb4 + 800694c: f7ff fd18 bl 8006380 <is_aperture> + == 0) && (currentSpadIndex < maxSpadCount)) { + 8006950: b908 cbnz r0, 8006956 <VL53L0X_perform_ref_spad_management+0x166> + 8006952: 2f2b cmp r7, #43 ; 0x2b + 8006954: d9f7 bls.n 8006946 <VL53L0X_perform_ref_spad_management+0x156> + Status = enable_ref_spads(Dev, + 8006956: ab0f add r3, sp, #60 ; 0x3c + 8006958: 9304 str r3, [sp, #16] + 800695a: 2303 movs r3, #3 + 800695c: 9303 str r3, [sp, #12] + 800695e: 9702 str r7, [sp, #8] + 8006960: 23b4 movs r3, #180 ; 0xb4 + 8006962: 9301 str r3, [sp, #4] + 8006964: 2306 movs r3, #6 + 8006966: 9300 str r3, [sp, #0] + 8006968: f505 7392 add.w r3, r5, #292 ; 0x124 + 800696c: f505 7295 add.w r2, r5, #298 ; 0x12a + 8006970: 2101 movs r1, #1 + 8006972: 4628 mov r0, r5 + 8006974: f7ff fd31 bl 80063da <enable_ref_spads> + if (Status == VL53L0X_ERROR_NONE) { + 8006978: 4604 mov r4, r0 + 800697a: b128 cbz r0, 8006988 <VL53L0X_perform_ref_spad_management+0x198> + uint8_t isApertureSpads_int = 0; + 800697c: 2300 movs r3, #0 + 800697e: 9309 str r3, [sp, #36] ; 0x24 + uint32_t refSpadCount_int = 0; + 8006980: 4698 mov r8, r3 + needAptSpads = 1; + 8006982: 2301 movs r3, #1 + 8006984: 9307 str r3, [sp, #28] + 8006986: e764 b.n 8006852 <VL53L0X_perform_ref_spad_management+0x62> + currentSpadIndex = lastSpadIndex; + 8006988: 9f0f ldr r7, [sp, #60] ; 0x3c + Status = perform_ref_signal_measurement(Dev, + 800698a: f10d 0136 add.w r1, sp, #54 ; 0x36 + 800698e: 4628 mov r0, r5 + 8006990: f7ff fd74 bl 800647c <perform_ref_signal_measurement> + if ((Status == VL53L0X_ERROR_NONE) && + 8006994: 4604 mov r4, r0 + 8006996: b970 cbnz r0, 80069b6 <VL53L0X_perform_ref_spad_management+0x1c6> + (peakSignalRateRef > targetRefRate)) { + 8006998: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 + if ((Status == VL53L0X_ERROR_NONE) && + 800699c: 454b cmp r3, r9 + 800699e: d810 bhi.n 80069c2 <VL53L0X_perform_ref_spad_management+0x1d2> + uint8_t isApertureSpads_int = 0; + 80069a0: 2300 movs r3, #0 + 80069a2: 9309 str r3, [sp, #36] ; 0x24 + uint32_t refSpadCount_int = 0; + 80069a4: 4698 mov r8, r3 + needAptSpads = 1; + 80069a6: 2301 movs r3, #1 + 80069a8: 9307 str r3, [sp, #28] + 80069aa: e752 b.n 8006852 <VL53L0X_perform_ref_spad_management+0x62> + uint8_t isApertureSpads_int = 0; + 80069ac: 2300 movs r3, #0 + 80069ae: 9309 str r3, [sp, #36] ; 0x24 + uint32_t refSpadCount_int = 0; + 80069b0: 4698 mov r8, r3 + needAptSpads = 0; + 80069b2: 9307 str r3, [sp, #28] + 80069b4: e74d b.n 8006852 <VL53L0X_perform_ref_spad_management+0x62> + uint8_t isApertureSpads_int = 0; + 80069b6: 2300 movs r3, #0 + 80069b8: 9309 str r3, [sp, #36] ; 0x24 + uint32_t refSpadCount_int = 0; + 80069ba: 4698 mov r8, r3 + needAptSpads = 1; + 80069bc: 2301 movs r3, #1 + 80069be: 9307 str r3, [sp, #28] + 80069c0: e747 b.n 8006852 <VL53L0X_perform_ref_spad_management+0x62> + isApertureSpads_int = 1; + 80069c2: 2301 movs r3, #1 + 80069c4: 9309 str r3, [sp, #36] ; 0x24 + refSpadCount_int = minimumSpadCount; + 80069c6: f04f 0803 mov.w r8, #3 + needAptSpads = 1; + 80069ca: 9307 str r3, [sp, #28] + 80069cc: e741 b.n 8006852 <VL53L0X_perform_ref_spad_management+0x62> + currentSpadIndex++; + 80069ce: 1c77 adds r7, r6, #1 + Status = set_ref_spad_map(Dev, + 80069d0: 4651 mov r1, sl + 80069d2: 4628 mov r0, r5 + 80069d4: f7ff fcf3 bl 80063be <set_ref_spad_map> + 80069d8: 4604 mov r4, r0 + 80069da: e03d b.n 8006a58 <VL53L0X_perform_ref_spad_management+0x268> + Status = set_ref_spad_map(Dev, + 80069dc: a910 add r1, sp, #64 ; 0x40 + 80069de: 4628 mov r0, r5 + 80069e0: f7ff fced bl 80063be <set_ref_spad_map> + 80069e4: 4604 mov r4, r0 + memcpy( + 80069e6: 9810 ldr r0, [sp, #64] ; 0x40 + 80069e8: f8c5 0124 str.w r0, [r5, #292] ; 0x124 + 80069ec: f8bd 3044 ldrh.w r3, [sp, #68] ; 0x44 + 80069f0: f8a5 3128 strh.w r3, [r5, #296] ; 0x128 + (refSpadCount_int)--; + 80069f4: f8cd 8018 str.w r8, [sp, #24] + complete = 1; + 80069f8: f04f 0b01 mov.w fp, #1 + 80069fc: e007 b.n 8006a0e <VL53L0X_perform_ref_spad_management+0x21e> + memcpy(lastSpadArray, + 80069fe: f8d5 0124 ldr.w r0, [r5, #292] ; 0x124 + 8006a02: 9010 str r0, [sp, #64] ; 0x40 + 8006a04: f8b5 2128 ldrh.w r2, [r5, #296] ; 0x128 + 8006a08: f8ad 2044 strh.w r2, [sp, #68] ; 0x44 + lastSignalRateDiff = signalRateDiff; + 8006a0c: 9308 str r3, [sp, #32] + 8006a0e: f8dd 8018 ldr.w r8, [sp, #24] + while (!complete) { + 8006a12: f1bb 0f00 cmp.w fp, #0 + 8006a16: d138 bne.n 8006a8a <VL53L0X_perform_ref_spad_management+0x29a> + get_next_good_spad( + 8006a18: ab0e add r3, sp, #56 ; 0x38 + 8006a1a: 463a mov r2, r7 + 8006a1c: 2106 movs r1, #6 + 8006a1e: f505 7095 add.w r0, r5, #298 ; 0x12a + 8006a22: f7ff fc82 bl 800632a <get_next_good_spad> + if (nextGoodSpad == -1) { + 8006a26: 9e0e ldr r6, [sp, #56] ; 0x38 + 8006a28: f1b6 3fff cmp.w r6, #4294967295 + 8006a2c: d02b beq.n 8006a86 <VL53L0X_perform_ref_spad_management+0x296> + if (is_aperture((uint32_t)startSelect + nextGoodSpad) != + 8006a2e: 4637 mov r7, r6 + 8006a30: f106 00b4 add.w r0, r6, #180 ; 0xb4 + 8006a34: f7ff fca4 bl 8006380 <is_aperture> + 8006a38: 9b07 ldr r3, [sp, #28] + 8006a3a: 4298 cmp r0, r3 + 8006a3c: d125 bne.n 8006a8a <VL53L0X_perform_ref_spad_management+0x29a> + (refSpadCount_int)++; + 8006a3e: f108 0301 add.w r3, r8, #1 + 8006a42: 9306 str r3, [sp, #24] + Dev->Data.SpadData.RefSpadEnables, + 8006a44: f505 7a92 add.w sl, r5, #292 ; 0x124 + Status = enable_spad_bit( + 8006a48: 4632 mov r2, r6 + 8006a4a: 2106 movs r1, #6 + 8006a4c: 4650 mov r0, sl + 8006a4e: f7ff fca3 bl 8006398 <enable_spad_bit> + if (Status == VL53L0X_ERROR_NONE) { + 8006a52: 4604 mov r4, r0 + 8006a54: 2800 cmp r0, #0 + 8006a56: d0ba beq.n 80069ce <VL53L0X_perform_ref_spad_management+0x1de> + if (Status != VL53L0X_ERROR_NONE) + 8006a58: bb5c cbnz r4, 8006ab2 <VL53L0X_perform_ref_spad_management+0x2c2> + Status = perform_ref_signal_measurement(Dev, + 8006a5a: f10d 0136 add.w r1, sp, #54 ; 0x36 + 8006a5e: 4628 mov r0, r5 + 8006a60: f7ff fd0c bl 800647c <perform_ref_signal_measurement> + if (Status != VL53L0X_ERROR_NONE) + 8006a64: 4604 mov r4, r0 + 8006a66: bb38 cbnz r0, 8006ab8 <VL53L0X_perform_ref_spad_management+0x2c8> + signalRateDiff = abs(peakSignalRateRef - targetRefRate); + 8006a68: f8bd 2036 ldrh.w r2, [sp, #54] ; 0x36 + 8006a6c: eba2 0309 sub.w r3, r2, r9 + 8006a70: 2b00 cmp r3, #0 + 8006a72: bfb8 it lt + 8006a74: 425b neglt r3, r3 + if (peakSignalRateRef > targetRefRate) { + 8006a76: 454a cmp r2, r9 + 8006a78: d9c1 bls.n 80069fe <VL53L0X_perform_ref_spad_management+0x20e> + if (signalRateDiff > lastSignalRateDiff) { + 8006a7a: 9a08 ldr r2, [sp, #32] + 8006a7c: 429a cmp r2, r3 + 8006a7e: d3ad bcc.n 80069dc <VL53L0X_perform_ref_spad_management+0x1ec> + complete = 1; + 8006a80: f04f 0b01 mov.w fp, #1 + 8006a84: e7c3 b.n 8006a0e <VL53L0X_perform_ref_spad_management+0x21e> + Status = VL53L0X_ERROR_REF_SPAD_INIT; + 8006a86: f06f 0431 mvn.w r4, #49 ; 0x31 + if (Status == VL53L0X_ERROR_NONE) { + 8006a8a: b974 cbnz r4, 8006aaa <VL53L0X_perform_ref_spad_management+0x2ba> + *refSpadCount = refSpadCount_int; + 8006a8c: 9a0a ldr r2, [sp, #40] ; 0x28 + 8006a8e: f8c2 8000 str.w r8, [r2] + *isApertureSpads = isApertureSpads_int; + 8006a92: 990b ldr r1, [sp, #44] ; 0x2c + 8006a94: 9b09 ldr r3, [sp, #36] ; 0x24 + 8006a96: 700b strb r3, [r1, #0] + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, RefSpadsInitialised, 1); + 8006a98: 2301 movs r3, #1 + 8006a9a: f885 3115 strb.w r3, [r5, #277] ; 0x115 + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 8006a9e: 7813 ldrb r3, [r2, #0] + 8006aa0: f885 3113 strb.w r3, [r5, #275] ; 0x113 + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 8006aa4: 780b ldrb r3, [r1, #0] + 8006aa6: f885 3114 strb.w r3, [r5, #276] ; 0x114 +} + 8006aaa: 4620 mov r0, r4 + 8006aac: b013 add sp, #76 ; 0x4c + 8006aae: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + (refSpadCount_int)++; + 8006ab2: f8dd 8018 ldr.w r8, [sp, #24] + 8006ab6: e7e8 b.n 8006a8a <VL53L0X_perform_ref_spad_management+0x29a> + 8006ab8: f8dd 8018 ldr.w r8, [sp, #24] + 8006abc: e7e5 b.n 8006a8a <VL53L0X_perform_ref_spad_management+0x29a> + +08006abe <VL53L0X_measurement_poll_for_completion>: + } + return Status; +} + +VL53L0X_Error VL53L0X_measurement_poll_for_completion(VL53L0X_DEV Dev) +{ + 8006abe: b530 push {r4, r5, lr} + 8006ac0: b083 sub sp, #12 + 8006ac2: 4605 mov r5, r0 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t NewDataReady = 0; + 8006ac4: 2400 movs r4, #0 + 8006ac6: f88d 4007 strb.w r4, [sp, #7] + LOG_FUNCTION_START(""); + + LoopNb = 0; + + do { + Status = VL53L0X_GetMeasurementDataReady(Dev, &NewDataReady); + 8006aca: f10d 0107 add.w r1, sp, #7 + 8006ace: 4628 mov r0, r5 + 8006ad0: f7ff fbe3 bl 800629a <VL53L0X_GetMeasurementDataReady> + if (Status != 0) + 8006ad4: 4602 mov r2, r0 + 8006ad6: b968 cbnz r0, 8006af4 <VL53L0X_measurement_poll_for_completion+0x36> + break; /* the error is set */ + + if (NewDataReady == 1) + 8006ad8: f89d 3007 ldrb.w r3, [sp, #7] + 8006adc: 2b01 cmp r3, #1 + 8006ade: d009 beq.n 8006af4 <VL53L0X_measurement_poll_for_completion+0x36> + break; /* done note that status == 0 */ + + LoopNb++; + 8006ae0: 3401 adds r4, #1 + if (LoopNb >= VL53L0X_DEFAULT_MAX_LOOP) { + 8006ae2: f5b4 6ffa cmp.w r4, #2000 ; 0x7d0 + 8006ae6: d203 bcs.n 8006af0 <VL53L0X_measurement_poll_for_completion+0x32> + Status = VL53L0X_ERROR_TIME_OUT; + break; + } + + VL53L0X_PollingDelay(Dev); + 8006ae8: 4628 mov r0, r5 + 8006aea: f001 fb57 bl 800819c <VL53L0X_PollingDelay> + Status = VL53L0X_GetMeasurementDataReady(Dev, &NewDataReady); + 8006aee: e7ec b.n 8006aca <VL53L0X_measurement_poll_for_completion+0xc> + Status = VL53L0X_ERROR_TIME_OUT; + 8006af0: f06f 0206 mvn.w r2, #6 + } while (1); + + LOG_FUNCTION_END(Status); + + return Status; +} + 8006af4: 4610 mov r0, r2 + 8006af6: b003 add sp, #12 + 8006af8: bd30 pop {r4, r5, pc} + +08006afa <VL53L0X_decode_vcsel_period>: + * period in PLL clocks + */ + + uint8_t vcsel_period_pclks = 0; + + vcsel_period_pclks = (vcsel_period_reg + 1) << 1; + 8006afa: 3001 adds r0, #1 + 8006afc: b2c0 uxtb r0, r0 + 8006afe: 0040 lsls r0, r0, #1 + + return vcsel_period_pclks; +} + 8006b00: f000 00fe and.w r0, r0, #254 ; 0xfe + 8006b04: 4770 bx lr + +08006b06 <VL53L0X_encode_vcsel_period>: + * in PLL clocks + */ + + uint8_t vcsel_period_reg = 0; + + vcsel_period_reg = (vcsel_period_pclks >> 1) - 1; + 8006b06: 0840 lsrs r0, r0, #1 + 8006b08: 3801 subs r0, #1 + + return vcsel_period_reg; +} + 8006b0a: b2c0 uxtb r0, r0 + 8006b0c: 4770 bx lr + +08006b0e <VL53L0X_isqrt>: + + +uint32_t VL53L0X_isqrt(uint32_t num) +{ + 8006b0e: 4602 mov r2, r0 + * + * From: http://en.wikipedia.org/wiki/Methods_of_computing_square_roots + */ + + uint32_t res = 0; + uint32_t bit = 1 << 30; + 8006b10: f04f 4380 mov.w r3, #1073741824 ; 0x40000000 + /* The second-to-top bit is set: + * 1 << 14 for 16-bits, 1 << 30 for 32 bits */ + + /* "bit" starts at the highest power of four <= the argument. */ + while (bit > num) + 8006b14: e000 b.n 8006b18 <VL53L0X_isqrt+0xa> + bit >>= 2; + 8006b16: 089b lsrs r3, r3, #2 + while (bit > num) + 8006b18: 4293 cmp r3, r2 + 8006b1a: d8fc bhi.n 8006b16 <VL53L0X_isqrt+0x8> + uint32_t res = 0; + 8006b1c: 2000 movs r0, #0 + 8006b1e: e001 b.n 8006b24 <VL53L0X_isqrt+0x16> + while (bit != 0) { + if (num >= res + bit) { + num -= res + bit; + res = (res >> 1) + bit; + } else + res >>= 1; + 8006b20: 0840 lsrs r0, r0, #1 + + bit >>= 2; + 8006b22: 089b lsrs r3, r3, #2 + while (bit != 0) { + 8006b24: b133 cbz r3, 8006b34 <VL53L0X_isqrt+0x26> + if (num >= res + bit) { + 8006b26: 18c1 adds r1, r0, r3 + 8006b28: 4291 cmp r1, r2 + 8006b2a: d8f9 bhi.n 8006b20 <VL53L0X_isqrt+0x12> + num -= res + bit; + 8006b2c: 1a52 subs r2, r2, r1 + res = (res >> 1) + bit; + 8006b2e: eb03 0050 add.w r0, r3, r0, lsr #1 + 8006b32: e7f6 b.n 8006b22 <VL53L0X_isqrt+0x14> + } + + return res; +} + 8006b34: 4770 bx lr + +08006b36 <VL53L0X_device_read_strobe>: + return res; +} + + +VL53L0X_Error VL53L0X_device_read_strobe(VL53L0X_DEV Dev) +{ + 8006b36: b570 push {r4, r5, r6, lr} + 8006b38: b082 sub sp, #8 + 8006b3a: 4606 mov r6, r0 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t strobe; + uint32_t LoopNb; + LOG_FUNCTION_START(""); + + Status |= VL53L0X_WrByte(Dev, 0x83, 0x00); + 8006b3c: 2200 movs r2, #0 + 8006b3e: 2183 movs r1, #131 ; 0x83 + 8006b40: f001 fa8c bl 800805c <VL53L0X_WrByte> + + /* polling + * use timeout to avoid deadlock*/ + if (Status == VL53L0X_ERROR_NONE) { + 8006b44: 4604 mov r4, r0 + 8006b46: b9a0 cbnz r0, 8006b72 <VL53L0X_device_read_strobe+0x3c> + LoopNb = 0; + 8006b48: 2500 movs r5, #0 + do { + Status = VL53L0X_RdByte(Dev, 0x83, &strobe); + 8006b4a: f10d 0207 add.w r2, sp, #7 + 8006b4e: 2183 movs r1, #131 ; 0x83 + 8006b50: 4630 mov r0, r6 + 8006b52: f001 faa5 bl 80080a0 <VL53L0X_RdByte> + 8006b56: 4604 mov r4, r0 + if ((strobe != 0x00) || Status != VL53L0X_ERROR_NONE) + 8006b58: f89d 3007 ldrb.w r3, [sp, #7] + 8006b5c: b923 cbnz r3, 8006b68 <VL53L0X_device_read_strobe+0x32> + 8006b5e: b918 cbnz r0, 8006b68 <VL53L0X_device_read_strobe+0x32> + break; + + LoopNb = LoopNb + 1; + 8006b60: 3501 adds r5, #1 + } while (LoopNb < VL53L0X_DEFAULT_MAX_LOOP); + 8006b62: f5b5 6ffa cmp.w r5, #2000 ; 0x7d0 + 8006b66: d3f0 bcc.n 8006b4a <VL53L0X_device_read_strobe+0x14> + + if (LoopNb >= VL53L0X_DEFAULT_MAX_LOOP) + 8006b68: f5b5 6ffa cmp.w r5, #2000 ; 0x7d0 + 8006b6c: d301 bcc.n 8006b72 <VL53L0X_device_read_strobe+0x3c> + Status = VL53L0X_ERROR_TIME_OUT; + 8006b6e: f06f 0406 mvn.w r4, #6 + + } + + Status |= VL53L0X_WrByte(Dev, 0x83, 0x01); + 8006b72: 2201 movs r2, #1 + 8006b74: 2183 movs r1, #131 ; 0x83 + 8006b76: 4630 mov r0, r6 + 8006b78: f001 fa70 bl 800805c <VL53L0X_WrByte> + 8006b7c: 4320 orrs r0, r4 + + LOG_FUNCTION_END(Status); + return Status; + +} + 8006b7e: b240 sxtb r0, r0 + 8006b80: b002 add sp, #8 + 8006b82: bd70 pop {r4, r5, r6, pc} + +08006b84 <VL53L0X_get_info_from_device>: + +VL53L0X_Error VL53L0X_get_info_from_device(VL53L0X_DEV Dev, uint8_t option) +{ + 8006b84: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8006b88: b08d sub sp, #52 ; 0x34 + 8006b8a: 4605 mov r5, r0 + 8006b8c: 460e mov r6, r1 + uint32_t TmpDWord; + uint8_t ModuleId; + uint8_t Revision; + uint8_t ReferenceSpadCount = 0; + uint8_t ReferenceSpadType = 0; + uint32_t PartUIDUpper = 0; + 8006b8e: 2300 movs r3, #0 + 8006b90: 9308 str r3, [sp, #32] + uint32_t PartUIDLower = 0; + 8006b92: 9307 str r3, [sp, #28] + int i; + + + LOG_FUNCTION_START(""); + + ReadDataFromDeviceDone = VL53L0X_GETDEVICESPECIFICPARAMETER(Dev, + 8006b94: f890 70f0 ldrb.w r7, [r0, #240] ; 0xf0 + ReadDataFromDeviceDone); + + /* This access is done only once after that a GetDeviceInfo or + * datainit is done*/ + if (ReadDataFromDeviceDone != 7) { + 8006b98: 2f07 cmp r7, #7 + 8006b9a: d125 bne.n 8006be8 <VL53L0X_get_info_from_device+0x64> + uint32_t SignalRateMeasFixed1104_400_mm = 0; + 8006b9c: f04f 0800 mov.w r8, #0 + uint32_t DistMeasFixed1104_400_mm = 0; + 8006ba0: 46c1 mov r9, r8 + uint8_t ReferenceSpadType = 0; + 8006ba2: 46c3 mov fp, r8 + uint8_t ReferenceSpadCount = 0; + 8006ba4: 46c2 mov sl, r8 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 8006ba6: 4644 mov r4, r8 + + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x00); + Status |= VL53L0X_WrByte(Dev, 0x80, 0x00); + } + + if ((Status == VL53L0X_ERROR_NONE) && + 8006ba8: 2c00 cmp r4, #0 + 8006baa: f040 8298 bne.w 80070de <VL53L0X_get_info_from_device+0x55a> + 8006bae: 2f07 cmp r7, #7 + 8006bb0: f000 8295 beq.w 80070de <VL53L0X_get_info_from_device+0x55a> + (ReadDataFromDeviceDone != 7)) { + /* Assign to variable if status is ok */ + if (((option & 1) == 1) && + 8006bb4: f016 0f01 tst.w r6, #1 + 8006bb8: f000 8269 beq.w 800708e <VL53L0X_get_info_from_device+0x50a> + 8006bbc: f017 0f01 tst.w r7, #1 + 8006bc0: f040 8265 bne.w 800708e <VL53L0X_get_info_from_device+0x50a> + ((ReadDataFromDeviceDone & 1) == 0)) { + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 8006bc4: f885 a113 strb.w sl, [r5, #275] ; 0x113 + ReferenceSpadCount, ReferenceSpadCount); + + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 8006bc8: f885 b114 strb.w fp, [r5, #276] ; 0x114 + ReferenceSpadType, ReferenceSpadType); + + for (i = 0; i < VL53L0X_REF_SPAD_BUFFER_SIZE; i++) { + 8006bcc: 2300 movs r3, #0 + 8006bce: 2b05 cmp r3, #5 + 8006bd0: f300 825d bgt.w 800708e <VL53L0X_get_info_from_device+0x50a> + Dev->Data.SpadData.RefGoodSpadMap[i] = + NvmRefGoodSpadMap[i]; + 8006bd4: f103 0230 add.w r2, r3, #48 ; 0x30 + 8006bd8: 446a add r2, sp + 8006bda: f812 1c30 ldrb.w r1, [r2, #-48] + Dev->Data.SpadData.RefGoodSpadMap[i] = + 8006bde: 18ea adds r2, r5, r3 + 8006be0: f882 112a strb.w r1, [r2, #298] ; 0x12a + for (i = 0; i < VL53L0X_REF_SPAD_BUFFER_SIZE; i++) { + 8006be4: 3301 adds r3, #1 + 8006be6: e7f2 b.n 8006bce <VL53L0X_get_info_from_device+0x4a> + Status |= VL53L0X_WrByte(Dev, 0x80, 0x01); + 8006be8: 2201 movs r2, #1 + 8006bea: 2180 movs r1, #128 ; 0x80 + 8006bec: f001 fa36 bl 800805c <VL53L0X_WrByte> + 8006bf0: 4604 mov r4, r0 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x01); + 8006bf2: 2201 movs r2, #1 + 8006bf4: 21ff movs r1, #255 ; 0xff + 8006bf6: 4628 mov r0, r5 + 8006bf8: f001 fa30 bl 800805c <VL53L0X_WrByte> + 8006bfc: 4304 orrs r4, r0 + 8006bfe: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x00, 0x00); + 8006c00: 2200 movs r2, #0 + 8006c02: 4611 mov r1, r2 + 8006c04: 4628 mov r0, r5 + 8006c06: f001 fa29 bl 800805c <VL53L0X_WrByte> + 8006c0a: 4304 orrs r4, r0 + 8006c0c: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x06); + 8006c0e: 2206 movs r2, #6 + 8006c10: 21ff movs r1, #255 ; 0xff + 8006c12: 4628 mov r0, r5 + 8006c14: f001 fa22 bl 800805c <VL53L0X_WrByte> + 8006c18: 4304 orrs r4, r0 + 8006c1a: b264 sxtb r4, r4 + Status |= VL53L0X_RdByte(Dev, 0x83, &byte); + 8006c1c: f10d 022f add.w r2, sp, #47 ; 0x2f + 8006c20: 2183 movs r1, #131 ; 0x83 + 8006c22: 4628 mov r0, r5 + 8006c24: f001 fa3c bl 80080a0 <VL53L0X_RdByte> + 8006c28: 4304 orrs r4, r0 + 8006c2a: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x83, byte|4); + 8006c2c: f89d 202f ldrb.w r2, [sp, #47] ; 0x2f + 8006c30: f042 0204 orr.w r2, r2, #4 + 8006c34: 2183 movs r1, #131 ; 0x83 + 8006c36: 4628 mov r0, r5 + 8006c38: f001 fa10 bl 800805c <VL53L0X_WrByte> + 8006c3c: 4304 orrs r4, r0 + 8006c3e: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x07); + 8006c40: 2207 movs r2, #7 + 8006c42: 21ff movs r1, #255 ; 0xff + 8006c44: 4628 mov r0, r5 + 8006c46: f001 fa09 bl 800805c <VL53L0X_WrByte> + 8006c4a: 4304 orrs r4, r0 + 8006c4c: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x81, 0x01); + 8006c4e: 2201 movs r2, #1 + 8006c50: 2181 movs r1, #129 ; 0x81 + 8006c52: 4628 mov r0, r5 + 8006c54: f001 fa02 bl 800805c <VL53L0X_WrByte> + 8006c58: 4304 orrs r4, r0 + 8006c5a: b264 sxtb r4, r4 + Status |= VL53L0X_PollingDelay(Dev); + 8006c5c: 4628 mov r0, r5 + 8006c5e: f001 fa9d bl 800819c <VL53L0X_PollingDelay> + 8006c62: 4304 orrs r4, r0 + 8006c64: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x80, 0x01); + 8006c66: 2201 movs r2, #1 + 8006c68: 2180 movs r1, #128 ; 0x80 + 8006c6a: 4628 mov r0, r5 + 8006c6c: f001 f9f6 bl 800805c <VL53L0X_WrByte> + 8006c70: 4304 orrs r4, r0 + 8006c72: b264 sxtb r4, r4 + if (((option & 1) == 1) && + 8006c74: f016 0a01 ands.w sl, r6, #1 + 8006c78: d05b beq.n 8006d32 <VL53L0X_get_info_from_device+0x1ae> + 8006c7a: f017 0f01 tst.w r7, #1 + 8006c7e: d003 beq.n 8006c88 <VL53L0X_get_info_from_device+0x104> + uint8_t ReferenceSpadType = 0; + 8006c80: f04f 0b00 mov.w fp, #0 + uint8_t ReferenceSpadCount = 0; + 8006c84: 46da mov sl, fp + 8006c86: e055 b.n 8006d34 <VL53L0X_get_info_from_device+0x1b0> + Status |= VL53L0X_WrByte(Dev, 0x94, 0x6b); + 8006c88: 226b movs r2, #107 ; 0x6b + 8006c8a: 2194 movs r1, #148 ; 0x94 + 8006c8c: 4628 mov r0, r5 + 8006c8e: f001 f9e5 bl 800805c <VL53L0X_WrByte> + 8006c92: 4304 orrs r4, r0 + 8006c94: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006c96: 4628 mov r0, r5 + 8006c98: f7ff ff4d bl 8006b36 <VL53L0X_device_read_strobe> + 8006c9c: 4304 orrs r4, r0 + 8006c9e: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006ca0: aa0a add r2, sp, #40 ; 0x28 + 8006ca2: 2190 movs r1, #144 ; 0x90 + 8006ca4: 4628 mov r0, r5 + 8006ca6: f001 fa51 bl 800814c <VL53L0X_RdDWord> + 8006caa: 4304 orrs r4, r0 + 8006cac: b264 sxtb r4, r4 + ReferenceSpadCount = (uint8_t)((TmpDWord >> 8) & 0x07f); + 8006cae: 9b0a ldr r3, [sp, #40] ; 0x28 + 8006cb0: f3c3 2a06 ubfx sl, r3, #8, #7 + ReferenceSpadType = (uint8_t)((TmpDWord >> 15) & 0x01); + 8006cb4: f3c3 3bc0 ubfx fp, r3, #15, #1 + Status |= VL53L0X_WrByte(Dev, 0x94, 0x24); + 8006cb8: 2224 movs r2, #36 ; 0x24 + 8006cba: 2194 movs r1, #148 ; 0x94 + 8006cbc: 4628 mov r0, r5 + 8006cbe: f001 f9cd bl 800805c <VL53L0X_WrByte> + 8006cc2: 4304 orrs r4, r0 + 8006cc4: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006cc6: 4628 mov r0, r5 + 8006cc8: f7ff ff35 bl 8006b36 <VL53L0X_device_read_strobe> + 8006ccc: 4304 orrs r4, r0 + 8006cce: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006cd0: aa0a add r2, sp, #40 ; 0x28 + 8006cd2: 2190 movs r1, #144 ; 0x90 + 8006cd4: 4628 mov r0, r5 + 8006cd6: f001 fa39 bl 800814c <VL53L0X_RdDWord> + 8006cda: 4304 orrs r4, r0 + 8006cdc: b264 sxtb r4, r4 + NvmRefGoodSpadMap[0] = (uint8_t)((TmpDWord >> 24) + 8006cde: 9b0a ldr r3, [sp, #40] ; 0x28 + 8006ce0: 0e1a lsrs r2, r3, #24 + 8006ce2: f88d 2000 strb.w r2, [sp] + NvmRefGoodSpadMap[1] = (uint8_t)((TmpDWord >> 16) + 8006ce6: f3c3 4207 ubfx r2, r3, #16, #8 + 8006cea: f88d 2001 strb.w r2, [sp, #1] + NvmRefGoodSpadMap[2] = (uint8_t)((TmpDWord >> 8) + 8006cee: f3c3 2207 ubfx r2, r3, #8, #8 + 8006cf2: f88d 2002 strb.w r2, [sp, #2] + NvmRefGoodSpadMap[3] = (uint8_t)(TmpDWord & 0xff); + 8006cf6: f88d 3003 strb.w r3, [sp, #3] + Status |= VL53L0X_WrByte(Dev, 0x94, 0x25); + 8006cfa: 2225 movs r2, #37 ; 0x25 + 8006cfc: 2194 movs r1, #148 ; 0x94 + 8006cfe: 4628 mov r0, r5 + 8006d00: f001 f9ac bl 800805c <VL53L0X_WrByte> + 8006d04: 4304 orrs r4, r0 + 8006d06: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006d08: 4628 mov r0, r5 + 8006d0a: f7ff ff14 bl 8006b36 <VL53L0X_device_read_strobe> + 8006d0e: 4304 orrs r4, r0 + 8006d10: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006d12: aa0a add r2, sp, #40 ; 0x28 + 8006d14: 2190 movs r1, #144 ; 0x90 + 8006d16: 4628 mov r0, r5 + 8006d18: f001 fa18 bl 800814c <VL53L0X_RdDWord> + 8006d1c: 4304 orrs r4, r0 + 8006d1e: b264 sxtb r4, r4 + NvmRefGoodSpadMap[4] = (uint8_t)((TmpDWord >> 24) + 8006d20: 9b0a ldr r3, [sp, #40] ; 0x28 + 8006d22: 0e1a lsrs r2, r3, #24 + 8006d24: f88d 2004 strb.w r2, [sp, #4] + NvmRefGoodSpadMap[5] = (uint8_t)((TmpDWord >> 16) + 8006d28: f3c3 4307 ubfx r3, r3, #16, #8 + 8006d2c: f88d 3005 strb.w r3, [sp, #5] + 8006d30: e000 b.n 8006d34 <VL53L0X_get_info_from_device+0x1b0> + uint8_t ReferenceSpadType = 0; + 8006d32: 46d3 mov fp, sl + if (((option & 2) == 2) && + 8006d34: f016 0f02 tst.w r6, #2 + 8006d38: d002 beq.n 8006d40 <VL53L0X_get_info_from_device+0x1bc> + 8006d3a: f017 0f02 tst.w r7, #2 + 8006d3e: d00b beq.n 8006d58 <VL53L0X_get_info_from_device+0x1d4> + if (((option & 4) == 4) && + 8006d40: f016 0f04 tst.w r6, #4 + 8006d44: f000 8163 beq.w 800700e <VL53L0X_get_info_from_device+0x48a> + 8006d48: f017 0f04 tst.w r7, #4 + 8006d4c: f000 80dc beq.w 8006f08 <VL53L0X_get_info_from_device+0x384> + uint32_t SignalRateMeasFixed1104_400_mm = 0; + 8006d50: f04f 0800 mov.w r8, #0 + uint32_t DistMeasFixed1104_400_mm = 0; + 8006d54: 46c1 mov r9, r8 + 8006d56: e15d b.n 8007014 <VL53L0X_get_info_from_device+0x490> + Status |= VL53L0X_WrByte(Dev, 0x94, 0x02); + 8006d58: 2202 movs r2, #2 + 8006d5a: 2194 movs r1, #148 ; 0x94 + 8006d5c: 4628 mov r0, r5 + 8006d5e: f001 f97d bl 800805c <VL53L0X_WrByte> + 8006d62: 4304 orrs r4, r0 + 8006d64: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006d66: 4628 mov r0, r5 + 8006d68: f7ff fee5 bl 8006b36 <VL53L0X_device_read_strobe> + 8006d6c: 4304 orrs r4, r0 + 8006d6e: b264 sxtb r4, r4 + Status |= VL53L0X_RdByte(Dev, 0x90, &ModuleId); + 8006d70: f10d 0227 add.w r2, sp, #39 ; 0x27 + 8006d74: 2190 movs r1, #144 ; 0x90 + 8006d76: 4628 mov r0, r5 + 8006d78: f001 f992 bl 80080a0 <VL53L0X_RdByte> + 8006d7c: 4304 orrs r4, r0 + 8006d7e: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x94, 0x7B); + 8006d80: 227b movs r2, #123 ; 0x7b + 8006d82: 2194 movs r1, #148 ; 0x94 + 8006d84: 4628 mov r0, r5 + 8006d86: f001 f969 bl 800805c <VL53L0X_WrByte> + 8006d8a: 4304 orrs r4, r0 + 8006d8c: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006d8e: 4628 mov r0, r5 + 8006d90: f7ff fed1 bl 8006b36 <VL53L0X_device_read_strobe> + 8006d94: 4304 orrs r4, r0 + 8006d96: b264 sxtb r4, r4 + Status |= VL53L0X_RdByte(Dev, 0x90, &Revision); + 8006d98: f10d 0226 add.w r2, sp, #38 ; 0x26 + 8006d9c: 2190 movs r1, #144 ; 0x90 + 8006d9e: 4628 mov r0, r5 + 8006da0: f001 f97e bl 80080a0 <VL53L0X_RdByte> + 8006da4: 4304 orrs r4, r0 + 8006da6: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x94, 0x77); + 8006da8: 2277 movs r2, #119 ; 0x77 + 8006daa: 2194 movs r1, #148 ; 0x94 + 8006dac: 4628 mov r0, r5 + 8006dae: f001 f955 bl 800805c <VL53L0X_WrByte> + 8006db2: 4304 orrs r4, r0 + 8006db4: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006db6: 4628 mov r0, r5 + 8006db8: f7ff febd bl 8006b36 <VL53L0X_device_read_strobe> + 8006dbc: 4304 orrs r4, r0 + 8006dbe: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006dc0: aa0a add r2, sp, #40 ; 0x28 + 8006dc2: 2190 movs r1, #144 ; 0x90 + 8006dc4: 4628 mov r0, r5 + 8006dc6: f001 f9c1 bl 800814c <VL53L0X_RdDWord> + 8006dca: 4304 orrs r4, r0 + 8006dcc: b264 sxtb r4, r4 + ProductId[0] = (char)((TmpDWord >> 25) & 0x07f); + 8006dce: 9b0a ldr r3, [sp, #40] ; 0x28 + 8006dd0: 0e5a lsrs r2, r3, #25 + 8006dd2: f88d 2008 strb.w r2, [sp, #8] + ProductId[1] = (char)((TmpDWord >> 18) & 0x07f); + 8006dd6: f3c3 4286 ubfx r2, r3, #18, #7 + 8006dda: f88d 2009 strb.w r2, [sp, #9] + ProductId[2] = (char)((TmpDWord >> 11) & 0x07f); + 8006dde: f3c3 22c6 ubfx r2, r3, #11, #7 + 8006de2: f88d 200a strb.w r2, [sp, #10] + ProductId[3] = (char)((TmpDWord >> 4) & 0x07f); + 8006de6: f3c3 1206 ubfx r2, r3, #4, #7 + 8006dea: f88d 200b strb.w r2, [sp, #11] + byte = (uint8_t)((TmpDWord & 0x00f) << 3); + 8006dee: 00db lsls r3, r3, #3 + 8006df0: f003 0378 and.w r3, r3, #120 ; 0x78 + 8006df4: f88d 302f strb.w r3, [sp, #47] ; 0x2f + Status |= VL53L0X_WrByte(Dev, 0x94, 0x78); + 8006df8: 2278 movs r2, #120 ; 0x78 + 8006dfa: 2194 movs r1, #148 ; 0x94 + 8006dfc: 4628 mov r0, r5 + 8006dfe: f001 f92d bl 800805c <VL53L0X_WrByte> + 8006e02: 4304 orrs r4, r0 + 8006e04: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006e06: 4628 mov r0, r5 + 8006e08: f7ff fe95 bl 8006b36 <VL53L0X_device_read_strobe> + 8006e0c: 4304 orrs r4, r0 + 8006e0e: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006e10: aa0a add r2, sp, #40 ; 0x28 + 8006e12: 2190 movs r1, #144 ; 0x90 + 8006e14: 4628 mov r0, r5 + 8006e16: f001 f999 bl 800814c <VL53L0X_RdDWord> + 8006e1a: 4304 orrs r4, r0 + 8006e1c: b264 sxtb r4, r4 + ((TmpDWord >> 29) & 0x07f)); + 8006e1e: 9b0a ldr r3, [sp, #40] ; 0x28 + ProductId[4] = (char)(byte + + 8006e20: f89d 202f ldrb.w r2, [sp, #47] ; 0x2f + 8006e24: eb02 7253 add.w r2, r2, r3, lsr #29 + 8006e28: f88d 200c strb.w r2, [sp, #12] + ProductId[5] = (char)((TmpDWord >> 22) & 0x07f); + 8006e2c: f3c3 5286 ubfx r2, r3, #22, #7 + 8006e30: f88d 200d strb.w r2, [sp, #13] + ProductId[6] = (char)((TmpDWord >> 15) & 0x07f); + 8006e34: f3c3 32c6 ubfx r2, r3, #15, #7 + 8006e38: f88d 200e strb.w r2, [sp, #14] + ProductId[7] = (char)((TmpDWord >> 8) & 0x07f); + 8006e3c: f3c3 2206 ubfx r2, r3, #8, #7 + 8006e40: f88d 200f strb.w r2, [sp, #15] + ProductId[8] = (char)((TmpDWord >> 1) & 0x07f); + 8006e44: f3c3 0246 ubfx r2, r3, #1, #7 + 8006e48: f88d 2010 strb.w r2, [sp, #16] + byte = (uint8_t)((TmpDWord & 0x001) << 6); + 8006e4c: 019b lsls r3, r3, #6 + 8006e4e: f003 0340 and.w r3, r3, #64 ; 0x40 + 8006e52: f88d 302f strb.w r3, [sp, #47] ; 0x2f + Status |= VL53L0X_WrByte(Dev, 0x94, 0x79); + 8006e56: 2279 movs r2, #121 ; 0x79 + 8006e58: 2194 movs r1, #148 ; 0x94 + 8006e5a: 4628 mov r0, r5 + 8006e5c: f001 f8fe bl 800805c <VL53L0X_WrByte> + 8006e60: 4304 orrs r4, r0 + 8006e62: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006e64: 4628 mov r0, r5 + 8006e66: f7ff fe66 bl 8006b36 <VL53L0X_device_read_strobe> + 8006e6a: 4304 orrs r4, r0 + 8006e6c: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006e6e: aa0a add r2, sp, #40 ; 0x28 + 8006e70: 2190 movs r1, #144 ; 0x90 + 8006e72: 4628 mov r0, r5 + 8006e74: f001 f96a bl 800814c <VL53L0X_RdDWord> + 8006e78: 4304 orrs r4, r0 + 8006e7a: b264 sxtb r4, r4 + ((TmpDWord >> 26) & 0x07f)); + 8006e7c: 9b0a ldr r3, [sp, #40] ; 0x28 + ProductId[9] = (char)(byte + + 8006e7e: f89d 202f ldrb.w r2, [sp, #47] ; 0x2f + 8006e82: eb02 6293 add.w r2, r2, r3, lsr #26 + 8006e86: f88d 2011 strb.w r2, [sp, #17] + ProductId[10] = (char)((TmpDWord >> 19) & 0x07f); + 8006e8a: f3c3 42c6 ubfx r2, r3, #19, #7 + 8006e8e: f88d 2012 strb.w r2, [sp, #18] + ProductId[11] = (char)((TmpDWord >> 12) & 0x07f); + 8006e92: f3c3 3206 ubfx r2, r3, #12, #7 + 8006e96: f88d 2013 strb.w r2, [sp, #19] + ProductId[12] = (char)((TmpDWord >> 5) & 0x07f); + 8006e9a: f3c3 1246 ubfx r2, r3, #5, #7 + 8006e9e: f88d 2014 strb.w r2, [sp, #20] + byte = (uint8_t)((TmpDWord & 0x01f) << 2); + 8006ea2: 009b lsls r3, r3, #2 + 8006ea4: f003 037c and.w r3, r3, #124 ; 0x7c + 8006ea8: f88d 302f strb.w r3, [sp, #47] ; 0x2f + Status |= VL53L0X_WrByte(Dev, 0x94, 0x7A); + 8006eac: 227a movs r2, #122 ; 0x7a + 8006eae: 2194 movs r1, #148 ; 0x94 + 8006eb0: 4628 mov r0, r5 + 8006eb2: f001 f8d3 bl 800805c <VL53L0X_WrByte> + 8006eb6: 4304 orrs r4, r0 + 8006eb8: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006eba: 4628 mov r0, r5 + 8006ebc: f7ff fe3b bl 8006b36 <VL53L0X_device_read_strobe> + 8006ec0: 4304 orrs r4, r0 + 8006ec2: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006ec4: aa0a add r2, sp, #40 ; 0x28 + 8006ec6: 2190 movs r1, #144 ; 0x90 + 8006ec8: 4628 mov r0, r5 + 8006eca: f001 f93f bl 800814c <VL53L0X_RdDWord> + 8006ece: 4304 orrs r4, r0 + 8006ed0: b264 sxtb r4, r4 + ((TmpDWord >> 30) & 0x07f)); + 8006ed2: 9b0a ldr r3, [sp, #40] ; 0x28 + ProductId[13] = (char)(byte + + 8006ed4: f89d 202f ldrb.w r2, [sp, #47] ; 0x2f + 8006ed8: eb02 7293 add.w r2, r2, r3, lsr #30 + 8006edc: f88d 2015 strb.w r2, [sp, #21] + ProductId[14] = (char)((TmpDWord >> 23) & 0x07f); + 8006ee0: f3c3 52c6 ubfx r2, r3, #23, #7 + 8006ee4: f88d 2016 strb.w r2, [sp, #22] + ProductId[15] = (char)((TmpDWord >> 16) & 0x07f); + 8006ee8: f3c3 4206 ubfx r2, r3, #16, #7 + 8006eec: f88d 2017 strb.w r2, [sp, #23] + ProductId[16] = (char)((TmpDWord >> 9) & 0x07f); + 8006ef0: f3c3 2246 ubfx r2, r3, #9, #7 + 8006ef4: f88d 2018 strb.w r2, [sp, #24] + ProductId[17] = (char)((TmpDWord >> 2) & 0x07f); + 8006ef8: f3c3 0386 ubfx r3, r3, #2, #7 + 8006efc: f88d 3019 strb.w r3, [sp, #25] + ProductId[18] = '\0'; + 8006f00: 2300 movs r3, #0 + 8006f02: f88d 301a strb.w r3, [sp, #26] + 8006f06: e71b b.n 8006d40 <VL53L0X_get_info_from_device+0x1bc> + Status |= VL53L0X_WrByte(Dev, 0x94, 0x7B); + 8006f08: 227b movs r2, #123 ; 0x7b + 8006f0a: 2194 movs r1, #148 ; 0x94 + 8006f0c: 4628 mov r0, r5 + 8006f0e: f001 f8a5 bl 800805c <VL53L0X_WrByte> + 8006f12: 4304 orrs r4, r0 + 8006f14: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006f16: 4628 mov r0, r5 + 8006f18: f7ff fe0d bl 8006b36 <VL53L0X_device_read_strobe> + 8006f1c: 4304 orrs r4, r0 + 8006f1e: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &PartUIDUpper); + 8006f20: aa08 add r2, sp, #32 + 8006f22: 2190 movs r1, #144 ; 0x90 + 8006f24: 4628 mov r0, r5 + 8006f26: f001 f911 bl 800814c <VL53L0X_RdDWord> + 8006f2a: 4304 orrs r4, r0 + 8006f2c: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x94, 0x7C); + 8006f2e: 227c movs r2, #124 ; 0x7c + 8006f30: 2194 movs r1, #148 ; 0x94 + 8006f32: 4628 mov r0, r5 + 8006f34: f001 f892 bl 800805c <VL53L0X_WrByte> + 8006f38: 4304 orrs r4, r0 + 8006f3a: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006f3c: 4628 mov r0, r5 + 8006f3e: f7ff fdfa bl 8006b36 <VL53L0X_device_read_strobe> + 8006f42: 4304 orrs r4, r0 + 8006f44: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &PartUIDLower); + 8006f46: aa07 add r2, sp, #28 + 8006f48: 2190 movs r1, #144 ; 0x90 + 8006f4a: 4628 mov r0, r5 + 8006f4c: f001 f8fe bl 800814c <VL53L0X_RdDWord> + 8006f50: 4304 orrs r4, r0 + 8006f52: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x94, 0x73); + 8006f54: 2273 movs r2, #115 ; 0x73 + 8006f56: 2194 movs r1, #148 ; 0x94 + 8006f58: 4628 mov r0, r5 + 8006f5a: f001 f87f bl 800805c <VL53L0X_WrByte> + 8006f5e: 4304 orrs r4, r0 + 8006f60: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006f62: 4628 mov r0, r5 + 8006f64: f7ff fde7 bl 8006b36 <VL53L0X_device_read_strobe> + 8006f68: 4304 orrs r4, r0 + 8006f6a: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006f6c: aa0a add r2, sp, #40 ; 0x28 + 8006f6e: 2190 movs r1, #144 ; 0x90 + 8006f70: 4628 mov r0, r5 + 8006f72: f001 f8eb bl 800814c <VL53L0X_RdDWord> + 8006f76: 4304 orrs r4, r0 + 8006f78: b264 sxtb r4, r4 + 0x0000000ff) << 8; + 8006f7a: 9b0a ldr r3, [sp, #40] ; 0x28 + 8006f7c: 021b lsls r3, r3, #8 + SignalRateMeasFixed1104_400_mm = (TmpDWord & + 8006f7e: fa1f f983 uxth.w r9, r3 + Status |= VL53L0X_WrByte(Dev, 0x94, 0x74); + 8006f82: 2274 movs r2, #116 ; 0x74 + 8006f84: 2194 movs r1, #148 ; 0x94 + 8006f86: 4628 mov r0, r5 + 8006f88: f001 f868 bl 800805c <VL53L0X_WrByte> + 8006f8c: 4304 orrs r4, r0 + 8006f8e: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006f90: 4628 mov r0, r5 + 8006f92: f7ff fdd0 bl 8006b36 <VL53L0X_device_read_strobe> + 8006f96: 4304 orrs r4, r0 + 8006f98: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006f9a: aa0a add r2, sp, #40 ; 0x28 + 8006f9c: 2190 movs r1, #144 ; 0x90 + 8006f9e: 4628 mov r0, r5 + 8006fa0: f001 f8d4 bl 800814c <VL53L0X_RdDWord> + 8006fa4: 4304 orrs r4, r0 + 8006fa6: b264 sxtb r4, r4 + 0xff000000) >> 24); + 8006fa8: f89d 802b ldrb.w r8, [sp, #43] ; 0x2b + SignalRateMeasFixed1104_400_mm |= ((TmpDWord & + 8006fac: ea48 0809 orr.w r8, r8, r9 + Status |= VL53L0X_WrByte(Dev, 0x94, 0x75); + 8006fb0: 2275 movs r2, #117 ; 0x75 + 8006fb2: 2194 movs r1, #148 ; 0x94 + 8006fb4: 4628 mov r0, r5 + 8006fb6: f001 f851 bl 800805c <VL53L0X_WrByte> + 8006fba: 4304 orrs r4, r0 + 8006fbc: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006fbe: 4628 mov r0, r5 + 8006fc0: f7ff fdb9 bl 8006b36 <VL53L0X_device_read_strobe> + 8006fc4: 4304 orrs r4, r0 + 8006fc6: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006fc8: aa0a add r2, sp, #40 ; 0x28 + 8006fca: 2190 movs r1, #144 ; 0x90 + 8006fcc: 4628 mov r0, r5 + 8006fce: f001 f8bd bl 800814c <VL53L0X_RdDWord> + 8006fd2: 4304 orrs r4, r0 + 8006fd4: b264 sxtb r4, r4 + << 8; + 8006fd6: 9b0a ldr r3, [sp, #40] ; 0x28 + 8006fd8: 021b lsls r3, r3, #8 + DistMeasFixed1104_400_mm = (TmpDWord & 0x0000000ff) + 8006fda: fa1f f983 uxth.w r9, r3 + Status |= VL53L0X_WrByte(Dev, 0x94, 0x76); + 8006fde: 2276 movs r2, #118 ; 0x76 + 8006fe0: 2194 movs r1, #148 ; 0x94 + 8006fe2: 4628 mov r0, r5 + 8006fe4: f001 f83a bl 800805c <VL53L0X_WrByte> + 8006fe8: 4304 orrs r4, r0 + 8006fea: b264 sxtb r4, r4 + Status |= VL53L0X_device_read_strobe(Dev); + 8006fec: 4628 mov r0, r5 + 8006fee: f7ff fda2 bl 8006b36 <VL53L0X_device_read_strobe> + 8006ff2: 4304 orrs r4, r0 + 8006ff4: b264 sxtb r4, r4 + Status |= VL53L0X_RdDWord(Dev, 0x90, &TmpDWord); + 8006ff6: aa0a add r2, sp, #40 ; 0x28 + 8006ff8: 2190 movs r1, #144 ; 0x90 + 8006ffa: 4628 mov r0, r5 + 8006ffc: f001 f8a6 bl 800814c <VL53L0X_RdDWord> + 8007000: 4304 orrs r4, r0 + 8007002: b264 sxtb r4, r4 + >> 24); + 8007004: f89d 302b ldrb.w r3, [sp, #43] ; 0x2b + DistMeasFixed1104_400_mm |= ((TmpDWord & 0xff000000) + 8007008: ea43 0909 orr.w r9, r3, r9 + 800700c: e002 b.n 8007014 <VL53L0X_get_info_from_device+0x490> + uint32_t SignalRateMeasFixed1104_400_mm = 0; + 800700e: f04f 0800 mov.w r8, #0 + uint32_t DistMeasFixed1104_400_mm = 0; + 8007012: 46c1 mov r9, r8 + Status |= VL53L0X_WrByte(Dev, 0x81, 0x00); + 8007014: 2200 movs r2, #0 + 8007016: 2181 movs r1, #129 ; 0x81 + 8007018: 4628 mov r0, r5 + 800701a: f001 f81f bl 800805c <VL53L0X_WrByte> + 800701e: 4304 orrs r4, r0 + 8007020: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x06); + 8007022: 2206 movs r2, #6 + 8007024: 21ff movs r1, #255 ; 0xff + 8007026: 4628 mov r0, r5 + 8007028: f001 f818 bl 800805c <VL53L0X_WrByte> + 800702c: 4304 orrs r4, r0 + 800702e: b264 sxtb r4, r4 + Status |= VL53L0X_RdByte(Dev, 0x83, &byte); + 8007030: f10d 022f add.w r2, sp, #47 ; 0x2f + 8007034: 2183 movs r1, #131 ; 0x83 + 8007036: 4628 mov r0, r5 + 8007038: f001 f832 bl 80080a0 <VL53L0X_RdByte> + 800703c: 4304 orrs r4, r0 + 800703e: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x83, byte&0xfb); + 8007040: f89d 202f ldrb.w r2, [sp, #47] ; 0x2f + 8007044: f002 02fb and.w r2, r2, #251 ; 0xfb + 8007048: 2183 movs r1, #131 ; 0x83 + 800704a: 4628 mov r0, r5 + 800704c: f001 f806 bl 800805c <VL53L0X_WrByte> + 8007050: 4304 orrs r4, r0 + 8007052: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x01); + 8007054: 2201 movs r2, #1 + 8007056: 21ff movs r1, #255 ; 0xff + 8007058: 4628 mov r0, r5 + 800705a: f000 ffff bl 800805c <VL53L0X_WrByte> + 800705e: 4304 orrs r4, r0 + 8007060: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x00, 0x01); + 8007062: 2201 movs r2, #1 + 8007064: 2100 movs r1, #0 + 8007066: 4628 mov r0, r5 + 8007068: f000 fff8 bl 800805c <VL53L0X_WrByte> + 800706c: 4304 orrs r4, r0 + 800706e: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0xFF, 0x00); + 8007070: 2200 movs r2, #0 + 8007072: 21ff movs r1, #255 ; 0xff + 8007074: 4628 mov r0, r5 + 8007076: f000 fff1 bl 800805c <VL53L0X_WrByte> + 800707a: 4304 orrs r4, r0 + 800707c: b264 sxtb r4, r4 + Status |= VL53L0X_WrByte(Dev, 0x80, 0x00); + 800707e: 2200 movs r2, #0 + 8007080: 2180 movs r1, #128 ; 0x80 + 8007082: 4628 mov r0, r5 + 8007084: f000 ffea bl 800805c <VL53L0X_WrByte> + 8007088: 4304 orrs r4, r0 + 800708a: b264 sxtb r4, r4 + 800708c: e58c b.n 8006ba8 <VL53L0X_get_info_from_device+0x24> + } + } + + if (((option & 2) == 2) && + 800708e: f016 0f02 tst.w r6, #2 + 8007092: d002 beq.n 800709a <VL53L0X_get_info_from_device+0x516> + 8007094: f017 0f02 tst.w r7, #2 + 8007098: d025 beq.n 80070e6 <VL53L0X_get_info_from_device+0x562> + ProductId); + VL53L0X_COPYSTRING(ProductId_tmp, ProductId); + + } + + if (((option & 4) == 4) && + 800709a: f016 0f04 tst.w r6, #4 + 800709e: d019 beq.n 80070d4 <VL53L0X_get_info_from_device+0x550> + 80070a0: f017 0f04 tst.w r7, #4 + 80070a4: d116 bne.n 80070d4 <VL53L0X_get_info_from_device+0x550> + ((ReadDataFromDeviceDone & 4) == 0)) { + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 80070a6: 9b08 ldr r3, [sp, #32] + 80070a8: f8c5 3118 str.w r3, [r5, #280] ; 0x118 + PartUIDUpper, PartUIDUpper); + + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 80070ac: 9b07 ldr r3, [sp, #28] + 80070ae: f8c5 311c str.w r3, [r5, #284] ; 0x11c + PartUIDLower, PartUIDLower); + + SignalRateMeasFixed400mmFix = + 80070b2: ea4f 2348 mov.w r3, r8, lsl #9 + VL53L0X_FIXPOINT97TOFIXPOINT1616( + SignalRateMeasFixed1104_400_mm); + + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 80070b6: f8c5 3120 str.w r3, [r5, #288] ; 0x120 + SignalRateMeasFixed400mm, + SignalRateMeasFixed400mmFix); + + OffsetMicroMeters = 0; + if (DistMeasFixed1104_400_mm != 0) { + 80070ba: f1b9 0f00 cmp.w r9, #0 + 80070be: d020 beq.n 8007102 <VL53L0X_get_info_from_device+0x57e> + OffsetFixed1104_mm = + 80070c0: f5a9 53c8 sub.w r3, r9, #6400 ; 0x1900 + DistMeasFixed1104_400_mm - + DistMeasTgtFixed1104_mm; + OffsetMicroMeters = (OffsetFixed1104_mm + * 1000) >> 4; + 80070c4: f44f 727a mov.w r2, #1000 ; 0x3e8 + 80070c8: fb02 f303 mul.w r3, r2, r3 + 80070cc: 091b lsrs r3, r3, #4 + OffsetMicroMeters *= -1; + 80070ce: 425b negs r3, r3 + 80070d0: b21b sxth r3, r3 + } + + PALDevDataSet(Dev, + 80070d2: 60eb str r3, [r5, #12] + Part2PartOffsetAdjustmentNVMMicroMeter, + OffsetMicroMeters); + } + byte = (uint8_t)(ReadDataFromDeviceDone|option); + 80070d4: 4337 orrs r7, r6 + 80070d6: f88d 702f strb.w r7, [sp, #47] ; 0x2f + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, ReadDataFromDeviceDone, + 80070da: f885 70f0 strb.w r7, [r5, #240] ; 0xf0 + byte); + } + + LOG_FUNCTION_END(Status); + return Status; +} + 80070de: 4620 mov r0, r4 + 80070e0: b00d add sp, #52 ; 0x34 + 80070e2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 80070e6: f89d 3027 ldrb.w r3, [sp, #39] ; 0x27 + 80070ea: f885 30f1 strb.w r3, [r5, #241] ; 0xf1 + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 80070ee: f89d 3026 ldrb.w r3, [sp, #38] ; 0x26 + 80070f2: f885 30f2 strb.w r3, [r5, #242] ; 0xf2 + VL53L0X_COPYSTRING(ProductId_tmp, ProductId); + 80070f6: a902 add r1, sp, #8 + 80070f8: f105 00f3 add.w r0, r5, #243 ; 0xf3 + 80070fc: f010 fb0c bl 8017718 <strcpy> + 8007100: e7cb b.n 800709a <VL53L0X_get_info_from_device+0x516> + OffsetMicroMeters = 0; + 8007102: 2300 movs r3, #0 + 8007104: e7e5 b.n 80070d2 <VL53L0X_get_info_from_device+0x54e> + ... + +08007108 <VL53L0X_calc_macro_period_ps>: + macro_period_ps = (uint32_t)(macro_period_vclks + * vcsel_period_pclks * PLL_period_ps); + + LOG_FUNCTION_END(""); + return macro_period_ps; +} + 8007108: 4801 ldr r0, [pc, #4] ; (8007110 <VL53L0X_calc_macro_period_ps+0x8>) + 800710a: fb01 f000 mul.w r0, r1, r0 + 800710e: 4770 bx lr + 8007110: 003a2f00 .word 0x003a2f00 + +08007114 <VL53L0X_encode_timeout>: + + uint16_t encoded_timeout = 0; + uint32_t ls_byte = 0; + uint16_t ms_byte = 0; + + if (timeout_macro_clks > 0) { + 8007114: b170 cbz r0, 8007134 <VL53L0X_encode_timeout+0x20> + ls_byte = timeout_macro_clks - 1; + 8007116: 3801 subs r0, #1 + uint16_t ms_byte = 0; + 8007118: 2300 movs r3, #0 + + while ((ls_byte & 0xFFFFFF00) > 0) { + 800711a: e002 b.n 8007122 <VL53L0X_encode_timeout+0xe> + ls_byte = ls_byte >> 1; + 800711c: 0840 lsrs r0, r0, #1 + ms_byte++; + 800711e: 3301 adds r3, #1 + 8007120: b29b uxth r3, r3 + while ((ls_byte & 0xFFFFFF00) > 0) { + 8007122: f030 02ff bics.w r2, r0, #255 ; 0xff + 8007126: d1f9 bne.n 800711c <VL53L0X_encode_timeout+0x8> + } + + encoded_timeout = (ms_byte << 8) + 8007128: 021b lsls r3, r3, #8 + 800712a: b29b uxth r3, r3 + 800712c: fa53 f080 uxtab r0, r3, r0 + 8007130: b280 uxth r0, r0 + 8007132: 4770 bx lr + uint16_t encoded_timeout = 0; + 8007134: 2000 movs r0, #0 + + (uint16_t) (ls_byte & 0x000000FF); + } + + return encoded_timeout; + +} + 8007136: 4770 bx lr + +08007138 <VL53L0X_decode_timeout>: + * Decode 16-bit timeout register value - format (LSByte * 2^MSByte) + 1 + */ + + uint32_t timeout_macro_clks = 0; + + timeout_macro_clks = ((uint32_t) (encoded_timeout & 0x00FF) + 8007138: b2c3 uxtb r3, r0 + << (uint32_t) ((encoded_timeout & 0xFF00) >> 8)) + 1; + 800713a: 0a00 lsrs r0, r0, #8 + 800713c: fa03 f000 lsl.w r0, r3, r0 + + return timeout_macro_clks; +} + 8007140: 3001 adds r0, #1 + 8007142: 4770 bx lr + +08007144 <VL53L0X_calc_timeout_mclks>: + +/* To convert ms into register value */ +uint32_t VL53L0X_calc_timeout_mclks(VL53L0X_DEV Dev, + uint32_t timeout_period_us, + uint8_t vcsel_period_pclks) +{ + 8007144: b510 push {r4, lr} + 8007146: 460c mov r4, r1 + uint32_t macro_period_ps; + uint32_t macro_period_ns; + uint32_t timeout_period_mclks = 0; + + macro_period_ps = VL53L0X_calc_macro_period_ps(Dev, vcsel_period_pclks); + 8007148: 4611 mov r1, r2 + 800714a: f7ff ffdd bl 8007108 <VL53L0X_calc_macro_period_ps> + macro_period_ns = (macro_period_ps + 500) / 1000; + 800714e: f500 73fa add.w r3, r0, #500 ; 0x1f4 + 8007152: 4a06 ldr r2, [pc, #24] ; (800716c <VL53L0X_calc_timeout_mclks+0x28>) + 8007154: fba2 2303 umull r2, r3, r2, r3 + 8007158: 0998 lsrs r0, r3, #6 + + timeout_period_mclks = + (uint32_t) (((timeout_period_us * 1000) + + (macro_period_ns / 2)) / macro_period_ns); + 800715a: 09db lsrs r3, r3, #7 + 800715c: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8007160: fb02 3304 mla r3, r2, r4, r3 + + return timeout_period_mclks; +} + 8007164: fbb3 f0f0 udiv r0, r3, r0 + 8007168: bd10 pop {r4, pc} + 800716a: bf00 nop + 800716c: 10624dd3 .word 0x10624dd3 + +08007170 <VL53L0X_calc_timeout_us>: + +/* To convert register value into us */ +uint32_t VL53L0X_calc_timeout_us(VL53L0X_DEV Dev, + uint16_t timeout_period_mclks, + uint8_t vcsel_period_pclks) +{ + 8007170: b510 push {r4, lr} + 8007172: 460c mov r4, r1 + uint32_t macro_period_ps; + uint32_t macro_period_ns; + uint32_t actual_timeout_period_us = 0; + + macro_period_ps = VL53L0X_calc_macro_period_ps(Dev, vcsel_period_pclks); + 8007174: 4611 mov r1, r2 + 8007176: f7ff ffc7 bl 8007108 <VL53L0X_calc_macro_period_ps> + macro_period_ns = (macro_period_ps + 500) / 1000; + 800717a: f500 70fa add.w r0, r0, #500 ; 0x1f4 + 800717e: 4b06 ldr r3, [pc, #24] ; (8007198 <VL53L0X_calc_timeout_us+0x28>) + 8007180: fba3 2000 umull r2, r0, r3, r0 + 8007184: 0980 lsrs r0, r0, #6 + + actual_timeout_period_us = + ((timeout_period_mclks * macro_period_ns) + 500) / 1000; + 8007186: fb04 f000 mul.w r0, r4, r0 + 800718a: f500 70fa add.w r0, r0, #500 ; 0x1f4 + actual_timeout_period_us = + 800718e: fba3 3000 umull r3, r0, r3, r0 + + return actual_timeout_period_us; +} + 8007192: 0980 lsrs r0, r0, #6 + 8007194: bd10 pop {r4, pc} + 8007196: bf00 nop + 8007198: 10624dd3 .word 0x10624dd3 + +0800719c <get_sequence_step_timeout>: + + +VL53L0X_Error get_sequence_step_timeout(VL53L0X_DEV Dev, + VL53L0X_SequenceStepId SequenceStepId, + uint32_t *pTimeOutMicroSecs) +{ + 800719c: b5f0 push {r4, r5, r6, r7, lr} + 800719e: b085 sub sp, #20 + 80071a0: 4604 mov r4, r0 + 80071a2: 4615 mov r5, r2 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t CurrentVCSELPulsePeriodPClk; + uint8_t EncodedTimeOutByte = 0; + 80071a4: 2300 movs r3, #0 + 80071a6: f88d 300e strb.w r3, [sp, #14] + uint32_t TimeoutMicroSeconds = 0; + uint16_t PreRangeEncodedTimeOut = 0; + 80071aa: f8ad 300c strh.w r3, [sp, #12] + uint16_t PreRangeTimeOutMClks; + uint16_t FinalRangeTimeOutMClks = 0; + uint16_t FinalRangeEncodedTimeOut; + VL53L0X_SchedulerSequenceSteps_t SchedulerSequenceSteps; + + if ((SequenceStepId == VL53L0X_SEQUENCESTEP_TCC) || + 80071ae: 2902 cmp r1, #2 + 80071b0: d909 bls.n 80071c6 <get_sequence_step_timeout+0x2a> + MsrcTimeOutMClks = VL53L0X_decode_timeout(EncodedTimeOutByte); + + TimeoutMicroSeconds = VL53L0X_calc_timeout_us(Dev, + MsrcTimeOutMClks, + CurrentVCSELPulsePeriodPClk); + } else if (SequenceStepId == VL53L0X_SEQUENCESTEP_PRE_RANGE) { + 80071b2: 2903 cmp r1, #3 + 80071b4: d021 beq.n 80071fa <get_sequence_step_timeout+0x5e> + + TimeoutMicroSeconds = VL53L0X_calc_timeout_us(Dev, + PreRangeTimeOutMClks, + CurrentVCSELPulsePeriodPClk); + } + } else if (SequenceStepId == VL53L0X_SEQUENCESTEP_FINAL_RANGE) { + 80071b6: 2904 cmp r1, #4 + 80071b8: d042 beq.n 8007240 <get_sequence_step_timeout+0xa4> + uint32_t TimeoutMicroSeconds = 0; + 80071ba: 2000 movs r0, #0 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80071bc: 4606 mov r6, r0 + TimeoutMicroSeconds = VL53L0X_calc_timeout_us(Dev, + FinalRangeTimeOutMClks, + CurrentVCSELPulsePeriodPClk); + } + + *pTimeOutMicroSecs = TimeoutMicroSeconds; + 80071be: 6028 str r0, [r5, #0] + + return Status; +} + 80071c0: 4630 mov r0, r6 + 80071c2: b005 add sp, #20 + 80071c4: bdf0 pop {r4, r5, r6, r7, pc} + Status = VL53L0X_GetVcselPulsePeriod(Dev, + 80071c6: f10d 020f add.w r2, sp, #15 + 80071ca: 4619 mov r1, r3 + 80071cc: f7fe f98e bl 80054ec <VL53L0X_GetVcselPulsePeriod> + if (Status == VL53L0X_ERROR_NONE) { + 80071d0: 4606 mov r6, r0 + 80071d2: b150 cbz r0, 80071ea <get_sequence_step_timeout+0x4e> + MsrcTimeOutMClks = VL53L0X_decode_timeout(EncodedTimeOutByte); + 80071d4: f89d 000e ldrb.w r0, [sp, #14] + 80071d8: f7ff ffae bl 8007138 <VL53L0X_decode_timeout> + TimeoutMicroSeconds = VL53L0X_calc_timeout_us(Dev, + 80071dc: f89d 200f ldrb.w r2, [sp, #15] + 80071e0: b281 uxth r1, r0 + 80071e2: 4620 mov r0, r4 + 80071e4: f7ff ffc4 bl 8007170 <VL53L0X_calc_timeout_us> + 80071e8: e7e9 b.n 80071be <get_sequence_step_timeout+0x22> + Status = VL53L0X_RdByte(Dev, + 80071ea: f10d 020e add.w r2, sp, #14 + 80071ee: 2146 movs r1, #70 ; 0x46 + 80071f0: 4620 mov r0, r4 + 80071f2: f000 ff55 bl 80080a0 <VL53L0X_RdByte> + 80071f6: 4606 mov r6, r0 + 80071f8: e7ec b.n 80071d4 <get_sequence_step_timeout+0x38> + Status = VL53L0X_GetVcselPulsePeriod(Dev, + 80071fa: f10d 020f add.w r2, sp, #15 + 80071fe: 2100 movs r1, #0 + 8007200: f7fe f974 bl 80054ec <VL53L0X_GetVcselPulsePeriod> + if (Status == VL53L0X_ERROR_NONE) { + 8007204: 4606 mov r6, r0 + 8007206: b108 cbz r0, 800720c <get_sequence_step_timeout+0x70> + uint32_t TimeoutMicroSeconds = 0; + 8007208: 2000 movs r0, #0 + 800720a: e7d8 b.n 80071be <get_sequence_step_timeout+0x22> + Status = VL53L0X_GetVcselPulsePeriod(Dev, + 800720c: f10d 020f add.w r2, sp, #15 + 8007210: 2100 movs r1, #0 + 8007212: 4620 mov r0, r4 + 8007214: f7fe f96a bl 80054ec <VL53L0X_GetVcselPulsePeriod> + if (Status == VL53L0X_ERROR_NONE) { + 8007218: 4606 mov r6, r0 + 800721a: b150 cbz r0, 8007232 <get_sequence_step_timeout+0x96> + PreRangeTimeOutMClks = VL53L0X_decode_timeout( + 800721c: f8bd 000c ldrh.w r0, [sp, #12] + 8007220: f7ff ff8a bl 8007138 <VL53L0X_decode_timeout> + TimeoutMicroSeconds = VL53L0X_calc_timeout_us(Dev, + 8007224: f89d 200f ldrb.w r2, [sp, #15] + 8007228: b281 uxth r1, r0 + 800722a: 4620 mov r0, r4 + 800722c: f7ff ffa0 bl 8007170 <VL53L0X_calc_timeout_us> + 8007230: e7c5 b.n 80071be <get_sequence_step_timeout+0x22> + Status = VL53L0X_RdWord(Dev, + 8007232: aa03 add r2, sp, #12 + 8007234: 2151 movs r1, #81 ; 0x51 + 8007236: 4620 mov r0, r4 + 8007238: f000 ff66 bl 8008108 <VL53L0X_RdWord> + 800723c: 4606 mov r6, r0 + 800723e: e7ed b.n 800721c <get_sequence_step_timeout+0x80> + VL53L0X_GetSequenceStepEnables(Dev, &SchedulerSequenceSteps); + 8007240: a901 add r1, sp, #4 + 8007242: f7fe f9d9 bl 80055f8 <VL53L0X_GetSequenceStepEnables> + if (SchedulerSequenceSteps.PreRangeOn) { + 8007246: f89d 3007 ldrb.w r3, [sp, #7] + 800724a: b1b3 cbz r3, 800727a <get_sequence_step_timeout+0xde> + Status = VL53L0X_GetVcselPulsePeriod(Dev, + 800724c: f10d 020f add.w r2, sp, #15 + 8007250: 2100 movs r1, #0 + 8007252: 4620 mov r0, r4 + 8007254: f7fe f94a bl 80054ec <VL53L0X_GetVcselPulsePeriod> + if (Status == VL53L0X_ERROR_NONE) { + 8007258: 4606 mov r6, r0 + 800725a: b110 cbz r0, 8007262 <get_sequence_step_timeout+0xc6> + PreRangeTimeOutMClks = 0; + 800725c: 2700 movs r7, #0 + if (Status == VL53L0X_ERROR_NONE) { + 800725e: b9a6 cbnz r6, 800728a <get_sequence_step_timeout+0xee> + 8007260: e00c b.n 800727c <get_sequence_step_timeout+0xe0> + Status = VL53L0X_RdWord(Dev, + 8007262: aa03 add r2, sp, #12 + 8007264: 2151 movs r1, #81 ; 0x51 + 8007266: 4620 mov r0, r4 + 8007268: f000 ff4e bl 8008108 <VL53L0X_RdWord> + 800726c: 4606 mov r6, r0 + PreRangeTimeOutMClks = VL53L0X_decode_timeout( + 800726e: f8bd 000c ldrh.w r0, [sp, #12] + 8007272: f7ff ff61 bl 8007138 <VL53L0X_decode_timeout> + 8007276: b287 uxth r7, r0 + 8007278: e7f1 b.n 800725e <get_sequence_step_timeout+0xc2> + PreRangeTimeOutMClks = 0; + 800727a: 2700 movs r7, #0 + Status = VL53L0X_GetVcselPulsePeriod(Dev, + 800727c: f10d 020f add.w r2, sp, #15 + 8007280: 2101 movs r1, #1 + 8007282: 4620 mov r0, r4 + 8007284: f7fe f932 bl 80054ec <VL53L0X_GetVcselPulsePeriod> + 8007288: 4606 mov r6, r0 + if (Status == VL53L0X_ERROR_NONE) { + 800728a: b146 cbz r6, 800729e <get_sequence_step_timeout+0x102> + uint16_t FinalRangeTimeOutMClks = 0; + 800728c: 2100 movs r1, #0 + FinalRangeTimeOutMClks -= PreRangeTimeOutMClks; + 800728e: 1bc9 subs r1, r1, r7 + TimeoutMicroSeconds = VL53L0X_calc_timeout_us(Dev, + 8007290: f89d 200f ldrb.w r2, [sp, #15] + 8007294: b289 uxth r1, r1 + 8007296: 4620 mov r0, r4 + 8007298: f7ff ff6a bl 8007170 <VL53L0X_calc_timeout_us> + 800729c: e78f b.n 80071be <get_sequence_step_timeout+0x22> + Status = VL53L0X_RdWord(Dev, + 800729e: f10d 020a add.w r2, sp, #10 + 80072a2: 2171 movs r1, #113 ; 0x71 + 80072a4: 4620 mov r0, r4 + 80072a6: f000 ff2f bl 8008108 <VL53L0X_RdWord> + 80072aa: 4606 mov r6, r0 + FinalRangeTimeOutMClks = VL53L0X_decode_timeout( + 80072ac: f8bd 000a ldrh.w r0, [sp, #10] + 80072b0: f7ff ff42 bl 8007138 <VL53L0X_decode_timeout> + 80072b4: b281 uxth r1, r0 + 80072b6: e7ea b.n 800728e <get_sequence_step_timeout+0xf2> + +080072b8 <set_sequence_step_timeout>: + + +VL53L0X_Error set_sequence_step_timeout(VL53L0X_DEV Dev, + VL53L0X_SequenceStepId SequenceStepId, + uint32_t TimeOutMicroSecs) +{ + 80072b8: b5f0 push {r4, r5, r6, r7, lr} + 80072ba: b085 sub sp, #20 + 80072bc: 4604 mov r4, r0 + 80072be: 4617 mov r7, r2 + uint16_t MsrcRangeTimeOutMClks; + uint32_t FinalRangeTimeOutMClks; + uint16_t FinalRangeEncodedTimeOut; + VL53L0X_SchedulerSequenceSteps_t SchedulerSequenceSteps; + + if ((SequenceStepId == VL53L0X_SEQUENCESTEP_TCC) || + 80072c0: 2902 cmp r1, #2 + 80072c2: d917 bls.n 80072f4 <set_sequence_step_timeout+0x3c> + VL53L0X_REG_MSRC_CONFIG_TIMEOUT_MACROP, + MsrcEncodedTimeOut); + } + } else { + + if (SequenceStepId == VL53L0X_SEQUENCESTEP_PRE_RANGE) { + 80072c4: 2903 cmp r1, #3 + 80072c6: d036 beq.n 8007336 <set_sequence_step_timeout+0x7e> + VL53L0X_SETDEVICESPECIFICPARAMETER( + Dev, + PreRangeTimeoutMicroSecs, + TimeOutMicroSecs); + } + } else if (SequenceStepId == VL53L0X_SEQUENCESTEP_FINAL_RANGE) { + 80072c8: 2904 cmp r1, #4 + 80072ca: d17f bne.n 80073cc <set_sequence_step_timeout+0x114> + * must be added. To do this both final and pre-range + * timeouts must be expressed in macro periods MClks + * because they have different vcsel periods. + */ + + VL53L0X_GetSequenceStepEnables(Dev, + 80072cc: a901 add r1, sp, #4 + 80072ce: f7fe f993 bl 80055f8 <VL53L0X_GetSequenceStepEnables> + &SchedulerSequenceSteps); + PreRangeTimeOutMClks = 0; + if (SchedulerSequenceSteps.PreRangeOn) { + 80072d2: f89d 3007 ldrb.w r3, [sp, #7] + 80072d6: 2b00 cmp r3, #0 + 80072d8: d058 beq.n 800738c <set_sequence_step_timeout+0xd4> + + /* Retrieve PRE-RANGE VCSEL Period */ + Status = VL53L0X_GetVcselPulsePeriod(Dev, + 80072da: f10d 020f add.w r2, sp, #15 + 80072de: 2100 movs r1, #0 + 80072e0: 4620 mov r0, r4 + 80072e2: f7fe f903 bl 80054ec <VL53L0X_GetVcselPulsePeriod> + VL53L0X_VCSEL_PERIOD_PRE_RANGE, + &CurrentVCSELPulsePeriodPClk); + + /* Retrieve PRE-RANGE Timeout in Macro periods + * (MCLKS) */ + if (Status == VL53L0X_ERROR_NONE) { + 80072e6: 4605 mov r5, r0 + 80072e8: 2800 cmp r0, #0 + 80072ea: d043 beq.n 8007374 <set_sequence_step_timeout+0xbc> + PreRangeTimeOutMClks = 0; + 80072ec: 2600 movs r6, #0 + } + + /* Calculate FINAL RANGE Timeout in Macro Periods + * (MCLKS) and add PRE-RANGE value + */ + if (Status == VL53L0X_ERROR_NONE) { + 80072ee: 2d00 cmp r5, #0 + 80072f0: d154 bne.n 800739c <set_sequence_step_timeout+0xe4> + 80072f2: e04c b.n 800738e <set_sequence_step_timeout+0xd6> + 80072f4: 2600 movs r6, #0 + Status = VL53L0X_GetVcselPulsePeriod(Dev, + 80072f6: f10d 020f add.w r2, sp, #15 + 80072fa: 4631 mov r1, r6 + 80072fc: f7fe f8f6 bl 80054ec <VL53L0X_GetVcselPulsePeriod> + if (Status == VL53L0X_ERROR_NONE) { + 8007300: 4605 mov r5, r0 + 8007302: b970 cbnz r0, 8007322 <set_sequence_step_timeout+0x6a> + MsrcRangeTimeOutMClks = VL53L0X_calc_timeout_mclks(Dev, + 8007304: f89d 200f ldrb.w r2, [sp, #15] + 8007308: 4639 mov r1, r7 + 800730a: 4620 mov r0, r4 + 800730c: f7ff ff1a bl 8007144 <VL53L0X_calc_timeout_mclks> + 8007310: b283 uxth r3, r0 + if (MsrcRangeTimeOutMClks > 256) + 8007312: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8007316: d80c bhi.n 8007332 <set_sequence_step_timeout+0x7a> + (uint8_t)MsrcRangeTimeOutMClks - 1; + 8007318: b2c6 uxtb r6, r0 + MsrcEncodedTimeOut = + 800731a: 3e01 subs r6, #1 + 800731c: b2f6 uxtb r6, r6 + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 800731e: f8a4 60d8 strh.w r6, [r4, #216] ; 0xd8 + if (Status == VL53L0X_ERROR_NONE) { + 8007322: bbe5 cbnz r5, 800739e <set_sequence_step_timeout+0xe6> + Status = VL53L0X_WrByte(Dev, + 8007324: 4632 mov r2, r6 + 8007326: 2146 movs r1, #70 ; 0x46 + 8007328: 4620 mov r0, r4 + 800732a: f000 fe97 bl 800805c <VL53L0X_WrByte> + 800732e: 4605 mov r5, r0 + 8007330: e035 b.n 800739e <set_sequence_step_timeout+0xe6> + MsrcEncodedTimeOut = 255; + 8007332: 26ff movs r6, #255 ; 0xff + 8007334: e7f3 b.n 800731e <set_sequence_step_timeout+0x66> + Status = VL53L0X_GetVcselPulsePeriod(Dev, + 8007336: f10d 020f add.w r2, sp, #15 + 800733a: 2100 movs r1, #0 + 800733c: f7fe f8d6 bl 80054ec <VL53L0X_GetVcselPulsePeriod> + 8007340: 4605 mov r5, r0 + VL53L0X_calc_timeout_mclks(Dev, + 8007342: f89d 200f ldrb.w r2, [sp, #15] + 8007346: 4639 mov r1, r7 + 8007348: 4620 mov r0, r4 + 800734a: f7ff fefb bl 8007144 <VL53L0X_calc_timeout_mclks> + PreRangeEncodedTimeOut = VL53L0X_encode_timeout( + 800734e: b280 uxth r0, r0 + 8007350: f7ff fee0 bl 8007114 <VL53L0X_encode_timeout> + 8007354: f8ad 000c strh.w r0, [sp, #12] + VL53L0X_SETDEVICESPECIFICPARAMETER(Dev, + 8007358: f8a4 00d8 strh.w r0, [r4, #216] ; 0xd8 + if (Status == VL53L0X_ERROR_NONE) { + 800735c: b11d cbz r5, 8007366 <set_sequence_step_timeout+0xae> + if (Status == VL53L0X_ERROR_NONE) { + 800735e: b9f5 cbnz r5, 800739e <set_sequence_step_timeout+0xe6> + VL53L0X_SETDEVICESPECIFICPARAMETER( + 8007360: f8c4 70e4 str.w r7, [r4, #228] ; 0xe4 + 8007364: e01b b.n 800739e <set_sequence_step_timeout+0xe6> + Status = VL53L0X_WrWord(Dev, + 8007366: 4602 mov r2, r0 + 8007368: 2151 movs r1, #81 ; 0x51 + 800736a: 4620 mov r0, r4 + 800736c: f000 fe86 bl 800807c <VL53L0X_WrWord> + 8007370: 4605 mov r5, r0 + 8007372: e7f4 b.n 800735e <set_sequence_step_timeout+0xa6> + Status = VL53L0X_RdWord(Dev, 0x51, + 8007374: aa03 add r2, sp, #12 + 8007376: 2151 movs r1, #81 ; 0x51 + 8007378: 4620 mov r0, r4 + 800737a: f000 fec5 bl 8008108 <VL53L0X_RdWord> + 800737e: 4605 mov r5, r0 + VL53L0X_decode_timeout( + 8007380: f8bd 000c ldrh.w r0, [sp, #12] + 8007384: f7ff fed8 bl 8007138 <VL53L0X_decode_timeout> + PreRangeTimeOutMClks = + 8007388: b286 uxth r6, r0 + 800738a: e7b0 b.n 80072ee <set_sequence_step_timeout+0x36> + PreRangeTimeOutMClks = 0; + 800738c: 2600 movs r6, #0 + + Status = VL53L0X_GetVcselPulsePeriod(Dev, + 800738e: f10d 020f add.w r2, sp, #15 + 8007392: 2101 movs r1, #1 + 8007394: 4620 mov r0, r4 + 8007396: f7fe f8a9 bl 80054ec <VL53L0X_GetVcselPulsePeriod> + 800739a: 4605 mov r5, r0 + VL53L0X_VCSEL_PERIOD_FINAL_RANGE, + &CurrentVCSELPulsePeriodPClk); + } + if (Status == VL53L0X_ERROR_NONE) { + 800739c: b115 cbz r5, 80073a4 <set_sequence_step_timeout+0xec> + } else + Status = VL53L0X_ERROR_INVALID_PARAMS; + + } + return Status; +} + 800739e: 4628 mov r0, r5 + 80073a0: b005 add sp, #20 + 80073a2: bdf0 pop {r4, r5, r6, r7, pc} + VL53L0X_calc_timeout_mclks(Dev, + 80073a4: f89d 200f ldrb.w r2, [sp, #15] + 80073a8: 4639 mov r1, r7 + 80073aa: 4620 mov r0, r4 + 80073ac: f7ff feca bl 8007144 <VL53L0X_calc_timeout_mclks> + VL53L0X_encode_timeout(FinalRangeTimeOutMClks); + 80073b0: 4430 add r0, r6 + 80073b2: f7ff feaf bl 8007114 <VL53L0X_encode_timeout> + 80073b6: 4602 mov r2, r0 + Status = VL53L0X_WrWord(Dev, 0x71, + 80073b8: 2171 movs r1, #113 ; 0x71 + 80073ba: 4620 mov r0, r4 + 80073bc: f000 fe5e bl 800807c <VL53L0X_WrWord> + if (Status == VL53L0X_ERROR_NONE) { + 80073c0: 4605 mov r5, r0 + 80073c2: 2800 cmp r0, #0 + 80073c4: d1eb bne.n 800739e <set_sequence_step_timeout+0xe6> + VL53L0X_SETDEVICESPECIFICPARAMETER( + 80073c6: f8c4 70dc str.w r7, [r4, #220] ; 0xdc + 80073ca: e7e8 b.n 800739e <set_sequence_step_timeout+0xe6> + Status = VL53L0X_ERROR_INVALID_PARAMS; + 80073cc: f06f 0503 mvn.w r5, #3 + 80073d0: e7e5 b.n 800739e <set_sequence_step_timeout+0xe6> + +080073d2 <VL53L0X_set_vcsel_pulse_period>: + +VL53L0X_Error VL53L0X_set_vcsel_pulse_period(VL53L0X_DEV Dev, + VL53L0X_VcselPeriod VcselPeriodType, uint8_t VCSELPulsePeriodPCLK) +{ + 80073d2: b5f0 push {r4, r5, r6, r7, lr} + 80073d4: b085 sub sp, #20 + uint8_t MaxFinalVcselPeriodPCLK = 14; + uint32_t MeasurementTimingBudgetMicroSeconds; + uint32_t FinalRangeTimeoutMicroSeconds; + uint32_t PreRangeTimeoutMicroSeconds; + uint32_t MsrcTimeoutMicroSeconds; + uint8_t PhaseCalInt = 0; + 80073d6: 2300 movs r3, #0 + 80073d8: f88d 3003 strb.w r3, [sp, #3] + + /* Check if valid clock period requested */ + + if ((VCSELPulsePeriodPCLK % 2) != 0) { + 80073dc: f012 0f01 tst.w r2, #1 + 80073e0: f040 8178 bne.w 80076d4 <VL53L0X_set_vcsel_pulse_period+0x302> + 80073e4: 4604 mov r4, r0 + 80073e6: 460e mov r6, r1 + 80073e8: 4615 mov r5, r2 + /* Value must be an even number */ + Status = VL53L0X_ERROR_INVALID_PARAMS; + } else if (VcselPeriodType == VL53L0X_VCSEL_PERIOD_PRE_RANGE && + 80073ea: b929 cbnz r1, 80073f8 <VL53L0X_set_vcsel_pulse_period+0x26> + 80073ec: 2a0b cmp r2, #11 + 80073ee: f240 8174 bls.w 80076da <VL53L0X_set_vcsel_pulse_period+0x308> + (VCSELPulsePeriodPCLK < MinPreVcselPeriodPCLK || + 80073f2: 2a12 cmp r2, #18 + 80073f4: f200 8174 bhi.w 80076e0 <VL53L0X_set_vcsel_pulse_period+0x30e> + VCSELPulsePeriodPCLK > MaxPreVcselPeriodPCLK)) { + Status = VL53L0X_ERROR_INVALID_PARAMS; + } else if (VcselPeriodType == VL53L0X_VCSEL_PERIOD_FINAL_RANGE && + 80073f8: 2e01 cmp r6, #1 + 80073fa: d00f beq.n 800741c <VL53L0X_set_vcsel_pulse_period+0x4a> + + if (Status != VL53L0X_ERROR_NONE) + return Status; + + + if (VcselPeriodType == VL53L0X_VCSEL_PERIOD_PRE_RANGE) { + 80073fc: 2e00 cmp r6, #0 + 80073fe: d141 bne.n 8007484 <VL53L0X_set_vcsel_pulse_period+0xb2> + + /* Set phase check limits */ + if (VCSELPulsePeriodPCLK == 12) { + 8007400: f1a5 030c sub.w r3, r5, #12 + 8007404: 2b06 cmp r3, #6 + 8007406: f200 8117 bhi.w 8007638 <VL53L0X_set_vcsel_pulse_period+0x266> + 800740a: e8df f013 tbh [pc, r3, lsl #1] + 800740e: 000f .short 0x000f + 8007410: 001a0115 .word 0x001a0115 + 8007414: 00250115 .word 0x00250115 + 8007418: 00300115 .word 0x00300115 + } else if (VcselPeriodType == VL53L0X_VCSEL_PERIOD_FINAL_RANGE && + 800741c: 2d07 cmp r5, #7 + 800741e: f240 8162 bls.w 80076e6 <VL53L0X_set_vcsel_pulse_period+0x314> + (VCSELPulsePeriodPCLK < MinFinalVcselPeriodPCLK || + 8007422: 2d0e cmp r5, #14 + 8007424: d9ea bls.n 80073fc <VL53L0X_set_vcsel_pulse_period+0x2a> + 8007426: f06f 0003 mvn.w r0, #3 + 800742a: e116 b.n 800765a <VL53L0X_set_vcsel_pulse_period+0x288> + + Status = VL53L0X_WrByte(Dev, + 800742c: 2218 movs r2, #24 + 800742e: 2157 movs r1, #87 ; 0x57 + 8007430: 4620 mov r0, r4 + 8007432: f000 fe13 bl 800805c <VL53L0X_WrByte> + VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, + 0x18); + Status = VL53L0X_WrByte(Dev, + 8007436: 2208 movs r2, #8 + 8007438: 2156 movs r1, #86 ; 0x56 + 800743a: 4620 mov r0, r4 + 800743c: f000 fe0e bl 800805c <VL53L0X_WrByte> + 8007440: e023 b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_LOW, + 0x08); + } else if (VCSELPulsePeriodPCLK == 14) { + + Status = VL53L0X_WrByte(Dev, + 8007442: 2230 movs r2, #48 ; 0x30 + 8007444: 2157 movs r1, #87 ; 0x57 + 8007446: 4620 mov r0, r4 + 8007448: f000 fe08 bl 800805c <VL53L0X_WrByte> + VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, + 0x30); + Status = VL53L0X_WrByte(Dev, + 800744c: 2208 movs r2, #8 + 800744e: 2156 movs r1, #86 ; 0x56 + 8007450: 4620 mov r0, r4 + 8007452: f000 fe03 bl 800805c <VL53L0X_WrByte> + 8007456: e018 b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_LOW, + 0x08); + } else if (VCSELPulsePeriodPCLK == 16) { + + Status = VL53L0X_WrByte(Dev, + 8007458: 2240 movs r2, #64 ; 0x40 + 800745a: 2157 movs r1, #87 ; 0x57 + 800745c: 4620 mov r0, r4 + 800745e: f000 fdfd bl 800805c <VL53L0X_WrByte> + VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, + 0x40); + Status = VL53L0X_WrByte(Dev, + 8007462: 2208 movs r2, #8 + 8007464: 2156 movs r1, #86 ; 0x56 + 8007466: 4620 mov r0, r4 + 8007468: f000 fdf8 bl 800805c <VL53L0X_WrByte> + 800746c: e00d b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_LOW, + 0x08); + } else if (VCSELPulsePeriodPCLK == 18) { + + Status = VL53L0X_WrByte(Dev, + 800746e: 2250 movs r2, #80 ; 0x50 + 8007470: 2157 movs r1, #87 ; 0x57 + 8007472: 4620 mov r0, r4 + 8007474: f000 fdf2 bl 800805c <VL53L0X_WrByte> + VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_HIGH, + 0x50); + Status = VL53L0X_WrByte(Dev, + 8007478: 2208 movs r2, #8 + 800747a: 2156 movs r1, #86 ; 0x56 + 800747c: 4620 mov r0, r4 + 800747e: f000 fded bl 800805c <VL53L0X_WrByte> + 8007482: e002 b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + VL53L0X_REG_PRE_RANGE_CONFIG_VALID_PHASE_LOW, + 0x08); + } + } else if (VcselPeriodType == VL53L0X_VCSEL_PERIOD_FINAL_RANGE) { + 8007484: 2e01 cmp r6, #1 + 8007486: d010 beq.n 80074aa <VL53L0X_set_vcsel_pulse_period+0xd8> + 8007488: 2000 movs r0, #0 + } + + + /* Re-calculate and apply timeouts, in macro periods */ + + if (Status == VL53L0X_ERROR_NONE) { + 800748a: 2800 cmp r0, #0 + 800748c: f040 80e3 bne.w 8007656 <VL53L0X_set_vcsel_pulse_period+0x284> + vcsel_period_reg = VL53L0X_encode_vcsel_period((uint8_t) + 8007490: 4628 mov r0, r5 + 8007492: f7ff fb38 bl 8006b06 <VL53L0X_encode_vcsel_period> + 8007496: 4607 mov r7, r0 + * using the new VCSEL period. + * + * For the MSRC timeout, the same applies - this timeout being + * dependant on the pre-range vcsel period. + */ + switch (VcselPeriodType) { + 8007498: 2e00 cmp r6, #0 + 800749a: f000 80d1 beq.w 8007640 <VL53L0X_set_vcsel_pulse_period+0x26e> + 800749e: 2e01 cmp r6, #1 + 80074a0: f000 80f5 beq.w 800768e <VL53L0X_set_vcsel_pulse_period+0x2bc> + 80074a4: f06f 0003 mvn.w r0, #3 + 80074a8: e0d6 b.n 8007658 <VL53L0X_set_vcsel_pulse_period+0x286> + if (VCSELPulsePeriodPCLK == 8) { + 80074aa: f1a5 0308 sub.w r3, r5, #8 + 80074ae: 2b06 cmp r3, #6 + 80074b0: f200 80c4 bhi.w 800763c <VL53L0X_set_vcsel_pulse_period+0x26a> + 80074b4: e8df f003 tbb [pc, r3] + 80074b8: c233c204 .word 0xc233c204 + 80074bc: c262 .short 0xc262 + 80074be: 91 .byte 0x91 + 80074bf: 00 .byte 0x00 + Status = VL53L0X_WrByte(Dev, + 80074c0: 2210 movs r2, #16 + 80074c2: 2148 movs r1, #72 ; 0x48 + 80074c4: 4620 mov r0, r4 + 80074c6: f000 fdc9 bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, + 80074ca: 2208 movs r2, #8 + 80074cc: 2147 movs r1, #71 ; 0x47 + 80074ce: 4620 mov r0, r4 + 80074d0: f000 fdc4 bl 800805c <VL53L0X_WrByte> + 80074d4: 4607 mov r7, r0 + Status |= VL53L0X_WrByte(Dev, + 80074d6: 2202 movs r2, #2 + 80074d8: 2132 movs r1, #50 ; 0x32 + 80074da: 4620 mov r0, r4 + 80074dc: f000 fdbe bl 800805c <VL53L0X_WrByte> + 80074e0: 4307 orrs r7, r0 + 80074e2: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, + 80074e4: 220c movs r2, #12 + 80074e6: 2130 movs r1, #48 ; 0x30 + 80074e8: 4620 mov r0, r4 + 80074ea: f000 fdb7 bl 800805c <VL53L0X_WrByte> + 80074ee: 4307 orrs r7, r0 + 80074f0: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x01); + 80074f2: 2201 movs r2, #1 + 80074f4: 21ff movs r1, #255 ; 0xff + 80074f6: 4620 mov r0, r4 + 80074f8: f000 fdb0 bl 800805c <VL53L0X_WrByte> + 80074fc: 4307 orrs r7, r0 + 80074fe: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, + 8007500: 2230 movs r2, #48 ; 0x30 + 8007502: 4611 mov r1, r2 + 8007504: 4620 mov r0, r4 + 8007506: f000 fda9 bl 800805c <VL53L0X_WrByte> + 800750a: 4307 orrs r7, r0 + 800750c: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x00); + 800750e: 2200 movs r2, #0 + 8007510: 21ff movs r1, #255 ; 0xff + 8007512: 4620 mov r0, r4 + 8007514: f000 fda2 bl 800805c <VL53L0X_WrByte> + 8007518: 4338 orrs r0, r7 + 800751a: b240 sxtb r0, r0 + 800751c: e7b5 b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + Status = VL53L0X_WrByte(Dev, + 800751e: 2228 movs r2, #40 ; 0x28 + 8007520: 2148 movs r1, #72 ; 0x48 + 8007522: 4620 mov r0, r4 + 8007524: f000 fd9a bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, + 8007528: 2208 movs r2, #8 + 800752a: 2147 movs r1, #71 ; 0x47 + 800752c: 4620 mov r0, r4 + 800752e: f000 fd95 bl 800805c <VL53L0X_WrByte> + 8007532: 4607 mov r7, r0 + Status |= VL53L0X_WrByte(Dev, + 8007534: 2203 movs r2, #3 + 8007536: 2132 movs r1, #50 ; 0x32 + 8007538: 4620 mov r0, r4 + 800753a: f000 fd8f bl 800805c <VL53L0X_WrByte> + 800753e: 4307 orrs r7, r0 + 8007540: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, + 8007542: 2209 movs r2, #9 + 8007544: 2130 movs r1, #48 ; 0x30 + 8007546: 4620 mov r0, r4 + 8007548: f000 fd88 bl 800805c <VL53L0X_WrByte> + 800754c: 4307 orrs r7, r0 + 800754e: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x01); + 8007550: 2201 movs r2, #1 + 8007552: 21ff movs r1, #255 ; 0xff + 8007554: 4620 mov r0, r4 + 8007556: f000 fd81 bl 800805c <VL53L0X_WrByte> + 800755a: 4307 orrs r7, r0 + 800755c: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, + 800755e: 2220 movs r2, #32 + 8007560: 2130 movs r1, #48 ; 0x30 + 8007562: 4620 mov r0, r4 + 8007564: f000 fd7a bl 800805c <VL53L0X_WrByte> + 8007568: 4307 orrs r7, r0 + 800756a: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x00); + 800756c: 2200 movs r2, #0 + 800756e: 21ff movs r1, #255 ; 0xff + 8007570: 4620 mov r0, r4 + 8007572: f000 fd73 bl 800805c <VL53L0X_WrByte> + 8007576: 4338 orrs r0, r7 + 8007578: b240 sxtb r0, r0 + 800757a: e786 b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + Status = VL53L0X_WrByte(Dev, + 800757c: 2238 movs r2, #56 ; 0x38 + 800757e: 2148 movs r1, #72 ; 0x48 + 8007580: 4620 mov r0, r4 + 8007582: f000 fd6b bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, + 8007586: 2208 movs r2, #8 + 8007588: 2147 movs r1, #71 ; 0x47 + 800758a: 4620 mov r0, r4 + 800758c: f000 fd66 bl 800805c <VL53L0X_WrByte> + 8007590: 4607 mov r7, r0 + Status |= VL53L0X_WrByte(Dev, + 8007592: 2203 movs r2, #3 + 8007594: 2132 movs r1, #50 ; 0x32 + 8007596: 4620 mov r0, r4 + 8007598: f000 fd60 bl 800805c <VL53L0X_WrByte> + 800759c: 4307 orrs r7, r0 + 800759e: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, + 80075a0: 2208 movs r2, #8 + 80075a2: 2130 movs r1, #48 ; 0x30 + 80075a4: 4620 mov r0, r4 + 80075a6: f000 fd59 bl 800805c <VL53L0X_WrByte> + 80075aa: 4307 orrs r7, r0 + 80075ac: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x01); + 80075ae: 2201 movs r2, #1 + 80075b0: 21ff movs r1, #255 ; 0xff + 80075b2: 4620 mov r0, r4 + 80075b4: f000 fd52 bl 800805c <VL53L0X_WrByte> + 80075b8: 4307 orrs r7, r0 + 80075ba: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, + 80075bc: 2220 movs r2, #32 + 80075be: 2130 movs r1, #48 ; 0x30 + 80075c0: 4620 mov r0, r4 + 80075c2: f000 fd4b bl 800805c <VL53L0X_WrByte> + 80075c6: 4307 orrs r7, r0 + 80075c8: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x00); + 80075ca: 2200 movs r2, #0 + 80075cc: 21ff movs r1, #255 ; 0xff + 80075ce: 4620 mov r0, r4 + 80075d0: f000 fd44 bl 800805c <VL53L0X_WrByte> + 80075d4: 4338 orrs r0, r7 + 80075d6: b240 sxtb r0, r0 + 80075d8: e757 b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + Status = VL53L0X_WrByte(Dev, + 80075da: 2248 movs r2, #72 ; 0x48 + 80075dc: 4611 mov r1, r2 + 80075de: 4620 mov r0, r4 + 80075e0: f000 fd3c bl 800805c <VL53L0X_WrByte> + Status = VL53L0X_WrByte(Dev, + 80075e4: 2208 movs r2, #8 + 80075e6: 2147 movs r1, #71 ; 0x47 + 80075e8: 4620 mov r0, r4 + 80075ea: f000 fd37 bl 800805c <VL53L0X_WrByte> + 80075ee: 4607 mov r7, r0 + Status |= VL53L0X_WrByte(Dev, + 80075f0: 2203 movs r2, #3 + 80075f2: 2132 movs r1, #50 ; 0x32 + 80075f4: 4620 mov r0, r4 + 80075f6: f000 fd31 bl 800805c <VL53L0X_WrByte> + 80075fa: 4307 orrs r7, r0 + 80075fc: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, + 80075fe: 2207 movs r2, #7 + 8007600: 2130 movs r1, #48 ; 0x30 + 8007602: 4620 mov r0, r4 + 8007604: f000 fd2a bl 800805c <VL53L0X_WrByte> + 8007608: 4307 orrs r7, r0 + 800760a: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x01); + 800760c: 2201 movs r2, #1 + 800760e: 21ff movs r1, #255 ; 0xff + 8007610: 4620 mov r0, r4 + 8007612: f000 fd23 bl 800805c <VL53L0X_WrByte> + 8007616: 4307 orrs r7, r0 + 8007618: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, + 800761a: 2220 movs r2, #32 + 800761c: 2130 movs r1, #48 ; 0x30 + 800761e: 4620 mov r0, r4 + 8007620: f000 fd1c bl 800805c <VL53L0X_WrByte> + 8007624: 4307 orrs r7, r0 + 8007626: b27f sxtb r7, r7 + Status |= VL53L0X_WrByte(Dev, 0xff, 0x00); + 8007628: 2200 movs r2, #0 + 800762a: 21ff movs r1, #255 ; 0xff + 800762c: 4620 mov r0, r4 + 800762e: f000 fd15 bl 800805c <VL53L0X_WrByte> + 8007632: 4338 orrs r0, r7 + 8007634: b240 sxtb r0, r0 + 8007636: e728 b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + if (VcselPeriodType == VL53L0X_VCSEL_PERIOD_PRE_RANGE) { + 8007638: 2000 movs r0, #0 + 800763a: e726 b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + } else if (VcselPeriodType == VL53L0X_VCSEL_PERIOD_FINAL_RANGE) { + 800763c: 2000 movs r0, #0 + 800763e: e724 b.n 800748a <VL53L0X_set_vcsel_pulse_period+0xb8> + case VL53L0X_VCSEL_PERIOD_PRE_RANGE: + Status = get_sequence_step_timeout(Dev, + 8007640: aa02 add r2, sp, #8 + 8007642: 2103 movs r1, #3 + 8007644: 4620 mov r0, r4 + 8007646: f7ff fda9 bl 800719c <get_sequence_step_timeout> + VL53L0X_SEQUENCESTEP_PRE_RANGE, + &PreRangeTimeoutMicroSeconds); + + if (Status == VL53L0X_ERROR_NONE) + 800764a: b140 cbz r0, 800765e <VL53L0X_set_vcsel_pulse_period+0x28c> + Status = get_sequence_step_timeout(Dev, + VL53L0X_SEQUENCESTEP_MSRC, + &MsrcTimeoutMicroSeconds); + + if (Status == VL53L0X_ERROR_NONE) + 800764c: b168 cbz r0, 800766a <VL53L0X_set_vcsel_pulse_period+0x298> + Status = VL53L0X_WrByte(Dev, + VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD, + vcsel_period_reg); + + + if (Status == VL53L0X_ERROR_NONE) + 800764e: b190 cbz r0, 8007676 <VL53L0X_set_vcsel_pulse_period+0x2a4> + Status = set_sequence_step_timeout(Dev, + VL53L0X_SEQUENCESTEP_PRE_RANGE, + PreRangeTimeoutMicroSeconds); + + + if (Status == VL53L0X_ERROR_NONE) + 8007650: b1b8 cbz r0, 8007682 <VL53L0X_set_vcsel_pulse_period+0x2b0> + Status = set_sequence_step_timeout(Dev, + VL53L0X_SEQUENCESTEP_MSRC, + MsrcTimeoutMicroSeconds); + + VL53L0X_SETDEVICESPECIFICPARAMETER( + 8007652: f884 50e8 strb.w r5, [r4, #232] ; 0xe8 + Status = VL53L0X_ERROR_INVALID_PARAMS; + } + } + + /* Finally, the timing budget must be re-applied */ + if (Status == VL53L0X_ERROR_NONE) { + 8007656: b380 cbz r0, 80076ba <VL53L0X_set_vcsel_pulse_period+0x2e8> + } + + /* Perform the phase calibration. This is needed after changing on + * vcsel period. + * get_data_enable = 0, restore_config = 1 */ + if (Status == VL53L0X_ERROR_NONE) + 8007658: b3a0 cbz r0, 80076c4 <VL53L0X_set_vcsel_pulse_period+0x2f2> + Status = VL53L0X_perform_phase_calibration( + Dev, &PhaseCalInt, 0, 1); + + return Status; +} + 800765a: b005 add sp, #20 + 800765c: bdf0 pop {r4, r5, r6, r7, pc} + Status = get_sequence_step_timeout(Dev, + 800765e: aa01 add r2, sp, #4 + 8007660: 2102 movs r1, #2 + 8007662: 4620 mov r0, r4 + 8007664: f7ff fd9a bl 800719c <get_sequence_step_timeout> + 8007668: e7f0 b.n 800764c <VL53L0X_set_vcsel_pulse_period+0x27a> + Status = VL53L0X_WrByte(Dev, + 800766a: 463a mov r2, r7 + 800766c: 2150 movs r1, #80 ; 0x50 + 800766e: 4620 mov r0, r4 + 8007670: f000 fcf4 bl 800805c <VL53L0X_WrByte> + 8007674: e7eb b.n 800764e <VL53L0X_set_vcsel_pulse_period+0x27c> + Status = set_sequence_step_timeout(Dev, + 8007676: 9a02 ldr r2, [sp, #8] + 8007678: 2103 movs r1, #3 + 800767a: 4620 mov r0, r4 + 800767c: f7ff fe1c bl 80072b8 <set_sequence_step_timeout> + 8007680: e7e6 b.n 8007650 <VL53L0X_set_vcsel_pulse_period+0x27e> + Status = set_sequence_step_timeout(Dev, + 8007682: 9a01 ldr r2, [sp, #4] + 8007684: 2102 movs r1, #2 + 8007686: 4620 mov r0, r4 + 8007688: f7ff fe16 bl 80072b8 <set_sequence_step_timeout> + 800768c: e7e1 b.n 8007652 <VL53L0X_set_vcsel_pulse_period+0x280> + Status = get_sequence_step_timeout(Dev, + 800768e: aa03 add r2, sp, #12 + 8007690: 2104 movs r1, #4 + 8007692: 4620 mov r0, r4 + 8007694: f7ff fd82 bl 800719c <get_sequence_step_timeout> + if (Status == VL53L0X_ERROR_NONE) + 8007698: b118 cbz r0, 80076a2 <VL53L0X_set_vcsel_pulse_period+0x2d0> + if (Status == VL53L0X_ERROR_NONE) + 800769a: b140 cbz r0, 80076ae <VL53L0X_set_vcsel_pulse_period+0x2dc> + VL53L0X_SETDEVICESPECIFICPARAMETER( + 800769c: f884 50e0 strb.w r5, [r4, #224] ; 0xe0 + break; + 80076a0: e7d9 b.n 8007656 <VL53L0X_set_vcsel_pulse_period+0x284> + Status = VL53L0X_WrByte(Dev, + 80076a2: 463a mov r2, r7 + 80076a4: 2170 movs r1, #112 ; 0x70 + 80076a6: 4620 mov r0, r4 + 80076a8: f000 fcd8 bl 800805c <VL53L0X_WrByte> + 80076ac: e7f5 b.n 800769a <VL53L0X_set_vcsel_pulse_period+0x2c8> + Status = set_sequence_step_timeout(Dev, + 80076ae: 9a03 ldr r2, [sp, #12] + 80076b0: 2104 movs r1, #4 + 80076b2: 4620 mov r0, r4 + 80076b4: f7ff fe00 bl 80072b8 <set_sequence_step_timeout> + 80076b8: e7f0 b.n 800769c <VL53L0X_set_vcsel_pulse_period+0x2ca> + Status = VL53L0X_SetMeasurementTimingBudgetMicroSeconds(Dev, + 80076ba: 6961 ldr r1, [r4, #20] + 80076bc: 4620 mov r0, r4 + 80076be: f7fd ff09 bl 80054d4 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds> + 80076c2: e7c9 b.n 8007658 <VL53L0X_set_vcsel_pulse_period+0x286> + Status = VL53L0X_perform_phase_calibration( + 80076c4: 2301 movs r3, #1 + 80076c6: 2200 movs r2, #0 + 80076c8: f10d 0103 add.w r1, sp, #3 + 80076cc: 4620 mov r0, r4 + 80076ce: f7ff f830 bl 8006732 <VL53L0X_perform_phase_calibration> + 80076d2: e7c2 b.n 800765a <VL53L0X_set_vcsel_pulse_period+0x288> + 80076d4: f06f 0003 mvn.w r0, #3 + 80076d8: e7bf b.n 800765a <VL53L0X_set_vcsel_pulse_period+0x288> + 80076da: f06f 0003 mvn.w r0, #3 + 80076de: e7bc b.n 800765a <VL53L0X_set_vcsel_pulse_period+0x288> + 80076e0: f06f 0003 mvn.w r0, #3 + 80076e4: e7b9 b.n 800765a <VL53L0X_set_vcsel_pulse_period+0x288> + 80076e6: f06f 0003 mvn.w r0, #3 + 80076ea: e7b6 b.n 800765a <VL53L0X_set_vcsel_pulse_period+0x288> + +080076ec <VL53L0X_get_vcsel_pulse_period>: + +VL53L0X_Error VL53L0X_get_vcsel_pulse_period(VL53L0X_DEV Dev, + VL53L0X_VcselPeriod VcselPeriodType, uint8_t *pVCSELPulsePeriodPCLK) +{ + 80076ec: b530 push {r4, r5, lr} + 80076ee: b083 sub sp, #12 + 80076f0: 4615 mov r5, r2 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t vcsel_period_reg; + + switch (VcselPeriodType) { + 80076f2: b131 cbz r1, 8007702 <VL53L0X_get_vcsel_pulse_period+0x16> + 80076f4: 2901 cmp r1, #1 + 80076f6: d012 beq.n 800771e <VL53L0X_get_vcsel_pulse_period+0x32> + 80076f8: f06f 0403 mvn.w r4, #3 + if (Status == VL53L0X_ERROR_NONE) + *pVCSELPulsePeriodPCLK = + VL53L0X_decode_vcsel_period(vcsel_period_reg); + + return Status; +} + 80076fc: 4620 mov r0, r4 + 80076fe: b003 add sp, #12 + 8007700: bd30 pop {r4, r5, pc} + Status = VL53L0X_RdByte(Dev, + 8007702: f10d 0207 add.w r2, sp, #7 + 8007706: 2150 movs r1, #80 ; 0x50 + 8007708: f000 fcca bl 80080a0 <VL53L0X_RdByte> + 800770c: 4604 mov r4, r0 + if (Status == VL53L0X_ERROR_NONE) + 800770e: 2c00 cmp r4, #0 + 8007710: d1f4 bne.n 80076fc <VL53L0X_get_vcsel_pulse_period+0x10> + VL53L0X_decode_vcsel_period(vcsel_period_reg); + 8007712: f89d 0007 ldrb.w r0, [sp, #7] + 8007716: f7ff f9f0 bl 8006afa <VL53L0X_decode_vcsel_period> + *pVCSELPulsePeriodPCLK = + 800771a: 7028 strb r0, [r5, #0] + 800771c: e7ee b.n 80076fc <VL53L0X_get_vcsel_pulse_period+0x10> + Status = VL53L0X_RdByte(Dev, + 800771e: f10d 0207 add.w r2, sp, #7 + 8007722: 2170 movs r1, #112 ; 0x70 + 8007724: f000 fcbc bl 80080a0 <VL53L0X_RdByte> + 8007728: 4604 mov r4, r0 + break; + 800772a: e7f0 b.n 800770e <VL53L0X_get_vcsel_pulse_period+0x22> + +0800772c <VL53L0X_set_measurement_timing_budget_micro_seconds>: + + + +VL53L0X_Error VL53L0X_set_measurement_timing_budget_micro_seconds(VL53L0X_DEV Dev, + uint32_t MeasurementTimingBudgetMicroSeconds) +{ + 800772c: b570 push {r4, r5, r6, lr} + 800772e: b084 sub sp, #16 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint32_t FinalRangeTimingBudgetMicroSeconds; + VL53L0X_SchedulerSequenceSteps_t SchedulerSequenceSteps; + uint32_t MsrcDccTccTimeoutMicroSeconds = 2000; + 8007730: f44f 63fa mov.w r3, #2000 ; 0x7d0 + 8007734: 9301 str r3, [sp, #4] + uint32_t MsrcOverheadMicroSeconds = 660; + uint32_t TccOverheadMicroSeconds = 590; + uint32_t DssOverheadMicroSeconds = 690; + uint32_t PreRangeOverheadMicroSeconds = 660; + uint32_t FinalRangeOverheadMicroSeconds = 550; + uint32_t PreRangeTimeoutMicroSeconds = 0; + 8007736: 2300 movs r3, #0 + 8007738: 9300 str r3, [sp, #0] + uint32_t cMinTimingBudgetMicroSeconds = 20000; + uint32_t SubTimeout = 0; + + LOG_FUNCTION_START(""); + + if (MeasurementTimingBudgetMicroSeconds + 800773a: f644 631f movw r3, #19999 ; 0x4e1f + 800773e: 4299 cmp r1, r3 + 8007740: d95e bls.n 8007800 <VL53L0X_set_measurement_timing_budget_micro_seconds+0xd4> + 8007742: 4605 mov r5, r0 + 8007744: 460c mov r4, r1 + < cMinTimingBudgetMicroSeconds) { + Status = VL53L0X_ERROR_INVALID_PARAMS; + return Status; + } + + FinalRangeTimingBudgetMicroSeconds = + 8007746: f6a1 3636 subw r6, r1, #2870 ; 0xb36 + MeasurementTimingBudgetMicroSeconds - + (StartOverheadMicroSeconds + EndOverheadMicroSeconds); + + Status = VL53L0X_GetSequenceStepEnables(Dev, &SchedulerSequenceSteps); + 800774a: a902 add r1, sp, #8 + 800774c: f7fd ff54 bl 80055f8 <VL53L0X_GetSequenceStepEnables> + + if (Status == VL53L0X_ERROR_NONE && + 8007750: 4603 mov r3, r0 + 8007752: bb18 cbnz r0, 800779c <VL53L0X_set_measurement_timing_budget_micro_seconds+0x70> + (SchedulerSequenceSteps.TccOn || + 8007754: f89d 2008 ldrb.w r2, [sp, #8] + if (Status == VL53L0X_ERROR_NONE && + 8007758: b92a cbnz r2, 8007766 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x3a> + SchedulerSequenceSteps.MsrcOn || + 800775a: f89d 2009 ldrb.w r2, [sp, #9] + (SchedulerSequenceSteps.TccOn || + 800775e: b912 cbnz r2, 8007766 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x3a> + SchedulerSequenceSteps.DssOn)) { + 8007760: f89d 200a ldrb.w r2, [sp, #10] + SchedulerSequenceSteps.MsrcOn || + 8007764: b1d2 cbz r2, 800779c <VL53L0X_set_measurement_timing_budget_micro_seconds+0x70> + + /* TCC, MSRC and DSS all share the same timeout */ + Status = get_sequence_step_timeout(Dev, + 8007766: aa01 add r2, sp, #4 + 8007768: 2102 movs r1, #2 + 800776a: 4628 mov r0, r5 + 800776c: f7ff fd16 bl 800719c <get_sequence_step_timeout> + &MsrcDccTccTimeoutMicroSeconds); + + /* Subtract the TCC, MSRC and DSS timeouts if they are + * enabled. */ + + if (Status != VL53L0X_ERROR_NONE) + 8007770: 4603 mov r3, r0 + 8007772: b9d8 cbnz r0, 80077ac <VL53L0X_set_measurement_timing_budget_micro_seconds+0x80> + return Status; + + /* TCC */ + if (SchedulerSequenceSteps.TccOn) { + 8007774: f89d 2008 ldrb.w r2, [sp, #8] + 8007778: b12a cbz r2, 8007786 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x5a> + + SubTimeout = MsrcDccTccTimeoutMicroSeconds + + TccOverheadMicroSeconds; + 800777a: 9a01 ldr r2, [sp, #4] + SubTimeout = MsrcDccTccTimeoutMicroSeconds + 800777c: f202 224e addw r2, r2, #590 ; 0x24e + + if (SubTimeout < + 8007780: 4296 cmp r6, r2 + 8007782: d940 bls.n 8007806 <VL53L0X_set_measurement_timing_budget_micro_seconds+0xda> + FinalRangeTimingBudgetMicroSeconds) { + FinalRangeTimingBudgetMicroSeconds -= + 8007784: 1ab6 subs r6, r6, r2 + LOG_FUNCTION_END(Status); + return Status; + } + + /* DSS */ + if (SchedulerSequenceSteps.DssOn) { + 8007786: f89d 200a ldrb.w r2, [sp, #10] + 800778a: b192 cbz r2, 80077b2 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x86> + + SubTimeout = 2 * (MsrcDccTccTimeoutMicroSeconds + + 800778c: 9a01 ldr r2, [sp, #4] + 800778e: f202 22b2 addw r2, r2, #690 ; 0x2b2 + 8007792: 0051 lsls r1, r2, #1 + DssOverheadMicroSeconds); + + if (SubTimeout < FinalRangeTimingBudgetMicroSeconds) { + 8007794: ebb6 0f42 cmp.w r6, r2, lsl #1 + 8007798: d916 bls.n 80077c8 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x9c> + FinalRangeTimingBudgetMicroSeconds + -= SubTimeout; + 800779a: 1a76 subs r6, r6, r1 + } + } + + } + + if (Status != VL53L0X_ERROR_NONE) { + 800779c: b933 cbnz r3, 80077ac <VL53L0X_set_measurement_timing_budget_micro_seconds+0x80> + LOG_FUNCTION_END(Status); + return Status; + } + + if (SchedulerSequenceSteps.PreRangeOn) { + 800779e: f89d 200b ldrb.w r2, [sp, #11] + 80077a2: b9ba cbnz r2, 80077d4 <VL53L0X_set_measurement_timing_budget_micro_seconds+0xa8> + Status = VL53L0X_ERROR_INVALID_PARAMS; + } + } + + + if (Status == VL53L0X_ERROR_NONE && + 80077a4: b913 cbnz r3, 80077ac <VL53L0X_set_measurement_timing_budget_micro_seconds+0x80> + SchedulerSequenceSteps.FinalRangeOn) { + 80077a6: f89d 200c ldrb.w r2, [sp, #12] + if (Status == VL53L0X_ERROR_NONE && + 80077aa: bb02 cbnz r2, 80077ee <VL53L0X_set_measurement_timing_budget_micro_seconds+0xc2> + } + + LOG_FUNCTION_END(Status); + + return Status; +} + 80077ac: 4618 mov r0, r3 + 80077ae: b004 add sp, #16 + 80077b0: bd70 pop {r4, r5, r6, pc} + } else if (SchedulerSequenceSteps.MsrcOn) { + 80077b2: f89d 2009 ldrb.w r2, [sp, #9] + 80077b6: 2a00 cmp r2, #0 + 80077b8: d0f0 beq.n 800779c <VL53L0X_set_measurement_timing_budget_micro_seconds+0x70> + SubTimeout = MsrcDccTccTimeoutMicroSeconds + + 80077ba: 9a01 ldr r2, [sp, #4] + 80077bc: f502 7225 add.w r2, r2, #660 ; 0x294 + if (SubTimeout < FinalRangeTimingBudgetMicroSeconds) { + 80077c0: 4296 cmp r6, r2 + 80077c2: d904 bls.n 80077ce <VL53L0X_set_measurement_timing_budget_micro_seconds+0xa2> + -= SubTimeout; + 80077c4: 1ab6 subs r6, r6, r2 + 80077c6: e7e9 b.n 800779c <VL53L0X_set_measurement_timing_budget_micro_seconds+0x70> + Status = VL53L0X_ERROR_INVALID_PARAMS; + 80077c8: f06f 0303 mvn.w r3, #3 + 80077cc: e7ee b.n 80077ac <VL53L0X_set_measurement_timing_budget_micro_seconds+0x80> + Status = VL53L0X_ERROR_INVALID_PARAMS; + 80077ce: f06f 0303 mvn.w r3, #3 + return Status; + 80077d2: e7eb b.n 80077ac <VL53L0X_set_measurement_timing_budget_micro_seconds+0x80> + Status = get_sequence_step_timeout(Dev, + 80077d4: 466a mov r2, sp + 80077d6: 2103 movs r1, #3 + 80077d8: 4628 mov r0, r5 + 80077da: f7ff fcdf bl 800719c <get_sequence_step_timeout> + 80077de: 4603 mov r3, r0 + SubTimeout = PreRangeTimeoutMicroSeconds + + 80077e0: 9a00 ldr r2, [sp, #0] + 80077e2: f502 7225 add.w r2, r2, #660 ; 0x294 + if (SubTimeout < FinalRangeTimingBudgetMicroSeconds) { + 80077e6: 4296 cmp r6, r2 + 80077e8: d910 bls.n 800780c <VL53L0X_set_measurement_timing_budget_micro_seconds+0xe0> + FinalRangeTimingBudgetMicroSeconds -= SubTimeout; + 80077ea: 1ab6 subs r6, r6, r2 + 80077ec: e7da b.n 80077a4 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x78> + Status = set_sequence_step_timeout(Dev, + 80077ee: f2a6 2226 subw r2, r6, #550 ; 0x226 + 80077f2: 2104 movs r1, #4 + 80077f4: 4628 mov r0, r5 + 80077f6: f7ff fd5f bl 80072b8 <set_sequence_step_timeout> + 80077fa: 4603 mov r3, r0 + VL53L0X_SETPARAMETERFIELD(Dev, + 80077fc: 616c str r4, [r5, #20] + 80077fe: e7d5 b.n 80077ac <VL53L0X_set_measurement_timing_budget_micro_seconds+0x80> + return Status; + 8007800: f06f 0303 mvn.w r3, #3 + 8007804: e7d2 b.n 80077ac <VL53L0X_set_measurement_timing_budget_micro_seconds+0x80> + 8007806: f06f 0303 mvn.w r3, #3 + 800780a: e7cf b.n 80077ac <VL53L0X_set_measurement_timing_budget_micro_seconds+0x80> + Status = VL53L0X_ERROR_INVALID_PARAMS; + 800780c: f06f 0303 mvn.w r3, #3 + 8007810: e7cc b.n 80077ac <VL53L0X_set_measurement_timing_budget_micro_seconds+0x80> + +08007812 <VL53L0X_get_measurement_timing_budget_micro_seconds>: + +VL53L0X_Error VL53L0X_get_measurement_timing_budget_micro_seconds(VL53L0X_DEV Dev, + uint32_t *pMeasurementTimingBudgetMicroSeconds) +{ + 8007812: b530 push {r4, r5, lr} + 8007814: b087 sub sp, #28 + 8007816: 4605 mov r5, r0 + 8007818: 460c mov r4, r1 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + VL53L0X_SchedulerSequenceSteps_t SchedulerSequenceSteps; + uint32_t FinalRangeTimeoutMicroSeconds; + uint32_t MsrcDccTccTimeoutMicroSeconds = 2000; + 800781a: f44f 63fa mov.w r3, #2000 ; 0x7d0 + 800781e: 9302 str r3, [sp, #8] + uint32_t MsrcOverheadMicroSeconds = 660; + uint32_t TccOverheadMicroSeconds = 590; + uint32_t DssOverheadMicroSeconds = 690; + uint32_t PreRangeOverheadMicroSeconds = 660; + uint32_t FinalRangeOverheadMicroSeconds = 550; + uint32_t PreRangeTimeoutMicroSeconds = 0; + 8007820: 2300 movs r3, #0 + 8007822: 9301 str r3, [sp, #4] + + LOG_FUNCTION_START(""); + + /* Start and end overhead times always present */ + *pMeasurementTimingBudgetMicroSeconds + = StartOverheadMicroSeconds + EndOverheadMicroSeconds; + 8007824: f640 3336 movw r3, #2870 ; 0xb36 + 8007828: 600b str r3, [r1, #0] + + Status = VL53L0X_GetSequenceStepEnables(Dev, &SchedulerSequenceSteps); + 800782a: a904 add r1, sp, #16 + 800782c: f7fd fee4 bl 80055f8 <VL53L0X_GetSequenceStepEnables> + + if (Status != VL53L0X_ERROR_NONE) { + 8007830: 4603 mov r3, r0 + 8007832: bb68 cbnz r0, 8007890 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x7e> + LOG_FUNCTION_END(Status); + return Status; + } + + + if (SchedulerSequenceSteps.TccOn || + 8007834: f89d 2010 ldrb.w r2, [sp, #16] + 8007838: b92a cbnz r2, 8007846 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x34> + SchedulerSequenceSteps.MsrcOn || + 800783a: f89d 2011 ldrb.w r2, [sp, #17] + if (SchedulerSequenceSteps.TccOn || + 800783e: b912 cbnz r2, 8007846 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x34> + SchedulerSequenceSteps.DssOn) { + 8007840: f89d 2012 ldrb.w r2, [sp, #18] + SchedulerSequenceSteps.MsrcOn || + 8007844: b1ca cbz r2, 800787a <VL53L0X_get_measurement_timing_budget_micro_seconds+0x68> + + Status = get_sequence_step_timeout(Dev, + 8007846: aa02 add r2, sp, #8 + 8007848: 2102 movs r1, #2 + 800784a: 4628 mov r0, r5 + 800784c: f7ff fca6 bl 800719c <get_sequence_step_timeout> + VL53L0X_SEQUENCESTEP_MSRC, + &MsrcDccTccTimeoutMicroSeconds); + + if (Status == VL53L0X_ERROR_NONE) { + 8007850: 4603 mov r3, r0 + 8007852: b990 cbnz r0, 800787a <VL53L0X_get_measurement_timing_budget_micro_seconds+0x68> + if (SchedulerSequenceSteps.TccOn) { + 8007854: f89d 2010 ldrb.w r2, [sp, #16] + 8007858: b12a cbz r2, 8007866 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x54> + *pMeasurementTimingBudgetMicroSeconds += + MsrcDccTccTimeoutMicroSeconds + + 800785a: 9a02 ldr r2, [sp, #8] + 800785c: f202 214e addw r1, r2, #590 ; 0x24e + *pMeasurementTimingBudgetMicroSeconds += + 8007860: 6822 ldr r2, [r4, #0] + 8007862: 440a add r2, r1 + 8007864: 6022 str r2, [r4, #0] + TccOverheadMicroSeconds; + } + + if (SchedulerSequenceSteps.DssOn) { + 8007866: f89d 2012 ldrb.w r2, [sp, #18] + 800786a: b1a2 cbz r2, 8007896 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x84> + *pMeasurementTimingBudgetMicroSeconds += + 2 * (MsrcDccTccTimeoutMicroSeconds + + 800786c: 9a02 ldr r2, [sp, #8] + 800786e: f202 21b2 addw r1, r2, #690 ; 0x2b2 + *pMeasurementTimingBudgetMicroSeconds += + 8007872: 6822 ldr r2, [r4, #0] + 8007874: eb02 0241 add.w r2, r2, r1, lsl #1 + 8007878: 6022 str r2, [r4, #0] + MsrcOverheadMicroSeconds; + } + } + } + + if (Status == VL53L0X_ERROR_NONE) { + 800787a: b913 cbnz r3, 8007882 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x70> + if (SchedulerSequenceSteps.PreRangeOn) { + 800787c: f89d 2013 ldrb.w r2, [sp, #19] + 8007880: b9a2 cbnz r2, 80078ac <VL53L0X_get_measurement_timing_budget_micro_seconds+0x9a> + PreRangeTimeoutMicroSeconds + + PreRangeOverheadMicroSeconds; + } + } + + if (Status == VL53L0X_ERROR_NONE) { + 8007882: b913 cbnz r3, 800788a <VL53L0X_get_measurement_timing_budget_micro_seconds+0x78> + if (SchedulerSequenceSteps.FinalRangeOn) { + 8007884: f89d 2014 ldrb.w r2, [sp, #20] + 8007888: b9ea cbnz r2, 80078c6 <VL53L0X_get_measurement_timing_budget_micro_seconds+0xb4> + (FinalRangeTimeoutMicroSeconds + + FinalRangeOverheadMicroSeconds); + } + } + + if (Status == VL53L0X_ERROR_NONE) { + 800788a: b90b cbnz r3, 8007890 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x7e> + VL53L0X_SETPARAMETERFIELD(Dev, + 800788c: 6822 ldr r2, [r4, #0] + 800788e: 616a str r2, [r5, #20] + *pMeasurementTimingBudgetMicroSeconds); + } + + LOG_FUNCTION_END(Status); + return Status; +} + 8007890: 4618 mov r0, r3 + 8007892: b007 add sp, #28 + 8007894: bd30 pop {r4, r5, pc} + } else if (SchedulerSequenceSteps.MsrcOn) { + 8007896: f89d 2011 ldrb.w r2, [sp, #17] + 800789a: 2a00 cmp r2, #0 + 800789c: d0ed beq.n 800787a <VL53L0X_get_measurement_timing_budget_micro_seconds+0x68> + MsrcDccTccTimeoutMicroSeconds + + 800789e: 9a02 ldr r2, [sp, #8] + 80078a0: f502 7125 add.w r1, r2, #660 ; 0x294 + *pMeasurementTimingBudgetMicroSeconds += + 80078a4: 6822 ldr r2, [r4, #0] + 80078a6: 440a add r2, r1 + 80078a8: 6022 str r2, [r4, #0] + 80078aa: e7e6 b.n 800787a <VL53L0X_get_measurement_timing_budget_micro_seconds+0x68> + Status = get_sequence_step_timeout(Dev, + 80078ac: aa01 add r2, sp, #4 + 80078ae: 2103 movs r1, #3 + 80078b0: 4628 mov r0, r5 + 80078b2: f7ff fc73 bl 800719c <get_sequence_step_timeout> + 80078b6: 4603 mov r3, r0 + PreRangeTimeoutMicroSeconds + + 80078b8: 9a01 ldr r2, [sp, #4] + 80078ba: f502 7125 add.w r1, r2, #660 ; 0x294 + *pMeasurementTimingBudgetMicroSeconds += + 80078be: 6822 ldr r2, [r4, #0] + 80078c0: 440a add r2, r1 + 80078c2: 6022 str r2, [r4, #0] + 80078c4: e7dd b.n 8007882 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x70> + Status = get_sequence_step_timeout(Dev, + 80078c6: aa03 add r2, sp, #12 + 80078c8: 2104 movs r1, #4 + 80078ca: 4628 mov r0, r5 + 80078cc: f7ff fc66 bl 800719c <get_sequence_step_timeout> + 80078d0: 4603 mov r3, r0 + (FinalRangeTimeoutMicroSeconds + + 80078d2: 9a03 ldr r2, [sp, #12] + 80078d4: f202 2126 addw r1, r2, #550 ; 0x226 + *pMeasurementTimingBudgetMicroSeconds += + 80078d8: 6822 ldr r2, [r4, #0] + 80078da: 440a add r2, r1 + 80078dc: 6022 str r2, [r4, #0] + 80078de: e7d4 b.n 800788a <VL53L0X_get_measurement_timing_budget_micro_seconds+0x78> + +080078e0 <VL53L0X_load_tuning_settings>: + + + +VL53L0X_Error VL53L0X_load_tuning_settings(VL53L0X_DEV Dev, + uint8_t *pTuningSettingBuffer) +{ + 80078e0: b570 push {r4, r5, r6, lr} + 80078e2: b082 sub sp, #8 + 80078e4: 4606 mov r6, r0 + 80078e6: 460d mov r5, r1 + uint8_t localBuffer[4]; /* max */ + uint16_t Temp16; + + LOG_FUNCTION_START(""); + + Index = 0; + 80078e8: 2400 movs r4, #0 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + 80078ea: 4620 mov r0, r4 + + while ((*(pTuningSettingBuffer + Index) != 0) && + 80078ec: e03d b.n 800796a <VL53L0X_load_tuning_settings+0x8a> + (Status == VL53L0X_ERROR_NONE)) { + NumberOfWrites = *(pTuningSettingBuffer + Index); + Index++; + if (NumberOfWrites == 0xFF) { + /* internal parameters */ + SelectParam = *(pTuningSettingBuffer + Index); + 80078ee: 5cab ldrb r3, [r5, r2] + Index++; + 80078f0: 1ca2 adds r2, r4, #2 + switch (SelectParam) { + 80078f2: 2b03 cmp r3, #3 + 80078f4: d845 bhi.n 8007982 <VL53L0X_load_tuning_settings+0xa2> + 80078f6: e8df f003 tbb [pc, r3] + 80078fa: 0b02 .short 0x0b02 + 80078fc: 1d14 .short 0x1d14 + case 0: /* uint16_t SigmaEstRefArray -> 2 bytes */ + msb = *(pTuningSettingBuffer + Index); + 80078fe: 5caa ldrb r2, [r5, r2] + Index++; + 8007900: 1ce3 adds r3, r4, #3 + lsb = *(pTuningSettingBuffer + Index); + Index++; + Temp16 = VL53L0X_MAKEUINT16(lsb, msb); + 8007902: 5ceb ldrb r3, [r5, r3] + 8007904: 3404 adds r4, #4 + 8007906: eb03 2302 add.w r3, r3, r2, lsl #8 + PALDevDataSet(Dev, SigmaEstRefArray, Temp16); + 800790a: f8a6 3134 strh.w r3, [r6, #308] ; 0x134 + break; + 800790e: e02c b.n 800796a <VL53L0X_load_tuning_settings+0x8a> + case 1: /* uint16_t SigmaEstEffPulseWidth -> 2 bytes */ + msb = *(pTuningSettingBuffer + Index); + 8007910: 5caa ldrb r2, [r5, r2] + Index++; + 8007912: 1ce3 adds r3, r4, #3 + lsb = *(pTuningSettingBuffer + Index); + Index++; + Temp16 = VL53L0X_MAKEUINT16(lsb, msb); + 8007914: 5ceb ldrb r3, [r5, r3] + 8007916: 3404 adds r4, #4 + 8007918: eb03 2302 add.w r3, r3, r2, lsl #8 + PALDevDataSet(Dev, SigmaEstEffPulseWidth, + 800791c: f8a6 3136 strh.w r3, [r6, #310] ; 0x136 + Temp16); + break; + 8007920: e023 b.n 800796a <VL53L0X_load_tuning_settings+0x8a> + case 2: /* uint16_t SigmaEstEffAmbWidth -> 2 bytes */ + msb = *(pTuningSettingBuffer + Index); + 8007922: 5caa ldrb r2, [r5, r2] + Index++; + 8007924: 1ce3 adds r3, r4, #3 + lsb = *(pTuningSettingBuffer + Index); + Index++; + Temp16 = VL53L0X_MAKEUINT16(lsb, msb); + 8007926: 5ceb ldrb r3, [r5, r3] + 8007928: 3404 adds r4, #4 + 800792a: eb03 2302 add.w r3, r3, r2, lsl #8 + PALDevDataSet(Dev, SigmaEstEffAmbWidth, Temp16); + 800792e: f8a6 3138 strh.w r3, [r6, #312] ; 0x138 + break; + 8007932: e01a b.n 800796a <VL53L0X_load_tuning_settings+0x8a> + case 3: /* uint16_t targetRefRate -> 2 bytes */ + msb = *(pTuningSettingBuffer + Index); + 8007934: 5caa ldrb r2, [r5, r2] + Index++; + 8007936: 1ce3 adds r3, r4, #3 + lsb = *(pTuningSettingBuffer + Index); + Index++; + Temp16 = VL53L0X_MAKEUINT16(lsb, msb); + 8007938: 5ceb ldrb r3, [r5, r3] + 800793a: 3404 adds r4, #4 + 800793c: eb03 2302 add.w r3, r3, r2, lsl #8 + PALDevDataSet(Dev, targetRefRate, Temp16); + 8007940: f8a6 313c strh.w r3, [r6, #316] ; 0x13c + break; + 8007944: e011 b.n 800796a <VL53L0X_load_tuning_settings+0x8a> + default: /* invalid parameter */ + Status = VL53L0X_ERROR_INVALID_PARAMS; + } + + } else if (NumberOfWrites <= 4) { + Address = *(pTuningSettingBuffer + Index); + 8007946: 5ca9 ldrb r1, [r5, r2] + Index++; + 8007948: 3402 adds r4, #2 + + for (i = 0; i < NumberOfWrites; i++) { + 800794a: 2200 movs r2, #0 + 800794c: e007 b.n 800795e <VL53L0X_load_tuning_settings+0x7e> + localBuffer[i] = *(pTuningSettingBuffer + + 800794e: 5d28 ldrb r0, [r5, r4] + 8007950: f102 0c08 add.w ip, r2, #8 + 8007954: 44ec add ip, sp + 8007956: f80c 0c04 strb.w r0, [ip, #-4] + Index); + Index++; + 800795a: 3401 adds r4, #1 + for (i = 0; i < NumberOfWrites; i++) { + 800795c: 3201 adds r2, #1 + 800795e: 4293 cmp r3, r2 + 8007960: dcf5 bgt.n 800794e <VL53L0X_load_tuning_settings+0x6e> + } + + Status = VL53L0X_WriteMulti(Dev, Address, localBuffer, + 8007962: aa01 add r2, sp, #4 + 8007964: 4630 mov r0, r6 + 8007966: f000 fb3f bl 8007fe8 <VL53L0X_WriteMulti> + while ((*(pTuningSettingBuffer + Index) != 0) && + 800796a: 5d2b ldrb r3, [r5, r4] + 800796c: b16b cbz r3, 800798a <VL53L0X_load_tuning_settings+0xaa> + 800796e: b960 cbnz r0, 800798a <VL53L0X_load_tuning_settings+0xaa> + Index++; + 8007970: 1c62 adds r2, r4, #1 + if (NumberOfWrites == 0xFF) { + 8007972: 2bff cmp r3, #255 ; 0xff + 8007974: d0bb beq.n 80078ee <VL53L0X_load_tuning_settings+0xe> + } else if (NumberOfWrites <= 4) { + 8007976: 2b04 cmp r3, #4 + 8007978: d9e5 bls.n 8007946 <VL53L0X_load_tuning_settings+0x66> + Index++; + 800797a: 4614 mov r4, r2 + NumberOfWrites); + + } else { + Status = VL53L0X_ERROR_INVALID_PARAMS; + 800797c: f06f 0003 mvn.w r0, #3 + 8007980: e7f3 b.n 800796a <VL53L0X_load_tuning_settings+0x8a> + switch (SelectParam) { + 8007982: 4614 mov r4, r2 + 8007984: f06f 0003 mvn.w r0, #3 + 8007988: e7ef b.n 800796a <VL53L0X_load_tuning_settings+0x8a> + } + } + + LOG_FUNCTION_END(Status); + return Status; +} + 800798a: b002 add sp, #8 + 800798c: bd70 pop {r4, r5, r6, pc} + +0800798e <VL53L0X_get_total_xtalk_rate>: + +VL53L0X_Error VL53L0X_get_total_xtalk_rate(VL53L0X_DEV Dev, + VL53L0X_RangingMeasurementData_t *pRangingMeasurementData, + FixPoint1616_t *ptotal_xtalk_rate_mcps) +{ + 800798e: b570 push {r4, r5, r6, lr} + 8007990: b082 sub sp, #8 + 8007992: 4606 mov r6, r0 + 8007994: 460d mov r5, r1 + 8007996: 4614 mov r4, r2 + + uint8_t xtalkCompEnable; + FixPoint1616_t totalXtalkMegaCps; + FixPoint1616_t xtalkPerSpadMegaCps; + + *ptotal_xtalk_rate_mcps = 0; + 8007998: 2300 movs r3, #0 + 800799a: 6013 str r3, [r2, #0] + + Status = VL53L0X_GetXTalkCompensationEnable(Dev, &xtalkCompEnable); + 800799c: f10d 0107 add.w r1, sp, #7 + 80079a0: f7fd fe81 bl 80056a6 <VL53L0X_GetXTalkCompensationEnable> + if (Status == VL53L0X_ERROR_NONE) { + 80079a4: b948 cbnz r0, 80079ba <VL53L0X_get_total_xtalk_rate+0x2c> + + if (xtalkCompEnable) { + 80079a6: f89d 3007 ldrb.w r3, [sp, #7] + 80079aa: b133 cbz r3, 80079ba <VL53L0X_get_total_xtalk_rate+0x2c> + + VL53L0X_GETPARAMETERFIELD( + 80079ac: 6a32 ldr r2, [r6, #32] + XTalkCompensationRateMegaCps, + xtalkPerSpadMegaCps); + + /* FixPoint1616 * FixPoint 8:8 = FixPoint0824 */ + totalXtalkMegaCps = + pRangingMeasurementData->EffectiveSpadRtnCount * + 80079ae: 8aab ldrh r3, [r5, #20] + totalXtalkMegaCps = + 80079b0: fb02 f303 mul.w r3, r2, r3 + xtalkPerSpadMegaCps; + + /* FixPoint0824 >> 8 = FixPoint1616 */ + *ptotal_xtalk_rate_mcps = + (totalXtalkMegaCps + 0x80) >> 8; + 80079b4: 3380 adds r3, #128 ; 0x80 + 80079b6: 0a1b lsrs r3, r3, #8 + *ptotal_xtalk_rate_mcps = + 80079b8: 6023 str r3, [r4, #0] + } + } + + return Status; +} + 80079ba: b002 add sp, #8 + 80079bc: bd70 pop {r4, r5, r6, pc} + +080079be <VL53L0X_get_total_signal_rate>: + +VL53L0X_Error VL53L0X_get_total_signal_rate(VL53L0X_DEV Dev, + VL53L0X_RangingMeasurementData_t *pRangingMeasurementData, + FixPoint1616_t *ptotal_signal_rate_mcps) +{ + 80079be: b510 push {r4, lr} + 80079c0: b082 sub sp, #8 + 80079c2: 4614 mov r4, r2 + FixPoint1616_t totalXtalkMegaCps; + + LOG_FUNCTION_START(""); + + *ptotal_signal_rate_mcps = + pRangingMeasurementData->SignalRateRtnMegaCps; + 80079c4: 68cb ldr r3, [r1, #12] + *ptotal_signal_rate_mcps = + 80079c6: 6013 str r3, [r2, #0] + + Status = VL53L0X_get_total_xtalk_rate( + 80079c8: aa01 add r2, sp, #4 + 80079ca: f7ff ffe0 bl 800798e <VL53L0X_get_total_xtalk_rate> + Dev, pRangingMeasurementData, &totalXtalkMegaCps); + + if (Status == VL53L0X_ERROR_NONE) + 80079ce: b918 cbnz r0, 80079d8 <VL53L0X_get_total_signal_rate+0x1a> + *ptotal_signal_rate_mcps += totalXtalkMegaCps; + 80079d0: 6823 ldr r3, [r4, #0] + 80079d2: 9a01 ldr r2, [sp, #4] + 80079d4: 4413 add r3, r2 + 80079d6: 6023 str r3, [r4, #0] + + return Status; +} + 80079d8: b002 add sp, #8 + 80079da: bd10 pop {r4, pc} + +080079dc <VL53L0X_calc_dmax>: + FixPoint1616_t pwMult, + uint32_t sigmaEstimateP1, + FixPoint1616_t sigmaEstimateP2, + uint32_t peakVcselDuration_us, + uint32_t *pdmax_mm) +{ + 80079dc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80079e0: 9c07 ldr r4, [sp, #28] + 80079e2: 9f08 ldr r7, [sp, #32] + 80079e4: 9e09 ldr r6, [sp, #36] ; 0x24 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + + LOG_FUNCTION_START(""); + + dmaxCalRange_mm = + PALDevDataGet(Dev, DmaxCalRangeMilliMeter); + 80079e6: f8b0 5154 ldrh.w r5, [r0, #340] ; 0x154 + + dmaxCalSignalRateRtn_mcps = + 80079ea: f8d0 0158 ldr.w r0, [r0, #344] ; 0x158 + PALDevDataGet(Dev, DmaxCalSignalRateRtnMegaCps); + + /* uint32 * FixPoint1616 = FixPoint1616 */ + SignalAt0mm = dmaxCalRange_mm * dmaxCalSignalRateRtn_mcps; + 80079ee: fb00 fc05 mul.w ip, r0, r5 + + /* FixPoint1616 >> 8 = FixPoint2408 */ + SignalAt0mm = (SignalAt0mm + 0x80) >> 8; + 80079f2: f10c 0c80 add.w ip, ip, #128 ; 0x80 + 80079f6: ea4f 2c1c mov.w ip, ip, lsr #8 + SignalAt0mm *= dmaxCalRange_mm; + 80079fa: fb0c f505 mul.w r5, ip, r5 + + minSignalNeeded_p1 = 0; + if (totalCorrSignalRate_mcps > 0) { + 80079fe: 4610 mov r0, r2 + 8007a00: b15a cbz r2, 8007a1a <VL53L0X_calc_dmax+0x3e> + * division */ + signalRateTemp_mcps = totalSignalRate_mcps << 10; + + /* Add rounding value prior to division */ + minSignalNeeded_p1 = signalRateTemp_mcps + + (totalCorrSignalRate_mcps/2); + 8007a02: 0852 lsrs r2, r2, #1 + minSignalNeeded_p1 = signalRateTemp_mcps + + 8007a04: eb02 2181 add.w r1, r2, r1, lsl #10 + + /* FixPoint0626/FixPoint1616 = FixPoint2210 */ + minSignalNeeded_p1 /= totalCorrSignalRate_mcps; + 8007a08: fbb1 f1f0 udiv r1, r1, r0 + + /* Apply a factored version of the speed of light. + Correction to be applied at the end */ + minSignalNeeded_p1 *= 3; + 8007a0c: eb01 0141 add.w r1, r1, r1, lsl #1 + + /* FixPoint2210 * FixPoint2210 = FixPoint1220 */ + minSignalNeeded_p1 *= minSignalNeeded_p1; + 8007a10: fb01 f101 mul.w r1, r1, r1 + + /* FixPoint1220 >> 16 = FixPoint2804 */ + minSignalNeeded_p1 = (minSignalNeeded_p1 + 0x8000) >> 16; + 8007a14: f501 4100 add.w r1, r1, #32768 ; 0x8000 + 8007a18: 0c08 lsrs r0, r1, #16 + } + + minSignalNeeded_p2 = pwMult * sigmaEstimateP1; + 8007a1a: 9a06 ldr r2, [sp, #24] + 8007a1c: fb03 f202 mul.w r2, r3, r2 + + /* FixPoint1616 >> 16 = uint32 */ + minSignalNeeded_p2 = (minSignalNeeded_p2 + 0x8000) >> 16; + 8007a20: f502 4200 add.w r2, r2, #32768 ; 0x8000 + 8007a24: 0c12 lsrs r2, r2, #16 + + /* uint32 * uint32 = uint32 */ + minSignalNeeded_p2 *= minSignalNeeded_p2; + 8007a26: fb02 f202 mul.w r2, r2, r2 + /* Check sigmaEstimateP2 + * If this value is too high there is not enough signal rate + * to calculate dmax value so set a suitable value to ensure + * a very small dmax. + */ + sigmaEstP2Tmp = (sigmaEstimateP2 + 0x8000) >> 16; + 8007a2a: f504 4300 add.w r3, r4, #32768 ; 0x8000 + 8007a2e: 0c1b lsrs r3, r3, #16 + sigmaEstP2Tmp = (sigmaEstP2Tmp + cAmbEffWidthSigmaEst_ns/2)/ + 8007a30: 3303 adds r3, #3 + 8007a32: 4926 ldr r1, [pc, #152] ; (8007acc <VL53L0X_calc_dmax+0xf0>) + 8007a34: fba1 1303 umull r1, r3, r1, r3 + 8007a38: 089b lsrs r3, r3, #2 + cAmbEffWidthSigmaEst_ns; + sigmaEstP2Tmp *= cAmbEffWidthDMax_ns; + 8007a3a: ebc3 03c3 rsb r3, r3, r3, lsl #3 + + if (sigmaEstP2Tmp > 0xffff) { + 8007a3e: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8007a42: d23f bcs.n 8007ac4 <VL53L0X_calc_dmax+0xe8> + + /* DMAX uses a different ambient width from sigma, so apply + * correction. + * Perform division before multiplication to prevent overflow. + */ + sigmaEstimateP2 = (sigmaEstimateP2 + cAmbEffWidthSigmaEst_ns/2)/ + 8007a44: 1ce3 adds r3, r4, #3 + 8007a46: 4921 ldr r1, [pc, #132] ; (8007acc <VL53L0X_calc_dmax+0xf0>) + 8007a48: fba1 1303 umull r1, r3, r1, r3 + 8007a4c: 089b lsrs r3, r3, #2 + cAmbEffWidthSigmaEst_ns; + sigmaEstimateP2 *= cAmbEffWidthDMax_ns; + 8007a4e: ebc3 03c3 rsb r3, r3, r3, lsl #3 + + /* FixPoint1616 >> 16 = uint32 */ + minSignalNeeded_p3 = (sigmaEstimateP2 + 0x8000) >> 16; + 8007a52: f503 4300 add.w r3, r3, #32768 ; 0x8000 + 8007a56: 0c1b lsrs r3, r3, #16 + + minSignalNeeded_p3 *= minSignalNeeded_p3; + 8007a58: fb03 f303 mul.w r3, r3, r3 + + /* FixPoint0428 >> 14 = FixPoint1814 */ + minSignalNeeded_p4 = (minSignalNeeded_p4 + 0x2000) >> 14; + + /* uint32 + uint32 = uint32 */ + minSignalNeeded = (minSignalNeeded_p2 + minSignalNeeded_p3); + 8007a5c: 4413 add r3, r2 + + /* uint32 / uint32 = uint32 */ + minSignalNeeded += (peakVcselDuration_us/2); + 8007a5e: eb03 0357 add.w r3, r3, r7, lsr #1 + minSignalNeeded /= peakVcselDuration_us; + 8007a62: fbb3 f3f7 udiv r3, r3, r7 + + /* uint32 << 14 = FixPoint1814 */ + minSignalNeeded <<= 14; + 8007a66: 039b lsls r3, r3, #14 + + /* FixPoint1814 / FixPoint1814 = uint32 */ + minSignalNeeded += (minSignalNeeded_p4/2); + 8007a68: 337f adds r3, #127 ; 0x7f + minSignalNeeded /= minSignalNeeded_p4; + 8007a6a: 085b lsrs r3, r3, #1 + 8007a6c: 4a18 ldr r2, [pc, #96] ; (8007ad0 <VL53L0X_calc_dmax+0xf4>) + 8007a6e: fba2 2303 umull r2, r3, r2, r3 + 8007a72: 099b lsrs r3, r3, #6 + + /* FixPoint3200 * FixPoint2804 := FixPoint2804*/ + minSignalNeeded *= minSignalNeeded_p1; + 8007a74: fb03 f400 mul.w r4, r3, r0 + * and 10E-22 on the denominator. + * We do this because 32bit fix point calculation can't + * handle the larger and smaller elements of this equation, + * i.e. speed of light and pulse widths. + */ + minSignalNeeded = (minSignalNeeded + 500) / 1000; + 8007a78: f504 74fa add.w r4, r4, #500 ; 0x1f4 + 8007a7c: 4b15 ldr r3, [pc, #84] ; (8007ad4 <VL53L0X_calc_dmax+0xf8>) + 8007a7e: fba3 2404 umull r2, r4, r3, r4 + 8007a82: 09a4 lsrs r4, r4, #6 + minSignalNeeded <<= 4; + 8007a84: 0124 lsls r4, r4, #4 + + minSignalNeeded = (minSignalNeeded + 500) / 1000; + 8007a86: f504 74fa add.w r4, r4, #500 ; 0x1f4 + 8007a8a: fba3 2304 umull r2, r3, r3, r4 + 8007a8e: 099f lsrs r7, r3, #6 + /* FixPoint1616 >> 8 = FixPoint2408 */ + signalLimitTmp = (cSignalLimit + 0x80) >> 8; + + /* FixPoint2408/FixPoint2408 = uint32 */ + if (signalLimitTmp != 0) + dmaxDarkTmp = (SignalAt0mm + (signalLimitTmp / 2)) + 8007a90: f105 0020 add.w r0, r5, #32 + / signalLimitTmp; + else + dmaxDarkTmp = 0; + + dmaxDark = VL53L0X_isqrt(dmaxDarkTmp); + 8007a94: 0980 lsrs r0, r0, #6 + 8007a96: f7ff f83a bl 8006b0e <VL53L0X_isqrt> + 8007a9a: 4680 mov r8, r0 + + /* FixPoint2408/FixPoint2408 = uint32 */ + if (minSignalNeeded != 0) + 8007a9c: f5b4 7f7a cmp.w r4, #1000 ; 0x3e8 + 8007aa0: d312 bcc.n 8007ac8 <VL53L0X_calc_dmax+0xec> + dmaxAmbient = (SignalAt0mm + minSignalNeeded/2) + 8007aa2: 4b0c ldr r3, [pc, #48] ; (8007ad4 <VL53L0X_calc_dmax+0xf8>) + 8007aa4: fba3 3404 umull r3, r4, r3, r4 + 8007aa8: eb05 15d4 add.w r5, r5, r4, lsr #7 + 8007aac: fbb5 f0f7 udiv r0, r5, r7 + / minSignalNeeded; + else + dmaxAmbient = 0; + + dmaxAmbient = VL53L0X_isqrt(dmaxAmbient); + 8007ab0: f7ff f82d bl 8006b0e <VL53L0X_isqrt> + + *pdmax_mm = dmaxDark; + 8007ab4: f8c6 8000 str.w r8, [r6] + if (dmaxDark > dmaxAmbient) + 8007ab8: 4580 cmp r8, r0 + 8007aba: d900 bls.n 8007abe <VL53L0X_calc_dmax+0xe2> + *pdmax_mm = dmaxAmbient; + 8007abc: 6030 str r0, [r6, #0] + + LOG_FUNCTION_END(Status); + + return Status; +} + 8007abe: 2000 movs r0, #0 + 8007ac0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + minSignalNeeded_p3 = 0xfff00000; + 8007ac4: 4b04 ldr r3, [pc, #16] ; (8007ad8 <VL53L0X_calc_dmax+0xfc>) + 8007ac6: e7c9 b.n 8007a5c <VL53L0X_calc_dmax+0x80> + dmaxAmbient = 0; + 8007ac8: 2000 movs r0, #0 + 8007aca: e7f1 b.n 8007ab0 <VL53L0X_calc_dmax+0xd4> + 8007acc: aaaaaaab .word 0xaaaaaaab + 8007ad0: 81020409 .word 0x81020409 + 8007ad4: 10624dd3 .word 0x10624dd3 + 8007ad8: fff00000 .word 0xfff00000 + +08007adc <VL53L0X_calc_sigma_estimate>: + +VL53L0X_Error VL53L0X_calc_sigma_estimate(VL53L0X_DEV Dev, + VL53L0X_RangingMeasurementData_t *pRangingMeasurementData, + FixPoint1616_t *pSigmaEstimate, + uint32_t *pDmax_mm) +{ + 8007adc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8007ae0: b08f sub sp, #60 ; 0x3c + 8007ae2: 4606 mov r6, r0 + 8007ae4: 4689 mov r9, r1 + 8007ae6: 9206 str r2, [sp, #24] + 8007ae8: 9307 str r3, [sp, #28] + * Estimates the range sigma + */ + + LOG_FUNCTION_START(""); + + VL53L0X_GETPARAMETERFIELD(Dev, XTalkCompensationRateMegaCps, + 8007aea: 6a03 ldr r3, [r0, #32] + 8007aec: 930d str r3, [sp, #52] ; 0x34 + * We work in kcps rather than mcps as this helps keep within the + * confines of the 32 Fix1616 type. + */ + + ambientRate_kcps = + (pRangingMeasurementData->AmbientRateRtnMegaCps * 1000) >> 16; + 8007aee: 690b ldr r3, [r1, #16] + 8007af0: f44f 747a mov.w r4, #1000 ; 0x3e8 + 8007af4: fb04 f303 mul.w r3, r4, r3 + 8007af8: 9308 str r3, [sp, #32] + + correctedSignalRate_mcps = + 8007afa: 68cb ldr r3, [r1, #12] + 8007afc: 9309 str r3, [sp, #36] ; 0x24 + pRangingMeasurementData->SignalRateRtnMegaCps; + + + Status = VL53L0X_get_total_signal_rate( + 8007afe: aa0c add r2, sp, #48 ; 0x30 + 8007b00: f7ff ff5d bl 80079be <VL53L0X_get_total_signal_rate> + Dev, pRangingMeasurementData, &totalSignalRate_mcps); + Status = VL53L0X_get_total_xtalk_rate( + 8007b04: aa0d add r2, sp, #52 ; 0x34 + 8007b06: 4649 mov r1, r9 + 8007b08: 4630 mov r0, r6 + 8007b0a: f7ff ff40 bl 800798e <VL53L0X_get_total_xtalk_rate> + 8007b0e: 4680 mov r8, r0 + + + /* Signal rate measurement provided by device is the + * peak signal rate, not average. + */ + peakSignalRate_kcps = (totalSignalRate_mcps * 1000); + 8007b10: f8dd a030 ldr.w sl, [sp, #48] ; 0x30 + 8007b14: fb04 f70a mul.w r7, r4, sl + peakSignalRate_kcps = (peakSignalRate_kcps + 0x8000) >> 16; + 8007b18: f507 4700 add.w r7, r7, #32768 ; 0x8000 + 8007b1c: 0c3b lsrs r3, r7, #16 + 8007b1e: 9305 str r3, [sp, #20] + + xTalkCompRate_kcps = xTalkCompRate_mcps * 1000; + 8007b20: 9b0d ldr r3, [sp, #52] ; 0x34 + 8007b22: fb03 f404 mul.w r4, r3, r4 + + if (xTalkCompRate_kcps > cMaxXTalk_kcps) + 8007b26: f5b4 1f48 cmp.w r4, #3276800 ; 0x320000 + 8007b2a: d901 bls.n 8007b30 <VL53L0X_calc_sigma_estimate+0x54> + xTalkCompRate_kcps = cMaxXTalk_kcps; + 8007b2c: f44f 1448 mov.w r4, #3276800 ; 0x320000 + + if (Status == VL53L0X_ERROR_NONE) { + 8007b30: f1b8 0f00 cmp.w r8, #0 + 8007b34: d137 bne.n 8007ba6 <VL53L0X_calc_sigma_estimate+0xca> + + /* Calculate final range macro periods */ + finalRangeTimeoutMicroSecs = VL53L0X_GETDEVICESPECIFICPARAMETER( + 8007b36: f8d6 30dc ldr.w r3, [r6, #220] ; 0xdc + 8007b3a: 930a str r3, [sp, #40] ; 0x28 + Dev, FinalRangeTimeoutMicroSecs); + + finalRangeVcselPCLKS = VL53L0X_GETDEVICESPECIFICPARAMETER( + 8007b3c: f896 50e0 ldrb.w r5, [r6, #224] ; 0xe0 + Dev, FinalRangeVcselPulsePeriod); + + finalRangeMacroPCLKS = VL53L0X_calc_timeout_mclks( + 8007b40: 462a mov r2, r5 + 8007b42: 4619 mov r1, r3 + 8007b44: 4630 mov r0, r6 + 8007b46: f7ff fafd bl 8007144 <VL53L0X_calc_timeout_mclks> + 8007b4a: 4683 mov fp, r0 + Dev, finalRangeTimeoutMicroSecs, finalRangeVcselPCLKS); + + /* Calculate pre-range macro periods */ + preRangeTimeoutMicroSecs = VL53L0X_GETDEVICESPECIFICPARAMETER( + 8007b4c: f8d6 30e4 ldr.w r3, [r6, #228] ; 0xe4 + 8007b50: 930b str r3, [sp, #44] ; 0x2c + Dev, PreRangeTimeoutMicroSecs); + + preRangeVcselPCLKS = VL53L0X_GETDEVICESPECIFICPARAMETER( + Dev, PreRangeVcselPulsePeriod); + + preRangeMacroPCLKS = VL53L0X_calc_timeout_mclks( + 8007b52: f896 20e8 ldrb.w r2, [r6, #232] ; 0xe8 + 8007b56: 4619 mov r1, r3 + 8007b58: 4630 mov r0, r6 + 8007b5a: f7ff faf3 bl 8007144 <VL53L0X_calc_timeout_mclks> + Dev, preRangeTimeoutMicroSecs, preRangeVcselPCLKS); + + vcselWidth = 3; + if (finalRangeVcselPCLKS == 8) + 8007b5e: 2d08 cmp r5, #8 + 8007b60: d032 beq.n 8007bc8 <VL53L0X_calc_sigma_estimate+0xec> + vcselWidth = 3; + 8007b62: 2303 movs r3, #3 + vcselWidth = 2; + + + peakVcselDuration_us = vcselWidth * 2048 * + (preRangeMacroPCLKS + finalRangeMacroPCLKS); + 8007b64: eb0b 0500 add.w r5, fp, r0 + peakVcselDuration_us = vcselWidth * 2048 * + 8007b68: fb03 f505 mul.w r5, r3, r5 + 8007b6c: 02ed lsls r5, r5, #11 + peakVcselDuration_us = (peakVcselDuration_us + 500)/1000; + 8007b6e: f505 75fa add.w r5, r5, #500 ; 0x1f4 + 8007b72: 4b6f ldr r3, [pc, #444] ; (8007d30 <VL53L0X_calc_sigma_estimate+0x254>) + 8007b74: fba3 2505 umull r2, r5, r3, r5 + 8007b78: 09ad lsrs r5, r5, #6 + peakVcselDuration_us *= cPllPeriod_ps; + 8007b7a: f240 6277 movw r2, #1655 ; 0x677 + 8007b7e: fb02 f505 mul.w r5, r2, r5 + peakVcselDuration_us = (peakVcselDuration_us + 500)/1000; + 8007b82: f505 75fa add.w r5, r5, #500 ; 0x1f4 + 8007b86: fba3 3505 umull r3, r5, r3, r5 + 8007b8a: 09ad lsrs r5, r5, #6 + + /* Fix1616 >> 8 = Fix2408 */ + totalSignalRate_mcps = (totalSignalRate_mcps + 0x80) >> 8; + 8007b8c: f10a 0a80 add.w sl, sl, #128 ; 0x80 + 8007b90: ea4f 231a mov.w r3, sl, lsr #8 + 8007b94: 930c str r3, [sp, #48] ; 0x30 + + /* Fix2408 * uint32 = Fix2408 */ + vcselTotalEventsRtn = totalSignalRate_mcps * + 8007b96: fb05 fb03 mul.w fp, r5, r3 + peakVcselDuration_us; + + /* Fix2408 >> 8 = uint32 */ + vcselTotalEventsRtn = (vcselTotalEventsRtn + 0x80) >> 8; + 8007b9a: f10b 0b80 add.w fp, fp, #128 ; 0x80 + 8007b9e: ea4f 2b1b mov.w fp, fp, lsr #8 + + /* Fix2408 << 8 = Fix1616 = */ + totalSignalRate_mcps <<= 8; + 8007ba2: 021b lsls r3, r3, #8 + 8007ba4: 930c str r3, [sp, #48] ; 0x30 + } + + if (Status != VL53L0X_ERROR_NONE) { + 8007ba6: f1b8 0f00 cmp.w r8, #0 + 8007baa: d109 bne.n 8007bc0 <VL53L0X_calc_sigma_estimate+0xe4> + LOG_FUNCTION_END(Status); + return Status; + } + + if (peakSignalRate_kcps == 0) { + 8007bac: 9b05 ldr r3, [sp, #20] + 8007bae: b96b cbnz r3, 8007bcc <VL53L0X_calc_sigma_estimate+0xf0> + *pSigmaEstimate = cSigmaEstMax; + 8007bb0: 4b60 ldr r3, [pc, #384] ; (8007d34 <VL53L0X_calc_sigma_estimate+0x258>) + 8007bb2: 9a06 ldr r2, [sp, #24] + 8007bb4: 6013 str r3, [r2, #0] + PALDevDataSet(Dev, SigmaEstimate, cSigmaEstMax); + 8007bb6: f8c6 3140 str.w r3, [r6, #320] ; 0x140 + *pDmax_mm = 0; + 8007bba: 2300 movs r3, #0 + 8007bbc: 9a07 ldr r2, [sp, #28] + 8007bbe: 6013 str r3, [r2, #0] + pDmax_mm); + } + + LOG_FUNCTION_END(Status); + return Status; +} + 8007bc0: 4640 mov r0, r8 + 8007bc2: b00f add sp, #60 ; 0x3c + 8007bc4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + vcselWidth = 2; + 8007bc8: 2302 movs r3, #2 + 8007bca: e7cb b.n 8007b64 <VL53L0X_calc_sigma_estimate+0x88> + if (vcselTotalEventsRtn < 1) + 8007bcc: f1bb 0f00 cmp.w fp, #0 + 8007bd0: d101 bne.n 8007bd6 <VL53L0X_calc_sigma_estimate+0xfa> + vcselTotalEventsRtn = 1; + 8007bd2: f04f 0b01 mov.w fp, #1 + sigmaEstimateP2 = (ambientRate_kcps << 16)/peakSignalRate_kcps; + 8007bd6: 9b08 ldr r3, [sp, #32] + 8007bd8: ea4f 4813 mov.w r8, r3, lsr #16 + 8007bdc: ea4f 4808 mov.w r8, r8, lsl #16 + 8007be0: 9b05 ldr r3, [sp, #20] + 8007be2: fbb8 f3f3 udiv r3, r8, r3 + if (sigmaEstimateP2 > cAmbToSignalRatioMax) { + 8007be6: 4a54 ldr r2, [pc, #336] ; (8007d38 <VL53L0X_calc_sigma_estimate+0x25c>) + 8007be8: 4293 cmp r3, r2 + 8007bea: d900 bls.n 8007bee <VL53L0X_calc_sigma_estimate+0x112> + sigmaEstimateP2 = cAmbToSignalRatioMax; + 8007bec: 4613 mov r3, r2 + sigmaEstimateP2 *= cAmbientEffectiveWidth_centi_ns; + 8007bee: f44f 7216 mov.w r2, #600 ; 0x258 + 8007bf2: fb02 f803 mul.w r8, r2, r3 + sigmaEstimateP3 = 2 * VL53L0X_isqrt(vcselTotalEventsRtn * 12); + 8007bf6: eb0b 004b add.w r0, fp, fp, lsl #1 + 8007bfa: 0080 lsls r0, r0, #2 + 8007bfc: f7fe ff87 bl 8006b0e <VL53L0X_isqrt> + 8007c00: ea4f 0a40 mov.w sl, r0, lsl #1 + deltaT_ps = pRangingMeasurementData->RangeMilliMeter * + 8007c04: f8b9 3008 ldrh.w r3, [r9, #8] + 8007c08: 4a4c ldr r2, [pc, #304] ; (8007d3c <VL53L0X_calc_sigma_estimate+0x260>) + 8007c0a: fb02 f303 mul.w r3, r2, r3 + diff1_mcps = (((peakSignalRate_kcps << 16) - + 8007c0e: 0c3f lsrs r7, r7, #16 + 8007c10: 043f lsls r7, r7, #16 + 8007c12: eba7 0444 sub.w r4, r7, r4, lsl #1 + 2 * xTalkCompRate_kcps) + 500)/1000; + 8007c16: f504 74fa add.w r4, r4, #500 ; 0x1f4 + diff1_mcps = (((peakSignalRate_kcps << 16) - + 8007c1a: 4a45 ldr r2, [pc, #276] ; (8007d30 <VL53L0X_calc_sigma_estimate+0x254>) + 8007c1c: fba2 1404 umull r1, r4, r2, r4 + 8007c20: 09a4 lsrs r4, r4, #6 + diff2_mcps = ((peakSignalRate_kcps << 16) + 500)/1000; + 8007c22: f507 77fa add.w r7, r7, #500 ; 0x1f4 + 8007c26: fba2 2707 umull r2, r7, r2, r7 + 8007c2a: 09bf lsrs r7, r7, #6 + diff1_mcps <<= 8; + 8007c2c: 0224 lsls r4, r4, #8 + xTalkCorrection = abs(diff1_mcps/diff2_mcps); + 8007c2e: fbb4 f4f7 udiv r4, r4, r7 + xTalkCorrection <<= 8; + 8007c32: 0224 lsls r4, r4, #8 + if(pRangingMeasurementData->RangeStatus != 0){ + 8007c34: f899 2018 ldrb.w r2, [r9, #24] + 8007c38: 2a00 cmp r2, #0 + 8007c3a: d160 bne.n 8007cfe <VL53L0X_calc_sigma_estimate+0x222> + pwMult = deltaT_ps/cVcselPulseWidth_ps; /* smaller than 1.0f */ + 8007c3c: 4a40 ldr r2, [pc, #256] ; (8007d40 <VL53L0X_calc_sigma_estimate+0x264>) + 8007c3e: fba2 2303 umull r2, r3, r2, r3 + 8007c42: 0a9b lsrs r3, r3, #10 + pwMult *= ((1 << 16) - xTalkCorrection); + 8007c44: f5c4 3480 rsb r4, r4, #65536 ; 0x10000 + 8007c48: fb03 f404 mul.w r4, r3, r4 + pwMult = (pwMult + c16BitRoundingParam) >> 16; + 8007c4c: f504 4400 add.w r4, r4, #32768 ; 0x8000 + 8007c50: 0c24 lsrs r4, r4, #16 + pwMult += (1 << 16); + 8007c52: f504 3480 add.w r4, r4, #65536 ; 0x10000 + pwMult >>= 1; + 8007c56: 0864 lsrs r4, r4, #1 + pwMult = pwMult * pwMult; + 8007c58: fb04 f404 mul.w r4, r4, r4 + pwMult >>= 14; + 8007c5c: 0ba4 lsrs r4, r4, #14 + sqr1 = pwMult * sigmaEstimateP1; + 8007c5e: f44f 7048 mov.w r0, #800 ; 0x320 + 8007c62: fb04 f000 mul.w r0, r4, r0 + sqr1 = (sqr1 + 0x8000) >> 16; + 8007c66: f500 4000 add.w r0, r0, #32768 ; 0x8000 + 8007c6a: 0c00 lsrs r0, r0, #16 + sqr2 = (sqr2 + 0x8000) >> 16; + 8007c6c: f508 4300 add.w r3, r8, #32768 ; 0x8000 + 8007c70: 0c1b lsrs r3, r3, #16 + sqr2 *= sqr2; + 8007c72: fb03 f303 mul.w r3, r3, r3 + sqrtResult_centi_ns = VL53L0X_isqrt(sqrSum); + 8007c76: fb00 3000 mla r0, r0, r0, r3 + 8007c7a: f7fe ff48 bl 8006b0e <VL53L0X_isqrt> + sqrtResult_centi_ns <<= 16; + 8007c7e: 0403 lsls r3, r0, #16 + sigmaEstRtn = (((sqrtResult_centi_ns+50)/100) / + 8007c80: 3332 adds r3, #50 ; 0x32 + 8007c82: 4a30 ldr r2, [pc, #192] ; (8007d44 <VL53L0X_calc_sigma_estimate+0x268>) + 8007c84: fba2 2303 umull r2, r3, r2, r3 + 8007c88: 095b lsrs r3, r3, #5 + 8007c8a: fbb3 f3fa udiv r3, r3, sl + sigmaEstRtn += 5000; + 8007c8e: f640 31b5 movw r1, #2997 ; 0xbb5 + 8007c92: f241 3288 movw r2, #5000 ; 0x1388 + 8007c96: fb01 2303 mla r3, r1, r3, r2 + sigmaEstRtn /= 10000; + 8007c9a: 4f2b ldr r7, [pc, #172] ; (8007d48 <VL53L0X_calc_sigma_estimate+0x26c>) + 8007c9c: fba7 2703 umull r2, r7, r7, r3 + 8007ca0: 0b7f lsrs r7, r7, #13 + if (sigmaEstRtn > cSigmaEstRtnMax) { + 8007ca2: 4a2a ldr r2, [pc, #168] ; (8007d4c <VL53L0X_calc_sigma_estimate+0x270>) + 8007ca4: 4293 cmp r3, r2 + 8007ca6: d901 bls.n 8007cac <VL53L0X_calc_sigma_estimate+0x1d0> + sigmaEstRtn = cSigmaEstRtnMax; + 8007ca8: f44f 4770 mov.w r7, #61440 ; 0xf000 + (finalRangeTimeoutMicroSecs + preRangeTimeoutMicroSecs + 500)/1000; + 8007cac: 9b0a ldr r3, [sp, #40] ; 0x28 + 8007cae: 9a0b ldr r2, [sp, #44] ; 0x2c + 8007cb0: 4413 add r3, r2 + 8007cb2: f503 73fa add.w r3, r3, #500 ; 0x1f4 + finalRangeIntegrationTimeMilliSecs = + 8007cb6: f8df 9078 ldr.w r9, [pc, #120] ; 8007d30 <VL53L0X_calc_sigma_estimate+0x254> + 8007cba: fba9 2303 umull r2, r3, r9, r3 + 8007cbe: 0998 lsrs r0, r3, #6 + finalRangeIntegrationTimeMilliSecs/2)/ + 8007cc0: 09db lsrs r3, r3, #7 + VL53L0X_isqrt((cDfltFinalRangeIntegrationTimeMilliSecs + + 8007cc2: f503 13c8 add.w r3, r3, #1638400 ; 0x190000 + 8007cc6: fbb3 f0f0 udiv r0, r3, r0 + 8007cca: f7fe ff20 bl 8006b0e <VL53L0X_isqrt> + sigmaEstRef <<= 8; + 8007cce: 0200 lsls r0, r0, #8 + sigmaEstRef = (sigmaEstRef + 500)/1000; + 8007cd0: f500 70fa add.w r0, r0, #500 ; 0x1f4 + 8007cd4: fba9 9000 umull r9, r0, r9, r0 + 8007cd8: 0980 lsrs r0, r0, #6 + sqr2 = sigmaEstRef * sigmaEstRef; + 8007cda: fb00 f000 mul.w r0, r0, r0 + sqrtResult = VL53L0X_isqrt((sqr1 + sqr2)); + 8007cde: fb07 0007 mla r0, r7, r7, r0 + 8007ce2: f7fe ff14 bl 8006b0e <VL53L0X_isqrt> + sigmaEstimate = 1000 * sqrtResult; + 8007ce6: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8007cea: fb03 f000 mul.w r0, r3, r0 + if ((peakSignalRate_kcps < 1) || (vcselTotalEventsRtn < 1) || + 8007cee: f1bb 0f00 cmp.w fp, #0 + 8007cf2: d007 beq.n 8007d04 <VL53L0X_calc_sigma_estimate+0x228> + 8007cf4: 4b0f ldr r3, [pc, #60] ; (8007d34 <VL53L0X_calc_sigma_estimate+0x258>) + 8007cf6: 4298 cmp r0, r3 + 8007cf8: d905 bls.n 8007d06 <VL53L0X_calc_sigma_estimate+0x22a> + sigmaEstimate = cSigmaEstMax; + 8007cfa: 480e ldr r0, [pc, #56] ; (8007d34 <VL53L0X_calc_sigma_estimate+0x258>) + 8007cfc: e003 b.n 8007d06 <VL53L0X_calc_sigma_estimate+0x22a> + pwMult = 1 << 16; + 8007cfe: f44f 3480 mov.w r4, #65536 ; 0x10000 + 8007d02: e7ac b.n 8007c5e <VL53L0X_calc_sigma_estimate+0x182> + sigmaEstimate = cSigmaEstMax; + 8007d04: 480b ldr r0, [pc, #44] ; (8007d34 <VL53L0X_calc_sigma_estimate+0x258>) + *pSigmaEstimate = (uint32_t)(sigmaEstimate); + 8007d06: 9b06 ldr r3, [sp, #24] + 8007d08: 6018 str r0, [r3, #0] + PALDevDataSet(Dev, SigmaEstimate, *pSigmaEstimate); + 8007d0a: f8c6 0140 str.w r0, [r6, #320] ; 0x140 + Status = VL53L0X_calc_dmax( + 8007d0e: 9b07 ldr r3, [sp, #28] + 8007d10: 9303 str r3, [sp, #12] + 8007d12: 9502 str r5, [sp, #8] + 8007d14: f8cd 8004 str.w r8, [sp, #4] + 8007d18: f44f 7348 mov.w r3, #800 ; 0x320 + 8007d1c: 9300 str r3, [sp, #0] + 8007d1e: 4623 mov r3, r4 + 8007d20: 9a09 ldr r2, [sp, #36] ; 0x24 + 8007d22: 990c ldr r1, [sp, #48] ; 0x30 + 8007d24: 4630 mov r0, r6 + 8007d26: f7ff fe59 bl 80079dc <VL53L0X_calc_dmax> + 8007d2a: 4680 mov r8, r0 + 8007d2c: e748 b.n 8007bc0 <VL53L0X_calc_sigma_estimate+0xe4> + 8007d2e: bf00 nop + 8007d30: 10624dd3 .word 0x10624dd3 + 8007d34: 028f87ae .word 0x028f87ae + 8007d38: 00666666 .word 0x00666666 + 8007d3c: 0006999a .word 0x0006999a + 8007d40: 37c67b51 .word 0x37c67b51 + 8007d44: 51eb851f .word 0x51eb851f + 8007d48: d1b71759 .word 0xd1b71759 + 8007d4c: 249f270f .word 0x249f270f + +08007d50 <VL53L0X_get_pal_range_status>: + uint8_t DeviceRangeStatus, + FixPoint1616_t SignalRate, + uint16_t EffectiveSpadRtnCount, + VL53L0X_RangingMeasurementData_t *pRangingMeasurementData, + uint8_t *pPalRangeStatus) +{ + 8007d50: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8007d54: b08b sub sp, #44 ; 0x2c + 8007d56: 4604 mov r4, r0 + 8007d58: 9201 str r2, [sp, #4] + 8007d5a: 461d mov r5, r3 + 8007d5c: f8dd 9054 ldr.w r9, [sp, #84] ; 0x54 + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + uint8_t NoneFlag; + uint8_t SigmaLimitflag = 0; + uint8_t SignalRefClipflag = 0; + uint8_t RangeIgnoreThresholdflag = 0; + uint8_t SigmaLimitCheckEnable = 0; + 8007d60: 2300 movs r3, #0 + 8007d62: f88d 3027 strb.w r3, [sp, #39] ; 0x27 + uint8_t SignalRateFinalRangeLimitCheckEnable = 0; + 8007d66: f88d 3026 strb.w r3, [sp, #38] ; 0x26 + uint8_t SignalRefClipLimitCheckEnable = 0; + 8007d6a: f88d 3025 strb.w r3, [sp, #37] ; 0x25 + uint8_t RangeIgnoreThresholdLimitCheckEnable = 0; + 8007d6e: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + FixPoint1616_t SigmaLimitValue; + FixPoint1616_t SignalRefClipValue; + FixPoint1616_t RangeIgnoreThresholdValue; + FixPoint1616_t SignalRatePerSpad; + uint8_t DeviceRangeStatusInternal = 0; + uint16_t tmpWord = 0; + 8007d72: f8ad 3012 strh.w r3, [sp, #18] + uint8_t Temp8; + uint32_t Dmax_mm = 0; + 8007d76: 9303 str r3, [sp, #12] + * the value 11 in the DeviceRangeStatus. + * In addition, the SigmaEstimator is not included in the VL53L0X + * DeviceRangeStatus, this will be added in the PalRangeStatus. + */ + + DeviceRangeStatusInternal = ((DeviceRangeStatus & 0x78) >> 3); + 8007d78: f3c1 0ac3 ubfx sl, r1, #3, #4 + + if (DeviceRangeStatusInternal == 0 || + 8007d7c: f011 0f78 tst.w r1, #120 ; 0x78 + 8007d80: d00e beq.n 8007da0 <VL53L0X_get_pal_range_status+0x50> + 8007d82: f1aa 0305 sub.w r3, sl, #5 + 8007d86: 2b0a cmp r3, #10 + 8007d88: d807 bhi.n 8007d9a <VL53L0X_get_pal_range_status+0x4a> + 8007d8a: e8df f003 tbb [pc, r3] + 8007d8e: 063d .short 0x063d + 8007d90: 0606063d .word 0x0606063d + 8007d94: 3d3d3d06 .word 0x3d3d3d06 + 8007d98: 3d .byte 0x3d + 8007d99: 00 .byte 0x00 + 8007d9a: f04f 0b00 mov.w fp, #0 + 8007d9e: e001 b.n 8007da4 <VL53L0X_get_pal_range_status+0x54> + DeviceRangeStatusInternal == 12 || + DeviceRangeStatusInternal == 13 || + DeviceRangeStatusInternal == 14 || + DeviceRangeStatusInternal == 15 + ) { + NoneFlag = 1; + 8007da0: f04f 0b01 mov.w fp, #1 + /* + * Check if Sigma limit is enabled, if yes then do comparison with limit + * value and put the result back into pPalRangeStatus. + */ + if (Status == VL53L0X_ERROR_NONE) + Status = VL53L0X_GetLimitCheckEnable(Dev, + 8007da4: f10d 0227 add.w r2, sp, #39 ; 0x27 + 8007da8: 2100 movs r1, #0 + 8007daa: 4620 mov r0, r4 + 8007dac: f7fd fce3 bl 8005776 <VL53L0X_GetLimitCheckEnable> + 8007db0: 4603 mov r3, r0 + VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, + &SigmaLimitCheckEnable); + + if ((SigmaLimitCheckEnable != 0) && (Status == VL53L0X_ERROR_NONE)) { + 8007db2: f89d 8027 ldrb.w r8, [sp, #39] ; 0x27 + 8007db6: f1b8 0f00 cmp.w r8, #0 + 8007dba: d002 beq.n 8007dc2 <VL53L0X_get_pal_range_status+0x72> + 8007dbc: b338 cbz r0, 8007e0e <VL53L0X_get_pal_range_status+0xbe> + uint8_t SigmaLimitflag = 0; + 8007dbe: f04f 0800 mov.w r8, #0 + + /* + * Check if Signal ref clip limit is enabled, if yes then do comparison + * with limit value and put the result back into pPalRangeStatus. + */ + if (Status == VL53L0X_ERROR_NONE) + 8007dc2: 2b00 cmp r3, #0 + 8007dc4: d046 beq.n 8007e54 <VL53L0X_get_pal_range_status+0x104> + Status = VL53L0X_GetLimitCheckEnable(Dev, + VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP, + &SignalRefClipLimitCheckEnable); + + if ((SignalRefClipLimitCheckEnable != 0) && + 8007dc6: f89d 6025 ldrb.w r6, [sp, #37] ; 0x25 + 8007dca: b116 cbz r6, 8007dd2 <VL53L0X_get_pal_range_status+0x82> + 8007dcc: 2b00 cmp r3, #0 + 8007dce: d049 beq.n 8007e64 <VL53L0X_get_pal_range_status+0x114> + uint8_t SignalRefClipflag = 0; + 8007dd0: 2600 movs r6, #0 + * Check if Signal ref clip limit is enabled, if yes then do comparison + * with limit value and put the result back into pPalRangeStatus. + * EffectiveSpadRtnCount has a format 8.8 + * If (Return signal rate < (1.5 x Xtalk x number of Spads)) : FAIL + */ + if (Status == VL53L0X_ERROR_NONE) + 8007dd2: 2b00 cmp r3, #0 + 8007dd4: d074 beq.n 8007ec0 <VL53L0X_get_pal_range_status+0x170> + Status = VL53L0X_GetLimitCheckEnable(Dev, + VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD, + &RangeIgnoreThresholdLimitCheckEnable); + + if ((RangeIgnoreThresholdLimitCheckEnable != 0) && + 8007dd6: f89d 7024 ldrb.w r7, [sp, #36] ; 0x24 + 8007dda: 2f00 cmp r7, #0 + 8007ddc: d07a beq.n 8007ed4 <VL53L0X_get_pal_range_status+0x184> + 8007dde: 2b00 cmp r3, #0 + 8007de0: d177 bne.n 8007ed2 <VL53L0X_get_pal_range_status+0x182> + (Status == VL53L0X_ERROR_NONE)) { + + /* Compute the signal rate per spad */ + if (EffectiveSpadRtnCount == 0) { + 8007de2: 2d00 cmp r5, #0 + 8007de4: d073 beq.n 8007ece <VL53L0X_get_pal_range_status+0x17e> + SignalRatePerSpad = 0; + } else { + SignalRatePerSpad = (FixPoint1616_t)((256 * SignalRate) + 8007de6: 9b01 ldr r3, [sp, #4] + 8007de8: 021b lsls r3, r3, #8 + 8007dea: fbb3 f5f5 udiv r5, r3, r5 + / EffectiveSpadRtnCount); + } + + Status = VL53L0X_GetLimitCheckValue(Dev, + 8007dee: aa05 add r2, sp, #20 + 8007df0: 2103 movs r1, #3 + 8007df2: 4620 mov r0, r4 + 8007df4: f7fd fcff bl 80057f6 <VL53L0X_GetLimitCheckValue> + 8007df8: 4603 mov r3, r0 + VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD, + &RangeIgnoreThresholdValue); + + if ((RangeIgnoreThresholdValue > 0) && + 8007dfa: 9a05 ldr r2, [sp, #20] + 8007dfc: 2a00 cmp r2, #0 + 8007dfe: d078 beq.n 8007ef2 <VL53L0X_get_pal_range_status+0x1a2> + 8007e00: 42aa cmp r2, r5 + 8007e02: d878 bhi.n 8007ef6 <VL53L0X_get_pal_range_status+0x1a6> + uint8_t RangeIgnoreThresholdflag = 0; + 8007e04: 2700 movs r7, #0 + 8007e06: e065 b.n 8007ed4 <VL53L0X_get_pal_range_status+0x184> + if (DeviceRangeStatusInternal == 0 || + 8007e08: f04f 0b01 mov.w fp, #1 + 8007e0c: e7ca b.n 8007da4 <VL53L0X_get_pal_range_status+0x54> + Status = VL53L0X_calc_sigma_estimate( + 8007e0e: ab03 add r3, sp, #12 + 8007e10: aa08 add r2, sp, #32 + 8007e12: 9914 ldr r1, [sp, #80] ; 0x50 + 8007e14: 4620 mov r0, r4 + 8007e16: f7ff fe61 bl 8007adc <VL53L0X_calc_sigma_estimate> + if (Status == VL53L0X_ERROR_NONE) + 8007e1a: 4603 mov r3, r0 + 8007e1c: b910 cbnz r0, 8007e24 <VL53L0X_get_pal_range_status+0xd4> + pRangingMeasurementData->RangeDMaxMilliMeter = Dmax_mm; + 8007e1e: 9a03 ldr r2, [sp, #12] + 8007e20: 9914 ldr r1, [sp, #80] ; 0x50 + 8007e22: 814a strh r2, [r1, #10] + if (Status == VL53L0X_ERROR_NONE) { + 8007e24: b113 cbz r3, 8007e2c <VL53L0X_get_pal_range_status+0xdc> + uint8_t SigmaLimitflag = 0; + 8007e26: f04f 0800 mov.w r8, #0 + 8007e2a: e7ca b.n 8007dc2 <VL53L0X_get_pal_range_status+0x72> + Status = VL53L0X_GetLimitCheckValue(Dev, + 8007e2c: aa07 add r2, sp, #28 + 8007e2e: 2100 movs r1, #0 + 8007e30: 4620 mov r0, r4 + 8007e32: f7fd fce0 bl 80057f6 <VL53L0X_GetLimitCheckValue> + 8007e36: 4603 mov r3, r0 + if ((SigmaLimitValue > 0) && + 8007e38: 9a07 ldr r2, [sp, #28] + 8007e3a: b12a cbz r2, 8007e48 <VL53L0X_get_pal_range_status+0xf8> + (SigmaEstimate > SigmaLimitValue)) + 8007e3c: 9908 ldr r1, [sp, #32] + if ((SigmaLimitValue > 0) && + 8007e3e: 428a cmp r2, r1 + 8007e40: d305 bcc.n 8007e4e <VL53L0X_get_pal_range_status+0xfe> + uint8_t SigmaLimitflag = 0; + 8007e42: f04f 0800 mov.w r8, #0 + 8007e46: e7bc b.n 8007dc2 <VL53L0X_get_pal_range_status+0x72> + 8007e48: f04f 0800 mov.w r8, #0 + 8007e4c: e7b9 b.n 8007dc2 <VL53L0X_get_pal_range_status+0x72> + SigmaLimitflag = 1; + 8007e4e: f04f 0801 mov.w r8, #1 + 8007e52: e7b6 b.n 8007dc2 <VL53L0X_get_pal_range_status+0x72> + Status = VL53L0X_GetLimitCheckEnable(Dev, + 8007e54: f10d 0225 add.w r2, sp, #37 ; 0x25 + 8007e58: 2102 movs r1, #2 + 8007e5a: 4620 mov r0, r4 + 8007e5c: f7fd fc8b bl 8005776 <VL53L0X_GetLimitCheckEnable> + 8007e60: 4603 mov r3, r0 + 8007e62: e7b0 b.n 8007dc6 <VL53L0X_get_pal_range_status+0x76> + Status = VL53L0X_GetLimitCheckValue(Dev, + 8007e64: aa06 add r2, sp, #24 + 8007e66: 2102 movs r1, #2 + 8007e68: 4620 mov r0, r4 + 8007e6a: f7fd fcc4 bl 80057f6 <VL53L0X_GetLimitCheckValue> + if (Status == VL53L0X_ERROR_NONE) + 8007e6e: 4603 mov r3, r0 + 8007e70: b160 cbz r0, 8007e8c <VL53L0X_get_pal_range_status+0x13c> + if (Status == VL53L0X_ERROR_NONE) + 8007e72: b193 cbz r3, 8007e9a <VL53L0X_get_pal_range_status+0x14a> + if (Status == VL53L0X_ERROR_NONE) + 8007e74: b1cb cbz r3, 8007eaa <VL53L0X_get_pal_range_status+0x15a> + LastSignalRefMcps = VL53L0X_FIXPOINT97TOFIXPOINT1616(tmpWord); + 8007e76: f8bd 2012 ldrh.w r2, [sp, #18] + 8007e7a: 0252 lsls r2, r2, #9 + PALDevDataSet(Dev, LastSignalRefMcps, LastSignalRefMcps); + 8007e7c: f8c4 2148 str.w r2, [r4, #328] ; 0x148 + if ((SignalRefClipValue > 0) && + 8007e80: 9906 ldr r1, [sp, #24] + 8007e82: b1c9 cbz r1, 8007eb8 <VL53L0X_get_pal_range_status+0x168> + 8007e84: 4291 cmp r1, r2 + 8007e86: d319 bcc.n 8007ebc <VL53L0X_get_pal_range_status+0x16c> + uint8_t SignalRefClipflag = 0; + 8007e88: 2600 movs r6, #0 + 8007e8a: e7a2 b.n 8007dd2 <VL53L0X_get_pal_range_status+0x82> + Status = VL53L0X_WrByte(Dev, 0xFF, 0x01); + 8007e8c: 2201 movs r2, #1 + 8007e8e: 21ff movs r1, #255 ; 0xff + 8007e90: 4620 mov r0, r4 + 8007e92: f000 f8e3 bl 800805c <VL53L0X_WrByte> + 8007e96: 4603 mov r3, r0 + 8007e98: e7eb b.n 8007e72 <VL53L0X_get_pal_range_status+0x122> + Status = VL53L0X_RdWord(Dev, + 8007e9a: f10d 0212 add.w r2, sp, #18 + 8007e9e: 21b6 movs r1, #182 ; 0xb6 + 8007ea0: 4620 mov r0, r4 + 8007ea2: f000 f931 bl 8008108 <VL53L0X_RdWord> + 8007ea6: 4603 mov r3, r0 + 8007ea8: e7e4 b.n 8007e74 <VL53L0X_get_pal_range_status+0x124> + Status = VL53L0X_WrByte(Dev, 0xFF, 0x00); + 8007eaa: 2200 movs r2, #0 + 8007eac: 21ff movs r1, #255 ; 0xff + 8007eae: 4620 mov r0, r4 + 8007eb0: f000 f8d4 bl 800805c <VL53L0X_WrByte> + 8007eb4: 4603 mov r3, r0 + 8007eb6: e7de b.n 8007e76 <VL53L0X_get_pal_range_status+0x126> + uint8_t SignalRefClipflag = 0; + 8007eb8: 2600 movs r6, #0 + 8007eba: e78a b.n 8007dd2 <VL53L0X_get_pal_range_status+0x82> + SignalRefClipflag = 1; + 8007ebc: 2601 movs r6, #1 + 8007ebe: e788 b.n 8007dd2 <VL53L0X_get_pal_range_status+0x82> + Status = VL53L0X_GetLimitCheckEnable(Dev, + 8007ec0: aa09 add r2, sp, #36 ; 0x24 + 8007ec2: 2103 movs r1, #3 + 8007ec4: 4620 mov r0, r4 + 8007ec6: f7fd fc56 bl 8005776 <VL53L0X_GetLimitCheckEnable> + 8007eca: 4603 mov r3, r0 + 8007ecc: e783 b.n 8007dd6 <VL53L0X_get_pal_range_status+0x86> + SignalRatePerSpad = 0; + 8007ece: 2500 movs r5, #0 + 8007ed0: e78d b.n 8007dee <VL53L0X_get_pal_range_status+0x9e> + uint8_t RangeIgnoreThresholdflag = 0; + 8007ed2: 2700 movs r7, #0 + /* Limit Fail add 2^6 to range status */ + RangeIgnoreThresholdflag = 1; + } + } + + if (Status == VL53L0X_ERROR_NONE) { + 8007ed4: b9a3 cbnz r3, 8007f00 <VL53L0X_get_pal_range_status+0x1b0> + if (NoneFlag == 1) { + 8007ed6: f1bb 0f00 cmp.w fp, #0 + 8007eda: d10e bne.n 8007efa <VL53L0X_get_pal_range_status+0x1aa> + *pPalRangeStatus = 255; /* NONE */ + } else if (DeviceRangeStatusInternal == 1 || + 8007edc: f10a 33ff add.w r3, sl, #4294967295 + 8007ee0: 2b09 cmp r3, #9 + 8007ee2: d830 bhi.n 8007f46 <VL53L0X_get_pal_range_status+0x1f6> + 8007ee4: e8df f003 tbb [pc, r3] + 8007ee8: 2f272727 .word 0x2f272727 + 8007eec: 3d2f2b2f .word 0x3d2f2b2f + 8007ef0: 3d2b .short 0x3d2b + uint8_t RangeIgnoreThresholdflag = 0; + 8007ef2: 2700 movs r7, #0 + 8007ef4: e7ee b.n 8007ed4 <VL53L0X_get_pal_range_status+0x184> + RangeIgnoreThresholdflag = 1; + 8007ef6: 2701 movs r7, #1 + 8007ef8: e7ec b.n 8007ed4 <VL53L0X_get_pal_range_status+0x184> + *pPalRangeStatus = 255; /* NONE */ + 8007efa: 23ff movs r3, #255 ; 0xff + 8007efc: f889 3000 strb.w r3, [r9] + *pPalRangeStatus = 0; /* Range Valid */ + } + } + + /* DMAX only relevant during range error */ + if (*pPalRangeStatus == 0) + 8007f00: f899 3000 ldrb.w r3, [r9] + 8007f04: b90b cbnz r3, 8007f0a <VL53L0X_get_pal_range_status+0x1ba> + pRangingMeasurementData->RangeDMaxMilliMeter = 0; + 8007f06: 9a14 ldr r2, [sp, #80] ; 0x50 + 8007f08: 8153 strh r3, [r2, #10] + + /* fill the Limit Check Status */ + + Status = VL53L0X_GetLimitCheckEnable(Dev, + 8007f0a: f10d 0226 add.w r2, sp, #38 ; 0x26 + 8007f0e: 2101 movs r1, #1 + 8007f10: 4620 mov r0, r4 + 8007f12: f7fd fc30 bl 8005776 <VL53L0X_GetLimitCheckEnable> + VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE, + &SignalRateFinalRangeLimitCheckEnable); + + if (Status == VL53L0X_ERROR_NONE) { + 8007f16: bbf8 cbnz r0, 8007f98 <VL53L0X_get_pal_range_status+0x248> + if ((SigmaLimitCheckEnable == 0) || (SigmaLimitflag == 1)) + 8007f18: f89d 3027 ldrb.w r3, [sp, #39] ; 0x27 + 8007f1c: b90b cbnz r3, 8007f22 <VL53L0X_get_pal_range_status+0x1d2> + Temp8 = 1; + 8007f1e: f04f 0801 mov.w r8, #1 + else + Temp8 = 0; + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksStatus, + 8007f22: f884 802e strb.w r8, [r4, #46] ; 0x2e + VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, Temp8); + + if ((DeviceRangeStatusInternal == 4) || + 8007f26: f1ba 0f04 cmp.w sl, #4 + 8007f2a: d026 beq.n 8007f7a <VL53L0X_get_pal_range_status+0x22a> + (SignalRateFinalRangeLimitCheckEnable == 0)) + 8007f2c: f89d 3026 ldrb.w r3, [sp, #38] ; 0x26 + if ((DeviceRangeStatusInternal == 4) || + 8007f30: bbab cbnz r3, 8007f9e <VL53L0X_get_pal_range_status+0x24e> + Temp8 = 1; + 8007f32: 2301 movs r3, #1 + 8007f34: e022 b.n 8007f7c <VL53L0X_get_pal_range_status+0x22c> + *pPalRangeStatus = 5; /* HW fail */ + 8007f36: 2305 movs r3, #5 + 8007f38: f889 3000 strb.w r3, [r9] + 8007f3c: e7e0 b.n 8007f00 <VL53L0X_get_pal_range_status+0x1b0> + *pPalRangeStatus = 4; /* Phase fail */ + 8007f3e: 2304 movs r3, #4 + 8007f40: f889 3000 strb.w r3, [r9] + 8007f44: e7dc b.n 8007f00 <VL53L0X_get_pal_range_status+0x1b0> + DeviceRangeStatusInternal == 10 || + 8007f46: 2e01 cmp r6, #1 + 8007f48: d00b beq.n 8007f62 <VL53L0X_get_pal_range_status+0x212> + } else if (DeviceRangeStatusInternal == 4 || + 8007f4a: f1ba 0f04 cmp.w sl, #4 + 8007f4e: d00c beq.n 8007f6a <VL53L0X_get_pal_range_status+0x21a> + 8007f50: 2f01 cmp r7, #1 + 8007f52: d00a beq.n 8007f6a <VL53L0X_get_pal_range_status+0x21a> + } else if (SigmaLimitflag == 1) { + 8007f54: f1b8 0f01 cmp.w r8, #1 + 8007f58: d00b beq.n 8007f72 <VL53L0X_get_pal_range_status+0x222> + *pPalRangeStatus = 0; /* Range Valid */ + 8007f5a: 2300 movs r3, #0 + 8007f5c: f889 3000 strb.w r3, [r9] + 8007f60: e7ce b.n 8007f00 <VL53L0X_get_pal_range_status+0x1b0> + *pPalRangeStatus = 3; /* Min range */ + 8007f62: 2303 movs r3, #3 + 8007f64: f889 3000 strb.w r3, [r9] + 8007f68: e7ca b.n 8007f00 <VL53L0X_get_pal_range_status+0x1b0> + *pPalRangeStatus = 2; /* Signal Fail */ + 8007f6a: 2302 movs r3, #2 + 8007f6c: f889 3000 strb.w r3, [r9] + 8007f70: e7c6 b.n 8007f00 <VL53L0X_get_pal_range_status+0x1b0> + *pPalRangeStatus = 1; /* Sigma Fail */ + 8007f72: 2301 movs r3, #1 + 8007f74: f889 3000 strb.w r3, [r9] + 8007f78: e7c2 b.n 8007f00 <VL53L0X_get_pal_range_status+0x1b0> + Temp8 = 1; + 8007f7a: 2301 movs r3, #1 + else + Temp8 = 0; + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksStatus, + 8007f7c: f884 302f strb.w r3, [r4, #47] ; 0x2f + VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE, + Temp8); + + if ((SignalRefClipLimitCheckEnable == 0) || + 8007f80: f89d 3025 ldrb.w r3, [sp, #37] ; 0x25 + 8007f84: b903 cbnz r3, 8007f88 <VL53L0X_get_pal_range_status+0x238> + (SignalRefClipflag == 1)) + Temp8 = 1; + 8007f86: 2601 movs r6, #1 + else + Temp8 = 0; + + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksStatus, + 8007f88: f884 6030 strb.w r6, [r4, #48] ; 0x30 + VL53L0X_CHECKENABLE_SIGNAL_REF_CLIP, Temp8); + + if ((RangeIgnoreThresholdLimitCheckEnable == 0) || + 8007f8c: f89d 3024 ldrb.w r3, [sp, #36] ; 0x24 + 8007f90: b903 cbnz r3, 8007f94 <VL53L0X_get_pal_range_status+0x244> + (RangeIgnoreThresholdflag == 1)) + Temp8 = 1; + 8007f92: 2701 movs r7, #1 + else + Temp8 = 0; + + VL53L0X_SETARRAYPARAMETERFIELD(Dev, LimitChecksStatus, + 8007f94: f884 7031 strb.w r7, [r4, #49] ; 0x31 + } + + LOG_FUNCTION_END(Status); + return Status; + +} + 8007f98: b00b add sp, #44 ; 0x2c + 8007f9a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + Temp8 = 0; + 8007f9e: 2300 movs r3, #0 + 8007fa0: e7ec b.n 8007f7c <VL53L0X_get_pal_range_status+0x22c> + +08007fa2 <_I2CWrite>: +#endif + + +uint8_t _I2CBuffer[64]; + +int _I2CWrite(VL53L0X_DEV Dev, uint8_t *pdata, uint32_t count) { + 8007fa2: b500 push {lr} + 8007fa4: b083 sub sp, #12 + int status; + int i2c_time_out = I2C_TIME_OUT_BASE+ count* I2C_TIME_OUT_BYTE; + 8007fa6: f102 030a add.w r3, r2, #10 + + status = HAL_I2C_Master_Transmit(Dev->I2cHandle, Dev->I2cDevAddr, pdata, count, i2c_time_out); + 8007faa: 9300 str r3, [sp, #0] + 8007fac: b293 uxth r3, r2 + 8007fae: 460a mov r2, r1 + 8007fb0: f890 1160 ldrb.w r1, [r0, #352] ; 0x160 + 8007fb4: f8d0 015c ldr.w r0, [r0, #348] ; 0x15c + 8007fb8: f001 fd9e bl 8009af8 <HAL_I2C_Master_Transmit> + if (status) { + //VL6180x_ErrLog("I2C error 0x%x %d len", dev->I2cAddr, len); + //XNUCLEO6180XA1_I2C1_Init(&hi2c1); + } + return status; +} + 8007fbc: b003 add sp, #12 + 8007fbe: f85d fb04 ldr.w pc, [sp], #4 + +08007fc2 <_I2CRead>: + +int _I2CRead(VL53L0X_DEV Dev, uint8_t *pdata, uint32_t count) { + 8007fc2: b500 push {lr} + 8007fc4: b083 sub sp, #12 + int status; + int i2c_time_out = I2C_TIME_OUT_BASE+ count* I2C_TIME_OUT_BYTE; + 8007fc6: f102 030a add.w r3, r2, #10 + + status = HAL_I2C_Master_Receive(Dev->I2cHandle, Dev->I2cDevAddr|1, pdata, count, i2c_time_out); + 8007fca: f890 c160 ldrb.w ip, [r0, #352] ; 0x160 + 8007fce: 9300 str r3, [sp, #0] + 8007fd0: b293 uxth r3, r2 + 8007fd2: 460a mov r2, r1 + 8007fd4: f04c 0101 orr.w r1, ip, #1 + 8007fd8: f8d0 015c ldr.w r0, [r0, #348] ; 0x15c + 8007fdc: f001 fe4a bl 8009c74 <HAL_I2C_Master_Receive> + if (status) { + //VL6180x_ErrLog("I2C error 0x%x %d len", dev->I2cAddr, len); + //XNUCLEO6180XA1_I2C1_Init(&hi2c1); + } + return status; +} + 8007fe0: b003 add sp, #12 + 8007fe2: f85d fb04 ldr.w pc, [sp], #4 + ... + +08007fe8 <VL53L0X_WriteMulti>: + +// the ranging_sensor_comms.dll will take care of the page selection +VL53L0X_Error VL53L0X_WriteMulti(VL53L0X_DEV Dev, uint8_t index, uint8_t *pdata, uint32_t count) { + int status_int; + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + if (count > sizeof(_I2CBuffer) - 1) { + 8007fe8: 2b3f cmp r3, #63 ; 0x3f + 8007fea: d812 bhi.n 8008012 <VL53L0X_WriteMulti+0x2a> +VL53L0X_Error VL53L0X_WriteMulti(VL53L0X_DEV Dev, uint8_t index, uint8_t *pdata, uint32_t count) { + 8007fec: b570 push {r4, r5, r6, lr} + 8007fee: 4605 mov r5, r0 + 8007ff0: 468c mov ip, r1 + 8007ff2: 4611 mov r1, r2 + 8007ff4: 461c mov r4, r3 + return VL53L0X_ERROR_INVALID_PARAMS; + } + _I2CBuffer[0] = index; + 8007ff6: 4e0a ldr r6, [pc, #40] ; (8008020 <VL53L0X_WriteMulti+0x38>) + 8007ff8: 4630 mov r0, r6 + 8007ffa: f800 cb01 strb.w ip, [r0], #1 + memcpy(&_I2CBuffer[1], pdata, count); + 8007ffe: 461a mov r2, r3 + 8008000: f00f fb97 bl 8017732 <memcpy> + VL53L0X_GetI2cBus(); + status_int = _I2CWrite(Dev, _I2CBuffer, count + 1); + 8008004: 1c62 adds r2, r4, #1 + 8008006: 4631 mov r1, r6 + 8008008: 4628 mov r0, r5 + 800800a: f7ff ffca bl 8007fa2 <_I2CWrite> + if (status_int != 0) { + 800800e: b918 cbnz r0, 8008018 <VL53L0X_WriteMulti+0x30> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + } + VL53L0X_PutI2cBus(); + return Status; +} + 8008010: bd70 pop {r4, r5, r6, pc} + return VL53L0X_ERROR_INVALID_PARAMS; + 8008012: f06f 0003 mvn.w r0, #3 +} + 8008016: 4770 bx lr + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 8008018: f06f 0013 mvn.w r0, #19 + 800801c: e7f8 b.n 8008010 <VL53L0X_WriteMulti+0x28> + 800801e: bf00 nop + 8008020: 20000f0c .word 0x20000f0c + +08008024 <VL53L0X_ReadMulti>: + +// the ranging_sensor_comms.dll will take care of the page selection +VL53L0X_Error VL53L0X_ReadMulti(VL53L0X_DEV Dev, uint8_t index, uint8_t *pdata, uint32_t count) { + 8008024: b570 push {r4, r5, r6, lr} + 8008026: b082 sub sp, #8 + 8008028: 4604 mov r4, r0 + 800802a: 4615 mov r5, r2 + 800802c: 461e mov r6, r3 + 800802e: f88d 1007 strb.w r1, [sp, #7] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + int32_t status_int; + VL53L0X_GetI2cBus(); + status_int = _I2CWrite(Dev, &index, 1); + 8008032: 2201 movs r2, #1 + 8008034: f10d 0107 add.w r1, sp, #7 + 8008038: f7ff ffb3 bl 8007fa2 <_I2CWrite> + if (status_int != 0) { + 800803c: b938 cbnz r0, 800804e <VL53L0X_ReadMulti+0x2a> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + goto done; + } + status_int = _I2CRead(Dev, pdata, count); + 800803e: 4632 mov r2, r6 + 8008040: 4629 mov r1, r5 + 8008042: 4620 mov r0, r4 + 8008044: f7ff ffbd bl 8007fc2 <_I2CRead> + if (status_int != 0) { + 8008048: b920 cbnz r0, 8008054 <VL53L0X_ReadMulti+0x30> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + } +done: + VL53L0X_PutI2cBus(); + return Status; +} + 800804a: b002 add sp, #8 + 800804c: bd70 pop {r4, r5, r6, pc} + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 800804e: f06f 0013 mvn.w r0, #19 + 8008052: e7fa b.n 800804a <VL53L0X_ReadMulti+0x26> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 8008054: f06f 0013 mvn.w r0, #19 + 8008058: e7f7 b.n 800804a <VL53L0X_ReadMulti+0x26> + ... + +0800805c <VL53L0X_WrByte>: + +VL53L0X_Error VL53L0X_WrByte(VL53L0X_DEV Dev, uint8_t index, uint8_t data) { + 800805c: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + int32_t status_int; + + _I2CBuffer[0] = index; + 800805e: 4b06 ldr r3, [pc, #24] ; (8008078 <VL53L0X_WrByte+0x1c>) + 8008060: 7019 strb r1, [r3, #0] + _I2CBuffer[1] = data; + 8008062: 705a strb r2, [r3, #1] + + VL53L0X_GetI2cBus(); + status_int = _I2CWrite(Dev, _I2CBuffer, 2); + 8008064: 2202 movs r2, #2 + 8008066: 4619 mov r1, r3 + 8008068: f7ff ff9b bl 8007fa2 <_I2CWrite> + if (status_int != 0) { + 800806c: b900 cbnz r0, 8008070 <VL53L0X_WrByte+0x14> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + } + VL53L0X_PutI2cBus(); + return Status; +} + 800806e: bd08 pop {r3, pc} + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 8008070: f06f 0013 mvn.w r0, #19 + 8008074: e7fb b.n 800806e <VL53L0X_WrByte+0x12> + 8008076: bf00 nop + 8008078: 20000f0c .word 0x20000f0c + +0800807c <VL53L0X_WrWord>: + +VL53L0X_Error VL53L0X_WrWord(VL53L0X_DEV Dev, uint8_t index, uint16_t data) { + 800807c: b508 push {r3, lr} + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + int32_t status_int; + + _I2CBuffer[0] = index; + 800807e: 4b07 ldr r3, [pc, #28] ; (800809c <VL53L0X_WrWord+0x20>) + 8008080: 7019 strb r1, [r3, #0] + _I2CBuffer[1] = data >> 8; + 8008082: 0a11 lsrs r1, r2, #8 + 8008084: 7059 strb r1, [r3, #1] + _I2CBuffer[2] = data & 0x00FF; + 8008086: 709a strb r2, [r3, #2] + + VL53L0X_GetI2cBus(); + status_int = _I2CWrite(Dev, _I2CBuffer, 3); + 8008088: 2203 movs r2, #3 + 800808a: 4619 mov r1, r3 + 800808c: f7ff ff89 bl 8007fa2 <_I2CWrite> + if (status_int != 0) { + 8008090: b900 cbnz r0, 8008094 <VL53L0X_WrWord+0x18> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + } + VL53L0X_PutI2cBus(); + return Status; +} + 8008092: bd08 pop {r3, pc} + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 8008094: f06f 0013 mvn.w r0, #19 + 8008098: e7fb b.n 8008092 <VL53L0X_WrWord+0x16> + 800809a: bf00 nop + 800809c: 20000f0c .word 0x20000f0c + +080080a0 <VL53L0X_RdByte>: + Status = VL53L0X_WrByte(Dev, index, data); +done: + return Status; +} + +VL53L0X_Error VL53L0X_RdByte(VL53L0X_DEV Dev, uint8_t index, uint8_t *data) { + 80080a0: b530 push {r4, r5, lr} + 80080a2: b083 sub sp, #12 + 80080a4: 4604 mov r4, r0 + 80080a6: 4615 mov r5, r2 + 80080a8: f88d 1007 strb.w r1, [sp, #7] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + int32_t status_int; + + VL53L0X_GetI2cBus(); + status_int = _I2CWrite(Dev, &index, 1); + 80080ac: 2201 movs r2, #1 + 80080ae: f10d 0107 add.w r1, sp, #7 + 80080b2: f7ff ff76 bl 8007fa2 <_I2CWrite> + if( status_int ){ + 80080b6: b938 cbnz r0, 80080c8 <VL53L0X_RdByte+0x28> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + goto done; + } + status_int = _I2CRead(Dev, data, 1); + 80080b8: 2201 movs r2, #1 + 80080ba: 4629 mov r1, r5 + 80080bc: 4620 mov r0, r4 + 80080be: f7ff ff80 bl 8007fc2 <_I2CRead> + if (status_int != 0) { + 80080c2: b920 cbnz r0, 80080ce <VL53L0X_RdByte+0x2e> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + } +done: + VL53L0X_PutI2cBus(); + return Status; +} + 80080c4: b003 add sp, #12 + 80080c6: bd30 pop {r4, r5, pc} + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 80080c8: f06f 0013 mvn.w r0, #19 + 80080cc: e7fa b.n 80080c4 <VL53L0X_RdByte+0x24> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 80080ce: f06f 0013 mvn.w r0, #19 + 80080d2: e7f7 b.n 80080c4 <VL53L0X_RdByte+0x24> + +080080d4 <VL53L0X_UpdateByte>: +VL53L0X_Error VL53L0X_UpdateByte(VL53L0X_DEV Dev, uint8_t index, uint8_t AndData, uint8_t OrData) { + 80080d4: b5f0 push {r4, r5, r6, r7, lr} + 80080d6: b083 sub sp, #12 + 80080d8: 4606 mov r6, r0 + 80080da: 460f mov r7, r1 + 80080dc: 4615 mov r5, r2 + 80080de: 461c mov r4, r3 + Status = VL53L0X_RdByte(Dev, index, &data); + 80080e0: f10d 0207 add.w r2, sp, #7 + 80080e4: f7ff ffdc bl 80080a0 <VL53L0X_RdByte> + if (Status) { + 80080e8: b108 cbz r0, 80080ee <VL53L0X_UpdateByte+0x1a> +} + 80080ea: b003 add sp, #12 + 80080ec: bdf0 pop {r4, r5, r6, r7, pc} + data = (data & AndData) | OrData; + 80080ee: f89d 3007 ldrb.w r3, [sp, #7] + 80080f2: ea05 0203 and.w r2, r5, r3 + 80080f6: 4322 orrs r2, r4 + 80080f8: f88d 2007 strb.w r2, [sp, #7] + Status = VL53L0X_WrByte(Dev, index, data); + 80080fc: 4639 mov r1, r7 + 80080fe: 4630 mov r0, r6 + 8008100: f7ff ffac bl 800805c <VL53L0X_WrByte> + 8008104: e7f1 b.n 80080ea <VL53L0X_UpdateByte+0x16> + ... + +08008108 <VL53L0X_RdWord>: + +VL53L0X_Error VL53L0X_RdWord(VL53L0X_DEV Dev, uint8_t index, uint16_t *data) { + 8008108: b530 push {r4, r5, lr} + 800810a: b083 sub sp, #12 + 800810c: 4604 mov r4, r0 + 800810e: 4615 mov r5, r2 + 8008110: f88d 1007 strb.w r1, [sp, #7] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + int32_t status_int; + + VL53L0X_GetI2cBus(); + status_int = _I2CWrite(Dev, &index, 1); + 8008114: 2201 movs r2, #1 + 8008116: f10d 0107 add.w r1, sp, #7 + 800811a: f7ff ff42 bl 8007fa2 <_I2CWrite> + + if( status_int ){ + 800811e: b968 cbnz r0, 800813c <VL53L0X_RdWord+0x34> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + goto done; + } + status_int = _I2CRead(Dev, _I2CBuffer, 2); + 8008120: 2202 movs r2, #2 + 8008122: 4909 ldr r1, [pc, #36] ; (8008148 <VL53L0X_RdWord+0x40>) + 8008124: 4620 mov r0, r4 + 8008126: f7ff ff4c bl 8007fc2 <_I2CRead> + if (status_int != 0) { + 800812a: b950 cbnz r0, 8008142 <VL53L0X_RdWord+0x3a> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + goto done; + } + + *data = ((uint16_t)_I2CBuffer[0]<<8) + (uint16_t)_I2CBuffer[1]; + 800812c: 4b06 ldr r3, [pc, #24] ; (8008148 <VL53L0X_RdWord+0x40>) + 800812e: 781a ldrb r2, [r3, #0] + 8008130: 785b ldrb r3, [r3, #1] + 8008132: eb03 2302 add.w r3, r3, r2, lsl #8 + 8008136: 802b strh r3, [r5, #0] +done: + VL53L0X_PutI2cBus(); + return Status; +} + 8008138: b003 add sp, #12 + 800813a: bd30 pop {r4, r5, pc} + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 800813c: f06f 0013 mvn.w r0, #19 + 8008140: e7fa b.n 8008138 <VL53L0X_RdWord+0x30> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 8008142: f06f 0013 mvn.w r0, #19 + 8008146: e7f7 b.n 8008138 <VL53L0X_RdWord+0x30> + 8008148: 20000f0c .word 0x20000f0c + +0800814c <VL53L0X_RdDWord>: + +VL53L0X_Error VL53L0X_RdDWord(VL53L0X_DEV Dev, uint8_t index, uint32_t *data) { + 800814c: b530 push {r4, r5, lr} + 800814e: b083 sub sp, #12 + 8008150: 4604 mov r4, r0 + 8008152: 4615 mov r5, r2 + 8008154: f88d 1007 strb.w r1, [sp, #7] + VL53L0X_Error Status = VL53L0X_ERROR_NONE; + int32_t status_int; + + VL53L0X_GetI2cBus(); + status_int = _I2CWrite(Dev, &index, 1); + 8008158: 2201 movs r2, #1 + 800815a: f10d 0107 add.w r1, sp, #7 + 800815e: f7ff ff20 bl 8007fa2 <_I2CWrite> + if (status_int != 0) { + 8008162: b998 cbnz r0, 800818c <VL53L0X_RdDWord+0x40> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + goto done; + } + status_int = _I2CRead(Dev, _I2CBuffer, 4); + 8008164: 2204 movs r2, #4 + 8008166: 490c ldr r1, [pc, #48] ; (8008198 <VL53L0X_RdDWord+0x4c>) + 8008168: 4620 mov r0, r4 + 800816a: f7ff ff2a bl 8007fc2 <_I2CRead> + if (status_int != 0) { + 800816e: b980 cbnz r0, 8008192 <VL53L0X_RdDWord+0x46> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + goto done; + } + + *data = ((uint32_t)_I2CBuffer[0]<<24) + ((uint32_t)_I2CBuffer[1]<<16) + ((uint32_t)_I2CBuffer[2]<<8) + (uint32_t)_I2CBuffer[3]; + 8008170: 4909 ldr r1, [pc, #36] ; (8008198 <VL53L0X_RdDWord+0x4c>) + 8008172: 780a ldrb r2, [r1, #0] + 8008174: 784b ldrb r3, [r1, #1] + 8008176: 041b lsls r3, r3, #16 + 8008178: eb03 6302 add.w r3, r3, r2, lsl #24 + 800817c: 788a ldrb r2, [r1, #2] + 800817e: eb03 2302 add.w r3, r3, r2, lsl #8 + 8008182: 78ca ldrb r2, [r1, #3] + 8008184: 4413 add r3, r2 + 8008186: 602b str r3, [r5, #0] + +done: + VL53L0X_PutI2cBus(); + return Status; +} + 8008188: b003 add sp, #12 + 800818a: bd30 pop {r4, r5, pc} + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 800818c: f06f 0013 mvn.w r0, #19 + 8008190: e7fa b.n 8008188 <VL53L0X_RdDWord+0x3c> + Status = VL53L0X_ERROR_CONTROL_INTERFACE; + 8008192: f06f 0013 mvn.w r0, #19 + 8008196: e7f7 b.n 8008188 <VL53L0X_RdDWord+0x3c> + 8008198: 20000f0c .word 0x20000f0c + +0800819c <VL53L0X_PollingDelay>: + +VL53L0X_Error VL53L0X_PollingDelay(VL53L0X_DEV Dev) { + 800819c: b508 push {r3, lr} + VL53L0X_Error status = VL53L0X_ERROR_NONE; + + // do nothing + VL53L0X_OsDelay(); + 800819e: 2002 movs r0, #2 + 80081a0: f7fa fd86 bl 8002cb0 <HAL_Delay> + return status; +} + 80081a4: 2000 movs r0, #0 + 80081a6: bd08 pop {r3, pc} + +080081a8 <SystemInit>: + + /* FPU settings ------------------------------------------------------------*/ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << (10UL*2UL))|(3UL << (11UL*2UL))); /* set CP10 and CP11 Full Access */ +#endif +} + 80081a8: 4770 bx lr + ... + +080081ac <HAL_Init>: + * need to ensure that the SysTick time base is always set to 1 millisecond + * to have correct HAL operation. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + 80081ac: b510 push {r4, lr} +#endif /* PREFETCH_ENABLE */ + +#ifdef CORE_CM0PLUS +#else + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 80081ae: 2003 movs r0, #3 + 80081b0: f000 fd22 bl 8008bf8 <HAL_NVIC_SetPriorityGrouping> + + /* Update the SystemCoreClock global variable */ +#if defined(DUAL_CORE) && defined(CORE_CM0PLUS) + SystemCoreClock = HAL_RCC_GetHCLK2Freq(); +#else + SystemCoreClock = HAL_RCC_GetHCLKFreq(); + 80081b4: f002 f800 bl 800a1b8 <HAL_RCC_GetHCLKFreq> + 80081b8: 4b06 ldr r3, [pc, #24] ; (80081d4 <HAL_Init+0x28>) + 80081ba: 6018 str r0, [r3, #0] +#endif + + /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 80081bc: 200f movs r0, #15 + 80081be: f7fa fd69 bl 8002c94 <HAL_InitTick> + 80081c2: b110 cbz r0, 80081ca <HAL_Init+0x1e> + { + status = HAL_ERROR; + 80081c4: 2401 movs r4, #1 + HAL_MspInit(); + } + + /* Return function status */ + return status; +} + 80081c6: 4620 mov r0, r4 + 80081c8: bd10 pop {r4, pc} + 80081ca: 4604 mov r4, r0 + HAL_MspInit(); + 80081cc: f7fa fb86 bl 80028dc <HAL_MspInit> + 80081d0: e7f9 b.n 80081c6 <HAL_Init+0x1a> + 80081d2: bf00 nop + 80081d4: 20000828 .word 0x20000828 + +080081d8 <HAL_SuspendTick>: + * @retval None + */ +__weak void HAL_SuspendTick(void) +{ + /* Disable SysTick Interrupt */ + CLEAR_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); + 80081d8: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 + 80081dc: 6913 ldr r3, [r2, #16] + 80081de: f023 0302 bic.w r3, r3, #2 + 80081e2: 6113 str r3, [r2, #16] +} + 80081e4: 4770 bx lr + +080081e6 <HAL_ResumeTick>: + * @retval None + */ +__weak void HAL_ResumeTick(void) +{ + /* Enable SysTick Interrupt */ + SET_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); + 80081e6: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 + 80081ea: 6913 ldr r3, [r2, #16] + 80081ec: f043 0302 orr.w r3, r3, #2 + 80081f0: 6113 str r3, [r2, #16] +} + 80081f2: 4770 bx lr + +080081f4 <HAL_GetUIDw0>: + * @retval Device identifier + */ +uint32_t HAL_GetUIDw0(void) +{ + return (READ_REG(*((uint32_t *)UID_BASE))); +} + 80081f4: 4b01 ldr r3, [pc, #4] ; (80081fc <HAL_GetUIDw0+0x8>) + 80081f6: f8d3 0590 ldr.w r0, [r3, #1424] ; 0x590 + 80081fa: 4770 bx lr + 80081fc: 1fff7000 .word 0x1fff7000 + +08008200 <HAL_GetUIDw1>: + * @retval Device identifier + */ +uint32_t HAL_GetUIDw1(void) +{ + return (READ_REG(*((uint32_t *)(UID_BASE + 4U)))); +} + 8008200: 4b01 ldr r3, [pc, #4] ; (8008208 <HAL_GetUIDw1+0x8>) + 8008202: f8d3 0594 ldr.w r0, [r3, #1428] ; 0x594 + 8008206: 4770 bx lr + 8008208: 1fff7000 .word 0x1fff7000 + +0800820c <HAL_GetUIDw2>: + * @retval Device identifier + */ +uint32_t HAL_GetUIDw2(void) +{ + return (READ_REG(*((uint32_t *)(UID_BASE + 8U)))); +} + 800820c: 4b01 ldr r3, [pc, #4] ; (8008214 <HAL_GetUIDw2+0x8>) + 800820e: f8d3 0598 ldr.w r0, [r3, #1432] ; 0x598 + 8008212: 4770 bx lr + 8008214: 1fff7000 .word 0x1fff7000 + +08008218 <HAL_DBGMCU_EnableDBGSleepMode>: + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); + 8008218: 4a02 ldr r2, [pc, #8] ; (8008224 <HAL_DBGMCU_EnableDBGSleepMode+0xc>) + 800821a: 6853 ldr r3, [r2, #4] + 800821c: f043 0301 orr.w r3, r3, #1 + 8008220: 6053 str r3, [r2, #4] + * @retval None + */ +void HAL_DBGMCU_EnableDBGSleepMode(void) +{ + LL_DBGMCU_EnableDBGSleepMode(); +} + 8008222: 4770 bx lr + 8008224: e0042000 .word 0xe0042000 + +08008228 <HAL_DBGMCU_EnableDBGStopMode>: + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); + 8008228: 4a02 ldr r2, [pc, #8] ; (8008234 <HAL_DBGMCU_EnableDBGStopMode+0xc>) + 800822a: 6853 ldr r3, [r2, #4] + 800822c: f043 0302 orr.w r3, r3, #2 + 8008230: 6053 str r3, [r2, #4] + * @retval None + */ +void HAL_DBGMCU_EnableDBGStopMode(void) +{ + LL_DBGMCU_EnableDBGStopMode(); +} + 8008232: 4770 bx lr + 8008234: e0042000 .word 0xe0042000 + +08008238 <HAL_DBGMCU_EnableDBGStandbyMode>: + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); + 8008238: 4a02 ldr r2, [pc, #8] ; (8008244 <HAL_DBGMCU_EnableDBGStandbyMode+0xc>) + 800823a: 6853 ldr r3, [r2, #4] + 800823c: f043 0304 orr.w r3, r3, #4 + 8008240: 6053 str r3, [r2, #4] + * @retval None + */ +void HAL_DBGMCU_EnableDBGStandbyMode(void) +{ + LL_DBGMCU_EnableDBGStandbyMode(); +} + 8008242: 4770 bx lr + 8008244: e0042000 .word 0xe0042000 + +08008248 <HAL_ADC_Init>: + * of structure "ADC_InitTypeDef". + * @param hadc ADC handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc) +{ + 8008248: b530 push {r4, r5, lr} + 800824a: b083 sub sp, #12 + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + uint32_t tmpCFGR1 = 0UL; + uint32_t tmpCFGR2 = 0UL; + uint32_t tmp_adc_reg_is_conversion_on_going; + __IO uint32_t wait_loop_index = 0UL; + 800824c: 2300 movs r3, #0 + 800824e: 9301 str r3, [sp, #4] + + /* Check ADC handle */ + if (hadc == NULL) + 8008250: 2800 cmp r0, #0 + 8008252: f000 8106 beq.w 8008462 <HAL_ADC_Init+0x21a> + 8008256: 4604 mov r4, r0 + /* continuous mode is disabled. */ + assert_param(!((hadc->Init.DiscontinuousConvMode == ENABLE) && (hadc->Init.ContinuousConvMode == ENABLE))); + + /* Actions performed only if ADC is coming from state reset: */ + /* - Initialization of ADC MSP */ + if (hadc->State == HAL_ADC_STATE_RESET) + 8008258: 6d83 ldr r3, [r0, #88] ; 0x58 + 800825a: b1bb cbz r3, 800828c <HAL_ADC_Init+0x44> + + /* Initialize Lock */ + hadc->Lock = HAL_UNLOCKED; + } + + if (LL_ADC_IsInternalRegulatorEnabled(hadc->Instance) == 0UL) + 800825c: 6822 ldr r2, [r4, #0] + * @param ADCx ADC instance + * @retval 0: internal regulator is disabled, 1: internal regulator is enabled. + */ +__STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(ADC_TypeDef *ADCx) +{ + return ((READ_BIT(ADCx->CR, ADC_CR_ADVREGEN) == (ADC_CR_ADVREGEN)) ? 1UL : 0UL); + 800825e: 6893 ldr r3, [r2, #8] + 8008260: f013 5f80 tst.w r3, #268435456 ; 0x10000000 + 8008264: d11f bne.n 80082a6 <HAL_ADC_Init+0x5e> + MODIFY_REG(ADCx->CR, + 8008266: 6893 ldr r3, [r2, #8] + 8008268: f023 4310 bic.w r3, r3, #2415919104 ; 0x90000000 + 800826c: f023 0317 bic.w r3, r3, #23 + 8008270: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 8008274: 6093 str r3, [r2, #8] + /* Delay for ADC stabilization time */ + /* Wait loop initialization and execution */ + /* Note: Variable divided by 2 to compensate partially */ + /* CPU processing cycles, scaling in us split to not */ + /* exceed 32 bits register capacity and handle low frequency. */ + wait_loop_index = ((LL_ADC_DELAY_INTERNAL_REGUL_STAB_US / 10UL) * ((SystemCoreClock / (100000UL * 2UL)) + 1UL)); + 8008276: 4b7c ldr r3, [pc, #496] ; (8008468 <HAL_ADC_Init+0x220>) + 8008278: 681b ldr r3, [r3, #0] + 800827a: 099b lsrs r3, r3, #6 + 800827c: 4a7b ldr r2, [pc, #492] ; (800846c <HAL_ADC_Init+0x224>) + 800827e: fba2 2303 umull r2, r3, r2, r3 + 8008282: 099b lsrs r3, r3, #6 + 8008284: 3301 adds r3, #1 + 8008286: 005b lsls r3, r3, #1 + 8008288: 9301 str r3, [sp, #4] + while (wait_loop_index != 0UL) + 800828a: e009 b.n 80082a0 <HAL_ADC_Init+0x58> + HAL_ADC_MspInit(hadc); + 800828c: f7f9 fdea bl 8001e64 <HAL_ADC_MspInit> + ADC_CLEAR_ERRORCODE(hadc); + 8008290: 2300 movs r3, #0 + 8008292: 65e3 str r3, [r4, #92] ; 0x5c + hadc->Lock = HAL_UNLOCKED; + 8008294: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8008298: e7e0 b.n 800825c <HAL_ADC_Init+0x14> + { + wait_loop_index--; + 800829a: 9b01 ldr r3, [sp, #4] + 800829c: 3b01 subs r3, #1 + 800829e: 9301 str r3, [sp, #4] + while (wait_loop_index != 0UL) + 80082a0: 9b01 ldr r3, [sp, #4] + 80082a2: 2b00 cmp r3, #0 + 80082a4: d1f9 bne.n 800829a <HAL_ADC_Init+0x52> + } + + /* Verification that ADC voltage regulator is correctly enabled, whether */ + /* or not ADC is coming from state reset (if any potential problem of */ + /* clocking, voltage regulator would not be enabled). */ + if (LL_ADC_IsInternalRegulatorEnabled(hadc->Instance) == 0UL) + 80082a6: 6822 ldr r2, [r4, #0] + return ((READ_BIT(ADCx->CR, ADC_CR_ADVREGEN) == (ADC_CR_ADVREGEN)) ? 1UL : 0UL); + 80082a8: 6893 ldr r3, [r2, #8] + 80082aa: f013 5f80 tst.w r3, #268435456 ; 0x10000000 + 80082ae: f040 809a bne.w 80083e6 <HAL_ADC_Init+0x19e> + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 80082b2: 6da3 ldr r3, [r4, #88] ; 0x58 + 80082b4: f043 0310 orr.w r3, r3, #16 + 80082b8: 65a3 str r3, [r4, #88] ; 0x58 + + /* Set ADC error code to ADC peripheral internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 80082ba: 6de3 ldr r3, [r4, #92] ; 0x5c + 80082bc: f043 0301 orr.w r3, r3, #1 + 80082c0: 65e3 str r3, [r4, #92] ; 0x5c + + tmp_hal_status = HAL_ERROR; + 80082c2: 2001 movs r0, #1 + * @param ADCx ADC instance + * @retval 0: no conversion is on going on ADC group regular. + */ +__STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx) +{ + return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL); + 80082c4: 6893 ldr r3, [r2, #8] + 80082c6: f013 0304 ands.w r3, r3, #4 + 80082ca: d000 beq.n 80082ce <HAL_ADC_Init+0x86> + 80082cc: 2301 movs r3, #1 + /* correctly completed and if there is no conversion on going on regular */ + /* group (ADC may already be enabled at this point if HAL_ADC_Init() is */ + /* called to update a parameter on the fly). */ + tmp_adc_reg_is_conversion_on_going = LL_ADC_REG_IsConversionOngoing(hadc->Instance); + + if (((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) == 0UL) + 80082ce: 6da1 ldr r1, [r4, #88] ; 0x58 + 80082d0: f011 0f10 tst.w r1, #16 + 80082d4: f040 80be bne.w 8008454 <HAL_ADC_Init+0x20c> + && (tmp_adc_reg_is_conversion_on_going == 0UL) + 80082d8: 2b00 cmp r3, #0 + 80082da: f040 80bb bne.w 8008454 <HAL_ADC_Init+0x20c> + ) + { + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + 80082de: 6da3 ldr r3, [r4, #88] ; 0x58 + 80082e0: f423 7381 bic.w r3, r3, #258 ; 0x102 + 80082e4: f043 0302 orr.w r3, r3, #2 + 80082e8: 65a3 str r3, [r4, #88] ; 0x58 + return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); + 80082ea: 6893 ldr r3, [r2, #8] + 80082ec: f013 0f01 tst.w r3, #1 + 80082f0: d14f bne.n 8008392 <HAL_ADC_Init+0x14a> + /* without needing to reconfigure all other ADC groups/channels */ + /* parameters): */ + /* - internal measurement paths (VrefInt, ...) */ + /* (set into HAL_ADC_ConfigChannel() ) */ + + tmpCFGR1 |= (hadc->Init.Resolution | + 80082f2: 68a3 ldr r3, [r4, #8] + ADC_CFGR1_AUTOWAIT((uint32_t)hadc->Init.LowPowerAutoWait) | + 80082f4: 7e21 ldrb r1, [r4, #24] + tmpCFGR1 |= (hadc->Init.Resolution | + 80082f6: ea43 3381 orr.w r3, r3, r1, lsl #14 + ADC_CFGR1_AUTOOFF((uint32_t)hadc->Init.LowPowerAutoPowerOff) | + 80082fa: 7e61 ldrb r1, [r4, #25] + ADC_CFGR1_AUTOWAIT((uint32_t)hadc->Init.LowPowerAutoWait) | + 80082fc: ea43 33c1 orr.w r3, r3, r1, lsl #15 + ADC_CFGR1_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | + 8008300: 7ea5 ldrb r5, [r4, #26] + ADC_CFGR1_AUTOOFF((uint32_t)hadc->Init.LowPowerAutoPowerOff) | + 8008302: ea43 3345 orr.w r3, r3, r5, lsl #13 + ADC_CFGR1_OVERRUN(hadc->Init.Overrun) | + 8008306: 6b21 ldr r1, [r4, #48] ; 0x30 + 8008308: b109 cbz r1, 800830e <HAL_ADC_Init+0xc6> + 800830a: f44f 5180 mov.w r1, #4096 ; 0x1000 + ADC_CFGR1_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | + 800830e: 430b orrs r3, r1 + hadc->Init.DataAlign | + 8008310: 68e1 ldr r1, [r4, #12] + ADC_CFGR1_OVERRUN(hadc->Init.Overrun) | + 8008312: 430b orrs r3, r1 + ADC_SCAN_SEQ_MODE(hadc->Init.ScanConvMode) | + 8008314: 6921 ldr r1, [r4, #16] + 8008316: 2900 cmp r1, #0 + 8008318: db67 blt.n 80083ea <HAL_ADC_Init+0x1a2> + 800831a: f44f 1100 mov.w r1, #2097152 ; 0x200000 + hadc->Init.DataAlign | + 800831e: 430b orrs r3, r1 + ADC_CFGR1_DMACONTREQ((uint32_t)hadc->Init.DMAContinuousRequests)); + 8008320: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + ADC_SCAN_SEQ_MODE(hadc->Init.ScanConvMode) | + 8008324: ea43 0341 orr.w r3, r3, r1, lsl #1 + + /* Update setting of discontinuous mode only if continuous mode is disabled */ + if (hadc->Init.DiscontinuousConvMode == ENABLE) + 8008328: f894 1020 ldrb.w r1, [r4, #32] + 800832c: 2901 cmp r1, #1 + 800832e: d05f beq.n 80083f0 <HAL_ADC_Init+0x1a8> + /* Enable external trigger if trigger selection is different of software */ + /* start. */ + /* Note: This configuration keeps the hardware feature of parameter */ + /* ExternalTrigConvEdge "trigger edge none" equivalent to */ + /* software start. */ + if (hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) + 8008330: 6a61 ldr r1, [r4, #36] ; 0x24 + 8008332: b121 cbz r1, 800833e <HAL_ADC_Init+0xf6> + { + tmpCFGR1 |= ((hadc->Init.ExternalTrigConv & ADC_CFGR1_EXTSEL) | + 8008334: f401 71e0 and.w r1, r1, #448 ; 0x1c0 + hadc->Init.ExternalTrigConvEdge); + 8008338: 6aa5 ldr r5, [r4, #40] ; 0x28 + tmpCFGR1 |= ((hadc->Init.ExternalTrigConv & ADC_CFGR1_EXTSEL) | + 800833a: 4329 orrs r1, r5 + 800833c: 430b orrs r3, r1 + } + + /* Update ADC configuration register with previous settings */ + MODIFY_REG(hadc->Instance->CFGR1, + 800833e: 68d1 ldr r1, [r2, #12] + 8008340: f421 31fe bic.w r1, r1, #130048 ; 0x1fc00 + 8008344: f421 71ff bic.w r1, r1, #510 ; 0x1fe + 8008348: 4319 orrs r1, r3 + 800834a: 60d1 str r1, [r2, #12] + ADC_CFGR1_ALIGN | + ADC_CFGR1_SCANDIR | + ADC_CFGR1_DMACFG, + tmpCFGR1); + + tmpCFGR2 |= ((hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | + 800834c: 6863 ldr r3, [r4, #4] + 800834e: f003 4340 and.w r3, r3, #3221225472 ; 0xc0000000 + hadc->Init.TriggerFrequencyMode + 8008352: 6ce2 ldr r2, [r4, #76] ; 0x4c + tmpCFGR2 |= ((hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | + 8008354: 431a orrs r2, r3 + ); + + if (hadc->Init.OversamplingMode == ENABLE) + 8008356: f894 103c ldrb.w r1, [r4, #60] ; 0x3c + 800835a: 2901 cmp r1, #1 + 800835c: d055 beq.n 800840a <HAL_ADC_Init+0x1c2> + hadc->Init.Oversampling.RightBitShift | + hadc->Init.Oversampling.TriggeredMode + ); + } + + MODIFY_REG(hadc->Instance->CFGR2, + 800835e: 6821 ldr r1, [r4, #0] + 8008360: 690d ldr r5, [r1, #16] + 8008362: 4b43 ldr r3, [pc, #268] ; (8008470 <HAL_ADC_Init+0x228>) + 8008364: 402b ands r3, r5 + 8008366: 4313 orrs r3, r2 + 8008368: 610b str r3, [r1, #16] + ADC_CFGR2_TOVS, + tmpCFGR2); + + /* Configuration of ADC clock mode: asynchronous clock source */ + /* with selectable prescaler. */ + if (((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV1) && + 800836a: 6863 ldr r3, [r4, #4] + 800836c: f1b3 4f40 cmp.w r3, #3221225472 ; 0xc0000000 + 8008370: d00f beq.n 8008392 <HAL_ADC_Init+0x14a> + 8008372: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 8008376: d00c beq.n 8008392 <HAL_ADC_Init+0x14a> + ((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV2) && + 8008378: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 800837c: d009 beq.n 8008392 <HAL_ADC_Init+0x14a> + ((hadc->Init.ClockPrescaler) != ADC_CLOCK_SYNC_PCLK_DIV4)) + { + MODIFY_REG(ADC_COMMON->CCR, + 800837e: 493d ldr r1, [pc, #244] ; (8008474 <HAL_ADC_Init+0x22c>) + 8008380: f8d1 2708 ldr.w r2, [r1, #1800] ; 0x708 + 8008384: f422 1270 bic.w r2, r2, #3932160 ; 0x3c0000 + 8008388: f403 1370 and.w r3, r3, #3932160 ; 0x3c0000 + 800838c: 4313 orrs r3, r2 + 800838e: f8c1 3708 str.w r3, [r1, #1800] ; 0x708 + hadc->Init.ClockPrescaler & ADC_CCR_PRESC); + } + } + + /* Channel sampling time configuration */ + LL_ADC_SetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1, hadc->Init.SamplingTimeCommon1); + 8008392: 6821 ldr r1, [r4, #0] + 8008394: 6b63 ldr r3, [r4, #52] ; 0x34 + MODIFY_REG(ADCx->SMPR, + 8008396: 694a ldr r2, [r1, #20] + 8008398: f022 0207 bic.w r2, r2, #7 + 800839c: 4313 orrs r3, r2 + 800839e: 614b str r3, [r1, #20] + LL_ADC_SetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_2, hadc->Init.SamplingTimeCommon2); + 80083a0: 6822 ldr r2, [r4, #0] + 80083a2: 6ba1 ldr r1, [r4, #56] ; 0x38 + 80083a4: 6953 ldr r3, [r2, #20] + 80083a6: f023 0370 bic.w r3, r3, #112 ; 0x70 + 80083aa: ea43 1301 orr.w r3, r3, r1, lsl #4 + 80083ae: 6153 str r3, [r2, #20] + /* emulated by software for alignment over all STM32 devices. */ + /* - if scan mode is enabled, regular channels sequence length is set to */ + /* parameter "NbrOfConversion". */ + /* Channels must be configured into each rank using function */ + /* "HAL_ADC_ConfigChannel()". */ + if (hadc->Init.ScanConvMode == ADC_SCAN_DISABLE) + 80083b0: 6923 ldr r3, [r4, #16] + 80083b2: 2b00 cmp r3, #0 + 80083b4: d133 bne.n 800841e <HAL_ADC_Init+0x1d6> + { + /* Set sequencer scan length by clearing ranks above rank 1 */ + /* and do not modify rank 1 value. */ + SET_BIT(hadc->Instance->CHSELR, + 80083b6: 6822 ldr r2, [r4, #0] + 80083b8: 6a93 ldr r3, [r2, #40] ; 0x28 + 80083ba: f063 030f orn r3, r3, #15 + 80083be: 6293 str r3, [r2, #40] ; 0x28 + ); + } + + /* Check back that ADC registers have effectively been configured to */ + /* ensure of no potential problem of ADC core peripheral clocking. */ + if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) + 80083c0: 6823 ldr r3, [r4, #0] + return (uint32_t)((READ_BIT(ADCx->SMPR, ADC_SMPR_SMP1 << (SamplingTimeY & ADC_SAMPLING_TIME_SMP_SHIFT_MASK))) + 80083c2: 695b ldr r3, [r3, #20] + 80083c4: f003 0307 and.w r3, r3, #7 + == hadc->Init.SamplingTimeCommon1) + 80083c8: 6b62 ldr r2, [r4, #52] ; 0x34 + if(LL_ADC_GetSamplingTimeCommonChannels(hadc->Instance, LL_ADC_SAMPLINGTIME_COMMON_1) + 80083ca: 429a cmp r2, r3 + 80083cc: d039 beq.n 8008442 <HAL_ADC_Init+0x1fa> + HAL_ADC_STATE_READY); + } + else + { + /* Update ADC state machine to error */ + ADC_STATE_CLR_SET(hadc->State, + 80083ce: 6da3 ldr r3, [r4, #88] ; 0x58 + 80083d0: f023 0312 bic.w r3, r3, #18 + 80083d4: f043 0310 orr.w r3, r3, #16 + 80083d8: 65a3 str r3, [r4, #88] ; 0x58 + HAL_ADC_STATE_BUSY_INTERNAL, + HAL_ADC_STATE_ERROR_INTERNAL); + + /* Set ADC error code to ADC peripheral internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 80083da: 6de3 ldr r3, [r4, #92] ; 0x5c + 80083dc: f043 0301 orr.w r3, r3, #1 + 80083e0: 65e3 str r3, [r4, #92] ; 0x5c + + tmp_hal_status = HAL_ERROR; + 80083e2: 2001 movs r0, #1 + 80083e4: e03b b.n 800845e <HAL_ADC_Init+0x216> + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 80083e6: 2000 movs r0, #0 + 80083e8: e76c b.n 80082c4 <HAL_ADC_Init+0x7c> + ADC_SCAN_SEQ_MODE(hadc->Init.ScanConvMode) | + 80083ea: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 80083ee: e796 b.n 800831e <HAL_ADC_Init+0xd6> + if (hadc->Init.ContinuousConvMode == DISABLE) + 80083f0: b915 cbnz r5, 80083f8 <HAL_ADC_Init+0x1b0> + tmpCFGR1 |= ADC_CFGR1_DISCEN; + 80083f2: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 80083f6: e79b b.n 8008330 <HAL_ADC_Init+0xe8> + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 80083f8: 6da1 ldr r1, [r4, #88] ; 0x58 + 80083fa: f041 0120 orr.w r1, r1, #32 + 80083fe: 65a1 str r1, [r4, #88] ; 0x58 + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 8008400: 6de1 ldr r1, [r4, #92] ; 0x5c + 8008402: f041 0101 orr.w r1, r1, #1 + 8008406: 65e1 str r1, [r4, #92] ; 0x5c + 8008408: e792 b.n 8008330 <HAL_ADC_Init+0xe8> + hadc->Init.Oversampling.Ratio | + 800840a: 6c21 ldr r1, [r4, #64] ; 0x40 + (hadc->Init.ClockPrescaler & ADC_CFGR2_CKMODE) | + 800840c: 430b orrs r3, r1 + hadc->Init.Oversampling.RightBitShift | + 800840e: 6c61 ldr r1, [r4, #68] ; 0x44 + hadc->Init.Oversampling.Ratio | + 8008410: 430b orrs r3, r1 + hadc->Init.Oversampling.TriggeredMode + 8008412: 6ca1 ldr r1, [r4, #72] ; 0x48 + hadc->Init.Oversampling.RightBitShift | + 8008414: 430b orrs r3, r1 + tmpCFGR2 |= (ADC_CFGR2_OVSE | + 8008416: 431a orrs r2, r3 + 8008418: f042 0201 orr.w r2, r2, #1 + 800841c: e79f b.n 800835e <HAL_ADC_Init+0x116> + else if (hadc->Init.ScanConvMode == ADC_SCAN_ENABLE) + 800841e: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 + 8008422: d1cd bne.n 80083c0 <HAL_ADC_Init+0x178> + MODIFY_REG(hadc->Instance->CHSELR, + 8008424: 6821 ldr r1, [r4, #0] + 8008426: 6a8b ldr r3, [r1, #40] ; 0x28 + 8008428: 69e3 ldr r3, [r4, #28] + 800842a: 3b01 subs r3, #1 + 800842c: 009b lsls r3, r3, #2 + 800842e: f003 031c and.w r3, r3, #28 + 8008432: f06f 020f mvn.w r2, #15 + 8008436: fa02 f303 lsl.w r3, r2, r3 + 800843a: 6e22 ldr r2, [r4, #96] ; 0x60 + 800843c: 4313 orrs r3, r2 + 800843e: 628b str r3, [r1, #40] ; 0x28 + 8008440: e7be b.n 80083c0 <HAL_ADC_Init+0x178> + ADC_CLEAR_ERRORCODE(hadc); + 8008442: 2300 movs r3, #0 + 8008444: 65e3 str r3, [r4, #92] ; 0x5c + ADC_STATE_CLR_SET(hadc->State, + 8008446: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008448: f023 0303 bic.w r3, r3, #3 + 800844c: f043 0301 orr.w r3, r3, #1 + 8008450: 65a3 str r3, [r4, #88] ; 0x58 + 8008452: e004 b.n 800845e <HAL_ADC_Init+0x216> + + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 8008454: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008456: f043 0310 orr.w r3, r3, #16 + 800845a: 65a3 str r3, [r4, #88] ; 0x58 + + tmp_hal_status = HAL_ERROR; + 800845c: 2001 movs r0, #1 + } + + return tmp_hal_status; +} + 800845e: b003 add sp, #12 + 8008460: bd30 pop {r4, r5, pc} + return HAL_ERROR; + 8008462: 2001 movs r0, #1 + 8008464: e7fb b.n 800845e <HAL_ADC_Init+0x216> + 8008466: bf00 nop + 8008468: 20000828 .word 0x20000828 + 800846c: 053e2d63 .word 0x053e2d63 + 8008470: 1ffffc02 .word 0x1ffffc02 + 8008474: 40012000 .word 0x40012000 + +08008478 <HAL_ADC_PollForConversion>: + * @param hadc ADC handle + * @param Timeout Timeout value in millisecond. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout) +{ + 8008478: b5f8 push {r3, r4, r5, r6, r7, lr} + 800847a: 4604 mov r4, r0 + 800847c: 460d mov r5, r1 + + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + /* If end of conversion selected to end of sequence conversions */ + if (hadc->Init.EOCSelection == ADC_EOC_SEQ_CONV) + 800847e: 6946 ldr r6, [r0, #20] + 8008480: 2e08 cmp r6, #8 + 8008482: d005 beq.n 8008490 <HAL_ADC_PollForConversion+0x18> + /* each conversion: */ + /* Particular case is ADC configured in DMA mode and ADC sequencer with */ + /* several ranks and polling for end of each conversion. */ + /* For code simplicity sake, this particular case is generalized to */ + /* ADC configured in DMA mode and and polling for end of each conversion. */ + if ((hadc->Instance->CFGR1 & ADC_CFGR1_DMAEN) != 0UL) + 8008484: 6803 ldr r3, [r0, #0] + 8008486: 68db ldr r3, [r3, #12] + 8008488: f013 0f01 tst.w r3, #1 + 800848c: d11e bne.n 80084cc <HAL_ADC_PollForConversion+0x54> + + return HAL_ERROR; + } + else + { + tmp_flag_end = (ADC_FLAG_EOC); + 800848e: 2604 movs r6, #4 + } + } + + /* Get tick count */ + tickstart = HAL_GetTick(); + 8008490: f7fa fc02 bl 8002c98 <HAL_GetTick> + 8008494: 4607 mov r7, r0 + + /* Wait until End of unitary conversion or sequence conversions flag is raised */ + while ((hadc->Instance->ISR & tmp_flag_end) == 0UL) + 8008496: 6823 ldr r3, [r4, #0] + 8008498: 681a ldr r2, [r3, #0] + 800849a: 4232 tst r2, r6 + 800849c: d11c bne.n 80084d8 <HAL_ADC_PollForConversion+0x60> + { + /* Check if timeout is disabled (set to infinite wait) */ + if (Timeout != HAL_MAX_DELAY) + 800849e: f1b5 3fff cmp.w r5, #4294967295 + 80084a2: d0f8 beq.n 8008496 <HAL_ADC_PollForConversion+0x1e> + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0UL)) + 80084a4: f7fa fbf8 bl 8002c98 <HAL_GetTick> + 80084a8: 1bc3 subs r3, r0, r7 + 80084aa: 42ab cmp r3, r5 + 80084ac: d801 bhi.n 80084b2 <HAL_ADC_PollForConversion+0x3a> + 80084ae: 2d00 cmp r5, #0 + 80084b0: d1f1 bne.n 8008496 <HAL_ADC_PollForConversion+0x1e> + { + /* New check to avoid false timeout detection in case of preemption */ + if ((hadc->Instance->ISR & tmp_flag_end) == 0UL) + 80084b2: 6823 ldr r3, [r4, #0] + 80084b4: 681b ldr r3, [r3, #0] + 80084b6: 4233 tst r3, r6 + 80084b8: d1ed bne.n 8008496 <HAL_ADC_PollForConversion+0x1e> + { + /* Update ADC state machine to timeout */ + SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT); + 80084ba: 6da3 ldr r3, [r4, #88] ; 0x58 + 80084bc: f043 0304 orr.w r3, r3, #4 + 80084c0: 65a3 str r3, [r4, #88] ; 0x58 + + __HAL_UNLOCK(hadc); + 80084c2: 2300 movs r3, #0 + 80084c4: f884 3054 strb.w r3, [r4, #84] ; 0x54 + + return HAL_TIMEOUT; + 80084c8: 2003 movs r0, #3 + 80084ca: e028 b.n 800851e <HAL_ADC_PollForConversion+0xa6> + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 80084cc: 6d83 ldr r3, [r0, #88] ; 0x58 + 80084ce: f043 0320 orr.w r3, r3, #32 + 80084d2: 6583 str r3, [r0, #88] ; 0x58 + return HAL_ERROR; + 80084d4: 2001 movs r0, #1 + 80084d6: e022 b.n 800851e <HAL_ADC_PollForConversion+0xa6> + } + } + } + + /* Update ADC state machine */ + SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); + 80084d8: 6da2 ldr r2, [r4, #88] ; 0x58 + 80084da: f442 7200 orr.w r2, r2, #512 ; 0x200 + 80084de: 65a2 str r2, [r4, #88] ; 0x58 + return ((READ_BIT(ADCx->CFGR1, ADC_CFGR1_EXTEN) == (LL_ADC_REG_TRIG_SOFTWARE & ADC_CFGR1_EXTEN)) ? 1UL : 0UL); + 80084e0: 68da ldr r2, [r3, #12] + 80084e2: f412 6f40 tst.w r2, #3072 ; 0xc00 + 80084e6: d115 bne.n 8008514 <HAL_ADC_PollForConversion+0x9c> + + /* Determine whether any further conversion upcoming on group regular */ + /* by external trigger, continuous mode or scan sequence on going. */ + if ((LL_ADC_REG_IsTriggerSourceSWStart(hadc->Instance) != 0UL) + && (hadc->Init.ContinuousConvMode == DISABLE) + 80084e8: 7ea2 ldrb r2, [r4, #26] + 80084ea: b99a cbnz r2, 8008514 <HAL_ADC_PollForConversion+0x9c> + ) + { + /* Check whether end of sequence is reached */ + if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOS)) + 80084ec: 681a ldr r2, [r3, #0] + 80084ee: f012 0f08 tst.w r2, #8 + 80084f2: d00f beq.n 8008514 <HAL_ADC_PollForConversion+0x9c> + return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL); + 80084f4: 689a ldr r2, [r3, #8] + 80084f6: f012 0f04 tst.w r2, #4 + 80084fa: d111 bne.n 8008520 <HAL_ADC_PollForConversion+0xa8> + { + /* Disable ADC end of single conversion interrupt on group regular */ + /* Note: Overrun interrupt was enabled with EOC interrupt in */ + /* HAL_Start_IT(), but is not disabled here because can be used */ + /* by overrun IRQ process below. */ + __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC | ADC_IT_EOS); + 80084fc: 685a ldr r2, [r3, #4] + 80084fe: f022 020c bic.w r2, r2, #12 + 8008502: 605a str r2, [r3, #4] + + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + 8008504: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008506: f423 7380 bic.w r3, r3, #256 ; 0x100 + 800850a: f023 0301 bic.w r3, r3, #1 + 800850e: f043 0301 orr.w r3, r3, #1 + 8008512: 65a3 str r3, [r4, #88] ; 0x58 + } + + /* Clear end of conversion flag of regular group if low power feature */ + /* "LowPowerAutoWait " is disabled, to not interfere with this feature */ + /* until data register is read using function HAL_ADC_GetValue(). */ + if (hadc->Init.LowPowerAutoWait == DISABLE) + 8008514: 7e20 ldrb r0, [r4, #24] + 8008516: b960 cbnz r0, 8008532 <HAL_ADC_PollForConversion+0xba> + { + /* Clear regular group conversion flag */ + __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS)); + 8008518: 6823 ldr r3, [r4, #0] + 800851a: 220c movs r2, #12 + 800851c: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; +} + 800851e: bdf8 pop {r3, r4, r5, r6, r7, pc} + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 8008520: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008522: f043 0320 orr.w r3, r3, #32 + 8008526: 65a3 str r3, [r4, #88] ; 0x58 + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 8008528: 6de3 ldr r3, [r4, #92] ; 0x5c + 800852a: f043 0301 orr.w r3, r3, #1 + 800852e: 65e3 str r3, [r4, #92] ; 0x5c + 8008530: e7f0 b.n 8008514 <HAL_ADC_PollForConversion+0x9c> + return HAL_OK; + 8008532: 2000 movs r0, #0 + 8008534: e7f3 b.n 800851e <HAL_ADC_PollForConversion+0xa6> + +08008536 <HAL_ADC_GetValue>: + + /* Note: EOC flag is not cleared here by software because automatically */ + /* cleared by hardware when reading register DR. */ + + /* Return ADC converted value */ + return hadc->Instance->DR; + 8008536: 6803 ldr r3, [r0, #0] + 8008538: 6c18 ldr r0, [r3, #64] ; 0x40 +} + 800853a: 4770 bx lr + +0800853c <HAL_ADC_ConfigChannel>: + * @param hadc ADC handle + * @param pConfig Structure of ADC channel assigned to ADC group regular. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *pConfig) +{ + 800853c: b470 push {r4, r5, r6} + 800853e: b083 sub sp, #12 + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + uint32_t tmp_config_internal_channel; + __IO uint32_t wait_loop_index = 0UL; + 8008540: 2200 movs r2, #0 + 8008542: 9201 str r2, [sp, #4] + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + assert_param(IS_ADC_CHANNEL(pConfig->Channel)); + assert_param(IS_ADC_SAMPLING_TIME_COMMON(pConfig->SamplingTime)); + + if ((hadc->Init.ScanConvMode == ADC_SCAN_SEQ_FIXED) || + 8008544: 6904 ldr r4, [r0, #16] + assert_param(IS_ADC_REGULAR_NB_CONV(hadc->Init.NbrOfConversion)); + + assert_param(IS_ADC_REGULAR_RANK(pConfig->Rank)); + } + + __HAL_LOCK(hadc); + 8008546: f890 2054 ldrb.w r2, [r0, #84] ; 0x54 + 800854a: 2a01 cmp r2, #1 + 800854c: f000 8103 beq.w 8008756 <HAL_ADC_ConfigChannel+0x21a> + 8008550: 4603 mov r3, r0 + 8008552: 2201 movs r2, #1 + 8008554: f880 2054 strb.w r2, [r0, #84] ; 0x54 + /* Parameters that can be updated when ADC is disabled or enabled without */ + /* conversion on going on regular group: */ + /* - Channel number */ + /* - Channel sampling time */ + /* - Management of internal measurement channels: VrefInt/TempSensor/Vbat */ + if (LL_ADC_REG_IsConversionOngoing(hadc->Instance) == 0UL) + 8008558: 6802 ldr r2, [r0, #0] + 800855a: 6890 ldr r0, [r2, #8] + 800855c: f010 0f04 tst.w r0, #4 + 8008560: d00a beq.n 8008578 <HAL_ADC_ConfigChannel+0x3c> + /* channel could be done on neither of the channel configuration structure */ + /* parameters. */ + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 8008562: 6d9a ldr r2, [r3, #88] ; 0x58 + 8008564: f042 0220 orr.w r2, r2, #32 + 8008568: 659a str r2, [r3, #88] ; 0x58 + + tmp_hal_status = HAL_ERROR; + 800856a: 2001 movs r0, #1 + } + + __HAL_UNLOCK(hadc); + 800856c: 2200 movs r2, #0 + 800856e: f883 2054 strb.w r2, [r3, #84] ; 0x54 + + return tmp_hal_status; +} + 8008572: b003 add sp, #12 + 8008574: bc70 pop {r4, r5, r6} + 8008576: 4770 bx lr + if (pConfig->Rank != ADC_RANK_NONE) + 8008578: 6848 ldr r0, [r1, #4] + 800857a: 2802 cmp r0, #2 + 800857c: f000 809c beq.w 80086b8 <HAL_ADC_ConfigChannel+0x17c> + if ((hadc->Init.ScanConvMode == ADC_SCAN_SEQ_FIXED) || + 8008580: f1b4 4f00 cmp.w r4, #2147483648 ; 0x80000000 + 8008584: d027 beq.n 80085d6 <HAL_ADC_ConfigChannel+0x9a> + 8008586: 4d75 ldr r5, [pc, #468] ; (800875c <HAL_ADC_ConfigChannel+0x220>) + 8008588: 42ac cmp r4, r5 + 800858a: d024 beq.n 80085d6 <HAL_ADC_ConfigChannel+0x9a> + MODIFY_REG(hadc->ADCGroupRegularSequencerRanks, + 800858c: 6e1c ldr r4, [r3, #96] ; 0x60 + 800858e: f000 001f and.w r0, r0, #31 + 8008592: 250f movs r5, #15 + 8008594: 4085 lsls r5, r0 + 8008596: ea24 0505 bic.w r5, r4, r5 + 800859a: 680c ldr r4, [r1, #0] + 800859c: f3c4 0611 ubfx r6, r4, #0, #18 + 80085a0: 2e00 cmp r6, #0 + 80085a2: d131 bne.n 8008608 <HAL_ADC_ConfigChannel+0xcc> + 80085a4: f3c4 6484 ubfx r4, r4, #26, #5 + 80085a8: 4084 lsls r4, r0 + 80085aa: 432c orrs r4, r5 + 80085ac: 661c str r4, [r3, #96] ; 0x60 + if (((pConfig->Rank >> 2UL) + 1UL) <= hadc->Init.NbrOfConversion) + 80085ae: 684c ldr r4, [r1, #4] + 80085b0: 08a0 lsrs r0, r4, #2 + 80085b2: 3001 adds r0, #1 + 80085b4: 69dd ldr r5, [r3, #28] + 80085b6: 42a8 cmp r0, r5 + 80085b8: d813 bhi.n 80085e2 <HAL_ADC_ConfigChannel+0xa6> + LL_ADC_REG_SetSequencerRanks(hadc->Instance, pConfig->Rank, pConfig->Channel); + 80085ba: 680d ldr r5, [r1, #0] + MODIFY_REG(ADCx->CHSELR, + 80085bc: 6a90 ldr r0, [r2, #40] ; 0x28 + 80085be: f004 041f and.w r4, r4, #31 + 80085c2: 260f movs r6, #15 + 80085c4: 40a6 lsls r6, r4 + 80085c6: ea20 0006 bic.w r0, r0, r6 + 80085ca: f3c5 6583 ubfx r5, r5, #26, #4 + 80085ce: 40a5 lsls r5, r4 + 80085d0: 4328 orrs r0, r5 + 80085d2: 6290 str r0, [r2, #40] ; 0x28 +} + 80085d4: e005 b.n 80085e2 <HAL_ADC_ConfigChannel+0xa6> + LL_ADC_REG_SetSequencerChAdd(hadc->Instance, pConfig->Channel); + 80085d6: 680c ldr r4, [r1, #0] + SET_BIT(ADCx->CHSELR, (Channel & ADC_CHANNEL_ID_BITFIELD_MASK)); + 80085d8: 6a90 ldr r0, [r2, #40] ; 0x28 + 80085da: f3c4 0411 ubfx r4, r4, #0, #18 + 80085de: 4320 orrs r0, r4 + 80085e0: 6290 str r0, [r2, #40] ; 0x28 + LL_ADC_SetChannelSamplingTime(hadc->Instance, pConfig->Channel, pConfig->SamplingTime); + 80085e2: 681c ldr r4, [r3, #0] + 80085e4: 680d ldr r5, [r1, #0] + 80085e6: 688a ldr r2, [r1, #8] + MODIFY_REG(ADCx->SMPR, + 80085e8: 6960 ldr r0, [r4, #20] + 80085ea: ea20 2005 bic.w r0, r0, r5, lsl #8 + 80085ee: ea02 2205 and.w r2, r2, r5, lsl #8 + 80085f2: f022 427c bic.w r2, r2, #4227858432 ; 0xfc000000 + 80085f6: f022 02ff bic.w r2, r2, #255 ; 0xff + 80085fa: 4302 orrs r2, r0 + 80085fc: 6162 str r2, [r4, #20] + if (__LL_ADC_IS_CHANNEL_INTERNAL(pConfig->Channel)) + 80085fe: 680a ldr r2, [r1, #0] + 8008600: 2a00 cmp r2, #0 + 8008602: db09 blt.n 8008618 <HAL_ADC_ConfigChannel+0xdc> + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 8008604: 2000 movs r0, #0 + 8008606: e7b1 b.n 800856c <HAL_ADC_ConfigChannel+0x30> + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + 8008608: fa94 f4a4 rbit r4, r4 + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + 800860c: b114 cbz r4, 8008614 <HAL_ADC_ConfigChannel+0xd8> + { + return 32U; + } + return __builtin_clz(value); + 800860e: fab4 f484 clz r4, r4 + 8008612: e7c9 b.n 80085a8 <HAL_ADC_ConfigChannel+0x6c> + return 32U; + 8008614: 2420 movs r4, #32 + 8008616: e7c7 b.n 80085a8 <HAL_ADC_ConfigChannel+0x6c> + return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN)); + 8008618: 4951 ldr r1, [pc, #324] ; (8008760 <HAL_ADC_ConfigChannel+0x224>) + 800861a: f8d1 0708 ldr.w r0, [r1, #1800] ; 0x708 + 800861e: f000 71e0 and.w r1, r0, #29360128 ; 0x1c00000 + if ((pConfig->Channel == ADC_CHANNEL_TEMPSENSOR) && + 8008622: 4c50 ldr r4, [pc, #320] ; (8008764 <HAL_ADC_ConfigChannel+0x228>) + 8008624: 42a2 cmp r2, r4 + 8008626: d007 beq.n 8008638 <HAL_ADC_ConfigChannel+0xfc> + else if ((pConfig->Channel == ADC_CHANNEL_VBAT) + 8008628: 4c4f ldr r4, [pc, #316] ; (8008768 <HAL_ADC_ConfigChannel+0x22c>) + 800862a: 42a2 cmp r2, r4 + 800862c: d026 beq.n 800867c <HAL_ADC_ConfigChannel+0x140> + else if ((pConfig->Channel == ADC_CHANNEL_VREFINT) && + 800862e: 4c4f ldr r4, [pc, #316] ; (800876c <HAL_ADC_ConfigChannel+0x230>) + 8008630: 42a2 cmp r2, r4 + 8008632: d032 beq.n 800869a <HAL_ADC_ConfigChannel+0x15e> + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 8008634: 2000 movs r0, #0 + 8008636: e799 b.n 800856c <HAL_ADC_ConfigChannel+0x30> + if ((pConfig->Channel == ADC_CHANNEL_TEMPSENSOR) && + 8008638: f410 0f00 tst.w r0, #8388608 ; 0x800000 + 800863c: d1f4 bne.n 8008628 <HAL_ADC_ConfigChannel+0xec> + LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), + 800863e: f441 0100 orr.w r1, r1, #8388608 ; 0x800000 + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN, PathInternal); + 8008642: 4847 ldr r0, [pc, #284] ; (8008760 <HAL_ADC_ConfigChannel+0x224>) + 8008644: f8d0 2708 ldr.w r2, [r0, #1800] ; 0x708 + 8008648: f022 72e0 bic.w r2, r2, #29360128 ; 0x1c00000 + 800864c: 4311 orrs r1, r2 + 800864e: f8c0 1708 str.w r1, [r0, #1800] ; 0x708 + wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_STAB_US / 10UL) * ((SystemCoreClock / (100000UL * 2UL)) + 1UL)); + 8008652: 4a47 ldr r2, [pc, #284] ; (8008770 <HAL_ADC_ConfigChannel+0x234>) + 8008654: 6812 ldr r2, [r2, #0] + 8008656: 0992 lsrs r2, r2, #6 + 8008658: 4946 ldr r1, [pc, #280] ; (8008774 <HAL_ADC_ConfigChannel+0x238>) + 800865a: fba1 1202 umull r1, r2, r1, r2 + 800865e: 0992 lsrs r2, r2, #6 + 8008660: 3201 adds r2, #1 + 8008662: eb02 0242 add.w r2, r2, r2, lsl #1 + 8008666: 0092 lsls r2, r2, #2 + 8008668: 9201 str r2, [sp, #4] + while (wait_loop_index != 0UL) + 800866a: e002 b.n 8008672 <HAL_ADC_ConfigChannel+0x136> + wait_loop_index--; + 800866c: 9a01 ldr r2, [sp, #4] + 800866e: 3a01 subs r2, #1 + 8008670: 9201 str r2, [sp, #4] + while (wait_loop_index != 0UL) + 8008672: 9a01 ldr r2, [sp, #4] + 8008674: 2a00 cmp r2, #0 + 8008676: d1f9 bne.n 800866c <HAL_ADC_ConfigChannel+0x130> + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 8008678: 2000 movs r0, #0 + 800867a: e777 b.n 800856c <HAL_ADC_ConfigChannel+0x30> + && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VBAT) == 0UL)) + 800867c: f010 7f80 tst.w r0, #16777216 ; 0x1000000 + 8008680: d1d5 bne.n 800862e <HAL_ADC_ConfigChannel+0xf2> + LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), + 8008682: f041 7180 orr.w r1, r1, #16777216 ; 0x1000000 + 8008686: 4836 ldr r0, [pc, #216] ; (8008760 <HAL_ADC_ConfigChannel+0x224>) + 8008688: f8d0 2708 ldr.w r2, [r0, #1800] ; 0x708 + 800868c: f022 72e0 bic.w r2, r2, #29360128 ; 0x1c00000 + 8008690: 4311 orrs r1, r2 + 8008692: f8c0 1708 str.w r1, [r0, #1800] ; 0x708 + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 8008696: 2000 movs r0, #0 +} + 8008698: e768 b.n 800856c <HAL_ADC_ConfigChannel+0x30> + else if ((pConfig->Channel == ADC_CHANNEL_VREFINT) && + 800869a: f410 0f80 tst.w r0, #4194304 ; 0x400000 + 800869e: d158 bne.n 8008752 <HAL_ADC_ConfigChannel+0x216> + LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), + 80086a0: f441 0280 orr.w r2, r1, #4194304 ; 0x400000 + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN, PathInternal); + 80086a4: 482e ldr r0, [pc, #184] ; (8008760 <HAL_ADC_ConfigChannel+0x224>) + 80086a6: f8d0 1708 ldr.w r1, [r0, #1800] ; 0x708 + 80086aa: f021 71e0 bic.w r1, r1, #29360128 ; 0x1c00000 + 80086ae: 430a orrs r2, r1 + 80086b0: f8c0 2708 str.w r2, [r0, #1800] ; 0x708 + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 80086b4: 2000 movs r0, #0 +} + 80086b6: e759 b.n 800856c <HAL_ADC_ConfigChannel+0x30> + if ((hadc->Init.ScanConvMode == ADC_SCAN_SEQ_FIXED) || + 80086b8: f1b4 4f00 cmp.w r4, #2147483648 ; 0x80000000 + 80086bc: d002 beq.n 80086c4 <HAL_ADC_ConfigChannel+0x188> + 80086be: 4827 ldr r0, [pc, #156] ; (800875c <HAL_ADC_ConfigChannel+0x220>) + 80086c0: 4284 cmp r4, r0 + 80086c2: d106 bne.n 80086d2 <HAL_ADC_ConfigChannel+0x196> + LL_ADC_REG_SetSequencerChRem(hadc->Instance, pConfig->Channel); + 80086c4: 680c ldr r4, [r1, #0] + CLEAR_BIT(ADCx->CHSELR, (Channel & ADC_CHANNEL_ID_BITFIELD_MASK)); + 80086c6: 6a90 ldr r0, [r2, #40] ; 0x28 + 80086c8: f3c4 0411 ubfx r4, r4, #0, #18 + 80086cc: ea20 0004 bic.w r0, r0, r4 + 80086d0: 6290 str r0, [r2, #40] ; 0x28 + if (__LL_ADC_IS_CHANNEL_INTERNAL(pConfig->Channel)) + 80086d2: 680a ldr r2, [r1, #0] + 80086d4: 2a00 cmp r2, #0 + 80086d6: db01 blt.n 80086dc <HAL_ADC_ConfigChannel+0x1a0> + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 80086d8: 2000 movs r0, #0 + 80086da: e747 b.n 800856c <HAL_ADC_ConfigChannel+0x30> + return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN)); + 80086dc: 4920 ldr r1, [pc, #128] ; (8008760 <HAL_ADC_ConfigChannel+0x224>) + 80086de: f8d1 1708 ldr.w r1, [r1, #1800] ; 0x708 + if (pConfig->Channel == ADC_CHANNEL_TEMPSENSOR) + 80086e2: 4820 ldr r0, [pc, #128] ; (8008764 <HAL_ADC_ConfigChannel+0x228>) + 80086e4: 4282 cmp r2, r0 + 80086e6: d007 beq.n 80086f8 <HAL_ADC_ConfigChannel+0x1bc> + else if (pConfig->Channel == ADC_CHANNEL_VBAT) + 80086e8: 481f ldr r0, [pc, #124] ; (8008768 <HAL_ADC_ConfigChannel+0x22c>) + 80086ea: 4282 cmp r2, r0 + 80086ec: d013 beq.n 8008716 <HAL_ADC_ConfigChannel+0x1da> + else if (pConfig->Channel == ADC_CHANNEL_VREFINT) + 80086ee: 481f ldr r0, [pc, #124] ; (800876c <HAL_ADC_ConfigChannel+0x230>) + 80086f0: 4282 cmp r2, r0 + 80086f2: d01f beq.n 8008734 <HAL_ADC_ConfigChannel+0x1f8> + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 80086f4: 2000 movs r0, #0 + 80086f6: e739 b.n 800856c <HAL_ADC_ConfigChannel+0x30> + LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), + 80086f8: f001 71a0 and.w r1, r1, #20971520 ; 0x1400000 + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN, PathInternal); + 80086fc: f100 4010 add.w r0, r0, #2415919104 ; 0x90000000 + 8008700: f500 3088 add.w r0, r0, #69632 ; 0x11000 + 8008704: f8d0 2708 ldr.w r2, [r0, #1800] ; 0x708 + 8008708: f022 72e0 bic.w r2, r2, #29360128 ; 0x1c00000 + 800870c: 4311 orrs r1, r2 + 800870e: f8c0 1708 str.w r1, [r0, #1800] ; 0x708 + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 8008712: 2000 movs r0, #0 +} + 8008714: e72a b.n 800856c <HAL_ADC_ConfigChannel+0x30> + LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), + 8008716: f401 0240 and.w r2, r1, #12582912 ; 0xc00000 + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN, PathInternal); + 800871a: f100 4008 add.w r0, r0, #2281701376 ; 0x88000000 + 800871e: f500 4060 add.w r0, r0, #57344 ; 0xe000 + 8008722: f8d0 1708 ldr.w r1, [r0, #1800] ; 0x708 + 8008726: f021 71e0 bic.w r1, r1, #29360128 ; 0x1c00000 + 800872a: 430a orrs r2, r1 + 800872c: f8c0 2708 str.w r2, [r0, #1800] ; 0x708 + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 8008730: 2000 movs r0, #0 +} + 8008732: e71b b.n 800856c <HAL_ADC_ConfigChannel+0x30> + LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), + 8008734: f001 72c0 and.w r2, r1, #25165824 ; 0x1800000 + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN, PathInternal); + 8008738: f100 400c add.w r0, r0, #2348810240 ; 0x8c000000 + 800873c: f500 3080 add.w r0, r0, #65536 ; 0x10000 + 8008740: f8d0 1708 ldr.w r1, [r0, #1800] ; 0x708 + 8008744: f021 71e0 bic.w r1, r1, #29360128 ; 0x1c00000 + 8008748: 430a orrs r2, r1 + 800874a: f8c0 2708 str.w r2, [r0, #1800] ; 0x708 + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 800874e: 2000 movs r0, #0 +} + 8008750: e70c b.n 800856c <HAL_ADC_ConfigChannel+0x30> + 8008752: 2000 movs r0, #0 + 8008754: e70a b.n 800856c <HAL_ADC_ConfigChannel+0x30> + __HAL_LOCK(hadc); + 8008756: 2002 movs r0, #2 + 8008758: e70b b.n 8008572 <HAL_ADC_ConfigChannel+0x36> + 800875a: bf00 nop + 800875c: 80000004 .word 0x80000004 + 8008760: 40012000 .word 0x40012000 + 8008764: b0001000 .word 0xb0001000 + 8008768: b8004000 .word 0xb8004000 + 800876c: b4002000 .word 0xb4002000 + 8008770: 20000828 .word 0x20000828 + 8008774: 053e2d63 .word 0x053e2d63 + +08008778 <ADC_ConversionStop>: + * stopped to disable the ADC. + * @param hadc ADC handle + * @retval HAL status. + */ +HAL_StatusTypeDef ADC_ConversionStop(ADC_HandleTypeDef *hadc) +{ + 8008778: b538 push {r3, r4, r5, lr} + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + /* Verification if ADC is not already stopped on regular group to bypass */ + /* this function if not needed. */ + if (LL_ADC_REG_IsConversionOngoing(hadc->Instance) != 0UL) + 800877a: 6803 ldr r3, [r0, #0] + return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL); + 800877c: 689a ldr r2, [r3, #8] + 800877e: f012 0f04 tst.w r2, #4 + 8008782: d02a beq.n 80087da <ADC_ConversionStop+0x62> + 8008784: 4604 mov r4, r0 + return ((READ_BIT(ADCx->CR, ADC_CR_ADDIS) == (ADC_CR_ADDIS)) ? 1UL : 0UL); + 8008786: 689a ldr r2, [r3, #8] + 8008788: f012 0f02 tst.w r2, #2 + 800878c: d107 bne.n 800879e <ADC_ConversionStop+0x26> + MODIFY_REG(ADCx->CR, + 800878e: 689a ldr r2, [r3, #8] + 8008790: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 + 8008794: f022 0217 bic.w r2, r2, #23 + 8008798: f042 0210 orr.w r2, r2, #16 + 800879c: 609a str r2, [r3, #8] + LL_ADC_REG_StopConversion(hadc->Instance); + } + + /* Wait for conversion effectively stopped */ + /* Get tick count */ + tickstart = HAL_GetTick(); + 800879e: f7fa fa7b bl 8002c98 <HAL_GetTick> + 80087a2: 4605 mov r5, r0 + + while ((hadc->Instance->CR & ADC_CR_ADSTART) != 0UL) + 80087a4: 6823 ldr r3, [r4, #0] + 80087a6: 689b ldr r3, [r3, #8] + 80087a8: f013 0f04 tst.w r3, #4 + 80087ac: d013 beq.n 80087d6 <ADC_ConversionStop+0x5e> + { + if ((HAL_GetTick() - tickstart) > ADC_STOP_CONVERSION_TIMEOUT) + 80087ae: f7fa fa73 bl 8002c98 <HAL_GetTick> + 80087b2: 1b43 subs r3, r0, r5 + 80087b4: 2b02 cmp r3, #2 + 80087b6: d9f5 bls.n 80087a4 <ADC_ConversionStop+0x2c> + { + /* New check to avoid false timeout detection in case of preemption */ + if ((hadc->Instance->CR & ADC_CR_ADSTART) != 0UL) + 80087b8: 6823 ldr r3, [r4, #0] + 80087ba: 689b ldr r3, [r3, #8] + 80087bc: f013 0f04 tst.w r3, #4 + 80087c0: d0f0 beq.n 80087a4 <ADC_ConversionStop+0x2c> + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 80087c2: 6da3 ldr r3, [r4, #88] ; 0x58 + 80087c4: f043 0310 orr.w r3, r3, #16 + 80087c8: 65a3 str r3, [r4, #88] ; 0x58 + + /* Set ADC error code to ADC peripheral internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 80087ca: 6de3 ldr r3, [r4, #92] ; 0x5c + 80087cc: f043 0301 orr.w r3, r3, #1 + 80087d0: 65e3 str r3, [r4, #92] ; 0x5c + + return HAL_ERROR; + 80087d2: 2001 movs r0, #1 + 80087d4: e002 b.n 80087dc <ADC_ConversionStop+0x64> + } + + } + + /* Return HAL status */ + return HAL_OK; + 80087d6: 2000 movs r0, #0 + 80087d8: e000 b.n 80087dc <ADC_ConversionStop+0x64> + 80087da: 2000 movs r0, #0 +} + 80087dc: bd38 pop {r3, r4, r5, pc} + ... + +080087e0 <ADC_Enable>: + * and voltage regulator must be enabled (done into HAL_ADC_Init()). + * @param hadc ADC handle + * @retval HAL status. + */ +HAL_StatusTypeDef ADC_Enable(ADC_HandleTypeDef *hadc) +{ + 80087e0: b530 push {r4, r5, lr} + 80087e2: b083 sub sp, #12 + uint32_t tickstart; + __IO uint32_t wait_loop_index = 0UL; + 80087e4: 2300 movs r3, #0 + 80087e6: 9301 str r3, [sp, #4] + + /* ADC enable and wait for ADC ready (in case of ADC is disabled or */ + /* enabling phase not yet completed: flag ADC ready not yet set). */ + /* Timeout implemented to not be stuck if ADC cannot be enabled (possible */ + /* causes: ADC clock not running, ...). */ + if (LL_ADC_IsEnabled(hadc->Instance) == 0UL) + 80087e8: 6803 ldr r3, [r0, #0] + return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); + 80087ea: 689a ldr r2, [r3, #8] + 80087ec: f012 0f01 tst.w r2, #1 + 80087f0: d15b bne.n 80088aa <ADC_Enable+0xca> + 80087f2: 4604 mov r4, r0 + { + /* Check if conditions to enable the ADC are fulfilled */ + if ((hadc->Instance->CR & (ADC_CR_ADCAL | ADC_CR_ADSTP | ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN)) != 0UL) + 80087f4: 6899 ldr r1, [r3, #8] + 80087f6: 4a2e ldr r2, [pc, #184] ; (80088b0 <ADC_Enable+0xd0>) + 80087f8: 4211 tst r1, r2 + 80087fa: d117 bne.n 800882c <ADC_Enable+0x4c> + MODIFY_REG(ADCx->CR, + 80087fc: 689a ldr r2, [r3, #8] + 80087fe: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 + 8008802: f022 0217 bic.w r2, r2, #23 + 8008806: f042 0201 orr.w r2, r2, #1 + 800880a: 609a str r2, [r3, #8] + return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN)); + 800880c: 4b29 ldr r3, [pc, #164] ; (80088b4 <ADC_Enable+0xd4>) + 800880e: f8d3 3708 ldr.w r3, [r3, #1800] ; 0x708 + } + + /* Enable the ADC peripheral */ + LL_ADC_Enable(hadc->Instance); + + if ((LL_ADC_GetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance)) & LL_ADC_PATH_INTERNAL_TEMPSENSOR) + 8008812: f413 0f00 tst.w r3, #8388608 ; 0x800000 + 8008816: d019 beq.n 800884c <ADC_Enable+0x6c> + /* Wait loop initialization and execution */ + /* Note: Variable divided by 2 to compensate partially */ + /* CPU processing cycles, scaling in us split to not */ + /* exceed 32 bits register capacity and handle low frequency. */ + wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_BUFFER_STAB_US / 10UL) + * ((SystemCoreClock / (100000UL * 2UL)) + 1UL)); + 8008818: 4b27 ldr r3, [pc, #156] ; (80088b8 <ADC_Enable+0xd8>) + 800881a: 681b ldr r3, [r3, #0] + 800881c: 099b lsrs r3, r3, #6 + 800881e: 4a27 ldr r2, [pc, #156] ; (80088bc <ADC_Enable+0xdc>) + 8008820: fba2 2303 umull r2, r3, r2, r3 + 8008824: 099b lsrs r3, r3, #6 + 8008826: 3301 adds r3, #1 + wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_BUFFER_STAB_US / 10UL) + 8008828: 9301 str r3, [sp, #4] + while (wait_loop_index != 0UL) + 800882a: e00c b.n 8008846 <ADC_Enable+0x66> + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 800882c: 6d83 ldr r3, [r0, #88] ; 0x58 + 800882e: f043 0310 orr.w r3, r3, #16 + 8008832: 6583 str r3, [r0, #88] ; 0x58 + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 8008834: 6dc3 ldr r3, [r0, #92] ; 0x5c + 8008836: f043 0301 orr.w r3, r3, #1 + 800883a: 65c3 str r3, [r0, #92] ; 0x5c + return HAL_ERROR; + 800883c: 2001 movs r0, #1 + 800883e: e035 b.n 80088ac <ADC_Enable+0xcc> + { + wait_loop_index--; + 8008840: 9b01 ldr r3, [sp, #4] + 8008842: 3b01 subs r3, #1 + 8008844: 9301 str r3, [sp, #4] + while (wait_loop_index != 0UL) + 8008846: 9b01 ldr r3, [sp, #4] + 8008848: 2b00 cmp r3, #0 + 800884a: d1f9 bne.n 8008840 <ADC_Enable+0x60> + } + } + + /* If low power mode AutoPowerOff is enabled, power-on/off phases are */ + /* performed automatically by hardware and flag ADC ready is not set. */ + if (hadc->Init.LowPowerAutoPowerOff != ENABLE) + 800884c: 7e63 ldrb r3, [r4, #25] + 800884e: 2b01 cmp r3, #1 + 8008850: d101 bne.n 8008856 <ADC_Enable+0x76> + } + } + } + + /* Return HAL status */ + return HAL_OK; + 8008852: 2000 movs r0, #0 + 8008854: e02a b.n 80088ac <ADC_Enable+0xcc> + tickstart = HAL_GetTick(); + 8008856: f7fa fa1f bl 8002c98 <HAL_GetTick> + 800885a: 4605 mov r5, r0 + while (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_RDY) == 0UL) + 800885c: 6823 ldr r3, [r4, #0] + 800885e: 681a ldr r2, [r3, #0] + 8008860: f012 0f01 tst.w r2, #1 + 8008864: d11f bne.n 80088a6 <ADC_Enable+0xc6> + return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); + 8008866: 689a ldr r2, [r3, #8] + 8008868: f012 0f01 tst.w r2, #1 + 800886c: d107 bne.n 800887e <ADC_Enable+0x9e> + MODIFY_REG(ADCx->CR, + 800886e: 689a ldr r2, [r3, #8] + 8008870: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 + 8008874: f022 0217 bic.w r2, r2, #23 + 8008878: f042 0201 orr.w r2, r2, #1 + 800887c: 609a str r2, [r3, #8] + if ((HAL_GetTick() - tickstart) > ADC_ENABLE_TIMEOUT) + 800887e: f7fa fa0b bl 8002c98 <HAL_GetTick> + 8008882: 1b40 subs r0, r0, r5 + 8008884: 2802 cmp r0, #2 + 8008886: d9e9 bls.n 800885c <ADC_Enable+0x7c> + if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_RDY) == 0UL) + 8008888: 6823 ldr r3, [r4, #0] + 800888a: 681b ldr r3, [r3, #0] + 800888c: f013 0f01 tst.w r3, #1 + 8008890: d1e4 bne.n 800885c <ADC_Enable+0x7c> + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 8008892: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008894: f043 0310 orr.w r3, r3, #16 + 8008898: 65a3 str r3, [r4, #88] ; 0x58 + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 800889a: 6de3 ldr r3, [r4, #92] ; 0x5c + 800889c: f043 0301 orr.w r3, r3, #1 + 80088a0: 65e3 str r3, [r4, #92] ; 0x5c + return HAL_ERROR; + 80088a2: 2001 movs r0, #1 + 80088a4: e002 b.n 80088ac <ADC_Enable+0xcc> + return HAL_OK; + 80088a6: 2000 movs r0, #0 + 80088a8: e000 b.n 80088ac <ADC_Enable+0xcc> + 80088aa: 2000 movs r0, #0 +} + 80088ac: b003 add sp, #12 + 80088ae: bd30 pop {r4, r5, pc} + 80088b0: 80000017 .word 0x80000017 + 80088b4: 40012000 .word 0x40012000 + 80088b8: 20000828 .word 0x20000828 + 80088bc: 053e2d63 .word 0x053e2d63 + +080088c0 <HAL_ADC_Start>: + if (LL_ADC_REG_IsConversionOngoing(hadc->Instance) == 0UL) + 80088c0: 6803 ldr r3, [r0, #0] + return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL); + 80088c2: 689b ldr r3, [r3, #8] + 80088c4: f013 0f04 tst.w r3, #4 + 80088c8: d128 bne.n 800891c <HAL_ADC_Start+0x5c> +{ + 80088ca: b510 push {r4, lr} + 80088cc: 4604 mov r4, r0 + __HAL_LOCK(hadc); + 80088ce: f890 3054 ldrb.w r3, [r0, #84] ; 0x54 + 80088d2: 2b01 cmp r3, #1 + 80088d4: d024 beq.n 8008920 <HAL_ADC_Start+0x60> + 80088d6: 2301 movs r3, #1 + 80088d8: f880 3054 strb.w r3, [r0, #84] ; 0x54 + tmp_hal_status = ADC_Enable(hadc); + 80088dc: f7ff ff80 bl 80087e0 <ADC_Enable> + if (tmp_hal_status == HAL_OK) + 80088e0: b9c0 cbnz r0, 8008914 <HAL_ADC_Start+0x54> + ADC_STATE_CLR_SET(hadc->State, + 80088e2: 6da3 ldr r3, [r4, #88] ; 0x58 + 80088e4: f423 6370 bic.w r3, r3, #3840 ; 0xf00 + 80088e8: f023 0301 bic.w r3, r3, #1 + 80088ec: f443 7380 orr.w r3, r3, #256 ; 0x100 + 80088f0: 65a3 str r3, [r4, #88] ; 0x58 + ADC_CLEAR_ERRORCODE(hadc); + 80088f2: 2300 movs r3, #0 + 80088f4: 65e3 str r3, [r4, #92] ; 0x5c + __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_OVR)); + 80088f6: 6822 ldr r2, [r4, #0] + 80088f8: 211c movs r1, #28 + 80088fa: 6011 str r1, [r2, #0] + __HAL_UNLOCK(hadc); + 80088fc: f884 3054 strb.w r3, [r4, #84] ; 0x54 + LL_ADC_REG_StartConversion(hadc->Instance); + 8008900: 6822 ldr r2, [r4, #0] + MODIFY_REG(ADCx->CR, + 8008902: 6893 ldr r3, [r2, #8] + 8008904: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8008908: f023 0317 bic.w r3, r3, #23 + 800890c: f043 0304 orr.w r3, r3, #4 + 8008910: 6093 str r3, [r2, #8] +} + 8008912: bd10 pop {r4, pc} + __HAL_UNLOCK(hadc); + 8008914: 2300 movs r3, #0 + 8008916: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 800891a: e7fa b.n 8008912 <HAL_ADC_Start+0x52> + tmp_hal_status = HAL_BUSY; + 800891c: 2002 movs r0, #2 +} + 800891e: 4770 bx lr + __HAL_LOCK(hadc); + 8008920: 2002 movs r0, #2 + 8008922: e7f6 b.n 8008912 <HAL_ADC_Start+0x52> + +08008924 <ADC_Disable>: + * stopped. + * @param hadc ADC handle + * @retval HAL status. + */ +HAL_StatusTypeDef ADC_Disable(ADC_HandleTypeDef *hadc) +{ + 8008924: b538 push {r3, r4, r5, lr} + 8008926: 4604 mov r4, r0 + uint32_t tickstart; + const uint32_t tmp_adc_is_disable_on_going = LL_ADC_IsDisableOngoing(hadc->Instance); + 8008928: 6802 ldr r2, [r0, #0] + return ((READ_BIT(ADCx->CR, ADC_CR_ADDIS) == (ADC_CR_ADDIS)) ? 1UL : 0UL); + 800892a: 6893 ldr r3, [r2, #8] + 800892c: f013 0302 ands.w r3, r3, #2 + 8008930: d000 beq.n 8008934 <ADC_Disable+0x10> + 8008932: 2301 movs r3, #1 + return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); + 8008934: 6891 ldr r1, [r2, #8] + 8008936: f011 0f01 tst.w r1, #1 + 800893a: d039 beq.n 80089b0 <ADC_Disable+0x8c> + + /* Verification if ADC is not already disabled: */ + /* Note: forbidden to disable ADC (set bit ADC_CR_ADDIS) if ADC is already */ + /* disabled. */ + if ((LL_ADC_IsEnabled(hadc->Instance) != 0UL) + && (tmp_adc_is_disable_on_going == 0UL) + 800893c: 2b00 cmp r3, #0 + 800893e: d139 bne.n 80089b4 <ADC_Disable+0x90> + ) + { + /* Check if conditions to disable the ADC are fulfilled */ + if ((hadc->Instance->CR & (ADC_CR_ADSTART | ADC_CR_ADEN)) == ADC_CR_ADEN) + 8008940: 6893 ldr r3, [r2, #8] + 8008942: f003 0305 and.w r3, r3, #5 + 8008946: 2b01 cmp r3, #1 + 8008948: d009 beq.n 800895e <ADC_Disable+0x3a> + __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOSMP | ADC_FLAG_RDY)); + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 800894a: 6da3 ldr r3, [r4, #88] ; 0x58 + 800894c: f043 0310 orr.w r3, r3, #16 + 8008950: 65a3 str r3, [r4, #88] ; 0x58 + + /* Set ADC error code to ADC peripheral internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 8008952: 6de3 ldr r3, [r4, #92] ; 0x5c + 8008954: f043 0301 orr.w r3, r3, #1 + 8008958: 65e3 str r3, [r4, #92] ; 0x5c + + return HAL_ERROR; + 800895a: 2001 movs r0, #1 + 800895c: e029 b.n 80089b2 <ADC_Disable+0x8e> + MODIFY_REG(ADCx->CR, + 800895e: 6893 ldr r3, [r2, #8] + 8008960: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8008964: f023 0317 bic.w r3, r3, #23 + 8008968: f043 0302 orr.w r3, r3, #2 + 800896c: 6093 str r3, [r2, #8] + __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOSMP | ADC_FLAG_RDY)); + 800896e: 6823 ldr r3, [r4, #0] + 8008970: 2203 movs r2, #3 + 8008972: 601a str r2, [r3, #0] + } + + /* Wait for ADC effectively disabled */ + /* Get tick count */ + tickstart = HAL_GetTick(); + 8008974: f7fa f990 bl 8002c98 <HAL_GetTick> + 8008978: 4605 mov r5, r0 + + while ((hadc->Instance->CR & ADC_CR_ADEN) != 0UL) + 800897a: 6823 ldr r3, [r4, #0] + 800897c: 689b ldr r3, [r3, #8] + 800897e: f013 0f01 tst.w r3, #1 + 8008982: d013 beq.n 80089ac <ADC_Disable+0x88> + { + if ((HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT) + 8008984: f7fa f988 bl 8002c98 <HAL_GetTick> + 8008988: 1b40 subs r0, r0, r5 + 800898a: 2802 cmp r0, #2 + 800898c: d9f5 bls.n 800897a <ADC_Disable+0x56> + { + /* New check to avoid false timeout detection in case of preemption */ + if ((hadc->Instance->CR & ADC_CR_ADEN) != 0UL) + 800898e: 6823 ldr r3, [r4, #0] + 8008990: 689b ldr r3, [r3, #8] + 8008992: f013 0f01 tst.w r3, #1 + 8008996: d0f0 beq.n 800897a <ADC_Disable+0x56> + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 8008998: 6da3 ldr r3, [r4, #88] ; 0x58 + 800899a: f043 0310 orr.w r3, r3, #16 + 800899e: 65a3 str r3, [r4, #88] ; 0x58 + + /* Set ADC error code to ADC peripheral internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 80089a0: 6de3 ldr r3, [r4, #92] ; 0x5c + 80089a2: f043 0301 orr.w r3, r3, #1 + 80089a6: 65e3 str r3, [r4, #92] ; 0x5c + + return HAL_ERROR; + 80089a8: 2001 movs r0, #1 + 80089aa: e002 b.n 80089b2 <ADC_Disable+0x8e> + } + } + } + + /* Return HAL status */ + return HAL_OK; + 80089ac: 2000 movs r0, #0 + 80089ae: e000 b.n 80089b2 <ADC_Disable+0x8e> + 80089b0: 2000 movs r0, #0 +} + 80089b2: bd38 pop {r3, r4, r5, pc} + return HAL_OK; + 80089b4: 2000 movs r0, #0 + 80089b6: e7fc b.n 80089b2 <ADC_Disable+0x8e> + +080089b8 <HAL_ADC_DeInit>: +{ + 80089b8: b570 push {r4, r5, r6, lr} + if (hadc == NULL) + 80089ba: 2800 cmp r0, #0 + 80089bc: d056 beq.n 8008a6c <HAL_ADC_DeInit+0xb4> + 80089be: 4604 mov r4, r0 + SET_BIT(hadc->State, HAL_ADC_STATE_BUSY_INTERNAL); + 80089c0: 6d83 ldr r3, [r0, #88] ; 0x58 + 80089c2: f043 0302 orr.w r3, r3, #2 + 80089c6: 6583 str r3, [r0, #88] ; 0x58 + tmp_hal_status = ADC_ConversionStop(hadc); + 80089c8: f7ff fed6 bl 8008778 <ADC_ConversionStop> + if (tmp_hal_status == HAL_OK) + 80089cc: 4606 mov r6, r0 + 80089ce: 2800 cmp r0, #0 + 80089d0: d03d beq.n 8008a4e <HAL_ADC_DeInit+0x96> + __HAL_ADC_DISABLE_IT(hadc, (ADC_IT_AWD3 | ADC_IT_AWD2 | + 80089d2: 6822 ldr r2, [r4, #0] + 80089d4: 6853 ldr r3, [r2, #4] + 80089d6: f423 7367 bic.w r3, r3, #924 ; 0x39c + 80089da: f023 0303 bic.w r3, r3, #3 + 80089de: 6053 str r3, [r2, #4] + __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_AWD3 | ADC_FLAG_AWD2 | + 80089e0: 6823 ldr r3, [r4, #0] + 80089e2: f240 329f movw r2, #927 ; 0x39f + 80089e6: 601a str r2, [r3, #0] + hadc->Instance->CFGR1 &= ~(ADC_CFGR1_AWD1CH | ADC_CFGR1_AWD1EN | ADC_CFGR1_AWD1SGL | ADC_CFGR1_DISCEN | + 80089e8: 6822 ldr r2, [r4, #0] + 80089ea: 68d1 ldr r1, [r2, #12] + 80089ec: 4b20 ldr r3, [pc, #128] ; (8008a70 <HAL_ADC_DeInit+0xb8>) + 80089ee: 400b ands r3, r1 + 80089f0: 60d3 str r3, [r2, #12] + hadc->Instance->CFGR2 &= ~ADC_CFGR2_CKMODE; + 80089f2: 6822 ldr r2, [r4, #0] + 80089f4: 6913 ldr r3, [r2, #16] + 80089f6: f023 4340 bic.w r3, r3, #3221225472 ; 0xc0000000 + 80089fa: 6113 str r3, [r2, #16] + hadc->Instance->SMPR &= ~ADC_SMPR_SMP1; + 80089fc: 6822 ldr r2, [r4, #0] + 80089fe: 6953 ldr r3, [r2, #20] + 8008a00: f023 0307 bic.w r3, r3, #7 + 8008a04: 6153 str r3, [r2, #20] + hadc->Instance->AWD1TR &= ~(ADC_AWD1TR_HT1 | ADC_AWD1TR_LT1); + 8008a06: 6822 ldr r2, [r4, #0] + 8008a08: 6a13 ldr r3, [r2, #32] + 8008a0a: f003 23f0 and.w r3, r3, #4026593280 ; 0xf000f000 + 8008a0e: 6213 str r3, [r2, #32] + hadc->Instance->AWD2TR &= ~(ADC_AWD2TR_HT2 | ADC_AWD2TR_LT2); + 8008a10: 6822 ldr r2, [r4, #0] + 8008a12: 6a53 ldr r3, [r2, #36] ; 0x24 + 8008a14: f003 23f0 and.w r3, r3, #4026593280 ; 0xf000f000 + 8008a18: 6253 str r3, [r2, #36] ; 0x24 + hadc->Instance->AWD3TR &= ~(ADC_AWD3TR_HT3 | ADC_AWD3TR_LT3); + 8008a1a: 6822 ldr r2, [r4, #0] + 8008a1c: 6ad3 ldr r3, [r2, #44] ; 0x2c + 8008a1e: f003 23f0 and.w r3, r3, #4026593280 ; 0xf000f000 + 8008a22: 62d3 str r3, [r2, #44] ; 0x2c + hadc->Instance->CHSELR &= ~(ADC_CHSELR_SQ_ALL); + 8008a24: 6823 ldr r3, [r4, #0] + 8008a26: 6a9a ldr r2, [r3, #40] ; 0x28 + 8008a28: 2500 movs r5, #0 + 8008a2a: 629d str r5, [r3, #40] ; 0x28 + ADC_COMMON->CCR &= ~(ADC_CCR_VBATEN | ADC_CCR_TSEN | ADC_CCR_VREFEN | ADC_CCR_PRESC); + 8008a2c: 4a11 ldr r2, [pc, #68] ; (8008a74 <HAL_ADC_DeInit+0xbc>) + 8008a2e: f8d2 3708 ldr.w r3, [r2, #1800] ; 0x708 + 8008a32: f023 73fe bic.w r3, r3, #33292288 ; 0x1fc0000 + 8008a36: f8c2 3708 str.w r3, [r2, #1800] ; 0x708 + HAL_ADC_MspDeInit(hadc); + 8008a3a: 4620 mov r0, r4 + 8008a3c: f7f9 fa28 bl 8001e90 <HAL_ADC_MspDeInit> + hadc->ADCGroupRegularSequencerRanks = 0x00000000UL; + 8008a40: 6625 str r5, [r4, #96] ; 0x60 + ADC_CLEAR_ERRORCODE(hadc); + 8008a42: 65e5 str r5, [r4, #92] ; 0x5c + hadc->State = HAL_ADC_STATE_RESET; + 8008a44: 65a5 str r5, [r4, #88] ; 0x58 + __HAL_UNLOCK(hadc); + 8008a46: f884 5054 strb.w r5, [r4, #84] ; 0x54 +} + 8008a4a: 4630 mov r0, r6 + 8008a4c: bd70 pop {r4, r5, r6, pc} + tmp_hal_status = ADC_Disable(hadc); + 8008a4e: 4620 mov r0, r4 + 8008a50: f7ff ff68 bl 8008924 <ADC_Disable> + if (tmp_hal_status == HAL_OK) + 8008a54: 4606 mov r6, r0 + 8008a56: b908 cbnz r0, 8008a5c <HAL_ADC_DeInit+0xa4> + hadc->State = HAL_ADC_STATE_READY; + 8008a58: 2301 movs r3, #1 + 8008a5a: 65a3 str r3, [r4, #88] ; 0x58 + LL_ADC_DisableInternalRegulator(hadc->Instance); + 8008a5c: 6822 ldr r2, [r4, #0] + CLEAR_BIT(ADCx->CR, (ADC_CR_ADVREGEN | ADC_CR_BITS_PROPERTY_RS)); + 8008a5e: 6893 ldr r3, [r2, #8] + 8008a60: f023 4310 bic.w r3, r3, #2415919104 ; 0x90000000 + 8008a64: f023 0317 bic.w r3, r3, #23 + 8008a68: 6093 str r3, [r2, #8] +} + 8008a6a: e7b2 b.n 80089d2 <HAL_ADC_DeInit+0x1a> + return HAL_ERROR; + 8008a6c: 2601 movs r6, #1 + 8008a6e: e7ec b.n 8008a4a <HAL_ADC_DeInit+0x92> + 8008a70: 833e0200 .word 0x833e0200 + 8008a74: 40012000 .word 0x40012000 + +08008a78 <HAL_ADC_Stop>: + __HAL_LOCK(hadc); + 8008a78: f890 3054 ldrb.w r3, [r0, #84] ; 0x54 + 8008a7c: 2b01 cmp r3, #1 + 8008a7e: d019 beq.n 8008ab4 <HAL_ADC_Stop+0x3c> +{ + 8008a80: b510 push {r4, lr} + 8008a82: 4604 mov r4, r0 + __HAL_LOCK(hadc); + 8008a84: 2301 movs r3, #1 + 8008a86: f880 3054 strb.w r3, [r0, #84] ; 0x54 + tmp_hal_status = ADC_ConversionStop(hadc); + 8008a8a: f7ff fe75 bl 8008778 <ADC_ConversionStop> + if (tmp_hal_status == HAL_OK) + 8008a8e: b118 cbz r0, 8008a98 <HAL_ADC_Stop+0x20> + __HAL_UNLOCK(hadc); + 8008a90: 2300 movs r3, #0 + 8008a92: f884 3054 strb.w r3, [r4, #84] ; 0x54 +} + 8008a96: bd10 pop {r4, pc} + tmp_hal_status = ADC_Disable(hadc); + 8008a98: 4620 mov r0, r4 + 8008a9a: f7ff ff43 bl 8008924 <ADC_Disable> + if (tmp_hal_status == HAL_OK) + 8008a9e: 2800 cmp r0, #0 + 8008aa0: d1f6 bne.n 8008a90 <HAL_ADC_Stop+0x18> + ADC_STATE_CLR_SET(hadc->State, + 8008aa2: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008aa4: f423 7380 bic.w r3, r3, #256 ; 0x100 + 8008aa8: f023 0301 bic.w r3, r3, #1 + 8008aac: f043 0301 orr.w r3, r3, #1 + 8008ab0: 65a3 str r3, [r4, #88] ; 0x58 + 8008ab2: e7ed b.n 8008a90 <HAL_ADC_Stop+0x18> + __HAL_LOCK(hadc); + 8008ab4: 2002 movs r0, #2 +} + 8008ab6: 4770 bx lr + +08008ab8 <HAL_ADCEx_Calibration_Start>: + * HAL_ADC_GetValue() (value on 7 bits: from DR[6;0]). + * @param hadc ADC handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef *hadc) +{ + 8008ab8: b5f0 push {r4, r5, r6, r7, lr} + 8008aba: b083 sub sp, #12 + HAL_StatusTypeDef tmp_hal_status; + __IO uint32_t wait_loop_index = 0UL; + 8008abc: 2300 movs r3, #0 + 8008abe: 9301 str r3, [sp, #4] + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + __HAL_LOCK(hadc); + 8008ac0: f890 3054 ldrb.w r3, [r0, #84] ; 0x54 + 8008ac4: 2b01 cmp r3, #1 + 8008ac6: f000 8094 beq.w 8008bf2 <HAL_ADCEx_Calibration_Start+0x13a> + 8008aca: 4604 mov r4, r0 + 8008acc: 2301 movs r3, #1 + 8008ace: f880 3054 strb.w r3, [r0, #84] ; 0x54 + + /* Calibration prerequisite: ADC must be disabled. */ + + /* Disable the ADC (if not already disabled) */ + tmp_hal_status = ADC_Disable(hadc); + 8008ad2: f7ff ff27 bl 8008924 <ADC_Disable> + 8008ad6: 4605 mov r5, r0 + + /* Check if ADC is effectively disabled */ + if (LL_ADC_IsEnabled(hadc->Instance) == 0UL) + 8008ad8: 6823 ldr r3, [r4, #0] + return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); + 8008ada: 689a ldr r2, [r3, #8] + 8008adc: f012 0201 ands.w r2, r2, #1 + 8008ae0: d009 beq.n 8008af6 <HAL_ADCEx_Calibration_Start+0x3e> + HAL_ADC_STATE_BUSY_INTERNAL, + HAL_ADC_STATE_READY); + } + else + { + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 8008ae2: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008ae4: f043 0310 orr.w r3, r3, #16 + 8008ae8: 65a3 str r3, [r4, #88] ; 0x58 + + /* Note: No need to update variable "tmp_hal_status" here: already set */ + /* to state "HAL_ERROR" by function disabling the ADC. */ + } + + __HAL_UNLOCK(hadc); + 8008aea: 2300 movs r3, #0 + 8008aec: f884 3054 strb.w r3, [r4, #84] ; 0x54 + + return tmp_hal_status; +} + 8008af0: 4628 mov r0, r5 + 8008af2: b003 add sp, #12 + 8008af4: bdf0 pop {r4, r5, r6, r7, pc} + ADC_STATE_CLR_SET(hadc->State, + 8008af6: 6da1 ldr r1, [r4, #88] ; 0x58 + 8008af8: f421 7181 bic.w r1, r1, #258 ; 0x102 + 8008afc: f041 0102 orr.w r1, r1, #2 + 8008b00: 65a1 str r1, [r4, #88] ; 0x58 + backup_setting_cfgr1 = READ_BIT(hadc->Instance->CFGR1, ADC_CFGR1_DMAEN | ADC_CFGR1_DMACFG | ADC_CFGR1_AUTOFF); + 8008b02: 68de ldr r6, [r3, #12] + 8008b04: f426 46ff bic.w r6, r6, #32640 ; 0x7f80 + 8008b08: f026 067c bic.w r6, r6, #124 ; 0x7c + 8008b0c: 0436 lsls r6, r6, #16 + 8008b0e: 0c36 lsrs r6, r6, #16 + CLEAR_BIT(hadc->Instance->CFGR1, ADC_CFGR1_DMAEN | ADC_CFGR1_DMACFG | ADC_CFGR1_AUTOFF); + 8008b10: 68d9 ldr r1, [r3, #12] + 8008b12: f421 4100 bic.w r1, r1, #32768 ; 0x8000 + 8008b16: f021 0103 bic.w r1, r1, #3 + 8008b1a: 60d9 str r1, [r3, #12] + uint32_t calibration_factor_accumulated = 0; + 8008b1c: 4610 mov r0, r2 + for (calibration_index = 0UL; calibration_index < 8UL; calibration_index++) + 8008b1e: e005 b.n 8008b2c <HAL_ADCEx_Calibration_Start+0x74> + return (uint32_t)(READ_BIT(ADCx->CALFACT, ADC_CALFACT_CALFACT)); + 8008b20: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 + 8008b24: f003 037f and.w r3, r3, #127 ; 0x7f + calibration_factor_accumulated += LL_ADC_GetCalibrationFactor(hadc->Instance); + 8008b28: 4418 add r0, r3 + for (calibration_index = 0UL; calibration_index < 8UL; calibration_index++) + 8008b2a: 3201 adds r2, #1 + 8008b2c: 2a07 cmp r2, #7 + 8008b2e: d81e bhi.n 8008b6e <HAL_ADCEx_Calibration_Start+0xb6> + LL_ADC_StartCalibration(hadc->Instance); + 8008b30: 6821 ldr r1, [r4, #0] + MODIFY_REG(ADCx->CR, + 8008b32: 688b ldr r3, [r1, #8] + 8008b34: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8008b38: f023 0317 bic.w r3, r3, #23 + 8008b3c: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000 + 8008b40: 608b str r3, [r1, #8] + while (LL_ADC_IsCalibrationOnGoing(hadc->Instance) != 0UL) + 8008b42: 6823 ldr r3, [r4, #0] + return ((READ_BIT(ADCx->CR, ADC_CR_ADCAL) == (ADC_CR_ADCAL)) ? 1UL : 0UL); + 8008b44: 6899 ldr r1, [r3, #8] + 8008b46: 2900 cmp r1, #0 + 8008b48: daea bge.n 8008b20 <HAL_ADCEx_Calibration_Start+0x68> + wait_loop_index++; + 8008b4a: 9b01 ldr r3, [sp, #4] + 8008b4c: 3301 adds r3, #1 + 8008b4e: 9301 str r3, [sp, #4] + if (wait_loop_index >= ADC_CALIBRATION_TIMEOUT) + 8008b50: 9b01 ldr r3, [sp, #4] + 8008b52: f5b3 3f2e cmp.w r3, #178176 ; 0x2b800 + 8008b56: d3f4 bcc.n 8008b42 <HAL_ADCEx_Calibration_Start+0x8a> + ADC_STATE_CLR_SET(hadc->State, + 8008b58: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008b5a: f023 0312 bic.w r3, r3, #18 + 8008b5e: f043 0310 orr.w r3, r3, #16 + 8008b62: 65a3 str r3, [r4, #88] ; 0x58 + __HAL_UNLOCK(hadc); + 8008b64: 2300 movs r3, #0 + 8008b66: f884 3054 strb.w r3, [r4, #84] ; 0x54 + return HAL_ERROR; + 8008b6a: 2501 movs r5, #1 + 8008b6c: e7c0 b.n 8008af0 <HAL_ADCEx_Calibration_Start+0x38> + calibration_factor_accumulated /= calibration_index; + 8008b6e: fbb0 f0f2 udiv r0, r0, r2 + LL_ADC_Enable(hadc->Instance); + 8008b72: 6822 ldr r2, [r4, #0] + MODIFY_REG(ADCx->CR, + 8008b74: 6893 ldr r3, [r2, #8] + 8008b76: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8008b7a: f023 0317 bic.w r3, r3, #23 + 8008b7e: f043 0301 orr.w r3, r3, #1 + 8008b82: 6093 str r3, [r2, #8] + LL_ADC_SetCalibrationFactor(hadc->Instance, calibration_factor_accumulated); + 8008b84: 6822 ldr r2, [r4, #0] + MODIFY_REG(ADCx->CALFACT, + 8008b86: f8d2 30b4 ldr.w r3, [r2, #180] ; 0xb4 + 8008b8a: f023 037f bic.w r3, r3, #127 ; 0x7f + 8008b8e: 4318 orrs r0, r3 + 8008b90: f8c2 00b4 str.w r0, [r2, #180] ; 0xb4 + LL_ADC_Disable(hadc->Instance); + 8008b94: 6822 ldr r2, [r4, #0] + MODIFY_REG(ADCx->CR, + 8008b96: 6893 ldr r3, [r2, #8] + 8008b98: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8008b9c: f023 0317 bic.w r3, r3, #23 + 8008ba0: f043 0302 orr.w r3, r3, #2 + 8008ba4: 6093 str r3, [r2, #8] + tickstart = HAL_GetTick(); + 8008ba6: f7fa f877 bl 8002c98 <HAL_GetTick> + 8008baa: 4607 mov r7, r0 + while (LL_ADC_IsEnabled(hadc->Instance) != 0UL) + 8008bac: 6823 ldr r3, [r4, #0] + return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); + 8008bae: 689a ldr r2, [r3, #8] + 8008bb0: f012 0f01 tst.w r2, #1 + 8008bb4: d109 bne.n 8008bca <HAL_ADCEx_Calibration_Start+0x112> + SET_BIT(hadc->Instance->CFGR1, backup_setting_cfgr1); + 8008bb6: 68da ldr r2, [r3, #12] + 8008bb8: 4332 orrs r2, r6 + 8008bba: 60da str r2, [r3, #12] + ADC_STATE_CLR_SET(hadc->State, + 8008bbc: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008bbe: f023 0303 bic.w r3, r3, #3 + 8008bc2: f043 0301 orr.w r3, r3, #1 + 8008bc6: 65a3 str r3, [r4, #88] ; 0x58 + 8008bc8: e78f b.n 8008aea <HAL_ADCEx_Calibration_Start+0x32> + if ((HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT) + 8008bca: f7fa f865 bl 8002c98 <HAL_GetTick> + 8008bce: 1bc3 subs r3, r0, r7 + 8008bd0: 2b02 cmp r3, #2 + 8008bd2: d9eb bls.n 8008bac <HAL_ADCEx_Calibration_Start+0xf4> + if (LL_ADC_IsEnabled(hadc->Instance) != 0UL) + 8008bd4: 6823 ldr r3, [r4, #0] + 8008bd6: 689b ldr r3, [r3, #8] + 8008bd8: f013 0f01 tst.w r3, #1 + 8008bdc: d0e6 beq.n 8008bac <HAL_ADCEx_Calibration_Start+0xf4> + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 8008bde: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008be0: f043 0310 orr.w r3, r3, #16 + 8008be4: 65a3 str r3, [r4, #88] ; 0x58 + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 8008be6: 6de3 ldr r3, [r4, #92] ; 0x5c + 8008be8: f043 0301 orr.w r3, r3, #1 + 8008bec: 65e3 str r3, [r4, #92] ; 0x5c + return HAL_ERROR; + 8008bee: 2501 movs r5, #1 + 8008bf0: e77e b.n 8008af0 <HAL_ADCEx_Calibration_Start+0x38> + __HAL_LOCK(hadc); + 8008bf2: 2502 movs r5, #2 + 8008bf4: e77c b.n 8008af0 <HAL_ADCEx_Calibration_Start+0x38> + ... + +08008bf8 <HAL_NVIC_SetPriorityGrouping>: + reg_value = SCB->AIRCR; /* read old register configuration */ + 8008bf8: 4a07 ldr r2, [pc, #28] ; (8008c18 <HAL_NVIC_SetPriorityGrouping+0x20>) + 8008bfa: 68d3 ldr r3, [r2, #12] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8008bfc: f423 63e0 bic.w r3, r3, #1792 ; 0x700 + 8008c00: 041b lsls r3, r3, #16 + 8008c02: 0c1b lsrs r3, r3, #16 + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + 8008c04: 0200 lsls r0, r0, #8 + 8008c06: f400 60e0 and.w r0, r0, #1792 ; 0x700 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8008c0a: 4303 orrs r3, r0 + reg_value = (reg_value | + 8008c0c: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000 + 8008c10: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + SCB->AIRCR = reg_value; + 8008c14: 60d3 str r3, [r2, #12] + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); +} + 8008c16: 4770 bx lr + 8008c18: e000ed00 .word 0xe000ed00 + +08008c1c <HAL_NVIC_SetPriority>: + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8008c1c: b500 push {lr} + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8008c1e: 4b19 ldr r3, [pc, #100] ; (8008c84 <HAL_NVIC_SetPriority+0x68>) + 8008c20: 68db ldr r3, [r3, #12] + 8008c22: f3c3 2302 ubfx r3, r3, #8, #3 + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + 8008c26: f1c3 0c07 rsb ip, r3, #7 + 8008c2a: f1bc 0f04 cmp.w ip, #4 + 8008c2e: bf28 it cs + 8008c30: f04f 0c04 movcs.w ip, #4 + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8008c34: f103 0e04 add.w lr, r3, #4 + 8008c38: f1be 0f06 cmp.w lr, #6 + 8008c3c: d918 bls.n 8008c70 <HAL_NVIC_SetPriority+0x54> + 8008c3e: 3b03 subs r3, #3 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8008c40: f04f 3eff mov.w lr, #4294967295 + 8008c44: fa0e fc0c lsl.w ip, lr, ip + 8008c48: ea21 010c bic.w r1, r1, ip + 8008c4c: 4099 lsls r1, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 8008c4e: fa0e fe03 lsl.w lr, lr, r3 + 8008c52: ea22 020e bic.w r2, r2, lr + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8008c56: 430a orrs r2, r1 + if ((int32_t)(IRQn) >= 0) + 8008c58: 2800 cmp r0, #0 + 8008c5a: db0b blt.n 8008c74 <HAL_NVIC_SetPriority+0x58> + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8008c5c: 0112 lsls r2, r2, #4 + 8008c5e: b2d2 uxtb r2, r2 + 8008c60: f100 4060 add.w r0, r0, #3758096384 ; 0xe0000000 + 8008c64: f500 4061 add.w r0, r0, #57600 ; 0xe100 + 8008c68: f880 2300 strb.w r2, [r0, #768] ; 0x300 + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); +} + 8008c6c: f85d fb04 ldr.w pc, [sp], #4 + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + 8008c70: 2300 movs r3, #0 + 8008c72: e7e5 b.n 8008c40 <HAL_NVIC_SetPriority+0x24> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8008c74: f000 000f and.w r0, r0, #15 + 8008c78: 0112 lsls r2, r2, #4 + 8008c7a: b2d2 uxtb r2, r2 + 8008c7c: 4b02 ldr r3, [pc, #8] ; (8008c88 <HAL_NVIC_SetPriority+0x6c>) + 8008c7e: 541a strb r2, [r3, r0] + 8008c80: e7f4 b.n 8008c6c <HAL_NVIC_SetPriority+0x50> + 8008c82: bf00 nop + 8008c84: e000ed00 .word 0xe000ed00 + 8008c88: e000ed14 .word 0xe000ed14 + +08008c8c <HAL_NVIC_EnableIRQ>: + if ((int32_t)(IRQn) >= 0) + 8008c8c: 2800 cmp r0, #0 + 8008c8e: db07 blt.n 8008ca0 <HAL_NVIC_EnableIRQ+0x14> + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 8008c90: f000 021f and.w r2, r0, #31 + 8008c94: 0940 lsrs r0, r0, #5 + 8008c96: 2301 movs r3, #1 + 8008c98: 4093 lsls r3, r2 + 8008c9a: 4a02 ldr r2, [pc, #8] ; (8008ca4 <HAL_NVIC_EnableIRQ+0x18>) + 8008c9c: f842 3020 str.w r3, [r2, r0, lsl #2] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); +} + 8008ca0: 4770 bx lr + 8008ca2: bf00 nop + 8008ca4: e000e100 .word 0xe000e100 + +08008ca8 <HAL_NVIC_DisableIRQ>: + if ((int32_t)(IRQn) >= 0) + 8008ca8: 2800 cmp r0, #0 + 8008caa: db0c blt.n 8008cc6 <HAL_NVIC_DisableIRQ+0x1e> + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 8008cac: f000 021f and.w r2, r0, #31 + 8008cb0: 0940 lsrs r0, r0, #5 + 8008cb2: 2301 movs r3, #1 + 8008cb4: 4093 lsls r3, r2 + 8008cb6: 3020 adds r0, #32 + 8008cb8: 4a03 ldr r2, [pc, #12] ; (8008cc8 <HAL_NVIC_DisableIRQ+0x20>) + 8008cba: f842 3020 str.w r3, [r2, r0, lsl #2] + __ASM volatile ("dsb 0xF":::"memory"); + 8008cbe: f3bf 8f4f dsb sy + __ASM volatile ("isb 0xF":::"memory"); + 8008cc2: f3bf 8f6f isb sy + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Disable interrupt */ + NVIC_DisableIRQ(IRQn); +} + 8008cc6: 4770 bx lr + 8008cc8: e000e100 .word 0xe000e100 + +08008ccc <DMA_SetConfig>: + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + 8008ccc: b410 push {r4} + /* Clear the DMAMUX synchro overrun flag */ + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + 8008cce: 6cc4 ldr r4, [r0, #76] ; 0x4c + 8008cd0: f8d0 c050 ldr.w ip, [r0, #80] ; 0x50 + 8008cd4: f8c4 c004 str.w ip, [r4, #4] + + if (hdma->DMAmuxRequestGen != NULL) + 8008cd8: 6d44 ldr r4, [r0, #84] ; 0x54 + 8008cda: b124 cbz r4, 8008ce6 <DMA_SetConfig+0x1a> + { + /* Clear the DMAMUX request generator overrun flag */ + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + 8008cdc: 6d84 ldr r4, [r0, #88] ; 0x58 + 8008cde: f8d0 c05c ldr.w ip, [r0, #92] ; 0x5c + 8008ce2: f8c4 c004 str.w ip, [r4, #4] + } + + /* Clear all flags */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + 8008ce6: 6c44 ldr r4, [r0, #68] ; 0x44 + 8008ce8: f004 0c1c and.w ip, r4, #28 + 8008cec: 2401 movs r4, #1 + 8008cee: fa04 f40c lsl.w r4, r4, ip + 8008cf2: f8d0 c040 ldr.w ip, [r0, #64] ; 0x40 + 8008cf6: f8cc 4004 str.w r4, [ip, #4] + + /* Configure DMA Channel data length */ + hdma->Instance->CNDTR = DataLength; + 8008cfa: 6804 ldr r4, [r0, #0] + 8008cfc: 6063 str r3, [r4, #4] + + /* Memory to Peripheral */ + if ((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) + 8008cfe: 6883 ldr r3, [r0, #8] + 8008d00: 2b10 cmp r3, #16 + 8008d02: d005 beq.n 8008d10 <DMA_SetConfig+0x44> + } + /* Peripheral to Memory */ + else + { + /* Configure DMA Channel source address */ + hdma->Instance->CPAR = SrcAddress; + 8008d04: 6803 ldr r3, [r0, #0] + 8008d06: 6099 str r1, [r3, #8] + + /* Configure DMA Channel destination address */ + hdma->Instance->CMAR = DstAddress; + 8008d08: 6803 ldr r3, [r0, #0] + 8008d0a: 60da str r2, [r3, #12] + } +} + 8008d0c: bc10 pop {r4} + 8008d0e: 4770 bx lr + hdma->Instance->CPAR = DstAddress; + 8008d10: 6803 ldr r3, [r0, #0] + 8008d12: 609a str r2, [r3, #8] + hdma->Instance->CMAR = SrcAddress; + 8008d14: 6803 ldr r3, [r0, #0] + 8008d16: 60d9 str r1, [r3, #12] + 8008d18: e7f8 b.n 8008d0c <DMA_SetConfig+0x40> + ... + +08008d1c <DMA_CalcDMAMUXChannelBaseAndMask>: +static void DMA_CalcDMAMUXChannelBaseAndMask(DMA_HandleTypeDef *hdma) +{ + uint32_t channel_number; + + /* check if instance is not outside the DMA channel range */ + if ((uint32_t)hdma->Instance < (uint32_t)DMA2_Channel1) + 8008d1c: 6803 ldr r3, [r0, #0] + 8008d1e: 4a14 ldr r2, [pc, #80] ; (8008d70 <DMA_CalcDMAMUXChannelBaseAndMask+0x54>) + 8008d20: 4293 cmp r3, r2 + 8008d22: d816 bhi.n 8008d52 <DMA_CalcDMAMUXChannelBaseAndMask+0x36> + { + /* DMA1 */ + /* Associate a DMA Channel to a DMAMUX channel */ + hdma->DMAmuxChannel = (DMAMUX1_Channel0 + (hdma->ChannelIndex >> 2U)); + 8008d24: 6c42 ldr r2, [r0, #68] ; 0x44 + 8008d26: f022 0203 bic.w r2, r2, #3 + 8008d2a: f102 4280 add.w r2, r2, #1073741824 ; 0x40000000 + 8008d2e: f502 3202 add.w r2, r2, #133120 ; 0x20800 + 8008d32: 6482 str r2, [r0, #72] ; 0x48 + + /* Prepare channel_number used for DMAmuxChannelStatusMask computation */ + channel_number = (((uint32_t)hdma->Instance & 0xFFU) - 8U) / 20U; + 8008d34: b2db uxtb r3, r3 + 8008d36: 3b08 subs r3, #8 + 8008d38: 4a0e ldr r2, [pc, #56] ; (8008d74 <DMA_CalcDMAMUXChannelBaseAndMask+0x58>) + 8008d3a: fba2 2303 umull r2, r3, r2, r3 + 8008d3e: 091b lsrs r3, r3, #4 + /* Prepare channel_number used for DMAmuxChannelStatusMask computation */ + channel_number = (((((uint32_t)hdma->Instance & 0xFFU) - 8U) / 20U) + 7U); + } + + /* Initialize the field DMAmuxChannelStatus to DMAMUX1_ChannelStatus base */ + hdma->DMAmuxChannelStatus = DMAMUX1_ChannelStatus; + 8008d40: 4a0d ldr r2, [pc, #52] ; (8008d78 <DMA_CalcDMAMUXChannelBaseAndMask+0x5c>) + 8008d42: 64c2 str r2, [r0, #76] ; 0x4c + + /* Initialize the field DMAmuxChannelStatusMask with the corresponding index of the DMAMUX channel selected for the current ChannelIndex */ + hdma->DMAmuxChannelStatusMask = 1UL << (channel_number & 0x1FU); + 8008d44: f003 031f and.w r3, r3, #31 + 8008d48: 2201 movs r2, #1 + 8008d4a: fa02 f303 lsl.w r3, r2, r3 + 8008d4e: 6503 str r3, [r0, #80] ; 0x50 +} + 8008d50: 4770 bx lr + hdma->DMAmuxChannel = (DMAMUX1_Channel7 + (hdma->ChannelIndex >> 2U)); + 8008d52: 6c42 ldr r2, [r0, #68] ; 0x44 + 8008d54: f022 0103 bic.w r1, r2, #3 + 8008d58: 4a08 ldr r2, [pc, #32] ; (8008d7c <DMA_CalcDMAMUXChannelBaseAndMask+0x60>) + 8008d5a: 440a add r2, r1 + 8008d5c: 6482 str r2, [r0, #72] ; 0x48 + channel_number = (((((uint32_t)hdma->Instance & 0xFFU) - 8U) / 20U) + 7U); + 8008d5e: b2db uxtb r3, r3 + 8008d60: 3b08 subs r3, #8 + 8008d62: 4a04 ldr r2, [pc, #16] ; (8008d74 <DMA_CalcDMAMUXChannelBaseAndMask+0x58>) + 8008d64: fba2 2303 umull r2, r3, r2, r3 + 8008d68: 091b lsrs r3, r3, #4 + 8008d6a: 3307 adds r3, #7 + 8008d6c: e7e8 b.n 8008d40 <DMA_CalcDMAMUXChannelBaseAndMask+0x24> + 8008d6e: bf00 nop + 8008d70: 40020407 .word 0x40020407 + 8008d74: cccccccd .word 0xcccccccd + 8008d78: 40020880 .word 0x40020880 + 8008d7c: 4002081c .word 0x4002081c + +08008d80 <DMA_CalcDMAMUXRequestGenBaseAndMask>: + * @retval None + */ + +static void DMA_CalcDMAMUXRequestGenBaseAndMask(DMA_HandleTypeDef *hdma) +{ + uint32_t request = hdma->Init.Request & DMAMUX_CxCR_DMAREQ_ID; + 8008d80: 6843 ldr r3, [r0, #4] + 8008d82: f003 037f and.w r3, r3, #127 ; 0x7f + + /* DMA Channels are connected to DMAMUX1 request generator blocks*/ + hdma->DMAmuxRequestGen = (DMAMUX_RequestGen_TypeDef *)((uint32_t)(((uint32_t)DMAMUX1_RequestGenerator0) + ((request - 1U) * 4U))); + 8008d86: 4a07 ldr r2, [pc, #28] ; (8008da4 <DMA_CalcDMAMUXRequestGenBaseAndMask+0x24>) + 8008d88: 441a add r2, r3 + 8008d8a: 0092 lsls r2, r2, #2 + 8008d8c: 6542 str r2, [r0, #84] ; 0x54 + + hdma->DMAmuxRequestGenStatus = DMAMUX1_RequestGenStatus; + 8008d8e: 4a06 ldr r2, [pc, #24] ; (8008da8 <DMA_CalcDMAMUXRequestGenBaseAndMask+0x28>) + 8008d90: 6582 str r2, [r0, #88] ; 0x58 + + /* here "Request" is either DMA_REQUEST_GENERATOR0 to DMA_REQUEST_GENERATOR3, i.e. <= 4*/ + hdma->DMAmuxRequestGenStatusMask = 1UL << ((request - 1U) & 0x3U); + 8008d92: 3b01 subs r3, #1 + 8008d94: f003 0303 and.w r3, r3, #3 + 8008d98: 2201 movs r2, #1 + 8008d9a: fa02 f303 lsl.w r3, r2, r3 + 8008d9e: 65c3 str r3, [r0, #92] ; 0x5c +} + 8008da0: 4770 bx lr + 8008da2: bf00 nop + 8008da4: 1000823f .word 0x1000823f + 8008da8: 40020940 .word 0x40020940 + +08008dac <HAL_DMA_Init>: + if (hdma == NULL) + 8008dac: 2800 cmp r0, #0 + 8008dae: d060 beq.n 8008e72 <HAL_DMA_Init+0xc6> +{ + 8008db0: b510 push {r4, lr} + 8008db2: 4604 mov r4, r0 + if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) + 8008db4: 6802 ldr r2, [r0, #0] + 8008db6: 4b30 ldr r3, [pc, #192] ; (8008e78 <HAL_DMA_Init+0xcc>) + 8008db8: 429a cmp r2, r3 + 8008dba: d842 bhi.n 8008e42 <HAL_DMA_Init+0x96> + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; + 8008dbc: 4b2f ldr r3, [pc, #188] ; (8008e7c <HAL_DMA_Init+0xd0>) + 8008dbe: 4413 add r3, r2 + 8008dc0: 492f ldr r1, [pc, #188] ; (8008e80 <HAL_DMA_Init+0xd4>) + 8008dc2: fba1 1303 umull r1, r3, r1, r3 + 8008dc6: 091b lsrs r3, r3, #4 + 8008dc8: 009b lsls r3, r3, #2 + 8008dca: 6443 str r3, [r0, #68] ; 0x44 + hdma->DmaBaseAddress = DMA1; + 8008dcc: 4b2d ldr r3, [pc, #180] ; (8008e84 <HAL_DMA_Init+0xd8>) + 8008dce: 6403 str r3, [r0, #64] ; 0x40 + hdma->State = HAL_DMA_STATE_BUSY; + 8008dd0: 2302 movs r3, #2 + 8008dd2: f884 3025 strb.w r3, [r4, #37] ; 0x25 + CLEAR_BIT(hdma->Instance->CCR, (DMA_CCR_PL | DMA_CCR_MSIZE | DMA_CCR_PSIZE | \ + 8008dd6: 6813 ldr r3, [r2, #0] + 8008dd8: f423 43ff bic.w r3, r3, #32640 ; 0x7f80 + 8008ddc: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8008de0: 6013 str r3, [r2, #0] + SET_BIT(hdma->Instance->CCR, (hdma->Init.Direction | \ + 8008de2: 6821 ldr r1, [r4, #0] + 8008de4: 680a ldr r2, [r1, #0] + 8008de6: 68a3 ldr r3, [r4, #8] + 8008de8: 68e0 ldr r0, [r4, #12] + 8008dea: 4303 orrs r3, r0 + 8008dec: 6920 ldr r0, [r4, #16] + 8008dee: 4303 orrs r3, r0 + 8008df0: 6960 ldr r0, [r4, #20] + 8008df2: 4303 orrs r3, r0 + 8008df4: 69a0 ldr r0, [r4, #24] + 8008df6: 4303 orrs r3, r0 + 8008df8: 69e0 ldr r0, [r4, #28] + 8008dfa: 4303 orrs r3, r0 + 8008dfc: 6a20 ldr r0, [r4, #32] + 8008dfe: 4303 orrs r3, r0 + 8008e00: 4313 orrs r3, r2 + 8008e02: 600b str r3, [r1, #0] + DMA_CalcDMAMUXChannelBaseAndMask(hdma); + 8008e04: 4620 mov r0, r4 + 8008e06: f7ff ff89 bl 8008d1c <DMA_CalcDMAMUXChannelBaseAndMask> + if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) + 8008e0a: 68a3 ldr r3, [r4, #8] + 8008e0c: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 8008e10: d022 beq.n 8008e58 <HAL_DMA_Init+0xac> + hdma->DMAmuxChannel->CCR = (hdma->Init.Request & DMAMUX_CxCR_DMAREQ_ID); + 8008e12: 6863 ldr r3, [r4, #4] + 8008e14: 6ca2 ldr r2, [r4, #72] ; 0x48 + 8008e16: f003 037f and.w r3, r3, #127 ; 0x7f + 8008e1a: 6013 str r3, [r2, #0] + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + 8008e1c: 6ce3 ldr r3, [r4, #76] ; 0x4c + 8008e1e: 6d22 ldr r2, [r4, #80] ; 0x50 + 8008e20: 605a str r2, [r3, #4] + if (((hdma->Init.Request > 0UL) && (hdma->Init.Request <= DMA_REQUEST_GENERATOR3))) + 8008e22: 6863 ldr r3, [r4, #4] + 8008e24: 3b01 subs r3, #1 + 8008e26: 2b03 cmp r3, #3 + 8008e28: d919 bls.n 8008e5e <HAL_DMA_Init+0xb2> + hdma->DMAmuxRequestGen = NULL; + 8008e2a: 2300 movs r3, #0 + 8008e2c: 6563 str r3, [r4, #84] ; 0x54 + hdma->DMAmuxRequestGenStatus = NULL; + 8008e2e: 65a3 str r3, [r4, #88] ; 0x58 + hdma->DMAmuxRequestGenStatusMask = 0U; + 8008e30: 65e3 str r3, [r4, #92] ; 0x5c + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + 8008e32: 2000 movs r0, #0 + 8008e34: 63e0 str r0, [r4, #60] ; 0x3c + hdma->State = HAL_DMA_STATE_READY; + 8008e36: 2301 movs r3, #1 + 8008e38: f884 3025 strb.w r3, [r4, #37] ; 0x25 + __HAL_UNLOCK(hdma); + 8008e3c: f884 0024 strb.w r0, [r4, #36] ; 0x24 +} + 8008e40: bd10 pop {r4, pc} + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Channel2 - (uint32_t)DMA2_Channel1)) << 2U; + 8008e42: 4b11 ldr r3, [pc, #68] ; (8008e88 <HAL_DMA_Init+0xdc>) + 8008e44: 4413 add r3, r2 + 8008e46: 490e ldr r1, [pc, #56] ; (8008e80 <HAL_DMA_Init+0xd4>) + 8008e48: fba1 1303 umull r1, r3, r1, r3 + 8008e4c: 091b lsrs r3, r3, #4 + 8008e4e: 009b lsls r3, r3, #2 + 8008e50: 6443 str r3, [r0, #68] ; 0x44 + hdma->DmaBaseAddress = DMA2; + 8008e52: 4b0e ldr r3, [pc, #56] ; (8008e8c <HAL_DMA_Init+0xe0>) + 8008e54: 6403 str r3, [r0, #64] ; 0x40 + 8008e56: e7bb b.n 8008dd0 <HAL_DMA_Init+0x24> + hdma->Init.Request = DMA_REQUEST_MEM2MEM; + 8008e58: 2300 movs r3, #0 + 8008e5a: 6063 str r3, [r4, #4] + 8008e5c: e7d9 b.n 8008e12 <HAL_DMA_Init+0x66> + DMA_CalcDMAMUXRequestGenBaseAndMask(hdma); + 8008e5e: 4620 mov r0, r4 + 8008e60: f7ff ff8e bl 8008d80 <DMA_CalcDMAMUXRequestGenBaseAndMask> + hdma->DMAmuxRequestGen->RGCR = 0U; + 8008e64: 6d63 ldr r3, [r4, #84] ; 0x54 + 8008e66: 2200 movs r2, #0 + 8008e68: 601a str r2, [r3, #0] + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + 8008e6a: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008e6c: 6de2 ldr r2, [r4, #92] ; 0x5c + 8008e6e: 605a str r2, [r3, #4] + 8008e70: e7df b.n 8008e32 <HAL_DMA_Init+0x86> + return HAL_ERROR; + 8008e72: 2001 movs r0, #1 +} + 8008e74: 4770 bx lr + 8008e76: bf00 nop + 8008e78: 40020407 .word 0x40020407 + 8008e7c: bffdfff8 .word 0xbffdfff8 + 8008e80: cccccccd .word 0xcccccccd + 8008e84: 40020000 .word 0x40020000 + 8008e88: bffdfbf8 .word 0xbffdfbf8 + 8008e8c: 40020400 .word 0x40020400 + +08008e90 <HAL_DMA_DeInit>: + if (NULL == hdma) + 8008e90: 2800 cmp r0, #0 + 8008e92: d04b beq.n 8008f2c <HAL_DMA_DeInit+0x9c> +{ + 8008e94: b538 push {r3, r4, r5, lr} + 8008e96: 4604 mov r4, r0 + __HAL_DMA_DISABLE(hdma); + 8008e98: 6802 ldr r2, [r0, #0] + 8008e9a: 6813 ldr r3, [r2, #0] + 8008e9c: f023 0301 bic.w r3, r3, #1 + 8008ea0: 6013 str r3, [r2, #0] + if ((uint32_t)(hdma->Instance) < (uint32_t)(DMA2_Channel1)) + 8008ea2: 6802 ldr r2, [r0, #0] + 8008ea4: 4b22 ldr r3, [pc, #136] ; (8008f30 <HAL_DMA_DeInit+0xa0>) + 8008ea6: 429a cmp r2, r3 + 8008ea8: d82c bhi.n 8008f04 <HAL_DMA_DeInit+0x74> + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2U; + 8008eaa: 4b22 ldr r3, [pc, #136] ; (8008f34 <HAL_DMA_DeInit+0xa4>) + 8008eac: 4413 add r3, r2 + 8008eae: 4922 ldr r1, [pc, #136] ; (8008f38 <HAL_DMA_DeInit+0xa8>) + 8008eb0: fba1 1303 umull r1, r3, r1, r3 + 8008eb4: 091b lsrs r3, r3, #4 + 8008eb6: 009b lsls r3, r3, #2 + 8008eb8: 6443 str r3, [r0, #68] ; 0x44 + hdma->DmaBaseAddress = DMA1; + 8008eba: 4b20 ldr r3, [pc, #128] ; (8008f3c <HAL_DMA_DeInit+0xac>) + 8008ebc: 6403 str r3, [r0, #64] ; 0x40 + hdma->Instance->CCR = 0U; + 8008ebe: 2500 movs r5, #0 + 8008ec0: 6015 str r5, [r2, #0] + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + 8008ec2: 6c63 ldr r3, [r4, #68] ; 0x44 + 8008ec4: f003 021c and.w r2, r3, #28 + 8008ec8: 6c21 ldr r1, [r4, #64] ; 0x40 + 8008eca: 2301 movs r3, #1 + 8008ecc: 4093 lsls r3, r2 + 8008ece: 604b str r3, [r1, #4] + DMA_CalcDMAMUXChannelBaseAndMask(hdma); + 8008ed0: 4620 mov r0, r4 + 8008ed2: f7ff ff23 bl 8008d1c <DMA_CalcDMAMUXChannelBaseAndMask> + hdma->DMAmuxChannel->CCR = 0U; + 8008ed6: 6ca3 ldr r3, [r4, #72] ; 0x48 + 8008ed8: 601d str r5, [r3, #0] + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + 8008eda: 6ce3 ldr r3, [r4, #76] ; 0x4c + 8008edc: 6d22 ldr r2, [r4, #80] ; 0x50 + 8008ede: 605a str r2, [r3, #4] + if (((hdma->Init.Request > 0UL) && (hdma->Init.Request <= DMA_REQUEST_GENERATOR3))) + 8008ee0: 6863 ldr r3, [r4, #4] + 8008ee2: 3b01 subs r3, #1 + 8008ee4: 2b03 cmp r3, #3 + 8008ee6: d918 bls.n 8008f1a <HAL_DMA_DeInit+0x8a> + hdma->DMAmuxRequestGen = NULL; + 8008ee8: 2000 movs r0, #0 + 8008eea: 6560 str r0, [r4, #84] ; 0x54 + hdma->DMAmuxRequestGenStatus = NULL; + 8008eec: 65a0 str r0, [r4, #88] ; 0x58 + hdma->DMAmuxRequestGenStatusMask = 0U; + 8008eee: 65e0 str r0, [r4, #92] ; 0x5c + hdma->XferCpltCallback = NULL; + 8008ef0: 62e0 str r0, [r4, #44] ; 0x2c + hdma->XferHalfCpltCallback = NULL; + 8008ef2: 6320 str r0, [r4, #48] ; 0x30 + hdma->XferErrorCallback = NULL; + 8008ef4: 6360 str r0, [r4, #52] ; 0x34 + hdma->XferAbortCallback = NULL; + 8008ef6: 63a0 str r0, [r4, #56] ; 0x38 + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + 8008ef8: 63e0 str r0, [r4, #60] ; 0x3c + hdma->State = HAL_DMA_STATE_RESET; + 8008efa: f884 0025 strb.w r0, [r4, #37] ; 0x25 + __HAL_UNLOCK(hdma); + 8008efe: f884 0024 strb.w r0, [r4, #36] ; 0x24 +} + 8008f02: bd38 pop {r3, r4, r5, pc} + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA2_Channel1) / ((uint32_t)DMA2_Channel2 - (uint32_t)DMA2_Channel1)) << 2U; + 8008f04: 4b0e ldr r3, [pc, #56] ; (8008f40 <HAL_DMA_DeInit+0xb0>) + 8008f06: 4413 add r3, r2 + 8008f08: 490b ldr r1, [pc, #44] ; (8008f38 <HAL_DMA_DeInit+0xa8>) + 8008f0a: fba1 1303 umull r1, r3, r1, r3 + 8008f0e: 091b lsrs r3, r3, #4 + 8008f10: 009b lsls r3, r3, #2 + 8008f12: 6443 str r3, [r0, #68] ; 0x44 + hdma->DmaBaseAddress = DMA2; + 8008f14: 4b0b ldr r3, [pc, #44] ; (8008f44 <HAL_DMA_DeInit+0xb4>) + 8008f16: 6403 str r3, [r0, #64] ; 0x40 + 8008f18: e7d1 b.n 8008ebe <HAL_DMA_DeInit+0x2e> + DMA_CalcDMAMUXRequestGenBaseAndMask(hdma); + 8008f1a: 4620 mov r0, r4 + 8008f1c: f7ff ff30 bl 8008d80 <DMA_CalcDMAMUXRequestGenBaseAndMask> + hdma->DMAmuxRequestGen->RGCR = 0U; + 8008f20: 6d63 ldr r3, [r4, #84] ; 0x54 + 8008f22: 601d str r5, [r3, #0] + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + 8008f24: 6da3 ldr r3, [r4, #88] ; 0x58 + 8008f26: 6de2 ldr r2, [r4, #92] ; 0x5c + 8008f28: 605a str r2, [r3, #4] + 8008f2a: e7dd b.n 8008ee8 <HAL_DMA_DeInit+0x58> + return HAL_ERROR; + 8008f2c: 2001 movs r0, #1 +} + 8008f2e: 4770 bx lr + 8008f30: 40020407 .word 0x40020407 + 8008f34: bffdfff8 .word 0xbffdfff8 + 8008f38: cccccccd .word 0xcccccccd + 8008f3c: 40020000 .word 0x40020000 + 8008f40: bffdfbf8 .word 0xbffdfbf8 + 8008f44: 40020400 .word 0x40020400 + +08008f48 <HAL_DMA_Start_IT>: +{ + 8008f48: b538 push {r3, r4, r5, lr} + 8008f4a: 4604 mov r4, r0 + __HAL_LOCK(hdma); + 8008f4c: f890 0024 ldrb.w r0, [r0, #36] ; 0x24 + 8008f50: 2801 cmp r0, #1 + 8008f52: d043 beq.n 8008fdc <HAL_DMA_Start_IT+0x94> + 8008f54: 2001 movs r0, #1 + 8008f56: f884 0024 strb.w r0, [r4, #36] ; 0x24 + if (hdma->State == HAL_DMA_STATE_READY) + 8008f5a: f894 0025 ldrb.w r0, [r4, #37] ; 0x25 + 8008f5e: b2c0 uxtb r0, r0 + 8008f60: 2801 cmp r0, #1 + 8008f62: d006 beq.n 8008f72 <HAL_DMA_Start_IT+0x2a> + hdma->ErrorCode = HAL_DMA_ERROR_BUSY; + 8008f64: 2380 movs r3, #128 ; 0x80 + 8008f66: 63e3 str r3, [r4, #60] ; 0x3c + __HAL_UNLOCK(hdma); + 8008f68: 2300 movs r3, #0 + 8008f6a: f884 3024 strb.w r3, [r4, #36] ; 0x24 + status = HAL_ERROR; + 8008f6e: 2001 movs r0, #1 +} + 8008f70: bd38 pop {r3, r4, r5, pc} + hdma->State = HAL_DMA_STATE_BUSY; + 8008f72: 2002 movs r0, #2 + 8008f74: f884 0025 strb.w r0, [r4, #37] ; 0x25 + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + 8008f78: 2000 movs r0, #0 + 8008f7a: 63e0 str r0, [r4, #60] ; 0x3c + __HAL_DMA_DISABLE(hdma); + 8008f7c: 6825 ldr r5, [r4, #0] + 8008f7e: 6828 ldr r0, [r5, #0] + 8008f80: f020 0001 bic.w r0, r0, #1 + 8008f84: 6028 str r0, [r5, #0] + DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); + 8008f86: 4620 mov r0, r4 + 8008f88: f7ff fea0 bl 8008ccc <DMA_SetConfig> + if (NULL != hdma->XferHalfCpltCallback) + 8008f8c: 6b23 ldr r3, [r4, #48] ; 0x30 + 8008f8e: b1d3 cbz r3, 8008fc6 <HAL_DMA_Start_IT+0x7e> + __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + 8008f90: 6822 ldr r2, [r4, #0] + 8008f92: 6813 ldr r3, [r2, #0] + 8008f94: f043 030e orr.w r3, r3, #14 + 8008f98: 6013 str r3, [r2, #0] + if ((hdma->DMAmuxChannel->CCR & DMAMUX_CxCR_SE) != 0U) + 8008f9a: 6ca3 ldr r3, [r4, #72] ; 0x48 + 8008f9c: 681a ldr r2, [r3, #0] + 8008f9e: f412 3f80 tst.w r2, #65536 ; 0x10000 + 8008fa2: d003 beq.n 8008fac <HAL_DMA_Start_IT+0x64> + hdma->DMAmuxChannel->CCR |= DMAMUX_CxCR_SOIE; + 8008fa4: 681a ldr r2, [r3, #0] + 8008fa6: f442 7280 orr.w r2, r2, #256 ; 0x100 + 8008faa: 601a str r2, [r3, #0] + if (hdma->DMAmuxRequestGen != NULL) + 8008fac: 6d63 ldr r3, [r4, #84] ; 0x54 + 8008fae: b11b cbz r3, 8008fb8 <HAL_DMA_Start_IT+0x70> + hdma->DMAmuxRequestGen->RGCR |= DMAMUX_RGxCR_OIE; + 8008fb0: 681a ldr r2, [r3, #0] + 8008fb2: f442 7280 orr.w r2, r2, #256 ; 0x100 + 8008fb6: 601a str r2, [r3, #0] + __HAL_DMA_ENABLE(hdma); + 8008fb8: 6822 ldr r2, [r4, #0] + 8008fba: 6813 ldr r3, [r2, #0] + 8008fbc: f043 0301 orr.w r3, r3, #1 + 8008fc0: 6013 str r3, [r2, #0] + HAL_StatusTypeDef status = HAL_OK; + 8008fc2: 2000 movs r0, #0 + 8008fc4: e7d4 b.n 8008f70 <HAL_DMA_Start_IT+0x28> + __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); + 8008fc6: 6822 ldr r2, [r4, #0] + 8008fc8: 6813 ldr r3, [r2, #0] + 8008fca: f023 0304 bic.w r3, r3, #4 + 8008fce: 6013 str r3, [r2, #0] + __HAL_DMA_ENABLE_IT(hdma, (DMA_IT_TC | DMA_IT_TE)); + 8008fd0: 6822 ldr r2, [r4, #0] + 8008fd2: 6813 ldr r3, [r2, #0] + 8008fd4: f043 030a orr.w r3, r3, #10 + 8008fd8: 6013 str r3, [r2, #0] + 8008fda: e7de b.n 8008f9a <HAL_DMA_Start_IT+0x52> + __HAL_LOCK(hdma); + 8008fdc: 2002 movs r0, #2 + 8008fde: e7c7 b.n 8008f70 <HAL_DMA_Start_IT+0x28> + +08008fe0 <HAL_DMA_Abort>: + if (NULL == hdma) + 8008fe0: 4603 mov r3, r0 + 8008fe2: 2800 cmp r0, #0 + 8008fe4: d034 beq.n 8009050 <HAL_DMA_Abort+0x70> + if (hdma->State != HAL_DMA_STATE_BUSY) + 8008fe6: f890 2025 ldrb.w r2, [r0, #37] ; 0x25 + 8008fea: b2d2 uxtb r2, r2 + 8008fec: 2a02 cmp r2, #2 + 8008fee: d006 beq.n 8008ffe <HAL_DMA_Abort+0x1e> + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + 8008ff0: 2204 movs r2, #4 + 8008ff2: 63c2 str r2, [r0, #60] ; 0x3c + __HAL_UNLOCK(hdma); + 8008ff4: 2200 movs r2, #0 + 8008ff6: f880 2024 strb.w r2, [r0, #36] ; 0x24 + return HAL_ERROR; + 8008ffa: 2001 movs r0, #1 + 8008ffc: 4770 bx lr + __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + 8008ffe: 6801 ldr r1, [r0, #0] + 8009000: 680a ldr r2, [r1, #0] + 8009002: f022 020e bic.w r2, r2, #14 + 8009006: 600a str r2, [r1, #0] + hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE; + 8009008: 6c81 ldr r1, [r0, #72] ; 0x48 + 800900a: 680a ldr r2, [r1, #0] + 800900c: f422 7280 bic.w r2, r2, #256 ; 0x100 + 8009010: 600a str r2, [r1, #0] + __HAL_DMA_DISABLE(hdma); + 8009012: 6801 ldr r1, [r0, #0] + 8009014: 680a ldr r2, [r1, #0] + 8009016: f022 0201 bic.w r2, r2, #1 + 800901a: 600a str r2, [r1, #0] + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + 800901c: 6c42 ldr r2, [r0, #68] ; 0x44 + 800901e: f002 011c and.w r1, r2, #28 + 8009022: 6c00 ldr r0, [r0, #64] ; 0x40 + 8009024: 2201 movs r2, #1 + 8009026: 408a lsls r2, r1 + 8009028: 6042 str r2, [r0, #4] + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + 800902a: 6cda ldr r2, [r3, #76] ; 0x4c + 800902c: 6d19 ldr r1, [r3, #80] ; 0x50 + 800902e: 6051 str r1, [r2, #4] + if (hdma->DMAmuxRequestGen != NULL) + 8009030: 6d5a ldr r2, [r3, #84] ; 0x54 + 8009032: b132 cbz r2, 8009042 <HAL_DMA_Abort+0x62> + hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE; + 8009034: 6811 ldr r1, [r2, #0] + 8009036: f421 7180 bic.w r1, r1, #256 ; 0x100 + 800903a: 6011 str r1, [r2, #0] + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + 800903c: 6d9a ldr r2, [r3, #88] ; 0x58 + 800903e: 6dd9 ldr r1, [r3, #92] ; 0x5c + 8009040: 6051 str r1, [r2, #4] + hdma->State = HAL_DMA_STATE_READY; + 8009042: 2201 movs r2, #1 + 8009044: f883 2025 strb.w r2, [r3, #37] ; 0x25 + __HAL_UNLOCK(hdma); + 8009048: 2000 movs r0, #0 + 800904a: f883 0024 strb.w r0, [r3, #36] ; 0x24 + return HAL_OK; + 800904e: 4770 bx lr + return HAL_ERROR; + 8009050: 2001 movs r0, #1 +} + 8009052: 4770 bx lr + +08009054 <HAL_DMA_Abort_IT>: +{ + 8009054: b508 push {r3, lr} + if (hdma->State != HAL_DMA_STATE_BUSY) + 8009056: f890 3025 ldrb.w r3, [r0, #37] ; 0x25 + 800905a: b2db uxtb r3, r3 + 800905c: 2b02 cmp r3, #2 + 800905e: d003 beq.n 8009068 <HAL_DMA_Abort_IT+0x14> + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + 8009060: 2304 movs r3, #4 + 8009062: 63c3 str r3, [r0, #60] ; 0x3c + status = HAL_ERROR; + 8009064: 2001 movs r0, #1 +} + 8009066: bd08 pop {r3, pc} + __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + 8009068: 6802 ldr r2, [r0, #0] + 800906a: 6813 ldr r3, [r2, #0] + 800906c: f023 030e bic.w r3, r3, #14 + 8009070: 6013 str r3, [r2, #0] + __HAL_DMA_DISABLE(hdma); + 8009072: 6802 ldr r2, [r0, #0] + 8009074: 6813 ldr r3, [r2, #0] + 8009076: f023 0301 bic.w r3, r3, #1 + 800907a: 6013 str r3, [r2, #0] + hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE; + 800907c: 6c82 ldr r2, [r0, #72] ; 0x48 + 800907e: 6813 ldr r3, [r2, #0] + 8009080: f423 7380 bic.w r3, r3, #256 ; 0x100 + 8009084: 6013 str r3, [r2, #0] + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + 8009086: 6c43 ldr r3, [r0, #68] ; 0x44 + 8009088: f003 021c and.w r2, r3, #28 + 800908c: 6c01 ldr r1, [r0, #64] ; 0x40 + 800908e: 2301 movs r3, #1 + 8009090: 4093 lsls r3, r2 + 8009092: 604b str r3, [r1, #4] + hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; + 8009094: 6cc3 ldr r3, [r0, #76] ; 0x4c + 8009096: 6d02 ldr r2, [r0, #80] ; 0x50 + 8009098: 605a str r2, [r3, #4] + if (hdma->DMAmuxRequestGen != NULL) + 800909a: 6d43 ldr r3, [r0, #84] ; 0x54 + 800909c: b133 cbz r3, 80090ac <HAL_DMA_Abort_IT+0x58> + hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE; + 800909e: 681a ldr r2, [r3, #0] + 80090a0: f422 7280 bic.w r2, r2, #256 ; 0x100 + 80090a4: 601a str r2, [r3, #0] + hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; + 80090a6: 6d83 ldr r3, [r0, #88] ; 0x58 + 80090a8: 6dc2 ldr r2, [r0, #92] ; 0x5c + 80090aa: 605a str r2, [r3, #4] + hdma->State = HAL_DMA_STATE_READY; + 80090ac: 2301 movs r3, #1 + 80090ae: f880 3025 strb.w r3, [r0, #37] ; 0x25 + __HAL_UNLOCK(hdma); + 80090b2: 2300 movs r3, #0 + 80090b4: f880 3024 strb.w r3, [r0, #36] ; 0x24 + if (hdma->XferAbortCallback != NULL) + 80090b8: 6b83 ldr r3, [r0, #56] ; 0x38 + 80090ba: b113 cbz r3, 80090c2 <HAL_DMA_Abort_IT+0x6e> + hdma->XferAbortCallback(hdma); + 80090bc: 4798 blx r3 + HAL_StatusTypeDef status = HAL_OK; + 80090be: 2000 movs r0, #0 + 80090c0: e7d1 b.n 8009066 <HAL_DMA_Abort_IT+0x12> + 80090c2: 2000 movs r0, #0 + 80090c4: e7cf b.n 8009066 <HAL_DMA_Abort_IT+0x12> + ... + +080090c8 <HAL_DMA_IRQHandler>: +{ + 80090c8: b538 push {r3, r4, r5, lr} + uint32_t flag_it = hdma->DmaBaseAddress->ISR; + 80090ca: 6c03 ldr r3, [r0, #64] ; 0x40 + 80090cc: 6819 ldr r1, [r3, #0] + uint32_t source_it = hdma->Instance->CCR; + 80090ce: 6804 ldr r4, [r0, #0] + 80090d0: 6825 ldr r5, [r4, #0] + if (((flag_it & (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_HT) != 0U)) + 80090d2: 6c43 ldr r3, [r0, #68] ; 0x44 + 80090d4: f003 031c and.w r3, r3, #28 + 80090d8: 2204 movs r2, #4 + 80090da: 409a lsls r2, r3 + 80090dc: 420a tst r2, r1 + 80090de: d015 beq.n 800910c <HAL_DMA_IRQHandler+0x44> + 80090e0: f015 0f04 tst.w r5, #4 + 80090e4: d012 beq.n 800910c <HAL_DMA_IRQHandler+0x44> + if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) + 80090e6: 6823 ldr r3, [r4, #0] + 80090e8: f013 0f20 tst.w r3, #32 + 80090ec: d103 bne.n 80090f6 <HAL_DMA_IRQHandler+0x2e> + __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); + 80090ee: 6823 ldr r3, [r4, #0] + 80090f0: f023 0304 bic.w r3, r3, #4 + 80090f4: 6023 str r3, [r4, #0] + hdma->DmaBaseAddress->IFCR = DMA_ISR_HTIF1 << (hdma->ChannelIndex & 0x1CU); + 80090f6: 6c43 ldr r3, [r0, #68] ; 0x44 + 80090f8: f003 021c and.w r2, r3, #28 + 80090fc: 6c01 ldr r1, [r0, #64] ; 0x40 + 80090fe: 2304 movs r3, #4 + 8009100: 4093 lsls r3, r2 + 8009102: 604b str r3, [r1, #4] + if (hdma->XferHalfCpltCallback != NULL) + 8009104: 6b03 ldr r3, [r0, #48] ; 0x30 + 8009106: b103 cbz r3, 800910a <HAL_DMA_IRQHandler+0x42> + hdma->XferHalfCpltCallback(hdma); + 8009108: 4798 blx r3 +} + 800910a: bd38 pop {r3, r4, r5, pc} + else if ((0U != (flag_it & (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU)))) && (0U != (source_it & DMA_IT_TC))) + 800910c: 2202 movs r2, #2 + 800910e: 409a lsls r2, r3 + 8009110: 420a tst r2, r1 + 8009112: d028 beq.n 8009166 <HAL_DMA_IRQHandler+0x9e> + 8009114: f015 0f02 tst.w r5, #2 + 8009118: d025 beq.n 8009166 <HAL_DMA_IRQHandler+0x9e> + if ((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) + 800911a: 6823 ldr r3, [r4, #0] + 800911c: f013 0f20 tst.w r3, #32 + 8009120: d106 bne.n 8009130 <HAL_DMA_IRQHandler+0x68> + __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC); + 8009122: 6823 ldr r3, [r4, #0] + 8009124: f023 030a bic.w r3, r3, #10 + 8009128: 6023 str r3, [r4, #0] + hdma->State = HAL_DMA_STATE_READY; + 800912a: 2301 movs r3, #1 + 800912c: f880 3025 strb.w r3, [r0, #37] ; 0x25 + __HAL_DMA_CLEAR_FLAG(hdma, (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU))); + 8009130: 6802 ldr r2, [r0, #0] + 8009132: 4b1c ldr r3, [pc, #112] ; (80091a4 <HAL_DMA_IRQHandler+0xdc>) + 8009134: 429a cmp r2, r3 + 8009136: d90e bls.n 8009156 <HAL_DMA_IRQHandler+0x8e> + 8009138: 6c43 ldr r3, [r0, #68] ; 0x44 + 800913a: f003 021c and.w r2, r3, #28 + 800913e: 2302 movs r3, #2 + 8009140: 4093 lsls r3, r2 + 8009142: 4a19 ldr r2, [pc, #100] ; (80091a8 <HAL_DMA_IRQHandler+0xe0>) + 8009144: 6053 str r3, [r2, #4] + __HAL_UNLOCK(hdma); + 8009146: 2300 movs r3, #0 + 8009148: f880 3024 strb.w r3, [r0, #36] ; 0x24 + if (hdma->XferCpltCallback != NULL) + 800914c: 6ac3 ldr r3, [r0, #44] ; 0x2c + 800914e: 2b00 cmp r3, #0 + 8009150: d0db beq.n 800910a <HAL_DMA_IRQHandler+0x42> + hdma->XferCpltCallback(hdma); + 8009152: 4798 blx r3 + 8009154: e7d9 b.n 800910a <HAL_DMA_IRQHandler+0x42> + __HAL_DMA_CLEAR_FLAG(hdma, (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1CU))); + 8009156: 6c43 ldr r3, [r0, #68] ; 0x44 + 8009158: f003 021c and.w r2, r3, #28 + 800915c: 2302 movs r3, #2 + 800915e: 4093 lsls r3, r2 + 8009160: 4a12 ldr r2, [pc, #72] ; (80091ac <HAL_DMA_IRQHandler+0xe4>) + 8009162: 6053 str r3, [r2, #4] + 8009164: e7ef b.n 8009146 <HAL_DMA_IRQHandler+0x7e> + else if (((flag_it & (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x1CU))) != 0U) && ((source_it & DMA_IT_TE) != 0U)) + 8009166: 2208 movs r2, #8 + 8009168: fa02 f303 lsl.w r3, r2, r3 + 800916c: 420b tst r3, r1 + 800916e: d0cc beq.n 800910a <HAL_DMA_IRQHandler+0x42> + 8009170: f015 0f08 tst.w r5, #8 + 8009174: d0c9 beq.n 800910a <HAL_DMA_IRQHandler+0x42> + __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); + 8009176: 6823 ldr r3, [r4, #0] + 8009178: f023 030e bic.w r3, r3, #14 + 800917c: 6023 str r3, [r4, #0] + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); + 800917e: 6c43 ldr r3, [r0, #68] ; 0x44 + 8009180: f003 031c and.w r3, r3, #28 + 8009184: 6c01 ldr r1, [r0, #64] ; 0x40 + 8009186: 2201 movs r2, #1 + 8009188: fa02 f303 lsl.w r3, r2, r3 + 800918c: 604b str r3, [r1, #4] + hdma->ErrorCode = HAL_DMA_ERROR_TE; + 800918e: 63c2 str r2, [r0, #60] ; 0x3c + hdma->State = HAL_DMA_STATE_READY; + 8009190: f880 2025 strb.w r2, [r0, #37] ; 0x25 + __HAL_UNLOCK(hdma); + 8009194: 2300 movs r3, #0 + 8009196: f880 3024 strb.w r3, [r0, #36] ; 0x24 + if (hdma->XferErrorCallback != NULL) + 800919a: 6b43 ldr r3, [r0, #52] ; 0x34 + 800919c: 2b00 cmp r3, #0 + 800919e: d0b4 beq.n 800910a <HAL_DMA_IRQHandler+0x42> + hdma->XferErrorCallback(hdma); + 80091a0: 4798 blx r3 + return; + 80091a2: e7b2 b.n 800910a <HAL_DMA_IRQHandler+0x42> + 80091a4: 40020080 .word 0x40020080 + 80091a8: 40020400 .word 0x40020400 + 80091ac: 40020000 .word 0x40020000 + +080091b0 <FLASH_Program_DoubleWord>: + * @param Address Specifies the address to be programmed. + * @param Data Specifies the data to be programmed. + * @retval None + */ +static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) +{ + 80091b0: b410 push {r4} +#ifdef CORE_CM0PLUS + /* Set PG bit */ + SET_BIT(FLASH->C2CR, FLASH_CR_PG); +#else + /* Set PG bit */ + SET_BIT(FLASH->CR, FLASH_CR_PG); + 80091b2: 4c05 ldr r4, [pc, #20] ; (80091c8 <FLASH_Program_DoubleWord+0x18>) + 80091b4: 6961 ldr r1, [r4, #20] + 80091b6: f041 0101 orr.w r1, r1, #1 + 80091ba: 6161 str r1, [r4, #20] +#endif + + /* Program first word */ + *(uint32_t *)Address = (uint32_t)Data; + 80091bc: 6002 str r2, [r0, #0] + 80091be: f3bf 8f6f isb sy + /* Barrier to ensure programming is performed in 2 steps, in right order + (independently of compiler optimization behavior) */ + __ISB(); + + /* Program second word */ + *(uint32_t *)(Address + 4U) = (uint32_t)(Data >> 32U); + 80091c2: 6043 str r3, [r0, #4] +} + 80091c4: bc10 pop {r4} + 80091c6: 4770 bx lr + 80091c8: 58004000 .word 0x58004000 + +080091cc <FLASH_Program_Fast>: + + /* Set FSTPG bit */ +#ifdef CORE_CM0PLUS + SET_BIT(FLASH->C2CR, FLASH_CR_FSTPG); +#else + SET_BIT(FLASH->CR, FLASH_CR_FSTPG); + 80091cc: 4a0c ldr r2, [pc, #48] ; (8009200 <FLASH_Program_Fast+0x34>) + 80091ce: 6953 ldr r3, [r2, #20] + 80091d0: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 80091d4: 6153 str r3, [r2, #20] + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 80091d6: f3ef 8c10 mrs ip, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 80091da: b672 cpsid i + uint8_t row_index = (2 * FLASH_NB_DOUBLE_WORDS_IN_ROW); + 80091dc: 2340 movs r3, #64 ; 0x40 + __disable_irq(); + + /* Program the double word of the row */ + do + { + *dest_addr = *src_addr; + 80091de: f851 2b04 ldr.w r2, [r1], #4 + 80091e2: f840 2b04 str.w r2, [r0], #4 + dest_addr++; + src_addr++; + row_index--; + 80091e6: 3b01 subs r3, #1 + } + while (row_index != 0U); + 80091e8: f013 03ff ands.w r3, r3, #255 ; 0xff + 80091ec: d1f7 bne.n 80091de <FLASH_Program_Fast+0x12> + + /* wait for BSY in order to be sure that flash operation is ended before + allowing prefetch in flash. Timeout does not return status, as it will + be anyway done later */ + while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != 0U) + 80091ee: 4b04 ldr r3, [pc, #16] ; (8009200 <FLASH_Program_Fast+0x34>) + 80091f0: 691b ldr r3, [r3, #16] + 80091f2: f413 3f80 tst.w r3, #65536 ; 0x10000 + 80091f6: d1fa bne.n 80091ee <FLASH_Program_Fast+0x22> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 80091f8: f38c 8810 msr PRIMASK, ip + { + } + + /* Exit critical section: restore previous priority mask */ + __set_PRIMASK(primask_bit); +} + 80091fc: 4770 bx lr + 80091fe: bf00 nop + 8009200: 58004000 .word 0x58004000 + +08009204 <HAL_FLASH_Unlock>: + if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U) + 8009204: 4b09 ldr r3, [pc, #36] ; (800922c <HAL_FLASH_Unlock+0x28>) + 8009206: 695b ldr r3, [r3, #20] + 8009208: 2b00 cmp r3, #0 + 800920a: db01 blt.n 8009210 <HAL_FLASH_Unlock+0xc> + HAL_StatusTypeDef status = HAL_OK; + 800920c: 2000 movs r0, #0 + 800920e: 4770 bx lr + WRITE_REG(FLASH->KEYR, FLASH_KEY1); + 8009210: 4b06 ldr r3, [pc, #24] ; (800922c <HAL_FLASH_Unlock+0x28>) + 8009212: 4a07 ldr r2, [pc, #28] ; (8009230 <HAL_FLASH_Unlock+0x2c>) + 8009214: 609a str r2, [r3, #8] + WRITE_REG(FLASH->KEYR, FLASH_KEY2); + 8009216: f102 3288 add.w r2, r2, #2290649224 ; 0x88888888 + 800921a: 609a str r2, [r3, #8] + if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != 0U) + 800921c: 695b ldr r3, [r3, #20] + 800921e: 2b00 cmp r3, #0 + 8009220: db01 blt.n 8009226 <HAL_FLASH_Unlock+0x22> + HAL_StatusTypeDef status = HAL_OK; + 8009222: 2000 movs r0, #0 + 8009224: 4770 bx lr + status = HAL_ERROR; + 8009226: 2001 movs r0, #1 +} + 8009228: 4770 bx lr + 800922a: bf00 nop + 800922c: 58004000 .word 0x58004000 + 8009230: 45670123 .word 0x45670123 + +08009234 <HAL_FLASH_Lock>: + SET_BIT(FLASH->CR, FLASH_CR_LOCK); + 8009234: 4b05 ldr r3, [pc, #20] ; (800924c <HAL_FLASH_Lock+0x18>) + 8009236: 695a ldr r2, [r3, #20] + 8009238: f042 4200 orr.w r2, r2, #2147483648 ; 0x80000000 + 800923c: 615a str r2, [r3, #20] + if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) == 0U) + 800923e: 695b ldr r3, [r3, #20] + 8009240: 2b00 cmp r3, #0 + 8009242: db01 blt.n 8009248 <HAL_FLASH_Lock+0x14> + status = HAL_ERROR; + 8009244: 2001 movs r0, #1 +} + 8009246: 4770 bx lr + HAL_StatusTypeDef status = HAL_OK; + 8009248: 2000 movs r0, #0 + 800924a: 4770 bx lr + 800924c: 58004000 .word 0x58004000 + +08009250 <FLASH_WaitForLastOperation>: +{ + 8009250: b538 push {r3, r4, r5, lr} + 8009252: 4605 mov r5, r0 + uint32_t tickstart = HAL_GetTick(); + 8009254: f7f9 fd20 bl 8002c98 <HAL_GetTick> + 8009258: 4604 mov r4, r0 + while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) + 800925a: 4b16 ldr r3, [pc, #88] ; (80092b4 <FLASH_WaitForLastOperation+0x64>) + 800925c: 691b ldr r3, [r3, #16] + 800925e: f413 3f80 tst.w r3, #65536 ; 0x10000 + 8009262: d006 beq.n 8009272 <FLASH_WaitForLastOperation+0x22> + if ((HAL_GetTick() - tickstart) >= Timeout) + 8009264: f7f9 fd18 bl 8002c98 <HAL_GetTick> + 8009268: 1b00 subs r0, r0, r4 + 800926a: 42a8 cmp r0, r5 + 800926c: d3f5 bcc.n 800925a <FLASH_WaitForLastOperation+0xa> + return HAL_TIMEOUT; + 800926e: 2003 movs r0, #3 +} + 8009270: bd38 pop {r3, r4, r5, pc} + error = FLASH->SR; + 8009272: 4b10 ldr r3, [pc, #64] ; (80092b4 <FLASH_WaitForLastOperation+0x64>) + 8009274: 691b ldr r3, [r3, #16] + if ((error & FLASH_FLAG_EOP) != 0U) + 8009276: f013 0f01 tst.w r3, #1 + 800927a: d002 beq.n 8009282 <FLASH_WaitForLastOperation+0x32> + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); + 800927c: 4a0d ldr r2, [pc, #52] ; (80092b4 <FLASH_WaitForLastOperation+0x64>) + 800927e: 2101 movs r1, #1 + 8009280: 6111 str r1, [r2, #16] + error &= FLASH_FLAG_SR_ERRORS; + 8009282: f24c 32fa movw r2, #50170 ; 0xc3fa + __HAL_FLASH_CLEAR_FLAG(error); + 8009286: 4013 ands r3, r2 + 8009288: d001 beq.n 800928e <FLASH_WaitForLastOperation+0x3e> + 800928a: 4a0a ldr r2, [pc, #40] ; (80092b4 <FLASH_WaitForLastOperation+0x64>) + 800928c: 6113 str r3, [r2, #16] + if (error != 0U) + 800928e: b95b cbnz r3, 80092a8 <FLASH_WaitForLastOperation+0x58> + while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_CFGBSY)) + 8009290: 4b08 ldr r3, [pc, #32] ; (80092b4 <FLASH_WaitForLastOperation+0x64>) + 8009292: 691b ldr r3, [r3, #16] + 8009294: f413 2f80 tst.w r3, #262144 ; 0x40000 + 8009298: d00a beq.n 80092b0 <FLASH_WaitForLastOperation+0x60> + if ((HAL_GetTick() - tickstart) >= Timeout) + 800929a: f7f9 fcfd bl 8002c98 <HAL_GetTick> + 800929e: 1b00 subs r0, r0, r4 + 80092a0: 42a8 cmp r0, r5 + 80092a2: d3f5 bcc.n 8009290 <FLASH_WaitForLastOperation+0x40> + return HAL_TIMEOUT; + 80092a4: 2003 movs r0, #3 + 80092a6: e7e3 b.n 8009270 <FLASH_WaitForLastOperation+0x20> + pFlash.ErrorCode = error; + 80092a8: 4a03 ldr r2, [pc, #12] ; (80092b8 <FLASH_WaitForLastOperation+0x68>) + 80092aa: 6053 str r3, [r2, #4] + return HAL_ERROR; + 80092ac: 2001 movs r0, #1 + 80092ae: e7df b.n 8009270 <FLASH_WaitForLastOperation+0x20> + return HAL_OK; + 80092b0: 2000 movs r0, #0 + 80092b2: e7dd b.n 8009270 <FLASH_WaitForLastOperation+0x20> + 80092b4: 58004000 .word 0x58004000 + 80092b8: 20000f4c .word 0x20000f4c + +080092bc <HAL_FLASH_Program>: +{ + 80092bc: b5f8 push {r3, r4, r5, r6, r7, lr} + 80092be: 461f mov r7, r3 + __HAL_LOCK(&pFlash); + 80092c0: 4b15 ldr r3, [pc, #84] ; (8009318 <HAL_FLASH_Program+0x5c>) + 80092c2: 781b ldrb r3, [r3, #0] + 80092c4: 2b01 cmp r3, #1 + 80092c6: d025 beq.n 8009314 <HAL_FLASH_Program+0x58> + 80092c8: 4604 mov r4, r0 + 80092ca: 460d mov r5, r1 + 80092cc: 4616 mov r6, r2 + 80092ce: 4b12 ldr r3, [pc, #72] ; (8009318 <HAL_FLASH_Program+0x5c>) + 80092d0: 2201 movs r2, #1 + 80092d2: 701a strb r2, [r3, #0] + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + 80092d4: 2200 movs r2, #0 + 80092d6: 605a str r2, [r3, #4] + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + 80092d8: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80092dc: f7ff ffb8 bl 8009250 <FLASH_WaitForLastOperation> + if (status == HAL_OK) + 80092e0: b970 cbnz r0, 8009300 <HAL_FLASH_Program+0x44> + if (TypeProgram == FLASH_TYPEPROGRAM_DOUBLEWORD) + 80092e2: 2c01 cmp r4, #1 + 80092e4: d010 beq.n 8009308 <HAL_FLASH_Program+0x4c> + FLASH_Program_Fast(Address, (uint32_t)Data); + 80092e6: 4631 mov r1, r6 + 80092e8: 4628 mov r0, r5 + 80092ea: f7ff ff6f bl 80091cc <FLASH_Program_Fast> + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + 80092ee: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80092f2: f7ff ffad bl 8009250 <FLASH_WaitForLastOperation> + CLEAR_BIT(FLASH->CR, TypeProgram); + 80092f6: 4a09 ldr r2, [pc, #36] ; (800931c <HAL_FLASH_Program+0x60>) + 80092f8: 6953 ldr r3, [r2, #20] + 80092fa: ea23 0304 bic.w r3, r3, r4 + 80092fe: 6153 str r3, [r2, #20] + __HAL_UNLOCK(&pFlash); + 8009300: 4b05 ldr r3, [pc, #20] ; (8009318 <HAL_FLASH_Program+0x5c>) + 8009302: 2200 movs r2, #0 + 8009304: 701a strb r2, [r3, #0] +} + 8009306: bdf8 pop {r3, r4, r5, r6, r7, pc} + FLASH_Program_DoubleWord(Address, Data); + 8009308: 4632 mov r2, r6 + 800930a: 463b mov r3, r7 + 800930c: 4628 mov r0, r5 + 800930e: f7ff ff4f bl 80091b0 <FLASH_Program_DoubleWord> + 8009312: e7ec b.n 80092ee <HAL_FLASH_Program+0x32> + __HAL_LOCK(&pFlash); + 8009314: 2002 movs r0, #2 + 8009316: e7f6 b.n 8009306 <HAL_FLASH_Program+0x4a> + 8009318: 20000f4c .word 0x20000f4c + 800931c: 58004000 .word 0x58004000 + +08009320 <FLASH_MassErase>: +{ + /* Set the Mass Erase Bit and start bit */ +#ifdef CORE_CM0PLUS + SET_BIT(FLASH->C2CR, (FLASH_CR_MER | FLASH_CR_STRT)); +#else + SET_BIT(FLASH->CR, (FLASH_CR_MER | FLASH_CR_STRT)); + 8009320: 4a03 ldr r2, [pc, #12] ; (8009330 <FLASH_MassErase+0x10>) + 8009322: 6953 ldr r3, [r2, #20] + 8009324: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8009328: f043 0304 orr.w r3, r3, #4 + 800932c: 6153 str r3, [r2, #20] +#endif +} + 800932e: 4770 bx lr + 8009330: 58004000 .word 0x58004000 + +08009334 <FLASH_FlushCaches>: + * @retval None + */ +void FLASH_FlushCaches(void) +{ + /* Flush instruction cache */ + if (READ_BIT(FLASH->ACR, FLASH_ACR_ICEN) == 1U) + 8009334: 4b18 ldr r3, [pc, #96] ; (8009398 <FLASH_FlushCaches+0x64>) + 8009336: 681b ldr r3, [r3, #0] + 8009338: f403 7300 and.w r3, r3, #512 ; 0x200 + 800933c: 2b01 cmp r3, #1 + 800933e: d006 beq.n 800934e <FLASH_FlushCaches+0x1a> + } + +#ifdef CORE_CM0PLUS +#else + /* Flush data cache */ + if (READ_BIT(FLASH->ACR, FLASH_ACR_DCEN) == 1U) + 8009340: 4b15 ldr r3, [pc, #84] ; (8009398 <FLASH_FlushCaches+0x64>) + 8009342: 681b ldr r3, [r3, #0] + 8009344: f403 6380 and.w r3, r3, #1024 ; 0x400 + 8009348: 2b01 cmp r3, #1 + 800934a: d012 beq.n 8009372 <FLASH_FlushCaches+0x3e> + __HAL_FLASH_DATA_CACHE_RESET(); + /* Enable data cache */ + __HAL_FLASH_DATA_CACHE_ENABLE(); + } +#endif +} + 800934c: 4770 bx lr + __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); + 800934e: 4b12 ldr r3, [pc, #72] ; (8009398 <FLASH_FlushCaches+0x64>) + 8009350: 681a ldr r2, [r3, #0] + 8009352: f422 7200 bic.w r2, r2, #512 ; 0x200 + 8009356: 601a str r2, [r3, #0] + __HAL_FLASH_INSTRUCTION_CACHE_RESET(); + 8009358: 681a ldr r2, [r3, #0] + 800935a: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 800935e: 601a str r2, [r3, #0] + 8009360: 681a ldr r2, [r3, #0] + 8009362: f422 6200 bic.w r2, r2, #2048 ; 0x800 + 8009366: 601a str r2, [r3, #0] + __HAL_FLASH_INSTRUCTION_CACHE_ENABLE(); + 8009368: 681a ldr r2, [r3, #0] + 800936a: f442 7200 orr.w r2, r2, #512 ; 0x200 + 800936e: 601a str r2, [r3, #0] + 8009370: e7e6 b.n 8009340 <FLASH_FlushCaches+0xc> + __HAL_FLASH_DATA_CACHE_DISABLE(); + 8009372: 4b09 ldr r3, [pc, #36] ; (8009398 <FLASH_FlushCaches+0x64>) + 8009374: 681a ldr r2, [r3, #0] + 8009376: f422 6280 bic.w r2, r2, #1024 ; 0x400 + 800937a: 601a str r2, [r3, #0] + __HAL_FLASH_DATA_CACHE_RESET(); + 800937c: 681a ldr r2, [r3, #0] + 800937e: f442 5280 orr.w r2, r2, #4096 ; 0x1000 + 8009382: 601a str r2, [r3, #0] + 8009384: 681a ldr r2, [r3, #0] + 8009386: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 800938a: 601a str r2, [r3, #0] + __HAL_FLASH_DATA_CACHE_ENABLE(); + 800938c: 681a ldr r2, [r3, #0] + 800938e: f442 6280 orr.w r2, r2, #1024 ; 0x400 + 8009392: 601a str r2, [r3, #0] +} + 8009394: e7da b.n 800934c <FLASH_FlushCaches+0x18> + 8009396: bf00 nop + 8009398: 58004000 .word 0x58004000 + +0800939c <FLASH_AcknowledgePageErase>: +static void FLASH_AcknowledgePageErase(void) +{ +#ifdef CORE_CM0PLUS + CLEAR_BIT(FLASH->C2CR, (FLASH_CR_PER | FLASH_CR_PNB)); +#else + CLEAR_BIT(FLASH->CR, (FLASH_CR_PER | FLASH_CR_PNB)); + 800939c: 4a03 ldr r2, [pc, #12] ; (80093ac <FLASH_AcknowledgePageErase+0x10>) + 800939e: 6953 ldr r3, [r2, #20] + 80093a0: f423 737e bic.w r3, r3, #1016 ; 0x3f8 + 80093a4: f023 0302 bic.w r3, r3, #2 + 80093a8: 6153 str r3, [r2, #20] +#endif +} + 80093aa: 4770 bx lr + 80093ac: 58004000 .word 0x58004000 + +080093b0 <FLASH_PageErase>: + MODIFY_REG(FLASH->CR, FLASH_CR_PNB, ((Page << FLASH_CR_PNB_Pos) | FLASH_CR_PER | FLASH_CR_STRT)); + 80093b0: 4a05 ldr r2, [pc, #20] ; (80093c8 <FLASH_PageErase+0x18>) + 80093b2: 6953 ldr r3, [r2, #20] + 80093b4: f423 737e bic.w r3, r3, #1016 ; 0x3f8 + 80093b8: ea43 00c0 orr.w r0, r3, r0, lsl #3 + 80093bc: f440 3080 orr.w r0, r0, #65536 ; 0x10000 + 80093c0: f040 0002 orr.w r0, r0, #2 + 80093c4: 6150 str r0, [r2, #20] +} + 80093c6: 4770 bx lr + 80093c8: 58004000 .word 0x58004000 + +080093cc <HAL_FLASHEx_Erase>: +{ + 80093cc: b5f8 push {r3, r4, r5, r6, r7, lr} + __HAL_LOCK(&pFlash); + 80093ce: 4b1e ldr r3, [pc, #120] ; (8009448 <HAL_FLASHEx_Erase+0x7c>) + 80093d0: 781b ldrb r3, [r3, #0] + 80093d2: 2b01 cmp r3, #1 + 80093d4: d035 beq.n 8009442 <HAL_FLASHEx_Erase+0x76> + 80093d6: 4605 mov r5, r0 + 80093d8: 460f mov r7, r1 + 80093da: 4b1b ldr r3, [pc, #108] ; (8009448 <HAL_FLASHEx_Erase+0x7c>) + 80093dc: 2201 movs r2, #1 + 80093de: 701a strb r2, [r3, #0] + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + 80093e0: 2200 movs r2, #0 + 80093e2: 605a str r2, [r3, #4] + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + 80093e4: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80093e8: f7ff ff32 bl 8009250 <FLASH_WaitForLastOperation> + if (status == HAL_OK) + 80093ec: 4606 mov r6, r0 + 80093ee: bb18 cbnz r0, 8009438 <HAL_FLASHEx_Erase+0x6c> + if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE) + 80093f0: 682b ldr r3, [r5, #0] + 80093f2: 2b04 cmp r3, #4 + 80093f4: d013 beq.n 800941e <HAL_FLASHEx_Erase+0x52> + *PageError = 0xFFFFFFFFU; + 80093f6: f04f 33ff mov.w r3, #4294967295 + 80093fa: 603b str r3, [r7, #0] + for (index = pEraseInit->Page; index < (pEraseInit->Page + pEraseInit->NbPages); index++) + 80093fc: 686c ldr r4, [r5, #4] + 80093fe: 686b ldr r3, [r5, #4] + 8009400: 68aa ldr r2, [r5, #8] + 8009402: 4413 add r3, r2 + 8009404: 42a3 cmp r3, r4 + 8009406: d913 bls.n 8009430 <HAL_FLASHEx_Erase+0x64> + FLASH_PageErase(index); + 8009408: 4620 mov r0, r4 + 800940a: f7ff ffd1 bl 80093b0 <FLASH_PageErase> + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + 800940e: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8009412: f7ff ff1d bl 8009250 <FLASH_WaitForLastOperation> + if (status != HAL_OK) + 8009416: 4606 mov r6, r0 + 8009418: b948 cbnz r0, 800942e <HAL_FLASHEx_Erase+0x62> + for (index = pEraseInit->Page; index < (pEraseInit->Page + pEraseInit->NbPages); index++) + 800941a: 3401 adds r4, #1 + 800941c: e7ef b.n 80093fe <HAL_FLASHEx_Erase+0x32> + FLASH_MassErase(); + 800941e: f7ff ff7f bl 8009320 <FLASH_MassErase> + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + 8009422: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8009426: f7ff ff13 bl 8009250 <FLASH_WaitForLastOperation> + 800942a: 4606 mov r6, r0 + 800942c: e002 b.n 8009434 <HAL_FLASHEx_Erase+0x68> + *PageError = index; + 800942e: 603c str r4, [r7, #0] + FLASH_AcknowledgePageErase(); + 8009430: f7ff ffb4 bl 800939c <FLASH_AcknowledgePageErase> + FLASH_FlushCaches(); + 8009434: f7ff ff7e bl 8009334 <FLASH_FlushCaches> + __HAL_UNLOCK(&pFlash); + 8009438: 4b03 ldr r3, [pc, #12] ; (8009448 <HAL_FLASHEx_Erase+0x7c>) + 800943a: 2200 movs r2, #0 + 800943c: 701a strb r2, [r3, #0] +} + 800943e: 4630 mov r0, r6 + 8009440: bdf8 pop {r3, r4, r5, r6, r7, pc} + __HAL_LOCK(&pFlash); + 8009442: 2602 movs r6, #2 + 8009444: e7fb b.n 800943e <HAL_FLASHEx_Erase+0x72> + 8009446: bf00 nop + 8009448: 20000f4c .word 0x20000f4c + +0800944c <HAL_GPIO_Init>: + * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 800944c: b570 push {r4, r5, r6, lr} + uint32_t position = 0x00u; + 800944e: 2300 movs r3, #0 + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0x00u) + 8009450: e069 b.n 8009526 <HAL_GPIO_Init+0xda> + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8009452: 6885 ldr r5, [r0, #8] + temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U)); + 8009454: 005e lsls r6, r3, #1 + 8009456: 2403 movs r4, #3 + 8009458: 40b4 lsls r4, r6 + 800945a: ea25 0504 bic.w r5, r5, r4 + temp |= (GPIO_Init->Speed << (position * 2U)); + 800945e: 68cc ldr r4, [r1, #12] + 8009460: 40b4 lsls r4, r6 + 8009462: 432c orrs r4, r5 + GPIOx->OSPEEDR = temp; + 8009464: 6084 str r4, [r0, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8009466: 6845 ldr r5, [r0, #4] + temp &= ~(GPIO_OTYPER_OT0 << position) ; + 8009468: ea25 050c bic.w r5, r5, ip + temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 800946c: 684c ldr r4, [r1, #4] + 800946e: f3c4 1400 ubfx r4, r4, #4, #1 + 8009472: 409c lsls r4, r3 + 8009474: 432c orrs r4, r5 + GPIOx->OTYPER = temp; + 8009476: 6044 str r4, [r0, #4] + 8009478: e066 b.n 8009548 <HAL_GPIO_Init+0xfc> + /* Check the Alternate function parameters */ + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + temp = GPIOx->AFR[position >> 3U]; + 800947a: 08dd lsrs r5, r3, #3 + 800947c: 3508 adds r5, #8 + 800947e: f850 4025 ldr.w r4, [r0, r5, lsl #2] + temp &= ~(0xFU << ((position & 0x07U) * 4U)); + 8009482: f003 0c07 and.w ip, r3, #7 + 8009486: ea4f 0c8c mov.w ip, ip, lsl #2 + 800948a: f04f 0e0f mov.w lr, #15 + 800948e: fa0e fe0c lsl.w lr, lr, ip + 8009492: ea24 0e0e bic.w lr, r4, lr + temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U)); + 8009496: 690c ldr r4, [r1, #16] + 8009498: fa04 f40c lsl.w r4, r4, ip + 800949c: ea44 040e orr.w r4, r4, lr + GPIOx->AFR[position >> 3u] = temp; + 80094a0: f840 4025 str.w r4, [r0, r5, lsl #2] + 80094a4: e067 b.n 8009576 <HAL_GPIO_Init+0x12a> + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u) + { + temp = SYSCFG->EXTICR[position >> 2u]; + temp &= ~(0x07uL << (4U * (position & 0x03U))); + temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))); + 80094a6: 2402 movs r4, #2 + 80094a8: e000 b.n 80094ac <HAL_GPIO_Init+0x60> + 80094aa: 2400 movs r4, #0 + 80094ac: fa04 f40e lsl.w r4, r4, lr + 80094b0: 432c orrs r4, r5 + SYSCFG->EXTICR[position >> 2u] = temp; + 80094b2: f10c 0c02 add.w ip, ip, #2 + 80094b6: 4d4b ldr r5, [pc, #300] ; (80095e4 <HAL_GPIO_Init+0x198>) + 80094b8: f845 402c str.w r4, [r5, ip, lsl #2] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR1; + 80094bc: 4c4a ldr r4, [pc, #296] ; (80095e8 <HAL_GPIO_Init+0x19c>) + 80094be: 6825 ldr r5, [r4, #0] + temp &= ~(iocurrent); + 80094c0: 43d4 mvns r4, r2 + 80094c2: ea25 0602 bic.w r6, r5, r2 + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u) + 80094c6: f8d1 c004 ldr.w ip, [r1, #4] + 80094ca: f41c 1f80 tst.w ip, #1048576 ; 0x100000 + 80094ce: d001 beq.n 80094d4 <HAL_GPIO_Init+0x88> + { + temp |= iocurrent; + 80094d0: ea42 0605 orr.w r6, r2, r5 + } + EXTI->RTSR1 = temp; + 80094d4: 4d44 ldr r5, [pc, #272] ; (80095e8 <HAL_GPIO_Init+0x19c>) + 80094d6: 602e str r6, [r5, #0] + + temp = EXTI->FTSR1; + 80094d8: 686d ldr r5, [r5, #4] + temp &= ~(iocurrent); + 80094da: ea04 0605 and.w r6, r4, r5 + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u) + 80094de: f8d1 c004 ldr.w ip, [r1, #4] + 80094e2: f41c 1f00 tst.w ip, #2097152 ; 0x200000 + 80094e6: d001 beq.n 80094ec <HAL_GPIO_Init+0xa0> + { + temp |= iocurrent; + 80094e8: ea42 0605 orr.w r6, r2, r5 + } + EXTI->FTSR1 = temp; + 80094ec: 4d3e ldr r5, [pc, #248] ; (80095e8 <HAL_GPIO_Init+0x19c>) + 80094ee: 606e str r6, [r5, #4] + + /* Clear EXTI line configuration */ +#ifdef CORE_CM0PLUS + temp = EXTI->C2IMR1; +#else + temp = EXTI->IMR1; + 80094f0: f8d5 5080 ldr.w r5, [r5, #128] ; 0x80 +#endif /* CORE_CM0PLUS */ + temp &= ~(iocurrent); + 80094f4: ea04 0605 and.w r6, r4, r5 + if ((GPIO_Init->Mode & EXTI_IT) != 0x00u) + 80094f8: f8d1 c004 ldr.w ip, [r1, #4] + 80094fc: f41c 3f80 tst.w ip, #65536 ; 0x10000 + 8009500: d001 beq.n 8009506 <HAL_GPIO_Init+0xba> + { + temp |= iocurrent; + 8009502: ea42 0605 orr.w r6, r2, r5 + } +#ifdef CORE_CM0PLUS + EXTI->C2IMR1 = temp; +#else + EXTI->IMR1 = temp; + 8009506: 4d38 ldr r5, [pc, #224] ; (80095e8 <HAL_GPIO_Init+0x19c>) + 8009508: f8c5 6080 str.w r6, [r5, #128] ; 0x80 +#endif /* CORE_CM0PLUS */ + +#ifdef CORE_CM0PLUS + temp = EXTI->C2EMR1; +#else + temp = EXTI->EMR1; + 800950c: f8d5 5084 ldr.w r5, [r5, #132] ; 0x84 +#endif /* CORE_CM0PLUS */ + temp &= ~(iocurrent); + 8009510: 402c ands r4, r5 + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00u) + 8009512: 684e ldr r6, [r1, #4] + 8009514: f416 3f00 tst.w r6, #131072 ; 0x20000 + 8009518: d001 beq.n 800951e <HAL_GPIO_Init+0xd2> + { + temp |= iocurrent; + 800951a: ea42 0405 orr.w r4, r2, r5 + } +#ifdef CORE_CM0PLUS + EXTI->C2EMR1 = temp; +#else + EXTI->EMR1 = temp; + 800951e: 4a32 ldr r2, [pc, #200] ; (80095e8 <HAL_GPIO_Init+0x19c>) + 8009520: f8c2 4084 str.w r4, [r2, #132] ; 0x84 +#endif /* CORE_CM0PLUS */ + } + } + + position++; + 8009524: 3301 adds r3, #1 + while (((GPIO_Init->Pin) >> position) != 0x00u) + 8009526: 680a ldr r2, [r1, #0] + 8009528: fa32 f403 lsrs.w r4, r2, r3 + 800952c: d058 beq.n 80095e0 <HAL_GPIO_Init+0x194> + iocurrent = (GPIO_Init->Pin) & (1uL << position); + 800952e: f04f 0c01 mov.w ip, #1 + 8009532: fa0c fc03 lsl.w ip, ip, r3 + if (iocurrent != 0x00u) + 8009536: ea1c 0202 ands.w r2, ip, r2 + 800953a: d0f3 beq.n 8009524 <HAL_GPIO_Init+0xd8> + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 800953c: 684c ldr r4, [r1, #4] + 800953e: f004 0403 and.w r4, r4, #3 + 8009542: 3c01 subs r4, #1 + 8009544: 2c01 cmp r4, #1 + 8009546: d984 bls.n 8009452 <HAL_GPIO_Init+0x6> + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 8009548: 684c ldr r4, [r1, #4] + 800954a: f004 0403 and.w r4, r4, #3 + 800954e: 2c03 cmp r4, #3 + 8009550: d00c beq.n 800956c <HAL_GPIO_Init+0x120> + temp = GPIOx->PUPDR; + 8009552: 68c4 ldr r4, [r0, #12] + temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); + 8009554: 005d lsls r5, r3, #1 + 8009556: f04f 0c03 mov.w ip, #3 + 800955a: fa0c fc05 lsl.w ip, ip, r5 + 800955e: ea24 0c0c bic.w ip, r4, ip + temp |= ((GPIO_Init->Pull) << (position * 2U)); + 8009562: 688c ldr r4, [r1, #8] + 8009564: 40ac lsls r4, r5 + 8009566: ea44 040c orr.w r4, r4, ip + GPIOx->PUPDR = temp; + 800956a: 60c4 str r4, [r0, #12] + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 800956c: 684c ldr r4, [r1, #4] + 800956e: f004 0403 and.w r4, r4, #3 + 8009572: 2c02 cmp r4, #2 + 8009574: d081 beq.n 800947a <HAL_GPIO_Init+0x2e> + temp = GPIOx->MODER; + 8009576: 6804 ldr r4, [r0, #0] + temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); + 8009578: ea4f 0e43 mov.w lr, r3, lsl #1 + 800957c: f04f 0c03 mov.w ip, #3 + 8009580: fa0c fc0e lsl.w ip, ip, lr + 8009584: ea24 0c0c bic.w ip, r4, ip + temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); + 8009588: 684c ldr r4, [r1, #4] + 800958a: f004 0403 and.w r4, r4, #3 + 800958e: fa04 f40e lsl.w r4, r4, lr + 8009592: ea44 040c orr.w r4, r4, ip + GPIOx->MODER = temp; + 8009596: 6004 str r4, [r0, #0] + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u) + 8009598: 684c ldr r4, [r1, #4] + 800959a: f414 3f40 tst.w r4, #196608 ; 0x30000 + 800959e: d0c1 beq.n 8009524 <HAL_GPIO_Init+0xd8> + temp = SYSCFG->EXTICR[position >> 2u]; + 80095a0: ea4f 0c93 mov.w ip, r3, lsr #2 + 80095a4: f10c 0502 add.w r5, ip, #2 + 80095a8: 4c0e ldr r4, [pc, #56] ; (80095e4 <HAL_GPIO_Init+0x198>) + 80095aa: f854 5025 ldr.w r5, [r4, r5, lsl #2] + temp &= ~(0x07uL << (4U * (position & 0x03U))); + 80095ae: f003 0e03 and.w lr, r3, #3 + 80095b2: ea4f 0e8e mov.w lr, lr, lsl #2 + 80095b6: 2407 movs r4, #7 + 80095b8: fa04 f40e lsl.w r4, r4, lr + 80095bc: ea25 0504 bic.w r5, r5, r4 + temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))); + 80095c0: f1b0 4f90 cmp.w r0, #1207959552 ; 0x48000000 + 80095c4: f43f af71 beq.w 80094aa <HAL_GPIO_Init+0x5e> + 80095c8: 4c08 ldr r4, [pc, #32] ; (80095ec <HAL_GPIO_Init+0x1a0>) + 80095ca: 42a0 cmp r0, r4 + 80095cc: d006 beq.n 80095dc <HAL_GPIO_Init+0x190> + 80095ce: f504 6480 add.w r4, r4, #1024 ; 0x400 + 80095d2: 42a0 cmp r0, r4 + 80095d4: f43f af67 beq.w 80094a6 <HAL_GPIO_Init+0x5a> + 80095d8: 2407 movs r4, #7 + 80095da: e767 b.n 80094ac <HAL_GPIO_Init+0x60> + 80095dc: 2401 movs r4, #1 + 80095de: e765 b.n 80094ac <HAL_GPIO_Init+0x60> + } +} + 80095e0: bd70 pop {r4, r5, r6, pc} + 80095e2: bf00 nop + 80095e4: 40010000 .word 0x40010000 + 80095e8: 58000800 .word 0x58000800 + 80095ec: 48000400 .word 0x48000400 + +080095f0 <HAL_GPIO_DeInit>: + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). + * @retval None + */ +void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) +{ + uint32_t position = 0x00u; + 80095f0: 2300 movs r3, #0 + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* Configure the port pins */ + while ((GPIO_Pin >> position) != 0x00u) + 80095f2: fa31 f203 lsrs.w r2, r1, r3 + 80095f6: d071 beq.n 80096dc <HAL_GPIO_DeInit+0xec> +{ + 80095f8: b5f0 push {r4, r5, r6, r7, lr} + 80095fa: e02e b.n 800965a <HAL_GPIO_DeInit+0x6a> + /*------------------------- EXTI Mode Configuration --------------------*/ + /* Clear the External Interrupt or Event for the current IO */ + + tmp = SYSCFG->EXTICR[position >> 2u]; + tmp &= (0x07uL << (4U * (position & 0x03U))); + if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) + 80095fc: 2502 movs r5, #2 + 80095fe: e000 b.n 8009602 <HAL_GPIO_DeInit+0x12> + 8009600: 2500 movs r5, #0 + 8009602: fa05 f50c lsl.w r5, r5, ip + 8009606: 42a5 cmp r5, r4 + 8009608: d049 beq.n 800969e <HAL_GPIO_DeInit+0xae> + SYSCFG->EXTICR[position >> 2u] &= ~tmp; + } + + /*------------------------- GPIO Mode Configuration --------------------*/ + /* Configure IO in Analog Mode */ + GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2U)); + 800960a: 6804 ldr r4, [r0, #0] + 800960c: 005d lsls r5, r3, #1 + 800960e: f04f 0c03 mov.w ip, #3 + 8009612: fa0c fc05 lsl.w ip, ip, r5 + 8009616: ea44 040c orr.w r4, r4, ip + 800961a: 6004 str r4, [r0, #0] + + /* Configure the default Alternate Function in current IO */ + GPIOx->AFR[position >> 3U] &= ~(0xFU << ((position & 0x07U) * 4U)) ; + 800961c: ea4f 0ed3 mov.w lr, r3, lsr #3 + 8009620: f10e 0e08 add.w lr, lr, #8 + 8009624: f850 402e ldr.w r4, [r0, lr, lsl #2] + 8009628: f003 0607 and.w r6, r3, #7 + 800962c: 00b6 lsls r6, r6, #2 + 800962e: 250f movs r5, #15 + 8009630: 40b5 lsls r5, r6 + 8009632: ea24 0405 bic.w r4, r4, r5 + 8009636: f840 402e str.w r4, [r0, lr, lsl #2] + + /* Configure the default value for IO Speed */ + GPIOx->OSPEEDR &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U)); + 800963a: 6884 ldr r4, [r0, #8] + 800963c: ea24 040c bic.w r4, r4, ip + 8009640: 6084 str r4, [r0, #8] + + /* Configure the default value IO Output Type */ + GPIOx->OTYPER &= ~(GPIO_OTYPER_OT0 << position) ; + 8009642: 6844 ldr r4, [r0, #4] + 8009644: ea24 0202 bic.w r2, r4, r2 + 8009648: 6042 str r2, [r0, #4] + + /* Deactivate the Pull-up and Pull-down resistor for the current IO */ + GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); + 800964a: 68c2 ldr r2, [r0, #12] + 800964c: ea22 020c bic.w r2, r2, ip + 8009650: 60c2 str r2, [r0, #12] + } + + position++; + 8009652: 3301 adds r3, #1 + while ((GPIO_Pin >> position) != 0x00u) + 8009654: fa31 f203 lsrs.w r2, r1, r3 + 8009658: d03f beq.n 80096da <HAL_GPIO_DeInit+0xea> + iocurrent = (GPIO_Pin) & (1uL << position); + 800965a: 2201 movs r2, #1 + 800965c: 409a lsls r2, r3 + if (iocurrent != 0x00u) + 800965e: ea12 0701 ands.w r7, r2, r1 + 8009662: d0f6 beq.n 8009652 <HAL_GPIO_DeInit+0x62> + tmp = SYSCFG->EXTICR[position >> 2u]; + 8009664: 089e lsrs r6, r3, #2 + 8009666: 1cb5 adds r5, r6, #2 + 8009668: 4c1d ldr r4, [pc, #116] ; (80096e0 <HAL_GPIO_DeInit+0xf0>) + 800966a: f854 4025 ldr.w r4, [r4, r5, lsl #2] + tmp &= (0x07uL << (4U * (position & 0x03U))); + 800966e: f003 0c03 and.w ip, r3, #3 + 8009672: ea4f 0c8c mov.w ip, ip, lsl #2 + 8009676: f04f 0e07 mov.w lr, #7 + 800967a: fa0e fe0c lsl.w lr, lr, ip + 800967e: ea0e 0404 and.w r4, lr, r4 + if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) + 8009682: f1b0 4f90 cmp.w r0, #1207959552 ; 0x48000000 + 8009686: d0bb beq.n 8009600 <HAL_GPIO_DeInit+0x10> + 8009688: 4d16 ldr r5, [pc, #88] ; (80096e4 <HAL_GPIO_DeInit+0xf4>) + 800968a: 42a8 cmp r0, r5 + 800968c: d005 beq.n 800969a <HAL_GPIO_DeInit+0xaa> + 800968e: f505 6580 add.w r5, r5, #1024 ; 0x400 + 8009692: 42a8 cmp r0, r5 + 8009694: d0b2 beq.n 80095fc <HAL_GPIO_DeInit+0xc> + 8009696: 2507 movs r5, #7 + 8009698: e7b3 b.n 8009602 <HAL_GPIO_DeInit+0x12> + 800969a: 2501 movs r5, #1 + 800969c: e7b1 b.n 8009602 <HAL_GPIO_DeInit+0x12> + EXTI->IMR1 &= ~(iocurrent); + 800969e: 4c12 ldr r4, [pc, #72] ; (80096e8 <HAL_GPIO_DeInit+0xf8>) + 80096a0: f8d4 5080 ldr.w r5, [r4, #128] ; 0x80 + 80096a4: ea25 0507 bic.w r5, r5, r7 + 80096a8: f8c4 5080 str.w r5, [r4, #128] ; 0x80 + EXTI->EMR1 &= ~(iocurrent); + 80096ac: f8d4 5084 ldr.w r5, [r4, #132] ; 0x84 + 80096b0: ea25 0507 bic.w r5, r5, r7 + 80096b4: f8c4 5084 str.w r5, [r4, #132] ; 0x84 + EXTI->RTSR1 &= ~(iocurrent); + 80096b8: 6825 ldr r5, [r4, #0] + 80096ba: ea25 0507 bic.w r5, r5, r7 + 80096be: 6025 str r5, [r4, #0] + EXTI->FTSR1 &= ~(iocurrent); + 80096c0: 6865 ldr r5, [r4, #4] + 80096c2: ea25 0507 bic.w r5, r5, r7 + 80096c6: 6065 str r5, [r4, #4] + SYSCFG->EXTICR[position >> 2u] &= ~tmp; + 80096c8: 4d05 ldr r5, [pc, #20] ; (80096e0 <HAL_GPIO_DeInit+0xf0>) + 80096ca: 3602 adds r6, #2 + 80096cc: f855 4026 ldr.w r4, [r5, r6, lsl #2] + 80096d0: ea24 040e bic.w r4, r4, lr + 80096d4: f845 4026 str.w r4, [r5, r6, lsl #2] + 80096d8: e797 b.n 800960a <HAL_GPIO_DeInit+0x1a> + } +} + 80096da: bdf0 pop {r4, r5, r6, r7, pc} + 80096dc: 4770 bx lr + 80096de: bf00 nop + 80096e0: 40010000 .word 0x40010000 + 80096e4: 48000400 .word 0x48000400 + 80096e8: 58000800 .word 0x58000800 + +080096ec <HAL_GPIO_ReadPin>: + GPIO_PinState bitstatus; + + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + if ((GPIOx->IDR & GPIO_Pin) != 0x00u) + 80096ec: 6903 ldr r3, [r0, #16] + 80096ee: 4219 tst r1, r3 + 80096f0: d001 beq.n 80096f6 <HAL_GPIO_ReadPin+0xa> + { + bitstatus = GPIO_PIN_SET; + 80096f2: 2001 movs r0, #1 + 80096f4: 4770 bx lr + } + else + { + bitstatus = GPIO_PIN_RESET; + 80096f6: 2000 movs r0, #0 + } + return bitstatus; +} + 80096f8: 4770 bx lr + +080096fa <HAL_GPIO_WritePin>: +{ + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + 80096fa: b10a cbz r2, 8009700 <HAL_GPIO_WritePin+0x6> + { + GPIOx->BSRR = (uint32_t)GPIO_Pin; + 80096fc: 6181 str r1, [r0, #24] + 80096fe: 4770 bx lr + } + else + { + GPIOx->BRR = (uint32_t)GPIO_Pin; + 8009700: 6281 str r1, [r0, #40] ; 0x28 + } +} + 8009702: 4770 bx lr + +08009704 <HAL_GPIO_EXTI_IRQHandler>: + * @brief Handle EXTI interrupt request. + * @param GPIO_Pin Specifies the port pin connected to corresponding EXTI line. + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + 8009704: b508 push {r3, lr} + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u) + 8009706: 4b05 ldr r3, [pc, #20] ; (800971c <HAL_GPIO_EXTI_IRQHandler+0x18>) + 8009708: 68db ldr r3, [r3, #12] + 800970a: 4203 tst r3, r0 + 800970c: d100 bne.n 8009710 <HAL_GPIO_EXTI_IRQHandler+0xc> + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + HAL_GPIO_EXTI_Callback(GPIO_Pin); + } +} + 800970e: bd08 pop {r3, pc} + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + 8009710: 4b02 ldr r3, [pc, #8] ; (800971c <HAL_GPIO_EXTI_IRQHandler+0x18>) + 8009712: 60d8 str r0, [r3, #12] + HAL_GPIO_EXTI_Callback(GPIO_Pin); + 8009714: f7fa faac bl 8003c70 <HAL_GPIO_EXTI_Callback> +} + 8009718: e7f9 b.n 800970e <HAL_GPIO_EXTI_IRQHandler+0xa> + 800971a: bf00 nop + 800971c: 58000800 .word 0x58000800 + +08009720 <I2C_Flush_TXDR>: + */ +static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) +{ + /* If a pending TXIS flag is set */ + /* Write a dummy data in TXDR to clear it */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) + 8009720: 6803 ldr r3, [r0, #0] + 8009722: 699a ldr r2, [r3, #24] + 8009724: f012 0f02 tst.w r2, #2 + 8009728: d001 beq.n 800972e <I2C_Flush_TXDR+0xe> + { + hi2c->Instance->TXDR = 0x00U; + 800972a: 2200 movs r2, #0 + 800972c: 629a str r2, [r3, #40] ; 0x28 + } + + /* Flush TX register if not empty */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) + 800972e: 6803 ldr r3, [r0, #0] + 8009730: 699a ldr r2, [r3, #24] + 8009732: f012 0f01 tst.w r2, #1 + 8009736: d103 bne.n 8009740 <I2C_Flush_TXDR+0x20> + { + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); + 8009738: 699a ldr r2, [r3, #24] + 800973a: f042 0201 orr.w r2, r2, #1 + 800973e: 619a str r2, [r3, #24] + } +} + 8009740: 4770 bx lr + +08009742 <I2C_TransferConfig>: + * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. + * @retval None + */ +static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, + uint32_t Request) +{ + 8009742: b410 push {r4} + 8009744: 9c01 ldr r4, [sp, #4] + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_TRANSFER_MODE(Mode)); + assert_param(IS_TRANSFER_REQUEST(Request)); + + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ + 8009746: f3c1 0109 ubfx r1, r1, #0, #10 + 800974a: ea41 4102 orr.w r1, r1, r2, lsl #16 + (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ + 800974e: 4319 orrs r1, r3 + uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ + 8009750: 4321 orrs r1, r4 + 8009752: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U)); + + /* update CR2 register */ + MODIFY_REG(hi2c->Instance->CR2, \ + 8009756: 6802 ldr r2, [r0, #0] + 8009758: 6853 ldr r3, [r2, #4] + 800975a: 0d64 lsrs r4, r4, #21 + 800975c: f404 6480 and.w r4, r4, #1024 ; 0x400 + 8009760: f044 747f orr.w r4, r4, #66846720 ; 0x3fc0000 + 8009764: f444 3458 orr.w r4, r4, #221184 ; 0x36000 + 8009768: f444 747f orr.w r4, r4, #1020 ; 0x3fc + 800976c: f044 0403 orr.w r4, r4, #3 + 8009770: ea23 0304 bic.w r3, r3, r4 + 8009774: 430b orrs r3, r1 + 8009776: 6053 str r3, [r2, #4] + ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ + (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ + I2C_CR2_START | I2C_CR2_STOP)), tmp); +} + 8009778: bc10 pop {r4} + 800977a: 4770 bx lr + +0800977c <I2C_IsErrorOccurred>: +{ + 800977c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8009780: 4604 mov r4, r0 + uint32_t itflag = hi2c->Instance->ISR; + 8009782: 6803 ldr r3, [r0, #0] + 8009784: 699e ldr r6, [r3, #24] + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF)) + 8009786: f016 0610 ands.w r6, r6, #16 + 800978a: d07c beq.n 8009886 <I2C_IsErrorOccurred+0x10a> + 800978c: 460d mov r5, r1 + 800978e: 4690 mov r8, r2 + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + 8009790: 2210 movs r2, #16 + 8009792: 61da str r2, [r3, #28] + uint32_t error_code = 0; + 8009794: 2600 movs r6, #0 + HAL_StatusTypeDef status = HAL_OK; + 8009796: 4637 mov r7, r6 + while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) + 8009798: 6823 ldr r3, [r4, #0] + 800979a: 6998 ldr r0, [r3, #24] + 800979c: f010 0f20 tst.w r0, #32 + 80097a0: d130 bne.n 8009804 <I2C_IsErrorOccurred+0x88> + 80097a2: bb7f cbnz r7, 8009804 <I2C_IsErrorOccurred+0x88> + if (Timeout != HAL_MAX_DELAY) + 80097a4: f1b5 3fff cmp.w r5, #4294967295 + 80097a8: d0f6 beq.n 8009798 <I2C_IsErrorOccurred+0x1c> + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + 80097aa: f7f9 fa75 bl 8002c98 <HAL_GetTick> + 80097ae: eba0 0008 sub.w r0, r0, r8 + 80097b2: 42a8 cmp r0, r5 + 80097b4: d801 bhi.n 80097ba <I2C_IsErrorOccurred+0x3e> + 80097b6: 2d00 cmp r5, #0 + 80097b8: d1ee bne.n 8009798 <I2C_IsErrorOccurred+0x1c> + tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); + 80097ba: 6821 ldr r1, [r4, #0] + 80097bc: 684b ldr r3, [r1, #4] + 80097be: f403 4380 and.w r3, r3, #16384 ; 0x4000 + tmp2 = hi2c->Mode; + 80097c2: f894 2042 ldrb.w r2, [r4, #66] ; 0x42 + 80097c6: b2d2 uxtb r2, r2 + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ + 80097c8: 6988 ldr r0, [r1, #24] + 80097ca: f410 4f00 tst.w r0, #32768 ; 0x8000 + 80097ce: d002 beq.n 80097d6 <I2C_IsErrorOccurred+0x5a> + 80097d0: b90b cbnz r3, 80097d6 <I2C_IsErrorOccurred+0x5a> + (tmp1 != I2C_CR2_STOP) && \ + 80097d2: 2a20 cmp r2, #32 + 80097d4: d10e bne.n 80097f4 <I2C_IsErrorOccurred+0x78> + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + 80097d6: 6823 ldr r3, [r4, #0] + 80097d8: 699b ldr r3, [r3, #24] + 80097da: f013 0f20 tst.w r3, #32 + 80097de: d1db bne.n 8009798 <I2C_IsErrorOccurred+0x1c> + if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF) + 80097e0: f7f9 fa5a bl 8002c98 <HAL_GetTick> + 80097e4: eba0 0008 sub.w r0, r0, r8 + 80097e8: 2819 cmp r0, #25 + 80097ea: d9f4 bls.n 80097d6 <I2C_IsErrorOccurred+0x5a> + error_code |=HAL_I2C_ERROR_TIMEOUT; + 80097ec: f046 0620 orr.w r6, r6, #32 + status = HAL_ERROR; + 80097f0: 2701 movs r7, #1 + break; + 80097f2: e7d1 b.n 8009798 <I2C_IsErrorOccurred+0x1c> + hi2c->Instance->CR2 |= I2C_CR2_STOP; + 80097f4: 684b ldr r3, [r1, #4] + 80097f6: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 80097fa: 604b str r3, [r1, #4] + tickstart = HAL_GetTick(); + 80097fc: f7f9 fa4c bl 8002c98 <HAL_GetTick> + 8009800: 4680 mov r8, r0 + 8009802: e7e8 b.n 80097d6 <I2C_IsErrorOccurred+0x5a> + if (status == HAL_OK) + 8009804: b90f cbnz r7, 800980a <I2C_IsErrorOccurred+0x8e> + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + 8009806: 2220 movs r2, #32 + 8009808: 61da str r2, [r3, #28] + error_code |= HAL_I2C_ERROR_AF; + 800980a: f046 0604 orr.w r6, r6, #4 + status = HAL_ERROR; + 800980e: 2501 movs r5, #1 + itflag = hi2c->Instance->ISR; + 8009810: 6822 ldr r2, [r4, #0] + 8009812: 6993 ldr r3, [r2, #24] + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR)) + 8009814: f413 7f80 tst.w r3, #256 ; 0x100 + 8009818: d005 beq.n 8009826 <I2C_IsErrorOccurred+0xaa> + error_code |= HAL_I2C_ERROR_BERR; + 800981a: f046 0601 orr.w r6, r6, #1 + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); + 800981e: f44f 7180 mov.w r1, #256 ; 0x100 + 8009822: 61d1 str r1, [r2, #28] + status = HAL_ERROR; + 8009824: 2501 movs r5, #1 + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR)) + 8009826: f413 6f80 tst.w r3, #1024 ; 0x400 + 800982a: d006 beq.n 800983a <I2C_IsErrorOccurred+0xbe> + error_code |= HAL_I2C_ERROR_OVR; + 800982c: f046 0608 orr.w r6, r6, #8 + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); + 8009830: 6822 ldr r2, [r4, #0] + 8009832: f44f 6180 mov.w r1, #1024 ; 0x400 + 8009836: 61d1 str r1, [r2, #28] + status = HAL_ERROR; + 8009838: 2501 movs r5, #1 + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO)) + 800983a: f413 7f00 tst.w r3, #512 ; 0x200 + 800983e: d024 beq.n 800988a <I2C_IsErrorOccurred+0x10e> + error_code |= HAL_I2C_ERROR_ARLO; + 8009840: f046 0602 orr.w r6, r6, #2 + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); + 8009844: 6823 ldr r3, [r4, #0] + 8009846: f44f 7200 mov.w r2, #512 ; 0x200 + 800984a: 61da str r2, [r3, #28] + status = HAL_ERROR; + 800984c: 2501 movs r5, #1 + I2C_Flush_TXDR(hi2c); + 800984e: 4620 mov r0, r4 + 8009850: f7ff ff66 bl 8009720 <I2C_Flush_TXDR> + I2C_RESET_CR2(hi2c); + 8009854: 6822 ldr r2, [r4, #0] + 8009856: 6853 ldr r3, [r2, #4] + 8009858: f023 73ff bic.w r3, r3, #33423360 ; 0x1fe0000 + 800985c: f423 338b bic.w r3, r3, #71168 ; 0x11600 + 8009860: f423 73ff bic.w r3, r3, #510 ; 0x1fe + 8009864: f023 0301 bic.w r3, r3, #1 + 8009868: 6053 str r3, [r2, #4] + hi2c->ErrorCode |= error_code; + 800986a: 6c63 ldr r3, [r4, #68] ; 0x44 + 800986c: 4333 orrs r3, r6 + 800986e: 6463 str r3, [r4, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 8009870: 2320 movs r3, #32 + 8009872: f884 3041 strb.w r3, [r4, #65] ; 0x41 + hi2c->Mode = HAL_I2C_MODE_NONE; + 8009876: 2300 movs r3, #0 + 8009878: f884 3042 strb.w r3, [r4, #66] ; 0x42 + __HAL_UNLOCK(hi2c); + 800987c: f884 3040 strb.w r3, [r4, #64] ; 0x40 +} + 8009880: 4628 mov r0, r5 + 8009882: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + HAL_StatusTypeDef status = HAL_OK; + 8009886: 2500 movs r5, #0 + 8009888: e7c2 b.n 8009810 <I2C_IsErrorOccurred+0x94> + if (status != HAL_OK) + 800988a: 2d00 cmp r5, #0 + 800988c: d0f8 beq.n 8009880 <I2C_IsErrorOccurred+0x104> + 800988e: e7de b.n 800984e <I2C_IsErrorOccurred+0xd2> + +08009890 <I2C_WaitOnTXISFlagUntilTimeout>: +{ + 8009890: b570 push {r4, r5, r6, lr} + 8009892: 4604 mov r4, r0 + 8009894: 460d mov r5, r1 + 8009896: 4616 mov r6, r2 + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) + 8009898: 6823 ldr r3, [r4, #0] + 800989a: 699b ldr r3, [r3, #24] + 800989c: f013 0f02 tst.w r3, #2 + 80098a0: d11d bne.n 80098de <I2C_WaitOnTXISFlagUntilTimeout+0x4e> + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + 80098a2: 4632 mov r2, r6 + 80098a4: 4629 mov r1, r5 + 80098a6: 4620 mov r0, r4 + 80098a8: f7ff ff68 bl 800977c <I2C_IsErrorOccurred> + 80098ac: b9c8 cbnz r0, 80098e2 <I2C_WaitOnTXISFlagUntilTimeout+0x52> + if (Timeout != HAL_MAX_DELAY) + 80098ae: f1b5 3fff cmp.w r5, #4294967295 + 80098b2: d0f1 beq.n 8009898 <I2C_WaitOnTXISFlagUntilTimeout+0x8> + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 80098b4: f7f9 f9f0 bl 8002c98 <HAL_GetTick> + 80098b8: 1b80 subs r0, r0, r6 + 80098ba: 42a8 cmp r0, r5 + 80098bc: d801 bhi.n 80098c2 <I2C_WaitOnTXISFlagUntilTimeout+0x32> + 80098be: 2d00 cmp r5, #0 + 80098c0: d1ea bne.n 8009898 <I2C_WaitOnTXISFlagUntilTimeout+0x8> + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + 80098c2: 6c63 ldr r3, [r4, #68] ; 0x44 + 80098c4: f043 0320 orr.w r3, r3, #32 + 80098c8: 6463 str r3, [r4, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 80098ca: 2320 movs r3, #32 + 80098cc: f884 3041 strb.w r3, [r4, #65] ; 0x41 + hi2c->Mode = HAL_I2C_MODE_NONE; + 80098d0: 2300 movs r3, #0 + 80098d2: f884 3042 strb.w r3, [r4, #66] ; 0x42 + __HAL_UNLOCK(hi2c); + 80098d6: f884 3040 strb.w r3, [r4, #64] ; 0x40 + return HAL_ERROR; + 80098da: 2001 movs r0, #1 + 80098dc: e000 b.n 80098e0 <I2C_WaitOnTXISFlagUntilTimeout+0x50> + return HAL_OK; + 80098de: 2000 movs r0, #0 +} + 80098e0: bd70 pop {r4, r5, r6, pc} + return HAL_ERROR; + 80098e2: 2001 movs r0, #1 + 80098e4: e7fc b.n 80098e0 <I2C_WaitOnTXISFlagUntilTimeout+0x50> + +080098e6 <I2C_WaitOnFlagUntilTimeout>: +{ + 80098e6: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80098ea: 4606 mov r6, r0 + 80098ec: 4688 mov r8, r1 + 80098ee: 4617 mov r7, r2 + 80098f0: 461d mov r5, r3 + while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) + 80098f2: 6834 ldr r4, [r6, #0] + 80098f4: 69a4 ldr r4, [r4, #24] + 80098f6: ea38 0404 bics.w r4, r8, r4 + 80098fa: bf0c ite eq + 80098fc: 2401 moveq r4, #1 + 80098fe: 2400 movne r4, #0 + 8009900: 42bc cmp r4, r7 + 8009902: d118 bne.n 8009936 <I2C_WaitOnFlagUntilTimeout+0x50> + if (Timeout != HAL_MAX_DELAY) + 8009904: f1b5 3fff cmp.w r5, #4294967295 + 8009908: d0f3 beq.n 80098f2 <I2C_WaitOnFlagUntilTimeout+0xc> + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 800990a: f7f9 f9c5 bl 8002c98 <HAL_GetTick> + 800990e: 9b06 ldr r3, [sp, #24] + 8009910: 1ac0 subs r0, r0, r3 + 8009912: 42a8 cmp r0, r5 + 8009914: d801 bhi.n 800991a <I2C_WaitOnFlagUntilTimeout+0x34> + 8009916: 2d00 cmp r5, #0 + 8009918: d1eb bne.n 80098f2 <I2C_WaitOnFlagUntilTimeout+0xc> + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + 800991a: 6c73 ldr r3, [r6, #68] ; 0x44 + 800991c: f043 0320 orr.w r3, r3, #32 + 8009920: 6473 str r3, [r6, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 8009922: 2320 movs r3, #32 + 8009924: f886 3041 strb.w r3, [r6, #65] ; 0x41 + hi2c->Mode = HAL_I2C_MODE_NONE; + 8009928: 2300 movs r3, #0 + 800992a: f886 3042 strb.w r3, [r6, #66] ; 0x42 + __HAL_UNLOCK(hi2c); + 800992e: f886 3040 strb.w r3, [r6, #64] ; 0x40 + return HAL_ERROR; + 8009932: 2001 movs r0, #1 + 8009934: e000 b.n 8009938 <I2C_WaitOnFlagUntilTimeout+0x52> + return HAL_OK; + 8009936: 2000 movs r0, #0 +} + 8009938: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +0800993c <I2C_WaitOnSTOPFlagUntilTimeout>: +{ + 800993c: b570 push {r4, r5, r6, lr} + 800993e: 4605 mov r5, r0 + 8009940: 460c mov r4, r1 + 8009942: 4616 mov r6, r2 + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + 8009944: 682b ldr r3, [r5, #0] + 8009946: 699b ldr r3, [r3, #24] + 8009948: f013 0f20 tst.w r3, #32 + 800994c: d11a bne.n 8009984 <I2C_WaitOnSTOPFlagUntilTimeout+0x48> + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + 800994e: 4632 mov r2, r6 + 8009950: 4621 mov r1, r4 + 8009952: 4628 mov r0, r5 + 8009954: f7ff ff12 bl 800977c <I2C_IsErrorOccurred> + 8009958: b9b0 cbnz r0, 8009988 <I2C_WaitOnSTOPFlagUntilTimeout+0x4c> + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 800995a: f7f9 f99d bl 8002c98 <HAL_GetTick> + 800995e: 1b80 subs r0, r0, r6 + 8009960: 42a0 cmp r0, r4 + 8009962: d801 bhi.n 8009968 <I2C_WaitOnSTOPFlagUntilTimeout+0x2c> + 8009964: 2c00 cmp r4, #0 + 8009966: d1ed bne.n 8009944 <I2C_WaitOnSTOPFlagUntilTimeout+0x8> + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + 8009968: 6c6b ldr r3, [r5, #68] ; 0x44 + 800996a: f043 0320 orr.w r3, r3, #32 + 800996e: 646b str r3, [r5, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 8009970: 2320 movs r3, #32 + 8009972: f885 3041 strb.w r3, [r5, #65] ; 0x41 + hi2c->Mode = HAL_I2C_MODE_NONE; + 8009976: 2300 movs r3, #0 + 8009978: f885 3042 strb.w r3, [r5, #66] ; 0x42 + __HAL_UNLOCK(hi2c); + 800997c: f885 3040 strb.w r3, [r5, #64] ; 0x40 + return HAL_ERROR; + 8009980: 2001 movs r0, #1 +} + 8009982: bd70 pop {r4, r5, r6, pc} + return HAL_OK; + 8009984: 2000 movs r0, #0 + 8009986: e7fc b.n 8009982 <I2C_WaitOnSTOPFlagUntilTimeout+0x46> + return HAL_ERROR; + 8009988: 2001 movs r0, #1 + 800998a: e7fa b.n 8009982 <I2C_WaitOnSTOPFlagUntilTimeout+0x46> + +0800998c <I2C_WaitOnRXNEFlagUntilTimeout>: +{ + 800998c: b570 push {r4, r5, r6, lr} + 800998e: 4604 mov r4, r0 + 8009990: 460d mov r5, r1 + 8009992: 4616 mov r6, r2 + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) + 8009994: 6823 ldr r3, [r4, #0] + 8009996: 699b ldr r3, [r3, #24] + 8009998: f013 0f04 tst.w r3, #4 + 800999c: d149 bne.n 8009a32 <I2C_WaitOnRXNEFlagUntilTimeout+0xa6> + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + 800999e: 4632 mov r2, r6 + 80099a0: 4629 mov r1, r5 + 80099a2: 4620 mov r0, r4 + 80099a4: f7ff feea bl 800977c <I2C_IsErrorOccurred> + 80099a8: 4601 mov r1, r0 + 80099aa: 2800 cmp r0, #0 + 80099ac: d143 bne.n 8009a36 <I2C_WaitOnRXNEFlagUntilTimeout+0xaa> + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) + 80099ae: 6823 ldr r3, [r4, #0] + 80099b0: 699a ldr r2, [r3, #24] + 80099b2: f012 0f20 tst.w r2, #32 + 80099b6: d113 bne.n 80099e0 <I2C_WaitOnRXNEFlagUntilTimeout+0x54> + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 80099b8: f7f9 f96e bl 8002c98 <HAL_GetTick> + 80099bc: 1b80 subs r0, r0, r6 + 80099be: 42a8 cmp r0, r5 + 80099c0: d801 bhi.n 80099c6 <I2C_WaitOnRXNEFlagUntilTimeout+0x3a> + 80099c2: 2d00 cmp r5, #0 + 80099c4: d1e6 bne.n 8009994 <I2C_WaitOnRXNEFlagUntilTimeout+0x8> + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + 80099c6: 6c63 ldr r3, [r4, #68] ; 0x44 + 80099c8: f043 0320 orr.w r3, r3, #32 + 80099cc: 6463 str r3, [r4, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 80099ce: 2320 movs r3, #32 + 80099d0: f884 3041 strb.w r3, [r4, #65] ; 0x41 + __HAL_UNLOCK(hi2c); + 80099d4: 2300 movs r3, #0 + 80099d6: f884 3040 strb.w r3, [r4, #64] ; 0x40 + return HAL_ERROR; + 80099da: 2101 movs r1, #1 +} + 80099dc: 4608 mov r0, r1 + 80099de: bd70 pop {r4, r5, r6, pc} + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) + 80099e0: 699a ldr r2, [r3, #24] + 80099e2: f012 0f04 tst.w r2, #4 + 80099e6: d002 beq.n 80099ee <I2C_WaitOnRXNEFlagUntilTimeout+0x62> + 80099e8: 8d22 ldrh r2, [r4, #40] ; 0x28 + 80099ea: 2a00 cmp r2, #0 + 80099ec: d1f6 bne.n 80099dc <I2C_WaitOnRXNEFlagUntilTimeout+0x50> + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) + 80099ee: 699a ldr r2, [r3, #24] + 80099f0: f012 0f10 tst.w r2, #16 + 80099f4: d01a beq.n 8009a2c <I2C_WaitOnRXNEFlagUntilTimeout+0xa0> + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + 80099f6: 2210 movs r2, #16 + 80099f8: 61da str r2, [r3, #28] + hi2c->ErrorCode = HAL_I2C_ERROR_AF; + 80099fa: 2304 movs r3, #4 + 80099fc: 6463 str r3, [r4, #68] ; 0x44 + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + 80099fe: 6823 ldr r3, [r4, #0] + 8009a00: 2220 movs r2, #32 + 8009a02: 61da str r2, [r3, #28] + I2C_RESET_CR2(hi2c); + 8009a04: 6821 ldr r1, [r4, #0] + 8009a06: 684b ldr r3, [r1, #4] + 8009a08: f023 73ff bic.w r3, r3, #33423360 ; 0x1fe0000 + 8009a0c: f423 338b bic.w r3, r3, #71168 ; 0x11600 + 8009a10: f423 73ff bic.w r3, r3, #510 ; 0x1fe + 8009a14: f023 0301 bic.w r3, r3, #1 + 8009a18: 604b str r3, [r1, #4] + hi2c->State = HAL_I2C_STATE_READY; + 8009a1a: f884 2041 strb.w r2, [r4, #65] ; 0x41 + hi2c->Mode = HAL_I2C_MODE_NONE; + 8009a1e: 2300 movs r3, #0 + 8009a20: f884 3042 strb.w r3, [r4, #66] ; 0x42 + __HAL_UNLOCK(hi2c); + 8009a24: f884 3040 strb.w r3, [r4, #64] ; 0x40 + return HAL_ERROR; + 8009a28: 2101 movs r1, #1 + 8009a2a: e7d7 b.n 80099dc <I2C_WaitOnRXNEFlagUntilTimeout+0x50> + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8009a2c: 2300 movs r3, #0 + 8009a2e: 6463 str r3, [r4, #68] ; 0x44 + 8009a30: e7e5 b.n 80099fe <I2C_WaitOnRXNEFlagUntilTimeout+0x72> + return HAL_OK; + 8009a32: 2100 movs r1, #0 + 8009a34: e7d2 b.n 80099dc <I2C_WaitOnRXNEFlagUntilTimeout+0x50> + return HAL_ERROR; + 8009a36: 2101 movs r1, #1 + 8009a38: e7d0 b.n 80099dc <I2C_WaitOnRXNEFlagUntilTimeout+0x50> + +08009a3a <HAL_I2C_Init>: + if (hi2c == NULL) + 8009a3a: 2800 cmp r0, #0 + 8009a3c: d059 beq.n 8009af2 <HAL_I2C_Init+0xb8> +{ + 8009a3e: b510 push {r4, lr} + 8009a40: 4604 mov r4, r0 + if (hi2c->State == HAL_I2C_STATE_RESET) + 8009a42: f890 3041 ldrb.w r3, [r0, #65] ; 0x41 + 8009a46: 2b00 cmp r3, #0 + 8009a48: d043 beq.n 8009ad2 <HAL_I2C_Init+0x98> + hi2c->State = HAL_I2C_STATE_BUSY; + 8009a4a: 2324 movs r3, #36 ; 0x24 + 8009a4c: f884 3041 strb.w r3, [r4, #65] ; 0x41 + __HAL_I2C_DISABLE(hi2c); + 8009a50: 6822 ldr r2, [r4, #0] + 8009a52: 6813 ldr r3, [r2, #0] + 8009a54: f023 0301 bic.w r3, r3, #1 + 8009a58: 6013 str r3, [r2, #0] + hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; + 8009a5a: 6863 ldr r3, [r4, #4] + 8009a5c: 6822 ldr r2, [r4, #0] + 8009a5e: f023 6370 bic.w r3, r3, #251658240 ; 0xf000000 + 8009a62: 6113 str r3, [r2, #16] + hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; + 8009a64: 6822 ldr r2, [r4, #0] + 8009a66: 6893 ldr r3, [r2, #8] + 8009a68: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8009a6c: 6093 str r3, [r2, #8] + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) + 8009a6e: 68e3 ldr r3, [r4, #12] + 8009a70: 2b01 cmp r3, #1 + 8009a72: d033 beq.n 8009adc <HAL_I2C_Init+0xa2> + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); + 8009a74: 68a3 ldr r3, [r4, #8] + 8009a76: 6822 ldr r2, [r4, #0] + 8009a78: f443 4304 orr.w r3, r3, #33792 ; 0x8400 + 8009a7c: 6093 str r3, [r2, #8] + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + 8009a7e: 68e3 ldr r3, [r4, #12] + 8009a80: 2b02 cmp r3, #2 + 8009a82: d031 beq.n 8009ae8 <HAL_I2C_Init+0xae> + hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); + 8009a84: 6822 ldr r2, [r4, #0] + 8009a86: 6853 ldr r3, [r2, #4] + 8009a88: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000 + 8009a8c: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8009a90: 6053 str r3, [r2, #4] + hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; + 8009a92: 6822 ldr r2, [r4, #0] + 8009a94: 68d3 ldr r3, [r2, #12] + 8009a96: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8009a9a: 60d3 str r3, [r2, #12] + hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ + 8009a9c: 6923 ldr r3, [r4, #16] + 8009a9e: 6962 ldr r2, [r4, #20] + 8009aa0: 4313 orrs r3, r2 + (hi2c->Init.OwnAddress2Masks << 8)); + 8009aa2: 69a1 ldr r1, [r4, #24] + hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ + 8009aa4: 6822 ldr r2, [r4, #0] + 8009aa6: ea43 2301 orr.w r3, r3, r1, lsl #8 + 8009aaa: 60d3 str r3, [r2, #12] + hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); + 8009aac: 69e3 ldr r3, [r4, #28] + 8009aae: 6a21 ldr r1, [r4, #32] + 8009ab0: 6822 ldr r2, [r4, #0] + 8009ab2: 430b orrs r3, r1 + 8009ab4: 6013 str r3, [r2, #0] + __HAL_I2C_ENABLE(hi2c); + 8009ab6: 6822 ldr r2, [r4, #0] + 8009ab8: 6813 ldr r3, [r2, #0] + 8009aba: f043 0301 orr.w r3, r3, #1 + 8009abe: 6013 str r3, [r2, #0] + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8009ac0: 2000 movs r0, #0 + 8009ac2: 6460 str r0, [r4, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 8009ac4: 2320 movs r3, #32 + 8009ac6: f884 3041 strb.w r3, [r4, #65] ; 0x41 + hi2c->PreviousState = I2C_STATE_NONE; + 8009aca: 6320 str r0, [r4, #48] ; 0x30 + hi2c->Mode = HAL_I2C_MODE_NONE; + 8009acc: f884 0042 strb.w r0, [r4, #66] ; 0x42 +} + 8009ad0: bd10 pop {r4, pc} + hi2c->Lock = HAL_UNLOCKED; + 8009ad2: f880 3040 strb.w r3, [r0, #64] ; 0x40 + HAL_I2C_MspInit(hi2c); + 8009ad6: f7f8 fd83 bl 80025e0 <HAL_I2C_MspInit> + 8009ada: e7b6 b.n 8009a4a <HAL_I2C_Init+0x10> + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); + 8009adc: 68a3 ldr r3, [r4, #8] + 8009ade: 6822 ldr r2, [r4, #0] + 8009ae0: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8009ae4: 6093 str r3, [r2, #8] + 8009ae6: e7ca b.n 8009a7e <HAL_I2C_Init+0x44> + hi2c->Instance->CR2 = (I2C_CR2_ADD10); + 8009ae8: 6823 ldr r3, [r4, #0] + 8009aea: f44f 6200 mov.w r2, #2048 ; 0x800 + 8009aee: 605a str r2, [r3, #4] + 8009af0: e7c8 b.n 8009a84 <HAL_I2C_Init+0x4a> + return HAL_ERROR; + 8009af2: 2001 movs r0, #1 +} + 8009af4: 4770 bx lr + ... + +08009af8 <HAL_I2C_Master_Transmit>: +{ + 8009af8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8009afc: b082 sub sp, #8 + 8009afe: 460f mov r7, r1 + 8009b00: 9e0a ldr r6, [sp, #40] ; 0x28 + if (hi2c->State == HAL_I2C_STATE_READY) + 8009b02: f890 1041 ldrb.w r1, [r0, #65] ; 0x41 + 8009b06: b2c9 uxtb r1, r1 + 8009b08: 2920 cmp r1, #32 + 8009b0a: f040 80a3 bne.w 8009c54 <HAL_I2C_Master_Transmit+0x15c> + 8009b0e: 4604 mov r4, r0 + 8009b10: 4690 mov r8, r2 + 8009b12: 4699 mov r9, r3 + __HAL_LOCK(hi2c); + 8009b14: f890 3040 ldrb.w r3, [r0, #64] ; 0x40 + 8009b18: 2b01 cmp r3, #1 + 8009b1a: f000 809f beq.w 8009c5c <HAL_I2C_Master_Transmit+0x164> + 8009b1e: f04f 0a01 mov.w sl, #1 + 8009b22: f880 a040 strb.w sl, [r0, #64] ; 0x40 + tickstart = HAL_GetTick(); + 8009b26: f7f9 f8b7 bl 8002c98 <HAL_GetTick> + 8009b2a: 4605 mov r5, r0 + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + 8009b2c: 9000 str r0, [sp, #0] + 8009b2e: 2319 movs r3, #25 + 8009b30: 4652 mov r2, sl + 8009b32: f44f 4100 mov.w r1, #32768 ; 0x8000 + 8009b36: 4620 mov r0, r4 + 8009b38: f7ff fed5 bl 80098e6 <I2C_WaitOnFlagUntilTimeout> + 8009b3c: 2800 cmp r0, #0 + 8009b3e: f040 808f bne.w 8009c60 <HAL_I2C_Master_Transmit+0x168> + hi2c->State = HAL_I2C_STATE_BUSY_TX; + 8009b42: 2321 movs r3, #33 ; 0x21 + 8009b44: f884 3041 strb.w r3, [r4, #65] ; 0x41 + hi2c->Mode = HAL_I2C_MODE_MASTER; + 8009b48: 2310 movs r3, #16 + 8009b4a: f884 3042 strb.w r3, [r4, #66] ; 0x42 + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8009b4e: 2300 movs r3, #0 + 8009b50: 6463 str r3, [r4, #68] ; 0x44 + hi2c->pBuffPtr = pData; + 8009b52: f8c4 8024 str.w r8, [r4, #36] ; 0x24 + hi2c->XferCount = Size; + 8009b56: f8a4 902a strh.w r9, [r4, #42] ; 0x2a + hi2c->XferISR = NULL; + 8009b5a: 6363 str r3, [r4, #52] ; 0x34 + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 8009b5c: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8009b5e: b29b uxth r3, r3 + 8009b60: 2bff cmp r3, #255 ; 0xff + 8009b62: d90a bls.n 8009b7a <HAL_I2C_Master_Transmit+0x82> + hi2c->XferSize = MAX_NBYTE_SIZE; + 8009b64: 22ff movs r2, #255 ; 0xff + 8009b66: 8522 strh r2, [r4, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 8009b68: 4b41 ldr r3, [pc, #260] ; (8009c70 <HAL_I2C_Master_Transmit+0x178>) + 8009b6a: 9300 str r3, [sp, #0] + 8009b6c: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + 8009b70: 4639 mov r1, r7 + 8009b72: 4620 mov r0, r4 + 8009b74: f7ff fde5 bl 8009742 <I2C_TransferConfig> + 8009b78: e018 b.n 8009bac <HAL_I2C_Master_Transmit+0xb4> + hi2c->XferSize = hi2c->XferCount; + 8009b7a: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8009b7c: b292 uxth r2, r2 + 8009b7e: 8522 strh r2, [r4, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 8009b80: 4b3b ldr r3, [pc, #236] ; (8009c70 <HAL_I2C_Master_Transmit+0x178>) + 8009b82: 9300 str r3, [sp, #0] + 8009b84: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + 8009b88: b2d2 uxtb r2, r2 + 8009b8a: 4639 mov r1, r7 + 8009b8c: 4620 mov r0, r4 + 8009b8e: f7ff fdd8 bl 8009742 <I2C_TransferConfig> + 8009b92: e00b b.n 8009bac <HAL_I2C_Master_Transmit+0xb4> + hi2c->XferSize = hi2c->XferCount; + 8009b94: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8009b96: b292 uxth r2, r2 + 8009b98: 8522 strh r2, [r4, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 8009b9a: 2300 movs r3, #0 + 8009b9c: 9300 str r3, [sp, #0] + 8009b9e: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + 8009ba2: b2d2 uxtb r2, r2 + 8009ba4: 4639 mov r1, r7 + 8009ba6: 4620 mov r0, r4 + 8009ba8: f7ff fdcb bl 8009742 <I2C_TransferConfig> + while (hi2c->XferCount > 0U) + 8009bac: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8009bae: b29b uxth r3, r3 + 8009bb0: 2b00 cmp r3, #0 + 8009bb2: d033 beq.n 8009c1c <HAL_I2C_Master_Transmit+0x124> + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8009bb4: 462a mov r2, r5 + 8009bb6: 4631 mov r1, r6 + 8009bb8: 4620 mov r0, r4 + 8009bba: f7ff fe69 bl 8009890 <I2C_WaitOnTXISFlagUntilTimeout> + 8009bbe: 2800 cmp r0, #0 + 8009bc0: d150 bne.n 8009c64 <HAL_I2C_Master_Transmit+0x16c> + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + 8009bc2: 6a62 ldr r2, [r4, #36] ; 0x24 + 8009bc4: 6823 ldr r3, [r4, #0] + 8009bc6: 7812 ldrb r2, [r2, #0] + 8009bc8: 629a str r2, [r3, #40] ; 0x28 + hi2c->pBuffPtr++; + 8009bca: 6a63 ldr r3, [r4, #36] ; 0x24 + 8009bcc: 3301 adds r3, #1 + 8009bce: 6263 str r3, [r4, #36] ; 0x24 + hi2c->XferCount--; + 8009bd0: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8009bd2: b29b uxth r3, r3 + 8009bd4: 3b01 subs r3, #1 + 8009bd6: b29b uxth r3, r3 + 8009bd8: 8563 strh r3, [r4, #42] ; 0x2a + hi2c->XferSize--; + 8009bda: 8d23 ldrh r3, [r4, #40] ; 0x28 + 8009bdc: 3b01 subs r3, #1 + 8009bde: b29b uxth r3, r3 + 8009be0: 8523 strh r3, [r4, #40] ; 0x28 + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + 8009be2: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8009be4: b292 uxth r2, r2 + 8009be6: 2a00 cmp r2, #0 + 8009be8: d0e0 beq.n 8009bac <HAL_I2C_Master_Transmit+0xb4> + 8009bea: 2b00 cmp r3, #0 + 8009bec: d1de bne.n 8009bac <HAL_I2C_Master_Transmit+0xb4> + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + 8009bee: 9500 str r5, [sp, #0] + 8009bf0: 4633 mov r3, r6 + 8009bf2: 2200 movs r2, #0 + 8009bf4: 2180 movs r1, #128 ; 0x80 + 8009bf6: 4620 mov r0, r4 + 8009bf8: f7ff fe75 bl 80098e6 <I2C_WaitOnFlagUntilTimeout> + 8009bfc: bba0 cbnz r0, 8009c68 <HAL_I2C_Master_Transmit+0x170> + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 8009bfe: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8009c00: b29b uxth r3, r3 + 8009c02: 2bff cmp r3, #255 ; 0xff + 8009c04: d9c6 bls.n 8009b94 <HAL_I2C_Master_Transmit+0x9c> + hi2c->XferSize = MAX_NBYTE_SIZE; + 8009c06: 22ff movs r2, #255 ; 0xff + 8009c08: 8522 strh r2, [r4, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 8009c0a: 2300 movs r3, #0 + 8009c0c: 9300 str r3, [sp, #0] + 8009c0e: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + 8009c12: 4639 mov r1, r7 + 8009c14: 4620 mov r0, r4 + 8009c16: f7ff fd94 bl 8009742 <I2C_TransferConfig> + 8009c1a: e7c7 b.n 8009bac <HAL_I2C_Master_Transmit+0xb4> + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8009c1c: 462a mov r2, r5 + 8009c1e: 4631 mov r1, r6 + 8009c20: 4620 mov r0, r4 + 8009c22: f7ff fe8b bl 800993c <I2C_WaitOnSTOPFlagUntilTimeout> + 8009c26: bb08 cbnz r0, 8009c6c <HAL_I2C_Master_Transmit+0x174> + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + 8009c28: 6823 ldr r3, [r4, #0] + 8009c2a: 2220 movs r2, #32 + 8009c2c: 61da str r2, [r3, #28] + I2C_RESET_CR2(hi2c); + 8009c2e: 6821 ldr r1, [r4, #0] + 8009c30: 684b ldr r3, [r1, #4] + 8009c32: f023 73ff bic.w r3, r3, #33423360 ; 0x1fe0000 + 8009c36: f423 338b bic.w r3, r3, #71168 ; 0x11600 + 8009c3a: f423 73ff bic.w r3, r3, #510 ; 0x1fe + 8009c3e: f023 0301 bic.w r3, r3, #1 + 8009c42: 604b str r3, [r1, #4] + hi2c->State = HAL_I2C_STATE_READY; + 8009c44: f884 2041 strb.w r2, [r4, #65] ; 0x41 + hi2c->Mode = HAL_I2C_MODE_NONE; + 8009c48: 2300 movs r3, #0 + 8009c4a: f884 3042 strb.w r3, [r4, #66] ; 0x42 + __HAL_UNLOCK(hi2c); + 8009c4e: f884 3040 strb.w r3, [r4, #64] ; 0x40 + return HAL_OK; + 8009c52: e000 b.n 8009c56 <HAL_I2C_Master_Transmit+0x15e> + return HAL_BUSY; + 8009c54: 2002 movs r0, #2 +} + 8009c56: b002 add sp, #8 + 8009c58: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + __HAL_LOCK(hi2c); + 8009c5c: 2002 movs r0, #2 + 8009c5e: e7fa b.n 8009c56 <HAL_I2C_Master_Transmit+0x15e> + return HAL_ERROR; + 8009c60: 2001 movs r0, #1 + 8009c62: e7f8 b.n 8009c56 <HAL_I2C_Master_Transmit+0x15e> + return HAL_ERROR; + 8009c64: 2001 movs r0, #1 + 8009c66: e7f6 b.n 8009c56 <HAL_I2C_Master_Transmit+0x15e> + return HAL_ERROR; + 8009c68: 2001 movs r0, #1 + 8009c6a: e7f4 b.n 8009c56 <HAL_I2C_Master_Transmit+0x15e> + return HAL_ERROR; + 8009c6c: 2001 movs r0, #1 + 8009c6e: e7f2 b.n 8009c56 <HAL_I2C_Master_Transmit+0x15e> + 8009c70: 80002000 .word 0x80002000 + +08009c74 <HAL_I2C_Master_Receive>: +{ + 8009c74: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8009c78: b082 sub sp, #8 + 8009c7a: 460f mov r7, r1 + 8009c7c: 9e0a ldr r6, [sp, #40] ; 0x28 + if (hi2c->State == HAL_I2C_STATE_READY) + 8009c7e: f890 1041 ldrb.w r1, [r0, #65] ; 0x41 + 8009c82: b2c9 uxtb r1, r1 + 8009c84: 2920 cmp r1, #32 + 8009c86: f040 80a2 bne.w 8009dce <HAL_I2C_Master_Receive+0x15a> + 8009c8a: 4604 mov r4, r0 + 8009c8c: 4690 mov r8, r2 + 8009c8e: 4699 mov r9, r3 + __HAL_LOCK(hi2c); + 8009c90: f890 3040 ldrb.w r3, [r0, #64] ; 0x40 + 8009c94: 2b01 cmp r3, #1 + 8009c96: f000 809e beq.w 8009dd6 <HAL_I2C_Master_Receive+0x162> + 8009c9a: f04f 0a01 mov.w sl, #1 + 8009c9e: f880 a040 strb.w sl, [r0, #64] ; 0x40 + tickstart = HAL_GetTick(); + 8009ca2: f7f8 fff9 bl 8002c98 <HAL_GetTick> + 8009ca6: 4605 mov r5, r0 + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + 8009ca8: 9000 str r0, [sp, #0] + 8009caa: 2319 movs r3, #25 + 8009cac: 4652 mov r2, sl + 8009cae: f44f 4100 mov.w r1, #32768 ; 0x8000 + 8009cb2: 4620 mov r0, r4 + 8009cb4: f7ff fe17 bl 80098e6 <I2C_WaitOnFlagUntilTimeout> + 8009cb8: 2800 cmp r0, #0 + 8009cba: f040 808e bne.w 8009dda <HAL_I2C_Master_Receive+0x166> + hi2c->State = HAL_I2C_STATE_BUSY_RX; + 8009cbe: 2322 movs r3, #34 ; 0x22 + 8009cc0: f884 3041 strb.w r3, [r4, #65] ; 0x41 + hi2c->Mode = HAL_I2C_MODE_MASTER; + 8009cc4: 2310 movs r3, #16 + 8009cc6: f884 3042 strb.w r3, [r4, #66] ; 0x42 + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8009cca: 2300 movs r3, #0 + 8009ccc: 6463 str r3, [r4, #68] ; 0x44 + hi2c->pBuffPtr = pData; + 8009cce: f8c4 8024 str.w r8, [r4, #36] ; 0x24 + hi2c->XferCount = Size; + 8009cd2: f8a4 902a strh.w r9, [r4, #42] ; 0x2a + hi2c->XferISR = NULL; + 8009cd6: 6363 str r3, [r4, #52] ; 0x34 + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 8009cd8: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8009cda: b29b uxth r3, r3 + 8009cdc: 2bff cmp r3, #255 ; 0xff + 8009cde: d90a bls.n 8009cf6 <HAL_I2C_Master_Receive+0x82> + hi2c->XferSize = MAX_NBYTE_SIZE; + 8009ce0: 22ff movs r2, #255 ; 0xff + 8009ce2: 8522 strh r2, [r4, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 8009ce4: 4b41 ldr r3, [pc, #260] ; (8009dec <HAL_I2C_Master_Receive+0x178>) + 8009ce6: 9300 str r3, [sp, #0] + 8009ce8: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + 8009cec: 4639 mov r1, r7 + 8009cee: 4620 mov r0, r4 + 8009cf0: f7ff fd27 bl 8009742 <I2C_TransferConfig> + 8009cf4: e018 b.n 8009d28 <HAL_I2C_Master_Receive+0xb4> + hi2c->XferSize = hi2c->XferCount; + 8009cf6: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8009cf8: b292 uxth r2, r2 + 8009cfa: 8522 strh r2, [r4, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 8009cfc: 4b3b ldr r3, [pc, #236] ; (8009dec <HAL_I2C_Master_Receive+0x178>) + 8009cfe: 9300 str r3, [sp, #0] + 8009d00: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + 8009d04: b2d2 uxtb r2, r2 + 8009d06: 4639 mov r1, r7 + 8009d08: 4620 mov r0, r4 + 8009d0a: f7ff fd1a bl 8009742 <I2C_TransferConfig> + 8009d0e: e00b b.n 8009d28 <HAL_I2C_Master_Receive+0xb4> + hi2c->XferSize = hi2c->XferCount; + 8009d10: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8009d12: b292 uxth r2, r2 + 8009d14: 8522 strh r2, [r4, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 8009d16: 2300 movs r3, #0 + 8009d18: 9300 str r3, [sp, #0] + 8009d1a: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + 8009d1e: b2d2 uxtb r2, r2 + 8009d20: 4639 mov r1, r7 + 8009d22: 4620 mov r0, r4 + 8009d24: f7ff fd0d bl 8009742 <I2C_TransferConfig> + while (hi2c->XferCount > 0U) + 8009d28: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8009d2a: b29b uxth r3, r3 + 8009d2c: 2b00 cmp r3, #0 + 8009d2e: d032 beq.n 8009d96 <HAL_I2C_Master_Receive+0x122> + if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8009d30: 462a mov r2, r5 + 8009d32: 4631 mov r1, r6 + 8009d34: 4620 mov r0, r4 + 8009d36: f7ff fe29 bl 800998c <I2C_WaitOnRXNEFlagUntilTimeout> + 8009d3a: 2800 cmp r0, #0 + 8009d3c: d14f bne.n 8009dde <HAL_I2C_Master_Receive+0x16a> + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + 8009d3e: 6823 ldr r3, [r4, #0] + 8009d40: 6a5a ldr r2, [r3, #36] ; 0x24 + 8009d42: 6a63 ldr r3, [r4, #36] ; 0x24 + 8009d44: 701a strb r2, [r3, #0] + hi2c->pBuffPtr++; + 8009d46: 6a63 ldr r3, [r4, #36] ; 0x24 + 8009d48: 3301 adds r3, #1 + 8009d4a: 6263 str r3, [r4, #36] ; 0x24 + hi2c->XferSize--; + 8009d4c: 8d22 ldrh r2, [r4, #40] ; 0x28 + 8009d4e: 3a01 subs r2, #1 + 8009d50: b292 uxth r2, r2 + 8009d52: 8522 strh r2, [r4, #40] ; 0x28 + hi2c->XferCount--; + 8009d54: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8009d56: b29b uxth r3, r3 + 8009d58: 3b01 subs r3, #1 + 8009d5a: b29b uxth r3, r3 + 8009d5c: 8563 strh r3, [r4, #42] ; 0x2a + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + 8009d5e: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8009d60: b29b uxth r3, r3 + 8009d62: 2b00 cmp r3, #0 + 8009d64: d0e0 beq.n 8009d28 <HAL_I2C_Master_Receive+0xb4> + 8009d66: 2a00 cmp r2, #0 + 8009d68: d1de bne.n 8009d28 <HAL_I2C_Master_Receive+0xb4> + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + 8009d6a: 9500 str r5, [sp, #0] + 8009d6c: 4633 mov r3, r6 + 8009d6e: 2180 movs r1, #128 ; 0x80 + 8009d70: 4620 mov r0, r4 + 8009d72: f7ff fdb8 bl 80098e6 <I2C_WaitOnFlagUntilTimeout> + 8009d76: bba0 cbnz r0, 8009de2 <HAL_I2C_Master_Receive+0x16e> + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 8009d78: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8009d7a: b29b uxth r3, r3 + 8009d7c: 2bff cmp r3, #255 ; 0xff + 8009d7e: d9c7 bls.n 8009d10 <HAL_I2C_Master_Receive+0x9c> + hi2c->XferSize = MAX_NBYTE_SIZE; + 8009d80: 22ff movs r2, #255 ; 0xff + 8009d82: 8522 strh r2, [r4, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 8009d84: 2300 movs r3, #0 + 8009d86: 9300 str r3, [sp, #0] + 8009d88: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + 8009d8c: 4639 mov r1, r7 + 8009d8e: 4620 mov r0, r4 + 8009d90: f7ff fcd7 bl 8009742 <I2C_TransferConfig> + 8009d94: e7c8 b.n 8009d28 <HAL_I2C_Master_Receive+0xb4> + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8009d96: 462a mov r2, r5 + 8009d98: 4631 mov r1, r6 + 8009d9a: 4620 mov r0, r4 + 8009d9c: f7ff fdce bl 800993c <I2C_WaitOnSTOPFlagUntilTimeout> + 8009da0: bb08 cbnz r0, 8009de6 <HAL_I2C_Master_Receive+0x172> + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + 8009da2: 6823 ldr r3, [r4, #0] + 8009da4: 2220 movs r2, #32 + 8009da6: 61da str r2, [r3, #28] + I2C_RESET_CR2(hi2c); + 8009da8: 6821 ldr r1, [r4, #0] + 8009daa: 684b ldr r3, [r1, #4] + 8009dac: f023 73ff bic.w r3, r3, #33423360 ; 0x1fe0000 + 8009db0: f423 338b bic.w r3, r3, #71168 ; 0x11600 + 8009db4: f423 73ff bic.w r3, r3, #510 ; 0x1fe + 8009db8: f023 0301 bic.w r3, r3, #1 + 8009dbc: 604b str r3, [r1, #4] + hi2c->State = HAL_I2C_STATE_READY; + 8009dbe: f884 2041 strb.w r2, [r4, #65] ; 0x41 + hi2c->Mode = HAL_I2C_MODE_NONE; + 8009dc2: 2300 movs r3, #0 + 8009dc4: f884 3042 strb.w r3, [r4, #66] ; 0x42 + __HAL_UNLOCK(hi2c); + 8009dc8: f884 3040 strb.w r3, [r4, #64] ; 0x40 + return HAL_OK; + 8009dcc: e000 b.n 8009dd0 <HAL_I2C_Master_Receive+0x15c> + return HAL_BUSY; + 8009dce: 2002 movs r0, #2 +} + 8009dd0: b002 add sp, #8 + 8009dd2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + __HAL_LOCK(hi2c); + 8009dd6: 2002 movs r0, #2 + 8009dd8: e7fa b.n 8009dd0 <HAL_I2C_Master_Receive+0x15c> + return HAL_ERROR; + 8009dda: 2001 movs r0, #1 + 8009ddc: e7f8 b.n 8009dd0 <HAL_I2C_Master_Receive+0x15c> + return HAL_ERROR; + 8009dde: 2001 movs r0, #1 + 8009de0: e7f6 b.n 8009dd0 <HAL_I2C_Master_Receive+0x15c> + return HAL_ERROR; + 8009de2: 2001 movs r0, #1 + 8009de4: e7f4 b.n 8009dd0 <HAL_I2C_Master_Receive+0x15c> + return HAL_ERROR; + 8009de6: 2001 movs r0, #1 + 8009de8: e7f2 b.n 8009dd0 <HAL_I2C_Master_Receive+0x15c> + 8009dea: bf00 nop + 8009dec: 80002400 .word 0x80002400 + +08009df0 <HAL_I2CEx_ConfigAnalogFilter>: + * the configuration information for the specified I2Cx peripheral. + * @param AnalogFilter New state of the Analog filter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) +{ + 8009df0: 4603 mov r3, r0 + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + 8009df2: f890 2041 ldrb.w r2, [r0, #65] ; 0x41 + 8009df6: b2d2 uxtb r2, r2 + 8009df8: 2a20 cmp r2, #32 + 8009dfa: d123 bne.n 8009e44 <HAL_I2CEx_ConfigAnalogFilter+0x54> + { + /* Process Locked */ + __HAL_LOCK(hi2c); + 8009dfc: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 + 8009e00: 2a01 cmp r2, #1 + 8009e02: d021 beq.n 8009e48 <HAL_I2CEx_ConfigAnalogFilter+0x58> + 8009e04: 2201 movs r2, #1 + 8009e06: f880 2040 strb.w r2, [r0, #64] ; 0x40 + + hi2c->State = HAL_I2C_STATE_BUSY; + 8009e0a: 2224 movs r2, #36 ; 0x24 + 8009e0c: f880 2041 strb.w r2, [r0, #65] ; 0x41 + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + 8009e10: 6800 ldr r0, [r0, #0] + 8009e12: 6802 ldr r2, [r0, #0] + 8009e14: f022 0201 bic.w r2, r2, #1 + 8009e18: 6002 str r2, [r0, #0] + + /* Reset I2Cx ANOFF bit */ + hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); + 8009e1a: 6818 ldr r0, [r3, #0] + 8009e1c: 6802 ldr r2, [r0, #0] + 8009e1e: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 8009e22: 6002 str r2, [r0, #0] + + /* Set analog filter bit*/ + hi2c->Instance->CR1 |= AnalogFilter; + 8009e24: 6818 ldr r0, [r3, #0] + 8009e26: 6802 ldr r2, [r0, #0] + 8009e28: 4311 orrs r1, r2 + 8009e2a: 6001 str r1, [r0, #0] + + __HAL_I2C_ENABLE(hi2c); + 8009e2c: 6819 ldr r1, [r3, #0] + 8009e2e: 680a ldr r2, [r1, #0] + 8009e30: f042 0201 orr.w r2, r2, #1 + 8009e34: 600a str r2, [r1, #0] + + hi2c->State = HAL_I2C_STATE_READY; + 8009e36: 2220 movs r2, #32 + 8009e38: f883 2041 strb.w r2, [r3, #65] ; 0x41 + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8009e3c: 2000 movs r0, #0 + 8009e3e: f883 0040 strb.w r0, [r3, #64] ; 0x40 + + return HAL_OK; + 8009e42: 4770 bx lr + } + else + { + return HAL_BUSY; + 8009e44: 2002 movs r0, #2 + 8009e46: 4770 bx lr + __HAL_LOCK(hi2c); + 8009e48: 2002 movs r0, #2 + } +} + 8009e4a: 4770 bx lr + +08009e4c <HAL_I2CEx_ConfigDigitalFilter>: + * the configuration information for the specified I2Cx peripheral. + * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) +{ + 8009e4c: 4603 mov r3, r0 + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + 8009e4e: f890 2041 ldrb.w r2, [r0, #65] ; 0x41 + 8009e52: b2d2 uxtb r2, r2 + 8009e54: 2a20 cmp r2, #32 + 8009e56: d121 bne.n 8009e9c <HAL_I2CEx_ConfigDigitalFilter+0x50> + { + /* Process Locked */ + __HAL_LOCK(hi2c); + 8009e58: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 + 8009e5c: 2a01 cmp r2, #1 + 8009e5e: d01f beq.n 8009ea0 <HAL_I2CEx_ConfigDigitalFilter+0x54> + 8009e60: 2201 movs r2, #1 + 8009e62: f880 2040 strb.w r2, [r0, #64] ; 0x40 + + hi2c->State = HAL_I2C_STATE_BUSY; + 8009e66: 2224 movs r2, #36 ; 0x24 + 8009e68: f880 2041 strb.w r2, [r0, #65] ; 0x41 + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + 8009e6c: 6800 ldr r0, [r0, #0] + 8009e6e: 6802 ldr r2, [r0, #0] + 8009e70: f022 0201 bic.w r2, r2, #1 + 8009e74: 6002 str r2, [r0, #0] + + /* Get the old register value */ + tmpreg = hi2c->Instance->CR1; + 8009e76: 6818 ldr r0, [r3, #0] + 8009e78: 6802 ldr r2, [r0, #0] + + /* Reset I2Cx DNF bits [11:8] */ + tmpreg &= ~(I2C_CR1_DNF); + 8009e7a: f422 6270 bic.w r2, r2, #3840 ; 0xf00 + + /* Set I2Cx DNF coefficient */ + tmpreg |= DigitalFilter << 8U; + 8009e7e: ea42 2201 orr.w r2, r2, r1, lsl #8 + + /* Store the new register value */ + hi2c->Instance->CR1 = tmpreg; + 8009e82: 6002 str r2, [r0, #0] + + __HAL_I2C_ENABLE(hi2c); + 8009e84: 6819 ldr r1, [r3, #0] + 8009e86: 680a ldr r2, [r1, #0] + 8009e88: f042 0201 orr.w r2, r2, #1 + 8009e8c: 600a str r2, [r1, #0] + + hi2c->State = HAL_I2C_STATE_READY; + 8009e8e: 2220 movs r2, #32 + 8009e90: f883 2041 strb.w r2, [r3, #65] ; 0x41 + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8009e94: 2000 movs r0, #0 + 8009e96: f883 0040 strb.w r0, [r3, #64] ; 0x40 + + return HAL_OK; + 8009e9a: 4770 bx lr + } + else + { + return HAL_BUSY; + 8009e9c: 2002 movs r0, #2 + 8009e9e: 4770 bx lr + __HAL_LOCK(hi2c); + 8009ea0: 2002 movs r0, #2 + } +} + 8009ea2: 4770 bx lr + +08009ea4 <HAL_PWR_EnableBkUpAccess>: + * backup domain. + * @retval None + */ +void HAL_PWR_EnableBkUpAccess(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_DBP); + 8009ea4: 4a02 ldr r2, [pc, #8] ; (8009eb0 <HAL_PWR_EnableBkUpAccess+0xc>) + 8009ea6: 6813 ldr r3, [r2, #0] + 8009ea8: f443 7380 orr.w r3, r3, #256 ; 0x100 + 8009eac: 6013 str r3, [r2, #0] +} + 8009eae: 4770 bx lr + 8009eb0: 58000400 .word 0x58000400 + +08009eb4 <HAL_PWR_EnterSLEEPMode>: + * @note When WFI entry is used, tick interrupt have to be disabled if not desired as + * the interrupt wake up source. + * @retval None + */ +void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry) +{ + 8009eb4: b510 push {r4, lr} + 8009eb6: 460c mov r4, r1 + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(Regulator)); + assert_param(IS_PWR_SLEEP_ENTRY(SLEEPEntry)); + + /* Set Regulator parameter */ + if (Regulator == PWR_MAINREGULATOR_ON) + 8009eb8: b9a0 cbnz r0, 8009ee4 <HAL_PWR_EnterSLEEPMode+0x30> + { + /* If in low-power run mode at this point, exit it */ + if (HAL_IS_BIT_SET(PWR->SR2, (PWR_SR2_REGLPF))) + 8009eba: 4b0f ldr r3, [pc, #60] ; (8009ef8 <HAL_PWR_EnterSLEEPMode+0x44>) + 8009ebc: 695b ldr r3, [r3, #20] + 8009ebe: f413 7f00 tst.w r3, #512 ; 0x200 + 8009ec2: d10a bne.n 8009eda <HAL_PWR_EnterSLEEPMode+0x26> + HAL_PWREx_EnableLowPowerRunMode(); + } + } + + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + 8009ec4: 4a0d ldr r2, [pc, #52] ; (8009efc <HAL_PWR_EnterSLEEPMode+0x48>) + 8009ec6: 6913 ldr r3, [r2, #16] + 8009ec8: f023 0304 bic.w r3, r3, #4 + 8009ecc: 6113 str r3, [r2, #16] + + /* Select SLEEP mode entry -------------------------------------------------*/ + if (SLEEPEntry == PWR_SLEEPENTRY_WFI) + 8009ece: 2c01 cmp r4, #1 + 8009ed0: d010 beq.n 8009ef4 <HAL_PWR_EnterSLEEPMode+0x40> + __WFI(); + } + else + { + /* Request Wait For Event */ + __SEV(); + 8009ed2: bf40 sev + __WFE(); + 8009ed4: bf20 wfe + __WFE(); + 8009ed6: bf20 wfe + } +} + 8009ed8: bd10 pop {r4, pc} + if (HAL_PWREx_DisableLowPowerRunMode() != HAL_OK) + 8009eda: f000 f821 bl 8009f20 <HAL_PWREx_DisableLowPowerRunMode> + 8009ede: 2800 cmp r0, #0 + 8009ee0: d0f0 beq.n 8009ec4 <HAL_PWR_EnterSLEEPMode+0x10> + 8009ee2: e7f9 b.n 8009ed8 <HAL_PWR_EnterSLEEPMode+0x24> + if (HAL_IS_BIT_CLR(PWR->SR2, (PWR_SR2_REGLPF))) + 8009ee4: 4b04 ldr r3, [pc, #16] ; (8009ef8 <HAL_PWR_EnterSLEEPMode+0x44>) + 8009ee6: 695b ldr r3, [r3, #20] + 8009ee8: f413 7f00 tst.w r3, #512 ; 0x200 + 8009eec: d1ea bne.n 8009ec4 <HAL_PWR_EnterSLEEPMode+0x10> + HAL_PWREx_EnableLowPowerRunMode(); + 8009eee: f000 f80f bl 8009f10 <HAL_PWREx_EnableLowPowerRunMode> + 8009ef2: e7e7 b.n 8009ec4 <HAL_PWR_EnterSLEEPMode+0x10> + __WFI(); + 8009ef4: bf30 wfi + 8009ef6: e7ef b.n 8009ed8 <HAL_PWR_EnterSLEEPMode+0x24> + 8009ef8: 58000400 .word 0x58000400 + 8009efc: e000ed00 .word 0xe000ed00 + +08009f00 <HAL_PWREx_GetVoltageRange>: + * @brief Return Voltage Scaling Range. + * @retval VOS bit field (PWR_REGULATOR_VOLTAGE_SCALE1 or PWPWR_REGULATOR_VOLTAGE_SCALE2) + */ +uint32_t HAL_PWREx_GetVoltageRange(void) +{ + return (PWR->CR1 & PWR_CR1_VOS); + 8009f00: 4b02 ldr r3, [pc, #8] ; (8009f0c <HAL_PWREx_GetVoltageRange+0xc>) + 8009f02: 6818 ldr r0, [r3, #0] +} + 8009f04: f400 60c0 and.w r0, r0, #1536 ; 0x600 + 8009f08: 4770 bx lr + 8009f0a: bf00 nop + 8009f0c: 58000400 .word 0x58000400 + +08009f10 <HAL_PWREx_EnableLowPowerRunMode>: + * @retval None + */ +void HAL_PWREx_EnableLowPowerRunMode(void) +{ + /* Set Regulator parameter */ + SET_BIT(PWR->CR1, PWR_CR1_LPR); + 8009f10: 4a02 ldr r2, [pc, #8] ; (8009f1c <HAL_PWREx_EnableLowPowerRunMode+0xc>) + 8009f12: 6813 ldr r3, [r2, #0] + 8009f14: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 8009f18: 6013 str r3, [r2, #0] +} + 8009f1a: 4770 bx lr + 8009f1c: 58000400 .word 0x58000400 + +08009f20 <HAL_PWREx_DisableLowPowerRunMode>: +HAL_StatusTypeDef HAL_PWREx_DisableLowPowerRunMode(void) +{ + uint32_t wait_loop_index; + + /* Clear LPR bit */ + CLEAR_BIT(PWR->CR1, PWR_CR1_LPR); + 8009f20: 4a0f ldr r2, [pc, #60] ; (8009f60 <HAL_PWREx_DisableLowPowerRunMode+0x40>) + 8009f22: 6813 ldr r3, [r2, #0] + 8009f24: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 8009f28: 6013 str r3, [r2, #0] + + /* Wait until REGLPF is reset */ + wait_loop_index = ((PWR_FLAG_SETTING_DELAY_US * SystemCoreClock) / 1000000UL); + 8009f2a: 4b0e ldr r3, [pc, #56] ; (8009f64 <HAL_PWREx_DisableLowPowerRunMode+0x44>) + 8009f2c: 681b ldr r3, [r3, #0] + 8009f2e: 2232 movs r2, #50 ; 0x32 + 8009f30: fb02 f303 mul.w r3, r2, r3 + 8009f34: 4a0c ldr r2, [pc, #48] ; (8009f68 <HAL_PWREx_DisableLowPowerRunMode+0x48>) + 8009f36: fba2 2303 umull r2, r3, r2, r3 + 8009f3a: 0c9b lsrs r3, r3, #18 + while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_REGLPF)) && (wait_loop_index != 0U)) + 8009f3c: e000 b.n 8009f40 <HAL_PWREx_DisableLowPowerRunMode+0x20> + { + wait_loop_index--; + 8009f3e: 3b01 subs r3, #1 + while ((HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_REGLPF)) && (wait_loop_index != 0U)) + 8009f40: 4a07 ldr r2, [pc, #28] ; (8009f60 <HAL_PWREx_DisableLowPowerRunMode+0x40>) + 8009f42: 6952 ldr r2, [r2, #20] + 8009f44: f412 7f00 tst.w r2, #512 ; 0x200 + 8009f48: d001 beq.n 8009f4e <HAL_PWREx_DisableLowPowerRunMode+0x2e> + 8009f4a: 2b00 cmp r3, #0 + 8009f4c: d1f7 bne.n 8009f3e <HAL_PWREx_DisableLowPowerRunMode+0x1e> + } + if (HAL_IS_BIT_SET(PWR->SR2, (PWR_SR2_REGLPF))) + 8009f4e: 4b04 ldr r3, [pc, #16] ; (8009f60 <HAL_PWREx_DisableLowPowerRunMode+0x40>) + 8009f50: 695b ldr r3, [r3, #20] + 8009f52: f413 7f00 tst.w r3, #512 ; 0x200 + 8009f56: d101 bne.n 8009f5c <HAL_PWREx_DisableLowPowerRunMode+0x3c> + { + return HAL_TIMEOUT; + } + + return HAL_OK; + 8009f58: 2000 movs r0, #0 + 8009f5a: 4770 bx lr + return HAL_TIMEOUT; + 8009f5c: 2003 movs r0, #3 +} + 8009f5e: 4770 bx lr + 8009f60: 58000400 .word 0x58000400 + 8009f64: 20000828 .word 0x20000828 + 8009f68: 431bde83 .word 0x431bde83 + +08009f6c <HAL_PWREx_EnterSTOP2Mode>: +#ifdef CORE_CM0PLUS + /* Set Stop mode 2 */ + MODIFY_REG(PWR->C2CR1, PWR_C2CR1_LPMS, PWR_LOWPOWERMODE_STOP2); +#else + /* Set Stop mode 2 */ + MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, PWR_LOWPOWERMODE_STOP2); + 8009f6c: 4a0c ldr r2, [pc, #48] ; (8009fa0 <HAL_PWREx_EnterSTOP2Mode+0x34>) + 8009f6e: 6813 ldr r3, [r2, #0] + 8009f70: f023 0307 bic.w r3, r3, #7 + 8009f74: f043 0302 orr.w r3, r3, #2 + 8009f78: 6013 str r3, [r2, #0] +#endif + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + 8009f7a: 4a0a ldr r2, [pc, #40] ; (8009fa4 <HAL_PWREx_EnterSTOP2Mode+0x38>) + 8009f7c: 6913 ldr r3, [r2, #16] + 8009f7e: f043 0304 orr.w r3, r3, #4 + 8009f82: 6113 str r3, [r2, #16] + + /* Select Stop mode entry --------------------------------------------------*/ + if (STOPEntry == PWR_STOPENTRY_WFI) + 8009f84: 2801 cmp r0, #1 + 8009f86: d008 beq.n 8009f9a <HAL_PWREx_EnterSTOP2Mode+0x2e> + __WFI(); + } + else + { + /* Request Wait For Event */ + __SEV(); + 8009f88: bf40 sev + __WFE(); + 8009f8a: bf20 wfe + __WFE(); + 8009f8c: bf20 wfe + } + + /* Reset SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + 8009f8e: 4a05 ldr r2, [pc, #20] ; (8009fa4 <HAL_PWREx_EnterSTOP2Mode+0x38>) + 8009f90: 6913 ldr r3, [r2, #16] + 8009f92: f023 0304 bic.w r3, r3, #4 + 8009f96: 6113 str r3, [r2, #16] +} + 8009f98: 4770 bx lr + __WFI(); + 8009f9a: bf30 wfi + 8009f9c: e7f7 b.n 8009f8e <HAL_PWREx_EnterSTOP2Mode+0x22> + 8009f9e: bf00 nop + 8009fa0: 58000400 .word 0x58000400 + 8009fa4: e000ed00 .word 0xe000ed00 + +08009fa8 <RCC_SetFlashLatency>: + * @arg PWR_REGULATOR_VOLTAGE_SCALE1 Regulator voltage output range 1 mode + * @arg PWR_REGULATOR_VOLTAGE_SCALE2 Regulator voltage output range 2 mode + * @retval HAL status + */ +static HAL_StatusTypeDef RCC_SetFlashLatency(uint32_t Flash_ClkSrcFreq, uint32_t VCORE_Voltage) +{ + 8009fa8: b530 push {r4, r5, lr} + 8009faa: b089 sub sp, #36 ; 0x24 + 8009fac: 4604 mov r4, r0 + 8009fae: 468c mov ip, r1 + /* Flash Clock source (HCLK3) range in MHz for VCORE range1 */ + const uint16_t FLASH_CLK_SRC_RANGE_VOS1[] = {18, 36, 48}; + 8009fb0: 4b2a ldr r3, [pc, #168] ; (800a05c <RCC_SetFlashLatency+0xb4>) + 8009fb2: e893 0003 ldmia.w r3, {r0, r1} + 8009fb6: 9006 str r0, [sp, #24] + 8009fb8: f8ad 101c strh.w r1, [sp, #28] + + /* Flash Clock source (HCLK3) range in MHz for VCORE range2 */ + const uint16_t FLASH_CLK_SRC_RANGE_VOS2[] = {6, 12, 16}; + 8009fbc: f103 0208 add.w r2, r3, #8 + 8009fc0: e892 0003 ldmia.w r2, {r0, r1} + 8009fc4: 9004 str r0, [sp, #16] + 8009fc6: f8ad 1014 strh.w r1, [sp, #20] + + /* Flash Latency range */ + const uint32_t FLASH_LATENCY_RANGE[] = {FLASH_LATENCY_0, FLASH_LATENCY_1, FLASH_LATENCY_2}; + 8009fca: ad01 add r5, sp, #4 + 8009fcc: 3310 adds r3, #16 + 8009fce: e893 0007 ldmia.w r3, {r0, r1, r2} + 8009fd2: e885 0007 stmia.w r5, {r0, r1, r2} + + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + uint32_t tickstart; + + if (VCORE_Voltage == PWR_REGULATOR_VOLTAGE_SCALE1) + 8009fd6: f5bc 7f00 cmp.w ip, #512 ; 0x200 + 8009fda: d007 beq.n 8009fec <RCC_SetFlashLatency+0x44> + } + } + } + else /* PWR_REGULATOR_VOLTAGE_SCALE2 */ + { + for (uint32_t index = 0; index < __COUNTOF(FLASH_CLK_SRC_RANGE_VOS2); index++) + 8009fdc: 2300 movs r3, #0 + 8009fde: e014 b.n 800a00a <RCC_SetFlashLatency+0x62> + latency = FLASH_LATENCY_RANGE[index]; + 8009fe0: aa08 add r2, sp, #32 + 8009fe2: eb02 0383 add.w r3, r2, r3, lsl #2 + 8009fe6: f853 5c1c ldr.w r5, [r3, #-28] + break; + 8009fea: e01e b.n 800a02a <RCC_SetFlashLatency+0x82> + for (uint32_t index = 0; index < __COUNTOF(FLASH_CLK_SRC_RANGE_VOS1); index++) + 8009fec: 2300 movs r3, #0 + 8009fee: 2b02 cmp r3, #2 + 8009ff0: d808 bhi.n 800a004 <RCC_SetFlashLatency+0x5c> + if (Flash_ClkSrcFreq <= FLASH_CLK_SRC_RANGE_VOS1[index]) + 8009ff2: aa08 add r2, sp, #32 + 8009ff4: eb02 0243 add.w r2, r2, r3, lsl #1 + 8009ff8: f832 2c08 ldrh.w r2, [r2, #-8] + 8009ffc: 42a2 cmp r2, r4 + 8009ffe: d2ef bcs.n 8009fe0 <RCC_SetFlashLatency+0x38> + for (uint32_t index = 0; index < __COUNTOF(FLASH_CLK_SRC_RANGE_VOS1); index++) + 800a000: 3301 adds r3, #1 + 800a002: e7f4 b.n 8009fee <RCC_SetFlashLatency+0x46> + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 800a004: 2500 movs r5, #0 + 800a006: e010 b.n 800a02a <RCC_SetFlashLatency+0x82> + for (uint32_t index = 0; index < __COUNTOF(FLASH_CLK_SRC_RANGE_VOS2); index++) + 800a008: 3301 adds r3, #1 + 800a00a: 2b02 cmp r3, #2 + 800a00c: d80c bhi.n 800a028 <RCC_SetFlashLatency+0x80> + { + if (Flash_ClkSrcFreq <= FLASH_CLK_SRC_RANGE_VOS2[index]) + 800a00e: aa08 add r2, sp, #32 + 800a010: eb02 0243 add.w r2, r2, r3, lsl #1 + 800a014: f832 2c10 ldrh.w r2, [r2, #-16] + 800a018: 42a2 cmp r2, r4 + 800a01a: d3f5 bcc.n 800a008 <RCC_SetFlashLatency+0x60> + { + latency = FLASH_LATENCY_RANGE[index]; + 800a01c: aa08 add r2, sp, #32 + 800a01e: eb02 0383 add.w r3, r2, r3, lsl #2 + 800a022: f853 5c1c ldr.w r5, [r3, #-28] + break; + 800a026: e000 b.n 800a02a <RCC_SetFlashLatency+0x82> + uint32_t latency = FLASH_LATENCY_0; /* default value 0WS */ + 800a028: 2500 movs r5, #0 + } + } + } + + __HAL_FLASH_SET_LATENCY(latency); + 800a02a: 4a0d ldr r2, [pc, #52] ; (800a060 <RCC_SetFlashLatency+0xb8>) + 800a02c: 6813 ldr r3, [r2, #0] + 800a02e: f023 0307 bic.w r3, r3, #7 + 800a032: 432b orrs r3, r5 + 800a034: 6013 str r3, [r2, #0] + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + 800a036: f7f8 fe2f bl 8002c98 <HAL_GetTick> + 800a03a: 4604 mov r4, r0 + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + while (__HAL_FLASH_GET_LATENCY() != latency) + 800a03c: 4b08 ldr r3, [pc, #32] ; (800a060 <RCC_SetFlashLatency+0xb8>) + 800a03e: 681b ldr r3, [r3, #0] + 800a040: f003 0307 and.w r3, r3, #7 + 800a044: 42ab cmp r3, r5 + 800a046: d006 beq.n 800a056 <RCC_SetFlashLatency+0xae> + { + if ((HAL_GetTick() - tickstart) > LATENCY_TIMEOUT_VALUE) + 800a048: f7f8 fe26 bl 8002c98 <HAL_GetTick> + 800a04c: 1b00 subs r0, r0, r4 + 800a04e: 2802 cmp r0, #2 + 800a050: d9f4 bls.n 800a03c <RCC_SetFlashLatency+0x94> + { + return HAL_TIMEOUT; + 800a052: 2003 movs r0, #3 + 800a054: e000 b.n 800a058 <RCC_SetFlashLatency+0xb0> + } + } + return HAL_OK; + 800a056: 2000 movs r0, #0 +} + 800a058: b009 add sp, #36 ; 0x24 + 800a05a: bd30 pop {r4, r5, pc} + 800a05c: 08017870 .word 0x08017870 + 800a060: 58004000 .word 0x58004000 + +0800a064 <RCC_SetFlashLatencyFromMSIRange>: +{ + 800a064: b510 push {r4, lr} + msifreq = __LL_RCC_CALC_MSI_FREQ(LL_RCC_MSIRANGESEL_RUN, MSI_Range); + 800a066: f3c0 1003 ubfx r0, r0, #4, #4 + 800a06a: 4b0c ldr r3, [pc, #48] ; (800a09c <RCC_SetFlashLatencyFromMSIRange+0x38>) + 800a06c: f853 4020 ldr.w r4, [r3, r0, lsl #2] + return (uint32_t)(READ_BIT(RCC->EXTCFGR, RCC_EXTCFGR_SHDHPRE) << 4); + 800a070: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a074: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + flash_clksrcfreq = __LL_RCC_CALC_HCLK3_FREQ(msifreq, LL_RCC_GetAHB3Prescaler()); + 800a078: f003 030f and.w r3, r3, #15 + 800a07c: 4a08 ldr r2, [pc, #32] ; (800a0a0 <RCC_SetFlashLatencyFromMSIRange+0x3c>) + 800a07e: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 800a082: fbb4 f4f3 udiv r4, r4, r3 + return RCC_SetFlashLatency((flash_clksrcfreq / MEGA_HZ), HAL_PWREx_GetVoltageRange()); + 800a086: f7ff ff3b bl 8009f00 <HAL_PWREx_GetVoltageRange> + 800a08a: 4601 mov r1, r0 + 800a08c: 4b05 ldr r3, [pc, #20] ; (800a0a4 <RCC_SetFlashLatencyFromMSIRange+0x40>) + 800a08e: fba3 3404 umull r3, r4, r3, r4 + 800a092: 0ca0 lsrs r0, r4, #18 + 800a094: f7ff ff88 bl 8009fa8 <RCC_SetFlashLatency> +} + 800a098: bd10 pop {r4, pc} + 800a09a: bf00 nop + 800a09c: 0801855c .word 0x0801855c + 800a0a0: 080184fc .word 0x080184fc + 800a0a4: 431bde83 .word 0x431bde83 + +0800a0a8 <HAL_RCC_GetSysClockFreq>: + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); + 800a0a8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a0ac: 6899 ldr r1, [r3, #8] + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC)); + 800a0ae: 68db ldr r3, [r3, #12] + 800a0b0: f003 0303 and.w r3, r3, #3 + if ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_MSI) || + 800a0b4: f011 010c ands.w r1, r1, #12 + 800a0b8: d00a beq.n 800a0d0 <HAL_RCC_GetSysClockFreq+0x28> + 800a0ba: 290c cmp r1, #12 + 800a0bc: d006 beq.n 800a0cc <HAL_RCC_GetSysClockFreq+0x24> + else if (sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) + 800a0be: 2904 cmp r1, #4 + 800a0c0: d047 beq.n 800a152 <HAL_RCC_GetSysClockFreq+0xaa> + else if (sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) + 800a0c2: 2908 cmp r1, #8 + 800a0c4: d03b beq.n 800a13e <HAL_RCC_GetSysClockFreq+0x96> + uint32_t msifreq = 0U; + 800a0c6: 2200 movs r2, #0 + uint32_t sysclockfreq = 0U; + 800a0c8: 4610 mov r0, r2 + 800a0ca: e026 b.n 800a11a <HAL_RCC_GetSysClockFreq+0x72> + ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pllsource == RCC_PLLSOURCE_MSI))) + 800a0cc: 2b01 cmp r3, #1 + 800a0ce: d1f6 bne.n 800a0be <HAL_RCC_GetSysClockFreq+0x16> + return ((READ_BIT(RCC->CR, RCC_CR_MSIRGSEL) == (RCC_CR_MSIRGSEL)) ? 1UL : 0UL); + 800a0d0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a0d4: 681b ldr r3, [r3, #0] + 800a0d6: f013 0308 ands.w r3, r3, #8 + 800a0da: d00d beq.n 800a0f8 <HAL_RCC_GetSysClockFreq+0x50> + 800a0dc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a0e0: 681b ldr r3, [r3, #0] + 800a0e2: f013 0308 ands.w r3, r3, #8 + 800a0e6: d124 bne.n 800a132 <HAL_RCC_GetSysClockFreq+0x8a> + return (uint32_t)(READ_BIT(RCC->CSR, RCC_CSR_MSISRANGE)); + 800a0e8: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a0ec: f8d2 2094 ldr.w r2, [r2, #148] ; 0x94 + msifreq = __LL_RCC_CALC_MSI_FREQ(LL_RCC_MSI_IsEnabledRangeSelect(), + 800a0f0: 4a2e ldr r2, [pc, #184] ; (800a1ac <HAL_RCC_GetSysClockFreq+0x104>) + 800a0f2: f852 2023 ldr.w r2, [r2, r3, lsl #2] + 800a0f6: e00e b.n 800a116 <HAL_RCC_GetSysClockFreq+0x6e> + return ((READ_BIT(RCC->CR, RCC_CR_MSIRGSEL) == (RCC_CR_MSIRGSEL)) ? 1UL : 0UL); + 800a0f8: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a0fc: 6812 ldr r2, [r2, #0] + 800a0fe: f012 0f08 tst.w r2, #8 + 800a102: d112 bne.n 800a12a <HAL_RCC_GetSysClockFreq+0x82> + return (uint32_t)(READ_BIT(RCC->CSR, RCC_CSR_MSISRANGE)); + 800a104: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a108: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 800a10c: f3c3 2303 ubfx r3, r3, #8, #4 + 800a110: 4a26 ldr r2, [pc, #152] ; (800a1ac <HAL_RCC_GetSysClockFreq+0x104>) + 800a112: f852 2023 ldr.w r2, [r2, r3, lsl #2] + if (sysclk_source == RCC_SYSCLKSOURCE_STATUS_MSI) + 800a116: b1d1 cbz r1, 800a14e <HAL_RCC_GetSysClockFreq+0xa6> + uint32_t sysclockfreq = 0U; + 800a118: 2000 movs r0, #0 + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); + 800a11a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a11e: 689b ldr r3, [r3, #8] + 800a120: f003 030c and.w r3, r3, #12 + if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 800a124: 2b0c cmp r3, #12 + 800a126: d01a beq.n 800a15e <HAL_RCC_GetSysClockFreq+0xb6> +} + 800a128: 4770 bx lr + return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_MSIRANGE)); + 800a12a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a12e: 6812 ldr r2, [r2, #0] + 800a130: e7ee b.n 800a110 <HAL_RCC_GetSysClockFreq+0x68> + 800a132: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a136: 681b ldr r3, [r3, #0] + msifreq = __LL_RCC_CALC_MSI_FREQ(LL_RCC_MSI_IsEnabledRangeSelect(), + 800a138: f3c3 1303 ubfx r3, r3, #4, #4 + 800a13c: e7d8 b.n 800a0f0 <HAL_RCC_GetSysClockFreq+0x48> + return ((READ_BIT(RCC->CR, RCC_CR_HSEPRE) == (RCC_CR_HSEPRE)) ? 1UL : 0UL); + 800a13e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a142: 681a ldr r2, [r3, #0] + 800a144: f412 1280 ands.w r2, r2, #1048576 ; 0x100000 + 800a148: d106 bne.n 800a158 <HAL_RCC_GetSysClockFreq+0xb0> + sysclockfreq = HSE_VALUE; + 800a14a: 4819 ldr r0, [pc, #100] ; (800a1b0 <HAL_RCC_GetSysClockFreq+0x108>) + 800a14c: e7e5 b.n 800a11a <HAL_RCC_GetSysClockFreq+0x72> + sysclockfreq = msifreq; + 800a14e: 4610 mov r0, r2 + 800a150: e7e3 b.n 800a11a <HAL_RCC_GetSysClockFreq+0x72> + uint32_t msifreq = 0U; + 800a152: 2200 movs r2, #0 + sysclockfreq = HSI_VALUE; + 800a154: 4817 ldr r0, [pc, #92] ; (800a1b4 <HAL_RCC_GetSysClockFreq+0x10c>) + 800a156: e7e0 b.n 800a11a <HAL_RCC_GetSysClockFreq+0x72> + uint32_t msifreq = 0U; + 800a158: 2200 movs r2, #0 + sysclockfreq = HSE_VALUE / 2U; + 800a15a: 4816 ldr r0, [pc, #88] ; (800a1b4 <HAL_RCC_GetSysClockFreq+0x10c>) + 800a15c: e7dd b.n 800a11a <HAL_RCC_GetSysClockFreq+0x72> + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC)); + 800a15e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a162: 68db ldr r3, [r3, #12] + 800a164: f003 0303 and.w r3, r3, #3 + switch (pllsource) + 800a168: 2b02 cmp r3, #2 + 800a16a: d009 beq.n 800a180 <HAL_RCC_GetSysClockFreq+0xd8> + 800a16c: 2b03 cmp r3, #3 + 800a16e: d108 bne.n 800a182 <HAL_RCC_GetSysClockFreq+0xda> + return ((READ_BIT(RCC->CR, RCC_CR_HSEPRE) == (RCC_CR_HSEPRE)) ? 1UL : 0UL); + 800a170: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a174: 681b ldr r3, [r3, #0] + 800a176: f413 1f80 tst.w r3, #1048576 ; 0x100000 + 800a17a: d115 bne.n 800a1a8 <HAL_RCC_GetSysClockFreq+0x100> + pllinputfreq = HSE_VALUE; + 800a17c: 4a0c ldr r2, [pc, #48] ; (800a1b0 <HAL_RCC_GetSysClockFreq+0x108>) + 800a17e: e000 b.n 800a182 <HAL_RCC_GetSysClockFreq+0xda> + switch (pllsource) + 800a180: 4a0c ldr r2, [pc, #48] ; (800a1b4 <HAL_RCC_GetSysClockFreq+0x10c>) + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); + 800a182: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800a186: 68cb ldr r3, [r1, #12] + 800a188: f3c3 2306 ubfx r3, r3, #8, #7 + sysclockfreq = __LL_RCC_CALC_PLLCLK_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + 800a18c: fb03 f202 mul.w r2, r3, r2 + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM)); + 800a190: 68cb ldr r3, [r1, #12] + 800a192: f3c3 1302 ubfx r3, r3, #4, #3 + 800a196: 3301 adds r3, #1 + 800a198: fbb2 f2f3 udiv r2, r2, r3 + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR)); + 800a19c: 68c8 ldr r0, [r1, #12] + 800a19e: 0f40 lsrs r0, r0, #29 + 800a1a0: 3001 adds r0, #1 + 800a1a2: fbb2 f0f0 udiv r0, r2, r0 + return sysclockfreq; + 800a1a6: e7bf b.n 800a128 <HAL_RCC_GetSysClockFreq+0x80> + pllinputfreq = HSE_VALUE / 2U; + 800a1a8: 4a02 ldr r2, [pc, #8] ; (800a1b4 <HAL_RCC_GetSysClockFreq+0x10c>) + 800a1aa: e7ea b.n 800a182 <HAL_RCC_GetSysClockFreq+0xda> + 800a1ac: 0801855c .word 0x0801855c + 800a1b0: 01e84800 .word 0x01e84800 + 800a1b4: 00f42400 .word 0x00f42400 + +0800a1b8 <HAL_RCC_GetHCLKFreq>: +{ + 800a1b8: b508 push {r3, lr} + return ((uint32_t)(__LL_RCC_CALC_HCLK1_FREQ(HAL_RCC_GetSysClockFreq(), LL_RCC_GetAHBPrescaler()))); + 800a1ba: f7ff ff75 bl 800a0a8 <HAL_RCC_GetSysClockFreq> + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE)); + 800a1be: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a1c2: 689b ldr r3, [r3, #8] + 800a1c4: f3c3 1303 ubfx r3, r3, #4, #4 + 800a1c8: 4a02 ldr r2, [pc, #8] ; (800a1d4 <HAL_RCC_GetHCLKFreq+0x1c>) + 800a1ca: f852 3023 ldr.w r3, [r2, r3, lsl #2] +} + 800a1ce: fbb0 f0f3 udiv r0, r0, r3 + 800a1d2: bd08 pop {r3, pc} + 800a1d4: 080184fc .word 0x080184fc + +0800a1d8 <HAL_RCC_OscConfig>: + if (RCC_OscInitStruct == NULL) + 800a1d8: 2800 cmp r0, #0 + 800a1da: f000 8311 beq.w 800a800 <HAL_RCC_OscConfig+0x628> +{ + 800a1de: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a1e0: 4604 mov r4, r0 + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); + 800a1e2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a1e6: 689d ldr r5, [r3, #8] + 800a1e8: f005 050c and.w r5, r5, #12 + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC)); + 800a1ec: 68de ldr r6, [r3, #12] + 800a1ee: f006 0603 and.w r6, r6, #3 + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 800a1f2: 6803 ldr r3, [r0, #0] + 800a1f4: f013 0f20 tst.w r3, #32 + 800a1f8: d02a beq.n 800a250 <HAL_RCC_OscConfig+0x78> + if ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_MSI) || + 800a1fa: 2d00 cmp r5, #0 + 800a1fc: d065 beq.n 800a2ca <HAL_RCC_OscConfig+0xf2> + 800a1fe: 2d0c cmp r5, #12 + 800a200: d061 beq.n 800a2c6 <HAL_RCC_OscConfig+0xee> + if (RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 800a202: 6a23 ldr r3, [r4, #32] + 800a204: 2b00 cmp r3, #0 + 800a206: f000 80bf beq.w 800a388 <HAL_RCC_OscConfig+0x1b0> + SET_BIT(RCC->CR, RCC_CR_MSION); + 800a20a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a20e: 6813 ldr r3, [r2, #0] + 800a210: f043 0301 orr.w r3, r3, #1 + 800a214: 6013 str r3, [r2, #0] + tickstart = HAL_GetTick(); + 800a216: f7f8 fd3f bl 8002c98 <HAL_GetTick> + 800a21a: 4607 mov r7, r0 + return ((READ_BIT(RCC->CR, RCC_CR_MSIRDY) == (RCC_CR_MSIRDY)) ? 1UL : 0UL); + 800a21c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a220: 681b ldr r3, [r3, #0] + 800a222: f013 0f02 tst.w r3, #2 + 800a226: f000 80a7 beq.w 800a378 <HAL_RCC_OscConfig+0x1a0> + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 800a22a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a22e: 681a ldr r2, [r3, #0] + 800a230: f042 0208 orr.w r2, r2, #8 + 800a234: 601a str r2, [r3, #0] + 800a236: 681a ldr r2, [r3, #0] + 800a238: f022 02f0 bic.w r2, r2, #240 ; 0xf0 + 800a23c: 6aa1 ldr r1, [r4, #40] ; 0x28 + 800a23e: 430a orrs r2, r1 + 800a240: 601a str r2, [r3, #0] + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 800a242: 6a61 ldr r1, [r4, #36] ; 0x24 + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_MSITRIM, Value << RCC_ICSCR_MSITRIM_Pos); + 800a244: 685a ldr r2, [r3, #4] + 800a246: f422 427f bic.w r2, r2, #65280 ; 0xff00 + 800a24a: ea42 2201 orr.w r2, r2, r1, lsl #8 + 800a24e: 605a str r2, [r3, #4] + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 800a250: 6823 ldr r3, [r4, #0] + 800a252: f013 0f01 tst.w r3, #1 + 800a256: f000 80b5 beq.w 800a3c4 <HAL_RCC_OscConfig+0x1ec> + if ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSE) || + 800a25a: 2d08 cmp r5, #8 + 800a25c: f000 80ae beq.w 800a3bc <HAL_RCC_OscConfig+0x1e4> + 800a260: 2d0c cmp r5, #12 + 800a262: f000 80a8 beq.w 800a3b6 <HAL_RCC_OscConfig+0x1de> + MODIFY_REG(RCC->CR, RCC_CR_HSEPRE, RCC_OscInitStruct->HSEDiv); + 800a266: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a26a: 6813 ldr r3, [r2, #0] + 800a26c: f423 1380 bic.w r3, r3, #1048576 ; 0x100000 + 800a270: 68a1 ldr r1, [r4, #8] + 800a272: 430b orrs r3, r1 + 800a274: 6013 str r3, [r2, #0] + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 800a276: 6863 ldr r3, [r4, #4] + 800a278: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 800a27c: f000 80c4 beq.w 800a408 <HAL_RCC_OscConfig+0x230> + 800a280: f5b3 1f04 cmp.w r3, #2162688 ; 0x210000 + 800a284: f000 80c5 beq.w 800a412 <HAL_RCC_OscConfig+0x23a> + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); + 800a288: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a28c: 681a ldr r2, [r3, #0] + 800a28e: f422 3280 bic.w r2, r2, #65536 ; 0x10000 + 800a292: 601a str r2, [r3, #0] + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYPPWR); + 800a294: 681a ldr r2, [r3, #0] + 800a296: f422 1200 bic.w r2, r2, #2097152 ; 0x200000 + 800a29a: 601a str r2, [r3, #0] + if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 800a29c: 6863 ldr r3, [r4, #4] + 800a29e: 2b00 cmp r3, #0 + 800a2a0: f000 80c2 beq.w 800a428 <HAL_RCC_OscConfig+0x250> + tickstart = HAL_GetTick(); + 800a2a4: f7f8 fcf8 bl 8002c98 <HAL_GetTick> + 800a2a8: 4607 mov r7, r0 + return ((READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY)) ? 1UL : 0UL); + 800a2aa: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a2ae: 681b ldr r3, [r3, #0] + 800a2b0: f413 3f00 tst.w r3, #131072 ; 0x20000 + 800a2b4: f040 8086 bne.w 800a3c4 <HAL_RCC_OscConfig+0x1ec> + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + 800a2b8: f7f8 fcee bl 8002c98 <HAL_GetTick> + 800a2bc: 1bc0 subs r0, r0, r7 + 800a2be: 2864 cmp r0, #100 ; 0x64 + 800a2c0: d9f3 bls.n 800a2aa <HAL_RCC_OscConfig+0xd2> + return HAL_TIMEOUT; + 800a2c2: 2003 movs r0, #3 + 800a2c4: e2a9 b.n 800a81a <HAL_RCC_OscConfig+0x642> + ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_MSI))) + 800a2c6: 2e01 cmp r6, #1 + 800a2c8: d19b bne.n 800a202 <HAL_RCC_OscConfig+0x2a> + if (RCC_OscInitStruct->MSIState == RCC_MSI_OFF) + 800a2ca: 6a23 ldr r3, [r4, #32] + 800a2cc: 2b00 cmp r3, #0 + 800a2ce: f000 8299 beq.w 800a804 <HAL_RCC_OscConfig+0x62c> + if (RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 800a2d2: 6aa0 ldr r0, [r4, #40] ; 0x28 + 800a2d4: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a2d8: 681b ldr r3, [r3, #0] + 800a2da: f013 0f08 tst.w r3, #8 + 800a2de: d029 beq.n 800a334 <HAL_RCC_OscConfig+0x15c> + 800a2e0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a2e4: 681b ldr r3, [r3, #0] + 800a2e6: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 800a2ea: 4298 cmp r0, r3 + 800a2ec: d92a bls.n 800a344 <HAL_RCC_OscConfig+0x16c> + if (RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 800a2ee: f7ff feb9 bl 800a064 <RCC_SetFlashLatencyFromMSIRange> + 800a2f2: 2800 cmp r0, #0 + 800a2f4: f040 8288 bne.w 800a808 <HAL_RCC_OscConfig+0x630> + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 800a2f8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a2fc: 681a ldr r2, [r3, #0] + 800a2fe: f042 0208 orr.w r2, r2, #8 + 800a302: 601a str r2, [r3, #0] + 800a304: 681a ldr r2, [r3, #0] + 800a306: f022 02f0 bic.w r2, r2, #240 ; 0xf0 + 800a30a: 6aa1 ldr r1, [r4, #40] ; 0x28 + 800a30c: 430a orrs r2, r1 + 800a30e: 601a str r2, [r3, #0] + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 800a310: 6a61 ldr r1, [r4, #36] ; 0x24 + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_MSITRIM, Value << RCC_ICSCR_MSITRIM_Pos); + 800a312: 685a ldr r2, [r3, #4] + 800a314: f422 427f bic.w r2, r2, #65280 ; 0xff00 + 800a318: ea42 2201 orr.w r2, r2, r1, lsl #8 + 800a31c: 605a str r2, [r3, #4] + SystemCoreClock = HAL_RCC_GetHCLKFreq(); + 800a31e: f7ff ff4b bl 800a1b8 <HAL_RCC_GetHCLKFreq> + 800a322: 4bba ldr r3, [pc, #744] ; (800a60c <HAL_RCC_OscConfig+0x434>) + 800a324: 6018 str r0, [r3, #0] + status = HAL_InitTick(uwTickPrio); + 800a326: 4bba ldr r3, [pc, #744] ; (800a610 <HAL_RCC_OscConfig+0x438>) + 800a328: 6818 ldr r0, [r3, #0] + 800a32a: f7f8 fcb3 bl 8002c94 <HAL_InitTick> + if (status != HAL_OK) + 800a32e: 2800 cmp r0, #0 + 800a330: d08e beq.n 800a250 <HAL_RCC_OscConfig+0x78> + 800a332: e272 b.n 800a81a <HAL_RCC_OscConfig+0x642> + if (RCC_OscInitStruct->MSIClockRange > __HAL_RCC_GET_MSI_RANGE()) + 800a334: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a338: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 800a33c: 091b lsrs r3, r3, #4 + 800a33e: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 800a342: e7d2 b.n 800a2ea <HAL_RCC_OscConfig+0x112> + __HAL_RCC_MSI_RANGE_CONFIG(RCC_OscInitStruct->MSIClockRange); + 800a344: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a348: 681a ldr r2, [r3, #0] + 800a34a: f042 0208 orr.w r2, r2, #8 + 800a34e: 601a str r2, [r3, #0] + 800a350: 681a ldr r2, [r3, #0] + 800a352: f022 02f0 bic.w r2, r2, #240 ; 0xf0 + 800a356: 6aa1 ldr r1, [r4, #40] ; 0x28 + 800a358: 430a orrs r2, r1 + 800a35a: 601a str r2, [r3, #0] + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 800a35c: 6a61 ldr r1, [r4, #36] ; 0x24 + 800a35e: 685a ldr r2, [r3, #4] + 800a360: f422 427f bic.w r2, r2, #65280 ; 0xff00 + 800a364: ea42 2201 orr.w r2, r2, r1, lsl #8 + 800a368: 605a str r2, [r3, #4] + if (RCC_SetFlashLatencyFromMSIRange(RCC_OscInitStruct->MSIClockRange) != HAL_OK) + 800a36a: 6aa0 ldr r0, [r4, #40] ; 0x28 + 800a36c: f7ff fe7a bl 800a064 <RCC_SetFlashLatencyFromMSIRange> + 800a370: 2800 cmp r0, #0 + 800a372: d0d4 beq.n 800a31e <HAL_RCC_OscConfig+0x146> + return HAL_ERROR; + 800a374: 2001 movs r0, #1 + 800a376: e250 b.n 800a81a <HAL_RCC_OscConfig+0x642> + if ((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 800a378: f7f8 fc8e bl 8002c98 <HAL_GetTick> + 800a37c: 1bc0 subs r0, r0, r7 + 800a37e: 2802 cmp r0, #2 + 800a380: f67f af4c bls.w 800a21c <HAL_RCC_OscConfig+0x44> + return HAL_TIMEOUT; + 800a384: 2003 movs r0, #3 + 800a386: e248 b.n 800a81a <HAL_RCC_OscConfig+0x642> + CLEAR_BIT(RCC->CR, RCC_CR_MSION); + 800a388: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a38c: 6813 ldr r3, [r2, #0] + 800a38e: f023 0301 bic.w r3, r3, #1 + 800a392: 6013 str r3, [r2, #0] + tickstart = HAL_GetTick(); + 800a394: f7f8 fc80 bl 8002c98 <HAL_GetTick> + 800a398: 4607 mov r7, r0 + return ((READ_BIT(RCC->CR, RCC_CR_MSIRDY) == (RCC_CR_MSIRDY)) ? 1UL : 0UL); + 800a39a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a39e: 681b ldr r3, [r3, #0] + 800a3a0: f013 0f02 tst.w r3, #2 + 800a3a4: f43f af54 beq.w 800a250 <HAL_RCC_OscConfig+0x78> + if ((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 800a3a8: f7f8 fc76 bl 8002c98 <HAL_GetTick> + 800a3ac: 1bc0 subs r0, r0, r7 + 800a3ae: 2802 cmp r0, #2 + 800a3b0: d9f3 bls.n 800a39a <HAL_RCC_OscConfig+0x1c2> + return HAL_TIMEOUT; + 800a3b2: 2003 movs r0, #3 + 800a3b4: e231 b.n 800a81a <HAL_RCC_OscConfig+0x642> + ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 800a3b6: 2e03 cmp r6, #3 + 800a3b8: f47f af55 bne.w 800a266 <HAL_RCC_OscConfig+0x8e> + if (RCC_OscInitStruct->HSEState == RCC_HSE_OFF) + 800a3bc: 6863 ldr r3, [r4, #4] + 800a3be: 2b00 cmp r3, #0 + 800a3c0: f000 8224 beq.w 800a80c <HAL_RCC_OscConfig+0x634> + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 800a3c4: 6823 ldr r3, [r4, #0] + 800a3c6: f013 0f02 tst.w r3, #2 + 800a3ca: d056 beq.n 800a47a <HAL_RCC_OscConfig+0x2a2> + if ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_HSI) || + 800a3cc: 2d04 cmp r5, #4 + 800a3ce: d03d beq.n 800a44c <HAL_RCC_OscConfig+0x274> + 800a3d0: 2d0c cmp r5, #12 + 800a3d2: d039 beq.n 800a448 <HAL_RCC_OscConfig+0x270> + if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 800a3d4: 6923 ldr r3, [r4, #16] + 800a3d6: 2b00 cmp r3, #0 + 800a3d8: f000 808a beq.w 800a4f0 <HAL_RCC_OscConfig+0x318> + SET_BIT(RCC->CR, RCC_CR_HSION); + 800a3dc: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a3e0: 6813 ldr r3, [r2, #0] + 800a3e2: f443 7380 orr.w r3, r3, #256 ; 0x100 + 800a3e6: 6013 str r3, [r2, #0] + tickstart = HAL_GetTick(); + 800a3e8: f7f8 fc56 bl 8002c98 <HAL_GetTick> + 800a3ec: 4606 mov r6, r0 + return ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY)) ? 1UL : 0UL); + 800a3ee: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a3f2: 681b ldr r3, [r3, #0] + 800a3f4: f413 6f80 tst.w r3, #1024 ; 0x400 + 800a3f8: d136 bne.n 800a468 <HAL_RCC_OscConfig+0x290> + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + 800a3fa: f7f8 fc4d bl 8002c98 <HAL_GetTick> + 800a3fe: 1b80 subs r0, r0, r6 + 800a400: 2802 cmp r0, #2 + 800a402: d9f4 bls.n 800a3ee <HAL_RCC_OscConfig+0x216> + return HAL_TIMEOUT; + 800a404: 2003 movs r0, #3 + 800a406: e208 b.n 800a81a <HAL_RCC_OscConfig+0x642> + SET_BIT(RCC->CR, RCC_CR_HSEON); + 800a408: 6813 ldr r3, [r2, #0] + 800a40a: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 800a40e: 6013 str r3, [r2, #0] +} + 800a410: e744 b.n 800a29c <HAL_RCC_OscConfig+0xc4> + SET_BIT(RCC->CR, RCC_CR_HSEBYPPWR); + 800a412: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a416: 681a ldr r2, [r3, #0] + 800a418: f442 1200 orr.w r2, r2, #2097152 ; 0x200000 + 800a41c: 601a str r2, [r3, #0] + SET_BIT(RCC->CR, RCC_CR_HSEON); + 800a41e: 681a ldr r2, [r3, #0] + 800a420: f442 3280 orr.w r2, r2, #65536 ; 0x10000 + 800a424: 601a str r2, [r3, #0] +} + 800a426: e739 b.n 800a29c <HAL_RCC_OscConfig+0xc4> + tickstart = HAL_GetTick(); + 800a428: f7f8 fc36 bl 8002c98 <HAL_GetTick> + 800a42c: 4607 mov r7, r0 + return ((READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY)) ? 1UL : 0UL); + 800a42e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a432: 681b ldr r3, [r3, #0] + 800a434: f413 3f00 tst.w r3, #131072 ; 0x20000 + 800a438: d0c4 beq.n 800a3c4 <HAL_RCC_OscConfig+0x1ec> + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + 800a43a: f7f8 fc2d bl 8002c98 <HAL_GetTick> + 800a43e: 1bc0 subs r0, r0, r7 + 800a440: 2864 cmp r0, #100 ; 0x64 + 800a442: d9f4 bls.n 800a42e <HAL_RCC_OscConfig+0x256> + return HAL_TIMEOUT; + 800a444: 2003 movs r0, #3 + 800a446: e1e8 b.n 800a81a <HAL_RCC_OscConfig+0x642> + ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 800a448: 2e02 cmp r6, #2 + 800a44a: d1c3 bne.n 800a3d4 <HAL_RCC_OscConfig+0x1fc> + if (RCC_OscInitStruct->HSIState == RCC_HSI_OFF) + 800a44c: 6923 ldr r3, [r4, #16] + 800a44e: 2b00 cmp r3, #0 + 800a450: f000 81de beq.w 800a810 <HAL_RCC_OscConfig+0x638> + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 800a454: 6961 ldr r1, [r4, #20] + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, Value << RCC_ICSCR_HSITRIM_Pos); + 800a456: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a45a: 6853 ldr r3, [r2, #4] + 800a45c: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000 + 800a460: ea43 6301 orr.w r3, r3, r1, lsl #24 + 800a464: 6053 str r3, [r2, #4] +} + 800a466: e008 b.n 800a47a <HAL_RCC_OscConfig+0x2a2> + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 800a468: 6961 ldr r1, [r4, #20] + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, Value << RCC_ICSCR_HSITRIM_Pos); + 800a46a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a46e: 6853 ldr r3, [r2, #4] + 800a470: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000 + 800a474: ea43 6301 orr.w r3, r3, r1, lsl #24 + 800a478: 6053 str r3, [r2, #4] + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 800a47a: 6823 ldr r3, [r4, #0] + 800a47c: f013 0f08 tst.w r3, #8 + 800a480: d07e beq.n 800a580 <HAL_RCC_OscConfig+0x3a8> + if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 800a482: 69a3 ldr r3, [r4, #24] + 800a484: 2b00 cmp r3, #0 + 800a486: d062 beq.n 800a54e <HAL_RCC_OscConfig+0x376> + uint32_t csr_temp = RCC->CSR; + 800a488: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a48c: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + if (RCC_OscInitStruct->LSIDiv != (csr_temp & RCC_CSR_LSIPRE)) + 800a490: 69e1 ldr r1, [r4, #28] + 800a492: f003 0210 and.w r2, r3, #16 + 800a496: 4291 cmp r1, r2 + 800a498: d011 beq.n 800a4be <HAL_RCC_OscConfig+0x2e6> + if (((csr_temp & RCC_CSR_LSIRDY) == RCC_CSR_LSIRDY) && \ + 800a49a: f003 0203 and.w r2, r3, #3 + 800a49e: 2a02 cmp r2, #2 + 800a4a0: f000 81b8 beq.w 800a814 <HAL_RCC_OscConfig+0x63c> + if ((csr_temp & RCC_CSR_LSION) == RCC_CSR_LSION) + 800a4a4: f013 0f01 tst.w r3, #1 + 800a4a8: d138 bne.n 800a51c <HAL_RCC_OscConfig+0x344> + MODIFY_REG(RCC->CSR, RCC_CSR_LSIPRE, RCC_OscInitStruct->LSIDiv); + 800a4aa: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a4ae: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 800a4b2: f023 0310 bic.w r3, r3, #16 + 800a4b6: 69e1 ldr r1, [r4, #28] + 800a4b8: 430b orrs r3, r1 + 800a4ba: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + SET_BIT(RCC->CSR, RCC_CSR_LSION); + 800a4be: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a4c2: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 800a4c6: f043 0301 orr.w r3, r3, #1 + 800a4ca: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + tickstart = HAL_GetTick(); + 800a4ce: f7f8 fbe3 bl 8002c98 <HAL_GetTick> + 800a4d2: 4606 mov r6, r0 + return ((READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY)) ? 1UL : 0UL); + 800a4d4: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a4d8: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 800a4dc: f013 0f02 tst.w r3, #2 + 800a4e0: d14e bne.n 800a580 <HAL_RCC_OscConfig+0x3a8> + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + 800a4e2: f7f8 fbd9 bl 8002c98 <HAL_GetTick> + 800a4e6: 1b80 subs r0, r0, r6 + 800a4e8: 2811 cmp r0, #17 + 800a4ea: d9f3 bls.n 800a4d4 <HAL_RCC_OscConfig+0x2fc> + return HAL_TIMEOUT; + 800a4ec: 2003 movs r0, #3 + 800a4ee: e194 b.n 800a81a <HAL_RCC_OscConfig+0x642> + CLEAR_BIT(RCC->CR, RCC_CR_HSION); + 800a4f0: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a4f4: 6813 ldr r3, [r2, #0] + 800a4f6: f423 7380 bic.w r3, r3, #256 ; 0x100 + 800a4fa: 6013 str r3, [r2, #0] + tickstart = HAL_GetTick(); + 800a4fc: f7f8 fbcc bl 8002c98 <HAL_GetTick> + 800a500: 4606 mov r6, r0 + return ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY)) ? 1UL : 0UL); + 800a502: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a506: 681b ldr r3, [r3, #0] + 800a508: f413 6f80 tst.w r3, #1024 ; 0x400 + 800a50c: d0b5 beq.n 800a47a <HAL_RCC_OscConfig+0x2a2> + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + 800a50e: f7f8 fbc3 bl 8002c98 <HAL_GetTick> + 800a512: 1b80 subs r0, r0, r6 + 800a514: 2802 cmp r0, #2 + 800a516: d9f4 bls.n 800a502 <HAL_RCC_OscConfig+0x32a> + return HAL_TIMEOUT; + 800a518: 2003 movs r0, #3 + 800a51a: e17e b.n 800a81a <HAL_RCC_OscConfig+0x642> + CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); + 800a51c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a520: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 800a524: f023 0301 bic.w r3, r3, #1 + 800a528: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + tickstart = HAL_GetTick(); + 800a52c: f7f8 fbb4 bl 8002c98 <HAL_GetTick> + 800a530: 4606 mov r6, r0 + return ((READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY)) ? 1UL : 0UL); + 800a532: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a536: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 800a53a: f013 0f02 tst.w r3, #2 + 800a53e: d0b4 beq.n 800a4aa <HAL_RCC_OscConfig+0x2d2> + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + 800a540: f7f8 fbaa bl 8002c98 <HAL_GetTick> + 800a544: 1b80 subs r0, r0, r6 + 800a546: 2811 cmp r0, #17 + 800a548: d9f3 bls.n 800a532 <HAL_RCC_OscConfig+0x35a> + return HAL_TIMEOUT; + 800a54a: 2003 movs r0, #3 + 800a54c: e165 b.n 800a81a <HAL_RCC_OscConfig+0x642> + CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); + 800a54e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a552: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 800a556: f023 0301 bic.w r3, r3, #1 + 800a55a: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + tickstart = HAL_GetTick(); + 800a55e: f7f8 fb9b bl 8002c98 <HAL_GetTick> + 800a562: 4606 mov r6, r0 + return ((READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY)) ? 1UL : 0UL); + 800a564: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a568: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 800a56c: f013 0f02 tst.w r3, #2 + 800a570: d006 beq.n 800a580 <HAL_RCC_OscConfig+0x3a8> + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + 800a572: f7f8 fb91 bl 8002c98 <HAL_GetTick> + 800a576: 1b80 subs r0, r0, r6 + 800a578: 2811 cmp r0, #17 + 800a57a: d9f3 bls.n 800a564 <HAL_RCC_OscConfig+0x38c> + return HAL_TIMEOUT; + 800a57c: 2003 movs r0, #3 + 800a57e: e14c b.n 800a81a <HAL_RCC_OscConfig+0x642> + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 800a580: 6823 ldr r3, [r4, #0] + 800a582: f013 0f04 tst.w r3, #4 + 800a586: f000 80b8 beq.w 800a6fa <HAL_RCC_OscConfig+0x522> + return ((READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)) ? 1UL : 0UL); + 800a58a: 4b22 ldr r3, [pc, #136] ; (800a614 <HAL_RCC_OscConfig+0x43c>) + 800a58c: 681b ldr r3, [r3, #0] + 800a58e: f413 7f80 tst.w r3, #256 ; 0x100 + 800a592: d110 bne.n 800a5b6 <HAL_RCC_OscConfig+0x3de> + HAL_PWR_EnableBkUpAccess(); + 800a594: f7ff fc86 bl 8009ea4 <HAL_PWR_EnableBkUpAccess> + tickstart = HAL_GetTick(); + 800a598: f7f8 fb7e bl 8002c98 <HAL_GetTick> + 800a59c: 4606 mov r6, r0 + 800a59e: 4b1d ldr r3, [pc, #116] ; (800a614 <HAL_RCC_OscConfig+0x43c>) + 800a5a0: 681b ldr r3, [r3, #0] + 800a5a2: f413 7f80 tst.w r3, #256 ; 0x100 + 800a5a6: d106 bne.n 800a5b6 <HAL_RCC_OscConfig+0x3de> + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 800a5a8: f7f8 fb76 bl 8002c98 <HAL_GetTick> + 800a5ac: 1b80 subs r0, r0, r6 + 800a5ae: 2802 cmp r0, #2 + 800a5b0: d9f5 bls.n 800a59e <HAL_RCC_OscConfig+0x3c6> + return HAL_TIMEOUT; + 800a5b2: 2003 movs r0, #3 + 800a5b4: e131 b.n 800a81a <HAL_RCC_OscConfig+0x642> + if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 800a5b6: 68e3 ldr r3, [r4, #12] + 800a5b8: 2b00 cmp r3, #0 + 800a5ba: d068 beq.n 800a68e <HAL_RCC_OscConfig+0x4b6> + if ((RCC_OscInitStruct->LSEState == RCC_LSE_BYPASS) + 800a5bc: 2b85 cmp r3, #133 ; 0x85 + 800a5be: d001 beq.n 800a5c4 <HAL_RCC_OscConfig+0x3ec> + || (RCC_OscInitStruct->LSEState == RCC_LSE_BYPASS_RTC_ONLY)) + 800a5c0: 2b05 cmp r3, #5 + 800a5c2: d107 bne.n 800a5d4 <HAL_RCC_OscConfig+0x3fc> + SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); + 800a5c4: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a5c8: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800a5cc: f043 0304 orr.w r3, r3, #4 + 800a5d0: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + tickstart = HAL_GetTick(); + 800a5d4: f7f8 fb60 bl 8002c98 <HAL_GetTick> + 800a5d8: 4606 mov r6, r0 + SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); + 800a5da: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a5de: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800a5e2: f043 0301 orr.w r3, r3, #1 + 800a5e6: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY)) ? 1UL : 0UL); + 800a5ea: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a5ee: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800a5f2: f013 0f02 tst.w r3, #2 + 800a5f6: d10f bne.n 800a618 <HAL_RCC_OscConfig+0x440> + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 800a5f8: f7f8 fb4e bl 8002c98 <HAL_GetTick> + 800a5fc: 1b80 subs r0, r0, r6 + 800a5fe: f241 3388 movw r3, #5000 ; 0x1388 + 800a602: 4298 cmp r0, r3 + 800a604: d9f1 bls.n 800a5ea <HAL_RCC_OscConfig+0x412> + return HAL_TIMEOUT; + 800a606: 2003 movs r0, #3 + 800a608: e107 b.n 800a81a <HAL_RCC_OscConfig+0x642> + 800a60a: bf00 nop + 800a60c: 20000828 .word 0x20000828 + 800a610: 2000082c .word 0x2000082c + 800a614: 58000400 .word 0x58000400 + if ((RCC_OscInitStruct->LSEState == RCC_LSE_ON) + 800a618: 68e3 ldr r3, [r4, #12] + 800a61a: 2b81 cmp r3, #129 ; 0x81 + 800a61c: d001 beq.n 800a622 <HAL_RCC_OscConfig+0x44a> + || (RCC_OscInitStruct->LSEState == RCC_LSE_BYPASS)) + 800a61e: 2b85 cmp r3, #133 ; 0x85 + 800a620: d11a bne.n 800a658 <HAL_RCC_OscConfig+0x480> + tickstart = HAL_GetTick(); + 800a622: f7f8 fb39 bl 8002c98 <HAL_GetTick> + 800a626: 4606 mov r6, r0 + SET_BIT(RCC->BDCR, RCC_BDCR_LSESYSEN); + 800a628: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a62c: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800a630: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800a634: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + while (READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSRDY) == 0U) + 800a638: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a63c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800a640: f413 6f00 tst.w r3, #2048 ; 0x800 + 800a644: d159 bne.n 800a6fa <HAL_RCC_OscConfig+0x522> + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 800a646: f7f8 fb27 bl 8002c98 <HAL_GetTick> + 800a64a: 1b80 subs r0, r0, r6 + 800a64c: f241 3388 movw r3, #5000 ; 0x1388 + 800a650: 4298 cmp r0, r3 + 800a652: d9f1 bls.n 800a638 <HAL_RCC_OscConfig+0x460> + return HAL_TIMEOUT; + 800a654: 2003 movs r0, #3 + 800a656: e0e0 b.n 800a81a <HAL_RCC_OscConfig+0x642> + tickstart = HAL_GetTick(); + 800a658: f7f8 fb1e bl 8002c98 <HAL_GetTick> + 800a65c: 4606 mov r6, r0 + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSESYSEN); + 800a65e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a662: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800a666: f023 0380 bic.w r3, r3, #128 ; 0x80 + 800a66a: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + while (READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSRDY) != 0U) + 800a66e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a672: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800a676: f413 6f00 tst.w r3, #2048 ; 0x800 + 800a67a: d03e beq.n 800a6fa <HAL_RCC_OscConfig+0x522> + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 800a67c: f7f8 fb0c bl 8002c98 <HAL_GetTick> + 800a680: 1b80 subs r0, r0, r6 + 800a682: f241 3388 movw r3, #5000 ; 0x1388 + 800a686: 4298 cmp r0, r3 + 800a688: d9f1 bls.n 800a66e <HAL_RCC_OscConfig+0x496> + return HAL_TIMEOUT; + 800a68a: 2003 movs r0, #3 + 800a68c: e0c5 b.n 800a81a <HAL_RCC_OscConfig+0x642> + tickstart = HAL_GetTick(); + 800a68e: f7f8 fb03 bl 8002c98 <HAL_GetTick> + 800a692: 4606 mov r6, r0 + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSESYSEN); + 800a694: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a698: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800a69c: f023 0380 bic.w r3, r3, #128 ; 0x80 + 800a6a0: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + while (READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSRDY) != 0U) + 800a6a4: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a6a8: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800a6ac: f413 6f00 tst.w r3, #2048 ; 0x800 + 800a6b0: d008 beq.n 800a6c4 <HAL_RCC_OscConfig+0x4ec> + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 800a6b2: f7f8 faf1 bl 8002c98 <HAL_GetTick> + 800a6b6: 1b80 subs r0, r0, r6 + 800a6b8: f241 3388 movw r3, #5000 ; 0x1388 + 800a6bc: 4298 cmp r0, r3 + 800a6be: d9f1 bls.n 800a6a4 <HAL_RCC_OscConfig+0x4cc> + return HAL_TIMEOUT; + 800a6c0: 2003 movs r0, #3 + 800a6c2: e0aa b.n 800a81a <HAL_RCC_OscConfig+0x642> + tickstart = HAL_GetTick(); + 800a6c4: f7f8 fae8 bl 8002c98 <HAL_GetTick> + 800a6c8: 4606 mov r6, r0 + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); + 800a6ca: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a6ce: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800a6d2: f023 0301 bic.w r3, r3, #1 + 800a6d6: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 800a6da: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a6de: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800a6e2: f013 0f02 tst.w r3, #2 + 800a6e6: d008 beq.n 800a6fa <HAL_RCC_OscConfig+0x522> + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 800a6e8: f7f8 fad6 bl 8002c98 <HAL_GetTick> + 800a6ec: 1b80 subs r0, r0, r6 + 800a6ee: f241 3388 movw r3, #5000 ; 0x1388 + 800a6f2: 4298 cmp r0, r3 + 800a6f4: d9f1 bls.n 800a6da <HAL_RCC_OscConfig+0x502> + return HAL_TIMEOUT; + 800a6f6: 2003 movs r0, #3 + 800a6f8: e08f b.n 800a81a <HAL_RCC_OscConfig+0x642> + if (RCC_OscInitStruct->PLL.PLLState != RCC_PLL_NONE) + 800a6fa: 6ae3 ldr r3, [r4, #44] ; 0x2c + 800a6fc: 2b00 cmp r3, #0 + 800a6fe: f000 808b beq.w 800a818 <HAL_RCC_OscConfig+0x640> + if (sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 800a702: 2d0c cmp r5, #12 + 800a704: d060 beq.n 800a7c8 <HAL_RCC_OscConfig+0x5f0> + if (RCC_OscInitStruct->PLL.PLLState == RCC_PLL_ON) + 800a706: 2b02 cmp r3, #2 + 800a708: d016 beq.n 800a738 <HAL_RCC_OscConfig+0x560> + CLEAR_BIT(RCC->CR, RCC_CR_PLLON); + 800a70a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a70e: 6813 ldr r3, [r2, #0] + 800a710: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 + 800a714: 6013 str r3, [r2, #0] + tickstart = HAL_GetTick(); + 800a716: f7f8 fabf bl 8002c98 <HAL_GetTick> + 800a71a: 4604 mov r4, r0 + return ((READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)) ? 1UL : 0UL); + 800a71c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a720: 681b ldr r3, [r3, #0] + 800a722: f013 7f00 tst.w r3, #33554432 ; 0x2000000 + 800a726: d148 bne.n 800a7ba <HAL_RCC_OscConfig+0x5e2> + CLEAR_BIT(RCC->PLLCFGR, (RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLQEN | RCC_PLLCFGR_PLLREN)); + 800a728: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a72c: 68d1 ldr r1, [r2, #12] + 800a72e: 4b41 ldr r3, [pc, #260] ; (800a834 <HAL_RCC_OscConfig+0x65c>) + 800a730: 400b ands r3, r1 + 800a732: 60d3 str r3, [r2, #12] + return HAL_OK; + 800a734: 2000 movs r0, #0 + 800a736: e070 b.n 800a81a <HAL_RCC_OscConfig+0x642> + CLEAR_BIT(RCC->CR, RCC_CR_PLLON); + 800a738: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a73c: 6813 ldr r3, [r2, #0] + 800a73e: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 + 800a742: 6013 str r3, [r2, #0] + tickstart = HAL_GetTick(); + 800a744: f7f8 faa8 bl 8002c98 <HAL_GetTick> + 800a748: 4605 mov r5, r0 + return ((READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)) ? 1UL : 0UL); + 800a74a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a74e: 681b ldr r3, [r3, #0] + 800a750: f013 7f00 tst.w r3, #33554432 ; 0x2000000 + 800a754: d12a bne.n 800a7ac <HAL_RCC_OscConfig+0x5d4> + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 800a756: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a75a: 68d3 ldr r3, [r2, #12] + 800a75c: 4936 ldr r1, [pc, #216] ; (800a838 <HAL_RCC_OscConfig+0x660>) + 800a75e: 4019 ands r1, r3 + 800a760: 6b23 ldr r3, [r4, #48] ; 0x30 + 800a762: 6b60 ldr r0, [r4, #52] ; 0x34 + 800a764: 4303 orrs r3, r0 + 800a766: 6ba0 ldr r0, [r4, #56] ; 0x38 + 800a768: ea43 2300 orr.w r3, r3, r0, lsl #8 + 800a76c: 6be0 ldr r0, [r4, #60] ; 0x3c + 800a76e: 4303 orrs r3, r0 + 800a770: 6c20 ldr r0, [r4, #64] ; 0x40 + 800a772: 4303 orrs r3, r0 + 800a774: 6c60 ldr r0, [r4, #68] ; 0x44 + 800a776: 4303 orrs r3, r0 + 800a778: 4319 orrs r1, r3 + 800a77a: 60d1 str r1, [r2, #12] + SET_BIT(RCC->CR, RCC_CR_PLLON); + 800a77c: 6813 ldr r3, [r2, #0] + 800a77e: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 800a782: 6013 str r3, [r2, #0] + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_SYSCLK); + 800a784: 68d3 ldr r3, [r2, #12] + 800a786: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 800a78a: 60d3 str r3, [r2, #12] + tickstart = HAL_GetTick(); + 800a78c: f7f8 fa84 bl 8002c98 <HAL_GetTick> + 800a790: 4604 mov r4, r0 + return ((READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)) ? 1UL : 0UL); + 800a792: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a796: 681b ldr r3, [r3, #0] + 800a798: f013 7f00 tst.w r3, #33554432 ; 0x2000000 + 800a79c: d13e bne.n 800a81c <HAL_RCC_OscConfig+0x644> + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 800a79e: f7f8 fa7b bl 8002c98 <HAL_GetTick> + 800a7a2: 1b00 subs r0, r0, r4 + 800a7a4: 280a cmp r0, #10 + 800a7a6: d9f4 bls.n 800a792 <HAL_RCC_OscConfig+0x5ba> + return HAL_TIMEOUT; + 800a7a8: 2003 movs r0, #3 + 800a7aa: e036 b.n 800a81a <HAL_RCC_OscConfig+0x642> + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 800a7ac: f7f8 fa74 bl 8002c98 <HAL_GetTick> + 800a7b0: 1b40 subs r0, r0, r5 + 800a7b2: 280a cmp r0, #10 + 800a7b4: d9c9 bls.n 800a74a <HAL_RCC_OscConfig+0x572> + return HAL_TIMEOUT; + 800a7b6: 2003 movs r0, #3 + 800a7b8: e02f b.n 800a81a <HAL_RCC_OscConfig+0x642> + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 800a7ba: f7f8 fa6d bl 8002c98 <HAL_GetTick> + 800a7be: 1b00 subs r0, r0, r4 + 800a7c0: 280a cmp r0, #10 + 800a7c2: d9ab bls.n 800a71c <HAL_RCC_OscConfig+0x544> + return HAL_TIMEOUT; + 800a7c4: 2003 movs r0, #3 + 800a7c6: e028 b.n 800a81a <HAL_RCC_OscConfig+0x642> + if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 800a7c8: 2b01 cmp r3, #1 + 800a7ca: d029 beq.n 800a820 <HAL_RCC_OscConfig+0x648> + pll_config = RCC->PLLCFGR; + 800a7cc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a7d0: 68db ldr r3, [r3, #12] + if ((READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) + 800a7d2: f003 0103 and.w r1, r3, #3 + 800a7d6: 6b22 ldr r2, [r4, #48] ; 0x30 + 800a7d8: 4291 cmp r1, r2 + 800a7da: d123 bne.n 800a824 <HAL_RCC_OscConfig+0x64c> + || (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) + 800a7dc: f003 0270 and.w r2, r3, #112 ; 0x70 + 800a7e0: 6b61 ldr r1, [r4, #52] ; 0x34 + 800a7e2: 428a cmp r2, r1 + 800a7e4: d120 bne.n 800a828 <HAL_RCC_OscConfig+0x650> + || (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) + 800a7e6: f403 42fe and.w r2, r3, #32512 ; 0x7f00 + 800a7ea: 6ba1 ldr r1, [r4, #56] ; 0x38 + 800a7ec: ebb2 2f01 cmp.w r2, r1, lsl #8 + 800a7f0: d11c bne.n 800a82c <HAL_RCC_OscConfig+0x654> + || (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != RCC_OscInitStruct->PLL.PLLR)) + 800a7f2: f003 4360 and.w r3, r3, #3758096384 ; 0xe0000000 + 800a7f6: 6c62 ldr r2, [r4, #68] ; 0x44 + 800a7f8: 4293 cmp r3, r2 + 800a7fa: d119 bne.n 800a830 <HAL_RCC_OscConfig+0x658> + return HAL_OK; + 800a7fc: 2000 movs r0, #0 + 800a7fe: e00c b.n 800a81a <HAL_RCC_OscConfig+0x642> + return HAL_ERROR; + 800a800: 2001 movs r0, #1 +} + 800a802: 4770 bx lr + return HAL_ERROR; + 800a804: 2001 movs r0, #1 + 800a806: e008 b.n 800a81a <HAL_RCC_OscConfig+0x642> + return HAL_ERROR; + 800a808: 2001 movs r0, #1 + 800a80a: e006 b.n 800a81a <HAL_RCC_OscConfig+0x642> + return HAL_ERROR; + 800a80c: 2001 movs r0, #1 + 800a80e: e004 b.n 800a81a <HAL_RCC_OscConfig+0x642> + return HAL_ERROR; + 800a810: 2001 movs r0, #1 + 800a812: e002 b.n 800a81a <HAL_RCC_OscConfig+0x642> + return HAL_ERROR; + 800a814: 2001 movs r0, #1 + 800a816: e000 b.n 800a81a <HAL_RCC_OscConfig+0x642> + return HAL_OK; + 800a818: 2000 movs r0, #0 +} + 800a81a: bdf8 pop {r3, r4, r5, r6, r7, pc} + return HAL_OK; + 800a81c: 2000 movs r0, #0 + 800a81e: e7fc b.n 800a81a <HAL_RCC_OscConfig+0x642> + return HAL_ERROR; + 800a820: 2001 movs r0, #1 + 800a822: e7fa b.n 800a81a <HAL_RCC_OscConfig+0x642> + return HAL_ERROR; + 800a824: 2001 movs r0, #1 + 800a826: e7f8 b.n 800a81a <HAL_RCC_OscConfig+0x642> + 800a828: 2001 movs r0, #1 + 800a82a: e7f6 b.n 800a81a <HAL_RCC_OscConfig+0x642> + 800a82c: 2001 movs r0, #1 + 800a82e: e7f4 b.n 800a81a <HAL_RCC_OscConfig+0x642> + 800a830: 2001 movs r0, #1 + 800a832: e7f2 b.n 800a81a <HAL_RCC_OscConfig+0x642> + 800a834: eefefffc .word 0xeefefffc + 800a838: 11c1808c .word 0x11c1808c + +0800a83c <HAL_RCC_ClockConfig>: + if (RCC_ClkInitStruct == NULL) + 800a83c: 2800 cmp r0, #0 + 800a83e: f000 8104 beq.w 800aa4a <HAL_RCC_ClockConfig+0x20e> +{ + 800a842: b570 push {r4, r5, r6, lr} + 800a844: 460c mov r4, r1 + 800a846: 4605 mov r5, r0 + if (FLatency > __HAL_FLASH_GET_LATENCY()) + 800a848: 4b82 ldr r3, [pc, #520] ; (800aa54 <HAL_RCC_ClockConfig+0x218>) + 800a84a: 681b ldr r3, [r3, #0] + 800a84c: f003 0307 and.w r3, r3, #7 + 800a850: 428b cmp r3, r1 + 800a852: d327 bcc.n 800a8a4 <HAL_RCC_ClockConfig+0x68> + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 800a854: 682b ldr r3, [r5, #0] + 800a856: f013 0f02 tst.w r3, #2 + 800a85a: d139 bne.n 800a8d0 <HAL_RCC_ClockConfig+0x94> + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK3) == RCC_CLOCKTYPE_HCLK3) + 800a85c: 682b ldr r3, [r5, #0] + 800a85e: f013 0f40 tst.w r3, #64 ; 0x40 + 800a862: d14d bne.n 800a900 <HAL_RCC_ClockConfig+0xc4> + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 800a864: 682b ldr r3, [r5, #0] + 800a866: f013 0f04 tst.w r3, #4 + 800a86a: d165 bne.n 800a938 <HAL_RCC_ClockConfig+0xfc> + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 800a86c: 682b ldr r3, [r5, #0] + 800a86e: f013 0f08 tst.w r3, #8 + 800a872: d179 bne.n 800a968 <HAL_RCC_ClockConfig+0x12c> + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 800a874: 682b ldr r3, [r5, #0] + 800a876: f013 0f01 tst.w r3, #1 + 800a87a: f000 80c1 beq.w 800aa00 <HAL_RCC_ClockConfig+0x1c4> + if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 800a87e: 686b ldr r3, [r5, #4] + 800a880: 2b02 cmp r3, #2 + 800a882: f000 808b beq.w 800a99c <HAL_RCC_ClockConfig+0x160> + else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 800a886: 2b03 cmp r3, #3 + 800a888: f000 8090 beq.w 800a9ac <HAL_RCC_ClockConfig+0x170> + else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_MSI) + 800a88c: 2b00 cmp r3, #0 + 800a88e: f040 8095 bne.w 800a9bc <HAL_RCC_ClockConfig+0x180> + return ((READ_BIT(RCC->CR, RCC_CR_MSIRDY) == (RCC_CR_MSIRDY)) ? 1UL : 0UL); + 800a892: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a896: 6812 ldr r2, [r2, #0] + 800a898: f012 0f02 tst.w r2, #2 + 800a89c: f040 8094 bne.w 800a9c8 <HAL_RCC_ClockConfig+0x18c> + return HAL_ERROR; + 800a8a0: 2001 movs r0, #1 + 800a8a2: e0d1 b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + __HAL_FLASH_SET_LATENCY(FLatency); + 800a8a4: 4a6b ldr r2, [pc, #428] ; (800aa54 <HAL_RCC_ClockConfig+0x218>) + 800a8a6: 6813 ldr r3, [r2, #0] + 800a8a8: f023 0307 bic.w r3, r3, #7 + 800a8ac: 430b orrs r3, r1 + 800a8ae: 6013 str r3, [r2, #0] + tickstart = HAL_GetTick(); + 800a8b0: f7f8 f9f2 bl 8002c98 <HAL_GetTick> + 800a8b4: 4606 mov r6, r0 + while (__HAL_FLASH_GET_LATENCY() != FLatency) + 800a8b6: 4b67 ldr r3, [pc, #412] ; (800aa54 <HAL_RCC_ClockConfig+0x218>) + 800a8b8: 681b ldr r3, [r3, #0] + 800a8ba: f003 0307 and.w r3, r3, #7 + 800a8be: 42a3 cmp r3, r4 + 800a8c0: d0c8 beq.n 800a854 <HAL_RCC_ClockConfig+0x18> + if ((HAL_GetTick() - tickstart) > LATENCY_TIMEOUT_VALUE) + 800a8c2: f7f8 f9e9 bl 8002c98 <HAL_GetTick> + 800a8c6: 1b80 subs r0, r0, r6 + 800a8c8: 2802 cmp r0, #2 + 800a8ca: d9f4 bls.n 800a8b6 <HAL_RCC_ClockConfig+0x7a> + return HAL_TIMEOUT; + 800a8cc: 2003 movs r0, #3 + 800a8ce: e0bb b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + LL_RCC_SetAHBPrescaler(RCC_ClkInitStruct->AHBCLKDivider); + 800a8d0: 68ab ldr r3, [r5, #8] + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); + 800a8d2: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800a8d6: 688a ldr r2, [r1, #8] + 800a8d8: f022 02f0 bic.w r2, r2, #240 ; 0xf0 + 800a8dc: 4313 orrs r3, r2 + 800a8de: 608b str r3, [r1, #8] + tickstart = HAL_GetTick(); + 800a8e0: f7f8 f9da bl 8002c98 <HAL_GetTick> + 800a8e4: 4606 mov r6, r0 + * @rmtoll CFGR HPREF LL_RCC_IsActiveFlag_HPRE + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HPRE(void) +{ + return ((READ_BIT(RCC->CFGR, RCC_CFGR_HPREF) == (RCC_CFGR_HPREF)) ? 1UL : 0UL); + 800a8e6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a8ea: 689b ldr r3, [r3, #8] + 800a8ec: f413 3f80 tst.w r3, #65536 ; 0x10000 + 800a8f0: d1b4 bne.n 800a85c <HAL_RCC_ClockConfig+0x20> + if ((HAL_GetTick() - tickstart) > PRESCALER_TIMEOUT_VALUE) + 800a8f2: f7f8 f9d1 bl 8002c98 <HAL_GetTick> + 800a8f6: 1b80 subs r0, r0, r6 + 800a8f8: 2802 cmp r0, #2 + 800a8fa: d9f4 bls.n 800a8e6 <HAL_RCC_ClockConfig+0xaa> + return HAL_TIMEOUT; + 800a8fc: 2003 movs r0, #3 + 800a8fe: e0a3 b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + LL_RCC_SetAHB3Prescaler(RCC_ClkInitStruct->AHBCLK3Divider); + 800a900: 6969 ldr r1, [r5, #20] + MODIFY_REG(RCC->EXTCFGR, RCC_EXTCFGR_SHDHPRE, Prescaler >> 4); + 800a902: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a906: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 + 800a90a: f023 030f bic.w r3, r3, #15 + 800a90e: ea43 1311 orr.w r3, r3, r1, lsr #4 + 800a912: f8c2 3108 str.w r3, [r2, #264] ; 0x108 + tickstart = HAL_GetTick(); + 800a916: f7f8 f9bf bl 8002c98 <HAL_GetTick> + 800a91a: 4606 mov r6, r0 + * @rmtoll EXTCFGR SHDHPREF LL_RCC_IsActiveFlag_SHDHPRE + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SHDHPRE(void) +{ + return ((READ_BIT(RCC->EXTCFGR, RCC_EXTCFGR_SHDHPREF) == (RCC_EXTCFGR_SHDHPREF)) ? 1UL : 0UL); + 800a91c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a920: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 800a924: f413 3f80 tst.w r3, #65536 ; 0x10000 + 800a928: d19c bne.n 800a864 <HAL_RCC_ClockConfig+0x28> + if ((HAL_GetTick() - tickstart) > PRESCALER_TIMEOUT_VALUE) + 800a92a: f7f8 f9b5 bl 8002c98 <HAL_GetTick> + 800a92e: 1b80 subs r0, r0, r6 + 800a930: 2802 cmp r0, #2 + 800a932: d9f3 bls.n 800a91c <HAL_RCC_ClockConfig+0xe0> + return HAL_TIMEOUT; + 800a934: 2003 movs r0, #3 + 800a936: e087 b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + LL_RCC_SetAPB1Prescaler(RCC_ClkInitStruct->APB1CLKDivider); + 800a938: 68eb ldr r3, [r5, #12] + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, Prescaler); + 800a93a: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800a93e: 688a ldr r2, [r1, #8] + 800a940: f422 62e0 bic.w r2, r2, #1792 ; 0x700 + 800a944: 4313 orrs r3, r2 + 800a946: 608b str r3, [r1, #8] + tickstart = HAL_GetTick(); + 800a948: f7f8 f9a6 bl 8002c98 <HAL_GetTick> + 800a94c: 4606 mov r6, r0 + * @rmtoll CFGR PPRE1F LL_RCC_IsActiveFlag_PPRE1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PPRE1(void) +{ + return ((READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1F) == (RCC_CFGR_PPRE1F)) ? 1UL : 0UL); + 800a94e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a952: 689b ldr r3, [r3, #8] + 800a954: f413 3f00 tst.w r3, #131072 ; 0x20000 + 800a958: d188 bne.n 800a86c <HAL_RCC_ClockConfig+0x30> + if ((HAL_GetTick() - tickstart) > PRESCALER_TIMEOUT_VALUE) + 800a95a: f7f8 f99d bl 8002c98 <HAL_GetTick> + 800a95e: 1b80 subs r0, r0, r6 + 800a960: 2802 cmp r0, #2 + 800a962: d9f4 bls.n 800a94e <HAL_RCC_ClockConfig+0x112> + return HAL_TIMEOUT; + 800a964: 2003 movs r0, #3 + 800a966: e06f b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + LL_RCC_SetAPB2Prescaler((RCC_ClkInitStruct->APB2CLKDivider) << 3U); + 800a968: 6929 ldr r1, [r5, #16] + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, Prescaler); + 800a96a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a96e: 6893 ldr r3, [r2, #8] + 800a970: f423 5360 bic.w r3, r3, #14336 ; 0x3800 + 800a974: ea43 03c1 orr.w r3, r3, r1, lsl #3 + 800a978: 6093 str r3, [r2, #8] + tickstart = HAL_GetTick(); + 800a97a: f7f8 f98d bl 8002c98 <HAL_GetTick> + 800a97e: 4606 mov r6, r0 + * @rmtoll CFGR PPRE2F LL_RCC_IsActiveFlag_PPRE2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PPRE2(void) +{ + return ((READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2F) == (RCC_CFGR_PPRE2F)) ? 1UL : 0UL); + 800a980: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a984: 689b ldr r3, [r3, #8] + 800a986: f413 2f80 tst.w r3, #262144 ; 0x40000 + 800a98a: f47f af73 bne.w 800a874 <HAL_RCC_ClockConfig+0x38> + if ((HAL_GetTick() - tickstart) > PRESCALER_TIMEOUT_VALUE) + 800a98e: f7f8 f983 bl 8002c98 <HAL_GetTick> + 800a992: 1b80 subs r0, r0, r6 + 800a994: 2802 cmp r0, #2 + 800a996: d9f3 bls.n 800a980 <HAL_RCC_ClockConfig+0x144> + return HAL_TIMEOUT; + 800a998: 2003 movs r0, #3 + 800a99a: e055 b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + return ((READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY)) ? 1UL : 0UL); + 800a99c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a9a0: 6812 ldr r2, [r2, #0] + 800a9a2: f412 3f00 tst.w r2, #131072 ; 0x20000 + 800a9a6: d10f bne.n 800a9c8 <HAL_RCC_ClockConfig+0x18c> + return HAL_ERROR; + 800a9a8: 2001 movs r0, #1 + 800a9aa: e04d b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + return ((READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)) ? 1UL : 0UL); + 800a9ac: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a9b0: 6812 ldr r2, [r2, #0] + 800a9b2: f012 7f00 tst.w r2, #33554432 ; 0x2000000 + 800a9b6: d107 bne.n 800a9c8 <HAL_RCC_ClockConfig+0x18c> + return HAL_ERROR; + 800a9b8: 2001 movs r0, #1 + 800a9ba: e045 b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + return ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY)) ? 1UL : 0UL); + 800a9bc: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800a9c0: 6812 ldr r2, [r2, #0] + 800a9c2: f412 6f80 tst.w r2, #1024 ; 0x400 + 800a9c6: d042 beq.n 800aa4e <HAL_RCC_ClockConfig+0x212> + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); + 800a9c8: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800a9cc: 688a ldr r2, [r1, #8] + 800a9ce: f022 0203 bic.w r2, r2, #3 + 800a9d2: 4313 orrs r3, r2 + 800a9d4: 608b str r3, [r1, #8] + tickstart = HAL_GetTick(); + 800a9d6: f7f8 f95f bl 8002c98 <HAL_GetTick> + 800a9da: 4606 mov r6, r0 + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); + 800a9dc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800a9e0: 689b ldr r3, [r3, #8] + 800a9e2: f003 030c and.w r3, r3, #12 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) + 800a9e6: 686a ldr r2, [r5, #4] + 800a9e8: ebb3 0f82 cmp.w r3, r2, lsl #2 + 800a9ec: d008 beq.n 800aa00 <HAL_RCC_ClockConfig+0x1c4> + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + 800a9ee: f7f8 f953 bl 8002c98 <HAL_GetTick> + 800a9f2: 1b80 subs r0, r0, r6 + 800a9f4: f241 3388 movw r3, #5000 ; 0x1388 + 800a9f8: 4298 cmp r0, r3 + 800a9fa: d9ef bls.n 800a9dc <HAL_RCC_ClockConfig+0x1a0> + return HAL_TIMEOUT; + 800a9fc: 2003 movs r0, #3 + 800a9fe: e023 b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + if (FLatency < __HAL_FLASH_GET_LATENCY()) + 800aa00: 4b14 ldr r3, [pc, #80] ; (800aa54 <HAL_RCC_ClockConfig+0x218>) + 800aa02: 681b ldr r3, [r3, #0] + 800aa04: f003 0307 and.w r3, r3, #7 + 800aa08: 42a3 cmp r3, r4 + 800aa0a: d915 bls.n 800aa38 <HAL_RCC_ClockConfig+0x1fc> + __HAL_FLASH_SET_LATENCY(FLatency); + 800aa0c: 4a11 ldr r2, [pc, #68] ; (800aa54 <HAL_RCC_ClockConfig+0x218>) + 800aa0e: 6813 ldr r3, [r2, #0] + 800aa10: f023 0307 bic.w r3, r3, #7 + 800aa14: 4323 orrs r3, r4 + 800aa16: 6013 str r3, [r2, #0] + tickstart = HAL_GetTick(); + 800aa18: f7f8 f93e bl 8002c98 <HAL_GetTick> + 800aa1c: 4605 mov r5, r0 + while (__HAL_FLASH_GET_LATENCY() != FLatency) + 800aa1e: 4b0d ldr r3, [pc, #52] ; (800aa54 <HAL_RCC_ClockConfig+0x218>) + 800aa20: 681b ldr r3, [r3, #0] + 800aa22: f003 0307 and.w r3, r3, #7 + 800aa26: 42a3 cmp r3, r4 + 800aa28: d006 beq.n 800aa38 <HAL_RCC_ClockConfig+0x1fc> + if ((HAL_GetTick() - tickstart) > LATENCY_TIMEOUT_VALUE) + 800aa2a: f7f8 f935 bl 8002c98 <HAL_GetTick> + 800aa2e: 1b40 subs r0, r0, r5 + 800aa30: 2802 cmp r0, #2 + 800aa32: d9f4 bls.n 800aa1e <HAL_RCC_ClockConfig+0x1e2> + return HAL_TIMEOUT; + 800aa34: 2003 movs r0, #3 + 800aa36: e007 b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + SystemCoreClock = HAL_RCC_GetHCLKFreq(); + 800aa38: f7ff fbbe bl 800a1b8 <HAL_RCC_GetHCLKFreq> + 800aa3c: 4b06 ldr r3, [pc, #24] ; (800aa58 <HAL_RCC_ClockConfig+0x21c>) + 800aa3e: 6018 str r0, [r3, #0] + return HAL_InitTick(uwTickPrio); + 800aa40: 4b06 ldr r3, [pc, #24] ; (800aa5c <HAL_RCC_ClockConfig+0x220>) + 800aa42: 6818 ldr r0, [r3, #0] + 800aa44: f7f8 f926 bl 8002c94 <HAL_InitTick> +} + 800aa48: bd70 pop {r4, r5, r6, pc} + return HAL_ERROR; + 800aa4a: 2001 movs r0, #1 +} + 800aa4c: 4770 bx lr + return HAL_ERROR; + 800aa4e: 2001 movs r0, #1 + 800aa50: e7fa b.n 800aa48 <HAL_RCC_ClockConfig+0x20c> + 800aa52: bf00 nop + 800aa54: 58004000 .word 0x58004000 + 800aa58: 20000828 .word 0x20000828 + 800aa5c: 2000082c .word 0x2000082c + +0800aa60 <HAL_RCC_GetPCLK1Freq>: +{ + 800aa60: b508 push {r3, lr} + return ((uint32_t)(__LL_RCC_CALC_PCLK1_FREQ(HAL_RCC_GetHCLKFreq(), LL_RCC_GetAPB1Prescaler()))); + 800aa62: f7ff fba9 bl 800a1b8 <HAL_RCC_GetHCLKFreq> + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1)); + 800aa66: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800aa6a: 689b ldr r3, [r3, #8] + 800aa6c: f3c3 2302 ubfx r3, r3, #8, #3 + 800aa70: 4a02 ldr r2, [pc, #8] ; (800aa7c <HAL_RCC_GetPCLK1Freq+0x1c>) + 800aa72: f852 3023 ldr.w r3, [r2, r3, lsl #2] +} + 800aa76: 40d8 lsrs r0, r3 + 800aa78: bd08 pop {r3, pc} + 800aa7a: bf00 nop + 800aa7c: 0801853c .word 0x0801853c + +0800aa80 <HAL_RCC_GetPCLK2Freq>: +{ + 800aa80: b508 push {r3, lr} + return ((uint32_t)(__LL_RCC_CALC_PCLK2_FREQ(HAL_RCC_GetHCLKFreq(), LL_RCC_GetAPB2Prescaler()))); + 800aa82: f7ff fb99 bl 800a1b8 <HAL_RCC_GetHCLKFreq> + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2)); + 800aa86: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800aa8a: 689b ldr r3, [r3, #8] + 800aa8c: f3c3 23c2 ubfx r3, r3, #11, #3 + 800aa90: 4a02 ldr r2, [pc, #8] ; (800aa9c <HAL_RCC_GetPCLK2Freq+0x1c>) + 800aa92: f852 3023 ldr.w r3, [r2, r3, lsl #2] +} + 800aa96: 40d8 lsrs r0, r3 + 800aa98: bd08 pop {r3, pc} + 800aa9a: bf00 nop + 800aa9c: 0801853c .word 0x0801853c + +0800aaa0 <HAL_RCCEx_PeriphCLKConfig>: + * the RTC clock source: in this case the access to Backup domain is enabled. + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + 800aaa0: b570 push {r4, r5, r6, lr} + 800aaa2: 4604 mov r4, r0 + + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + + /*-------------------------- RTC clock source configuration ----------------------*/ + if ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) + 800aaa4: 6803 ldr r3, [r0, #0] + 800aaa6: f413 3f80 tst.w r3, #65536 ; 0x10000 + 800aaaa: f040 80ab bne.w 800ac04 <HAL_RCCEx_PeriphCLKConfig+0x164> + HAL_StatusTypeDef status = HAL_OK; /* Final status */ + 800aaae: 2500 movs r5, #0 + } + + } + + /*-------------------- USART1 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) + 800aab0: 6823 ldr r3, [r4, #0] + 800aab2: f013 0f01 tst.w r3, #1 + 800aab6: d00a beq.n 800aace <HAL_RCCEx_PeriphCLKConfig+0x2e> + { + /* Check the parameters */ + assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); + + /* Configure the USART1 clock source */ + __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); + 800aab8: 6862 ldr r2, [r4, #4] + MODIFY_REG(RCC->CCIPR, (USARTxSource >> 16), (USARTxSource & 0x0000FFFFU)); + 800aaba: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800aabe: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 800aac2: ea23 4312 bic.w r3, r3, r2, lsr #16 + 800aac6: b292 uxth r2, r2 + 800aac8: 4313 orrs r3, r2 + 800aaca: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + } + + /*-------------------- USART2 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) + 800aace: 6823 ldr r3, [r4, #0] + 800aad0: f013 0f02 tst.w r3, #2 + 800aad4: d00a beq.n 800aaec <HAL_RCCEx_PeriphCLKConfig+0x4c> + { + /* Check the parameters */ + assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); + + /* Configure the USART2 clock source */ + __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); + 800aad6: 68a2 ldr r2, [r4, #8] + 800aad8: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800aadc: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 800aae0: ea23 4312 bic.w r3, r3, r2, lsr #16 + 800aae4: b292 uxth r2, r2 + 800aae6: 4313 orrs r3, r2 + 800aae8: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + } + + /*-------------------- LPUART1 clock source configuration ------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) + 800aaec: 6823 ldr r3, [r4, #0] + 800aaee: f013 0f20 tst.w r3, #32 + 800aaf2: d009 beq.n 800ab08 <HAL_RCCEx_PeriphCLKConfig+0x68> + { + /* Check the parameters */ + assert_param(IS_RCC_LPUART1CLKSOURCE(PeriphClkInit->Lpuart1ClockSelection)); + + /* Configure the LPUAR1 clock source */ + __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection); + 800aaf4: 6923 ldr r3, [r4, #16] + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPUART1SEL, LPUARTxSource); + 800aaf6: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800aafa: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88 + 800aafe: f422 6240 bic.w r2, r2, #3072 ; 0xc00 + 800ab02: 4313 orrs r3, r2 + 800ab04: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + } + + /*-------------------- LPTIM1 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == (RCC_PERIPHCLK_LPTIM1)) + 800ab08: 6823 ldr r3, [r4, #0] + 800ab0a: f413 7f00 tst.w r3, #512 ; 0x200 + 800ab0e: d00c beq.n 800ab2a <HAL_RCCEx_PeriphCLKConfig+0x8a> + { + /* Check the parameters */ + assert_param(IS_RCC_LPTIM1CLKSOURCE(PeriphClkInit->Lptim1ClockSelection)); + + /* Configure the LPTIM1 clock source */ + __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection); + 800ab10: 6a20 ldr r0, [r4, #32] + MODIFY_REG(RCC->CCIPR, (LPTIMxSource & 0xFFFF0000U), (LPTIMxSource << 16)); + 800ab12: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800ab16: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 800ab1a: 0c02 lsrs r2, r0, #16 + 800ab1c: 0412 lsls r2, r2, #16 + 800ab1e: ea23 0302 bic.w r3, r3, r2 + 800ab22: ea43 4300 orr.w r3, r3, r0, lsl #16 + 800ab26: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + } + + /*-------------------- LPTIM2 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM2) == (RCC_PERIPHCLK_LPTIM2)) + 800ab2a: 6823 ldr r3, [r4, #0] + 800ab2c: f413 6f80 tst.w r3, #1024 ; 0x400 + 800ab30: d00c beq.n 800ab4c <HAL_RCCEx_PeriphCLKConfig+0xac> + { + /* Check the parameters */ + assert_param(IS_RCC_LPTIM2CLKSOURCE(PeriphClkInit->Lptim2ClockSelection)); + + /* Configure the LPTIM2 clock source */ + __HAL_RCC_LPTIM2_CONFIG(PeriphClkInit->Lptim2ClockSelection); + 800ab32: 6a60 ldr r0, [r4, #36] ; 0x24 + 800ab34: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800ab38: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 800ab3c: 0c02 lsrs r2, r0, #16 + 800ab3e: 0412 lsls r2, r2, #16 + 800ab40: ea23 0302 bic.w r3, r3, r2 + 800ab44: ea43 4300 orr.w r3, r3, r0, lsl #16 + 800ab48: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + } + + /*-------------------- LPTIM3 clock source configuration -------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM3) == (RCC_PERIPHCLK_LPTIM3)) + 800ab4c: 6823 ldr r3, [r4, #0] + 800ab4e: f413 6f00 tst.w r3, #2048 ; 0x800 + 800ab52: d00c beq.n 800ab6e <HAL_RCCEx_PeriphCLKConfig+0xce> + { + /* Check the parameters */ + assert_param(IS_RCC_LPTIM3CLKSOURCE(PeriphClkInit->Lptim3ClockSelection)); + + /* Configure the LPTIM3 clock source */ + __HAL_RCC_LPTIM3_CONFIG(PeriphClkInit->Lptim3ClockSelection); + 800ab54: 6aa0 ldr r0, [r4, #40] ; 0x28 + 800ab56: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800ab5a: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 800ab5e: 0c02 lsrs r2, r0, #16 + 800ab60: 0412 lsls r2, r2, #16 + 800ab62: ea23 0302 bic.w r3, r3, r2 + 800ab66: ea43 4300 orr.w r3, r3, r0, lsl #16 + 800ab6a: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + } + + /*-------------------- I2C1 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) + 800ab6e: 6823 ldr r3, [r4, #0] + 800ab70: f013 0f40 tst.w r3, #64 ; 0x40 + 800ab74: f040 809e bne.w 800acb4 <HAL_RCCEx_PeriphCLKConfig+0x214> + /* Configure the I2C1 clock source */ + __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); + } + + /*-------------------- I2C2 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) + 800ab78: 6823 ldr r3, [r4, #0] + 800ab7a: f013 0f80 tst.w r3, #128 ; 0x80 + 800ab7e: f040 80aa bne.w 800acd6 <HAL_RCCEx_PeriphCLKConfig+0x236> + /* Configure the I2C2 clock source */ + __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection); + } + + /*-------------------- I2C3 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) + 800ab82: 6823 ldr r3, [r4, #0] + 800ab84: f413 7f80 tst.w r3, #256 ; 0x100 + 800ab88: f040 80b6 bne.w 800acf8 <HAL_RCCEx_PeriphCLKConfig+0x258> + /* Configure the I2C3 clock source */ + __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection); + } + + /*-------------------- I2S2 clock source configuration ---------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S2) == (RCC_PERIPHCLK_I2S2)) + 800ab8c: 6823 ldr r3, [r4, #0] + 800ab8e: f013 0f10 tst.w r3, #16 + 800ab92: d00e beq.n 800abb2 <HAL_RCCEx_PeriphCLKConfig+0x112> + { + /* Check the parameters */ + assert_param(IS_RCC_I2S2CLKSOURCE(PeriphClkInit->I2s2ClockSelection)); + + /* Configure the I2S2 clock source */ + __HAL_RCC_I2S2_CONFIG(PeriphClkInit->I2s2ClockSelection); + 800ab94: 68e3 ldr r3, [r4, #12] + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2S2SEL, I2SxSource); + 800ab96: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800ab9a: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88 + 800ab9e: f422 7240 bic.w r2, r2, #768 ; 0x300 + 800aba2: 4313 orrs r3, r2 + 800aba4: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + + if (PeriphClkInit->I2s2ClockSelection == RCC_I2S2CLKSOURCE_PLL) + 800aba8: 68e3 ldr r3, [r4, #12] + 800abaa: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 800abae: f000 80b4 beq.w 800ad1a <HAL_RCCEx_PeriphCLKConfig+0x27a> + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_I2S2CLK); + } + } + + /*-------------------- RNG clock source configuration ----------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RNG) == (RCC_PERIPHCLK_RNG)) + 800abb2: 6823 ldr r3, [r4, #0] + 800abb4: f413 4f00 tst.w r3, #32768 ; 0x8000 + 800abb8: d00f beq.n 800abda <HAL_RCCEx_PeriphCLKConfig+0x13a> + { + assert_param(IS_RCC_RNGCLKSOURCE(PeriphClkInit->RngClockSelection)); + __HAL_RCC_RNG_CONFIG(PeriphClkInit->RngClockSelection); + 800abba: 6b23 ldr r3, [r4, #48] ; 0x30 + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_RNGSEL, RNGxSource); + 800abbc: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800abc0: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88 + 800abc4: f022 4240 bic.w r2, r2, #3221225472 ; 0xc0000000 + 800abc8: 4313 orrs r3, r2 + 800abca: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + + if (PeriphClkInit->RngClockSelection == RCC_RNGCLKSOURCE_PLL) + 800abce: 6b23 ldr r3, [r4, #48] ; 0x30 + 800abd0: b91b cbnz r3, 800abda <HAL_RCCEx_PeriphCLKConfig+0x13a> + { + /* Enable RCC_PLL_RNGCLK output */ + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_RNGCLK); + 800abd2: 68cb ldr r3, [r1, #12] + 800abd4: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 800abd8: 60cb str r3, [r1, #12] + } + } + + /*-------------------- ADC clock source configuration ----------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) + 800abda: 6823 ldr r3, [r4, #0] + 800abdc: f413 4f80 tst.w r3, #16384 ; 0x4000 + 800abe0: d00e beq.n 800ac00 <HAL_RCCEx_PeriphCLKConfig+0x160> + { + /* Check the parameters */ + assert_param(IS_RCC_ADCCLKSOURCE(PeriphClkInit->AdcClockSelection)); + + /* Configure the ADC interface clock source */ + __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); + 800abe2: 6ae3 ldr r3, [r4, #44] ; 0x2c + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_ADCSEL, ADCxSource); + 800abe4: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800abe8: f8d1 2088 ldr.w r2, [r1, #136] ; 0x88 + 800abec: f022 5240 bic.w r2, r2, #805306368 ; 0x30000000 + 800abf0: 4313 orrs r3, r2 + 800abf2: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + + if (PeriphClkInit->AdcClockSelection == RCC_ADCCLKSOURCE_PLL) + 800abf6: 6ae3 ldr r3, [r4, #44] ; 0x2c + 800abf8: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 800abfc: f000 8092 beq.w 800ad24 <HAL_RCCEx_PeriphCLKConfig+0x284> + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_ADCCLK); + } + } + + return status; +} + 800ac00: 4628 mov r0, r5 + 800ac02: bd70 pop {r4, r5, r6, pc} + HAL_PWR_EnableBkUpAccess(); + 800ac04: f7ff f94e bl 8009ea4 <HAL_PWR_EnableBkUpAccess> + tickstart = HAL_GetTick(); + 800ac08: f7f8 f846 bl 8002c98 <HAL_GetTick> + 800ac0c: 4605 mov r5, r0 + while (!(READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP))) + 800ac0e: 4b48 ldr r3, [pc, #288] ; (800ad30 <HAL_RCCEx_PeriphCLKConfig+0x290>) + 800ac10: 681b ldr r3, [r3, #0] + 800ac12: f413 7f80 tst.w r3, #256 ; 0x100 + 800ac16: d106 bne.n 800ac26 <HAL_RCCEx_PeriphCLKConfig+0x186> + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 800ac18: f7f8 f83e bl 8002c98 <HAL_GetTick> + 800ac1c: 1b40 subs r0, r0, r5 + 800ac1e: 2802 cmp r0, #2 + 800ac20: d9f5 bls.n 800ac0e <HAL_RCCEx_PeriphCLKConfig+0x16e> + ret = HAL_TIMEOUT; + 800ac22: 2503 movs r5, #3 + 800ac24: e000 b.n 800ac28 <HAL_RCCEx_PeriphCLKConfig+0x188> + HAL_StatusTypeDef ret = HAL_OK; /* Intermediate status */ + 800ac26: 2500 movs r5, #0 + if (ret == HAL_OK) + 800ac28: 2d00 cmp r5, #0 + 800ac2a: f47f af41 bne.w 800aab0 <HAL_RCCEx_PeriphCLKConfig+0x10> + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)); + 800ac2e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800ac32: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800ac36: f403 7340 and.w r3, r3, #768 ; 0x300 + if (LL_RCC_GetRTCClockSource() != PeriphClkInit->RTCClockSelection) + 800ac3a: 6b62 ldr r2, [r4, #52] ; 0x34 + 800ac3c: 429a cmp r2, r3 + 800ac3e: d024 beq.n 800ac8a <HAL_RCCEx_PeriphCLKConfig+0x1ea> + tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL)); + 800ac40: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800ac44: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 800ac48: f422 7240 bic.w r2, r2, #768 ; 0x300 + SET_BIT(RCC->BDCR, RCC_BDCR_BDRST); + 800ac4c: f8d3 1090 ldr.w r1, [r3, #144] ; 0x90 + 800ac50: f441 3180 orr.w r1, r1, #65536 ; 0x10000 + 800ac54: f8c3 1090 str.w r1, [r3, #144] ; 0x90 + CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST); + 800ac58: f8d3 1090 ldr.w r1, [r3, #144] ; 0x90 + 800ac5c: f421 3180 bic.w r1, r1, #65536 ; 0x10000 + 800ac60: f8c3 1090 str.w r1, [r3, #144] ; 0x90 + RCC->BDCR = tmpregister; + 800ac64: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSERDY)) + 800ac68: f012 0f02 tst.w r2, #2 + 800ac6c: d10f bne.n 800ac8e <HAL_RCCEx_PeriphCLKConfig+0x1ee> + if (ret == HAL_OK) + 800ac6e: 2d00 cmp r5, #0 + 800ac70: f47f af1e bne.w 800aab0 <HAL_RCCEx_PeriphCLKConfig+0x10> + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + 800ac74: 6b63 ldr r3, [r4, #52] ; 0x34 + MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source); + 800ac76: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800ac7a: f8d1 2090 ldr.w r2, [r1, #144] ; 0x90 + 800ac7e: f422 7240 bic.w r2, r2, #768 ; 0x300 + 800ac82: 4313 orrs r3, r2 + 800ac84: f8c1 3090 str.w r3, [r1, #144] ; 0x90 +} + 800ac88: e712 b.n 800aab0 <HAL_RCCEx_PeriphCLKConfig+0x10> + uint32_t tmpregister = 0; + 800ac8a: 2200 movs r2, #0 + 800ac8c: e7ec b.n 800ac68 <HAL_RCCEx_PeriphCLKConfig+0x1c8> + tickstart = HAL_GetTick(); + 800ac8e: f7f8 f803 bl 8002c98 <HAL_GetTick> + 800ac92: 4606 mov r6, r0 + return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY)) ? 1UL : 0UL); + 800ac94: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800ac98: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800ac9c: f013 0f02 tst.w r3, #2 + 800aca0: d1e5 bne.n 800ac6e <HAL_RCCEx_PeriphCLKConfig+0x1ce> + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 800aca2: f7f7 fff9 bl 8002c98 <HAL_GetTick> + 800aca6: 1b80 subs r0, r0, r6 + 800aca8: f241 3388 movw r3, #5000 ; 0x1388 + 800acac: 4298 cmp r0, r3 + 800acae: d9f1 bls.n 800ac94 <HAL_RCCEx_PeriphCLKConfig+0x1f4> + ret = HAL_TIMEOUT; + 800acb0: 2503 movs r5, #3 + 800acb2: e7dc b.n 800ac6e <HAL_RCCEx_PeriphCLKConfig+0x1ce> + __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); + 800acb4: 6963 ldr r3, [r4, #20] + MODIFY_REG(RCC->CCIPR, ((I2CxSource >> 4) & 0x000FF000U), ((I2CxSource << 4) & 0x000FF000U)); + 800acb6: f04f 40b0 mov.w r0, #1476395008 ; 0x58000000 + 800acba: f8d0 2088 ldr.w r2, [r0, #136] ; 0x88 + 800acbe: 0919 lsrs r1, r3, #4 + 800acc0: f401 217f and.w r1, r1, #1044480 ; 0xff000 + 800acc4: ea22 0201 bic.w r2, r2, r1 + 800acc8: 011b lsls r3, r3, #4 + 800acca: f403 237f and.w r3, r3, #1044480 ; 0xff000 + 800acce: 4313 orrs r3, r2 + 800acd0: f8c0 3088 str.w r3, [r0, #136] ; 0x88 +} + 800acd4: e750 b.n 800ab78 <HAL_RCCEx_PeriphCLKConfig+0xd8> + __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection); + 800acd6: 69a3 ldr r3, [r4, #24] + MODIFY_REG(RCC->CCIPR, ((I2CxSource >> 4) & 0x000FF000U), ((I2CxSource << 4) & 0x000FF000U)); + 800acd8: f04f 40b0 mov.w r0, #1476395008 ; 0x58000000 + 800acdc: f8d0 2088 ldr.w r2, [r0, #136] ; 0x88 + 800ace0: 0919 lsrs r1, r3, #4 + 800ace2: f401 217f and.w r1, r1, #1044480 ; 0xff000 + 800ace6: ea22 0201 bic.w r2, r2, r1 + 800acea: 011b lsls r3, r3, #4 + 800acec: f403 237f and.w r3, r3, #1044480 ; 0xff000 + 800acf0: 4313 orrs r3, r2 + 800acf2: f8c0 3088 str.w r3, [r0, #136] ; 0x88 +} + 800acf6: e744 b.n 800ab82 <HAL_RCCEx_PeriphCLKConfig+0xe2> + __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection); + 800acf8: 69e3 ldr r3, [r4, #28] + MODIFY_REG(RCC->CCIPR, ((I2CxSource >> 4) & 0x000FF000U), ((I2CxSource << 4) & 0x000FF000U)); + 800acfa: f04f 40b0 mov.w r0, #1476395008 ; 0x58000000 + 800acfe: f8d0 2088 ldr.w r2, [r0, #136] ; 0x88 + 800ad02: 0919 lsrs r1, r3, #4 + 800ad04: f401 217f and.w r1, r1, #1044480 ; 0xff000 + 800ad08: ea22 0201 bic.w r2, r2, r1 + 800ad0c: 011b lsls r3, r3, #4 + 800ad0e: f403 237f and.w r3, r3, #1044480 ; 0xff000 + 800ad12: 4313 orrs r3, r2 + 800ad14: f8c0 3088 str.w r3, [r0, #136] ; 0x88 +} + 800ad18: e738 b.n 800ab8c <HAL_RCCEx_PeriphCLKConfig+0xec> + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_I2S2CLK); + 800ad1a: 68cb ldr r3, [r1, #12] + 800ad1c: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 800ad20: 60cb str r3, [r1, #12] + 800ad22: e746 b.n 800abb2 <HAL_RCCEx_PeriphCLKConfig+0x112> + __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL_ADCCLK); + 800ad24: 68cb ldr r3, [r1, #12] + 800ad26: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 800ad2a: 60cb str r3, [r1, #12] + 800ad2c: e768 b.n 800ac00 <HAL_RCCEx_PeriphCLKConfig+0x160> + 800ad2e: bf00 nop + 800ad30: 58000400 .word 0x58000400 + +0800ad34 <HAL_RTC_DeactivateAlarm>: + * @arg RTC_ALARM_A: AlarmA + * @arg RTC_ALARM_B: AlarmB + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RTC_DeactivateAlarm(RTC_HandleTypeDef *hrtc, uint32_t Alarm) +{ + 800ad34: 4603 mov r3, r0 + /* Check the parameters */ + assert_param(IS_RTC_ALARM(Alarm)); + + /* Process Locked */ + __HAL_LOCK(hrtc); + 800ad36: f890 202c ldrb.w r2, [r0, #44] ; 0x2c + 800ad3a: 2a01 cmp r2, #1 + 800ad3c: d035 beq.n 800adaa <HAL_RTC_DeactivateAlarm+0x76> + 800ad3e: 2201 movs r2, #1 + 800ad40: f880 202c strb.w r2, [r0, #44] ; 0x2c + + hrtc->State = HAL_RTC_STATE_BUSY; + 800ad44: 2202 movs r2, #2 + 800ad46: f880 202d strb.w r2, [r0, #45] ; 0x2d + + /* Disable the write protection for RTC registers */ + __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc); + 800ad4a: 4a19 ldr r2, [pc, #100] ; (800adb0 <HAL_RTC_DeactivateAlarm+0x7c>) + 800ad4c: 20ca movs r0, #202 ; 0xca + 800ad4e: 6250 str r0, [r2, #36] ; 0x24 + 800ad50: 2053 movs r0, #83 ; 0x53 + 800ad52: 6250 str r0, [r2, #36] ; 0x24 + + if (Alarm == RTC_ALARM_A) + 800ad54: f5b1 7f80 cmp.w r1, #256 ; 0x100 + 800ad58: d018 beq.n 800ad8c <HAL_RTC_DeactivateAlarm+0x58> + WRITE_REG(RTC->SCR, RTC_SCR_CALRAF); + } + else + { + /* AlarmB, In case of interrupt mode is used, the interrupt source must disabled */ + CLEAR_BIT(RTC->CR, RTC_CR_ALRBE | RTC_CR_ALRBIE); + 800ad5a: 4a15 ldr r2, [pc, #84] ; (800adb0 <HAL_RTC_DeactivateAlarm+0x7c>) + 800ad5c: 6991 ldr r1, [r2, #24] + 800ad5e: f421 5108 bic.w r1, r1, #8704 ; 0x2200 + 800ad62: 6191 str r1, [r2, #24] + + /* AlarmB, Clear SSCLR */ + CLEAR_BIT(RTC->ALRMBSSR, RTC_ALRMBSSR_SSCLR); + 800ad64: 6cd1 ldr r1, [r2, #76] ; 0x4c + 800ad66: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 800ad6a: 64d1 str r1, [r2, #76] ; 0x4c + + /* Store in the handle the Alarm B disabled */ + CLEAR_BIT(hrtc->IsEnabled.RtcFeatures, RTC_MISR_ALRBMF); + 800ad6c: 6b19 ldr r1, [r3, #48] ; 0x30 + 800ad6e: f021 0102 bic.w r1, r1, #2 + 800ad72: 6319 str r1, [r3, #48] ; 0x30 + + /* Clear AlarmB flag */ + WRITE_REG(RTC->SCR, RTC_SCR_CALRBF); + 800ad74: 2102 movs r1, #2 + 800ad76: 65d1 str r1, [r2, #92] ; 0x5c + } + + /* Enable the write protection for RTC registers */ + __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc); + 800ad78: 4a0d ldr r2, [pc, #52] ; (800adb0 <HAL_RTC_DeactivateAlarm+0x7c>) + 800ad7a: 21ff movs r1, #255 ; 0xff + 800ad7c: 6251 str r1, [r2, #36] ; 0x24 + + hrtc->State = HAL_RTC_STATE_READY; + 800ad7e: 2201 movs r2, #1 + 800ad80: f883 202d strb.w r2, [r3, #45] ; 0x2d + + /* Process Unlocked */ + __HAL_UNLOCK(hrtc); + 800ad84: 2000 movs r0, #0 + 800ad86: f883 002c strb.w r0, [r3, #44] ; 0x2c + + return HAL_OK; + 800ad8a: 4770 bx lr + CLEAR_BIT(RTC->CR, RTC_CR_ALRAE | RTC_CR_ALRAIE); + 800ad8c: 6991 ldr r1, [r2, #24] + 800ad8e: f421 5188 bic.w r1, r1, #4352 ; 0x1100 + 800ad92: 6191 str r1, [r2, #24] + CLEAR_BIT(RTC->ALRMASSR, RTC_ALRMASSR_SSCLR); + 800ad94: 6c51 ldr r1, [r2, #68] ; 0x44 + 800ad96: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 800ad9a: 6451 str r1, [r2, #68] ; 0x44 + CLEAR_BIT(hrtc->IsEnabled.RtcFeatures, RTC_MISR_ALRAMF); + 800ad9c: 6b19 ldr r1, [r3, #48] ; 0x30 + 800ad9e: f021 0101 bic.w r1, r1, #1 + 800ada2: 6319 str r1, [r3, #48] ; 0x30 + WRITE_REG(RTC->SCR, RTC_SCR_CALRAF); + 800ada4: 2101 movs r1, #1 + 800ada6: 65d1 str r1, [r2, #92] ; 0x5c + 800ada8: e7e6 b.n 800ad78 <HAL_RTC_DeactivateAlarm+0x44> + __HAL_LOCK(hrtc); + 800adaa: 2002 movs r0, #2 +} + 800adac: 4770 bx lr + 800adae: bf00 nop + 800adb0: 40002800 .word 0x40002800 + +0800adb4 <HAL_RTC_AlarmIRQHandler>: + * @brief Handle Alarm interrupt request. + * @param hrtc RTC handle + * @retval None + */ +void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc) +{ + 800adb4: b538 push {r3, r4, r5, lr} + 800adb6: 4604 mov r4, r0 + uint32_t tmp = READ_REG(RTC->MISR) & READ_REG(hrtc->IsEnabled.RtcFeatures); + 800adb8: 4b0d ldr r3, [pc, #52] ; (800adf0 <HAL_RTC_AlarmIRQHandler+0x3c>) + 800adba: 6d5d ldr r5, [r3, #84] ; 0x54 + 800adbc: 6b03 ldr r3, [r0, #48] ; 0x30 + 800adbe: 401d ands r5, r3 + + if ((tmp & RTC_MISR_ALRAMF) != 0U) + 800adc0: f015 0f01 tst.w r5, #1 + 800adc4: d106 bne.n 800add4 <HAL_RTC_AlarmIRQHandler+0x20> +#else + HAL_RTC_AlarmAEventCallback(hrtc); +#endif + } + + if ((tmp & RTC_MISR_ALRBMF) != 0U) + 800adc6: f015 0f02 tst.w r5, #2 + 800adca: d109 bne.n 800ade0 <HAL_RTC_AlarmIRQHandler+0x2c> + HAL_RTCEx_AlarmBEventCallback(hrtc); +#endif + } + + /* Change RTC state */ + hrtc->State = HAL_RTC_STATE_READY; + 800adcc: 2301 movs r3, #1 + 800adce: f884 302d strb.w r3, [r4, #45] ; 0x2d +} + 800add2: bd38 pop {r3, r4, r5, pc} + WRITE_REG(RTC->SCR, RTC_SCR_CALRAF); + 800add4: 4b06 ldr r3, [pc, #24] ; (800adf0 <HAL_RTC_AlarmIRQHandler+0x3c>) + 800add6: 2201 movs r2, #1 + 800add8: 65da str r2, [r3, #92] ; 0x5c + HAL_RTC_AlarmAEventCallback(hrtc); + 800adda: f7f8 f93b bl 8003054 <HAL_RTC_AlarmAEventCallback> + 800adde: e7f2 b.n 800adc6 <HAL_RTC_AlarmIRQHandler+0x12> + WRITE_REG(RTC->SCR, RTC_SCR_CALRBF); + 800ade0: 4b03 ldr r3, [pc, #12] ; (800adf0 <HAL_RTC_AlarmIRQHandler+0x3c>) + 800ade2: 2202 movs r2, #2 + 800ade4: 65da str r2, [r3, #92] ; 0x5c + HAL_RTCEx_AlarmBEventCallback(hrtc); + 800ade6: 4620 mov r0, r4 + 800ade8: f000 f9ec bl 800b1c4 <HAL_RTCEx_AlarmBEventCallback> + 800adec: e7ee b.n 800adcc <HAL_RTC_AlarmIRQHandler+0x18> + 800adee: bf00 nop + 800adf0: 40002800 .word 0x40002800 + +0800adf4 <HAL_RTC_WaitForSynchro>: + * correctly copied into the RTC_TR and RTC_DR shadow registers. + * @param hrtc RTC handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RTC_WaitForSynchro(RTC_HandleTypeDef *hrtc) +{ + 800adf4: b510 push {r4, lr} + uint32_t tickstart; + + UNUSED(hrtc); + /* Clear RSF flag */ + CLEAR_BIT(RTC->ICSR, RTC_ICSR_RSF); + 800adf6: 4a0b ldr r2, [pc, #44] ; (800ae24 <HAL_RTC_WaitForSynchro+0x30>) + 800adf8: 68d3 ldr r3, [r2, #12] + 800adfa: f023 0320 bic.w r3, r3, #32 + 800adfe: 60d3 str r3, [r2, #12] + + tickstart = HAL_GetTick(); + 800ae00: f7f7 ff4a bl 8002c98 <HAL_GetTick> + 800ae04: 4604 mov r4, r0 + + /* Wait the registers to be synchronised */ + while (READ_BIT(RTC->ICSR, RTC_ICSR_RSF) == 0U) + 800ae06: 4b07 ldr r3, [pc, #28] ; (800ae24 <HAL_RTC_WaitForSynchro+0x30>) + 800ae08: 68db ldr r3, [r3, #12] + 800ae0a: f013 0f20 tst.w r3, #32 + 800ae0e: d107 bne.n 800ae20 <HAL_RTC_WaitForSynchro+0x2c> + { + if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE) + 800ae10: f7f7 ff42 bl 8002c98 <HAL_GetTick> + 800ae14: 1b00 subs r0, r0, r4 + 800ae16: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8 + 800ae1a: d9f4 bls.n 800ae06 <HAL_RTC_WaitForSynchro+0x12> + { + return HAL_TIMEOUT; + 800ae1c: 2003 movs r0, #3 + 800ae1e: e000 b.n 800ae22 <HAL_RTC_WaitForSynchro+0x2e> + } + } + + return HAL_OK; + 800ae20: 2000 movs r0, #0 +} + 800ae22: bd10 pop {r4, pc} + 800ae24: 40002800 .word 0x40002800 + +0800ae28 <RTC_EnterInitMode>: + * __HAL_RTC_WRITEPROTECTION_DISABLE() before calling this function. + * @param hrtc RTC handle + * @retval HAL status + */ +HAL_StatusTypeDef RTC_EnterInitMode(RTC_HandleTypeDef *hrtc) +{ + 800ae28: b570 push {r4, r5, r6, lr} + uint32_t tickstart; + HAL_StatusTypeDef status = HAL_OK; + + UNUSED(hrtc); + /* Check if the Initialization mode is set */ + if (READ_BIT(RTC->ICSR, RTC_ICSR_INITF) == 0U) + 800ae2a: 4b11 ldr r3, [pc, #68] ; (800ae70 <RTC_EnterInitMode+0x48>) + 800ae2c: 68db ldr r3, [r3, #12] + 800ae2e: f013 0f40 tst.w r3, #64 ; 0x40 + 800ae32: d002 beq.n 800ae3a <RTC_EnterInitMode+0x12> + HAL_StatusTypeDef status = HAL_OK; + 800ae34: 2400 movs r4, #0 + } + } + } + + return status; +} + 800ae36: 4620 mov r0, r4 + 800ae38: bd70 pop {r4, r5, r6, pc} + 800ae3a: 4606 mov r6, r0 + SET_BIT(RTC->ICSR, RTC_ICSR_INIT); + 800ae3c: 4a0c ldr r2, [pc, #48] ; (800ae70 <RTC_EnterInitMode+0x48>) + 800ae3e: 68d3 ldr r3, [r2, #12] + 800ae40: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800ae44: 60d3 str r3, [r2, #12] + tickstart = HAL_GetTick(); + 800ae46: f7f7 ff27 bl 8002c98 <HAL_GetTick> + 800ae4a: 4605 mov r5, r0 + HAL_StatusTypeDef status = HAL_OK; + 800ae4c: 2400 movs r4, #0 + while ((READ_BIT(RTC->ICSR, RTC_ICSR_INITF) == 0U) && (status != HAL_TIMEOUT)) + 800ae4e: 4b08 ldr r3, [pc, #32] ; (800ae70 <RTC_EnterInitMode+0x48>) + 800ae50: 68db ldr r3, [r3, #12] + 800ae52: f013 0f40 tst.w r3, #64 ; 0x40 + 800ae56: d1ee bne.n 800ae36 <RTC_EnterInitMode+0xe> + 800ae58: 2c03 cmp r4, #3 + 800ae5a: d0ec beq.n 800ae36 <RTC_EnterInitMode+0xe> + if ((HAL_GetTick() - tickstart) > RTC_TIMEOUT_VALUE) + 800ae5c: f7f7 ff1c bl 8002c98 <HAL_GetTick> + 800ae60: 1b43 subs r3, r0, r5 + 800ae62: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 800ae66: d9f2 bls.n 800ae4e <RTC_EnterInitMode+0x26> + hrtc->State = HAL_RTC_STATE_TIMEOUT; + 800ae68: 2403 movs r4, #3 + 800ae6a: f886 402d strb.w r4, [r6, #45] ; 0x2d + 800ae6e: e7ee b.n 800ae4e <RTC_EnterInitMode+0x26> + 800ae70: 40002800 .word 0x40002800 + +0800ae74 <RTC_ExitInitMode>: + * @brief Exit the RTC Initialization mode. + * @param hrtc RTC handle + * @retval HAL status + */ +HAL_StatusTypeDef RTC_ExitInitMode(RTC_HandleTypeDef *hrtc) +{ + 800ae74: b510 push {r4, lr} + 800ae76: 4604 mov r4, r0 + HAL_StatusTypeDef status = HAL_OK; + + /* Exit Initialization mode */ + CLEAR_BIT(RTC->ICSR, RTC_ICSR_INIT); + 800ae78: 4b10 ldr r3, [pc, #64] ; (800aebc <RTC_ExitInitMode+0x48>) + 800ae7a: 68da ldr r2, [r3, #12] + 800ae7c: f022 0280 bic.w r2, r2, #128 ; 0x80 + 800ae80: 60da str r2, [r3, #12] + + /* If CR_BYPSHAD bit = 0, wait for synchro */ + if (READ_BIT(RTC->CR, RTC_CR_BYPSHAD) == 0U) + 800ae82: 699b ldr r3, [r3, #24] + 800ae84: f013 0f20 tst.w r3, #32 + 800ae88: d106 bne.n 800ae98 <RTC_ExitInitMode+0x24> + { + if (HAL_RTC_WaitForSynchro(hrtc) != HAL_OK) + 800ae8a: f7ff ffb3 bl 800adf4 <HAL_RTC_WaitForSynchro> + 800ae8e: b198 cbz r0, 800aeb8 <RTC_ExitInitMode+0x44> + { + hrtc->State = HAL_RTC_STATE_TIMEOUT; + 800ae90: 2003 movs r0, #3 + 800ae92: f884 002d strb.w r0, [r4, #45] ; 0x2d + status = HAL_TIMEOUT; + 800ae96: e00f b.n 800aeb8 <RTC_ExitInitMode+0x44> + } + } + else /* WA 2.9.6 Calendar initialization may fail in case of consecutive INIT mode entry. */ + { + /* Clear BYPSHAD bit */ + CLEAR_BIT(RTC->CR, RTC_CR_BYPSHAD); + 800ae98: 4a08 ldr r2, [pc, #32] ; (800aebc <RTC_ExitInitMode+0x48>) + 800ae9a: 6993 ldr r3, [r2, #24] + 800ae9c: f023 0320 bic.w r3, r3, #32 + 800aea0: 6193 str r3, [r2, #24] + if (HAL_RTC_WaitForSynchro(hrtc) != HAL_OK) + 800aea2: f7ff ffa7 bl 800adf4 <HAL_RTC_WaitForSynchro> + 800aea6: b110 cbz r0, 800aeae <RTC_ExitInitMode+0x3a> + { + hrtc->State = HAL_RTC_STATE_TIMEOUT; + 800aea8: 2003 movs r0, #3 + 800aeaa: f884 002d strb.w r0, [r4, #45] ; 0x2d + status = HAL_TIMEOUT; + } + /* Restore BYPSHAD bit */ + SET_BIT(RTC->CR, RTC_CR_BYPSHAD); + 800aeae: 4a03 ldr r2, [pc, #12] ; (800aebc <RTC_ExitInitMode+0x48>) + 800aeb0: 6993 ldr r3, [r2, #24] + 800aeb2: f043 0320 orr.w r3, r3, #32 + 800aeb6: 6193 str r3, [r2, #24] + } + + return status; +} + 800aeb8: bd10 pop {r4, pc} + 800aeba: bf00 nop + 800aebc: 40002800 .word 0x40002800 + +0800aec0 <HAL_RTC_Init>: + if (hrtc != NULL) + 800aec0: 2800 cmp r0, #0 + 800aec2: d052 beq.n 800af6a <HAL_RTC_Init+0xaa> +{ + 800aec4: b538 push {r3, r4, r5, lr} + 800aec6: 4604 mov r4, r0 + if (hrtc->State == HAL_RTC_STATE_RESET) + 800aec8: f890 302d ldrb.w r3, [r0, #45] ; 0x2d + 800aecc: b163 cbz r3, 800aee8 <HAL_RTC_Init+0x28> + hrtc->State = HAL_RTC_STATE_BUSY; + 800aece: 2302 movs r3, #2 + 800aed0: f884 302d strb.w r3, [r4, #45] ; 0x2d + if (__HAL_RTC_IS_CALENDAR_INITIALIZED(hrtc) == 0U) + 800aed4: 4b26 ldr r3, [pc, #152] ; (800af70 <HAL_RTC_Init+0xb0>) + 800aed6: 68db ldr r3, [r3, #12] + 800aed8: f013 0f10 tst.w r3, #16 + 800aedc: d009 beq.n 800aef2 <HAL_RTC_Init+0x32> + status = HAL_OK; + 800aede: 2000 movs r0, #0 + hrtc->State = HAL_RTC_STATE_READY; + 800aee0: 2301 movs r3, #1 + 800aee2: f884 302d strb.w r3, [r4, #45] ; 0x2d +} + 800aee6: bd38 pop {r3, r4, r5, pc} + hrtc->Lock = HAL_UNLOCKED; + 800aee8: f880 302c strb.w r3, [r0, #44] ; 0x2c + HAL_RTC_MspInit(hrtc); + 800aeec: f7f7 fc90 bl 8002810 <HAL_RTC_MspInit> + 800aef0: e7ed b.n 800aece <HAL_RTC_Init+0xe> + __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc); + 800aef2: 4b1f ldr r3, [pc, #124] ; (800af70 <HAL_RTC_Init+0xb0>) + 800aef4: 22ca movs r2, #202 ; 0xca + 800aef6: 625a str r2, [r3, #36] ; 0x24 + 800aef8: 2253 movs r2, #83 ; 0x53 + 800aefa: 625a str r2, [r3, #36] ; 0x24 + status = RTC_EnterInitMode(hrtc); + 800aefc: 4620 mov r0, r4 + 800aefe: f7ff ff93 bl 800ae28 <RTC_EnterInitMode> + if (status == HAL_OK) + 800af02: b128 cbz r0, 800af10 <HAL_RTC_Init+0x50> + __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc); + 800af04: 4b1a ldr r3, [pc, #104] ; (800af70 <HAL_RTC_Init+0xb0>) + 800af06: 22ff movs r2, #255 ; 0xff + 800af08: 625a str r2, [r3, #36] ; 0x24 + if (status == HAL_OK) + 800af0a: 2800 cmp r0, #0 + 800af0c: d1eb bne.n 800aee6 <HAL_RTC_Init+0x26> + 800af0e: e7e7 b.n 800aee0 <HAL_RTC_Init+0x20> + CLEAR_BIT(RTC->CR, (RTC_CR_FMT | RTC_CR_POL | RTC_CR_OSEL | RTC_CR_TAMPOE)); + 800af10: 4b17 ldr r3, [pc, #92] ; (800af70 <HAL_RTC_Init+0xb0>) + 800af12: 699a ldr r2, [r3, #24] + 800af14: f022 628e bic.w r2, r2, #74448896 ; 0x4700000 + 800af18: f022 0240 bic.w r2, r2, #64 ; 0x40 + 800af1c: 619a str r2, [r3, #24] + SET_BIT(RTC->CR, (hrtc->Init.HourFormat | hrtc->Init.OutPut | hrtc->Init.OutPutPolarity)); + 800af1e: 6999 ldr r1, [r3, #24] + 800af20: 6862 ldr r2, [r4, #4] + 800af22: 6920 ldr r0, [r4, #16] + 800af24: 4302 orrs r2, r0 + 800af26: 69a0 ldr r0, [r4, #24] + 800af28: 4302 orrs r2, r0 + 800af2a: 430a orrs r2, r1 + 800af2c: 619a str r2, [r3, #24] + WRITE_REG(RTC->PRER, ((hrtc->Init.SynchPrediv) | (hrtc->Init.AsynchPrediv << RTC_PRER_PREDIV_A_Pos))); + 800af2e: 68e2 ldr r2, [r4, #12] + 800af30: 68a1 ldr r1, [r4, #8] + 800af32: ea42 4201 orr.w r2, r2, r1, lsl #16 + 800af36: 611a str r2, [r3, #16] + MODIFY_REG(RTC->ICSR, RTC_ICSR_BIN | RTC_ICSR_BCDU, hrtc->Init.BinMode | hrtc->Init.BinMixBcdU); + 800af38: 68da ldr r2, [r3, #12] + 800af3a: f422 52f8 bic.w r2, r2, #7936 ; 0x1f00 + 800af3e: 6a61 ldr r1, [r4, #36] ; 0x24 + 800af40: 6aa0 ldr r0, [r4, #40] ; 0x28 + 800af42: 4301 orrs r1, r0 + 800af44: 430a orrs r2, r1 + 800af46: 60da str r2, [r3, #12] + status = RTC_ExitInitMode(hrtc); + 800af48: 4620 mov r0, r4 + 800af4a: f7ff ff93 bl 800ae74 <RTC_ExitInitMode> + if (status == HAL_OK) + 800af4e: 2800 cmp r0, #0 + 800af50: d1d8 bne.n 800af04 <HAL_RTC_Init+0x44> + MODIFY_REG(RTC->CR, \ + 800af52: 4907 ldr r1, [pc, #28] ; (800af70 <HAL_RTC_Init+0xb0>) + 800af54: 698b ldr r3, [r1, #24] + 800af56: f023 4360 bic.w r3, r3, #3758096384 ; 0xe0000000 + 800af5a: 6a22 ldr r2, [r4, #32] + 800af5c: 69e5 ldr r5, [r4, #28] + 800af5e: 432a orrs r2, r5 + 800af60: 6965 ldr r5, [r4, #20] + 800af62: 432a orrs r2, r5 + 800af64: 4313 orrs r3, r2 + 800af66: 618b str r3, [r1, #24] + 800af68: e7cc b.n 800af04 <HAL_RTC_Init+0x44> + HAL_StatusTypeDef status = HAL_ERROR; + 800af6a: 2001 movs r0, #1 +} + 800af6c: 4770 bx lr + 800af6e: bf00 nop + 800af70: 40002800 .word 0x40002800 + +0800af74 <RTC_ByteToBcd2>: + * @param Value Byte to be converted + * @retval Converted byte + */ +uint8_t RTC_ByteToBcd2(uint8_t Value) +{ + uint32_t bcdhigh = 0U; + 800af74: 2300 movs r3, #0 + uint8_t tmp_Value = Value; + + while (tmp_Value >= 10U) + 800af76: e002 b.n 800af7e <RTC_ByteToBcd2+0xa> + { + bcdhigh++; + 800af78: 3301 adds r3, #1 + tmp_Value -= 10U; + 800af7a: 380a subs r0, #10 + 800af7c: b2c0 uxtb r0, r0 + while (tmp_Value >= 10U) + 800af7e: 2809 cmp r0, #9 + 800af80: d8fa bhi.n 800af78 <RTC_ByteToBcd2+0x4> + } + + return ((uint8_t)(bcdhigh << 4U) | tmp_Value); + 800af82: 011b lsls r3, r3, #4 + 800af84: b2db uxtb r3, r3 +} + 800af86: 4318 orrs r0, r3 + 800af88: 4770 bx lr + ... + +0800af8c <HAL_RTC_SetAlarm_IT>: + __HAL_LOCK(hrtc); + 800af8c: f890 302c ldrb.w r3, [r0, #44] ; 0x2c + 800af90: 2b01 cmp r3, #1 + 800af92: f000 80b0 beq.w 800b0f6 <HAL_RTC_SetAlarm_IT+0x16a> +{ + 800af96: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800af9a: 4605 mov r5, r0 + 800af9c: 460c mov r4, r1 + __HAL_LOCK(hrtc); + 800af9e: 2301 movs r3, #1 + 800afa0: f880 302c strb.w r3, [r0, #44] ; 0x2c + hrtc->State = HAL_RTC_STATE_BUSY; + 800afa4: 2302 movs r3, #2 + 800afa6: f880 302d strb.w r3, [r0, #45] ; 0x2d + binaryMode = READ_BIT(RTC->ICSR, RTC_ICSR_BIN); + 800afaa: 4b54 ldr r3, [pc, #336] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800afac: 68de ldr r6, [r3, #12] + 800afae: f406 7640 and.w r6, r6, #768 ; 0x300 + if (binaryMode != RTC_BINARY_ONLY) + 800afb2: f5b6 7f80 cmp.w r6, #256 ; 0x100 + 800afb6: d043 beq.n 800b040 <HAL_RTC_SetAlarm_IT+0xb4> + if (Format == RTC_FORMAT_BIN) + 800afb8: bb12 cbnz r2, 800b000 <HAL_RTC_SetAlarm_IT+0x74> + if (READ_BIT(RTC->CR, RTC_CR_FMT) != 0U) + 800afba: 699b ldr r3, [r3, #24] + 800afbc: f013 0f40 tst.w r3, #64 ; 0x40 + 800afc0: d101 bne.n 800afc6 <HAL_RTC_SetAlarm_IT+0x3a> + sAlarm->AlarmTime.TimeFormat = 0x00U; + 800afc2: 2300 movs r3, #0 + 800afc4: 70cb strb r3, [r1, #3] + if( sAlarm->AlarmMask != RTC_ALARMMASK_DATEWEEKDAY ) + 800afc6: f8d4 8014 ldr.w r8, [r4, #20] + tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours) << RTC_ALRMAR_HU_Pos) | \ + 800afca: 7820 ldrb r0, [r4, #0] + 800afcc: f7ff ffd2 bl 800af74 <RTC_ByteToBcd2> + 800afd0: 0407 lsls r7, r0, #16 + ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Minutes) << RTC_ALRMAR_MNU_Pos) | \ + 800afd2: 7860 ldrb r0, [r4, #1] + 800afd4: f7ff ffce bl 800af74 <RTC_ByteToBcd2> + tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours) << RTC_ALRMAR_HU_Pos) | \ + 800afd8: ea47 2700 orr.w r7, r7, r0, lsl #8 + ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Seconds) << RTC_ALRMAR_SU_Pos) | \ + 800afdc: 78a0 ldrb r0, [r4, #2] + 800afde: f7ff ffc9 bl 800af74 <RTC_ByteToBcd2> + ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Minutes) << RTC_ALRMAR_MNU_Pos) | \ + 800afe2: 4307 orrs r7, r0 + ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << RTC_ALRMAR_PM_Pos) | \ + 800afe4: 78e3 ldrb r3, [r4, #3] + ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Seconds) << RTC_ALRMAR_SU_Pos) | \ + 800afe6: ea47 5783 orr.w r7, r7, r3, lsl #22 + ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmDateWeekDay) << RTC_ALRMAR_DU_Pos) | \ + 800afea: f894 0024 ldrb.w r0, [r4, #36] ; 0x24 + 800afee: f7ff ffc1 bl 800af74 <RTC_ByteToBcd2> + ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << RTC_ALRMAR_PM_Pos) | \ + 800aff2: ea47 6000 orr.w r0, r7, r0, lsl #24 + ((uint32_t)sAlarm->AlarmDateWeekDaySel) | \ + 800aff6: 6a23 ldr r3, [r4, #32] + ((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmDateWeekDay) << RTC_ALRMAR_DU_Pos) | \ + 800aff8: 4318 orrs r0, r3 + tmpreg = (((uint32_t)RTC_ByteToBcd2(sAlarm->AlarmTime.Hours) << RTC_ALRMAR_HU_Pos) | \ + 800affa: ea48 0000 orr.w r0, r8, r0 + 800affe: e020 b.n 800b042 <HAL_RTC_SetAlarm_IT+0xb6> + if( sAlarm->AlarmMask != RTC_ALARMMASK_ALL ) + 800b000: 6948 ldr r0, [r1, #20] + 800b002: f1b0 3f80 cmp.w r0, #2155905152 ; 0x80808080 + 800b006: d009 beq.n 800b01c <HAL_RTC_SetAlarm_IT+0x90> + if( sAlarm->AlarmMask != RTC_ALARMMASK_HOURS ) + 800b008: f5b0 0f00 cmp.w r0, #8388608 ; 0x800000 + 800b00c: d006 beq.n 800b01c <HAL_RTC_SetAlarm_IT+0x90> + if (READ_BIT(RTC->CR, RTC_CR_FMT) != 0U) + 800b00e: 4b3b ldr r3, [pc, #236] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b010: 699b ldr r3, [r3, #24] + 800b012: f013 0f40 tst.w r3, #64 ; 0x40 + 800b016: d101 bne.n 800b01c <HAL_RTC_SetAlarm_IT+0x90> + sAlarm->AlarmTime.TimeFormat = 0x00U; + 800b018: 2300 movs r3, #0 + 800b01a: 70cb strb r3, [r1, #3] + tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours) << RTC_ALRMAR_HU_Pos) | \ + 800b01c: 7822 ldrb r2, [r4, #0] + ((uint32_t)(sAlarm->AlarmTime.Minutes) << RTC_ALRMAR_MNU_Pos) | \ + 800b01e: 7863 ldrb r3, [r4, #1] + 800b020: 021b lsls r3, r3, #8 + tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours) << RTC_ALRMAR_HU_Pos) | \ + 800b022: ea43 4302 orr.w r3, r3, r2, lsl #16 + ((uint32_t)(sAlarm->AlarmTime.Seconds) << RTC_ALRMAR_SU_Pos) | \ + 800b026: 78a2 ldrb r2, [r4, #2] + ((uint32_t)(sAlarm->AlarmTime.Minutes) << RTC_ALRMAR_MNU_Pos) | \ + 800b028: 4313 orrs r3, r2 + ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << RTC_ALRMAR_PM_Pos) | \ + 800b02a: 78e2 ldrb r2, [r4, #3] + ((uint32_t)(sAlarm->AlarmTime.Seconds) << RTC_ALRMAR_SU_Pos) | \ + 800b02c: ea43 5382 orr.w r3, r3, r2, lsl #22 + ((uint32_t)(sAlarm->AlarmDateWeekDay) << RTC_ALRMAR_DU_Pos) | \ + 800b030: f894 2024 ldrb.w r2, [r4, #36] ; 0x24 + ((uint32_t)(sAlarm->AlarmTime.TimeFormat) << RTC_ALRMAR_PM_Pos) | \ + 800b034: ea43 6302 orr.w r3, r3, r2, lsl #24 + ((uint32_t)sAlarm->AlarmDateWeekDaySel) | \ + 800b038: 6a22 ldr r2, [r4, #32] + ((uint32_t)(sAlarm->AlarmDateWeekDay) << RTC_ALRMAR_DU_Pos) | \ + 800b03a: 4313 orrs r3, r2 + tmpreg = (((uint32_t)(sAlarm->AlarmTime.Hours) << RTC_ALRMAR_HU_Pos) | \ + 800b03c: 4318 orrs r0, r3 + 800b03e: e000 b.n 800b042 <HAL_RTC_SetAlarm_IT+0xb6> + uint32_t tmpreg = 0; + 800b040: 2000 movs r0, #0 + __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc); + 800b042: 4b2e ldr r3, [pc, #184] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b044: 22ca movs r2, #202 ; 0xca + 800b046: 625a str r2, [r3, #36] ; 0x24 + 800b048: 2253 movs r2, #83 ; 0x53 + 800b04a: 625a str r2, [r3, #36] ; 0x24 + if (sAlarm->Alarm == RTC_ALARM_A) + 800b04c: 6aa3 ldr r3, [r4, #40] ; 0x28 + 800b04e: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 800b052: d02a beq.n 800b0aa <HAL_RTC_SetAlarm_IT+0x11e> + CLEAR_BIT(RTC->CR, RTC_CR_ALRBE | RTC_CR_ALRBIE); + 800b054: 4b29 ldr r3, [pc, #164] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b056: 699a ldr r2, [r3, #24] + 800b058: f422 5208 bic.w r2, r2, #8704 ; 0x2200 + 800b05c: 619a str r2, [r3, #24] + WRITE_REG(RTC->SCR, RTC_SCR_CALRBF); + 800b05e: 2202 movs r2, #2 + 800b060: 65da str r2, [r3, #92] ; 0x5c + if (binaryMode == RTC_BINARY_ONLY) + 800b062: f5b6 7f80 cmp.w r6, #256 ; 0x100 + 800b066: d040 beq.n 800b0ea <HAL_RTC_SetAlarm_IT+0x15e> + WRITE_REG(RTC->ALRMBR, tmpreg); + 800b068: 4b24 ldr r3, [pc, #144] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b06a: 6498 str r0, [r3, #72] ; 0x48 + WRITE_REG(RTC->ALRMBSSR, sAlarm->AlarmSubSecondMask); + 800b06c: 69a2 ldr r2, [r4, #24] + 800b06e: 64da str r2, [r3, #76] ; 0x4c + WRITE_REG(RTC->ALRBBINR, sAlarm->AlarmTime.SubSeconds); + 800b070: 6862 ldr r2, [r4, #4] + 800b072: 4b22 ldr r3, [pc, #136] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b074: 675a str r2, [r3, #116] ; 0x74 + SET_BIT(hrtc->IsEnabled.RtcFeatures, RTC_MISR_ALRBMF); + 800b076: 6b2a ldr r2, [r5, #48] ; 0x30 + 800b078: f042 0202 orr.w r2, r2, #2 + 800b07c: 632a str r2, [r5, #48] ; 0x30 + SET_BIT(RTC->CR, RTC_CR_ALRBE | RTC_CR_ALRBIE); + 800b07e: 699a ldr r2, [r3, #24] + 800b080: f442 5208 orr.w r2, r2, #8704 ; 0x2200 + 800b084: 619a str r2, [r3, #24] + __HAL_RTC_ALARM_EXTI_ENABLE_IT(); + 800b086: 4a1e ldr r2, [pc, #120] ; (800b100 <HAL_RTC_SetAlarm_IT+0x174>) + 800b088: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 + 800b08c: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 800b090: f8c2 3080 str.w r3, [r2, #128] ; 0x80 + __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc); + 800b094: 4b19 ldr r3, [pc, #100] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b096: 22ff movs r2, #255 ; 0xff + 800b098: 625a str r2, [r3, #36] ; 0x24 + hrtc->State = HAL_RTC_STATE_READY; + 800b09a: 2301 movs r3, #1 + 800b09c: f885 302d strb.w r3, [r5, #45] ; 0x2d + __HAL_UNLOCK(hrtc); + 800b0a0: 2000 movs r0, #0 + 800b0a2: f885 002c strb.w r0, [r5, #44] ; 0x2c +} + 800b0a6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + CLEAR_BIT(RTC->CR, RTC_CR_ALRAE | RTC_CR_ALRAIE); + 800b0aa: 4b14 ldr r3, [pc, #80] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b0ac: 699a ldr r2, [r3, #24] + 800b0ae: f422 5288 bic.w r2, r2, #4352 ; 0x1100 + 800b0b2: 619a str r2, [r3, #24] + WRITE_REG(RTC->SCR, RTC_SCR_CALRAF); + 800b0b4: 2201 movs r2, #1 + 800b0b6: 65da str r2, [r3, #92] ; 0x5c + if (binaryMode == RTC_BINARY_ONLY) + 800b0b8: f5b6 7f80 cmp.w r6, #256 ; 0x100 + 800b0bc: d00f beq.n 800b0de <HAL_RTC_SetAlarm_IT+0x152> + WRITE_REG(RTC->ALRMAR, tmpreg); + 800b0be: 4b0f ldr r3, [pc, #60] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b0c0: 6418 str r0, [r3, #64] ; 0x40 + WRITE_REG(RTC->ALRMASSR, sAlarm->AlarmSubSecondMask); + 800b0c2: 69a2 ldr r2, [r4, #24] + 800b0c4: 645a str r2, [r3, #68] ; 0x44 + WRITE_REG(RTC->ALRABINR, sAlarm->AlarmTime.SubSeconds); + 800b0c6: 6862 ldr r2, [r4, #4] + 800b0c8: 4b0c ldr r3, [pc, #48] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b0ca: 671a str r2, [r3, #112] ; 0x70 + SET_BIT(hrtc->IsEnabled.RtcFeatures, RTC_MISR_ALRAMF); + 800b0cc: 6b2a ldr r2, [r5, #48] ; 0x30 + 800b0ce: f042 0201 orr.w r2, r2, #1 + 800b0d2: 632a str r2, [r5, #48] ; 0x30 + SET_BIT(RTC->CR, RTC_CR_ALRAE | RTC_CR_ALRAIE); + 800b0d4: 699a ldr r2, [r3, #24] + 800b0d6: f442 5288 orr.w r2, r2, #4352 ; 0x1100 + 800b0da: 619a str r2, [r3, #24] + 800b0dc: e7d3 b.n 800b086 <HAL_RTC_SetAlarm_IT+0xfa> + RTC->ALRMASSR = sAlarm->AlarmSubSecondMask | sAlarm->BinaryAutoClr; + 800b0de: 69a3 ldr r3, [r4, #24] + 800b0e0: 69e2 ldr r2, [r4, #28] + 800b0e2: 4313 orrs r3, r2 + 800b0e4: 4a05 ldr r2, [pc, #20] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b0e6: 6453 str r3, [r2, #68] ; 0x44 + 800b0e8: e7ed b.n 800b0c6 <HAL_RTC_SetAlarm_IT+0x13a> + WRITE_REG(RTC->ALRMBSSR, sAlarm->AlarmSubSecondMask | sAlarm->BinaryAutoClr); + 800b0ea: 69a3 ldr r3, [r4, #24] + 800b0ec: 69e2 ldr r2, [r4, #28] + 800b0ee: 4313 orrs r3, r2 + 800b0f0: 4a02 ldr r2, [pc, #8] ; (800b0fc <HAL_RTC_SetAlarm_IT+0x170>) + 800b0f2: 64d3 str r3, [r2, #76] ; 0x4c + 800b0f4: e7bc b.n 800b070 <HAL_RTC_SetAlarm_IT+0xe4> + __HAL_LOCK(hrtc); + 800b0f6: 2002 movs r0, #2 +} + 800b0f8: 4770 bx lr + 800b0fa: bf00 nop + 800b0fc: 40002800 .word 0x40002800 + 800b100: 58000800 .word 0x58000800 + +0800b104 <HAL_RTCEx_EnableBypassShadow>: + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc) +{ + /* Process Locked */ + __HAL_LOCK(hrtc); + 800b104: f890 302c ldrb.w r3, [r0, #44] ; 0x2c + 800b108: 2b01 cmp r3, #1 + 800b10a: d017 beq.n 800b13c <HAL_RTCEx_EnableBypassShadow+0x38> + 800b10c: 2101 movs r1, #1 + 800b10e: f880 102c strb.w r1, [r0, #44] ; 0x2c + + hrtc->State = HAL_RTC_STATE_BUSY; + 800b112: 2302 movs r3, #2 + 800b114: f880 302d strb.w r3, [r0, #45] ; 0x2d + + /* Disable the write protection for RTC registers */ + __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc); + 800b118: 4b09 ldr r3, [pc, #36] ; (800b140 <HAL_RTCEx_EnableBypassShadow+0x3c>) + 800b11a: 22ca movs r2, #202 ; 0xca + 800b11c: 625a str r2, [r3, #36] ; 0x24 + 800b11e: 2253 movs r2, #83 ; 0x53 + 800b120: 625a str r2, [r3, #36] ; 0x24 + + /* Set the BYPSHAD bit */ + SET_BIT(RTC->CR, RTC_CR_BYPSHAD); + 800b122: 699a ldr r2, [r3, #24] + 800b124: f042 0220 orr.w r2, r2, #32 + 800b128: 619a str r2, [r3, #24] + + /* Enable the write protection for RTC registers */ + __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc); + 800b12a: 22ff movs r2, #255 ; 0xff + 800b12c: 625a str r2, [r3, #36] ; 0x24 + + /* Change RTC state */ + hrtc->State = HAL_RTC_STATE_READY; + 800b12e: f880 102d strb.w r1, [r0, #45] ; 0x2d + + /* Process Unlocked */ + __HAL_UNLOCK(hrtc); + 800b132: 2300 movs r3, #0 + 800b134: f880 302c strb.w r3, [r0, #44] ; 0x2c + + return HAL_OK; + 800b138: 4618 mov r0, r3 + 800b13a: 4770 bx lr + __HAL_LOCK(hrtc); + 800b13c: 2002 movs r0, #2 +} + 800b13e: 4770 bx lr + 800b140: 40002800 .word 0x40002800 + +0800b144 <HAL_RTCEx_SetSSRU_IT>: + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RTCEx_SetSSRU_IT(RTC_HandleTypeDef *hrtc) +{ + /* Process Locked */ + __HAL_LOCK(hrtc); + 800b144: f890 302c ldrb.w r3, [r0, #44] ; 0x2c + 800b148: 2b01 cmp r3, #1 + 800b14a: d020 beq.n 800b18e <HAL_RTCEx_SetSSRU_IT+0x4a> +{ + 800b14c: b410 push {r4} + __HAL_LOCK(hrtc); + 800b14e: 2101 movs r1, #1 + 800b150: f880 102c strb.w r1, [r0, #44] ; 0x2c + + hrtc->State = HAL_RTC_STATE_BUSY; + 800b154: 2302 movs r3, #2 + 800b156: f880 302d strb.w r3, [r0, #45] ; 0x2d + + /* Disable the write protection for RTC registers */ + __HAL_RTC_WRITEPROTECTION_DISABLE(hrtc); + 800b15a: 4b0e ldr r3, [pc, #56] ; (800b194 <HAL_RTCEx_SetSSRU_IT+0x50>) + 800b15c: 22ca movs r2, #202 ; 0xca + 800b15e: 625a str r2, [r3, #36] ; 0x24 + 800b160: 2253 movs r2, #83 ; 0x53 + 800b162: 625a str r2, [r3, #36] ; 0x24 + + /* Enable IT SSRU */ + __HAL_RTC_SSRU_ENABLE_IT(hrtc, RTC_IT_SSRU); + 800b164: 699a ldr r2, [r3, #24] + 800b166: f042 0280 orr.w r2, r2, #128 ; 0x80 + 800b16a: 619a str r2, [r3, #24] + + /* RTC SSRU Interrupt Configuration: EXTI configuration */ + __HAL_RTC_SSRU_EXTI_ENABLE_IT(); + 800b16c: 4c0a ldr r4, [pc, #40] ; (800b198 <HAL_RTCEx_SetSSRU_IT+0x54>) + 800b16e: f8d4 2080 ldr.w r2, [r4, #128] ; 0x80 + 800b172: f442 2280 orr.w r2, r2, #262144 ; 0x40000 + 800b176: f8c4 2080 str.w r2, [r4, #128] ; 0x80 + + /* Enable the write protection for RTC registers */ + __HAL_RTC_WRITEPROTECTION_ENABLE(hrtc); + 800b17a: 22ff movs r2, #255 ; 0xff + 800b17c: 625a str r2, [r3, #36] ; 0x24 + + hrtc->State = HAL_RTC_STATE_READY; + 800b17e: f880 102d strb.w r1, [r0, #45] ; 0x2d + + /* Process Unlocked */ + __HAL_UNLOCK(hrtc); + 800b182: 2300 movs r3, #0 + 800b184: f880 302c strb.w r3, [r0, #44] ; 0x2c + + return HAL_OK; + 800b188: 4618 mov r0, r3 +} + 800b18a: bc10 pop {r4} + 800b18c: 4770 bx lr + __HAL_LOCK(hrtc); + 800b18e: 2002 movs r0, #2 +} + 800b190: 4770 bx lr + 800b192: bf00 nop + 800b194: 40002800 .word 0x40002800 + 800b198: 58000800 .word 0x58000800 + +0800b19c <HAL_RTCEx_SSRUIRQHandler>: + * @brief Handle SSR underflow interrupt request. + * @param hrtc RTC handle + * @retval None + */ +void HAL_RTCEx_SSRUIRQHandler(RTC_HandleTypeDef *hrtc) +{ + 800b19c: b510 push {r4, lr} + 800b19e: 4604 mov r4, r0 + if ((RTC->MISR & RTC_MISR_SSRUMF) != 0u) + 800b1a0: 4b07 ldr r3, [pc, #28] ; (800b1c0 <HAL_RTCEx_SSRUIRQHandler+0x24>) + 800b1a2: 6d5b ldr r3, [r3, #84] ; 0x54 + 800b1a4: f013 0f40 tst.w r3, #64 ; 0x40 + 800b1a8: d103 bne.n 800b1b2 <HAL_RTCEx_SSRUIRQHandler+0x16> + HAL_RTCEx_SSRUEventCallback(hrtc); +#endif /* USE_HAL_RTC_REGISTER_CALLBACKS */ + } + + /* Change RTC state */ + hrtc->State = HAL_RTC_STATE_READY; + 800b1aa: 2301 movs r3, #1 + 800b1ac: f884 302d strb.w r3, [r4, #45] ; 0x2d +} + 800b1b0: bd10 pop {r4, pc} + RTC->SCR = RTC_SCR_CSSRUF; + 800b1b2: 4b03 ldr r3, [pc, #12] ; (800b1c0 <HAL_RTCEx_SSRUIRQHandler+0x24>) + 800b1b4: 2240 movs r2, #64 ; 0x40 + 800b1b6: 65da str r2, [r3, #92] ; 0x5c + HAL_RTCEx_SSRUEventCallback(hrtc); + 800b1b8: f7f7 ff50 bl 800305c <HAL_RTCEx_SSRUEventCallback> + 800b1bc: e7f5 b.n 800b1aa <HAL_RTCEx_SSRUIRQHandler+0xe> + 800b1be: bf00 nop + 800b1c0: 40002800 .word 0x40002800 + +0800b1c4 <HAL_RTCEx_AlarmBEventCallback>: + UNUSED(hrtc); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_RTCEx_AlarmBEventCallback could be implemented in the user file + */ +} + 800b1c4: 4770 bx lr + +0800b1c6 <HAL_RTCEx_BKUPWrite>: + UNUSED(hrtc); + /* Check the parameters */ + assert_param(IS_RTC_BKP(BackupRegister)); + + tmp = (uint32_t) & (TAMP->BKP0R); + tmp += (BackupRegister * 4U); + 800b1c6: 0089 lsls r1, r1, #2 + 800b1c8: f101 4180 add.w r1, r1, #1073741824 ; 0x40000000 + 800b1cc: f501 4131 add.w r1, r1, #45312 ; 0xb100 + + /* Write the specified register */ + *(__IO uint32_t *)tmp = (uint32_t)Data; + 800b1d0: 600a str r2, [r1, #0] +} + 800b1d2: 4770 bx lr + +0800b1d4 <HAL_RTCEx_BKUPRead>: + UNUSED(hrtc); + /* Check the parameters */ + assert_param(IS_RTC_BKP(BackupRegister)); + + tmp = (uint32_t) & (TAMP->BKP0R); + tmp += (BackupRegister * 4U); + 800b1d4: 0089 lsls r1, r1, #2 + 800b1d6: f101 4180 add.w r1, r1, #1073741824 ; 0x40000000 + 800b1da: f501 4131 add.w r1, r1, #45312 ; 0xb100 + + /* Read the specified register */ + return (*(__IO uint32_t *)tmp); + 800b1de: 6808 ldr r0, [r1, #0] +} + 800b1e0: 4770 bx lr + ... + +0800b1e4 <SUBGHZSPI_Init>: +{ + /* Check the parameters */ + assert_param(IS_SUBGHZ_ALL_INSTANCE(SUBGHZSPI)); + + /* Disable SUBGHZSPI Peripheral */ + CLEAR_BIT(SUBGHZSPI->CR1, SPI_CR1_SPE); + 800b1e4: 4b07 ldr r3, [pc, #28] ; (800b204 <SUBGHZSPI_Init+0x20>) + 800b1e6: 681a ldr r2, [r3, #0] + 800b1e8: f022 0240 bic.w r2, r2, #64 ; 0x40 + 800b1ec: 601a str r2, [r3, #0] + * NSS management: Internal (Done with External bit inside PWR * + * Communication speed: BaudratePrescaler * + * First bit: MSB * + * CRC calculation: Disable * + *--------------------------------------------------------------------------*/ + WRITE_REG(SUBGHZSPI->CR1, (SPI_CR1_MSTR | SPI_CR1_SSI | BaudratePrescaler | SPI_CR1_SSM)); + 800b1ee: f440 7041 orr.w r0, r0, #772 ; 0x304 + 800b1f2: 6018 str r0, [r3, #0] + * Data Size: 8bits * + * TI Mode: Disable * + * NSS Pulse: Disable * + * Rx FIFO Threshold: 8bits * + *--------------------------------------------------------------------------*/ + WRITE_REG(SUBGHZSPI->CR2, (SPI_CR2_FRXTH | SPI_CR2_DS_0 | SPI_CR2_DS_1 | SPI_CR2_DS_2)); + 800b1f4: f44f 52b8 mov.w r2, #5888 ; 0x1700 + 800b1f8: 605a str r2, [r3, #4] + + /* Enable SUBGHZSPI Peripheral */ + SET_BIT(SUBGHZSPI->CR1, SPI_CR1_SPE); + 800b1fa: 681a ldr r2, [r3, #0] + 800b1fc: f042 0240 orr.w r2, r2, #64 ; 0x40 + 800b200: 601a str r2, [r3, #0] +} + 800b202: 4770 bx lr + 800b204: 58010000 .word 0x58010000 + +0800b208 <HAL_SUBGHZ_Init>: +{ + 800b208: b530 push {r4, r5, lr} + 800b20a: b083 sub sp, #12 + if (hsubghz == NULL) + 800b20c: 2800 cmp r0, #0 + 800b20e: d058 beq.n 800b2c2 <HAL_SUBGHZ_Init+0xba> + 800b210: 4604 mov r4, r0 + subghz_state = hsubghz->State; + 800b212: 7983 ldrb r3, [r0, #6] + if ((subghz_state == HAL_SUBGHZ_STATE_RESET) || + 800b214: f003 05ff and.w r5, r3, #255 ; 0xff + 800b218: b10b cbz r3, 800b21e <HAL_SUBGHZ_Init+0x16> + 800b21a: 2d03 cmp r5, #3 + 800b21c: d10b bne.n 800b236 <HAL_SUBGHZ_Init+0x2e> + hsubghz->Lock = HAL_UNLOCKED; + 800b21e: 2300 movs r3, #0 + 800b220: 7163 strb r3, [r4, #5] + HAL_SUBGHZ_MspInit(hsubghz); + 800b222: 4620 mov r0, r4 + 800b224: f7f7 fc46 bl 8002ab4 <HAL_SUBGHZ_MspInit> + SET_BIT(EXTI->IMR2, ExtiLine); + 800b228: 4a27 ldr r2, [pc, #156] ; (800b2c8 <HAL_SUBGHZ_Init+0xc0>) + 800b22a: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b22e: f443 5380 orr.w r3, r3, #4096 ; 0x1000 + 800b232: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + if (subghz_state == HAL_SUBGHZ_STATE_RESET) + 800b236: b185 cbz r5, 800b25a <HAL_SUBGHZ_Init+0x52> + WRITE_REG(PWR->SCR, PWR_SCR_CWRFBUSYF); + 800b238: 4b24 ldr r3, [pc, #144] ; (800b2cc <HAL_SUBGHZ_Init+0xc4>) + 800b23a: f44f 6200 mov.w r2, #2048 ; 0x800 + 800b23e: 619a str r2, [r3, #24] + status = HAL_OK; + 800b240: 2500 movs r5, #0 + SUBGHZSPI_Init(hsubghz->Init.BaudratePrescaler); + 800b242: 6820 ldr r0, [r4, #0] + 800b244: f7ff ffce bl 800b1e4 <SUBGHZSPI_Init> + hsubghz->DeepSleep = SUBGHZ_DEEP_SLEEP_ENABLE; + 800b248: 2301 movs r3, #1 + 800b24a: 7123 strb r3, [r4, #4] + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_NONE; + 800b24c: 2300 movs r3, #0 + 800b24e: 60a3 str r3, [r4, #8] + hsubghz->State = HAL_SUBGHZ_STATE_READY; + 800b250: 2301 movs r3, #1 + 800b252: 71a3 strb r3, [r4, #6] +} + 800b254: 4628 mov r0, r5 + 800b256: b003 add sp, #12 + 800b258: bd30 pop {r4, r5, pc} + hsubghz->State = HAL_SUBGHZ_STATE_BUSY; + 800b25a: 2302 movs r3, #2 + 800b25c: 71a3 strb r3, [r4, #6] + CLEAR_BIT(RCC->CSR, RCC_CSR_RFRST); + 800b25e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800b262: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 800b266: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 800b26a: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_DEFAULT_LOOP_TIME; + 800b26e: 4b18 ldr r3, [pc, #96] ; (800b2d0 <HAL_SUBGHZ_Init+0xc8>) + 800b270: 681b ldr r3, [r3, #0] + 800b272: ebc3 03c3 rsb r3, r3, r3, lsl #3 + 800b276: f3c3 434c ubfx r3, r3, #17, #13 + 800b27a: 2264 movs r2, #100 ; 0x64 + 800b27c: fb02 f303 mul.w r3, r2, r3 + 800b280: 9301 str r3, [sp, #4] + if (count == 0U) + 800b282: 9b01 ldr r3, [sp, #4] + 800b284: b1d3 cbz r3, 800b2bc <HAL_SUBGHZ_Init+0xb4> + count--; + 800b286: 9b01 ldr r3, [sp, #4] + 800b288: 3b01 subs r3, #1 + 800b28a: 9301 str r3, [sp, #4] + return ((READ_BIT(RCC->CSR, RCC_CSR_RFRSTF) == (RCC_CSR_RFRSTF)) ? 1UL : 0UL); + 800b28c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800b290: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 800b294: f413 4f80 tst.w r3, #16384 ; 0x4000 + 800b298: d1f3 bne.n 800b282 <HAL_SUBGHZ_Init+0x7a> + SET_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b29a: 4b0c ldr r3, [pc, #48] ; (800b2cc <HAL_SUBGHZ_Init+0xc4>) + 800b29c: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 800b2a0: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 800b2a4: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + MODIFY_REG(PWR->CR3, PWR_CR3_EWRFBUSY, RadioBusyTrigger); + 800b2a8: 689a ldr r2, [r3, #8] + 800b2aa: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 800b2ae: 609a str r2, [r3, #8] + WRITE_REG(PWR->SCR, PWR_SCR_CWRFBUSYF); + 800b2b0: f44f 6200 mov.w r2, #2048 ; 0x800 + 800b2b4: 619a str r2, [r3, #24] + if (status == HAL_OK) + 800b2b6: 2d00 cmp r5, #0 + 800b2b8: d1ca bne.n 800b250 <HAL_SUBGHZ_Init+0x48> + 800b2ba: e7c2 b.n 800b242 <HAL_SUBGHZ_Init+0x3a> + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; + 800b2bc: 2501 movs r5, #1 + 800b2be: 60a5 str r5, [r4, #8] + break; + 800b2c0: e7eb b.n 800b29a <HAL_SUBGHZ_Init+0x92> + return status; + 800b2c2: 2501 movs r5, #1 + 800b2c4: e7c6 b.n 800b254 <HAL_SUBGHZ_Init+0x4c> + 800b2c6: bf00 nop + 800b2c8: 58000800 .word 0x58000800 + 800b2cc: 58000400 .word 0x58000400 + 800b2d0: 20000828 .word 0x20000828 + +0800b2d4 <SUBGHZSPI_Transmit>: + * @param Data data to transmit + * @retval HAL status + */ +HAL_StatusTypeDef SUBGHZSPI_Transmit(SUBGHZ_HandleTypeDef *hsubghz, + uint8_t Data) +{ + 800b2d4: b082 sub sp, #8 + 800b2d6: 4602 mov r2, r0 + HAL_StatusTypeDef status = HAL_OK; + __IO uint32_t count; + + /* Handle Tx transmission from SUBGHZSPI peripheral to Radio ****************/ + /* Initialize Timeout */ + count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_DEFAULT_LOOP_TIME; + 800b2d8: 4b1a ldr r3, [pc, #104] ; (800b344 <SUBGHZSPI_Transmit+0x70>) + 800b2da: 681b ldr r3, [r3, #0] + 800b2dc: ebc3 03c3 rsb r3, r3, r3, lsl #3 + 800b2e0: f3c3 434c ubfx r3, r3, #17, #13 + 800b2e4: 2064 movs r0, #100 ; 0x64 + 800b2e6: fb00 f303 mul.w r3, r0, r3 + 800b2ea: 9301 str r3, [sp, #4] + + /* Wait until TXE flag is set */ + do + { + if (count == 0U) + 800b2ec: 9b01 ldr r3, [sp, #4] + 800b2ee: b14b cbz r3, 800b304 <SUBGHZSPI_Transmit+0x30> + { + status = HAL_ERROR; + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; + break; + } + count--; + 800b2f0: 9b01 ldr r3, [sp, #4] + 800b2f2: 3b01 subs r3, #1 + 800b2f4: 9301 str r3, [sp, #4] + } while (READ_BIT(SUBGHZSPI->SR, SPI_SR_TXE) != (SPI_SR_TXE)); + 800b2f6: 4b14 ldr r3, [pc, #80] ; (800b348 <SUBGHZSPI_Transmit+0x74>) + 800b2f8: 689b ldr r3, [r3, #8] + 800b2fa: f013 0f02 tst.w r3, #2 + 800b2fe: d0f5 beq.n 800b2ec <SUBGHZSPI_Transmit+0x18> + HAL_StatusTypeDef status = HAL_OK; + 800b300: 2000 movs r0, #0 + 800b302: e001 b.n 800b308 <SUBGHZSPI_Transmit+0x34> + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; + 800b304: 2001 movs r0, #1 + 800b306: 6090 str r0, [r2, #8] + + /* Transmit Data*/ +#if defined (__GNUC__) + __IO uint8_t *spidr = ((__IO uint8_t *)&SUBGHZSPI->DR); + *spidr = Data; + 800b308: 4b0f ldr r3, [pc, #60] ; (800b348 <SUBGHZSPI_Transmit+0x74>) + 800b30a: 7319 strb r1, [r3, #12] + *((__IO uint8_t *)&SUBGHZSPI->DR) = Data; +#endif /* __GNUC__ */ + + /* Handle Rx transmission from SUBGHZSPI peripheral to Radio ****************/ + /* Initialize Timeout */ + count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_DEFAULT_LOOP_TIME; + 800b30c: 4b0d ldr r3, [pc, #52] ; (800b344 <SUBGHZSPI_Transmit+0x70>) + 800b30e: 681b ldr r3, [r3, #0] + 800b310: ebc3 03c3 rsb r3, r3, r3, lsl #3 + 800b314: f3c3 434c ubfx r3, r3, #17, #13 + 800b318: 2164 movs r1, #100 ; 0x64 + 800b31a: fb01 f303 mul.w r3, r1, r3 + 800b31e: 9301 str r3, [sp, #4] + + /* Wait until RXNE flag is set */ + do + { + if (count == 0U) + 800b320: 9b01 ldr r3, [sp, #4] + 800b322: b143 cbz r3, 800b336 <SUBGHZSPI_Transmit+0x62> + { + status = HAL_ERROR; + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; + break; + } + count--; + 800b324: 9b01 ldr r3, [sp, #4] + 800b326: 3b01 subs r3, #1 + 800b328: 9301 str r3, [sp, #4] + } while (READ_BIT(SUBGHZSPI->SR, SPI_SR_RXNE) != (SPI_SR_RXNE)); + 800b32a: 4b07 ldr r3, [pc, #28] ; (800b348 <SUBGHZSPI_Transmit+0x74>) + 800b32c: 689b ldr r3, [r3, #8] + 800b32e: f013 0f01 tst.w r3, #1 + 800b332: d0f5 beq.n 800b320 <SUBGHZSPI_Transmit+0x4c> + 800b334: e001 b.n 800b33a <SUBGHZSPI_Transmit+0x66> + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; + 800b336: 2001 movs r0, #1 + 800b338: 6090 str r0, [r2, #8] + + /* Flush Rx data */ + READ_REG(SUBGHZSPI->DR); + 800b33a: 4b03 ldr r3, [pc, #12] ; (800b348 <SUBGHZSPI_Transmit+0x74>) + 800b33c: 68db ldr r3, [r3, #12] + + return status; +} + 800b33e: b002 add sp, #8 + 800b340: 4770 bx lr + 800b342: bf00 nop + 800b344: 20000828 .word 0x20000828 + 800b348: 58010000 .word 0x58010000 + +0800b34c <SUBGHZSPI_Receive>: + * @param pData pointer on data to receive + * @retval HAL status + */ +HAL_StatusTypeDef SUBGHZSPI_Receive(SUBGHZ_HandleTypeDef *hsubghz, + uint8_t *pData) +{ + 800b34c: b082 sub sp, #8 + 800b34e: 4602 mov r2, r0 + HAL_StatusTypeDef status = HAL_OK; + __IO uint32_t count; + + /* Handle Tx transmission from SUBGHZSPI peripheral to Radio ****************/ + /* Initialize Timeout */ + count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_DEFAULT_LOOP_TIME; + 800b350: 4b1c ldr r3, [pc, #112] ; (800b3c4 <SUBGHZSPI_Receive+0x78>) + 800b352: 681b ldr r3, [r3, #0] + 800b354: ebc3 03c3 rsb r3, r3, r3, lsl #3 + 800b358: f3c3 434c ubfx r3, r3, #17, #13 + 800b35c: 2064 movs r0, #100 ; 0x64 + 800b35e: fb00 f303 mul.w r3, r0, r3 + 800b362: 9301 str r3, [sp, #4] + + /* Wait until TXE flag is set */ + do + { + if (count == 0U) + 800b364: 9b01 ldr r3, [sp, #4] + 800b366: b14b cbz r3, 800b37c <SUBGHZSPI_Receive+0x30> + { + status = HAL_ERROR; + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; + break; + } + count--; + 800b368: 9b01 ldr r3, [sp, #4] + 800b36a: 3b01 subs r3, #1 + 800b36c: 9301 str r3, [sp, #4] + } while (READ_BIT(SUBGHZSPI->SR, SPI_SR_TXE) != (SPI_SR_TXE)); + 800b36e: 4b16 ldr r3, [pc, #88] ; (800b3c8 <SUBGHZSPI_Receive+0x7c>) + 800b370: 689b ldr r3, [r3, #8] + 800b372: f013 0f02 tst.w r3, #2 + 800b376: d0f5 beq.n 800b364 <SUBGHZSPI_Receive+0x18> + HAL_StatusTypeDef status = HAL_OK; + 800b378: 2000 movs r0, #0 + 800b37a: e001 b.n 800b380 <SUBGHZSPI_Receive+0x34> + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; + 800b37c: 2001 movs r0, #1 + 800b37e: 6090 str r0, [r2, #8] + + /* Transmit Data*/ +#if defined (__GNUC__) + __IO uint8_t *spidr = ((__IO uint8_t *)&SUBGHZSPI->DR); + *spidr = SUBGHZ_DUMMY_DATA; + 800b380: 4b11 ldr r3, [pc, #68] ; (800b3c8 <SUBGHZSPI_Receive+0x7c>) + 800b382: f04f 0cff mov.w ip, #255 ; 0xff + 800b386: f883 c00c strb.w ip, [r3, #12] + *((__IO uint8_t *)&SUBGHZSPI->DR) = SUBGHZ_DUMMY_DATA; +#endif /* __GNUC__ */ + + /* Handle Rx transmission from SUBGHZSPI peripheral to Radio ****************/ + /* Initialize Timeout */ + count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_DEFAULT_LOOP_TIME; + 800b38a: 4b0e ldr r3, [pc, #56] ; (800b3c4 <SUBGHZSPI_Receive+0x78>) + 800b38c: 681b ldr r3, [r3, #0] + 800b38e: ebc3 03c3 rsb r3, r3, r3, lsl #3 + 800b392: f3c3 434c ubfx r3, r3, #17, #13 + 800b396: f04f 0c64 mov.w ip, #100 ; 0x64 + 800b39a: fb0c f303 mul.w r3, ip, r3 + 800b39e: 9301 str r3, [sp, #4] + + /* Wait until RXNE flag is set */ + do + { + if (count == 0U) + 800b3a0: 9b01 ldr r3, [sp, #4] + 800b3a2: b143 cbz r3, 800b3b6 <SUBGHZSPI_Receive+0x6a> + { + status = HAL_ERROR; + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; + break; + } + count--; + 800b3a4: 9b01 ldr r3, [sp, #4] + 800b3a6: 3b01 subs r3, #1 + 800b3a8: 9301 str r3, [sp, #4] + } while (READ_BIT(SUBGHZSPI->SR, SPI_SR_RXNE) != (SPI_SR_RXNE)); + 800b3aa: 4b07 ldr r3, [pc, #28] ; (800b3c8 <SUBGHZSPI_Receive+0x7c>) + 800b3ac: 689b ldr r3, [r3, #8] + 800b3ae: f013 0f01 tst.w r3, #1 + 800b3b2: d0f5 beq.n 800b3a0 <SUBGHZSPI_Receive+0x54> + 800b3b4: e001 b.n 800b3ba <SUBGHZSPI_Receive+0x6e> + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_TIMEOUT; + 800b3b6: 2001 movs r0, #1 + 800b3b8: 6090 str r0, [r2, #8] + + /* Retrieve pData */ + *pData = (uint8_t)(READ_REG(SUBGHZSPI->DR)); + 800b3ba: 4b03 ldr r3, [pc, #12] ; (800b3c8 <SUBGHZSPI_Receive+0x7c>) + 800b3bc: 68db ldr r3, [r3, #12] + 800b3be: 700b strb r3, [r1, #0] + + return status; +} + 800b3c0: b002 add sp, #8 + 800b3c2: 4770 bx lr + 800b3c4: 20000828 .word 0x20000828 + 800b3c8: 58010000 .word 0x58010000 + +0800b3cc <SUBGHZ_WaitOnBusy>: + * @param hsubghz pointer to a SUBGHZ_HandleTypeDef structure that contains + * the handle information for SUBGHZ module. + * @retval HAL status + */ +HAL_StatusTypeDef SUBGHZ_WaitOnBusy(SUBGHZ_HandleTypeDef *hsubghz) +{ + 800b3cc: b082 sub sp, #8 + HAL_StatusTypeDef status; + __IO uint32_t count; + uint32_t mask; + + status = HAL_OK; + count = SUBGHZ_DEFAULT_TIMEOUT * SUBGHZ_RFBUSY_LOOP_TIME; + 800b3ce: 4b13 ldr r3, [pc, #76] ; (800b41c <SUBGHZ_WaitOnBusy+0x50>) + 800b3d0: 681b ldr r3, [r3, #0] + 800b3d2: eb03 0343 add.w r3, r3, r3, lsl #1 + 800b3d6: f3c3 434b ubfx r3, r3, #17, #12 + 800b3da: 2264 movs r2, #100 ; 0x64 + 800b3dc: fb02 f303 mul.w r3, r2, r3 + 800b3e0: 9301 str r3, [sp, #4] + 800b3e2: e006 b.n 800b3f2 <SUBGHZ_WaitOnBusy+0x26> + mask = LL_PWR_IsActiveFlag_RFBUSYMS(); + + if (count == 0U) + { + status = HAL_ERROR; + hsubghz->ErrorCode = HAL_SUBGHZ_ERROR_RF_BUSY; + 800b3e4: 2302 movs r3, #2 + 800b3e6: 6083 str r3, [r0, #8] + status = HAL_ERROR; + 800b3e8: 2001 movs r0, #1 + } + count--; + } while ((LL_PWR_IsActiveFlag_RFBUSYS()& mask) == 1UL); + + return status; +} + 800b3ea: b002 add sp, #8 + 800b3ec: 4770 bx lr + } while ((LL_PWR_IsActiveFlag_RFBUSYS()& mask) == 1UL); + 800b3ee: 4213 tst r3, r2 + 800b3f0: d012 beq.n 800b418 <SUBGHZ_WaitOnBusy+0x4c> + return ((READ_BIT(PWR->SR2, PWR_SR2_RFBUSYMS) == (PWR_SR2_RFBUSYMS)) ? 1UL : 0UL); + 800b3f2: 4b0b ldr r3, [pc, #44] ; (800b420 <SUBGHZ_WaitOnBusy+0x54>) + 800b3f4: 695b ldr r3, [r3, #20] + 800b3f6: f013 0304 ands.w r3, r3, #4 + 800b3fa: d000 beq.n 800b3fe <SUBGHZ_WaitOnBusy+0x32> + 800b3fc: 2301 movs r3, #1 + if (count == 0U) + 800b3fe: 9a01 ldr r2, [sp, #4] + 800b400: 2a00 cmp r2, #0 + 800b402: d0ef beq.n 800b3e4 <SUBGHZ_WaitOnBusy+0x18> + count--; + 800b404: 9a01 ldr r2, [sp, #4] + 800b406: 3a01 subs r2, #1 + 800b408: 9201 str r2, [sp, #4] + return ((READ_BIT(PWR->SR2, PWR_SR2_RFBUSYS) == (PWR_SR2_RFBUSYS)) ? 1UL : 0UL); + 800b40a: 4a05 ldr r2, [pc, #20] ; (800b420 <SUBGHZ_WaitOnBusy+0x54>) + 800b40c: 6952 ldr r2, [r2, #20] + 800b40e: f012 0202 ands.w r2, r2, #2 + 800b412: d0ec beq.n 800b3ee <SUBGHZ_WaitOnBusy+0x22> + 800b414: 2201 movs r2, #1 + 800b416: e7ea b.n 800b3ee <SUBGHZ_WaitOnBusy+0x22> + status = HAL_OK; + 800b418: 2000 movs r0, #0 + 800b41a: e7e6 b.n 800b3ea <SUBGHZ_WaitOnBusy+0x1e> + 800b41c: 20000828 .word 0x20000828 + 800b420: 58000400 .word 0x58000400 + +0800b424 <SUBGHZ_CheckDeviceReady>: +{ + 800b424: b500 push {lr} + 800b426: b083 sub sp, #12 + if (hsubghz->DeepSleep == SUBGHZ_DEEP_SLEEP_ENABLE) + 800b428: 7903 ldrb r3, [r0, #4] + 800b42a: 2b01 cmp r3, #1 + 800b42c: d004 beq.n 800b438 <SUBGHZ_CheckDeviceReady+0x14> + return (SUBGHZ_WaitOnBusy(hsubghz)); + 800b42e: f7ff ffcd bl 800b3cc <SUBGHZ_WaitOnBusy> +} + 800b432: b003 add sp, #12 + 800b434: f85d fb04 ldr.w pc, [sp], #4 + count = SUBGHZ_NSS_LOOP_TIME; + 800b438: 4b0d ldr r3, [pc, #52] ; (800b470 <SUBGHZ_CheckDeviceReady+0x4c>) + 800b43a: 681b ldr r3, [r3, #0] + 800b43c: eb03 0343 add.w r3, r3, r3, lsl #1 + 800b440: f3c3 334f ubfx r3, r3, #13, #16 + 800b444: 9301 str r3, [sp, #4] + CLEAR_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b446: 4a0b ldr r2, [pc, #44] ; (800b474 <SUBGHZ_CheckDeviceReady+0x50>) + 800b448: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b44c: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 800b450: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + count--; + 800b454: 9b01 ldr r3, [sp, #4] + 800b456: 3b01 subs r3, #1 + 800b458: 9301 str r3, [sp, #4] + } while (count != 0UL); + 800b45a: 9b01 ldr r3, [sp, #4] + 800b45c: 2b00 cmp r3, #0 + 800b45e: d1f9 bne.n 800b454 <SUBGHZ_CheckDeviceReady+0x30> + SET_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b460: 4a04 ldr r2, [pc, #16] ; (800b474 <SUBGHZ_CheckDeviceReady+0x50>) + 800b462: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b466: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800b46a: f8c2 3090 str.w r3, [r2, #144] ; 0x90 +} + 800b46e: e7de b.n 800b42e <SUBGHZ_CheckDeviceReady+0xa> + 800b470: 20000828 .word 0x20000828 + 800b474: 58000400 .word 0x58000400 + +0800b478 <HAL_SUBGHZ_WriteRegisters>: +{ + 800b478: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800b47c: 4605 mov r5, r0 + if (hsubghz->State == HAL_SUBGHZ_STATE_READY) + 800b47e: 7980 ldrb r0, [r0, #6] + 800b480: fa5f f880 uxtb.w r8, r0 + 800b484: f1b8 0f01 cmp.w r8, #1 + 800b488: d13e bne.n 800b508 <HAL_SUBGHZ_WriteRegisters+0x90> + 800b48a: 460c mov r4, r1 + 800b48c: 4617 mov r7, r2 + 800b48e: 461e mov r6, r3 + __HAL_LOCK(hsubghz); + 800b490: 796b ldrb r3, [r5, #5] + 800b492: 2b01 cmp r3, #1 + 800b494: d03b beq.n 800b50e <HAL_SUBGHZ_WriteRegisters+0x96> + 800b496: 2301 movs r3, #1 + 800b498: 716b strb r3, [r5, #5] + hsubghz->State = HAL_SUBGHZ_STATE_BUSY; + 800b49a: 2302 movs r3, #2 + 800b49c: 71ab strb r3, [r5, #6] + (void)SUBGHZ_CheckDeviceReady(hsubghz); + 800b49e: 4628 mov r0, r5 + 800b4a0: f7ff ffc0 bl 800b424 <SUBGHZ_CheckDeviceReady> + CLEAR_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b4a4: 4a1b ldr r2, [pc, #108] ; (800b514 <HAL_SUBGHZ_WriteRegisters+0x9c>) + 800b4a6: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b4aa: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 800b4ae: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZSPI_Transmit(hsubghz, SUBGHZ_RADIO_WRITE_REGISTER); + 800b4b2: 210d movs r1, #13 + 800b4b4: 4628 mov r0, r5 + 800b4b6: f7ff ff0d bl 800b2d4 <SUBGHZSPI_Transmit> + (void)SUBGHZSPI_Transmit(hsubghz, (uint8_t)((Address & 0xFF00U) >> 8U)); + 800b4ba: 0a21 lsrs r1, r4, #8 + 800b4bc: 4628 mov r0, r5 + 800b4be: f7ff ff09 bl 800b2d4 <SUBGHZSPI_Transmit> + (void)SUBGHZSPI_Transmit(hsubghz, (uint8_t)(Address & 0x00FFU)); + 800b4c2: b2e1 uxtb r1, r4 + 800b4c4: 4628 mov r0, r5 + 800b4c6: f7ff ff05 bl 800b2d4 <SUBGHZSPI_Transmit> + for (uint16_t i = 0U; i < Size; i++) + 800b4ca: 2400 movs r4, #0 + 800b4cc: e005 b.n 800b4da <HAL_SUBGHZ_WriteRegisters+0x62> + (void)SUBGHZSPI_Transmit(hsubghz, pBuffer[i]); + 800b4ce: 5d39 ldrb r1, [r7, r4] + 800b4d0: 4628 mov r0, r5 + 800b4d2: f7ff feff bl 800b2d4 <SUBGHZSPI_Transmit> + for (uint16_t i = 0U; i < Size; i++) + 800b4d6: 3401 adds r4, #1 + 800b4d8: b2a4 uxth r4, r4 + 800b4da: 42b4 cmp r4, r6 + 800b4dc: d3f7 bcc.n 800b4ce <HAL_SUBGHZ_WriteRegisters+0x56> + SET_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b4de: 4a0d ldr r2, [pc, #52] ; (800b514 <HAL_SUBGHZ_WriteRegisters+0x9c>) + 800b4e0: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b4e4: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800b4e8: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZ_WaitOnBusy(hsubghz); + 800b4ec: 4628 mov r0, r5 + 800b4ee: f7ff ff6d bl 800b3cc <SUBGHZ_WaitOnBusy> + if (hsubghz->ErrorCode != HAL_SUBGHZ_ERROR_NONE) + 800b4f2: 68ab ldr r3, [r5, #8] + 800b4f4: b90b cbnz r3, 800b4fa <HAL_SUBGHZ_WriteRegisters+0x82> + status = HAL_OK; + 800b4f6: f04f 0800 mov.w r8, #0 + hsubghz->State = HAL_SUBGHZ_STATE_READY; + 800b4fa: 2301 movs r3, #1 + 800b4fc: 71ab strb r3, [r5, #6] + __HAL_UNLOCK(hsubghz); + 800b4fe: 2300 movs r3, #0 + 800b500: 716b strb r3, [r5, #5] +} + 800b502: 4640 mov r0, r8 + 800b504: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + return HAL_BUSY; + 800b508: f04f 0802 mov.w r8, #2 + 800b50c: e7f9 b.n 800b502 <HAL_SUBGHZ_WriteRegisters+0x8a> + __HAL_LOCK(hsubghz); + 800b50e: f04f 0802 mov.w r8, #2 + 800b512: e7f6 b.n 800b502 <HAL_SUBGHZ_WriteRegisters+0x8a> + 800b514: 58000400 .word 0x58000400 + +0800b518 <HAL_SUBGHZ_ReadRegisters>: +{ + 800b518: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800b51c: 4606 mov r6, r0 + if (hsubghz->State == HAL_SUBGHZ_STATE_READY) + 800b51e: 7980 ldrb r0, [r0, #6] + 800b520: fa5f f880 uxtb.w r8, r0 + 800b524: f1b8 0f01 cmp.w r8, #1 + 800b528: d141 bne.n 800b5ae <HAL_SUBGHZ_ReadRegisters+0x96> + 800b52a: 460c mov r4, r1 + 800b52c: 4615 mov r5, r2 + 800b52e: 461f mov r7, r3 + __HAL_LOCK(hsubghz); + 800b530: 7973 ldrb r3, [r6, #5] + 800b532: 2b01 cmp r3, #1 + 800b534: d03e beq.n 800b5b4 <HAL_SUBGHZ_ReadRegisters+0x9c> + 800b536: 2301 movs r3, #1 + 800b538: 7173 strb r3, [r6, #5] + (void)SUBGHZ_CheckDeviceReady(hsubghz); + 800b53a: 4630 mov r0, r6 + 800b53c: f7ff ff72 bl 800b424 <SUBGHZ_CheckDeviceReady> + CLEAR_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b540: 4a1e ldr r2, [pc, #120] ; (800b5bc <HAL_SUBGHZ_ReadRegisters+0xa4>) + 800b542: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b546: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 800b54a: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZSPI_Transmit(hsubghz, SUBGHZ_RADIO_READ_REGISTER); + 800b54e: 211d movs r1, #29 + 800b550: 4630 mov r0, r6 + 800b552: f7ff febf bl 800b2d4 <SUBGHZSPI_Transmit> + (void)SUBGHZSPI_Transmit(hsubghz, (uint8_t)((Address & 0xFF00U) >> 8U)); + 800b556: 0a21 lsrs r1, r4, #8 + 800b558: 4630 mov r0, r6 + 800b55a: f7ff febb bl 800b2d4 <SUBGHZSPI_Transmit> + (void)SUBGHZSPI_Transmit(hsubghz, (uint8_t)(Address & 0x00FFU)); + 800b55e: b2e1 uxtb r1, r4 + 800b560: 4630 mov r0, r6 + 800b562: f7ff feb7 bl 800b2d4 <SUBGHZSPI_Transmit> + (void)SUBGHZSPI_Transmit(hsubghz, 0U); + 800b566: 2100 movs r1, #0 + 800b568: 4630 mov r0, r6 + 800b56a: f7ff feb3 bl 800b2d4 <SUBGHZSPI_Transmit> + for (uint16_t i = 0U; i < Size; i++) + 800b56e: 2400 movs r4, #0 + 800b570: e006 b.n 800b580 <HAL_SUBGHZ_ReadRegisters+0x68> + (void)SUBGHZSPI_Receive(hsubghz, (pData)); + 800b572: 4629 mov r1, r5 + 800b574: 4630 mov r0, r6 + 800b576: f7ff fee9 bl 800b34c <SUBGHZSPI_Receive> + pData++; + 800b57a: 3501 adds r5, #1 + for (uint16_t i = 0U; i < Size; i++) + 800b57c: 3401 adds r4, #1 + 800b57e: b2a4 uxth r4, r4 + 800b580: 42bc cmp r4, r7 + 800b582: d3f6 bcc.n 800b572 <HAL_SUBGHZ_ReadRegisters+0x5a> + SET_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b584: 4a0d ldr r2, [pc, #52] ; (800b5bc <HAL_SUBGHZ_ReadRegisters+0xa4>) + 800b586: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b58a: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800b58e: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZ_WaitOnBusy(hsubghz); + 800b592: 4630 mov r0, r6 + 800b594: f7ff ff1a bl 800b3cc <SUBGHZ_WaitOnBusy> + if (hsubghz->ErrorCode != HAL_SUBGHZ_ERROR_NONE) + 800b598: 68b3 ldr r3, [r6, #8] + 800b59a: b90b cbnz r3, 800b5a0 <HAL_SUBGHZ_ReadRegisters+0x88> + status = HAL_OK; + 800b59c: f04f 0800 mov.w r8, #0 + hsubghz->State = HAL_SUBGHZ_STATE_READY; + 800b5a0: 2301 movs r3, #1 + 800b5a2: 71b3 strb r3, [r6, #6] + __HAL_UNLOCK(hsubghz); + 800b5a4: 2300 movs r3, #0 + 800b5a6: 7173 strb r3, [r6, #5] +} + 800b5a8: 4640 mov r0, r8 + 800b5aa: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + return HAL_BUSY; + 800b5ae: f04f 0802 mov.w r8, #2 + 800b5b2: e7f9 b.n 800b5a8 <HAL_SUBGHZ_ReadRegisters+0x90> + __HAL_LOCK(hsubghz); + 800b5b4: f04f 0802 mov.w r8, #2 + 800b5b8: e7f6 b.n 800b5a8 <HAL_SUBGHZ_ReadRegisters+0x90> + 800b5ba: bf00 nop + 800b5bc: 58000400 .word 0x58000400 + +0800b5c0 <HAL_SUBGHZ_ExecSetCmd>: +{ + 800b5c0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 800b5c4: 4605 mov r5, r0 + if (hsubghz->State == HAL_SUBGHZ_STATE_READY) + 800b5c6: 7980 ldrb r0, [r0, #6] + 800b5c8: fa5f f980 uxtb.w r9, r0 + 800b5cc: f1b9 0f01 cmp.w r9, #1 + 800b5d0: d143 bne.n 800b65a <HAL_SUBGHZ_ExecSetCmd+0x9a> + 800b5d2: 4688 mov r8, r1 + 800b5d4: 4617 mov r7, r2 + 800b5d6: 461e mov r6, r3 + __HAL_LOCK(hsubghz); + 800b5d8: 796b ldrb r3, [r5, #5] + 800b5da: 2b01 cmp r3, #1 + 800b5dc: d040 beq.n 800b660 <HAL_SUBGHZ_ExecSetCmd+0xa0> + 800b5de: 2301 movs r3, #1 + 800b5e0: 716b strb r3, [r5, #5] + (void)SUBGHZ_CheckDeviceReady(hsubghz); + 800b5e2: 4628 mov r0, r5 + 800b5e4: f7ff ff1e bl 800b424 <SUBGHZ_CheckDeviceReady> + if ((Command == RADIO_SET_SLEEP) || (Command == RADIO_SET_RXDUTYCYCLE)) + 800b5e8: f1b8 0f84 cmp.w r8, #132 ; 0x84 + 800b5ec: d005 beq.n 800b5fa <HAL_SUBGHZ_ExecSetCmd+0x3a> + 800b5ee: f1b8 0f94 cmp.w r8, #148 ; 0x94 + 800b5f2: d002 beq.n 800b5fa <HAL_SUBGHZ_ExecSetCmd+0x3a> + hsubghz->DeepSleep = SUBGHZ_DEEP_SLEEP_DISABLE; + 800b5f4: 2300 movs r3, #0 + 800b5f6: 712b strb r3, [r5, #4] + 800b5f8: e001 b.n 800b5fe <HAL_SUBGHZ_ExecSetCmd+0x3e> + hsubghz->DeepSleep = SUBGHZ_DEEP_SLEEP_ENABLE; + 800b5fa: 2301 movs r3, #1 + 800b5fc: 712b strb r3, [r5, #4] + CLEAR_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b5fe: 4a1a ldr r2, [pc, #104] ; (800b668 <HAL_SUBGHZ_ExecSetCmd+0xa8>) + 800b600: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b604: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 800b608: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZSPI_Transmit(hsubghz, (uint8_t)Command); + 800b60c: 4641 mov r1, r8 + 800b60e: 4628 mov r0, r5 + 800b610: f7ff fe60 bl 800b2d4 <SUBGHZSPI_Transmit> + for (uint16_t i = 0U; i < Size; i++) + 800b614: 2400 movs r4, #0 + 800b616: e005 b.n 800b624 <HAL_SUBGHZ_ExecSetCmd+0x64> + (void)SUBGHZSPI_Transmit(hsubghz, pBuffer[i]); + 800b618: 5d39 ldrb r1, [r7, r4] + 800b61a: 4628 mov r0, r5 + 800b61c: f7ff fe5a bl 800b2d4 <SUBGHZSPI_Transmit> + for (uint16_t i = 0U; i < Size; i++) + 800b620: 3401 adds r4, #1 + 800b622: b2a4 uxth r4, r4 + 800b624: 42b4 cmp r4, r6 + 800b626: d3f7 bcc.n 800b618 <HAL_SUBGHZ_ExecSetCmd+0x58> + SET_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b628: 4a0f ldr r2, [pc, #60] ; (800b668 <HAL_SUBGHZ_ExecSetCmd+0xa8>) + 800b62a: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b62e: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800b632: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + if (Command != RADIO_SET_SLEEP) + 800b636: f1b8 0f84 cmp.w r8, #132 ; 0x84 + 800b63a: d10a bne.n 800b652 <HAL_SUBGHZ_ExecSetCmd+0x92> + if (hsubghz->ErrorCode != HAL_SUBGHZ_ERROR_NONE) + 800b63c: 68ab ldr r3, [r5, #8] + 800b63e: b90b cbnz r3, 800b644 <HAL_SUBGHZ_ExecSetCmd+0x84> + status = HAL_OK; + 800b640: f04f 0900 mov.w r9, #0 + hsubghz->State = HAL_SUBGHZ_STATE_READY; + 800b644: 2301 movs r3, #1 + 800b646: 71ab strb r3, [r5, #6] + __HAL_UNLOCK(hsubghz); + 800b648: 2300 movs r3, #0 + 800b64a: 716b strb r3, [r5, #5] +} + 800b64c: 4648 mov r0, r9 + 800b64e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + (void)SUBGHZ_WaitOnBusy(hsubghz); + 800b652: 4628 mov r0, r5 + 800b654: f7ff feba bl 800b3cc <SUBGHZ_WaitOnBusy> + 800b658: e7f0 b.n 800b63c <HAL_SUBGHZ_ExecSetCmd+0x7c> + return HAL_BUSY; + 800b65a: f04f 0902 mov.w r9, #2 + 800b65e: e7f5 b.n 800b64c <HAL_SUBGHZ_ExecSetCmd+0x8c> + __HAL_LOCK(hsubghz); + 800b660: f04f 0902 mov.w r9, #2 + 800b664: e7f2 b.n 800b64c <HAL_SUBGHZ_ExecSetCmd+0x8c> + 800b666: bf00 nop + 800b668: 58000400 .word 0x58000400 + +0800b66c <HAL_SUBGHZ_ExecGetCmd>: +{ + 800b66c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800b670: 4606 mov r6, r0 + if (hsubghz->State == HAL_SUBGHZ_STATE_READY) + 800b672: 7980 ldrb r0, [r0, #6] + 800b674: fa5f f880 uxtb.w r8, r0 + 800b678: f1b8 0f01 cmp.w r8, #1 + 800b67c: d139 bne.n 800b6f2 <HAL_SUBGHZ_ExecGetCmd+0x86> + 800b67e: 460c mov r4, r1 + 800b680: 4615 mov r5, r2 + 800b682: 461f mov r7, r3 + __HAL_LOCK(hsubghz); + 800b684: 7973 ldrb r3, [r6, #5] + 800b686: 2b01 cmp r3, #1 + 800b688: d036 beq.n 800b6f8 <HAL_SUBGHZ_ExecGetCmd+0x8c> + 800b68a: 2301 movs r3, #1 + 800b68c: 7173 strb r3, [r6, #5] + (void)SUBGHZ_CheckDeviceReady(hsubghz); + 800b68e: 4630 mov r0, r6 + 800b690: f7ff fec8 bl 800b424 <SUBGHZ_CheckDeviceReady> + CLEAR_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b694: 4a1a ldr r2, [pc, #104] ; (800b700 <HAL_SUBGHZ_ExecGetCmd+0x94>) + 800b696: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b69a: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 800b69e: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZSPI_Transmit(hsubghz, (uint8_t)Command); + 800b6a2: 4621 mov r1, r4 + 800b6a4: 4630 mov r0, r6 + 800b6a6: f7ff fe15 bl 800b2d4 <SUBGHZSPI_Transmit> + (void)SUBGHZSPI_Transmit(hsubghz, 0x00U); + 800b6aa: 2100 movs r1, #0 + 800b6ac: 4630 mov r0, r6 + 800b6ae: f7ff fe11 bl 800b2d4 <SUBGHZSPI_Transmit> + for (uint16_t i = 0U; i < Size; i++) + 800b6b2: 2400 movs r4, #0 + 800b6b4: e006 b.n 800b6c4 <HAL_SUBGHZ_ExecGetCmd+0x58> + (void)SUBGHZSPI_Receive(hsubghz, (pData)); + 800b6b6: 4629 mov r1, r5 + 800b6b8: 4630 mov r0, r6 + 800b6ba: f7ff fe47 bl 800b34c <SUBGHZSPI_Receive> + pData++; + 800b6be: 3501 adds r5, #1 + for (uint16_t i = 0U; i < Size; i++) + 800b6c0: 3401 adds r4, #1 + 800b6c2: b2a4 uxth r4, r4 + 800b6c4: 42bc cmp r4, r7 + 800b6c6: d3f6 bcc.n 800b6b6 <HAL_SUBGHZ_ExecGetCmd+0x4a> + SET_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b6c8: 4a0d ldr r2, [pc, #52] ; (800b700 <HAL_SUBGHZ_ExecGetCmd+0x94>) + 800b6ca: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b6ce: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800b6d2: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZ_WaitOnBusy(hsubghz); + 800b6d6: 4630 mov r0, r6 + 800b6d8: f7ff fe78 bl 800b3cc <SUBGHZ_WaitOnBusy> + if (hsubghz->ErrorCode != HAL_SUBGHZ_ERROR_NONE) + 800b6dc: 68b3 ldr r3, [r6, #8] + 800b6de: b90b cbnz r3, 800b6e4 <HAL_SUBGHZ_ExecGetCmd+0x78> + status = HAL_OK; + 800b6e0: f04f 0800 mov.w r8, #0 + hsubghz->State = HAL_SUBGHZ_STATE_READY; + 800b6e4: 2301 movs r3, #1 + 800b6e6: 71b3 strb r3, [r6, #6] + __HAL_UNLOCK(hsubghz); + 800b6e8: 2300 movs r3, #0 + 800b6ea: 7173 strb r3, [r6, #5] +} + 800b6ec: 4640 mov r0, r8 + 800b6ee: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + return HAL_BUSY; + 800b6f2: f04f 0802 mov.w r8, #2 + 800b6f6: e7f9 b.n 800b6ec <HAL_SUBGHZ_ExecGetCmd+0x80> + __HAL_LOCK(hsubghz); + 800b6f8: f04f 0802 mov.w r8, #2 + 800b6fc: e7f6 b.n 800b6ec <HAL_SUBGHZ_ExecGetCmd+0x80> + 800b6fe: bf00 nop + 800b700: 58000400 .word 0x58000400 + +0800b704 <HAL_SUBGHZ_IRQHandler>: +{ + 800b704: b530 push {r4, r5, lr} + 800b706: b083 sub sp, #12 + 800b708: 4605 mov r5, r0 + uint8_t tmpisr[2U] = {0U}; + 800b70a: 2300 movs r3, #0 + 800b70c: f8ad 3004 strh.w r3, [sp, #4] + (void)HAL_SUBGHZ_ExecGetCmd(hsubghz, RADIO_GET_IRQSTATUS, tmpisr, 2U); + 800b710: 2302 movs r3, #2 + 800b712: aa01 add r2, sp, #4 + 800b714: 2112 movs r1, #18 + 800b716: f7ff ffa9 bl 800b66c <HAL_SUBGHZ_ExecGetCmd> + itsource = tmpisr[0U]; + 800b71a: f89d 3004 ldrb.w r3, [sp, #4] + itsource = (itsource << 8U) | tmpisr[1U]; + 800b71e: f89d 4005 ldrb.w r4, [sp, #5] + 800b722: ea44 2403 orr.w r4, r4, r3, lsl #8 + (void)HAL_SUBGHZ_ExecSetCmd(hsubghz, RADIO_CLR_IRQSTATUS, tmpisr, 2U); + 800b726: 2302 movs r3, #2 + 800b728: aa01 add r2, sp, #4 + 800b72a: 4619 mov r1, r3 + 800b72c: 4628 mov r0, r5 + 800b72e: f7ff ff47 bl 800b5c0 <HAL_SUBGHZ_ExecSetCmd> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_TX_CPLT) != RESET) + 800b732: f014 0f01 tst.w r4, #1 + 800b736: d123 bne.n 800b780 <HAL_SUBGHZ_IRQHandler+0x7c> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_RX_CPLT) != RESET) + 800b738: f014 0f02 tst.w r4, #2 + 800b73c: d124 bne.n 800b788 <HAL_SUBGHZ_IRQHandler+0x84> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_PREAMBLE_DETECTED) != RESET) + 800b73e: f014 0f04 tst.w r4, #4 + 800b742: d125 bne.n 800b790 <HAL_SUBGHZ_IRQHandler+0x8c> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_SYNCWORD_VALID) != RESET) + 800b744: f014 0f08 tst.w r4, #8 + 800b748: d126 bne.n 800b798 <HAL_SUBGHZ_IRQHandler+0x94> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_HEADER_VALID) != RESET) + 800b74a: f014 0f10 tst.w r4, #16 + 800b74e: d127 bne.n 800b7a0 <HAL_SUBGHZ_IRQHandler+0x9c> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_HEADER_ERROR) != RESET) + 800b750: f014 0f20 tst.w r4, #32 + 800b754: d128 bne.n 800b7a8 <HAL_SUBGHZ_IRQHandler+0xa4> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_CRC_ERROR) != RESET) + 800b756: f014 0f40 tst.w r4, #64 ; 0x40 + 800b75a: d129 bne.n 800b7b0 <HAL_SUBGHZ_IRQHandler+0xac> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_CAD_DONE) != RESET) + 800b75c: f014 0f80 tst.w r4, #128 ; 0x80 + 800b760: d006 beq.n 800b770 <HAL_SUBGHZ_IRQHandler+0x6c> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_CAD_ACTIVITY_DETECTED) != RESET) + 800b762: f414 7f80 tst.w r4, #256 ; 0x100 + 800b766: d027 beq.n 800b7b8 <HAL_SUBGHZ_IRQHandler+0xb4> + HAL_SUBGHZ_CADStatusCallback(hsubghz, HAL_SUBGHZ_CAD_DETECTED); + 800b768: 2101 movs r1, #1 + 800b76a: 4628 mov r0, r5 + 800b76c: f00b f852 bl 8016814 <HAL_SUBGHZ_CADStatusCallback> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_RX_TX_TIMEOUT) != RESET) + 800b770: f414 7f00 tst.w r4, #512 ; 0x200 + 800b774: d125 bne.n 800b7c2 <HAL_SUBGHZ_IRQHandler+0xbe> + if (SUBGHZ_CHECK_IT_SOURCE(itsource, SUBGHZ_IT_LR_FHSS_HOP) != RESET) + 800b776: f414 4f80 tst.w r4, #16384 ; 0x4000 + 800b77a: d126 bne.n 800b7ca <HAL_SUBGHZ_IRQHandler+0xc6> +} + 800b77c: b003 add sp, #12 + 800b77e: bd30 pop {r4, r5, pc} + HAL_SUBGHZ_TxCpltCallback(hsubghz); + 800b780: 4628 mov r0, r5 + 800b782: f00b f82f bl 80167e4 <HAL_SUBGHZ_TxCpltCallback> + 800b786: e7d7 b.n 800b738 <HAL_SUBGHZ_IRQHandler+0x34> + HAL_SUBGHZ_RxCpltCallback(hsubghz); + 800b788: 4628 mov r0, r5 + 800b78a: f00b f833 bl 80167f4 <HAL_SUBGHZ_RxCpltCallback> + 800b78e: e7d6 b.n 800b73e <HAL_SUBGHZ_IRQHandler+0x3a> + HAL_SUBGHZ_PreambleDetectedCallback(hsubghz); + 800b790: 4628 mov r0, r5 + 800b792: f00b f863 bl 801685c <HAL_SUBGHZ_PreambleDetectedCallback> + 800b796: e7d5 b.n 800b744 <HAL_SUBGHZ_IRQHandler+0x40> + HAL_SUBGHZ_SyncWordValidCallback(hsubghz); + 800b798: 4628 mov r0, r5 + 800b79a: f00b f867 bl 801686c <HAL_SUBGHZ_SyncWordValidCallback> + 800b79e: e7d4 b.n 800b74a <HAL_SUBGHZ_IRQHandler+0x46> + HAL_SUBGHZ_HeaderValidCallback(hsubghz); + 800b7a0: 4628 mov r0, r5 + 800b7a2: f00b f86b bl 801687c <HAL_SUBGHZ_HeaderValidCallback> + 800b7a6: e7d3 b.n 800b750 <HAL_SUBGHZ_IRQHandler+0x4c> + HAL_SUBGHZ_HeaderErrorCallback(hsubghz); + 800b7a8: 4628 mov r0, r5 + 800b7aa: f00b f84f bl 801684c <HAL_SUBGHZ_HeaderErrorCallback> + 800b7ae: e7d2 b.n 800b756 <HAL_SUBGHZ_IRQHandler+0x52> + HAL_SUBGHZ_CRCErrorCallback(hsubghz); + 800b7b0: 4628 mov r0, r5 + 800b7b2: f00b f827 bl 8016804 <HAL_SUBGHZ_CRCErrorCallback> + 800b7b6: e7d1 b.n 800b75c <HAL_SUBGHZ_IRQHandler+0x58> + HAL_SUBGHZ_CADStatusCallback(hsubghz, HAL_SUBGHZ_CAD_CLEAR); + 800b7b8: 2100 movs r1, #0 + 800b7ba: 4628 mov r0, r5 + 800b7bc: f00b f82a bl 8016814 <HAL_SUBGHZ_CADStatusCallback> + 800b7c0: e7d6 b.n 800b770 <HAL_SUBGHZ_IRQHandler+0x6c> + HAL_SUBGHZ_RxTxTimeoutCallback(hsubghz); + 800b7c2: 4628 mov r0, r5 + 800b7c4: f00b f838 bl 8016838 <HAL_SUBGHZ_RxTxTimeoutCallback> + 800b7c8: e7d5 b.n 800b776 <HAL_SUBGHZ_IRQHandler+0x72> + HAL_SUBGHZ_LrFhssHopCallback(hsubghz); + 800b7ca: 4628 mov r0, r5 + 800b7cc: f00b f85e bl 801688c <HAL_SUBGHZ_LrFhssHopCallback> +} + 800b7d0: e7d4 b.n 800b77c <HAL_SUBGHZ_IRQHandler+0x78> + ... + +0800b7d4 <HAL_SUBGHZ_WriteBuffer>: +{ + 800b7d4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800b7d8: 4605 mov r5, r0 + if (hsubghz->State == HAL_SUBGHZ_STATE_READY) + 800b7da: 7980 ldrb r0, [r0, #6] + 800b7dc: fa5f f880 uxtb.w r8, r0 + 800b7e0: f1b8 0f01 cmp.w r8, #1 + 800b7e4: d138 bne.n 800b858 <HAL_SUBGHZ_WriteBuffer+0x84> + 800b7e6: 460c mov r4, r1 + 800b7e8: 4617 mov r7, r2 + 800b7ea: 461e mov r6, r3 + __HAL_LOCK(hsubghz); + 800b7ec: 796b ldrb r3, [r5, #5] + 800b7ee: 2b01 cmp r3, #1 + 800b7f0: d035 beq.n 800b85e <HAL_SUBGHZ_WriteBuffer+0x8a> + 800b7f2: 2301 movs r3, #1 + 800b7f4: 716b strb r3, [r5, #5] + (void)SUBGHZ_CheckDeviceReady(hsubghz); + 800b7f6: 4628 mov r0, r5 + 800b7f8: f7ff fe14 bl 800b424 <SUBGHZ_CheckDeviceReady> + CLEAR_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b7fc: 4a19 ldr r2, [pc, #100] ; (800b864 <HAL_SUBGHZ_WriteBuffer+0x90>) + 800b7fe: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b802: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 800b806: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZSPI_Transmit(hsubghz, SUBGHZ_RADIO_WRITE_BUFFER); + 800b80a: 210e movs r1, #14 + 800b80c: 4628 mov r0, r5 + 800b80e: f7ff fd61 bl 800b2d4 <SUBGHZSPI_Transmit> + (void)SUBGHZSPI_Transmit(hsubghz, Offset); + 800b812: 4621 mov r1, r4 + 800b814: 4628 mov r0, r5 + 800b816: f7ff fd5d bl 800b2d4 <SUBGHZSPI_Transmit> + for (uint16_t i = 0U; i < Size; i++) + 800b81a: 2400 movs r4, #0 + 800b81c: e005 b.n 800b82a <HAL_SUBGHZ_WriteBuffer+0x56> + (void)SUBGHZSPI_Transmit(hsubghz, pBuffer[i]); + 800b81e: 5d39 ldrb r1, [r7, r4] + 800b820: 4628 mov r0, r5 + 800b822: f7ff fd57 bl 800b2d4 <SUBGHZSPI_Transmit> + for (uint16_t i = 0U; i < Size; i++) + 800b826: 3401 adds r4, #1 + 800b828: b2a4 uxth r4, r4 + 800b82a: 42b4 cmp r4, r6 + 800b82c: d3f7 bcc.n 800b81e <HAL_SUBGHZ_WriteBuffer+0x4a> + SET_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b82e: 4a0d ldr r2, [pc, #52] ; (800b864 <HAL_SUBGHZ_WriteBuffer+0x90>) + 800b830: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b834: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800b838: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZ_WaitOnBusy(hsubghz); + 800b83c: 4628 mov r0, r5 + 800b83e: f7ff fdc5 bl 800b3cc <SUBGHZ_WaitOnBusy> + if (hsubghz->ErrorCode != HAL_SUBGHZ_ERROR_NONE) + 800b842: 68ab ldr r3, [r5, #8] + 800b844: b90b cbnz r3, 800b84a <HAL_SUBGHZ_WriteBuffer+0x76> + status = HAL_OK; + 800b846: f04f 0800 mov.w r8, #0 + hsubghz->State = HAL_SUBGHZ_STATE_READY; + 800b84a: 2301 movs r3, #1 + 800b84c: 71ab strb r3, [r5, #6] + __HAL_UNLOCK(hsubghz); + 800b84e: 2300 movs r3, #0 + 800b850: 716b strb r3, [r5, #5] +} + 800b852: 4640 mov r0, r8 + 800b854: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + return HAL_BUSY; + 800b858: f04f 0802 mov.w r8, #2 + 800b85c: e7f9 b.n 800b852 <HAL_SUBGHZ_WriteBuffer+0x7e> + __HAL_LOCK(hsubghz); + 800b85e: f04f 0802 mov.w r8, #2 + 800b862: e7f6 b.n 800b852 <HAL_SUBGHZ_WriteBuffer+0x7e> + 800b864: 58000400 .word 0x58000400 + +0800b868 <HAL_SUBGHZ_ReadBuffer>: +{ + 800b868: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800b86c: 4606 mov r6, r0 + if (hsubghz->State == HAL_SUBGHZ_STATE_READY) + 800b86e: 7980 ldrb r0, [r0, #6] + 800b870: fa5f f880 uxtb.w r8, r0 + 800b874: f1b8 0f01 cmp.w r8, #1 + 800b878: d13d bne.n 800b8f6 <HAL_SUBGHZ_ReadBuffer+0x8e> + 800b87a: 460c mov r4, r1 + 800b87c: 4615 mov r5, r2 + 800b87e: 461f mov r7, r3 + __HAL_LOCK(hsubghz); + 800b880: 7973 ldrb r3, [r6, #5] + 800b882: 2b01 cmp r3, #1 + 800b884: d03a beq.n 800b8fc <HAL_SUBGHZ_ReadBuffer+0x94> + 800b886: 2301 movs r3, #1 + 800b888: 7173 strb r3, [r6, #5] + (void)SUBGHZ_CheckDeviceReady(hsubghz); + 800b88a: 4630 mov r0, r6 + 800b88c: f7ff fdca bl 800b424 <SUBGHZ_CheckDeviceReady> + CLEAR_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b890: 4a1c ldr r2, [pc, #112] ; (800b904 <HAL_SUBGHZ_ReadBuffer+0x9c>) + 800b892: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b896: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 800b89a: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZSPI_Transmit(hsubghz, SUBGHZ_RADIO_READ_BUFFER); + 800b89e: 211e movs r1, #30 + 800b8a0: 4630 mov r0, r6 + 800b8a2: f7ff fd17 bl 800b2d4 <SUBGHZSPI_Transmit> + (void)SUBGHZSPI_Transmit(hsubghz, Offset); + 800b8a6: 4621 mov r1, r4 + 800b8a8: 4630 mov r0, r6 + 800b8aa: f7ff fd13 bl 800b2d4 <SUBGHZSPI_Transmit> + (void)SUBGHZSPI_Transmit(hsubghz, 0x00U); + 800b8ae: 2100 movs r1, #0 + 800b8b0: 4630 mov r0, r6 + 800b8b2: f7ff fd0f bl 800b2d4 <SUBGHZSPI_Transmit> + for (uint16_t i = 0U; i < Size; i++) + 800b8b6: 2400 movs r4, #0 + 800b8b8: e006 b.n 800b8c8 <HAL_SUBGHZ_ReadBuffer+0x60> + (void)SUBGHZSPI_Receive(hsubghz, (pData)); + 800b8ba: 4629 mov r1, r5 + 800b8bc: 4630 mov r0, r6 + 800b8be: f7ff fd45 bl 800b34c <SUBGHZSPI_Receive> + pData++; + 800b8c2: 3501 adds r5, #1 + for (uint16_t i = 0U; i < Size; i++) + 800b8c4: 3401 adds r4, #1 + 800b8c6: b2a4 uxth r4, r4 + 800b8c8: 42bc cmp r4, r7 + 800b8ca: d3f6 bcc.n 800b8ba <HAL_SUBGHZ_ReadBuffer+0x52> + SET_BIT(PWR->SUBGHZSPICR, PWR_SUBGHZSPICR_NSS); + 800b8cc: 4a0d ldr r2, [pc, #52] ; (800b904 <HAL_SUBGHZ_ReadBuffer+0x9c>) + 800b8ce: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800b8d2: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800b8d6: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + (void)SUBGHZ_WaitOnBusy(hsubghz); + 800b8da: 4630 mov r0, r6 + 800b8dc: f7ff fd76 bl 800b3cc <SUBGHZ_WaitOnBusy> + if (hsubghz->ErrorCode != HAL_SUBGHZ_ERROR_NONE) + 800b8e0: 68b3 ldr r3, [r6, #8] + 800b8e2: b90b cbnz r3, 800b8e8 <HAL_SUBGHZ_ReadBuffer+0x80> + status = HAL_OK; + 800b8e4: f04f 0800 mov.w r8, #0 + hsubghz->State = HAL_SUBGHZ_STATE_READY; + 800b8e8: 2301 movs r3, #1 + 800b8ea: 71b3 strb r3, [r6, #6] + __HAL_UNLOCK(hsubghz); + 800b8ec: 2300 movs r3, #0 + 800b8ee: 7173 strb r3, [r6, #5] +} + 800b8f0: 4640 mov r0, r8 + 800b8f2: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + return HAL_BUSY; + 800b8f6: f04f 0802 mov.w r8, #2 + 800b8fa: e7f9 b.n 800b8f0 <HAL_SUBGHZ_ReadBuffer+0x88> + __HAL_LOCK(hsubghz); + 800b8fc: f04f 0802 mov.w r8, #2 + 800b900: e7f6 b.n 800b8f0 <HAL_SUBGHZ_ReadBuffer+0x88> + 800b902: bf00 nop + 800b904: 58000400 .word 0x58000400 + +0800b908 <UART_EndTxTransfer>: + * @retval None + */ +static void UART_EndTxTransfer(UART_HandleTypeDef *huart) +{ + /* Disable TXEIE, TCIE, TXFT interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); + 800b908: 6802 ldr r2, [r0, #0] + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800b90a: e852 3f00 ldrex r3, [r2] + 800b90e: f023 03c0 bic.w r3, r3, #192 ; 0xc0 + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800b912: e842 3100 strex r1, r3, [r2] + 800b916: 2900 cmp r1, #0 + 800b918: d1f6 bne.n 800b908 <UART_EndTxTransfer> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_TXFTIE)); + 800b91a: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800b91c: f102 0308 add.w r3, r2, #8 + 800b920: e853 3f00 ldrex r3, [r3] + 800b924: f423 0300 bic.w r3, r3, #8388608 ; 0x800000 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800b928: 3208 adds r2, #8 + 800b92a: e842 3100 strex r1, r3, [r2] + 800b92e: 2900 cmp r1, #0 + 800b930: d1f3 bne.n 800b91a <UART_EndTxTransfer+0x12> + + /* At end of Tx process, restore huart->gState to Ready */ + huart->gState = HAL_UART_STATE_READY; + 800b932: 2320 movs r3, #32 + 800b934: f8c0 3088 str.w r3, [r0, #136] ; 0x88 +} + 800b938: 4770 bx lr + +0800b93a <UART_EndRxTransfer>: + * @retval None + */ +static void UART_EndRxTransfer(UART_HandleTypeDef *huart) +{ + /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); + 800b93a: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800b93c: e852 3f00 ldrex r3, [r2] + 800b940: f423 7390 bic.w r3, r3, #288 ; 0x120 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800b944: e842 3100 strex r1, r3, [r2] + 800b948: 2900 cmp r1, #0 + 800b94a: d1f6 bne.n 800b93a <UART_EndRxTransfer> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); + 800b94c: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800b94e: f102 0308 add.w r3, r2, #8 + 800b952: e853 3f00 ldrex r3, [r3] + 800b956: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 800b95a: f023 0301 bic.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800b95e: 3208 adds r2, #8 + 800b960: e842 3100 strex r1, r3, [r2] + 800b964: 2900 cmp r1, #0 + 800b966: d1f1 bne.n 800b94c <UART_EndRxTransfer+0x12> + + /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + 800b968: 6ec3 ldr r3, [r0, #108] ; 0x6c + 800b96a: 2b01 cmp r3, #1 + 800b96c: d006 beq.n 800b97c <UART_EndRxTransfer+0x42> + { + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + } + + /* At end of Rx process, restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + 800b96e: 2320 movs r3, #32 + 800b970: f8c0 308c str.w r3, [r0, #140] ; 0x8c + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 800b974: 2300 movs r3, #0 + 800b976: 66c3 str r3, [r0, #108] ; 0x6c + + /* Reset RxIsr function pointer */ + huart->RxISR = NULL; + 800b978: 6743 str r3, [r0, #116] ; 0x74 +} + 800b97a: 4770 bx lr + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + 800b97c: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800b97e: e852 3f00 ldrex r3, [r2] + 800b982: f023 0310 bic.w r3, r3, #16 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800b986: e842 3100 strex r1, r3, [r2] + 800b98a: 2900 cmp r1, #0 + 800b98c: d1f6 bne.n 800b97c <UART_EndRxTransfer+0x42> + 800b98e: e7ee b.n 800b96e <UART_EndRxTransfer+0x34> + +0800b990 <HAL_UART_Transmit_DMA>: +{ + 800b990: 4613 mov r3, r2 + if (huart->gState == HAL_UART_STATE_READY) + 800b992: f8d0 2088 ldr.w r2, [r0, #136] ; 0x88 + 800b996: 2a20 cmp r2, #32 + 800b998: d13d bne.n 800ba16 <HAL_UART_Transmit_DMA+0x86> +{ + 800b99a: b510 push {r4, lr} + 800b99c: 4604 mov r4, r0 + if ((pData == NULL) || (Size == 0U)) + 800b99e: 2900 cmp r1, #0 + 800b9a0: d03b beq.n 800ba1a <HAL_UART_Transmit_DMA+0x8a> + 800b9a2: 2b00 cmp r3, #0 + 800b9a4: d03b beq.n 800ba1e <HAL_UART_Transmit_DMA+0x8e> + huart->pTxBuffPtr = pData; + 800b9a6: 6501 str r1, [r0, #80] ; 0x50 + huart->TxXferSize = Size; + 800b9a8: f8a0 3054 strh.w r3, [r0, #84] ; 0x54 + huart->TxXferCount = Size; + 800b9ac: f8a0 3056 strh.w r3, [r0, #86] ; 0x56 + huart->ErrorCode = HAL_UART_ERROR_NONE; + 800b9b0: 2200 movs r2, #0 + 800b9b2: f8c0 2090 str.w r2, [r0, #144] ; 0x90 + huart->gState = HAL_UART_STATE_BUSY_TX; + 800b9b6: 2221 movs r2, #33 ; 0x21 + 800b9b8: f8c0 2088 str.w r2, [r0, #136] ; 0x88 + if (huart->hdmatx != NULL) + 800b9bc: 6fc2 ldr r2, [r0, #124] ; 0x7c + 800b9be: b1ca cbz r2, 800b9f4 <HAL_UART_Transmit_DMA+0x64> + huart->hdmatx->XferCpltCallback = UART_DMATransmitCplt; + 800b9c0: 4918 ldr r1, [pc, #96] ; (800ba24 <HAL_UART_Transmit_DMA+0x94>) + 800b9c2: 62d1 str r1, [r2, #44] ; 0x2c + huart->hdmatx->XferHalfCpltCallback = UART_DMATxHalfCplt; + 800b9c4: 6fc2 ldr r2, [r0, #124] ; 0x7c + 800b9c6: 4918 ldr r1, [pc, #96] ; (800ba28 <HAL_UART_Transmit_DMA+0x98>) + 800b9c8: 6311 str r1, [r2, #48] ; 0x30 + huart->hdmatx->XferErrorCallback = UART_DMAError; + 800b9ca: 6fc2 ldr r2, [r0, #124] ; 0x7c + 800b9cc: 4917 ldr r1, [pc, #92] ; (800ba2c <HAL_UART_Transmit_DMA+0x9c>) + 800b9ce: 6351 str r1, [r2, #52] ; 0x34 + huart->hdmatx->XferAbortCallback = NULL; + 800b9d0: 6fc2 ldr r2, [r0, #124] ; 0x7c + 800b9d2: 2100 movs r1, #0 + 800b9d4: 6391 str r1, [r2, #56] ; 0x38 + if (HAL_DMA_Start_IT(huart->hdmatx, (uint32_t)huart->pTxBuffPtr, (uint32_t)&huart->Instance->TDR, Size) != HAL_OK) + 800b9d6: 6802 ldr r2, [r0, #0] + 800b9d8: 3228 adds r2, #40 ; 0x28 + 800b9da: 6d01 ldr r1, [r0, #80] ; 0x50 + 800b9dc: 6fc0 ldr r0, [r0, #124] ; 0x7c + 800b9de: f7fd fab3 bl 8008f48 <HAL_DMA_Start_IT> + 800b9e2: b138 cbz r0, 800b9f4 <HAL_UART_Transmit_DMA+0x64> + huart->ErrorCode = HAL_UART_ERROR_DMA; + 800b9e4: 2310 movs r3, #16 + 800b9e6: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + huart->gState = HAL_UART_STATE_READY; + 800b9ea: 2320 movs r3, #32 + 800b9ec: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + return HAL_ERROR; + 800b9f0: 2001 movs r0, #1 + 800b9f2: e00f b.n 800ba14 <HAL_UART_Transmit_DMA+0x84> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF); + 800b9f4: 6823 ldr r3, [r4, #0] + 800b9f6: 2240 movs r2, #64 ; 0x40 + 800b9f8: 621a str r2, [r3, #32] + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT); + 800b9fa: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800b9fc: f102 0308 add.w r3, r2, #8 + 800ba00: e853 3f00 ldrex r3, [r3] + 800ba04: f043 0380 orr.w r3, r3, #128 ; 0x80 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800ba08: 3208 adds r2, #8 + 800ba0a: e842 3100 strex r1, r3, [r2] + 800ba0e: 2900 cmp r1, #0 + 800ba10: d1f3 bne.n 800b9fa <HAL_UART_Transmit_DMA+0x6a> + return HAL_OK; + 800ba12: 2000 movs r0, #0 +} + 800ba14: bd10 pop {r4, pc} + return HAL_BUSY; + 800ba16: 2002 movs r0, #2 +} + 800ba18: 4770 bx lr + return HAL_ERROR; + 800ba1a: 2001 movs r0, #1 + 800ba1c: e7fa b.n 800ba14 <HAL_UART_Transmit_DMA+0x84> + 800ba1e: 2001 movs r0, #1 + 800ba20: e7f8 b.n 800ba14 <HAL_UART_Transmit_DMA+0x84> + 800ba22: bf00 nop + 800ba24: 0800ba31 .word 0x0800ba31 + 800ba28: 0800ba9f .word 0x0800ba9f + 800ba2c: 0800baab .word 0x0800baab + +0800ba30 <UART_DMATransmitCplt>: + * @brief DMA UART transmit process complete callback. + * @param hdma DMA handle. + * @retval None + */ +static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma) +{ + 800ba30: b508 push {r3, lr} + 800ba32: 4603 mov r3, r0 + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + 800ba34: 6a80 ldr r0, [r0, #40] ; 0x28 + + /* DMA Normal mode */ + if (HAL_IS_BIT_CLR(hdma->Instance->CCR, DMA_CCR_CIRC)) + 800ba36: 681b ldr r3, [r3, #0] + 800ba38: 681b ldr r3, [r3, #0] + 800ba3a: f013 0f20 tst.w r3, #32 + 800ba3e: d118 bne.n 800ba72 <UART_DMATransmitCplt+0x42> + { + huart->TxXferCount = 0U; + 800ba40: 2300 movs r3, #0 + 800ba42: f8a0 3056 strh.w r3, [r0, #86] ; 0x56 + + /* Disable the DMA transfer for transmit request by resetting the DMAT bit + in the UART CR3 register */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); + 800ba46: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800ba48: f102 0308 add.w r3, r2, #8 + 800ba4c: e853 3f00 ldrex r3, [r3] + 800ba50: f023 0380 bic.w r3, r3, #128 ; 0x80 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800ba54: 3208 adds r2, #8 + 800ba56: e842 3100 strex r1, r3, [r2] + 800ba5a: 2900 cmp r1, #0 + 800ba5c: d1f3 bne.n 800ba46 <UART_DMATransmitCplt+0x16> + + /* Enable the UART Transmit Complete Interrupt */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); + 800ba5e: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800ba60: e852 3f00 ldrex r3, [r2] + 800ba64: f043 0340 orr.w r3, r3, #64 ; 0x40 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800ba68: e842 3100 strex r1, r3, [r2] + 800ba6c: 2900 cmp r1, #0 + 800ba6e: d1f6 bne.n 800ba5e <UART_DMATransmitCplt+0x2e> +#else + /*Call legacy weak Tx complete callback*/ + HAL_UART_TxCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } +} + 800ba70: bd08 pop {r3, pc} + HAL_UART_TxCpltCallback(huart); + 800ba72: f7f7 fc4b bl 800330c <HAL_UART_TxCpltCallback> +} + 800ba76: e7fb b.n 800ba70 <UART_DMATransmitCplt+0x40> + +0800ba78 <UART_EndTransmit_IT>: + * @param huart pointer to a UART_HandleTypeDef structure that contains + * the configuration information for the specified UART module. + * @retval None + */ +static void UART_EndTransmit_IT(UART_HandleTypeDef *huart) +{ + 800ba78: b508 push {r3, lr} + /* Disable the UART Transmit Complete Interrupt */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE); + 800ba7a: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800ba7c: e852 3f00 ldrex r3, [r2] + 800ba80: f023 0340 bic.w r3, r3, #64 ; 0x40 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800ba84: e842 3100 strex r1, r3, [r2] + 800ba88: 2900 cmp r1, #0 + 800ba8a: d1f6 bne.n 800ba7a <UART_EndTransmit_IT+0x2> + + /* Tx process is ended, restore huart->gState to Ready */ + huart->gState = HAL_UART_STATE_READY; + 800ba8c: 2320 movs r3, #32 + 800ba8e: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + + /* Cleat TxISR function pointer */ + huart->TxISR = NULL; + 800ba92: 2300 movs r3, #0 + 800ba94: 6783 str r3, [r0, #120] ; 0x78 +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Tx complete callback*/ + huart->TxCpltCallback(huart); +#else + /*Call legacy weak Tx complete callback*/ + HAL_UART_TxCpltCallback(huart); + 800ba96: f7f7 fc39 bl 800330c <HAL_UART_TxCpltCallback> +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +} + 800ba9a: bd08 pop {r3, pc} + +0800ba9c <HAL_UART_TxHalfCpltCallback>: +} + 800ba9c: 4770 bx lr + +0800ba9e <UART_DMATxHalfCplt>: +{ + 800ba9e: b508 push {r3, lr} + HAL_UART_TxHalfCpltCallback(huart); + 800baa0: 6a80 ldr r0, [r0, #40] ; 0x28 + 800baa2: f7ff fffb bl 800ba9c <HAL_UART_TxHalfCpltCallback> +} + 800baa6: bd08 pop {r3, pc} + +0800baa8 <HAL_UART_ErrorCallback>: +} + 800baa8: 4770 bx lr + +0800baaa <UART_DMAError>: +{ + 800baaa: b538 push {r3, r4, r5, lr} + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + 800baac: 6a84 ldr r4, [r0, #40] ; 0x28 + const HAL_UART_StateTypeDef gstate = huart->gState; + 800baae: f8d4 2088 ldr.w r2, [r4, #136] ; 0x88 + const HAL_UART_StateTypeDef rxstate = huart->RxState; + 800bab2: f8d4 508c ldr.w r5, [r4, #140] ; 0x8c + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) && + 800bab6: 6823 ldr r3, [r4, #0] + 800bab8: 689b ldr r3, [r3, #8] + 800baba: f013 0f80 tst.w r3, #128 ; 0x80 + 800babe: d001 beq.n 800bac4 <UART_DMAError+0x1a> + 800bac0: 2a21 cmp r2, #33 ; 0x21 + 800bac2: d010 beq.n 800bae6 <UART_DMAError+0x3c> + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) && + 800bac4: 6823 ldr r3, [r4, #0] + 800bac6: 689b ldr r3, [r3, #8] + 800bac8: f013 0f40 tst.w r3, #64 ; 0x40 + 800bacc: d001 beq.n 800bad2 <UART_DMAError+0x28> + 800bace: 2d22 cmp r5, #34 ; 0x22 + 800bad0: d010 beq.n 800baf4 <UART_DMAError+0x4a> + huart->ErrorCode |= HAL_UART_ERROR_DMA; + 800bad2: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800bad6: f043 0310 orr.w r3, r3, #16 + 800bada: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + HAL_UART_ErrorCallback(huart); + 800bade: 4620 mov r0, r4 + 800bae0: f7ff ffe2 bl 800baa8 <HAL_UART_ErrorCallback> +} + 800bae4: bd38 pop {r3, r4, r5, pc} + huart->TxXferCount = 0U; + 800bae6: 2300 movs r3, #0 + 800bae8: f8a4 3056 strh.w r3, [r4, #86] ; 0x56 + UART_EndTxTransfer(huart); + 800baec: 4620 mov r0, r4 + 800baee: f7ff ff0b bl 800b908 <UART_EndTxTransfer> + 800baf2: e7e7 b.n 800bac4 <UART_DMAError+0x1a> + huart->RxXferCount = 0U; + 800baf4: 2300 movs r3, #0 + 800baf6: f8a4 305e strh.w r3, [r4, #94] ; 0x5e + UART_EndRxTransfer(huart); + 800bafa: 4620 mov r0, r4 + 800bafc: f7ff ff1d bl 800b93a <UART_EndRxTransfer> + 800bb00: e7e7 b.n 800bad2 <UART_DMAError+0x28> + +0800bb02 <UART_DMAAbortOnError>: +{ + 800bb02: b508 push {r3, lr} + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + 800bb04: 6a80 ldr r0, [r0, #40] ; 0x28 + huart->RxXferCount = 0U; + 800bb06: 2300 movs r3, #0 + 800bb08: f8a0 305e strh.w r3, [r0, #94] ; 0x5e + huart->TxXferCount = 0U; + 800bb0c: f8a0 3056 strh.w r3, [r0, #86] ; 0x56 + HAL_UART_ErrorCallback(huart); + 800bb10: f7ff ffca bl 800baa8 <HAL_UART_ErrorCallback> +} + 800bb14: bd08 pop {r3, pc} + +0800bb16 <HAL_UARTEx_RxEventCallback>: +} + 800bb16: 4770 bx lr + +0800bb18 <HAL_UART_IRQHandler>: +{ + 800bb18: b570 push {r4, r5, r6, lr} + 800bb1a: 4604 mov r4, r0 + uint32_t isrflags = READ_REG(huart->Instance->ISR); + 800bb1c: 6801 ldr r1, [r0, #0] + 800bb1e: 69cb ldr r3, [r1, #28] + uint32_t cr1its = READ_REG(huart->Instance->CR1); + 800bb20: 6808 ldr r0, [r1, #0] + uint32_t cr3its = READ_REG(huart->Instance->CR3); + 800bb22: 688d ldr r5, [r1, #8] + errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF)); + 800bb24: f640 020f movw r2, #2063 ; 0x80f + if (errorflags == 0U) + 800bb28: 401a ands r2, r3 + 800bb2a: d108 bne.n 800bb3e <HAL_UART_IRQHandler+0x26> + if (((isrflags & USART_ISR_RXNE_RXFNE) != 0U) + 800bb2c: f013 0f20 tst.w r3, #32 + 800bb30: d005 beq.n 800bb3e <HAL_UART_IRQHandler+0x26> + && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U) + 800bb32: f010 0f20 tst.w r0, #32 + 800bb36: d134 bne.n 800bba2 <HAL_UART_IRQHandler+0x8a> + || ((cr3its & USART_CR3_RXFTIE) != 0U))) + 800bb38: f015 5f80 tst.w r5, #268435456 ; 0x10000000 + 800bb3c: d131 bne.n 800bba2 <HAL_UART_IRQHandler+0x8a> + if ((errorflags != 0U) + 800bb3e: b12a cbz r2, 800bb4c <HAL_UART_IRQHandler+0x34> + && ((((cr3its & (USART_CR3_RXFTIE | USART_CR3_EIE)) != 0U) + 800bb40: 4a99 ldr r2, [pc, #612] ; (800bda8 <HAL_UART_IRQHandler+0x290>) + 800bb42: 402a ands r2, r5 + 800bb44: d133 bne.n 800bbae <HAL_UART_IRQHandler+0x96> + || ((cr1its & (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_RTOIE)) != 0U)))) + 800bb46: 4e99 ldr r6, [pc, #612] ; (800bdac <HAL_UART_IRQHandler+0x294>) + 800bb48: 4230 tst r0, r6 + 800bb4a: d130 bne.n 800bbae <HAL_UART_IRQHandler+0x96> + if ((huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + 800bb4c: 6ee2 ldr r2, [r4, #108] ; 0x6c + 800bb4e: 2a01 cmp r2, #1 + 800bb50: f000 80c6 beq.w 800bce0 <HAL_UART_IRQHandler+0x1c8> + if (((isrflags & USART_ISR_WUF) != 0U) && ((cr3its & USART_CR3_WUFIE) != 0U)) + 800bb54: f413 1f80 tst.w r3, #1048576 ; 0x100000 + 800bb58: d003 beq.n 800bb62 <HAL_UART_IRQHandler+0x4a> + 800bb5a: f415 0f80 tst.w r5, #4194304 ; 0x400000 + 800bb5e: f040 8165 bne.w 800be2c <HAL_UART_IRQHandler+0x314> + if (((isrflags & USART_ISR_TXE_TXFNF) != 0U) + 800bb62: f013 0f80 tst.w r3, #128 ; 0x80 + 800bb66: d007 beq.n 800bb78 <HAL_UART_IRQHandler+0x60> + && (((cr1its & USART_CR1_TXEIE_TXFNFIE) != 0U) + 800bb68: f010 0f80 tst.w r0, #128 ; 0x80 + 800bb6c: f040 8165 bne.w 800be3a <HAL_UART_IRQHandler+0x322> + || ((cr3its & USART_CR3_TXFTIE) != 0U))) + 800bb70: f415 0f00 tst.w r5, #8388608 ; 0x800000 + 800bb74: f040 8161 bne.w 800be3a <HAL_UART_IRQHandler+0x322> + if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U)) + 800bb78: f013 0f40 tst.w r3, #64 ; 0x40 + 800bb7c: d003 beq.n 800bb86 <HAL_UART_IRQHandler+0x6e> + 800bb7e: f010 0f40 tst.w r0, #64 ; 0x40 + 800bb82: f040 8161 bne.w 800be48 <HAL_UART_IRQHandler+0x330> + if (((isrflags & USART_ISR_TXFE) != 0U) && ((cr1its & USART_CR1_TXFEIE) != 0U)) + 800bb86: f413 0f00 tst.w r3, #8388608 ; 0x800000 + 800bb8a: d003 beq.n 800bb94 <HAL_UART_IRQHandler+0x7c> + 800bb8c: f010 4f80 tst.w r0, #1073741824 ; 0x40000000 + 800bb90: f040 815e bne.w 800be50 <HAL_UART_IRQHandler+0x338> + if (((isrflags & USART_ISR_RXFF) != 0U) && ((cr1its & USART_CR1_RXFFIE) != 0U)) + 800bb94: f013 7f80 tst.w r3, #16777216 ; 0x1000000 + 800bb98: d002 beq.n 800bba0 <HAL_UART_IRQHandler+0x88> + 800bb9a: 2800 cmp r0, #0 + 800bb9c: f2c0 815c blt.w 800be58 <HAL_UART_IRQHandler+0x340> +} + 800bba0: bd70 pop {r4, r5, r6, pc} + if (huart->RxISR != NULL) + 800bba2: 6f63 ldr r3, [r4, #116] ; 0x74 + 800bba4: 2b00 cmp r3, #0 + 800bba6: d0fb beq.n 800bba0 <HAL_UART_IRQHandler+0x88> + huart->RxISR(huart); + 800bba8: 4620 mov r0, r4 + 800bbaa: 4798 blx r3 + return; + 800bbac: e7f8 b.n 800bba0 <HAL_UART_IRQHandler+0x88> + if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U)) + 800bbae: f013 0f01 tst.w r3, #1 + 800bbb2: d009 beq.n 800bbc8 <HAL_UART_IRQHandler+0xb0> + 800bbb4: f410 7f80 tst.w r0, #256 ; 0x100 + 800bbb8: d006 beq.n 800bbc8 <HAL_UART_IRQHandler+0xb0> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF); + 800bbba: 2601 movs r6, #1 + 800bbbc: 620e str r6, [r1, #32] + huart->ErrorCode |= HAL_UART_ERROR_PE; + 800bbbe: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800bbc2: 4331 orrs r1, r6 + 800bbc4: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) + 800bbc8: f013 0f02 tst.w r3, #2 + 800bbcc: d00b beq.n 800bbe6 <HAL_UART_IRQHandler+0xce> + 800bbce: f015 0f01 tst.w r5, #1 + 800bbd2: d008 beq.n 800bbe6 <HAL_UART_IRQHandler+0xce> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF); + 800bbd4: 6821 ldr r1, [r4, #0] + 800bbd6: 2602 movs r6, #2 + 800bbd8: 620e str r6, [r1, #32] + huart->ErrorCode |= HAL_UART_ERROR_FE; + 800bbda: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800bbde: f041 0104 orr.w r1, r1, #4 + 800bbe2: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) + 800bbe6: f013 0f04 tst.w r3, #4 + 800bbea: d00b beq.n 800bc04 <HAL_UART_IRQHandler+0xec> + 800bbec: f015 0f01 tst.w r5, #1 + 800bbf0: d008 beq.n 800bc04 <HAL_UART_IRQHandler+0xec> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF); + 800bbf2: 6821 ldr r1, [r4, #0] + 800bbf4: 2604 movs r6, #4 + 800bbf6: 620e str r6, [r1, #32] + huart->ErrorCode |= HAL_UART_ERROR_NE; + 800bbf8: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800bbfc: f041 0102 orr.w r1, r1, #2 + 800bc00: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + if (((isrflags & USART_ISR_ORE) != 0U) + 800bc04: f013 0f08 tst.w r3, #8 + 800bc08: d00b beq.n 800bc22 <HAL_UART_IRQHandler+0x10a> + && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U) || + 800bc0a: f010 0f20 tst.w r0, #32 + 800bc0e: d100 bne.n 800bc12 <HAL_UART_IRQHandler+0xfa> + 800bc10: b13a cbz r2, 800bc22 <HAL_UART_IRQHandler+0x10a> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); + 800bc12: 6822 ldr r2, [r4, #0] + 800bc14: 2108 movs r1, #8 + 800bc16: 6211 str r1, [r2, #32] + huart->ErrorCode |= HAL_UART_ERROR_ORE; + 800bc18: f8d4 2090 ldr.w r2, [r4, #144] ; 0x90 + 800bc1c: 430a orrs r2, r1 + 800bc1e: f8c4 2090 str.w r2, [r4, #144] ; 0x90 + if (((isrflags & USART_ISR_RTOF) != 0U) && ((cr1its & USART_CR1_RTOIE) != 0U)) + 800bc22: f413 6f00 tst.w r3, #2048 ; 0x800 + 800bc26: d00c beq.n 800bc42 <HAL_UART_IRQHandler+0x12a> + 800bc28: f010 6f80 tst.w r0, #67108864 ; 0x4000000 + 800bc2c: d009 beq.n 800bc42 <HAL_UART_IRQHandler+0x12a> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); + 800bc2e: 6822 ldr r2, [r4, #0] + 800bc30: f44f 6100 mov.w r1, #2048 ; 0x800 + 800bc34: 6211 str r1, [r2, #32] + huart->ErrorCode |= HAL_UART_ERROR_RTO; + 800bc36: f8d4 2090 ldr.w r2, [r4, #144] ; 0x90 + 800bc3a: f042 0220 orr.w r2, r2, #32 + 800bc3e: f8c4 2090 str.w r2, [r4, #144] ; 0x90 + if (huart->ErrorCode != HAL_UART_ERROR_NONE) + 800bc42: f8d4 2090 ldr.w r2, [r4, #144] ; 0x90 + 800bc46: 2a00 cmp r2, #0 + 800bc48: d0aa beq.n 800bba0 <HAL_UART_IRQHandler+0x88> + if (((isrflags & USART_ISR_RXNE_RXFNE) != 0U) + 800bc4a: f013 0f20 tst.w r3, #32 + 800bc4e: d009 beq.n 800bc64 <HAL_UART_IRQHandler+0x14c> + && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U) + 800bc50: f010 0f20 tst.w r0, #32 + 800bc54: d102 bne.n 800bc5c <HAL_UART_IRQHandler+0x144> + || ((cr3its & USART_CR3_RXFTIE) != 0U))) + 800bc56: f015 5f80 tst.w r5, #268435456 ; 0x10000000 + 800bc5a: d003 beq.n 800bc64 <HAL_UART_IRQHandler+0x14c> + if (huart->RxISR != NULL) + 800bc5c: 6f63 ldr r3, [r4, #116] ; 0x74 + 800bc5e: b10b cbz r3, 800bc64 <HAL_UART_IRQHandler+0x14c> + huart->RxISR(huart); + 800bc60: 4620 mov r0, r4 + 800bc62: 4798 blx r3 + errorcode = huart->ErrorCode; + 800bc64: f8d4 2090 ldr.w r2, [r4, #144] ; 0x90 + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) || + 800bc68: 6823 ldr r3, [r4, #0] + 800bc6a: 689b ldr r3, [r3, #8] + 800bc6c: f013 0f40 tst.w r3, #64 ; 0x40 + 800bc70: d102 bne.n 800bc78 <HAL_UART_IRQHandler+0x160> + 800bc72: f012 0f28 tst.w r2, #40 ; 0x28 + 800bc76: d02c beq.n 800bcd2 <HAL_UART_IRQHandler+0x1ba> + UART_EndRxTransfer(huart); + 800bc78: 4620 mov r0, r4 + 800bc7a: f7ff fe5e bl 800b93a <UART_EndRxTransfer> + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) + 800bc7e: 6823 ldr r3, [r4, #0] + 800bc80: 689b ldr r3, [r3, #8] + 800bc82: f013 0f40 tst.w r3, #64 ; 0x40 + 800bc86: d020 beq.n 800bcca <HAL_UART_IRQHandler+0x1b2> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + 800bc88: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bc8a: f102 0308 add.w r3, r2, #8 + 800bc8e: e853 3f00 ldrex r3, [r3] + 800bc92: f023 0340 bic.w r3, r3, #64 ; 0x40 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bc96: 3208 adds r2, #8 + 800bc98: e842 3100 strex r1, r3, [r2] + 800bc9c: 2900 cmp r1, #0 + 800bc9e: d1f3 bne.n 800bc88 <HAL_UART_IRQHandler+0x170> + if (huart->hdmarx != NULL) + 800bca0: f8d4 3080 ldr.w r3, [r4, #128] ; 0x80 + 800bca4: b16b cbz r3, 800bcc2 <HAL_UART_IRQHandler+0x1aa> + huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError; + 800bca6: 4a42 ldr r2, [pc, #264] ; (800bdb0 <HAL_UART_IRQHandler+0x298>) + 800bca8: 639a str r2, [r3, #56] ; 0x38 + if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) + 800bcaa: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800bcae: f7fd f9d1 bl 8009054 <HAL_DMA_Abort_IT> + 800bcb2: 2800 cmp r0, #0 + 800bcb4: f43f af74 beq.w 800bba0 <HAL_UART_IRQHandler+0x88> + huart->hdmarx->XferAbortCallback(huart->hdmarx); + 800bcb8: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800bcbc: 6b83 ldr r3, [r0, #56] ; 0x38 + 800bcbe: 4798 blx r3 + 800bcc0: e76e b.n 800bba0 <HAL_UART_IRQHandler+0x88> + HAL_UART_ErrorCallback(huart); + 800bcc2: 4620 mov r0, r4 + 800bcc4: f7ff fef0 bl 800baa8 <HAL_UART_ErrorCallback> + 800bcc8: e76a b.n 800bba0 <HAL_UART_IRQHandler+0x88> + HAL_UART_ErrorCallback(huart); + 800bcca: 4620 mov r0, r4 + 800bccc: f7ff feec bl 800baa8 <HAL_UART_ErrorCallback> + 800bcd0: e766 b.n 800bba0 <HAL_UART_IRQHandler+0x88> + HAL_UART_ErrorCallback(huart); + 800bcd2: 4620 mov r0, r4 + 800bcd4: f7ff fee8 bl 800baa8 <HAL_UART_ErrorCallback> + huart->ErrorCode = HAL_UART_ERROR_NONE; + 800bcd8: 2300 movs r3, #0 + 800bcda: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + return; + 800bcde: e75f b.n 800bba0 <HAL_UART_IRQHandler+0x88> + && ((isrflags & USART_ISR_IDLE) != 0U) + 800bce0: f013 0f10 tst.w r3, #16 + 800bce4: f43f af36 beq.w 800bb54 <HAL_UART_IRQHandler+0x3c> + && ((cr1its & USART_ISR_IDLE) != 0U)) + 800bce8: f010 0f10 tst.w r0, #16 + 800bcec: f43f af32 beq.w 800bb54 <HAL_UART_IRQHandler+0x3c> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + 800bcf0: 2310 movs r3, #16 + 800bcf2: 620b str r3, [r1, #32] + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) + 800bcf4: 6823 ldr r3, [r4, #0] + 800bcf6: 689b ldr r3, [r3, #8] + 800bcf8: f013 0f40 tst.w r3, #64 ; 0x40 + 800bcfc: d05a beq.n 800bdb4 <HAL_UART_IRQHandler+0x29c> + uint16_t nb_remaining_rx_data = (uint16_t) __HAL_DMA_GET_COUNTER(huart->hdmarx); + 800bcfe: f8d4 2080 ldr.w r2, [r4, #128] ; 0x80 + 800bd02: 6813 ldr r3, [r2, #0] + 800bd04: 685b ldr r3, [r3, #4] + 800bd06: b29b uxth r3, r3 + if ((nb_remaining_rx_data > 0U) + 800bd08: 2b00 cmp r3, #0 + 800bd0a: f43f af49 beq.w 800bba0 <HAL_UART_IRQHandler+0x88> + && (nb_remaining_rx_data < huart->RxXferSize)) + 800bd0e: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800bd12: 4299 cmp r1, r3 + 800bd14: f67f af44 bls.w 800bba0 <HAL_UART_IRQHandler+0x88> + huart->RxXferCount = nb_remaining_rx_data; + 800bd18: f8a4 305e strh.w r3, [r4, #94] ; 0x5e + if (HAL_IS_BIT_CLR(huart->hdmarx->Instance->CCR, DMA_CCR_CIRC)) + 800bd1c: 6813 ldr r3, [r2, #0] + 800bd1e: 681b ldr r3, [r3, #0] + 800bd20: f013 0f20 tst.w r3, #32 + 800bd24: d132 bne.n 800bd8c <HAL_UART_IRQHandler+0x274> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); + 800bd26: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bd28: e852 3f00 ldrex r3, [r2] + 800bd2c: f423 7380 bic.w r3, r3, #256 ; 0x100 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bd30: e842 3100 strex r1, r3, [r2] + 800bd34: 2900 cmp r1, #0 + 800bd36: d1f6 bne.n 800bd26 <HAL_UART_IRQHandler+0x20e> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + 800bd38: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bd3a: f102 0308 add.w r3, r2, #8 + 800bd3e: e853 3f00 ldrex r3, [r3] + 800bd42: f023 0301 bic.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bd46: 3208 adds r2, #8 + 800bd48: e842 3100 strex r1, r3, [r2] + 800bd4c: 2900 cmp r1, #0 + 800bd4e: d1f3 bne.n 800bd38 <HAL_UART_IRQHandler+0x220> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + 800bd50: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bd52: f102 0308 add.w r3, r2, #8 + 800bd56: e853 3f00 ldrex r3, [r3] + 800bd5a: f023 0340 bic.w r3, r3, #64 ; 0x40 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bd5e: 3208 adds r2, #8 + 800bd60: e842 3100 strex r1, r3, [r2] + 800bd64: 2900 cmp r1, #0 + 800bd66: d1f3 bne.n 800bd50 <HAL_UART_IRQHandler+0x238> + huart->RxState = HAL_UART_STATE_READY; + 800bd68: 2320 movs r3, #32 + 800bd6a: f8c4 308c str.w r3, [r4, #140] ; 0x8c + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 800bd6e: 2300 movs r3, #0 + 800bd70: 66e3 str r3, [r4, #108] ; 0x6c + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + 800bd72: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bd74: e852 3f00 ldrex r3, [r2] + 800bd78: f023 0310 bic.w r3, r3, #16 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bd7c: e842 3100 strex r1, r3, [r2] + 800bd80: 2900 cmp r1, #0 + 800bd82: d1f6 bne.n 800bd72 <HAL_UART_IRQHandler+0x25a> + (void)HAL_DMA_Abort(huart->hdmarx); + 800bd84: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800bd88: f7fd f92a bl 8008fe0 <HAL_DMA_Abort> + huart->RxEventType = HAL_UART_RXEVENT_IDLE; + 800bd8c: 2302 movs r3, #2 + 800bd8e: 6723 str r3, [r4, #112] ; 0x70 + HAL_UARTEx_RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount)); + 800bd90: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800bd94: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800bd98: b29b uxth r3, r3 + 800bd9a: 1ac9 subs r1, r1, r3 + 800bd9c: b289 uxth r1, r1 + 800bd9e: 4620 mov r0, r4 + 800bda0: f7ff feb9 bl 800bb16 <HAL_UARTEx_RxEventCallback> + return; + 800bda4: e6fc b.n 800bba0 <HAL_UART_IRQHandler+0x88> + 800bda6: bf00 nop + 800bda8: 10000001 .word 0x10000001 + 800bdac: 04000120 .word 0x04000120 + 800bdb0: 0800bb03 .word 0x0800bb03 + uint16_t nb_rx_data = huart->RxXferSize - huart->RxXferCount; + 800bdb4: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800bdb8: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800bdbc: b29b uxth r3, r3 + 800bdbe: 1ac9 subs r1, r1, r3 + 800bdc0: b289 uxth r1, r1 + if ((huart->RxXferCount > 0U) + 800bdc2: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800bdc6: b29b uxth r3, r3 + 800bdc8: 2b00 cmp r3, #0 + 800bdca: f43f aee9 beq.w 800bba0 <HAL_UART_IRQHandler+0x88> + && (nb_rx_data > 0U)) + 800bdce: 2900 cmp r1, #0 + 800bdd0: f43f aee6 beq.w 800bba0 <HAL_UART_IRQHandler+0x88> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); + 800bdd4: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bdd6: e852 3f00 ldrex r3, [r2] + 800bdda: f423 7390 bic.w r3, r3, #288 ; 0x120 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bdde: e842 3000 strex r0, r3, [r2] + 800bde2: 2800 cmp r0, #0 + 800bde4: d1f6 bne.n 800bdd4 <HAL_UART_IRQHandler+0x2bc> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); + 800bde6: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bde8: f102 0308 add.w r3, r2, #8 + 800bdec: e853 3f00 ldrex r3, [r3] + 800bdf0: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 800bdf4: f023 0301 bic.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bdf8: 3208 adds r2, #8 + 800bdfa: e842 3000 strex r0, r3, [r2] + 800bdfe: 2800 cmp r0, #0 + 800be00: d1f1 bne.n 800bde6 <HAL_UART_IRQHandler+0x2ce> + huart->RxState = HAL_UART_STATE_READY; + 800be02: 2320 movs r3, #32 + 800be04: f8c4 308c str.w r3, [r4, #140] ; 0x8c + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 800be08: 2300 movs r3, #0 + 800be0a: 66e3 str r3, [r4, #108] ; 0x6c + huart->RxISR = NULL; + 800be0c: 6763 str r3, [r4, #116] ; 0x74 + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + 800be0e: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800be10: e852 3f00 ldrex r3, [r2] + 800be14: f023 0310 bic.w r3, r3, #16 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800be18: e842 3000 strex r0, r3, [r2] + 800be1c: 2800 cmp r0, #0 + 800be1e: d1f6 bne.n 800be0e <HAL_UART_IRQHandler+0x2f6> + huart->RxEventType = HAL_UART_RXEVENT_IDLE; + 800be20: 2302 movs r3, #2 + 800be22: 6723 str r3, [r4, #112] ; 0x70 + HAL_UARTEx_RxEventCallback(huart, nb_rx_data); + 800be24: 4620 mov r0, r4 + 800be26: f7ff fe76 bl 800bb16 <HAL_UARTEx_RxEventCallback> + return; + 800be2a: e6b9 b.n 800bba0 <HAL_UART_IRQHandler+0x88> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_WUF); + 800be2c: f44f 1380 mov.w r3, #1048576 ; 0x100000 + 800be30: 620b str r3, [r1, #32] + HAL_UARTEx_WakeupCallback(huart); + 800be32: 4620 mov r0, r4 + 800be34: f000 fe60 bl 800caf8 <HAL_UARTEx_WakeupCallback> + return; + 800be38: e6b2 b.n 800bba0 <HAL_UART_IRQHandler+0x88> + if (huart->TxISR != NULL) + 800be3a: 6fa3 ldr r3, [r4, #120] ; 0x78 + 800be3c: 2b00 cmp r3, #0 + 800be3e: f43f aeaf beq.w 800bba0 <HAL_UART_IRQHandler+0x88> + huart->TxISR(huart); + 800be42: 4620 mov r0, r4 + 800be44: 4798 blx r3 + return; + 800be46: e6ab b.n 800bba0 <HAL_UART_IRQHandler+0x88> + UART_EndTransmit_IT(huart); + 800be48: 4620 mov r0, r4 + 800be4a: f7ff fe15 bl 800ba78 <UART_EndTransmit_IT> + return; + 800be4e: e6a7 b.n 800bba0 <HAL_UART_IRQHandler+0x88> + HAL_UARTEx_TxFifoEmptyCallback(huart); + 800be50: 4620 mov r0, r4 + 800be52: f000 fe53 bl 800cafc <HAL_UARTEx_TxFifoEmptyCallback> + return; + 800be56: e6a3 b.n 800bba0 <HAL_UART_IRQHandler+0x88> + HAL_UARTEx_RxFifoFullCallback(huart); + 800be58: 4620 mov r0, r4 + 800be5a: f000 fe4e bl 800cafa <HAL_UARTEx_RxFifoFullCallback> + return; + 800be5e: e69f b.n 800bba0 <HAL_UART_IRQHandler+0x88> + +0800be60 <UART_RxISR_8BIT>: + * @brief RX interrupt handler for 7 or 8 bits data word length . + * @param huart UART handle. + * @retval None + */ +static void UART_RxISR_8BIT(UART_HandleTypeDef *huart) +{ + 800be60: b508 push {r3, lr} + uint16_t uhMask = huart->Mask; + 800be62: f8b0 3060 ldrh.w r3, [r0, #96] ; 0x60 + uint16_t uhdata; + + /* Check that a Rx process is ongoing */ + if (huart->RxState == HAL_UART_STATE_BUSY_RX) + 800be66: f8d0 208c ldr.w r2, [r0, #140] ; 0x8c + 800be6a: 2a22 cmp r2, #34 ; 0x22 + 800be6c: d005 beq.n 800be7a <UART_RxISR_8BIT+0x1a> + } + } + else + { + /* Clear RXNE interrupt flag */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + 800be6e: 6802 ldr r2, [r0, #0] + 800be70: 6993 ldr r3, [r2, #24] + 800be72: f043 0308 orr.w r3, r3, #8 + 800be76: 6193 str r3, [r2, #24] + } +} + 800be78: bd08 pop {r3, pc} + uhdata = (uint16_t) READ_REG(huart->Instance->RDR); + 800be7a: 6802 ldr r2, [r0, #0] + 800be7c: 6a51 ldr r1, [r2, #36] ; 0x24 + *huart->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); + 800be7e: b2db uxtb r3, r3 + 800be80: 6d82 ldr r2, [r0, #88] ; 0x58 + 800be82: 400b ands r3, r1 + 800be84: 7013 strb r3, [r2, #0] + huart->pRxBuffPtr++; + 800be86: 6d83 ldr r3, [r0, #88] ; 0x58 + 800be88: 3301 adds r3, #1 + 800be8a: 6583 str r3, [r0, #88] ; 0x58 + huart->RxXferCount--; + 800be8c: f8b0 305e ldrh.w r3, [r0, #94] ; 0x5e + 800be90: b29b uxth r3, r3 + 800be92: 3b01 subs r3, #1 + 800be94: b29b uxth r3, r3 + 800be96: f8a0 305e strh.w r3, [r0, #94] ; 0x5e + if (huart->RxXferCount == 0U) + 800be9a: f8b0 305e ldrh.w r3, [r0, #94] ; 0x5e + 800be9e: b29b uxth r3, r3 + 800bea0: 2b00 cmp r3, #0 + 800bea2: d1e9 bne.n 800be78 <UART_RxISR_8BIT+0x18> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); + 800bea4: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bea6: e852 3f00 ldrex r3, [r2] + 800beaa: f423 7390 bic.w r3, r3, #288 ; 0x120 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800beae: e842 3100 strex r1, r3, [r2] + 800beb2: 2900 cmp r1, #0 + 800beb4: d1f6 bne.n 800bea4 <UART_RxISR_8BIT+0x44> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + 800beb6: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800beb8: f102 0308 add.w r3, r2, #8 + 800bebc: e853 3f00 ldrex r3, [r3] + 800bec0: f023 0301 bic.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bec4: 3208 adds r2, #8 + 800bec6: e842 3100 strex r1, r3, [r2] + 800beca: 2900 cmp r1, #0 + 800becc: d1f3 bne.n 800beb6 <UART_RxISR_8BIT+0x56> + huart->RxState = HAL_UART_STATE_READY; + 800bece: 2320 movs r3, #32 + 800bed0: f8c0 308c str.w r3, [r0, #140] ; 0x8c + huart->RxISR = NULL; + 800bed4: 2300 movs r3, #0 + 800bed6: 6743 str r3, [r0, #116] ; 0x74 + huart->RxEventType = HAL_UART_RXEVENT_TC; + 800bed8: 6703 str r3, [r0, #112] ; 0x70 + if (!(IS_LPUART_INSTANCE(huart->Instance))) + 800beda: 6803 ldr r3, [r0, #0] + 800bedc: 4a16 ldr r2, [pc, #88] ; (800bf38 <UART_RxISR_8BIT+0xd8>) + 800bede: 4293 cmp r3, r2 + 800bee0: d00c beq.n 800befc <UART_RxISR_8BIT+0x9c> + if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U) + 800bee2: 685b ldr r3, [r3, #4] + 800bee4: f413 0f00 tst.w r3, #8388608 ; 0x800000 + 800bee8: d008 beq.n 800befc <UART_RxISR_8BIT+0x9c> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_RTOIE); + 800beea: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800beec: e852 3f00 ldrex r3, [r2] + 800bef0: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bef4: e842 3100 strex r1, r3, [r2] + 800bef8: 2900 cmp r1, #0 + 800befa: d1f6 bne.n 800beea <UART_RxISR_8BIT+0x8a> + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + 800befc: 6ec3 ldr r3, [r0, #108] ; 0x6c + 800befe: 2b01 cmp r3, #1 + 800bf00: d116 bne.n 800bf30 <UART_RxISR_8BIT+0xd0> + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 800bf02: 2300 movs r3, #0 + 800bf04: 66c3 str r3, [r0, #108] ; 0x6c + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + 800bf06: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bf08: e852 3f00 ldrex r3, [r2] + 800bf0c: f023 0310 bic.w r3, r3, #16 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bf10: e842 3100 strex r1, r3, [r2] + 800bf14: 2900 cmp r1, #0 + 800bf16: d1f6 bne.n 800bf06 <UART_RxISR_8BIT+0xa6> + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) + 800bf18: 6803 ldr r3, [r0, #0] + 800bf1a: 69da ldr r2, [r3, #28] + 800bf1c: f012 0f10 tst.w r2, #16 + 800bf20: d001 beq.n 800bf26 <UART_RxISR_8BIT+0xc6> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + 800bf22: 2210 movs r2, #16 + 800bf24: 621a str r2, [r3, #32] + HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); + 800bf26: f8b0 105c ldrh.w r1, [r0, #92] ; 0x5c + 800bf2a: f7ff fdf4 bl 800bb16 <HAL_UARTEx_RxEventCallback> + 800bf2e: e7a3 b.n 800be78 <UART_RxISR_8BIT+0x18> + HAL_UART_RxCpltCallback(huart); + 800bf30: f7f7 f9fc bl 800332c <HAL_UART_RxCpltCallback> + 800bf34: e7a0 b.n 800be78 <UART_RxISR_8BIT+0x18> + 800bf36: bf00 nop + 800bf38: 40008000 .word 0x40008000 + +0800bf3c <UART_RxISR_16BIT>: + * interruptions have been enabled by HAL_UART_Receive_IT() + * @param huart UART handle. + * @retval None + */ +static void UART_RxISR_16BIT(UART_HandleTypeDef *huart) +{ + 800bf3c: b508 push {r3, lr} + uint16_t *tmp; + uint16_t uhMask = huart->Mask; + 800bf3e: f8b0 2060 ldrh.w r2, [r0, #96] ; 0x60 + uint16_t uhdata; + + /* Check that a Rx process is ongoing */ + if (huart->RxState == HAL_UART_STATE_BUSY_RX) + 800bf42: f8d0 308c ldr.w r3, [r0, #140] ; 0x8c + 800bf46: 2b22 cmp r3, #34 ; 0x22 + 800bf48: d005 beq.n 800bf56 <UART_RxISR_16BIT+0x1a> + } + } + else + { + /* Clear RXNE interrupt flag */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + 800bf4a: 6802 ldr r2, [r0, #0] + 800bf4c: 6993 ldr r3, [r2, #24] + 800bf4e: f043 0308 orr.w r3, r3, #8 + 800bf52: 6193 str r3, [r2, #24] + } +} + 800bf54: bd08 pop {r3, pc} + uhdata = (uint16_t) READ_REG(huart->Instance->RDR); + 800bf56: 6803 ldr r3, [r0, #0] + 800bf58: 6a5b ldr r3, [r3, #36] ; 0x24 + tmp = (uint16_t *) huart->pRxBuffPtr ; + 800bf5a: 6d81 ldr r1, [r0, #88] ; 0x58 + *tmp = (uint16_t)(uhdata & uhMask); + 800bf5c: 4013 ands r3, r2 + 800bf5e: 800b strh r3, [r1, #0] + huart->pRxBuffPtr += 2U; + 800bf60: 6d83 ldr r3, [r0, #88] ; 0x58 + 800bf62: 3302 adds r3, #2 + 800bf64: 6583 str r3, [r0, #88] ; 0x58 + huart->RxXferCount--; + 800bf66: f8b0 305e ldrh.w r3, [r0, #94] ; 0x5e + 800bf6a: b29b uxth r3, r3 + 800bf6c: 3b01 subs r3, #1 + 800bf6e: b29b uxth r3, r3 + 800bf70: f8a0 305e strh.w r3, [r0, #94] ; 0x5e + if (huart->RxXferCount == 0U) + 800bf74: f8b0 305e ldrh.w r3, [r0, #94] ; 0x5e + 800bf78: b29b uxth r3, r3 + 800bf7a: 2b00 cmp r3, #0 + 800bf7c: d1ea bne.n 800bf54 <UART_RxISR_16BIT+0x18> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); + 800bf7e: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bf80: e852 3f00 ldrex r3, [r2] + 800bf84: f423 7390 bic.w r3, r3, #288 ; 0x120 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bf88: e842 3100 strex r1, r3, [r2] + 800bf8c: 2900 cmp r1, #0 + 800bf8e: d1f6 bne.n 800bf7e <UART_RxISR_16BIT+0x42> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + 800bf90: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bf92: f102 0308 add.w r3, r2, #8 + 800bf96: e853 3f00 ldrex r3, [r3] + 800bf9a: f023 0301 bic.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bf9e: 3208 adds r2, #8 + 800bfa0: e842 3100 strex r1, r3, [r2] + 800bfa4: 2900 cmp r1, #0 + 800bfa6: d1f3 bne.n 800bf90 <UART_RxISR_16BIT+0x54> + huart->RxState = HAL_UART_STATE_READY; + 800bfa8: 2320 movs r3, #32 + 800bfaa: f8c0 308c str.w r3, [r0, #140] ; 0x8c + huart->RxISR = NULL; + 800bfae: 2300 movs r3, #0 + 800bfb0: 6743 str r3, [r0, #116] ; 0x74 + huart->RxEventType = HAL_UART_RXEVENT_TC; + 800bfb2: 6703 str r3, [r0, #112] ; 0x70 + if (!(IS_LPUART_INSTANCE(huart->Instance))) + 800bfb4: 6803 ldr r3, [r0, #0] + 800bfb6: 4a16 ldr r2, [pc, #88] ; (800c010 <UART_RxISR_16BIT+0xd4>) + 800bfb8: 4293 cmp r3, r2 + 800bfba: d00c beq.n 800bfd6 <UART_RxISR_16BIT+0x9a> + if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U) + 800bfbc: 685b ldr r3, [r3, #4] + 800bfbe: f413 0f00 tst.w r3, #8388608 ; 0x800000 + 800bfc2: d008 beq.n 800bfd6 <UART_RxISR_16BIT+0x9a> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_RTOIE); + 800bfc4: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bfc6: e852 3f00 ldrex r3, [r2] + 800bfca: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bfce: e842 3100 strex r1, r3, [r2] + 800bfd2: 2900 cmp r1, #0 + 800bfd4: d1f6 bne.n 800bfc4 <UART_RxISR_16BIT+0x88> + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + 800bfd6: 6ec3 ldr r3, [r0, #108] ; 0x6c + 800bfd8: 2b01 cmp r3, #1 + 800bfda: d116 bne.n 800c00a <UART_RxISR_16BIT+0xce> + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 800bfdc: 2300 movs r3, #0 + 800bfde: 66c3 str r3, [r0, #108] ; 0x6c + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + 800bfe0: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800bfe2: e852 3f00 ldrex r3, [r2] + 800bfe6: f023 0310 bic.w r3, r3, #16 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800bfea: e842 3100 strex r1, r3, [r2] + 800bfee: 2900 cmp r1, #0 + 800bff0: d1f6 bne.n 800bfe0 <UART_RxISR_16BIT+0xa4> + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) + 800bff2: 6803 ldr r3, [r0, #0] + 800bff4: 69da ldr r2, [r3, #28] + 800bff6: f012 0f10 tst.w r2, #16 + 800bffa: d001 beq.n 800c000 <UART_RxISR_16BIT+0xc4> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + 800bffc: 2210 movs r2, #16 + 800bffe: 621a str r2, [r3, #32] + HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); + 800c000: f8b0 105c ldrh.w r1, [r0, #92] ; 0x5c + 800c004: f7ff fd87 bl 800bb16 <HAL_UARTEx_RxEventCallback> + 800c008: e7a4 b.n 800bf54 <UART_RxISR_16BIT+0x18> + HAL_UART_RxCpltCallback(huart); + 800c00a: f7f7 f98f bl 800332c <HAL_UART_RxCpltCallback> + 800c00e: e7a1 b.n 800bf54 <UART_RxISR_16BIT+0x18> + 800c010: 40008000 .word 0x40008000 + +0800c014 <UART_RxISR_8BIT_FIFOEN>: + * interruptions have been enabled by HAL_UART_Receive_IT() + * @param huart UART handle. + * @retval None + */ +static void UART_RxISR_8BIT_FIFOEN(UART_HandleTypeDef *huart) +{ + 800c014: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + uint16_t uhMask = huart->Mask; + 800c018: f8b0 6060 ldrh.w r6, [r0, #96] ; 0x60 + uint16_t uhdata; + uint16_t nb_rx_data; + uint16_t rxdatacount; + uint32_t isrflags = READ_REG(huart->Instance->ISR); + 800c01c: 6803 ldr r3, [r0, #0] + 800c01e: 69dd ldr r5, [r3, #28] + uint32_t cr1its = READ_REG(huart->Instance->CR1); + 800c020: f8d3 9000 ldr.w r9, [r3] + uint32_t cr3its = READ_REG(huart->Instance->CR3); + 800c024: f8d3 8008 ldr.w r8, [r3, #8] + + /* Check that a Rx process is ongoing */ + if (huart->RxState == HAL_UART_STATE_BUSY_RX) + 800c028: f8d0 208c ldr.w r2, [r0, #140] ; 0x8c + 800c02c: 2a22 cmp r2, #34 ; 0x22 + 800c02e: d005 beq.n 800c03c <UART_RxISR_8BIT_FIFOEN+0x28> + } + } + else + { + /* Clear RXNE interrupt flag */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + 800c030: 699a ldr r2, [r3, #24] + 800c032: f042 0208 orr.w r2, r2, #8 + 800c036: 619a str r2, [r3, #24] + } +} + 800c038: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 800c03c: 4604 mov r4, r0 + nb_rx_data = huart->NbRxDataToProcess; + 800c03e: f8b0 7068 ldrh.w r7, [r0, #104] ; 0x68 + while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U)) + 800c042: e008 b.n 800c056 <UART_RxISR_8BIT_FIFOEN+0x42> + if (huart->ErrorCode != HAL_UART_ERROR_NONE) + 800c044: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800c048: 2b00 cmp r3, #0 + 800c04a: d14c bne.n 800c0e6 <UART_RxISR_8BIT_FIFOEN+0xd2> + if (huart->RxXferCount == 0U) + 800c04c: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800c050: b29b uxth r3, r3 + 800c052: 2b00 cmp r3, #0 + 800c054: d04e beq.n 800c0f4 <UART_RxISR_8BIT_FIFOEN+0xe0> + while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U)) + 800c056: 2f00 cmp r7, #0 + 800c058: f000 809a beq.w 800c190 <UART_RxISR_8BIT_FIFOEN+0x17c> + 800c05c: f015 0f20 tst.w r5, #32 + 800c060: f000 8096 beq.w 800c190 <UART_RxISR_8BIT_FIFOEN+0x17c> + uhdata = (uint16_t) READ_REG(huart->Instance->RDR); + 800c064: 6823 ldr r3, [r4, #0] + 800c066: 6a59 ldr r1, [r3, #36] ; 0x24 + *huart->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); + 800c068: b2f3 uxtb r3, r6 + 800c06a: 6da2 ldr r2, [r4, #88] ; 0x58 + 800c06c: 400b ands r3, r1 + 800c06e: 7013 strb r3, [r2, #0] + huart->pRxBuffPtr++; + 800c070: 6da3 ldr r3, [r4, #88] ; 0x58 + 800c072: 3301 adds r3, #1 + 800c074: 65a3 str r3, [r4, #88] ; 0x58 + huart->RxXferCount--; + 800c076: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800c07a: b29b uxth r3, r3 + 800c07c: 3b01 subs r3, #1 + 800c07e: b29b uxth r3, r3 + 800c080: f8a4 305e strh.w r3, [r4, #94] ; 0x5e + isrflags = READ_REG(huart->Instance->ISR); + 800c084: 6823 ldr r3, [r4, #0] + 800c086: 69dd ldr r5, [r3, #28] + if ((isrflags & (USART_ISR_PE | USART_ISR_FE | USART_ISR_NE)) != 0U) + 800c088: f015 0f07 tst.w r5, #7 + 800c08c: d0de beq.n 800c04c <UART_RxISR_8BIT_FIFOEN+0x38> + if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U)) + 800c08e: f015 0f01 tst.w r5, #1 + 800c092: d009 beq.n 800c0a8 <UART_RxISR_8BIT_FIFOEN+0x94> + 800c094: f419 7f80 tst.w r9, #256 ; 0x100 + 800c098: d006 beq.n 800c0a8 <UART_RxISR_8BIT_FIFOEN+0x94> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF); + 800c09a: 2201 movs r2, #1 + 800c09c: 621a str r2, [r3, #32] + huart->ErrorCode |= HAL_UART_ERROR_PE; + 800c09e: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800c0a2: 4313 orrs r3, r2 + 800c0a4: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) + 800c0a8: f015 0f02 tst.w r5, #2 + 800c0ac: d00b beq.n 800c0c6 <UART_RxISR_8BIT_FIFOEN+0xb2> + 800c0ae: f018 0f01 tst.w r8, #1 + 800c0b2: d008 beq.n 800c0c6 <UART_RxISR_8BIT_FIFOEN+0xb2> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF); + 800c0b4: 6823 ldr r3, [r4, #0] + 800c0b6: 2202 movs r2, #2 + 800c0b8: 621a str r2, [r3, #32] + huart->ErrorCode |= HAL_UART_ERROR_FE; + 800c0ba: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800c0be: f043 0304 orr.w r3, r3, #4 + 800c0c2: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) + 800c0c6: f015 0f04 tst.w r5, #4 + 800c0ca: d0bb beq.n 800c044 <UART_RxISR_8BIT_FIFOEN+0x30> + 800c0cc: f018 0f01 tst.w r8, #1 + 800c0d0: d0b8 beq.n 800c044 <UART_RxISR_8BIT_FIFOEN+0x30> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF); + 800c0d2: 6823 ldr r3, [r4, #0] + 800c0d4: 2204 movs r2, #4 + 800c0d6: 621a str r2, [r3, #32] + huart->ErrorCode |= HAL_UART_ERROR_NE; + 800c0d8: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800c0dc: f043 0302 orr.w r3, r3, #2 + 800c0e0: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800c0e4: e7ae b.n 800c044 <UART_RxISR_8BIT_FIFOEN+0x30> + HAL_UART_ErrorCallback(huart); + 800c0e6: 4620 mov r0, r4 + 800c0e8: f7ff fcde bl 800baa8 <HAL_UART_ErrorCallback> + huart->ErrorCode = HAL_UART_ERROR_NONE; + 800c0ec: 2300 movs r3, #0 + 800c0ee: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800c0f2: e7ab b.n 800c04c <UART_RxISR_8BIT_FIFOEN+0x38> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); + 800c0f4: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c0f6: e852 3f00 ldrex r3, [r2] + 800c0fa: f423 7380 bic.w r3, r3, #256 ; 0x100 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c0fe: e842 3100 strex r1, r3, [r2] + 800c102: 2900 cmp r1, #0 + 800c104: d1f6 bne.n 800c0f4 <UART_RxISR_8BIT_FIFOEN+0xe0> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); + 800c106: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c108: f102 0308 add.w r3, r2, #8 + 800c10c: e853 3f00 ldrex r3, [r3] + 800c110: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 800c114: f023 0301 bic.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c118: 3208 adds r2, #8 + 800c11a: e842 3100 strex r1, r3, [r2] + 800c11e: 2900 cmp r1, #0 + 800c120: d1f1 bne.n 800c106 <UART_RxISR_8BIT_FIFOEN+0xf2> + huart->RxState = HAL_UART_STATE_READY; + 800c122: 2320 movs r3, #32 + 800c124: f8c4 308c str.w r3, [r4, #140] ; 0x8c + huart->RxISR = NULL; + 800c128: 2300 movs r3, #0 + 800c12a: 6763 str r3, [r4, #116] ; 0x74 + huart->RxEventType = HAL_UART_RXEVENT_TC; + 800c12c: 6723 str r3, [r4, #112] ; 0x70 + if (!(IS_LPUART_INSTANCE(huart->Instance))) + 800c12e: 6823 ldr r3, [r4, #0] + 800c130: 4a29 ldr r2, [pc, #164] ; (800c1d8 <UART_RxISR_8BIT_FIFOEN+0x1c4>) + 800c132: 4293 cmp r3, r2 + 800c134: d003 beq.n 800c13e <UART_RxISR_8BIT_FIFOEN+0x12a> + if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U) + 800c136: 685b ldr r3, [r3, #4] + 800c138: f413 0f00 tst.w r3, #8388608 ; 0x800000 + 800c13c: d106 bne.n 800c14c <UART_RxISR_8BIT_FIFOEN+0x138> + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + 800c13e: 6ee3 ldr r3, [r4, #108] ; 0x6c + 800c140: 2b01 cmp r3, #1 + 800c142: d00d beq.n 800c160 <UART_RxISR_8BIT_FIFOEN+0x14c> + HAL_UART_RxCpltCallback(huart); + 800c144: 4620 mov r0, r4 + 800c146: f7f7 f8f1 bl 800332c <HAL_UART_RxCpltCallback> + 800c14a: e784 b.n 800c056 <UART_RxISR_8BIT_FIFOEN+0x42> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_RTOIE); + 800c14c: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c14e: e852 3f00 ldrex r3, [r2] + 800c152: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c156: e842 3100 strex r1, r3, [r2] + 800c15a: 2900 cmp r1, #0 + 800c15c: d1f6 bne.n 800c14c <UART_RxISR_8BIT_FIFOEN+0x138> + 800c15e: e7ee b.n 800c13e <UART_RxISR_8BIT_FIFOEN+0x12a> + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 800c160: 2300 movs r3, #0 + 800c162: 66e3 str r3, [r4, #108] ; 0x6c + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + 800c164: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c166: e852 3f00 ldrex r3, [r2] + 800c16a: f023 0310 bic.w r3, r3, #16 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c16e: e842 3100 strex r1, r3, [r2] + 800c172: 2900 cmp r1, #0 + 800c174: d1f6 bne.n 800c164 <UART_RxISR_8BIT_FIFOEN+0x150> + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) + 800c176: 6823 ldr r3, [r4, #0] + 800c178: 69da ldr r2, [r3, #28] + 800c17a: f012 0f10 tst.w r2, #16 + 800c17e: d001 beq.n 800c184 <UART_RxISR_8BIT_FIFOEN+0x170> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + 800c180: 2210 movs r2, #16 + 800c182: 621a str r2, [r3, #32] + HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); + 800c184: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800c188: 4620 mov r0, r4 + 800c18a: f7ff fcc4 bl 800bb16 <HAL_UARTEx_RxEventCallback> + 800c18e: e762 b.n 800c056 <UART_RxISR_8BIT_FIFOEN+0x42> + rxdatacount = huart->RxXferCount; + 800c190: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800c194: b29b uxth r3, r3 + if ((rxdatacount != 0U) && (rxdatacount < huart->NbRxDataToProcess)) + 800c196: 2b00 cmp r3, #0 + 800c198: f43f af4e beq.w 800c038 <UART_RxISR_8BIT_FIFOEN+0x24> + 800c19c: f8b4 2068 ldrh.w r2, [r4, #104] ; 0x68 + 800c1a0: 429a cmp r2, r3 + 800c1a2: f67f af49 bls.w 800c038 <UART_RxISR_8BIT_FIFOEN+0x24> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_RXFTIE); + 800c1a6: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c1a8: f102 0308 add.w r3, r2, #8 + 800c1ac: e853 3f00 ldrex r3, [r3] + 800c1b0: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c1b4: 3208 adds r2, #8 + 800c1b6: e842 3100 strex r1, r3, [r2] + 800c1ba: 2900 cmp r1, #0 + 800c1bc: d1f3 bne.n 800c1a6 <UART_RxISR_8BIT_FIFOEN+0x192> + huart->RxISR = UART_RxISR_8BIT; + 800c1be: 4b07 ldr r3, [pc, #28] ; (800c1dc <UART_RxISR_8BIT_FIFOEN+0x1c8>) + 800c1c0: 6763 str r3, [r4, #116] ; 0x74 + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); + 800c1c2: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c1c4: e852 3f00 ldrex r3, [r2] + 800c1c8: f043 0320 orr.w r3, r3, #32 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c1cc: e842 3100 strex r1, r3, [r2] + 800c1d0: 2900 cmp r1, #0 + 800c1d2: d1f6 bne.n 800c1c2 <UART_RxISR_8BIT_FIFOEN+0x1ae> + 800c1d4: e730 b.n 800c038 <UART_RxISR_8BIT_FIFOEN+0x24> + 800c1d6: bf00 nop + 800c1d8: 40008000 .word 0x40008000 + 800c1dc: 0800be61 .word 0x0800be61 + +0800c1e0 <UART_RxISR_16BIT_FIFOEN>: + * interruptions have been enabled by HAL_UART_Receive_IT() + * @param huart UART handle. + * @retval None + */ +static void UART_RxISR_16BIT_FIFOEN(UART_HandleTypeDef *huart) +{ + 800c1e0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + uint16_t *tmp; + uint16_t uhMask = huart->Mask; + 800c1e4: f8b0 6060 ldrh.w r6, [r0, #96] ; 0x60 + uint16_t uhdata; + uint16_t nb_rx_data; + uint16_t rxdatacount; + uint32_t isrflags = READ_REG(huart->Instance->ISR); + 800c1e8: 6803 ldr r3, [r0, #0] + 800c1ea: 69dd ldr r5, [r3, #28] + uint32_t cr1its = READ_REG(huart->Instance->CR1); + 800c1ec: f8d3 9000 ldr.w r9, [r3] + uint32_t cr3its = READ_REG(huart->Instance->CR3); + 800c1f0: f8d3 8008 ldr.w r8, [r3, #8] + + /* Check that a Rx process is ongoing */ + if (huart->RxState == HAL_UART_STATE_BUSY_RX) + 800c1f4: f8d0 208c ldr.w r2, [r0, #140] ; 0x8c + 800c1f8: 2a22 cmp r2, #34 ; 0x22 + 800c1fa: d005 beq.n 800c208 <UART_RxISR_16BIT_FIFOEN+0x28> + } + } + else + { + /* Clear RXNE interrupt flag */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + 800c1fc: 699a ldr r2, [r3, #24] + 800c1fe: f042 0208 orr.w r2, r2, #8 + 800c202: 619a str r2, [r3, #24] + } +} + 800c204: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 800c208: 4604 mov r4, r0 + nb_rx_data = huart->NbRxDataToProcess; + 800c20a: f8b0 7068 ldrh.w r7, [r0, #104] ; 0x68 + while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U)) + 800c20e: e008 b.n 800c222 <UART_RxISR_16BIT_FIFOEN+0x42> + if (huart->ErrorCode != HAL_UART_ERROR_NONE) + 800c210: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800c214: 2b00 cmp r3, #0 + 800c216: d14b bne.n 800c2b0 <UART_RxISR_16BIT_FIFOEN+0xd0> + if (huart->RxXferCount == 0U) + 800c218: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800c21c: b29b uxth r3, r3 + 800c21e: 2b00 cmp r3, #0 + 800c220: d04d beq.n 800c2be <UART_RxISR_16BIT_FIFOEN+0xde> + while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U)) + 800c222: 2f00 cmp r7, #0 + 800c224: f000 8099 beq.w 800c35a <UART_RxISR_16BIT_FIFOEN+0x17a> + 800c228: f015 0f20 tst.w r5, #32 + 800c22c: f000 8095 beq.w 800c35a <UART_RxISR_16BIT_FIFOEN+0x17a> + uhdata = (uint16_t) READ_REG(huart->Instance->RDR); + 800c230: 6823 ldr r3, [r4, #0] + 800c232: 6a5b ldr r3, [r3, #36] ; 0x24 + tmp = (uint16_t *) huart->pRxBuffPtr ; + 800c234: 6da2 ldr r2, [r4, #88] ; 0x58 + *tmp = (uint16_t)(uhdata & uhMask); + 800c236: 4033 ands r3, r6 + 800c238: 8013 strh r3, [r2, #0] + huart->pRxBuffPtr += 2U; + 800c23a: 6da3 ldr r3, [r4, #88] ; 0x58 + 800c23c: 3302 adds r3, #2 + 800c23e: 65a3 str r3, [r4, #88] ; 0x58 + huart->RxXferCount--; + 800c240: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800c244: b29b uxth r3, r3 + 800c246: 3b01 subs r3, #1 + 800c248: b29b uxth r3, r3 + 800c24a: f8a4 305e strh.w r3, [r4, #94] ; 0x5e + isrflags = READ_REG(huart->Instance->ISR); + 800c24e: 6823 ldr r3, [r4, #0] + 800c250: 69dd ldr r5, [r3, #28] + if ((isrflags & (USART_ISR_PE | USART_ISR_FE | USART_ISR_NE)) != 0U) + 800c252: f015 0f07 tst.w r5, #7 + 800c256: d0df beq.n 800c218 <UART_RxISR_16BIT_FIFOEN+0x38> + if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U)) + 800c258: f015 0f01 tst.w r5, #1 + 800c25c: d009 beq.n 800c272 <UART_RxISR_16BIT_FIFOEN+0x92> + 800c25e: f419 7f80 tst.w r9, #256 ; 0x100 + 800c262: d006 beq.n 800c272 <UART_RxISR_16BIT_FIFOEN+0x92> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF); + 800c264: 2201 movs r2, #1 + 800c266: 621a str r2, [r3, #32] + huart->ErrorCode |= HAL_UART_ERROR_PE; + 800c268: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800c26c: 4313 orrs r3, r2 + 800c26e: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) + 800c272: f015 0f02 tst.w r5, #2 + 800c276: d00b beq.n 800c290 <UART_RxISR_16BIT_FIFOEN+0xb0> + 800c278: f018 0f01 tst.w r8, #1 + 800c27c: d008 beq.n 800c290 <UART_RxISR_16BIT_FIFOEN+0xb0> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF); + 800c27e: 6823 ldr r3, [r4, #0] + 800c280: 2202 movs r2, #2 + 800c282: 621a str r2, [r3, #32] + huart->ErrorCode |= HAL_UART_ERROR_FE; + 800c284: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800c288: f043 0304 orr.w r3, r3, #4 + 800c28c: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) + 800c290: f015 0f04 tst.w r5, #4 + 800c294: d0bc beq.n 800c210 <UART_RxISR_16BIT_FIFOEN+0x30> + 800c296: f018 0f01 tst.w r8, #1 + 800c29a: d0b9 beq.n 800c210 <UART_RxISR_16BIT_FIFOEN+0x30> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF); + 800c29c: 6823 ldr r3, [r4, #0] + 800c29e: 2204 movs r2, #4 + 800c2a0: 621a str r2, [r3, #32] + huart->ErrorCode |= HAL_UART_ERROR_NE; + 800c2a2: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800c2a6: f043 0302 orr.w r3, r3, #2 + 800c2aa: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800c2ae: e7af b.n 800c210 <UART_RxISR_16BIT_FIFOEN+0x30> + HAL_UART_ErrorCallback(huart); + 800c2b0: 4620 mov r0, r4 + 800c2b2: f7ff fbf9 bl 800baa8 <HAL_UART_ErrorCallback> + huart->ErrorCode = HAL_UART_ERROR_NONE; + 800c2b6: 2300 movs r3, #0 + 800c2b8: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800c2bc: e7ac b.n 800c218 <UART_RxISR_16BIT_FIFOEN+0x38> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); + 800c2be: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c2c0: e852 3f00 ldrex r3, [r2] + 800c2c4: f423 7380 bic.w r3, r3, #256 ; 0x100 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c2c8: e842 3100 strex r1, r3, [r2] + 800c2cc: 2900 cmp r1, #0 + 800c2ce: d1f6 bne.n 800c2be <UART_RxISR_16BIT_FIFOEN+0xde> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); + 800c2d0: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c2d2: f102 0308 add.w r3, r2, #8 + 800c2d6: e853 3f00 ldrex r3, [r3] + 800c2da: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 800c2de: f023 0301 bic.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c2e2: 3208 adds r2, #8 + 800c2e4: e842 3100 strex r1, r3, [r2] + 800c2e8: 2900 cmp r1, #0 + 800c2ea: d1f1 bne.n 800c2d0 <UART_RxISR_16BIT_FIFOEN+0xf0> + huart->RxState = HAL_UART_STATE_READY; + 800c2ec: 2320 movs r3, #32 + 800c2ee: f8c4 308c str.w r3, [r4, #140] ; 0x8c + huart->RxISR = NULL; + 800c2f2: 2300 movs r3, #0 + 800c2f4: 6763 str r3, [r4, #116] ; 0x74 + huart->RxEventType = HAL_UART_RXEVENT_TC; + 800c2f6: 6723 str r3, [r4, #112] ; 0x70 + if (!(IS_LPUART_INSTANCE(huart->Instance))) + 800c2f8: 6823 ldr r3, [r4, #0] + 800c2fa: 4a29 ldr r2, [pc, #164] ; (800c3a0 <UART_RxISR_16BIT_FIFOEN+0x1c0>) + 800c2fc: 4293 cmp r3, r2 + 800c2fe: d003 beq.n 800c308 <UART_RxISR_16BIT_FIFOEN+0x128> + if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U) + 800c300: 685b ldr r3, [r3, #4] + 800c302: f413 0f00 tst.w r3, #8388608 ; 0x800000 + 800c306: d106 bne.n 800c316 <UART_RxISR_16BIT_FIFOEN+0x136> + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + 800c308: 6ee3 ldr r3, [r4, #108] ; 0x6c + 800c30a: 2b01 cmp r3, #1 + 800c30c: d00d beq.n 800c32a <UART_RxISR_16BIT_FIFOEN+0x14a> + HAL_UART_RxCpltCallback(huart); + 800c30e: 4620 mov r0, r4 + 800c310: f7f7 f80c bl 800332c <HAL_UART_RxCpltCallback> + 800c314: e785 b.n 800c222 <UART_RxISR_16BIT_FIFOEN+0x42> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_RTOIE); + 800c316: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c318: e852 3f00 ldrex r3, [r2] + 800c31c: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c320: e842 3100 strex r1, r3, [r2] + 800c324: 2900 cmp r1, #0 + 800c326: d1f6 bne.n 800c316 <UART_RxISR_16BIT_FIFOEN+0x136> + 800c328: e7ee b.n 800c308 <UART_RxISR_16BIT_FIFOEN+0x128> + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 800c32a: 2300 movs r3, #0 + 800c32c: 66e3 str r3, [r4, #108] ; 0x6c + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + 800c32e: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c330: e852 3f00 ldrex r3, [r2] + 800c334: f023 0310 bic.w r3, r3, #16 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c338: e842 3100 strex r1, r3, [r2] + 800c33c: 2900 cmp r1, #0 + 800c33e: d1f6 bne.n 800c32e <UART_RxISR_16BIT_FIFOEN+0x14e> + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) + 800c340: 6823 ldr r3, [r4, #0] + 800c342: 69da ldr r2, [r3, #28] + 800c344: f012 0f10 tst.w r2, #16 + 800c348: d001 beq.n 800c34e <UART_RxISR_16BIT_FIFOEN+0x16e> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + 800c34a: 2210 movs r2, #16 + 800c34c: 621a str r2, [r3, #32] + HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); + 800c34e: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800c352: 4620 mov r0, r4 + 800c354: f7ff fbdf bl 800bb16 <HAL_UARTEx_RxEventCallback> + 800c358: e763 b.n 800c222 <UART_RxISR_16BIT_FIFOEN+0x42> + rxdatacount = huart->RxXferCount; + 800c35a: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800c35e: b29b uxth r3, r3 + if ((rxdatacount != 0U) && (rxdatacount < huart->NbRxDataToProcess)) + 800c360: 2b00 cmp r3, #0 + 800c362: f43f af4f beq.w 800c204 <UART_RxISR_16BIT_FIFOEN+0x24> + 800c366: f8b4 2068 ldrh.w r2, [r4, #104] ; 0x68 + 800c36a: 429a cmp r2, r3 + 800c36c: f67f af4a bls.w 800c204 <UART_RxISR_16BIT_FIFOEN+0x24> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_RXFTIE); + 800c370: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c372: f102 0308 add.w r3, r2, #8 + 800c376: e853 3f00 ldrex r3, [r3] + 800c37a: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c37e: 3208 adds r2, #8 + 800c380: e842 3100 strex r1, r3, [r2] + 800c384: 2900 cmp r1, #0 + 800c386: d1f3 bne.n 800c370 <UART_RxISR_16BIT_FIFOEN+0x190> + huart->RxISR = UART_RxISR_16BIT; + 800c388: 4b06 ldr r3, [pc, #24] ; (800c3a4 <UART_RxISR_16BIT_FIFOEN+0x1c4>) + 800c38a: 6763 str r3, [r4, #116] ; 0x74 + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); + 800c38c: 6822 ldr r2, [r4, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c38e: e852 3f00 ldrex r3, [r2] + 800c392: f043 0320 orr.w r3, r3, #32 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c396: e842 3100 strex r1, r3, [r2] + 800c39a: 2900 cmp r1, #0 + 800c39c: d1f6 bne.n 800c38c <UART_RxISR_16BIT_FIFOEN+0x1ac> + 800c39e: e731 b.n 800c204 <UART_RxISR_16BIT_FIFOEN+0x24> + 800c3a0: 40008000 .word 0x40008000 + 800c3a4: 0800bf3d .word 0x0800bf3d + +0800c3a8 <UART_SetConfig>: +{ + 800c3a8: b570 push {r4, r5, r6, lr} + 800c3aa: 4604 mov r4, r0 + if (UART_INSTANCE_LOWPOWER(huart)) + 800c3ac: 6801 ldr r1, [r0, #0] + tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ; + 800c3ae: 6883 ldr r3, [r0, #8] + 800c3b0: 6902 ldr r2, [r0, #16] + 800c3b2: 4313 orrs r3, r2 + 800c3b4: 6942 ldr r2, [r0, #20] + 800c3b6: 4313 orrs r3, r2 + 800c3b8: 69c2 ldr r2, [r0, #28] + 800c3ba: 4313 orrs r3, r2 + MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg); + 800c3bc: 6808 ldr r0, [r1, #0] + 800c3be: 4a9d ldr r2, [pc, #628] ; (800c634 <UART_SetConfig+0x28c>) + 800c3c0: 4002 ands r2, r0 + 800c3c2: 431a orrs r2, r3 + 800c3c4: 600a str r2, [r1, #0] + MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits); + 800c3c6: 6822 ldr r2, [r4, #0] + 800c3c8: 6853 ldr r3, [r2, #4] + 800c3ca: f423 5340 bic.w r3, r3, #12288 ; 0x3000 + 800c3ce: 68e1 ldr r1, [r4, #12] + 800c3d0: 430b orrs r3, r1 + 800c3d2: 6053 str r3, [r2, #4] + tmpreg = (uint32_t)huart->Init.HwFlowCtl; + 800c3d4: 69a1 ldr r1, [r4, #24] + if (!(UART_INSTANCE_LOWPOWER(huart))) + 800c3d6: 6822 ldr r2, [r4, #0] + 800c3d8: 4b97 ldr r3, [pc, #604] ; (800c638 <UART_SetConfig+0x290>) + 800c3da: 429a cmp r2, r3 + 800c3dc: d001 beq.n 800c3e2 <UART_SetConfig+0x3a> + tmpreg |= huart->Init.OneBitSampling; + 800c3de: 6a23 ldr r3, [r4, #32] + 800c3e0: 4319 orrs r1, r3 + MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg); + 800c3e2: 6893 ldr r3, [r2, #8] + 800c3e4: f023 436e bic.w r3, r3, #3992977408 ; 0xee000000 + 800c3e8: f423 6330 bic.w r3, r3, #2816 ; 0xb00 + 800c3ec: 430b orrs r3, r1 + 800c3ee: 6093 str r3, [r2, #8] + MODIFY_REG(huart->Instance->PRESC, USART_PRESC_PRESCALER, huart->Init.ClockPrescaler); + 800c3f0: 6822 ldr r2, [r4, #0] + 800c3f2: 6ad3 ldr r3, [r2, #44] ; 0x2c + 800c3f4: f023 030f bic.w r3, r3, #15 + 800c3f8: 6a61 ldr r1, [r4, #36] ; 0x24 + 800c3fa: 430b orrs r3, r1 + 800c3fc: 62d3 str r3, [r2, #44] ; 0x2c + UART_GETCLOCKSOURCE(huart, clocksource); + 800c3fe: 6823 ldr r3, [r4, #0] + 800c400: 4a8e ldr r2, [pc, #568] ; (800c63c <UART_SetConfig+0x294>) + 800c402: 4293 cmp r3, r2 + 800c404: d01c beq.n 800c440 <UART_SetConfig+0x98> + 800c406: 4a8e ldr r2, [pc, #568] ; (800c640 <UART_SetConfig+0x298>) + 800c408: 4293 cmp r3, r2 + 800c40a: d031 beq.n 800c470 <UART_SetConfig+0xc8> + 800c40c: 4a8a ldr r2, [pc, #552] ; (800c638 <UART_SetConfig+0x290>) + 800c40e: 4293 cmp r3, r2 + 800c410: d04b beq.n 800c4aa <UART_SetConfig+0x102> + 800c412: 2210 movs r2, #16 + if (UART_INSTANCE_LOWPOWER(huart)) + 800c414: 4988 ldr r1, [pc, #544] ; (800c638 <UART_SetConfig+0x290>) + 800c416: 428b cmp r3, r1 + 800c418: d068 beq.n 800c4ec <UART_SetConfig+0x144> + else if (huart->Init.OverSampling == UART_OVERSAMPLING_8) + 800c41a: 69e0 ldr r0, [r4, #28] + 800c41c: f5b0 4f00 cmp.w r0, #32768 ; 0x8000 + 800c420: f000 80a5 beq.w 800c56e <UART_SetConfig+0x1c6> + switch (clocksource) + 800c424: 2a08 cmp r2, #8 + 800c426: f200 811f bhi.w 800c668 <UART_SetConfig+0x2c0> + 800c42a: e8df f012 tbh [pc, r2, lsl #1] + 800c42e: 00d3 .short 0x00d3 + 800c430: 00d100f5 .word 0x00d100f5 + 800c434: 00f8011d .word 0x00f8011d + 800c438: 011d011d .word 0x011d011d + 800c43c: 00fb011d .word 0x00fb011d + return (uint32_t)(READ_BIT(RCC->CCIPR, USARTx) | (USARTx << 16)); + 800c440: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800c444: f8d2 2088 ldr.w r2, [r2, #136] ; 0x88 + 800c448: f002 0203 and.w r2, r2, #3 + 800c44c: f442 3240 orr.w r2, r2, #196608 ; 0x30000 + UART_GETCLOCKSOURCE(huart, clocksource); + 800c450: f5a2 3240 sub.w r2, r2, #196608 ; 0x30000 + 800c454: 2a03 cmp r2, #3 + 800c456: d809 bhi.n 800c46c <UART_SetConfig+0xc4> + 800c458: e8df f002 tbb [pc, r2] + 800c45c: 063c0402 .word 0x063c0402 + 800c460: 2201 movs r2, #1 + 800c462: e7d7 b.n 800c414 <UART_SetConfig+0x6c> + 800c464: 2204 movs r2, #4 + 800c466: e7d5 b.n 800c414 <UART_SetConfig+0x6c> + 800c468: 2208 movs r2, #8 + 800c46a: e7d3 b.n 800c414 <UART_SetConfig+0x6c> + 800c46c: 2210 movs r2, #16 + 800c46e: e7d1 b.n 800c414 <UART_SetConfig+0x6c> + 800c470: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800c474: f8d2 2088 ldr.w r2, [r2, #136] ; 0x88 + 800c478: f002 020c and.w r2, r2, #12 + 800c47c: f442 2240 orr.w r2, r2, #786432 ; 0xc0000 + 800c480: f5a2 2240 sub.w r2, r2, #786432 ; 0xc0000 + 800c484: 2a0c cmp r2, #12 + 800c486: d80e bhi.n 800c4a6 <UART_SetConfig+0xfe> + 800c488: e8df f002 tbb [pc, r2] + 800c48c: 0d0d0d07 .word 0x0d0d0d07 + 800c490: 0d0d0d09 .word 0x0d0d0d09 + 800c494: 0d0d0d26 .word 0x0d0d0d26 + 800c498: 0b .byte 0x0b + 800c499: 00 .byte 0x00 + 800c49a: 2200 movs r2, #0 + 800c49c: e7ba b.n 800c414 <UART_SetConfig+0x6c> + 800c49e: 2204 movs r2, #4 + 800c4a0: e7b8 b.n 800c414 <UART_SetConfig+0x6c> + 800c4a2: 2208 movs r2, #8 + 800c4a4: e7b6 b.n 800c414 <UART_SetConfig+0x6c> + 800c4a6: 2210 movs r2, #16 + 800c4a8: e7b4 b.n 800c414 <UART_SetConfig+0x6c> + return (uint32_t)(READ_BIT(RCC->CCIPR, LPUARTx)); + 800c4aa: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800c4ae: f8d2 2088 ldr.w r2, [r2, #136] ; 0x88 + 800c4b2: f402 6240 and.w r2, r2, #3072 ; 0xc00 + 800c4b6: f5b2 6f00 cmp.w r2, #2048 ; 0x800 + 800c4ba: d00f beq.n 800c4dc <UART_SetConfig+0x134> + 800c4bc: d805 bhi.n 800c4ca <UART_SetConfig+0x122> + 800c4be: b17a cbz r2, 800c4e0 <UART_SetConfig+0x138> + 800c4c0: f5b2 6f80 cmp.w r2, #1024 ; 0x400 + 800c4c4: d10e bne.n 800c4e4 <UART_SetConfig+0x13c> + 800c4c6: 2204 movs r2, #4 + 800c4c8: e7a4 b.n 800c414 <UART_SetConfig+0x6c> + 800c4ca: f5b2 6f40 cmp.w r2, #3072 ; 0xc00 + 800c4ce: d10b bne.n 800c4e8 <UART_SetConfig+0x140> + 800c4d0: 2208 movs r2, #8 + 800c4d2: e79f b.n 800c414 <UART_SetConfig+0x6c> + 800c4d4: 2202 movs r2, #2 + 800c4d6: e79d b.n 800c414 <UART_SetConfig+0x6c> + 800c4d8: 2202 movs r2, #2 + 800c4da: e79b b.n 800c414 <UART_SetConfig+0x6c> + 800c4dc: 2202 movs r2, #2 + 800c4de: e799 b.n 800c414 <UART_SetConfig+0x6c> + 800c4e0: 2200 movs r2, #0 + 800c4e2: e797 b.n 800c414 <UART_SetConfig+0x6c> + 800c4e4: 2210 movs r2, #16 + 800c4e6: e795 b.n 800c414 <UART_SetConfig+0x6c> + 800c4e8: 2210 movs r2, #16 + 800c4ea: e793 b.n 800c414 <UART_SetConfig+0x6c> + switch (clocksource) + 800c4ec: 2a08 cmp r2, #8 + 800c4ee: f200 809c bhi.w 800c62a <UART_SetConfig+0x282> + 800c4f2: e8df f002 tbb [pc, r2] + 800c4f6: 9a08 .short 0x9a08 + 800c4f8: 9a379a3a .word 0x9a379a3a + 800c4fc: 9a9a .short 0x9a9a + 800c4fe: 05 .byte 0x05 + 800c4ff: 00 .byte 0x00 + 800c500: f44f 4000 mov.w r0, #32768 ; 0x8000 + 800c504: e004 b.n 800c510 <UART_SetConfig+0x168> + pclk = HAL_RCC_GetPCLK1Freq(); + 800c506: f7fe faab bl 800aa60 <HAL_RCC_GetPCLK1Freq> + if (pclk != 0U) + 800c50a: 2800 cmp r0, #0 + 800c50c: f000 808f beq.w 800c62e <UART_SetConfig+0x286> + lpuart_ker_ck_pres = (pclk / UARTPrescTable[huart->Init.ClockPrescaler]); + 800c510: 6a62 ldr r2, [r4, #36] ; 0x24 + 800c512: 4b4c ldr r3, [pc, #304] ; (800c644 <UART_SetConfig+0x29c>) + 800c514: f833 2012 ldrh.w r2, [r3, r2, lsl #1] + 800c518: fbb0 f3f2 udiv r3, r0, r2 + if ((lpuart_ker_ck_pres < (3U * huart->Init.BaudRate)) || + 800c51c: 6865 ldr r5, [r4, #4] + 800c51e: eb05 0145 add.w r1, r5, r5, lsl #1 + 800c522: 4299 cmp r1, r3 + 800c524: f200 8094 bhi.w 800c650 <UART_SetConfig+0x2a8> + 800c528: ebb3 3f05 cmp.w r3, r5, lsl #12 + 800c52c: f200 8092 bhi.w 800c654 <UART_SetConfig+0x2ac> + usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); + 800c530: 2600 movs r6, #0 + 800c532: 4633 mov r3, r6 + 800c534: 4631 mov r1, r6 + 800c536: f7f5 faeb bl 8001b10 <__aeabi_uldivmod> + 800c53a: 0209 lsls r1, r1, #8 + 800c53c: ea41 6110 orr.w r1, r1, r0, lsr #24 + 800c540: 0200 lsls r0, r0, #8 + 800c542: 086b lsrs r3, r5, #1 + 800c544: 18c0 adds r0, r0, r3 + 800c546: 462a mov r2, r5 + 800c548: 4633 mov r3, r6 + 800c54a: f141 0100 adc.w r1, r1, #0 + 800c54e: f7f5 fadf bl 8001b10 <__aeabi_uldivmod> + if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX)) + 800c552: f5a0 7240 sub.w r2, r0, #768 ; 0x300 + 800c556: 4b3c ldr r3, [pc, #240] ; (800c648 <UART_SetConfig+0x2a0>) + 800c558: 429a cmp r2, r3 + 800c55a: d87d bhi.n 800c658 <UART_SetConfig+0x2b0> + huart->Instance->BRR = usartdiv; + 800c55c: 6823 ldr r3, [r4, #0] + 800c55e: 60d8 str r0, [r3, #12] + 800c560: 4630 mov r0, r6 + 800c562: e050 b.n 800c606 <UART_SetConfig+0x25e> + pclk = HAL_RCC_GetSysClockFreq(); + 800c564: f7fd fda0 bl 800a0a8 <HAL_RCC_GetSysClockFreq> + break; + 800c568: e7cf b.n 800c50a <UART_SetConfig+0x162> + pclk = (uint32_t) HSI_VALUE; + 800c56a: 4838 ldr r0, [pc, #224] ; (800c64c <UART_SetConfig+0x2a4>) + 800c56c: e7d0 b.n 800c510 <UART_SetConfig+0x168> + switch (clocksource) + 800c56e: 2a08 cmp r2, #8 + 800c570: d874 bhi.n 800c65c <UART_SetConfig+0x2b4> + 800c572: e8df f002 tbb [pc, r2] + 800c576: 2707 .short 0x2707 + 800c578: 732a7305 .word 0x732a7305 + 800c57c: 7373 .short 0x7373 + 800c57e: 0b .byte 0x0b + 800c57f: 00 .byte 0x00 + 800c580: 4832 ldr r0, [pc, #200] ; (800c64c <UART_SetConfig+0x2a4>) + 800c582: e003 b.n 800c58c <UART_SetConfig+0x1e4> + pclk = HAL_RCC_GetPCLK1Freq(); + 800c584: f7fe fa6c bl 800aa60 <HAL_RCC_GetPCLK1Freq> + if (pclk != 0U) + 800c588: 2800 cmp r0, #0 + 800c58a: d069 beq.n 800c660 <UART_SetConfig+0x2b8> + usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); + 800c58c: 6a62 ldr r2, [r4, #36] ; 0x24 + 800c58e: 4b2d ldr r3, [pc, #180] ; (800c644 <UART_SetConfig+0x29c>) + 800c590: f833 3012 ldrh.w r3, [r3, r2, lsl #1] + 800c594: fbb0 f0f3 udiv r0, r0, r3 + 800c598: 6862 ldr r2, [r4, #4] + 800c59a: 0853 lsrs r3, r2, #1 + 800c59c: eb03 0340 add.w r3, r3, r0, lsl #1 + 800c5a0: fbb3 f3f2 udiv r3, r3, r2 + if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) + 800c5a4: f1a3 0110 sub.w r1, r3, #16 + 800c5a8: f64f 72ef movw r2, #65519 ; 0xffef + 800c5ac: 4291 cmp r1, r2 + 800c5ae: d859 bhi.n 800c664 <UART_SetConfig+0x2bc> + brrtemp = (uint16_t)(usartdiv & 0xFFF0U); + 800c5b0: b29a uxth r2, r3 + 800c5b2: f022 020f bic.w r2, r2, #15 + brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); + 800c5b6: f3c3 0342 ubfx r3, r3, #1, #3 + 800c5ba: 4313 orrs r3, r2 + huart->Instance->BRR = brrtemp; + 800c5bc: 6822 ldr r2, [r4, #0] + 800c5be: 60d3 str r3, [r2, #12] + 800c5c0: 2000 movs r0, #0 + 800c5c2: e020 b.n 800c606 <UART_SetConfig+0x25e> + pclk = HAL_RCC_GetPCLK2Freq(); + 800c5c4: f7fe fa5c bl 800aa80 <HAL_RCC_GetPCLK2Freq> + break; + 800c5c8: e7de b.n 800c588 <UART_SetConfig+0x1e0> + pclk = HAL_RCC_GetSysClockFreq(); + 800c5ca: f7fd fd6d bl 800a0a8 <HAL_RCC_GetSysClockFreq> + break; + 800c5ce: e7db b.n 800c588 <UART_SetConfig+0x1e0> + switch (clocksource) + 800c5d0: 481e ldr r0, [pc, #120] ; (800c64c <UART_SetConfig+0x2a4>) + 800c5d2: e003 b.n 800c5dc <UART_SetConfig+0x234> + pclk = HAL_RCC_GetPCLK1Freq(); + 800c5d4: f7fe fa44 bl 800aa60 <HAL_RCC_GetPCLK1Freq> + if (pclk != 0U) + 800c5d8: 2800 cmp r0, #0 + 800c5da: d047 beq.n 800c66c <UART_SetConfig+0x2c4> + usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); + 800c5dc: 6a62 ldr r2, [r4, #36] ; 0x24 + 800c5de: 4b19 ldr r3, [pc, #100] ; (800c644 <UART_SetConfig+0x29c>) + 800c5e0: f833 3012 ldrh.w r3, [r3, r2, lsl #1] + 800c5e4: fbb0 f0f3 udiv r0, r0, r3 + 800c5e8: 6863 ldr r3, [r4, #4] + 800c5ea: eb00 0053 add.w r0, r0, r3, lsr #1 + 800c5ee: fbb0 f0f3 udiv r0, r0, r3 + if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) + 800c5f2: f1a0 0210 sub.w r2, r0, #16 + 800c5f6: f64f 73ef movw r3, #65519 ; 0xffef + 800c5fa: 429a cmp r2, r3 + 800c5fc: d838 bhi.n 800c670 <UART_SetConfig+0x2c8> + huart->Instance->BRR = (uint16_t)usartdiv; + 800c5fe: 6823 ldr r3, [r4, #0] + 800c600: b280 uxth r0, r0 + 800c602: 60d8 str r0, [r3, #12] + 800c604: 2000 movs r0, #0 + huart->NbTxDataToProcess = 1; + 800c606: 2301 movs r3, #1 + 800c608: f8a4 306a strh.w r3, [r4, #106] ; 0x6a + huart->NbRxDataToProcess = 1; + 800c60c: f8a4 3068 strh.w r3, [r4, #104] ; 0x68 + huart->RxISR = NULL; + 800c610: 2300 movs r3, #0 + 800c612: 6763 str r3, [r4, #116] ; 0x74 + huart->TxISR = NULL; + 800c614: 67a3 str r3, [r4, #120] ; 0x78 +} + 800c616: bd70 pop {r4, r5, r6, pc} + pclk = HAL_RCC_GetPCLK2Freq(); + 800c618: f7fe fa32 bl 800aa80 <HAL_RCC_GetPCLK2Freq> + break; + 800c61c: e7dc b.n 800c5d8 <UART_SetConfig+0x230> + pclk = HAL_RCC_GetSysClockFreq(); + 800c61e: f7fd fd43 bl 800a0a8 <HAL_RCC_GetSysClockFreq> + break; + 800c622: e7d9 b.n 800c5d8 <UART_SetConfig+0x230> + pclk = (uint32_t) LSE_VALUE; + 800c624: f44f 4000 mov.w r0, #32768 ; 0x8000 + 800c628: e7d8 b.n 800c5dc <UART_SetConfig+0x234> + switch (clocksource) + 800c62a: 2001 movs r0, #1 + 800c62c: e7eb b.n 800c606 <UART_SetConfig+0x25e> + 800c62e: 2000 movs r0, #0 + 800c630: e7e9 b.n 800c606 <UART_SetConfig+0x25e> + 800c632: bf00 nop + 800c634: cfff69f3 .word 0xcfff69f3 + 800c638: 40008000 .word 0x40008000 + 800c63c: 40013800 .word 0x40013800 + 800c640: 40004400 .word 0x40004400 + 800c644: 0801859c .word 0x0801859c + 800c648: 000ffcff .word 0x000ffcff + 800c64c: 00f42400 .word 0x00f42400 + ret = HAL_ERROR; + 800c650: 2001 movs r0, #1 + 800c652: e7d8 b.n 800c606 <UART_SetConfig+0x25e> + 800c654: 2001 movs r0, #1 + 800c656: e7d6 b.n 800c606 <UART_SetConfig+0x25e> + ret = HAL_ERROR; + 800c658: 2001 movs r0, #1 + 800c65a: e7d4 b.n 800c606 <UART_SetConfig+0x25e> + switch (clocksource) + 800c65c: 2001 movs r0, #1 + 800c65e: e7d2 b.n 800c606 <UART_SetConfig+0x25e> + 800c660: 2000 movs r0, #0 + 800c662: e7d0 b.n 800c606 <UART_SetConfig+0x25e> + ret = HAL_ERROR; + 800c664: 2001 movs r0, #1 + 800c666: e7ce b.n 800c606 <UART_SetConfig+0x25e> + switch (clocksource) + 800c668: 2001 movs r0, #1 + 800c66a: e7cc b.n 800c606 <UART_SetConfig+0x25e> + 800c66c: 2000 movs r0, #0 + 800c66e: e7ca b.n 800c606 <UART_SetConfig+0x25e> + ret = HAL_ERROR; + 800c670: 2001 movs r0, #1 + 800c672: e7c8 b.n 800c606 <UART_SetConfig+0x25e> + +0800c674 <UART_AdvFeatureConfig>: + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT)) + 800c674: 6a83 ldr r3, [r0, #40] ; 0x28 + 800c676: f013 0f01 tst.w r3, #1 + 800c67a: d006 beq.n 800c68a <UART_AdvFeatureConfig+0x16> + MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); + 800c67c: 6802 ldr r2, [r0, #0] + 800c67e: 6853 ldr r3, [r2, #4] + 800c680: f423 3300 bic.w r3, r3, #131072 ; 0x20000 + 800c684: 6ac1 ldr r1, [r0, #44] ; 0x2c + 800c686: 430b orrs r3, r1 + 800c688: 6053 str r3, [r2, #4] + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT)) + 800c68a: 6a83 ldr r3, [r0, #40] ; 0x28 + 800c68c: f013 0f02 tst.w r3, #2 + 800c690: d006 beq.n 800c6a0 <UART_AdvFeatureConfig+0x2c> + MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); + 800c692: 6802 ldr r2, [r0, #0] + 800c694: 6853 ldr r3, [r2, #4] + 800c696: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 800c69a: 6b01 ldr r1, [r0, #48] ; 0x30 + 800c69c: 430b orrs r3, r1 + 800c69e: 6053 str r3, [r2, #4] + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) + 800c6a0: 6a83 ldr r3, [r0, #40] ; 0x28 + 800c6a2: f013 0f04 tst.w r3, #4 + 800c6a6: d006 beq.n 800c6b6 <UART_AdvFeatureConfig+0x42> + MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); + 800c6a8: 6802 ldr r2, [r0, #0] + 800c6aa: 6853 ldr r3, [r2, #4] + 800c6ac: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 800c6b0: 6b41 ldr r1, [r0, #52] ; 0x34 + 800c6b2: 430b orrs r3, r1 + 800c6b4: 6053 str r3, [r2, #4] + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) + 800c6b6: 6a83 ldr r3, [r0, #40] ; 0x28 + 800c6b8: f013 0f08 tst.w r3, #8 + 800c6bc: d006 beq.n 800c6cc <UART_AdvFeatureConfig+0x58> + MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); + 800c6be: 6802 ldr r2, [r0, #0] + 800c6c0: 6853 ldr r3, [r2, #4] + 800c6c2: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 800c6c6: 6b81 ldr r1, [r0, #56] ; 0x38 + 800c6c8: 430b orrs r3, r1 + 800c6ca: 6053 str r3, [r2, #4] + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) + 800c6cc: 6a83 ldr r3, [r0, #40] ; 0x28 + 800c6ce: f013 0f10 tst.w r3, #16 + 800c6d2: d006 beq.n 800c6e2 <UART_AdvFeatureConfig+0x6e> + MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); + 800c6d4: 6802 ldr r2, [r0, #0] + 800c6d6: 6893 ldr r3, [r2, #8] + 800c6d8: f423 5380 bic.w r3, r3, #4096 ; 0x1000 + 800c6dc: 6bc1 ldr r1, [r0, #60] ; 0x3c + 800c6de: 430b orrs r3, r1 + 800c6e0: 6093 str r3, [r2, #8] + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT)) + 800c6e2: 6a83 ldr r3, [r0, #40] ; 0x28 + 800c6e4: f013 0f20 tst.w r3, #32 + 800c6e8: d006 beq.n 800c6f8 <UART_AdvFeatureConfig+0x84> + MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); + 800c6ea: 6802 ldr r2, [r0, #0] + 800c6ec: 6893 ldr r3, [r2, #8] + 800c6ee: f423 5300 bic.w r3, r3, #8192 ; 0x2000 + 800c6f2: 6c01 ldr r1, [r0, #64] ; 0x40 + 800c6f4: 430b orrs r3, r1 + 800c6f6: 6093 str r3, [r2, #8] + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT)) + 800c6f8: 6a83 ldr r3, [r0, #40] ; 0x28 + 800c6fa: f013 0f40 tst.w r3, #64 ; 0x40 + 800c6fe: d00a beq.n 800c716 <UART_AdvFeatureConfig+0xa2> + MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable); + 800c700: 6802 ldr r2, [r0, #0] + 800c702: 6853 ldr r3, [r2, #4] + 800c704: f423 1380 bic.w r3, r3, #1048576 ; 0x100000 + 800c708: 6c41 ldr r1, [r0, #68] ; 0x44 + 800c70a: 430b orrs r3, r1 + 800c70c: 6053 str r3, [r2, #4] + if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) + 800c70e: 6c43 ldr r3, [r0, #68] ; 0x44 + 800c710: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 800c714: d00b beq.n 800c72e <UART_AdvFeatureConfig+0xba> + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT)) + 800c716: 6a83 ldr r3, [r0, #40] ; 0x28 + 800c718: f013 0f80 tst.w r3, #128 ; 0x80 + 800c71c: d006 beq.n 800c72c <UART_AdvFeatureConfig+0xb8> + MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); + 800c71e: 6802 ldr r2, [r0, #0] + 800c720: 6853 ldr r3, [r2, #4] + 800c722: f423 2300 bic.w r3, r3, #524288 ; 0x80000 + 800c726: 6cc1 ldr r1, [r0, #76] ; 0x4c + 800c728: 430b orrs r3, r1 + 800c72a: 6053 str r3, [r2, #4] +} + 800c72c: 4770 bx lr + MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); + 800c72e: 6802 ldr r2, [r0, #0] + 800c730: 6853 ldr r3, [r2, #4] + 800c732: f423 03c0 bic.w r3, r3, #6291456 ; 0x600000 + 800c736: 6c81 ldr r1, [r0, #72] ; 0x48 + 800c738: 430b orrs r3, r1 + 800c73a: 6053 str r3, [r2, #4] + 800c73c: e7eb b.n 800c716 <UART_AdvFeatureConfig+0xa2> + +0800c73e <UART_WaitOnFlagUntilTimeout>: +{ + 800c73e: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 800c742: 4605 mov r5, r0 + 800c744: 460f mov r7, r1 + 800c746: 4616 mov r6, r2 + 800c748: 4699 mov r9, r3 + 800c74a: f8dd 8020 ldr.w r8, [sp, #32] + while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) + 800c74e: 682b ldr r3, [r5, #0] + 800c750: 69dc ldr r4, [r3, #28] + 800c752: ea37 0404 bics.w r4, r7, r4 + 800c756: bf0c ite eq + 800c758: 2401 moveq r4, #1 + 800c75a: 2400 movne r4, #0 + 800c75c: 42b4 cmp r4, r6 + 800c75e: d157 bne.n 800c810 <UART_WaitOnFlagUntilTimeout+0xd2> + if (Timeout != HAL_MAX_DELAY) + 800c760: f1b8 3fff cmp.w r8, #4294967295 + 800c764: d0f3 beq.n 800c74e <UART_WaitOnFlagUntilTimeout+0x10> + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 800c766: f7f6 fa97 bl 8002c98 <HAL_GetTick> + 800c76a: eba0 0009 sub.w r0, r0, r9 + 800c76e: 4540 cmp r0, r8 + 800c770: d82f bhi.n 800c7d2 <UART_WaitOnFlagUntilTimeout+0x94> + 800c772: f1b8 0f00 cmp.w r8, #0 + 800c776: d02c beq.n 800c7d2 <UART_WaitOnFlagUntilTimeout+0x94> + if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) + 800c778: 682b ldr r3, [r5, #0] + 800c77a: 681a ldr r2, [r3, #0] + 800c77c: f012 0f04 tst.w r2, #4 + 800c780: d0e5 beq.n 800c74e <UART_WaitOnFlagUntilTimeout+0x10> + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) + 800c782: 69da ldr r2, [r3, #28] + 800c784: f412 6f00 tst.w r2, #2048 ; 0x800 + 800c788: d0e1 beq.n 800c74e <UART_WaitOnFlagUntilTimeout+0x10> + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); + 800c78a: f44f 6200 mov.w r2, #2048 ; 0x800 + 800c78e: 621a str r2, [r3, #32] + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | + 800c790: 682a ldr r2, [r5, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c792: e852 3f00 ldrex r3, [r2] + 800c796: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c79a: e842 3100 strex r1, r3, [r2] + 800c79e: 2900 cmp r1, #0 + 800c7a0: d1f6 bne.n 800c790 <UART_WaitOnFlagUntilTimeout+0x52> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + 800c7a2: 682a ldr r2, [r5, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c7a4: f102 0308 add.w r3, r2, #8 + 800c7a8: e853 3f00 ldrex r3, [r3] + 800c7ac: f023 0301 bic.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c7b0: 3208 adds r2, #8 + 800c7b2: e842 3100 strex r1, r3, [r2] + 800c7b6: 2900 cmp r1, #0 + 800c7b8: d1f3 bne.n 800c7a2 <UART_WaitOnFlagUntilTimeout+0x64> + huart->gState = HAL_UART_STATE_READY; + 800c7ba: 2320 movs r3, #32 + 800c7bc: f8c5 3088 str.w r3, [r5, #136] ; 0x88 + huart->RxState = HAL_UART_STATE_READY; + 800c7c0: f8c5 308c str.w r3, [r5, #140] ; 0x8c + huart->ErrorCode = HAL_UART_ERROR_RTO; + 800c7c4: f8c5 3090 str.w r3, [r5, #144] ; 0x90 + __HAL_UNLOCK(huart); + 800c7c8: 2300 movs r3, #0 + 800c7ca: f885 3084 strb.w r3, [r5, #132] ; 0x84 + return HAL_TIMEOUT; + 800c7ce: 2003 movs r0, #3 + 800c7d0: e01f b.n 800c812 <UART_WaitOnFlagUntilTimeout+0xd4> + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | + 800c7d2: 682a ldr r2, [r5, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c7d4: e852 3f00 ldrex r3, [r2] + 800c7d8: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c7dc: e842 3100 strex r1, r3, [r2] + 800c7e0: 2900 cmp r1, #0 + 800c7e2: d1f6 bne.n 800c7d2 <UART_WaitOnFlagUntilTimeout+0x94> + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + 800c7e4: 682a ldr r2, [r5, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c7e6: f102 0308 add.w r3, r2, #8 + 800c7ea: e853 3f00 ldrex r3, [r3] + 800c7ee: f023 0301 bic.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c7f2: 3208 adds r2, #8 + 800c7f4: e842 3100 strex r1, r3, [r2] + 800c7f8: 2900 cmp r1, #0 + 800c7fa: d1f3 bne.n 800c7e4 <UART_WaitOnFlagUntilTimeout+0xa6> + huart->gState = HAL_UART_STATE_READY; + 800c7fc: 2320 movs r3, #32 + 800c7fe: f8c5 3088 str.w r3, [r5, #136] ; 0x88 + huart->RxState = HAL_UART_STATE_READY; + 800c802: f8c5 308c str.w r3, [r5, #140] ; 0x8c + __HAL_UNLOCK(huart); + 800c806: 2300 movs r3, #0 + 800c808: f885 3084 strb.w r3, [r5, #132] ; 0x84 + return HAL_TIMEOUT; + 800c80c: 2003 movs r0, #3 + 800c80e: e000 b.n 800c812 <UART_WaitOnFlagUntilTimeout+0xd4> + return HAL_OK; + 800c810: 2000 movs r0, #0 +} + 800c812: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + +0800c816 <UART_CheckIdleState>: +{ + 800c816: b530 push {r4, r5, lr} + 800c818: b083 sub sp, #12 + 800c81a: 4604 mov r4, r0 + huart->ErrorCode = HAL_UART_ERROR_NONE; + 800c81c: 2300 movs r3, #0 + 800c81e: f8c0 3090 str.w r3, [r0, #144] ; 0x90 + tickstart = HAL_GetTick(); + 800c822: f7f6 fa39 bl 8002c98 <HAL_GetTick> + 800c826: 4605 mov r5, r0 + if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) + 800c828: 6822 ldr r2, [r4, #0] + 800c82a: 6812 ldr r2, [r2, #0] + 800c82c: f012 0f08 tst.w r2, #8 + 800c830: d110 bne.n 800c854 <UART_CheckIdleState+0x3e> + if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) + 800c832: 6823 ldr r3, [r4, #0] + 800c834: 681b ldr r3, [r3, #0] + 800c836: f013 0f04 tst.w r3, #4 + 800c83a: d119 bne.n 800c870 <UART_CheckIdleState+0x5a> + huart->gState = HAL_UART_STATE_READY; + 800c83c: 2320 movs r3, #32 + 800c83e: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + huart->RxState = HAL_UART_STATE_READY; + 800c842: f8c4 308c str.w r3, [r4, #140] ; 0x8c + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 800c846: 2000 movs r0, #0 + 800c848: 66e0 str r0, [r4, #108] ; 0x6c + huart->RxEventType = HAL_UART_RXEVENT_TC; + 800c84a: 6720 str r0, [r4, #112] ; 0x70 + __HAL_UNLOCK(huart); + 800c84c: f884 0084 strb.w r0, [r4, #132] ; 0x84 +} + 800c850: b003 add sp, #12 + 800c852: bd30 pop {r4, r5, pc} + if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) + 800c854: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 800c858: 9300 str r3, [sp, #0] + 800c85a: 4603 mov r3, r0 + 800c85c: 2200 movs r2, #0 + 800c85e: f44f 1100 mov.w r1, #2097152 ; 0x200000 + 800c862: 4620 mov r0, r4 + 800c864: f7ff ff6b bl 800c73e <UART_WaitOnFlagUntilTimeout> + 800c868: 2800 cmp r0, #0 + 800c86a: d0e2 beq.n 800c832 <UART_CheckIdleState+0x1c> + return HAL_TIMEOUT; + 800c86c: 2003 movs r0, #3 + 800c86e: e7ef b.n 800c850 <UART_CheckIdleState+0x3a> + if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) + 800c870: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 800c874: 9300 str r3, [sp, #0] + 800c876: 462b mov r3, r5 + 800c878: 2200 movs r2, #0 + 800c87a: f44f 0180 mov.w r1, #4194304 ; 0x400000 + 800c87e: 4620 mov r0, r4 + 800c880: f7ff ff5d bl 800c73e <UART_WaitOnFlagUntilTimeout> + 800c884: 2800 cmp r0, #0 + 800c886: d0d9 beq.n 800c83c <UART_CheckIdleState+0x26> + return HAL_TIMEOUT; + 800c888: 2003 movs r0, #3 + 800c88a: e7e1 b.n 800c850 <UART_CheckIdleState+0x3a> + +0800c88c <HAL_UART_Init>: + if (huart == NULL) + 800c88c: b378 cbz r0, 800c8ee <HAL_UART_Init+0x62> +{ + 800c88e: b510 push {r4, lr} + 800c890: 4604 mov r4, r0 + if (huart->gState == HAL_UART_STATE_RESET) + 800c892: f8d0 3088 ldr.w r3, [r0, #136] ; 0x88 + 800c896: b30b cbz r3, 800c8dc <HAL_UART_Init+0x50> + huart->gState = HAL_UART_STATE_BUSY; + 800c898: 2324 movs r3, #36 ; 0x24 + 800c89a: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + __HAL_UART_DISABLE(huart); + 800c89e: 6822 ldr r2, [r4, #0] + 800c8a0: 6813 ldr r3, [r2, #0] + 800c8a2: f023 0301 bic.w r3, r3, #1 + 800c8a6: 6013 str r3, [r2, #0] + if (UART_SetConfig(huart) == HAL_ERROR) + 800c8a8: 4620 mov r0, r4 + 800c8aa: f7ff fd7d bl 800c3a8 <UART_SetConfig> + 800c8ae: 2801 cmp r0, #1 + 800c8b0: d013 beq.n 800c8da <HAL_UART_Init+0x4e> + if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) + 800c8b2: 6aa3 ldr r3, [r4, #40] ; 0x28 + 800c8b4: b9bb cbnz r3, 800c8e6 <HAL_UART_Init+0x5a> + CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + 800c8b6: 6822 ldr r2, [r4, #0] + 800c8b8: 6853 ldr r3, [r2, #4] + 800c8ba: f423 4390 bic.w r3, r3, #18432 ; 0x4800 + 800c8be: 6053 str r3, [r2, #4] + CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); + 800c8c0: 6822 ldr r2, [r4, #0] + 800c8c2: 6893 ldr r3, [r2, #8] + 800c8c4: f023 032a bic.w r3, r3, #42 ; 0x2a + 800c8c8: 6093 str r3, [r2, #8] + __HAL_UART_ENABLE(huart); + 800c8ca: 6822 ldr r2, [r4, #0] + 800c8cc: 6813 ldr r3, [r2, #0] + 800c8ce: f043 0301 orr.w r3, r3, #1 + 800c8d2: 6013 str r3, [r2, #0] + return (UART_CheckIdleState(huart)); + 800c8d4: 4620 mov r0, r4 + 800c8d6: f7ff ff9e bl 800c816 <UART_CheckIdleState> +} + 800c8da: bd10 pop {r4, pc} + huart->Lock = HAL_UNLOCKED; + 800c8dc: f880 3084 strb.w r3, [r0, #132] ; 0x84 + HAL_UART_MspInit(huart); + 800c8e0: f7f6 fbf8 bl 80030d4 <HAL_UART_MspInit> + 800c8e4: e7d8 b.n 800c898 <HAL_UART_Init+0xc> + UART_AdvFeatureConfig(huart); + 800c8e6: 4620 mov r0, r4 + 800c8e8: f7ff fec4 bl 800c674 <UART_AdvFeatureConfig> + 800c8ec: e7e3 b.n 800c8b6 <HAL_UART_Init+0x2a> + return HAL_ERROR; + 800c8ee: 2001 movs r0, #1 +} + 800c8f0: 4770 bx lr + ... + +0800c8f4 <UART_Start_Receive_IT>: +{ + 800c8f4: b410 push {r4} + huart->pRxBuffPtr = pData; + 800c8f6: 6581 str r1, [r0, #88] ; 0x58 + huart->RxXferSize = Size; + 800c8f8: f8a0 205c strh.w r2, [r0, #92] ; 0x5c + huart->RxXferCount = Size; + 800c8fc: f8a0 205e strh.w r2, [r0, #94] ; 0x5e + huart->RxISR = NULL; + 800c900: 2300 movs r3, #0 + 800c902: 6743 str r3, [r0, #116] ; 0x74 + UART_MASK_COMPUTATION(huart); + 800c904: 6883 ldr r3, [r0, #8] + 800c906: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 800c90a: d006 beq.n 800c91a <UART_Start_Receive_IT+0x26> + 800c90c: b9a3 cbnz r3, 800c938 <UART_Start_Receive_IT+0x44> + 800c90e: 6903 ldr r3, [r0, #16] + 800c910: b973 cbnz r3, 800c930 <UART_Start_Receive_IT+0x3c> + 800c912: 23ff movs r3, #255 ; 0xff + 800c914: f8a0 3060 strh.w r3, [r0, #96] ; 0x60 + 800c918: e014 b.n 800c944 <UART_Start_Receive_IT+0x50> + 800c91a: 6903 ldr r3, [r0, #16] + 800c91c: b923 cbnz r3, 800c928 <UART_Start_Receive_IT+0x34> + 800c91e: f240 13ff movw r3, #511 ; 0x1ff + 800c922: f8a0 3060 strh.w r3, [r0, #96] ; 0x60 + 800c926: e00d b.n 800c944 <UART_Start_Receive_IT+0x50> + 800c928: 23ff movs r3, #255 ; 0xff + 800c92a: f8a0 3060 strh.w r3, [r0, #96] ; 0x60 + 800c92e: e009 b.n 800c944 <UART_Start_Receive_IT+0x50> + 800c930: 237f movs r3, #127 ; 0x7f + 800c932: f8a0 3060 strh.w r3, [r0, #96] ; 0x60 + 800c936: e005 b.n 800c944 <UART_Start_Receive_IT+0x50> + 800c938: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 800c93c: d02d beq.n 800c99a <UART_Start_Receive_IT+0xa6> + 800c93e: 2300 movs r3, #0 + 800c940: f8a0 3060 strh.w r3, [r0, #96] ; 0x60 + huart->ErrorCode = HAL_UART_ERROR_NONE; + 800c944: 2300 movs r3, #0 + 800c946: f8c0 3090 str.w r3, [r0, #144] ; 0x90 + huart->RxState = HAL_UART_STATE_BUSY_RX; + 800c94a: 2322 movs r3, #34 ; 0x22 + 800c94c: f8c0 308c str.w r3, [r0, #140] ; 0x8c + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE); + 800c950: 6801 ldr r1, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c952: f101 0308 add.w r3, r1, #8 + 800c956: e853 3f00 ldrex r3, [r3] + 800c95a: f043 0301 orr.w r3, r3, #1 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c95e: 3108 adds r1, #8 + 800c960: e841 3400 strex r4, r3, [r1] + 800c964: 2c00 cmp r4, #0 + 800c966: d1f3 bne.n 800c950 <UART_Start_Receive_IT+0x5c> + if ((huart->FifoMode == UART_FIFOMODE_ENABLE) && (Size >= huart->NbRxDataToProcess)) + 800c968: 6e43 ldr r3, [r0, #100] ; 0x64 + 800c96a: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 800c96e: d01e beq.n 800c9ae <UART_Start_Receive_IT+0xba> + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + 800c970: 6883 ldr r3, [r0, #8] + 800c972: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 800c976: d042 beq.n 800c9fe <UART_Start_Receive_IT+0x10a> + huart->RxISR = UART_RxISR_8BIT; + 800c978: 4b29 ldr r3, [pc, #164] ; (800ca20 <UART_Start_Receive_IT+0x12c>) + 800c97a: 6743 str r3, [r0, #116] ; 0x74 + if (huart->Init.Parity != UART_PARITY_NONE) + 800c97c: 6903 ldr r3, [r0, #16] + 800c97e: 2b00 cmp r3, #0 + 800c980: d043 beq.n 800ca0a <UART_Start_Receive_IT+0x116> + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); + 800c982: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c984: e852 3f00 ldrex r3, [r2] + 800c988: f443 7390 orr.w r3, r3, #288 ; 0x120 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c98c: e842 3100 strex r1, r3, [r2] + 800c990: 2900 cmp r1, #0 + 800c992: d1f6 bne.n 800c982 <UART_Start_Receive_IT+0x8e> +} + 800c994: 2000 movs r0, #0 + 800c996: bc10 pop {r4} + 800c998: 4770 bx lr + UART_MASK_COMPUTATION(huart); + 800c99a: 6903 ldr r3, [r0, #16] + 800c99c: b91b cbnz r3, 800c9a6 <UART_Start_Receive_IT+0xb2> + 800c99e: 237f movs r3, #127 ; 0x7f + 800c9a0: f8a0 3060 strh.w r3, [r0, #96] ; 0x60 + 800c9a4: e7ce b.n 800c944 <UART_Start_Receive_IT+0x50> + 800c9a6: 233f movs r3, #63 ; 0x3f + 800c9a8: f8a0 3060 strh.w r3, [r0, #96] ; 0x60 + 800c9ac: e7ca b.n 800c944 <UART_Start_Receive_IT+0x50> + if ((huart->FifoMode == UART_FIFOMODE_ENABLE) && (Size >= huart->NbRxDataToProcess)) + 800c9ae: f8b0 3068 ldrh.w r3, [r0, #104] ; 0x68 + 800c9b2: 4293 cmp r3, r2 + 800c9b4: d8dc bhi.n 800c970 <UART_Start_Receive_IT+0x7c> + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + 800c9b6: 6883 ldr r3, [r0, #8] + 800c9b8: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 800c9bc: d019 beq.n 800c9f2 <UART_Start_Receive_IT+0xfe> + huart->RxISR = UART_RxISR_8BIT_FIFOEN; + 800c9be: 4b19 ldr r3, [pc, #100] ; (800ca24 <UART_Start_Receive_IT+0x130>) + 800c9c0: 6743 str r3, [r0, #116] ; 0x74 + if (huart->Init.Parity != UART_PARITY_NONE) + 800c9c2: 6903 ldr r3, [r0, #16] + 800c9c4: b143 cbz r3, 800c9d8 <UART_Start_Receive_IT+0xe4> + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE); + 800c9c6: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c9c8: e852 3f00 ldrex r3, [r2] + 800c9cc: f443 7380 orr.w r3, r3, #256 ; 0x100 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c9d0: e842 3100 strex r1, r3, [r2] + 800c9d4: 2900 cmp r1, #0 + 800c9d6: d1f6 bne.n 800c9c6 <UART_Start_Receive_IT+0xd2> + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_RXFTIE); + 800c9d8: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800c9da: f102 0308 add.w r3, r2, #8 + 800c9de: e853 3f00 ldrex r3, [r3] + 800c9e2: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800c9e6: 3208 adds r2, #8 + 800c9e8: e842 3100 strex r1, r3, [r2] + 800c9ec: 2900 cmp r1, #0 + 800c9ee: d1f3 bne.n 800c9d8 <UART_Start_Receive_IT+0xe4> + 800c9f0: e7d0 b.n 800c994 <UART_Start_Receive_IT+0xa0> + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + 800c9f2: 6903 ldr r3, [r0, #16] + 800c9f4: 2b00 cmp r3, #0 + 800c9f6: d1e2 bne.n 800c9be <UART_Start_Receive_IT+0xca> + huart->RxISR = UART_RxISR_16BIT_FIFOEN; + 800c9f8: 4b0b ldr r3, [pc, #44] ; (800ca28 <UART_Start_Receive_IT+0x134>) + 800c9fa: 6743 str r3, [r0, #116] ; 0x74 + 800c9fc: e7e1 b.n 800c9c2 <UART_Start_Receive_IT+0xce> + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + 800c9fe: 6903 ldr r3, [r0, #16] + 800ca00: 2b00 cmp r3, #0 + 800ca02: d1b9 bne.n 800c978 <UART_Start_Receive_IT+0x84> + huart->RxISR = UART_RxISR_16BIT; + 800ca04: 4b09 ldr r3, [pc, #36] ; (800ca2c <UART_Start_Receive_IT+0x138>) + 800ca06: 6743 str r3, [r0, #116] ; 0x74 + 800ca08: e7b8 b.n 800c97c <UART_Start_Receive_IT+0x88> + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); + 800ca0a: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800ca0c: e852 3f00 ldrex r3, [r2] + 800ca10: f043 0320 orr.w r3, r3, #32 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800ca14: e842 3100 strex r1, r3, [r2] + 800ca18: 2900 cmp r1, #0 + 800ca1a: d1f6 bne.n 800ca0a <UART_Start_Receive_IT+0x116> + 800ca1c: e7ba b.n 800c994 <UART_Start_Receive_IT+0xa0> + 800ca1e: bf00 nop + 800ca20: 0800be61 .word 0x0800be61 + 800ca24: 0800c015 .word 0x0800c015 + 800ca28: 0800c1e1 .word 0x0800c1e1 + 800ca2c: 0800bf3d .word 0x0800bf3d + +0800ca30 <HAL_UART_Receive_IT>: +{ + 800ca30: b538 push {r3, r4, r5, lr} + if (huart->RxState == HAL_UART_STATE_READY) + 800ca32: f8d0 308c ldr.w r3, [r0, #140] ; 0x8c + 800ca36: 2b20 cmp r3, #32 + 800ca38: d117 bne.n 800ca6a <HAL_UART_Receive_IT+0x3a> + if ((pData == NULL) || (Size == 0U)) + 800ca3a: b1c1 cbz r1, 800ca6e <HAL_UART_Receive_IT+0x3e> + 800ca3c: b1ca cbz r2, 800ca72 <HAL_UART_Receive_IT+0x42> + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 800ca3e: 2300 movs r3, #0 + 800ca40: 66c3 str r3, [r0, #108] ; 0x6c + if (!(IS_LPUART_INSTANCE(huart->Instance))) + 800ca42: 6803 ldr r3, [r0, #0] + 800ca44: 4c0c ldr r4, [pc, #48] ; (800ca78 <HAL_UART_Receive_IT+0x48>) + 800ca46: 42a3 cmp r3, r4 + 800ca48: d00c beq.n 800ca64 <HAL_UART_Receive_IT+0x34> + if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U) + 800ca4a: 685b ldr r3, [r3, #4] + 800ca4c: f413 0f00 tst.w r3, #8388608 ; 0x800000 + 800ca50: d008 beq.n 800ca64 <HAL_UART_Receive_IT+0x34> + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE); + 800ca52: 6804 ldr r4, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800ca54: e854 3f00 ldrex r3, [r4] + 800ca58: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800ca5c: e844 3500 strex r5, r3, [r4] + 800ca60: 2d00 cmp r5, #0 + 800ca62: d1f6 bne.n 800ca52 <HAL_UART_Receive_IT+0x22> + return (UART_Start_Receive_IT(huart, pData, Size)); + 800ca64: f7ff ff46 bl 800c8f4 <UART_Start_Receive_IT> + 800ca68: e000 b.n 800ca6c <HAL_UART_Receive_IT+0x3c> + return HAL_BUSY; + 800ca6a: 2002 movs r0, #2 +} + 800ca6c: bd38 pop {r3, r4, r5, pc} + return HAL_ERROR; + 800ca6e: 2001 movs r0, #1 + 800ca70: e7fc b.n 800ca6c <HAL_UART_Receive_IT+0x3c> + 800ca72: 2001 movs r0, #1 + 800ca74: e7fa b.n 800ca6c <HAL_UART_Receive_IT+0x3c> + 800ca76: bf00 nop + 800ca78: 40008000 .word 0x40008000 + +0800ca7c <UARTEx_Wakeup_AddressConfig>: + * @param huart UART handle. + * @param WakeUpSelection UART wake up from stop mode parameters. + * @retval None + */ +static void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection) +{ + 800ca7c: b082 sub sp, #8 + 800ca7e: ab02 add r3, sp, #8 + 800ca80: e903 0006 stmdb r3, {r1, r2} + assert_param(IS_UART_ADDRESSLENGTH_DETECT(WakeUpSelection.AddressLength)); + + /* Set the USART address length */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_ADDM7, WakeUpSelection.AddressLength); + 800ca84: 6802 ldr r2, [r0, #0] + 800ca86: 6853 ldr r3, [r2, #4] + 800ca88: f023 0310 bic.w r3, r3, #16 + 800ca8c: f8bd 1004 ldrh.w r1, [sp, #4] + 800ca90: 430b orrs r3, r1 + 800ca92: 6053 str r3, [r2, #4] + + /* Set the USART address node */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_ADD, ((uint32_t)WakeUpSelection.Address << UART_CR2_ADDRESS_LSB_POS)); + 800ca94: 6802 ldr r2, [r0, #0] + 800ca96: 6853 ldr r3, [r2, #4] + 800ca98: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000 + 800ca9c: f89d 1006 ldrb.w r1, [sp, #6] + 800caa0: ea43 6301 orr.w r3, r3, r1, lsl #24 + 800caa4: 6053 str r3, [r2, #4] +} + 800caa6: b002 add sp, #8 + 800caa8: 4770 bx lr + ... + +0800caac <UARTEx_SetNbDataToProcess>: + uint8_t rx_fifo_threshold; + uint8_t tx_fifo_threshold; + static const uint8_t numerator[] = {1U, 1U, 1U, 3U, 7U, 1U, 0U, 0U}; + static const uint8_t denominator[] = {8U, 4U, 2U, 4U, 8U, 1U, 1U, 1U}; + + if (huart->FifoMode == UART_FIFOMODE_DISABLE) + 800caac: 6e43 ldr r3, [r0, #100] ; 0x64 + 800caae: b92b cbnz r3, 800cabc <UARTEx_SetNbDataToProcess+0x10> + { + huart->NbTxDataToProcess = 1U; + 800cab0: 2301 movs r3, #1 + 800cab2: f8a0 306a strh.w r3, [r0, #106] ; 0x6a + huart->NbRxDataToProcess = 1U; + 800cab6: f8a0 3068 strh.w r3, [r0, #104] ; 0x68 + 800caba: 4770 bx lr +{ + 800cabc: b430 push {r4, r5} + } + else + { + rx_fifo_depth = RX_FIFO_DEPTH; + tx_fifo_depth = TX_FIFO_DEPTH; + rx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos); + 800cabe: 6803 ldr r3, [r0, #0] + 800cac0: 689a ldr r2, [r3, #8] + 800cac2: f3c2 6242 ubfx r2, r2, #25, #3 + tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos); + 800cac6: 6899 ldr r1, [r3, #8] + 800cac8: 0f49 lsrs r1, r1, #29 + huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / + 800caca: 4d09 ldr r5, [pc, #36] ; (800caf0 <UARTEx_SetNbDataToProcess+0x44>) + 800cacc: 5c6b ldrb r3, [r5, r1] + 800cace: 00db lsls r3, r3, #3 + (uint16_t)denominator[tx_fifo_threshold]; + 800cad0: 4c08 ldr r4, [pc, #32] ; (800caf4 <UARTEx_SetNbDataToProcess+0x48>) + 800cad2: 5c61 ldrb r1, [r4, r1] + huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / + 800cad4: fb93 f3f1 sdiv r3, r3, r1 + 800cad8: f8a0 306a strh.w r3, [r0, #106] ; 0x6a + huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / + 800cadc: 5cab ldrb r3, [r5, r2] + 800cade: 00db lsls r3, r3, #3 + (uint16_t)denominator[rx_fifo_threshold]; + 800cae0: 5ca2 ldrb r2, [r4, r2] + huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / + 800cae2: fb93 f3f2 sdiv r3, r3, r2 + 800cae6: f8a0 3068 strh.w r3, [r0, #104] ; 0x68 + } +} + 800caea: bc30 pop {r4, r5} + 800caec: 4770 bx lr + 800caee: bf00 nop + 800caf0: 080185bc .word 0x080185bc + 800caf4: 080185b4 .word 0x080185b4 + +0800caf8 <HAL_UARTEx_WakeupCallback>: +} + 800caf8: 4770 bx lr + +0800cafa <HAL_UARTEx_RxFifoFullCallback>: +} + 800cafa: 4770 bx lr + +0800cafc <HAL_UARTEx_TxFifoEmptyCallback>: +} + 800cafc: 4770 bx lr + +0800cafe <HAL_UARTEx_StopModeWakeUpSourceConfig>: +{ + 800cafe: b510 push {r4, lr} + 800cb00: b084 sub sp, #16 + 800cb02: ab04 add r3, sp, #16 + 800cb04: e903 0006 stmdb r3, {r1, r2} + __HAL_LOCK(huart); + 800cb08: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800cb0c: 2b01 cmp r3, #1 + 800cb0e: d035 beq.n 800cb7c <HAL_UARTEx_StopModeWakeUpSourceConfig+0x7e> + 800cb10: 4604 mov r4, r0 + 800cb12: 2301 movs r3, #1 + 800cb14: f880 3084 strb.w r3, [r0, #132] ; 0x84 + huart->gState = HAL_UART_STATE_BUSY; + 800cb18: 2324 movs r3, #36 ; 0x24 + 800cb1a: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + __HAL_UART_DISABLE(huart); + 800cb1e: 6802 ldr r2, [r0, #0] + 800cb20: 6813 ldr r3, [r2, #0] + 800cb22: f023 0301 bic.w r3, r3, #1 + 800cb26: 6013 str r3, [r2, #0] + MODIFY_REG(huart->Instance->CR3, USART_CR3_WUS, WakeUpSelection.WakeUpEvent); + 800cb28: 6801 ldr r1, [r0, #0] + 800cb2a: 688b ldr r3, [r1, #8] + 800cb2c: f423 1340 bic.w r3, r3, #3145728 ; 0x300000 + 800cb30: 9a02 ldr r2, [sp, #8] + 800cb32: 4313 orrs r3, r2 + 800cb34: 608b str r3, [r1, #8] + if (WakeUpSelection.WakeUpEvent == UART_WAKEUP_ON_ADDRESS) + 800cb36: b1aa cbz r2, 800cb64 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x66> + __HAL_UART_ENABLE(huart); + 800cb38: 6822 ldr r2, [r4, #0] + 800cb3a: 6813 ldr r3, [r2, #0] + 800cb3c: f043 0301 orr.w r3, r3, #1 + 800cb40: 6013 str r3, [r2, #0] + tickstart = HAL_GetTick(); + 800cb42: f7f6 f8a9 bl 8002c98 <HAL_GetTick> + 800cb46: 4603 mov r3, r0 + if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) + 800cb48: f06f 427e mvn.w r2, #4261412864 ; 0xfe000000 + 800cb4c: 9200 str r2, [sp, #0] + 800cb4e: 2200 movs r2, #0 + 800cb50: f44f 0180 mov.w r1, #4194304 ; 0x400000 + 800cb54: 4620 mov r0, r4 + 800cb56: f7ff fdf2 bl 800c73e <UART_WaitOnFlagUntilTimeout> + 800cb5a: b948 cbnz r0, 800cb70 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x72> + huart->gState = HAL_UART_STATE_READY; + 800cb5c: 2320 movs r3, #32 + 800cb5e: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800cb62: e006 b.n 800cb72 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x74> + UARTEx_Wakeup_AddressConfig(huart, WakeUpSelection); + 800cb64: ab04 add r3, sp, #16 + 800cb66: e913 0006 ldmdb r3, {r1, r2} + 800cb6a: f7ff ff87 bl 800ca7c <UARTEx_Wakeup_AddressConfig> + 800cb6e: e7e3 b.n 800cb38 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x3a> + status = HAL_TIMEOUT; + 800cb70: 2003 movs r0, #3 + __HAL_UNLOCK(huart); + 800cb72: 2300 movs r3, #0 + 800cb74: f884 3084 strb.w r3, [r4, #132] ; 0x84 +} + 800cb78: b004 add sp, #16 + 800cb7a: bd10 pop {r4, pc} + __HAL_LOCK(huart); + 800cb7c: 2002 movs r0, #2 + 800cb7e: e7fb b.n 800cb78 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x7a> + +0800cb80 <HAL_UARTEx_EnableStopMode>: + __HAL_LOCK(huart); + 800cb80: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800cb84: 2b01 cmp r3, #1 + 800cb86: d010 beq.n 800cbaa <HAL_UARTEx_EnableStopMode+0x2a> + 800cb88: 2301 movs r3, #1 + 800cb8a: f880 3084 strb.w r3, [r0, #132] ; 0x84 + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_UESM); + 800cb8e: 6802 ldr r2, [r0, #0] + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 800cb90: e852 3f00 ldrex r3, [r2] + 800cb94: f043 0302 orr.w r3, r3, #2 + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 800cb98: e842 3100 strex r1, r3, [r2] + 800cb9c: 2900 cmp r1, #0 + 800cb9e: d1f6 bne.n 800cb8e <HAL_UARTEx_EnableStopMode+0xe> + __HAL_UNLOCK(huart); + 800cba0: 2300 movs r3, #0 + 800cba2: f880 3084 strb.w r3, [r0, #132] ; 0x84 + return HAL_OK; + 800cba6: 4618 mov r0, r3 + 800cba8: 4770 bx lr + __HAL_LOCK(huart); + 800cbaa: 2002 movs r0, #2 +} + 800cbac: 4770 bx lr + +0800cbae <HAL_UARTEx_EnableFifoMode>: + __HAL_LOCK(huart); + 800cbae: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800cbb2: 2b01 cmp r3, #1 + 800cbb4: d01d beq.n 800cbf2 <HAL_UARTEx_EnableFifoMode+0x44> +{ + 800cbb6: b510 push {r4, lr} + 800cbb8: 4604 mov r4, r0 + __HAL_LOCK(huart); + 800cbba: 2301 movs r3, #1 + 800cbbc: f880 3084 strb.w r3, [r0, #132] ; 0x84 + huart->gState = HAL_UART_STATE_BUSY; + 800cbc0: 2324 movs r3, #36 ; 0x24 + 800cbc2: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + tmpcr1 = READ_REG(huart->Instance->CR1); + 800cbc6: 6802 ldr r2, [r0, #0] + 800cbc8: 6813 ldr r3, [r2, #0] + __HAL_UART_DISABLE(huart); + 800cbca: 6811 ldr r1, [r2, #0] + 800cbcc: f021 0101 bic.w r1, r1, #1 + 800cbd0: 6011 str r1, [r2, #0] + SET_BIT(tmpcr1, USART_CR1_FIFOEN); + 800cbd2: f043 5300 orr.w r3, r3, #536870912 ; 0x20000000 + huart->FifoMode = UART_FIFOMODE_ENABLE; + 800cbd6: f04f 5200 mov.w r2, #536870912 ; 0x20000000 + 800cbda: 6642 str r2, [r0, #100] ; 0x64 + WRITE_REG(huart->Instance->CR1, tmpcr1); + 800cbdc: 6802 ldr r2, [r0, #0] + 800cbde: 6013 str r3, [r2, #0] + UARTEx_SetNbDataToProcess(huart); + 800cbe0: f7ff ff64 bl 800caac <UARTEx_SetNbDataToProcess> + huart->gState = HAL_UART_STATE_READY; + 800cbe4: 2320 movs r3, #32 + 800cbe6: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + __HAL_UNLOCK(huart); + 800cbea: 2000 movs r0, #0 + 800cbec: f884 0084 strb.w r0, [r4, #132] ; 0x84 +} + 800cbf0: bd10 pop {r4, pc} + __HAL_LOCK(huart); + 800cbf2: 2002 movs r0, #2 +} + 800cbf4: 4770 bx lr + +0800cbf6 <HAL_UARTEx_SetTxFifoThreshold>: +{ + 800cbf6: b538 push {r3, r4, r5, lr} + __HAL_LOCK(huart); + 800cbf8: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800cbfc: 2b01 cmp r3, #1 + 800cbfe: d01d beq.n 800cc3c <HAL_UARTEx_SetTxFifoThreshold+0x46> + 800cc00: 4604 mov r4, r0 + 800cc02: 2301 movs r3, #1 + 800cc04: f880 3084 strb.w r3, [r0, #132] ; 0x84 + huart->gState = HAL_UART_STATE_BUSY; + 800cc08: 2324 movs r3, #36 ; 0x24 + 800cc0a: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + tmpcr1 = READ_REG(huart->Instance->CR1); + 800cc0e: 6803 ldr r3, [r0, #0] + 800cc10: 681d ldr r5, [r3, #0] + __HAL_UART_DISABLE(huart); + 800cc12: 681a ldr r2, [r3, #0] + 800cc14: f022 0201 bic.w r2, r2, #1 + 800cc18: 601a str r2, [r3, #0] + MODIFY_REG(huart->Instance->CR3, USART_CR3_TXFTCFG, Threshold); + 800cc1a: 6802 ldr r2, [r0, #0] + 800cc1c: 6893 ldr r3, [r2, #8] + 800cc1e: f023 4360 bic.w r3, r3, #3758096384 ; 0xe0000000 + 800cc22: 4319 orrs r1, r3 + 800cc24: 6091 str r1, [r2, #8] + UARTEx_SetNbDataToProcess(huart); + 800cc26: f7ff ff41 bl 800caac <UARTEx_SetNbDataToProcess> + WRITE_REG(huart->Instance->CR1, tmpcr1); + 800cc2a: 6823 ldr r3, [r4, #0] + 800cc2c: 601d str r5, [r3, #0] + huart->gState = HAL_UART_STATE_READY; + 800cc2e: 2320 movs r3, #32 + 800cc30: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + __HAL_UNLOCK(huart); + 800cc34: 2000 movs r0, #0 + 800cc36: f884 0084 strb.w r0, [r4, #132] ; 0x84 +} + 800cc3a: bd38 pop {r3, r4, r5, pc} + __HAL_LOCK(huart); + 800cc3c: 2002 movs r0, #2 + 800cc3e: e7fc b.n 800cc3a <HAL_UARTEx_SetTxFifoThreshold+0x44> + +0800cc40 <HAL_UARTEx_SetRxFifoThreshold>: +{ + 800cc40: b538 push {r3, r4, r5, lr} + __HAL_LOCK(huart); + 800cc42: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800cc46: 2b01 cmp r3, #1 + 800cc48: d01d beq.n 800cc86 <HAL_UARTEx_SetRxFifoThreshold+0x46> + 800cc4a: 4604 mov r4, r0 + 800cc4c: 2301 movs r3, #1 + 800cc4e: f880 3084 strb.w r3, [r0, #132] ; 0x84 + huart->gState = HAL_UART_STATE_BUSY; + 800cc52: 2324 movs r3, #36 ; 0x24 + 800cc54: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + tmpcr1 = READ_REG(huart->Instance->CR1); + 800cc58: 6803 ldr r3, [r0, #0] + 800cc5a: 681d ldr r5, [r3, #0] + __HAL_UART_DISABLE(huart); + 800cc5c: 681a ldr r2, [r3, #0] + 800cc5e: f022 0201 bic.w r2, r2, #1 + 800cc62: 601a str r2, [r3, #0] + MODIFY_REG(huart->Instance->CR3, USART_CR3_RXFTCFG, Threshold); + 800cc64: 6802 ldr r2, [r0, #0] + 800cc66: 6893 ldr r3, [r2, #8] + 800cc68: f023 6360 bic.w r3, r3, #234881024 ; 0xe000000 + 800cc6c: 4319 orrs r1, r3 + 800cc6e: 6091 str r1, [r2, #8] + UARTEx_SetNbDataToProcess(huart); + 800cc70: f7ff ff1c bl 800caac <UARTEx_SetNbDataToProcess> + WRITE_REG(huart->Instance->CR1, tmpcr1); + 800cc74: 6823 ldr r3, [r4, #0] + 800cc76: 601d str r5, [r3, #0] + huart->gState = HAL_UART_STATE_READY; + 800cc78: 2320 movs r3, #32 + 800cc7a: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + __HAL_UNLOCK(huart); + 800cc7e: 2000 movs r0, #0 + 800cc80: f884 0084 strb.w r0, [r4, #132] ; 0x84 +} + 800cc84: bd38 pop {r3, r4, r5, pc} + __HAL_LOCK(huart); + 800cc86: 2002 movs r0, #2 + 800cc88: e7fc b.n 800cc84 <HAL_UARTEx_SetRxFifoThreshold+0x44> + ... + +0800cc8c <LmHandlerPackageIsInitialized>: + } +} + +static bool LmHandlerPackageIsInitialized( uint8_t id ) +{ + if( ( id < PKG_MAX_NUMBER ) && ( LmHandlerPackages[id]->IsInitialized != NULL ) ) + 800cc8c: 2804 cmp r0, #4 + 800cc8e: d807 bhi.n 800cca0 <LmHandlerPackageIsInitialized+0x14> +{ + 800cc90: b508 push {r3, lr} + if( ( id < PKG_MAX_NUMBER ) && ( LmHandlerPackages[id]->IsInitialized != NULL ) ) + 800cc92: 4b05 ldr r3, [pc, #20] ; (800cca8 <LmHandlerPackageIsInitialized+0x1c>) + 800cc94: f853 3020 ldr.w r3, [r3, r0, lsl #2] + 800cc98: 689b ldr r3, [r3, #8] + 800cc9a: b11b cbz r3, 800cca4 <LmHandlerPackageIsInitialized+0x18> + { + return LmHandlerPackages[id]->IsInitialized( ); + 800cc9c: 4798 blx r3 + } + else + { + return false; + } +} + 800cc9e: bd08 pop {r3, pc} + return false; + 800cca0: 2000 movs r0, #0 +} + 800cca2: 4770 bx lr + return false; + 800cca4: 2000 movs r0, #0 + 800cca6: e7fa b.n 800cc9e <LmHandlerPackageIsInitialized+0x12> + 800cca8: 2000107c .word 0x2000107c + +0800ccac <LmHandlerPackagesNotify>: + +static void LmHandlerPackagesNotify( PackageNotifyTypes_t notifyType, void *params ) +{ + 800ccac: b5f8 push {r3, r4, r5, r6, r7, lr} + 800ccae: 4605 mov r5, r0 + 800ccb0: 460f mov r7, r1 + for( int8_t i = 0; i < PKG_MAX_NUMBER; i++ ) + 800ccb2: 2400 movs r4, #0 + 800ccb4: e005 b.n 800ccc2 <LmHandlerPackagesNotify+0x16> + { + switch( notifyType ) + { + case PACKAGE_MCPS_CONFIRM: + { + if( LmHandlerPackages[i]->OnMcpsConfirmProcess != NULL ) + 800ccb6: 69db ldr r3, [r3, #28] + 800ccb8: b10b cbz r3, 800ccbe <LmHandlerPackagesNotify+0x12> + { + LmHandlerPackages[i]->OnMcpsConfirmProcess( ( McpsConfirm_t * ) params ); + 800ccba: 4638 mov r0, r7 + 800ccbc: 4798 blx r3 + for( int8_t i = 0; i < PKG_MAX_NUMBER; i++ ) + 800ccbe: 3401 adds r4, #1 + 800ccc0: b264 sxtb r4, r4 + 800ccc2: 2c04 cmp r4, #4 + 800ccc4: dc34 bgt.n 800cd30 <LmHandlerPackagesNotify+0x84> + if( LmHandlerPackages[i] != NULL ) + 800ccc6: 4626 mov r6, r4 + 800ccc8: 4b1a ldr r3, [pc, #104] ; (800cd34 <LmHandlerPackagesNotify+0x88>) + 800ccca: f853 3024 ldr.w r3, [r3, r4, lsl #2] + 800ccce: 2b00 cmp r3, #0 + 800ccd0: d0f5 beq.n 800ccbe <LmHandlerPackagesNotify+0x12> + switch( notifyType ) + 800ccd2: 2d03 cmp r5, #3 + 800ccd4: d8f3 bhi.n 800ccbe <LmHandlerPackagesNotify+0x12> + 800ccd6: a201 add r2, pc, #4 ; (adr r2, 800ccdc <LmHandlerPackagesNotify+0x30>) + 800ccd8: f852 f025 ldr.w pc, [r2, r5, lsl #2] + 800ccdc: 0800ccb7 .word 0x0800ccb7 + 800cce0: 0800cced .word 0x0800cced + 800cce4: 0800cd19 .word 0x0800cd19 + 800cce8: 0800cd25 .word 0x0800cd25 + break; + } + case PACKAGE_MCPS_INDICATION: + { +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + if( ( LmHandlerPackages[i]->OnMcpsIndicationProcess != NULL ) && + 800ccec: 6a1a ldr r2, [r3, #32] + 800ccee: 2a00 cmp r2, #0 + 800ccf0: d0e5 beq.n 800ccbe <LmHandlerPackagesNotify+0x12> + ( ( LmHandlerPackages[i]->Port == ( ( McpsIndication_t * )params )->Port ) || + 800ccf2: 781a ldrb r2, [r3, #0] + 800ccf4: 78fb ldrb r3, [r7, #3] + if( ( LmHandlerPackages[i]->OnMcpsIndicationProcess != NULL ) && + 800ccf6: 429a cmp r2, r3 + 800ccf8: d007 beq.n 800cd0a <LmHandlerPackagesNotify+0x5e> + ( ( LmHandlerPackages[i]->Port == ( ( McpsIndication_t * )params )->Port ) || + 800ccfa: 2c00 cmp r4, #0 + 800ccfc: d1df bne.n 800ccbe <LmHandlerPackagesNotify+0x12> + ( ( i == PACKAGE_ID_COMPLIANCE ) && ( LmHandlerPackages[PACKAGE_ID_COMPLIANCE]->IsRunning() ) ) ) ) + 800ccfe: 4b0d ldr r3, [pc, #52] ; (800cd34 <LmHandlerPackagesNotify+0x88>) + 800cd00: 681b ldr r3, [r3, #0] + 800cd02: 68db ldr r3, [r3, #12] + 800cd04: 4798 blx r3 + 800cd06: 2800 cmp r0, #0 + 800cd08: d0d9 beq.n 800ccbe <LmHandlerPackagesNotify+0x12> +#elif (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) + if( LmHandlerPackages[i]->OnMcpsIndicationProcess != NULL ) +#endif /* LORAMAC_VERSION */ + { + LmHandlerPackages[i]->OnMcpsIndicationProcess( ( McpsIndication_t * )params ); + 800cd0a: 4b0a ldr r3, [pc, #40] ; (800cd34 <LmHandlerPackagesNotify+0x88>) + 800cd0c: f853 3026 ldr.w r3, [r3, r6, lsl #2] + 800cd10: 6a1b ldr r3, [r3, #32] + 800cd12: 4638 mov r0, r7 + 800cd14: 4798 blx r3 + 800cd16: e7d2 b.n 800ccbe <LmHandlerPackagesNotify+0x12> + } + break; + } + case PACKAGE_MLME_CONFIRM: + { + if( LmHandlerPackages[i]->OnMlmeConfirmProcess != NULL ) + 800cd18: 6a5b ldr r3, [r3, #36] ; 0x24 + 800cd1a: 2b00 cmp r3, #0 + 800cd1c: d0cf beq.n 800ccbe <LmHandlerPackagesNotify+0x12> + { + LmHandlerPackages[i]->OnMlmeConfirmProcess( ( MlmeConfirm_t * )params ); + 800cd1e: 4638 mov r0, r7 + 800cd20: 4798 blx r3 + 800cd22: e7cc b.n 800ccbe <LmHandlerPackagesNotify+0x12> + } + break; + } + case PACKAGE_MLME_INDICATION: + { + if( LmHandlerPackages[i]->OnMlmeIndicationProcess != NULL ) + 800cd24: 6a9b ldr r3, [r3, #40] ; 0x28 + 800cd26: 2b00 cmp r3, #0 + 800cd28: d0c9 beq.n 800ccbe <LmHandlerPackagesNotify+0x12> + { + LmHandlerPackages[i]->OnMlmeIndicationProcess( params ); + 800cd2a: 4638 mov r0, r7 + 800cd2c: 4798 blx r3 + 800cd2e: e7c6 b.n 800ccbe <LmHandlerPackagesNotify+0x12> + break; + } + } + } + } +} + 800cd30: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800cd32: bf00 nop + 800cd34: 2000107c .word 0x2000107c + +0800cd38 <MlmeIndication>: +{ + 800cd38: b510 push {r4, lr} + 800cd3a: 4604 mov r4, r0 + RxParams.IsMcpsIndication = 0; + 800cd3c: 4b11 ldr r3, [pc, #68] ; (800cd84 <MlmeIndication+0x4c>) + 800cd3e: 2200 movs r2, #0 + 800cd40: 701a strb r2, [r3, #0] + RxParams.Status = mlmeIndication->Status; + 800cd42: 7842 ldrb r2, [r0, #1] + 800cd44: 705a strb r2, [r3, #1] + RxParams.Datarate = mlmeIndication->RxDatarate; + 800cd46: f990 2002 ldrsb.w r2, [r0, #2] + 800cd4a: 721a strb r2, [r3, #8] + RxParams.Rssi = rxStatus->Rssi; + 800cd4c: f9b1 2000 ldrsh.w r2, [r1] + 800cd50: 725a strb r2, [r3, #9] + RxParams.Snr = rxStatus->Snr; + 800cd52: f991 2002 ldrsb.w r2, [r1, #2] + 800cd56: 729a strb r2, [r3, #10] + RxParams.RxSlot = rxStatus->RxSlot; + 800cd58: 78ca ldrb r2, [r1, #3] + 800cd5a: 741a strb r2, [r3, #16] + RxParams.DownlinkCounter = mlmeIndication->DownLinkCounter; + 800cd5c: 6842 ldr r2, [r0, #4] + 800cd5e: 60da str r2, [r3, #12] + if( ( LmHandlerCallbacks->OnRxData != NULL ) && ( mlmeIndication->MlmeIndication != MLME_BEACON ) && ( mlmeIndication->MlmeIndication != MLME_BEACON_LOST ) ) + 800cd60: 4b09 ldr r3, [pc, #36] ; (800cd88 <MlmeIndication+0x50>) + 800cd62: 681b ldr r3, [r3, #0] + 800cd64: 6adb ldr r3, [r3, #44] ; 0x2c + 800cd66: b13b cbz r3, 800cd78 <MlmeIndication+0x40> + 800cd68: 7802 ldrb r2, [r0, #0] + 800cd6a: 2a0b cmp r2, #11 + 800cd6c: d004 beq.n 800cd78 <MlmeIndication+0x40> + 800cd6e: 2a0f cmp r2, #15 + 800cd70: d002 beq.n 800cd78 <MlmeIndication+0x40> + LmHandlerCallbacks->OnRxData( NULL, &RxParams ); + 800cd72: 4904 ldr r1, [pc, #16] ; (800cd84 <MlmeIndication+0x4c>) + 800cd74: 2000 movs r0, #0 + 800cd76: 4798 blx r3 + LmHandlerPackagesNotify( PACKAGE_MLME_INDICATION, mlmeIndication ); + 800cd78: 4621 mov r1, r4 + 800cd7a: 2003 movs r0, #3 + 800cd7c: f7ff ff96 bl 800ccac <LmHandlerPackagesNotify> +} + 800cd80: bd10 pop {r4, pc} + 800cd82: bf00 nop + 800cd84: 20000848 .word 0x20000848 + 800cd88: 20001078 .word 0x20001078 + +0800cd8c <McpsConfirm>: +{ + 800cd8c: b510 push {r4, lr} + 800cd8e: 4604 mov r4, r0 + TxParams.IsMcpsConfirm = 1; + 800cd90: 4b0d ldr r3, [pc, #52] ; (800cdc8 <McpsConfirm+0x3c>) + 800cd92: 2201 movs r2, #1 + 800cd94: 701a strb r2, [r3, #0] + TxParams.Status = mcpsConfirm->Status; + 800cd96: 7842 ldrb r2, [r0, #1] + 800cd98: 705a strb r2, [r3, #1] + TxParams.Datarate = mcpsConfirm->Datarate; + 800cd9a: f990 2002 ldrsb.w r2, [r0, #2] + 800cd9e: 729a strb r2, [r3, #10] + TxParams.UplinkCounter = mcpsConfirm->UpLinkCounter; + 800cda0: 68c2 ldr r2, [r0, #12] + 800cda2: 60da str r2, [r3, #12] + TxParams.TxPower = mcpsConfirm->TxPower; + 800cda4: f990 2003 ldrsb.w r2, [r0, #3] + 800cda8: 761a strb r2, [r3, #24] + TxParams.Channel = mcpsConfirm->Channel; + 800cdaa: 6902 ldr r2, [r0, #16] + 800cdac: 765a strb r2, [r3, #25] + TxParams.AckReceived = mcpsConfirm->AckReceived; + 800cdae: 7902 ldrb r2, [r0, #4] + 800cdb0: 725a strb r2, [r3, #9] + if( LmHandlerCallbacks->OnTxData != NULL ) + 800cdb2: 4b06 ldr r3, [pc, #24] ; (800cdcc <McpsConfirm+0x40>) + 800cdb4: 681b ldr r3, [r3, #0] + 800cdb6: 6a9b ldr r3, [r3, #40] ; 0x28 + 800cdb8: b10b cbz r3, 800cdbe <McpsConfirm+0x32> + LmHandlerCallbacks->OnTxData( &TxParams ); + 800cdba: 4803 ldr r0, [pc, #12] ; (800cdc8 <McpsConfirm+0x3c>) + 800cdbc: 4798 blx r3 + LmHandlerPackagesNotify( PACKAGE_MCPS_CONFIRM, mcpsConfirm ); + 800cdbe: 4621 mov r1, r4 + 800cdc0: 2000 movs r0, #0 + 800cdc2: f7ff ff73 bl 800ccac <LmHandlerPackagesNotify> +} + 800cdc6: bd10 pop {r4, pc} + 800cdc8: 2000085c .word 0x2000085c + 800cdcc: 20001078 .word 0x20001078 + +0800cdd0 <LmHandlerPackageIsTxPending>: + +static bool LmHandlerPackageIsTxPending( void ) +{ + 800cdd0: b510 push {r4, lr} + for( int8_t i = 0; i < PKG_MAX_NUMBER; i++ ) + 800cdd2: 2400 movs r4, #0 + 800cdd4: e001 b.n 800cdda <LmHandlerPackageIsTxPending+0xa> + 800cdd6: 3401 adds r4, #1 + 800cdd8: b264 sxtb r4, r4 + 800cdda: 2c04 cmp r4, #4 + 800cddc: dc0c bgt.n 800cdf8 <LmHandlerPackageIsTxPending+0x28> + { +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + if( ( LmHandlerPackages[i] != NULL ) && ( i != PACKAGE_ID_COMPLIANCE ) ) + 800cdde: 4b08 ldr r3, [pc, #32] ; (800ce00 <LmHandlerPackageIsTxPending+0x30>) + 800cde0: f853 3024 ldr.w r3, [r3, r4, lsl #2] + 800cde4: 2b00 cmp r3, #0 + 800cde6: d0f6 beq.n 800cdd6 <LmHandlerPackageIsTxPending+0x6> + 800cde8: 2c00 cmp r4, #0 + 800cdea: d0f4 beq.n 800cdd6 <LmHandlerPackageIsTxPending+0x6> +#else + if( LmHandlerPackages[i] != NULL ) +#endif /* LORAMAC_VERSION */ + { + if( LmHandlerPackages[i]->IsTxPending( ) == true ) + 800cdec: 691b ldr r3, [r3, #16] + 800cdee: 4798 blx r3 + 800cdf0: 4603 mov r3, r0 + 800cdf2: 2800 cmp r0, #0 + 800cdf4: d0ef beq.n 800cdd6 <LmHandlerPackageIsTxPending+0x6> + 800cdf6: e000 b.n 800cdfa <LmHandlerPackageIsTxPending+0x2a> + { + return true; + } + } + } + return false; + 800cdf8: 2300 movs r3, #0 +} + 800cdfa: 4618 mov r0, r3 + 800cdfc: bd10 pop {r4, pc} + 800cdfe: bf00 nop + 800ce00: 2000107c .word 0x2000107c + +0800ce04 <LmHandlerPackagesProcess>: + +static void LmHandlerPackagesProcess( void ) +{ + 800ce04: b538 push {r3, r4, r5, lr} + for( int8_t i = 0; i < PKG_MAX_NUMBER; i++ ) + 800ce06: 2400 movs r4, #0 + 800ce08: e001 b.n 800ce0e <LmHandlerPackagesProcess+0xa> + 800ce0a: 3401 adds r4, #1 + 800ce0c: b264 sxtb r4, r4 + 800ce0e: 2c04 cmp r4, #4 + 800ce10: dc12 bgt.n 800ce38 <LmHandlerPackagesProcess+0x34> + { + if( ( LmHandlerPackages[i] != NULL ) && + 800ce12: 4b0a ldr r3, [pc, #40] ; (800ce3c <LmHandlerPackagesProcess+0x38>) + 800ce14: f853 3024 ldr.w r3, [r3, r4, lsl #2] + 800ce18: 2b00 cmp r3, #0 + 800ce1a: d0f6 beq.n 800ce0a <LmHandlerPackagesProcess+0x6> + ( LmHandlerPackages[i]->Process != NULL ) && + 800ce1c: 695b ldr r3, [r3, #20] + if( ( LmHandlerPackages[i] != NULL ) && + 800ce1e: 2b00 cmp r3, #0 + 800ce20: d0f3 beq.n 800ce0a <LmHandlerPackagesProcess+0x6> + ( LmHandlerPackageIsInitialized( i ) != false ) ) + 800ce22: b2e0 uxtb r0, r4 + 800ce24: f7ff ff32 bl 800cc8c <LmHandlerPackageIsInitialized> + ( LmHandlerPackages[i]->Process != NULL ) && + 800ce28: 2800 cmp r0, #0 + 800ce2a: d0ee beq.n 800ce0a <LmHandlerPackagesProcess+0x6> + { + LmHandlerPackages[i]->Process( ); + 800ce2c: 4b03 ldr r3, [pc, #12] ; (800ce3c <LmHandlerPackagesProcess+0x38>) + 800ce2e: f853 3024 ldr.w r3, [r3, r4, lsl #2] + 800ce32: 695b ldr r3, [r3, #20] + 800ce34: 4798 blx r3 + 800ce36: e7e8 b.n 800ce0a <LmHandlerPackagesProcess+0x6> + } + } +} + 800ce38: bd38 pop {r3, r4, r5, pc} + 800ce3a: bf00 nop + 800ce3c: 2000107c .word 0x2000107c + +0800ce40 <LmHandlerDeviceTimeReq>: +{ + 800ce40: b500 push {lr} + 800ce42: b087 sub sp, #28 + mlmeReq.Type = MLME_DEVICE_TIME; + 800ce44: 230a movs r3, #10 + 800ce46: f88d 3004 strb.w r3, [sp, #4] + status = LoRaMacMlmeRequest( &mlmeReq ); + 800ce4a: a801 add r0, sp, #4 + 800ce4c: f003 ff28 bl 8010ca0 <LoRaMacMlmeRequest> + DutyCycleWaitTime = mlmeReq.ReqReturn.DutyCycleWaitTime; + 800ce50: 9a05 ldr r2, [sp, #20] + 800ce52: 4b04 ldr r3, [pc, #16] ; (800ce64 <LmHandlerDeviceTimeReq+0x24>) + 800ce54: 601a str r2, [r3, #0] + if( status == LORAMAC_STATUS_OK ) + 800ce56: b910 cbnz r0, 800ce5e <LmHandlerDeviceTimeReq+0x1e> +} + 800ce58: b007 add sp, #28 + 800ce5a: f85d fb04 ldr.w pc, [sp], #4 + return LORAMAC_HANDLER_ERROR; + 800ce5e: f04f 30ff mov.w r0, #4294967295 + 800ce62: e7f9 b.n 800ce58 <LmHandlerDeviceTimeReq+0x18> + 800ce64: 20001074 .word 0x20001074 + +0800ce68 <LmHandlerProcess>: +{ + 800ce68: b508 push {r3, lr} + LoRaMacProcess( ); + 800ce6a: f002 ffe7 bl 800fe3c <LoRaMacProcess> + LmHandlerPackagesProcess( ); + 800ce6e: f7ff ffc9 bl 800ce04 <LmHandlerPackagesProcess> + if( LmHandlerPackageIsTxPending( ) == true ) + 800ce72: f7ff ffad bl 800cdd0 <LmHandlerPackageIsTxPending> +} + 800ce76: bd08 pop {r3, pc} + +0800ce78 <LmHandlerGetDutyCycleWaitTime>: +} + 800ce78: 4b01 ldr r3, [pc, #4] ; (800ce80 <LmHandlerGetDutyCycleWaitTime+0x8>) + 800ce7a: 6818 ldr r0, [r3, #0] + 800ce7c: 4770 bx lr + 800ce7e: bf00 nop + 800ce80: 20001074 .word 0x20001074 + +0800ce84 <LmHandlerJoinStatus>: +{ + 800ce84: b500 push {lr} + 800ce86: b08b sub sp, #44 ; 0x2c + mibReq.Type = MIB_NETWORK_ACTIVATION; + 800ce88: 2301 movs r3, #1 + 800ce8a: f88d 3000 strb.w r3, [sp] + status = LoRaMacMibGetRequestConfirm( &mibReq ); + 800ce8e: 4668 mov r0, sp + 800ce90: f003 fab8 bl 8010404 <LoRaMacMibGetRequestConfirm> + if( status == LORAMAC_STATUS_OK ) + 800ce94: b920 cbnz r0, 800cea0 <LmHandlerJoinStatus+0x1c> + if( mibReq.Param.NetworkActivation == ACTIVATION_TYPE_NONE ) + 800ce96: f89d 0004 ldrb.w r0, [sp, #4] + 800ce9a: b110 cbz r0, 800cea2 <LmHandlerJoinStatus+0x1e> + return LORAMAC_HANDLER_SET; + 800ce9c: 2001 movs r0, #1 + 800ce9e: e000 b.n 800cea2 <LmHandlerJoinStatus+0x1e> + return LORAMAC_HANDLER_RESET; + 800cea0: 2000 movs r0, #0 +} + 800cea2: b00b add sp, #44 ; 0x2c + 800cea4: f85d fb04 ldr.w pc, [sp], #4 + +0800cea8 <LmHandlerRequestClass>: +{ + 800cea8: b510 push {r4, lr} + 800ceaa: b08a sub sp, #40 ; 0x28 + 800ceac: 4604 mov r4, r0 + if( LoRaMacIsBusy() == true ) + 800ceae: f002 ffa3 bl 800fdf8 <LoRaMacIsBusy> + 800ceb2: bbb0 cbnz r0, 800cf22 <LmHandlerRequestClass+0x7a> + if( LmHandlerJoinStatus() != LORAMAC_HANDLER_SET ) + 800ceb4: f7ff ffe6 bl 800ce84 <LmHandlerJoinStatus> + 800ceb8: 2801 cmp r0, #1 + 800ceba: d135 bne.n 800cf28 <LmHandlerRequestClass+0x80> + mibReq.Type = MIB_DEVICE_CLASS; + 800cebc: 2300 movs r3, #0 + 800cebe: f88d 3000 strb.w r3, [sp] + if( LoRaMacMibGetRequestConfirm( &mibReq ) != LORAMAC_STATUS_OK ) + 800cec2: 4668 mov r0, sp + 800cec4: f003 fa9e bl 8010404 <LoRaMacMibGetRequestConfirm> + 800cec8: bb88 cbnz r0, 800cf2e <LmHandlerRequestClass+0x86> + currentClass = mibReq.Param.Class; + 800ceca: f89d 3004 ldrb.w r3, [sp, #4] + if( currentClass != newClass ) + 800cece: 42a3 cmp r3, r4 + 800ced0: d030 beq.n 800cf34 <LmHandlerRequestClass+0x8c> + switch( newClass ) + 800ced2: 2c01 cmp r4, #1 + 800ced4: d030 beq.n 800cf38 <LmHandlerRequestClass+0x90> + 800ced6: 2c02 cmp r4, #2 + 800ced8: d014 beq.n 800cf04 <LmHandlerRequestClass+0x5c> + 800ceda: b114 cbz r4, 800cee2 <LmHandlerRequestClass+0x3a> + 800cedc: 2000 movs r0, #0 +} + 800cede: b00a add sp, #40 ; 0x28 + 800cee0: bd10 pop {r4, pc} + if( currentClass != CLASS_A ) + 800cee2: b90b cbnz r3, 800cee8 <LmHandlerRequestClass+0x40> + LmHandlerErrorStatus_t errorStatus = LORAMAC_HANDLER_SUCCESS; + 800cee4: 2000 movs r0, #0 + 800cee6: e7fa b.n 800cede <LmHandlerRequestClass+0x36> + mibReq.Param.Class = newClass; + 800cee8: f88d 4004 strb.w r4, [sp, #4] + if( LoRaMacMibSetRequestConfirm( &mibReq ) == LORAMAC_STATUS_OK ) + 800ceec: 4668 mov r0, sp + 800ceee: f003 fbfd bl 80106ec <LoRaMacMibSetRequestConfirm> + 800cef2: bb20 cbnz r0, 800cf3e <LmHandlerRequestClass+0x96> + if( LmHandlerCallbacks->OnClassChange != NULL ) + 800cef4: 4b18 ldr r3, [pc, #96] ; (800cf58 <LmHandlerRequestClass+0xb0>) + 800cef6: 681b ldr r3, [r3, #0] + 800cef8: 6b1b ldr r3, [r3, #48] ; 0x30 + 800cefa: b31b cbz r3, 800cf44 <LmHandlerRequestClass+0x9c> + LmHandlerCallbacks->OnClassChange( newClass ); + 800cefc: 4620 mov r0, r4 + 800cefe: 4798 blx r3 + LmHandlerErrorStatus_t errorStatus = LORAMAC_HANDLER_SUCCESS; + 800cf00: 2000 movs r0, #0 + 800cf02: e7ec b.n 800cede <LmHandlerRequestClass+0x36> + if( currentClass != CLASS_A ) + 800cf04: bb03 cbnz r3, 800cf48 <LmHandlerRequestClass+0xa0> + mibReq.Param.Class = newClass; + 800cf06: f88d 4004 strb.w r4, [sp, #4] + if( LoRaMacMibSetRequestConfirm( &mibReq ) == LORAMAC_STATUS_OK ) + 800cf0a: 4668 mov r0, sp + 800cf0c: f003 fbee bl 80106ec <LoRaMacMibSetRequestConfirm> + 800cf10: b9e8 cbnz r0, 800cf4e <LmHandlerRequestClass+0xa6> + if( LmHandlerCallbacks->OnClassChange != NULL ) + 800cf12: 4b11 ldr r3, [pc, #68] ; (800cf58 <LmHandlerRequestClass+0xb0>) + 800cf14: 681b ldr r3, [r3, #0] + 800cf16: 6b1b ldr r3, [r3, #48] ; 0x30 + 800cf18: b1e3 cbz r3, 800cf54 <LmHandlerRequestClass+0xac> + LmHandlerCallbacks->OnClassChange( newClass ); + 800cf1a: 4620 mov r0, r4 + 800cf1c: 4798 blx r3 + LmHandlerErrorStatus_t errorStatus = LORAMAC_HANDLER_SUCCESS; + 800cf1e: 2000 movs r0, #0 + 800cf20: e7dd b.n 800cede <LmHandlerRequestClass+0x36> + return LORAMAC_HANDLER_BUSY_ERROR; + 800cf22: f06f 0001 mvn.w r0, #1 + 800cf26: e7da b.n 800cede <LmHandlerRequestClass+0x36> + return LORAMAC_HANDLER_NO_NETWORK_JOINED; + 800cf28: f06f 0002 mvn.w r0, #2 + 800cf2c: e7d7 b.n 800cede <LmHandlerRequestClass+0x36> + return LORAMAC_HANDLER_ERROR; + 800cf2e: f04f 30ff mov.w r0, #4294967295 + 800cf32: e7d4 b.n 800cede <LmHandlerRequestClass+0x36> + LmHandlerErrorStatus_t errorStatus = LORAMAC_HANDLER_SUCCESS; + 800cf34: 2000 movs r0, #0 + 800cf36: e7d2 b.n 800cede <LmHandlerRequestClass+0x36> + errorStatus = LORAMAC_HANDLER_ERROR; + 800cf38: f04f 30ff mov.w r0, #4294967295 + 800cf3c: e7cf b.n 800cede <LmHandlerRequestClass+0x36> + errorStatus = LORAMAC_HANDLER_ERROR; + 800cf3e: f04f 30ff mov.w r0, #4294967295 + 800cf42: e7cc b.n 800cede <LmHandlerRequestClass+0x36> + LmHandlerErrorStatus_t errorStatus = LORAMAC_HANDLER_SUCCESS; + 800cf44: 2000 movs r0, #0 + 800cf46: e7ca b.n 800cede <LmHandlerRequestClass+0x36> + errorStatus = LORAMAC_HANDLER_ERROR; + 800cf48: f04f 30ff mov.w r0, #4294967295 + 800cf4c: e7c7 b.n 800cede <LmHandlerRequestClass+0x36> + errorStatus = LORAMAC_HANDLER_ERROR; + 800cf4e: f04f 30ff mov.w r0, #4294967295 + 800cf52: e7c4 b.n 800cede <LmHandlerRequestClass+0x36> + LmHandlerErrorStatus_t errorStatus = LORAMAC_HANDLER_SUCCESS; + 800cf54: 2000 movs r0, #0 + 800cf56: e7c2 b.n 800cede <LmHandlerRequestClass+0x36> + 800cf58: 20001078 .word 0x20001078 + +0800cf5c <LmHandlerJoin>: +{ + 800cf5c: b510 push {r4, lr} + 800cf5e: b090 sub sp, #64 ; 0x40 + mlmeReq.Type = MLME_JOIN; + 800cf60: 2301 movs r3, #1 + 800cf62: f88d 302c strb.w r3, [sp, #44] ; 0x2c + mlmeReq.Req.Join.Datarate = LmHandlerParams.TxDatarate; + 800cf66: 4b35 ldr r3, [pc, #212] ; (800d03c <LmHandlerJoin+0xe0>) + 800cf68: f993 2004 ldrsb.w r2, [r3, #4] + 800cf6c: f88d 2031 strb.w r2, [sp, #49] ; 0x31 + mlmeReq.Req.Join.TxPower = LmHandlerParams.TxPower; + 800cf70: f993 c005 ldrsb.w ip, [r3, #5] + 800cf74: f88d c032 strb.w ip, [sp, #50] ; 0x32 + if( mode == ACTIVATION_TYPE_OTAA ) + 800cf78: 2802 cmp r0, #2 + 800cf7a: d023 beq.n 800cfc4 <LmHandlerJoin+0x68> + mlmeReq.Req.Join.NetworkActivation = ACTIVATION_TYPE_ABP; + 800cf7c: 2001 movs r0, #1 + 800cf7e: f88d 0030 strb.w r0, [sp, #48] ; 0x30 + JoinParams.Mode = ACTIVATION_TYPE_ABP; + 800cf82: 4b2f ldr r3, [pc, #188] ; (800d040 <LmHandlerJoin+0xe4>) + 800cf84: 71d8 strb r0, [r3, #7] + JoinParams.Datarate = LmHandlerParams.TxDatarate; + 800cf86: 711a strb r2, [r3, #4] + JoinParams.TxPower = LmHandlerParams.TxPower; + 800cf88: f883 c005 strb.w ip, [r3, #5] + JoinParams.Status = LORAMAC_HANDLER_SUCCESS; + 800cf8c: 2000 movs r0, #0 + 800cf8e: 7198 strb r0, [r3, #6] + JoinParams.forceRejoin = forceRejoin; + 800cf90: 7219 strb r1, [r3, #8] + if( CtxRestoreDone == false ) + 800cf92: 4b2c ldr r3, [pc, #176] ; (800d044 <LmHandlerJoin+0xe8>) + 800cf94: 781b ldrb r3, [r3, #0] + 800cf96: b30b cbz r3, 800cfdc <LmHandlerJoin+0x80> + LoRaMacStart(); + 800cf98: f003 f972 bl 8010280 <LoRaMacStart> + mibReq.Type = MIB_NETWORK_ACTIVATION; + 800cf9c: 2301 movs r3, #1 + 800cf9e: f88d 3004 strb.w r3, [sp, #4] + mibReq.Param.NetworkActivation = ACTIVATION_TYPE_ABP; + 800cfa2: f88d 3008 strb.w r3, [sp, #8] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800cfa6: a801 add r0, sp, #4 + 800cfa8: f003 fba0 bl 80106ec <LoRaMacMibSetRequestConfirm> + if( LmHandlerCallbacks->OnJoinRequest != NULL ) + 800cfac: 4b26 ldr r3, [pc, #152] ; (800d048 <LmHandlerJoin+0xec>) + 800cfae: 681b ldr r3, [r3, #0] + 800cfb0: 6a5b ldr r3, [r3, #36] ; 0x24 + 800cfb2: b10b cbz r3, 800cfb8 <LmHandlerJoin+0x5c> + LmHandlerCallbacks->OnJoinRequest( &JoinParams ); + 800cfb4: 4822 ldr r0, [pc, #136] ; (800d040 <LmHandlerJoin+0xe4>) + 800cfb6: 4798 blx r3 + LmHandlerRequestClass( LmHandlerParams.DefaultClass ); + 800cfb8: 4b20 ldr r3, [pc, #128] ; (800d03c <LmHandlerJoin+0xe0>) + 800cfba: 7858 ldrb r0, [r3, #1] + 800cfbc: f7ff ff74 bl 800cea8 <LmHandlerRequestClass> +} + 800cfc0: b010 add sp, #64 ; 0x40 + 800cfc2: bd10 pop {r4, pc} + mlmeReq.Req.Join.NetworkActivation = ACTIVATION_TYPE_OTAA; + 800cfc4: 2202 movs r2, #2 + 800cfc6: f88d 2030 strb.w r2, [sp, #48] ; 0x30 + JoinParams.Mode = ACTIVATION_TYPE_OTAA; + 800cfca: 4b1d ldr r3, [pc, #116] ; (800d040 <LmHandlerJoin+0xe4>) + 800cfcc: 71da strb r2, [r3, #7] + JoinParams.forceRejoin = forceRejoin; + 800cfce: 7219 strb r1, [r3, #8] + LoRaMacStart(); + 800cfd0: f003 f956 bl 8010280 <LoRaMacStart> + LoRaMacMlmeRequest( &mlmeReq ); + 800cfd4: a80b add r0, sp, #44 ; 0x2c + 800cfd6: f003 fe63 bl 8010ca0 <LoRaMacMlmeRequest> + 800cfda: e7f1 b.n 800cfc0 <LmHandlerJoin+0x64> + mibReq.Type = MIB_CHANNELS_DEFAULT_DATARATE; + 800cfdc: 231e movs r3, #30 + 800cfde: f88d 3004 strb.w r3, [sp, #4] + mibReq.Param.ChannelsDefaultDatarate = LmHandlerParams.TxDatarate; + 800cfe2: f88d 2008 strb.w r2, [sp, #8] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800cfe6: a801 add r0, sp, #4 + 800cfe8: f003 fb80 bl 80106ec <LoRaMacMibSetRequestConfirm> + mibReq.Type = MIB_CHANNELS_DATARATE; + 800cfec: 231f movs r3, #31 + 800cfee: f88d 3004 strb.w r3, [sp, #4] + mibReq.Param.ChannelsDatarate = LmHandlerParams.TxDatarate; + 800cff2: 4c12 ldr r4, [pc, #72] ; (800d03c <LmHandlerJoin+0xe0>) + 800cff4: f994 3004 ldrsb.w r3, [r4, #4] + 800cff8: f88d 3008 strb.w r3, [sp, #8] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800cffc: a801 add r0, sp, #4 + 800cffe: f003 fb75 bl 80106ec <LoRaMacMibSetRequestConfirm> + mibReq.Type = MIB_CHANNELS_DEFAULT_TX_POWER; + 800d002: 2321 movs r3, #33 ; 0x21 + 800d004: f88d 3004 strb.w r3, [sp, #4] + mibReq.Param.ChannelsDefaultTxPower = LmHandlerParams.TxPower; + 800d008: f994 3005 ldrsb.w r3, [r4, #5] + 800d00c: f88d 3008 strb.w r3, [sp, #8] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d010: a801 add r0, sp, #4 + 800d012: f003 fb6b bl 80106ec <LoRaMacMibSetRequestConfirm> + mibReq.Type = MIB_CHANNELS_TX_POWER; + 800d016: 2320 movs r3, #32 + 800d018: f88d 3004 strb.w r3, [sp, #4] + mibReq.Param.ChannelsTxPower = LmHandlerParams.TxPower; + 800d01c: f994 3005 ldrsb.w r3, [r4, #5] + 800d020: f88d 3008 strb.w r3, [sp, #8] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d024: a801 add r0, sp, #4 + 800d026: f003 fb61 bl 80106ec <LoRaMacMibSetRequestConfirm> + mibReq.Type = MIB_ABP_LORAWAN_VERSION; + 800d02a: 2328 movs r3, #40 ; 0x28 + 800d02c: f88d 3004 strb.w r3, [sp, #4] + mibReq.Param.AbpLrWanVersion.Value = ABP_ACTIVATION_LRWAN_VERSION; + 800d030: 4b06 ldr r3, [pc, #24] ; (800d04c <LmHandlerJoin+0xf0>) + 800d032: 9302 str r3, [sp, #8] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d034: a801 add r0, sp, #4 + 800d036: f003 fb59 bl 80106ec <LoRaMacMibSetRequestConfirm> + 800d03a: e7ad b.n 800cf98 <LmHandlerJoin+0x3c> + 800d03c: 20001090 .word 0x20001090 + 800d040: 20000830 .word 0x20000830 + 800d044: 20001070 .word 0x20001070 + 800d048: 20001078 .word 0x20001078 + 800d04c: 01000300 .word 0x01000300 + +0800d050 <LmHandlerIsBusy>: +{ + 800d050: b508 push {r3, lr} + if( LoRaMacIsBusy( ) == true ) + 800d052: f002 fed1 bl 800fdf8 <LoRaMacIsBusy> + 800d056: b100 cbz r0, 800d05a <LmHandlerIsBusy+0xa> +} + 800d058: bd08 pop {r3, pc} + if( LmHandlerJoinStatus( ) != LORAMAC_HANDLER_SET ) + 800d05a: f7ff ff13 bl 800ce84 <LmHandlerJoinStatus> + 800d05e: 2801 cmp r0, #1 + 800d060: d108 bne.n 800d074 <LmHandlerIsBusy+0x24> + if( LmHandlerPackages[PACKAGE_ID_COMPLIANCE]->IsRunning( ) == true ) + 800d062: 4b08 ldr r3, [pc, #32] ; (800d084 <LmHandlerIsBusy+0x34>) + 800d064: 681b ldr r3, [r3, #0] + 800d066: 68db ldr r3, [r3, #12] + 800d068: 4798 blx r3 + 800d06a: 2800 cmp r0, #0 + 800d06c: d1f4 bne.n 800d058 <LmHandlerIsBusy+0x8> + if( LmHandlerPackageIsTxPending( ) == true ) + 800d06e: f7ff feaf bl 800cdd0 <LmHandlerPackageIsTxPending> + 800d072: e7f1 b.n 800d058 <LmHandlerIsBusy+0x8> + LmHandlerJoin( JoinParams.Mode, JoinParams.forceRejoin ); + 800d074: 4b04 ldr r3, [pc, #16] ; (800d088 <LmHandlerIsBusy+0x38>) + 800d076: 7a19 ldrb r1, [r3, #8] + 800d078: 79d8 ldrb r0, [r3, #7] + 800d07a: f7ff ff6f bl 800cf5c <LmHandlerJoin> + return true; + 800d07e: 2001 movs r0, #1 + 800d080: e7ea b.n 800d058 <LmHandlerIsBusy+0x8> + 800d082: bf00 nop + 800d084: 2000107c .word 0x2000107c + 800d088: 20000830 .word 0x20000830 + +0800d08c <LmHandlerSend>: +{ + 800d08c: b570 push {r4, r5, r6, lr} + 800d08e: b086 sub sp, #24 + 800d090: 4604 mov r4, r0 + 800d092: 460d mov r5, r1 + 800d094: 4616 mov r6, r2 + if( LoRaMacIsBusy() == true ) + 800d096: f002 feaf bl 800fdf8 <LoRaMacIsBusy> + 800d09a: 2800 cmp r0, #0 + 800d09c: d172 bne.n 800d184 <LmHandlerSend+0xf8> + if( LoRaMacIsStopped() == true ) + 800d09e: f002 fec1 bl 800fe24 <LoRaMacIsStopped> + 800d0a2: 2800 cmp r0, #0 + 800d0a4: d171 bne.n 800d18a <LmHandlerSend+0xfe> + if( LmHandlerJoinStatus( ) != LORAMAC_HANDLER_SET ) + 800d0a6: f7ff feed bl 800ce84 <LmHandlerJoinStatus> + 800d0aa: 2801 cmp r0, #1 + 800d0ac: d144 bne.n 800d138 <LmHandlerSend+0xac> + if( ( LmHandlerPackages[PACKAGE_ID_COMPLIANCE]->IsRunning( ) == true ) + 800d0ae: 4b3b ldr r3, [pc, #236] ; (800d19c <LmHandlerSend+0x110>) + 800d0b0: 681b ldr r3, [r3, #0] + 800d0b2: 68db ldr r3, [r3, #12] + 800d0b4: 4798 blx r3 + 800d0b6: b138 cbz r0, 800d0c8 <LmHandlerSend+0x3c> + && ( appData->Port != LmHandlerPackages[PACKAGE_ID_COMPLIANCE]->Port ) && ( appData->Port != 0 ) ) + 800d0b8: 7823 ldrb r3, [r4, #0] + 800d0ba: 4a38 ldr r2, [pc, #224] ; (800d19c <LmHandlerSend+0x110>) + 800d0bc: 6812 ldr r2, [r2, #0] + 800d0be: 7812 ldrb r2, [r2, #0] + 800d0c0: 4293 cmp r3, r2 + 800d0c2: d001 beq.n 800d0c8 <LmHandlerSend+0x3c> + 800d0c4: 2b00 cmp r3, #0 + 800d0c6: d163 bne.n 800d190 <LmHandlerSend+0x104> + TxParams.MsgType = isTxConfirmed; + 800d0c8: 4b35 ldr r3, [pc, #212] ; (800d1a0 <LmHandlerSend+0x114>) + 800d0ca: 721d strb r5, [r3, #8] + mcpsReq.Type = ( isTxConfirmed == LORAMAC_HANDLER_UNCONFIRMED_MSG ) ? MCPS_UNCONFIRMED : MCPS_CONFIRMED; + 800d0cc: 3d00 subs r5, #0 + 800d0ce: bf18 it ne + 800d0d0: 2501 movne r5, #1 + 800d0d2: f88d 5004 strb.w r5, [sp, #4] + mcpsReq.Req.Unconfirmed.Datarate = LmHandlerParams.TxDatarate; + 800d0d6: 4b33 ldr r3, [pc, #204] ; (800d1a4 <LmHandlerSend+0x118>) + 800d0d8: f993 3004 ldrsb.w r3, [r3, #4] + 800d0dc: f88d 3012 strb.w r3, [sp, #18] + if( LoRaMacQueryTxPossible( appData->BufferSize, &txInfo ) != LORAMAC_STATUS_OK ) + 800d0e0: 4669 mov r1, sp + 800d0e2: 7860 ldrb r0, [r4, #1] + 800d0e4: f003 f92c bl 8010340 <LoRaMacQueryTxPossible> + 800d0e8: b370 cbz r0, 800d148 <LmHandlerSend+0xbc> + mcpsReq.Type = MCPS_UNCONFIRMED; + 800d0ea: 2300 movs r3, #0 + 800d0ec: f88d 3004 strb.w r3, [sp, #4] + mcpsReq.Req.Unconfirmed.fBuffer = NULL; + 800d0f0: 9303 str r3, [sp, #12] + mcpsReq.Req.Unconfirmed.fBufferSize = 0; + 800d0f2: f8ad 3010 strh.w r3, [sp, #16] + lmhStatus = LORAMAC_HANDLER_PAYLOAD_LENGTH_RESTRICTED; + 800d0f6: f06f 0506 mvn.w r5, #6 + TxParams.AppData = *appData; + 800d0fa: 4b29 ldr r3, [pc, #164] ; (800d1a0 <LmHandlerSend+0x114>) + 800d0fc: f103 0c10 add.w ip, r3, #16 + 800d100: e894 0003 ldmia.w r4, {r0, r1} + 800d104: e88c 0003 stmia.w ip, {r0, r1} + TxParams.Datarate = LmHandlerParams.TxDatarate; + 800d108: 4a26 ldr r2, [pc, #152] ; (800d1a4 <LmHandlerSend+0x118>) + 800d10a: f992 2004 ldrsb.w r2, [r2, #4] + 800d10e: 729a strb r2, [r3, #10] + status = LoRaMacMcpsRequest( &mcpsReq, allowDelayedTx ); + 800d110: 4631 mov r1, r6 + 800d112: a801 add r0, sp, #4 + 800d114: f003 fea4 bl 8010e60 <LoRaMacMcpsRequest> + DutyCycleWaitTime = mcpsReq.ReqReturn.DutyCycleWaitTime; + 800d118: 9a05 ldr r2, [sp, #20] + 800d11a: 4b23 ldr r3, [pc, #140] ; (800d1a8 <LmHandlerSend+0x11c>) + 800d11c: 601a str r2, [r3, #0] + switch( status ) + 800d11e: 2811 cmp r0, #17 + 800d120: d82d bhi.n 800d17e <LmHandlerSend+0xf2> + 800d122: e8df f000 tbb [pc, r0] + 800d126: 1c21 .short 0x1c21 + 800d128: 2c2c2c2c .word 0x2c2c2c2c + 800d12c: 2c2c382c .word 0x2c2c382c + 800d130: 2c2c292c .word 0x2c2c292c + 800d134: 261c1c1c .word 0x261c1c1c + LmHandlerJoin( JoinParams.Mode, JoinParams.forceRejoin ); + 800d138: 4b1c ldr r3, [pc, #112] ; (800d1ac <LmHandlerSend+0x120>) + 800d13a: 7a19 ldrb r1, [r3, #8] + 800d13c: 79d8 ldrb r0, [r3, #7] + 800d13e: f7ff ff0d bl 800cf5c <LmHandlerJoin> + return LORAMAC_HANDLER_NO_NETWORK_JOINED; + 800d142: f06f 0502 mvn.w r5, #2 + 800d146: e00c b.n 800d162 <LmHandlerSend+0xd6> + mcpsReq.Req.Unconfirmed.fPort = appData->Port; + 800d148: 7823 ldrb r3, [r4, #0] + 800d14a: f88d 3008 strb.w r3, [sp, #8] + mcpsReq.Req.Unconfirmed.fBufferSize = appData->BufferSize; + 800d14e: 7863 ldrb r3, [r4, #1] + 800d150: f8ad 3010 strh.w r3, [sp, #16] + mcpsReq.Req.Unconfirmed.fBuffer = appData->Buffer; + 800d154: 6863 ldr r3, [r4, #4] + 800d156: 9303 str r3, [sp, #12] + LmHandlerErrorStatus_t lmhStatus = LORAMAC_HANDLER_ERROR; + 800d158: f04f 35ff mov.w r5, #4294967295 + 800d15c: e7cd b.n 800d0fa <LmHandlerSend+0x6e> + switch( status ) + 800d15e: f06f 0501 mvn.w r5, #1 +} + 800d162: 4628 mov r0, r5 + 800d164: b006 add sp, #24 + 800d166: bd70 pop {r4, r5, r6, pc} + if( lmhStatus != LORAMAC_HANDLER_PAYLOAD_LENGTH_RESTRICTED ) + 800d168: f115 0f07 cmn.w r5, #7 + 800d16c: d0f9 beq.n 800d162 <LmHandlerSend+0xd6> + lmhStatus = LORAMAC_HANDLER_SUCCESS; + 800d16e: 2500 movs r5, #0 + 800d170: e7f7 b.n 800d162 <LmHandlerSend+0xd6> + lmhStatus = LORAMAC_HANDLER_CRYPTO_ERROR; + 800d172: f06f 0504 mvn.w r5, #4 + break; + 800d176: e7f4 b.n 800d162 <LmHandlerSend+0xd6> + lmhStatus = LORAMAC_HANDLER_DUTYCYCLE_RESTRICTED; + 800d178: f06f 0505 mvn.w r5, #5 + break; + 800d17c: e7f1 b.n 800d162 <LmHandlerSend+0xd6> + lmhStatus = LORAMAC_HANDLER_ERROR; + 800d17e: f04f 35ff mov.w r5, #4294967295 + break; + 800d182: e7ee b.n 800d162 <LmHandlerSend+0xd6> + return LORAMAC_HANDLER_BUSY_ERROR; + 800d184: f06f 0501 mvn.w r5, #1 + 800d188: e7eb b.n 800d162 <LmHandlerSend+0xd6> + return LORAMAC_HANDLER_NO_NETWORK_JOINED; + 800d18a: f06f 0502 mvn.w r5, #2 + 800d18e: e7e8 b.n 800d162 <LmHandlerSend+0xd6> + return LORAMAC_HANDLER_COMPLIANCE_RUNNING; + 800d190: f06f 0503 mvn.w r5, #3 + 800d194: e7e5 b.n 800d162 <LmHandlerSend+0xd6> + lmhStatus = LORAMAC_HANDLER_NO_NETWORK_JOINED; + 800d196: f06f 0502 mvn.w r5, #2 + 800d19a: e7e2 b.n 800d162 <LmHandlerSend+0xd6> + 800d19c: 2000107c .word 0x2000107c + 800d1a0: 2000085c .word 0x2000085c + 800d1a4: 20001090 .word 0x20001090 + 800d1a8: 20001074 .word 0x20001074 + 800d1ac: 20000830 .word 0x20000830 + +0800d1b0 <LmHandlerGetCurrentClass>: + if( deviceClass == NULL ) + 800d1b0: b170 cbz r0, 800d1d0 <LmHandlerGetCurrentClass+0x20> +{ + 800d1b2: b510 push {r4, lr} + 800d1b4: b08a sub sp, #40 ; 0x28 + 800d1b6: 4604 mov r4, r0 + mibReq.Type = MIB_DEVICE_CLASS; + 800d1b8: 2300 movs r3, #0 + 800d1ba: f88d 3000 strb.w r3, [sp] + if( LoRaMacMibGetRequestConfirm( &mibReq ) != LORAMAC_STATUS_OK ) + 800d1be: 4668 mov r0, sp + 800d1c0: f003 f920 bl 8010404 <LoRaMacMibGetRequestConfirm> + 800d1c4: b938 cbnz r0, 800d1d6 <LmHandlerGetCurrentClass+0x26> + *deviceClass = mibReq.Param.Class; + 800d1c6: f89d 3004 ldrb.w r3, [sp, #4] + 800d1ca: 7023 strb r3, [r4, #0] +} + 800d1cc: b00a add sp, #40 ; 0x28 + 800d1ce: bd10 pop {r4, pc} + return LORAMAC_HANDLER_ERROR; + 800d1d0: f04f 30ff mov.w r0, #4294967295 +} + 800d1d4: 4770 bx lr + return LORAMAC_HANDLER_ERROR; + 800d1d6: f04f 30ff mov.w r0, #4294967295 + 800d1da: e7f7 b.n 800d1cc <LmHandlerGetCurrentClass+0x1c> + +0800d1dc <McpsIndication>: +{ + 800d1dc: b510 push {r4, lr} + 800d1de: b086 sub sp, #24 + DeviceClass_t deviceClass = CLASS_A; + 800d1e0: 2300 movs r3, #0 + 800d1e2: f88d 300f strb.w r3, [sp, #15] + RxParams.IsMcpsIndication = 1; + 800d1e6: 4a21 ldr r2, [pc, #132] ; (800d26c <McpsIndication+0x90>) + 800d1e8: 2301 movs r3, #1 + 800d1ea: 7013 strb r3, [r2, #0] + RxParams.Status = mcpsIndication->Status; + 800d1ec: 7843 ldrb r3, [r0, #1] + 800d1ee: 7053 strb r3, [r2, #1] + if( RxParams.Status != LORAMAC_EVENT_INFO_STATUS_OK ) + 800d1f0: 2b00 cmp r3, #0 + 800d1f2: d12e bne.n 800d252 <McpsIndication+0x76> + 800d1f4: 4604 mov r4, r0 + RxParams.Datarate = mcpsIndication->RxDatarate; + 800d1f6: f990 2004 ldrsb.w r2, [r0, #4] + 800d1fa: 4b1c ldr r3, [pc, #112] ; (800d26c <McpsIndication+0x90>) + 800d1fc: 721a strb r2, [r3, #8] + RxParams.Rssi = rxStatus->Rssi; + 800d1fe: f9b1 2000 ldrsh.w r2, [r1] + 800d202: 725a strb r2, [r3, #9] + RxParams.Snr = rxStatus->Snr; + 800d204: f991 2002 ldrsb.w r2, [r1, #2] + 800d208: 729a strb r2, [r3, #10] + RxParams.RxSlot = rxStatus->RxSlot; + 800d20a: 78ca ldrb r2, [r1, #3] + 800d20c: 741a strb r2, [r3, #16] + RxParams.DownlinkCounter = mcpsIndication->DownLinkCounter; + 800d20e: 6902 ldr r2, [r0, #16] + 800d210: 60da str r2, [r3, #12] + appData.Port = mcpsIndication->Port; + 800d212: 78c3 ldrb r3, [r0, #3] + 800d214: f88d 3010 strb.w r3, [sp, #16] + appData.BufferSize = mcpsIndication->BufferSize; + 800d218: 7b03 ldrb r3, [r0, #12] + 800d21a: f88d 3011 strb.w r3, [sp, #17] + appData.Buffer = mcpsIndication->Buffer; + 800d21e: 6883 ldr r3, [r0, #8] + 800d220: 9305 str r3, [sp, #20] + if( LmHandlerCallbacks->OnRxData != NULL ) + 800d222: 4b13 ldr r3, [pc, #76] ; (800d270 <McpsIndication+0x94>) + 800d224: 681b ldr r3, [r3, #0] + 800d226: 6adb ldr r3, [r3, #44] ; 0x2c + 800d228: b113 cbz r3, 800d230 <McpsIndication+0x54> + LmHandlerCallbacks->OnRxData( &appData, &RxParams ); + 800d22a: 4910 ldr r1, [pc, #64] ; (800d26c <McpsIndication+0x90>) + 800d22c: a804 add r0, sp, #16 + 800d22e: 4798 blx r3 + if( ( LmHandlerCallbacks->OnSysTimeUpdate != NULL ) && ( mcpsIndication->DeviceTimeAnsReceived == true ) ) + 800d230: 4b0f ldr r3, [pc, #60] ; (800d270 <McpsIndication+0x94>) + 800d232: 681b ldr r3, [r3, #0] + 800d234: 6b9b ldr r3, [r3, #56] ; 0x38 + 800d236: b113 cbz r3, 800d23e <McpsIndication+0x62> + 800d238: 7e22 ldrb r2, [r4, #24] + 800d23a: b102 cbz r2, 800d23e <McpsIndication+0x62> + LmHandlerCallbacks->OnSysTimeUpdate( ); + 800d23c: 4798 blx r3 + LmHandlerPackagesNotify( PACKAGE_MCPS_INDICATION, mcpsIndication ); + 800d23e: 4621 mov r1, r4 + 800d240: 2001 movs r0, #1 + 800d242: f7ff fd33 bl 800ccac <LmHandlerPackagesNotify> + LmHandlerGetCurrentClass( &deviceClass ); + 800d246: f10d 000f add.w r0, sp, #15 + 800d24a: f7ff ffb1 bl 800d1b0 <LmHandlerGetCurrentClass> + if( mcpsIndication->IsUplinkTxPending != 0 ) + 800d24e: 7963 ldrb r3, [r4, #5] + 800d250: b90b cbnz r3, 800d256 <McpsIndication+0x7a> +} + 800d252: b006 add sp, #24 + 800d254: bd10 pop {r4, pc} + LmHandlerAppData_t appData = + 800d256: 2100 movs r1, #0 + 800d258: f88d 1004 strb.w r1, [sp, #4] + 800d25c: f88d 1005 strb.w r1, [sp, #5] + 800d260: 9102 str r1, [sp, #8] + LmHandlerSend( &appData, LORAMAC_HANDLER_UNCONFIRMED_MSG, true ); + 800d262: 2201 movs r2, #1 + 800d264: a801 add r0, sp, #4 + 800d266: f7ff ff11 bl 800d08c <LmHandlerSend> + 800d26a: e7f2 b.n 800d252 <McpsIndication+0x76> + 800d26c: 20000848 .word 0x20000848 + 800d270: 20001078 .word 0x20001078 + +0800d274 <LmHandlerGetTxDatarate>: + if( txDatarate == NULL ) + 800d274: b180 cbz r0, 800d298 <LmHandlerGetTxDatarate+0x24> +{ + 800d276: b510 push {r4, lr} + 800d278: b08a sub sp, #40 ; 0x28 + 800d27a: 4604 mov r4, r0 + mibGet.Type = MIB_CHANNELS_DATARATE; + 800d27c: 231f movs r3, #31 + 800d27e: f88d 3000 strb.w r3, [sp] + if( LoRaMacMibGetRequestConfirm( &mibGet ) != LORAMAC_STATUS_OK ) + 800d282: 4668 mov r0, sp + 800d284: f003 f8be bl 8010404 <LoRaMacMibGetRequestConfirm> + 800d288: b948 cbnz r0, 800d29e <LmHandlerGetTxDatarate+0x2a> + *txDatarate = mibGet.Param.ChannelsDatarate; + 800d28a: f99d 3004 ldrsb.w r3, [sp, #4] + 800d28e: 7023 strb r3, [r4, #0] + LmHandlerParams.TxDatarate = *txDatarate; + 800d290: 4a04 ldr r2, [pc, #16] ; (800d2a4 <LmHandlerGetTxDatarate+0x30>) + 800d292: 7113 strb r3, [r2, #4] +} + 800d294: b00a add sp, #40 ; 0x28 + 800d296: bd10 pop {r4, pc} + return LORAMAC_HANDLER_ERROR; + 800d298: f04f 30ff mov.w r0, #4294967295 +} + 800d29c: 4770 bx lr + return LORAMAC_HANDLER_ERROR; + 800d29e: f04f 30ff mov.w r0, #4294967295 + 800d2a2: e7f7 b.n 800d294 <LmHandlerGetTxDatarate+0x20> + 800d2a4: 20001090 .word 0x20001090 + +0800d2a8 <LmHandlerSetSystemMaxRxError>: +{ + 800d2a8: b500 push {lr} + 800d2aa: b08b sub sp, #44 ; 0x2c + mibReq.Type = MIB_SYSTEM_MAX_RX_ERROR; + 800d2ac: 2322 movs r3, #34 ; 0x22 + 800d2ae: f88d 3000 strb.w r3, [sp] + mibReq.Param.SystemMaxRxError = maxErrorInMs; + 800d2b2: 9001 str r0, [sp, #4] + if( LoRaMacMibSetRequestConfirm( &mibReq ) != LORAMAC_STATUS_OK ) + 800d2b4: 4668 mov r0, sp + 800d2b6: f003 fa19 bl 80106ec <LoRaMacMibSetRequestConfirm> + 800d2ba: b910 cbnz r0, 800d2c2 <LmHandlerSetSystemMaxRxError+0x1a> +} + 800d2bc: b00b add sp, #44 ; 0x2c + 800d2be: f85d fb04 ldr.w pc, [sp], #4 + return LORAMAC_HANDLER_ERROR; + 800d2c2: f04f 30ff mov.w r0, #4294967295 + 800d2c6: e7f9 b.n 800d2bc <LmHandlerSetSystemMaxRxError+0x14> + +0800d2c8 <LmHandlerConfigure>: +{ + 800d2c8: b570 push {r4, r5, r6, lr} + 800d2ca: b08e sub sp, #56 ; 0x38 + 800d2cc: 4601 mov r1, r0 + memcpy1( ( void * )&LmHandlerParams, ( const void * )handlerParams, sizeof( LmHandlerParams_t ) ); + 800d2ce: 4c6c ldr r4, [pc, #432] ; (800d480 <LmHandlerConfigure+0x1b8>) + 800d2d0: 2218 movs r2, #24 + 800d2d2: 4620 mov r0, r4 + 800d2d4: f007 f961 bl 801459a <memcpy1> + loraInfo = LoraInfo_GetPtr(); + 800d2d8: f7f7 fc68 bl 8004bac <LoraInfo_GetPtr> + if( 0U == ( ( 1 << ( LmHandlerParams.ActiveRegion ) ) & ( loraInfo->Region ) ) ) + 800d2dc: 7822 ldrb r2, [r4, #0] + 800d2de: 2301 movs r3, #1 + 800d2e0: 4093 lsls r3, r2 + 800d2e2: 6841 ldr r1, [r0, #4] + 800d2e4: 420b tst r3, r1 + 800d2e6: d106 bne.n 800d2f6 <LmHandlerConfigure+0x2e> + MW_LOG( TS_ON, VLEVEL_ALWAYS, "error: Region is not defined in the MW: set lorawan_conf.h accordingly\r\n" ); + 800d2e8: 4b66 ldr r3, [pc, #408] ; (800d484 <LmHandlerConfigure+0x1bc>) + 800d2ea: 2201 movs r2, #1 + 800d2ec: 2100 movs r1, #0 + 800d2ee: 4608 mov r0, r1 + 800d2f0: f009 fc22 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + while( 1 ) {} /* error: Region is not defined in the MW */ + 800d2f4: e7fe b.n 800d2f4 <LmHandlerConfigure+0x2c> + if( LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LmHandlerParams.ActiveRegion ) != LORAMAC_STATUS_OK ) + 800d2f6: 4964 ldr r1, [pc, #400] ; (800d488 <LmHandlerConfigure+0x1c0>) + 800d2f8: 4864 ldr r0, [pc, #400] ; (800d48c <LmHandlerConfigure+0x1c4>) + 800d2fa: f002 fde7 bl 800fecc <LoRaMacInitialization> + 800d2fe: 2800 cmp r0, #0 + 800d300: f040 80b7 bne.w 800d472 <LmHandlerConfigure+0x1aa> + mibReq.Type = MIB_NVM_CTXS; + 800d304: 2326 movs r3, #38 ; 0x26 + 800d306: f88d 3010 strb.w r3, [sp, #16] + if( LoRaMacMibSetRequestConfirm( &mibReq ) == LORAMAC_STATUS_OK ) + 800d30a: a804 add r0, sp, #16 + 800d30c: f003 f9ee bl 80106ec <LoRaMacMibSetRequestConfirm> + 800d310: 2800 cmp r0, #0 + 800d312: d17c bne.n 800d40e <LmHandlerConfigure+0x146> + CtxRestoreDone = true; + 800d314: 4b5e ldr r3, [pc, #376] ; (800d490 <LmHandlerConfigure+0x1c8>) + 800d316: 2201 movs r2, #1 + 800d318: 701a strb r2, [r3, #0] + if( CtxRestoreDone == true ) + 800d31a: 4b5d ldr r3, [pc, #372] ; (800d490 <LmHandlerConfigure+0x1c8>) + 800d31c: 781b ldrb r3, [r3, #0] + 800d31e: 2b00 cmp r3, #0 + 800d320: f000 809e beq.w 800d460 <LmHandlerConfigure+0x198> + if( LmHandlerCallbacks->OnNvmDataChange != NULL ) + 800d324: 4b5b ldr r3, [pc, #364] ; (800d494 <LmHandlerConfigure+0x1cc>) + 800d326: 681b ldr r3, [r3, #0] + 800d328: 69db ldr r3, [r3, #28] + 800d32a: b10b cbz r3, 800d330 <LmHandlerConfigure+0x68> + LmHandlerCallbacks->OnNvmDataChange( LORAMAC_HANDLER_NVM_RESTORE ); + 800d32c: 2000 movs r0, #0 + 800d32e: 4798 blx r3 + mibReq.Type = MIB_NVM_CTXS; + 800d330: 2326 movs r3, #38 ; 0x26 + 800d332: f88d 3010 strb.w r3, [sp, #16] + LoRaMacMibGetRequestConfirm( &mibReq ); + 800d336: a804 add r0, sp, #16 + 800d338: f003 f864 bl 8010404 <LoRaMacMibGetRequestConfirm> + LoRaMacNvmData_t *current_nvm = mibReq.Param.Contexts; + 800d33c: 9a05 ldr r2, [sp, #20] + LmHandlerParams.ActiveRegion = current_nvm->MacGroup2.Region; + 800d33e: f892 1048 ldrb.w r1, [r2, #72] ; 0x48 + 800d342: 4b4f ldr r3, [pc, #316] ; (800d480 <LmHandlerConfigure+0x1b8>) + 800d344: 7019 strb r1, [r3, #0] + LmHandlerParams.DefaultClass = current_nvm->MacGroup2.DeviceClass; + 800d346: f892 1118 ldrb.w r1, [r2, #280] ; 0x118 + 800d34a: 7059 strb r1, [r3, #1] + LmHandlerParams.AdrEnable = current_nvm->MacGroup2.AdrCtrlOn; + 800d34c: f892 211a ldrb.w r2, [r2, #282] ; 0x11a + 800d350: 709a strb r2, [r3, #2] + if( SecureElementInitMcuID( LoRaMacCallbacks.GetUniqueId, LoRaMacCallbacks.GetDevAddress ) != SECURE_ELEMENT_SUCCESS ) + 800d352: 4b4d ldr r3, [pc, #308] ; (800d488 <LmHandlerConfigure+0x1c0>) + 800d354: 68d9 ldr r1, [r3, #12] + 800d356: 6898 ldr r0, [r3, #8] + 800d358: f007 f832 bl 80143c0 <SecureElementInitMcuID> + 800d35c: 2800 cmp r0, #0 + 800d35e: f040 808b bne.w 800d478 <LmHandlerConfigure+0x1b0> + mibReq.Type = MIB_DEV_ADDR; + 800d362: 2306 movs r3, #6 + 800d364: f88d 3010 strb.w r3, [sp, #16] + LoRaMacMibGetRequestConfirm( &mibReq ); + 800d368: a804 add r0, sp, #16 + 800d36a: f003 f84b bl 8010404 <LoRaMacMibGetRequestConfirm> + CommissioningParams.DevAddr = mibReq.Param.DevAddr; + 800d36e: 4c4a ldr r4, [pc, #296] ; (800d498 <LmHandlerConfigure+0x1d0>) + 800d370: 9b05 ldr r3, [sp, #20] + 800d372: 6163 str r3, [r4, #20] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d374: a804 add r0, sp, #16 + 800d376: f003 f9b9 bl 80106ec <LoRaMacMibSetRequestConfirm> + mibReq.Type = MIB_DEV_EUI; + 800d37a: 2302 movs r3, #2 + 800d37c: f88d 3010 strb.w r3, [sp, #16] + mibReq.Param.DevEui = CommissioningParams.DevEui; + 800d380: 9405 str r4, [sp, #20] + LoRaMacMibGetRequestConfirm( &mibReq ); + 800d382: a804 add r0, sp, #16 + 800d384: f003 f83e bl 8010404 <LoRaMacMibGetRequestConfirm> + mibReq.Type = MIB_JOIN_EUI; + 800d388: 2303 movs r3, #3 + 800d38a: f88d 3010 strb.w r3, [sp, #16] + mibReq.Param.JoinEui = CommissioningParams.JoinEui; + 800d38e: 3408 adds r4, #8 + 800d390: 9405 str r4, [sp, #20] + LoRaMacMibGetRequestConfirm( &mibReq ); + 800d392: a804 add r0, sp, #16 + 800d394: f003 f836 bl 8010404 <LoRaMacMibGetRequestConfirm> + SecureElementPrintKeys(); + 800d398: f007 f8ac bl 80144f4 <SecureElementPrintKeys> + mibReq.Type = MIB_PUBLIC_NETWORK; + 800d39c: 260f movs r6, #15 + 800d39e: f88d 6010 strb.w r6, [sp, #16] + mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; + 800d3a2: 2301 movs r3, #1 + 800d3a4: f88d 3014 strb.w r3, [sp, #20] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d3a8: a804 add r0, sp, #16 + 800d3aa: f003 f99f bl 80106ec <LoRaMacMibSetRequestConfirm> + mibReq.Type = MIB_REPEATER_SUPPORT; + 800d3ae: 2310 movs r3, #16 + 800d3b0: f88d 3010 strb.w r3, [sp, #16] + mibReq.Param.EnableRepeaterSupport = LORAWAN_REPEATER_SUPPORT; + 800d3b4: 2500 movs r5, #0 + 800d3b6: f88d 5014 strb.w r5, [sp, #20] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d3ba: eb0d 0003 add.w r0, sp, r3 + 800d3be: f003 f995 bl 80106ec <LoRaMacMibSetRequestConfirm> + mibReq.Type = MIB_ADR; + 800d3c2: 2304 movs r3, #4 + 800d3c4: f88d 3010 strb.w r3, [sp, #16] + mibReq.Param.AdrEnable = LmHandlerParams.AdrEnable; + 800d3c8: 4c2d ldr r4, [pc, #180] ; (800d480 <LmHandlerConfigure+0x1b8>) + 800d3ca: 78a3 ldrb r3, [r4, #2] + 800d3cc: f88d 3014 strb.w r3, [sp, #20] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d3d0: a804 add r0, sp, #16 + 800d3d2: f003 f98b bl 80106ec <LoRaMacMibSetRequestConfirm> + mibReq.Type = MIB_RXB_C_TIMEOUT; + 800d3d6: 2339 movs r3, #57 ; 0x39 + 800d3d8: f88d 3010 strb.w r3, [sp, #16] + mibReq.Param.RxBCTimeout = LmHandlerParams.RxBCTimeout; + 800d3dc: 6963 ldr r3, [r4, #20] + 800d3de: 9305 str r3, [sp, #20] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d3e0: a804 add r0, sp, #16 + 800d3e2: f003 f983 bl 80106ec <LoRaMacMibSetRequestConfirm> + getPhy.Attribute = PHY_DUTY_CYCLE; + 800d3e6: f88d 6008 strb.w r6, [sp, #8] + phyParam = RegionGetPhyParam( LmHandlerParams.ActiveRegion, &getPhy ); + 800d3ea: a902 add r1, sp, #8 + 800d3ec: 7820 ldrb r0, [r4, #0] + 800d3ee: f004 fec6 bl 801217e <RegionGetPhyParam> + 800d3f2: 9001 str r0, [sp, #4] + LmHandlerParams.DutyCycleEnabled = ( bool ) phyParam.Value; + 800d3f4: 1b43 subs r3, r0, r5 + 800d3f6: bf18 it ne + 800d3f8: 2301 movne r3, #1 + 800d3fa: 71e3 strb r3, [r4, #7] + LmHandlerSetSystemMaxRxError( 20 ); + 800d3fc: 2014 movs r0, #20 + 800d3fe: f7ff ff53 bl 800d2a8 <LmHandlerSetSystemMaxRxError> + LoRaMacTestSetDutyCycleOn( LmHandlerParams.DutyCycleEnabled ); + 800d402: 79e0 ldrb r0, [r4, #7] + 800d404: f003 fde8 bl 8010fd8 <LoRaMacTestSetDutyCycleOn> + return LORAMAC_HANDLER_SUCCESS; + 800d408: 4628 mov r0, r5 +} + 800d40a: b00e add sp, #56 ; 0x38 + 800d40c: bd70 pop {r4, r5, r6, pc} + mibReq.Type = MIB_NVM_BKP_CTXS; + 800d40e: 2327 movs r3, #39 ; 0x27 + 800d410: f88d 3010 strb.w r3, [sp, #16] + if( LmHandlerCallbacks->OnRestoreContextRequest != NULL ) + 800d414: 4b1f ldr r3, [pc, #124] ; (800d494 <LmHandlerConfigure+0x1cc>) + 800d416: 681b ldr r3, [r3, #0] + 800d418: 691b ldr r3, [r3, #16] + 800d41a: b14b cbz r3, 800d430 <LmHandlerConfigure+0x168> + LoRaMacMibGetRequestConfirm( &mibReq ); + 800d41c: a804 add r0, sp, #16 + 800d41e: f002 fff1 bl 8010404 <LoRaMacMibGetRequestConfirm> + LmHandlerCallbacks->OnRestoreContextRequest( mibReq.Param.BackupContexts, sizeof( LoRaMacNvmData_t ) ); + 800d422: 4b1c ldr r3, [pc, #112] ; (800d494 <LmHandlerConfigure+0x1cc>) + 800d424: 681b ldr r3, [r3, #0] + 800d426: 691b ldr r3, [r3, #16] + 800d428: f44f 61ee mov.w r1, #1904 ; 0x770 + 800d42c: 9805 ldr r0, [sp, #20] + 800d42e: 4798 blx r3 + mibReq.Type = MIB_NVM_CTXS; + 800d430: 2326 movs r3, #38 ; 0x26 + 800d432: f88d 3010 strb.w r3, [sp, #16] + if( LoRaMacMibSetRequestConfirm( &mibReq ) == LORAMAC_STATUS_OK ) + 800d436: a804 add r0, sp, #16 + 800d438: f003 f958 bl 80106ec <LoRaMacMibSetRequestConfirm> + 800d43c: 2800 cmp r0, #0 + 800d43e: f47f af6c bne.w 800d31a <LmHandlerConfigure+0x52> + mibReq.Type = MIB_NETWORK_ACTIVATION; + 800d442: 2301 movs r3, #1 + 800d444: f88d 3010 strb.w r3, [sp, #16] + LoRaMacMibGetRequestConfirm( &mibReq ); + 800d448: a804 add r0, sp, #16 + 800d44a: f002 ffdb bl 8010404 <LoRaMacMibGetRequestConfirm> + if( mibReq.Param.NetworkActivation != ACTIVATION_TYPE_NONE ) + 800d44e: f89d 3014 ldrb.w r3, [sp, #20] + 800d452: 2b00 cmp r3, #0 + 800d454: f43f af61 beq.w 800d31a <LmHandlerConfigure+0x52> + CtxRestoreDone = true; + 800d458: 4b0d ldr r3, [pc, #52] ; (800d490 <LmHandlerConfigure+0x1c8>) + 800d45a: 2201 movs r2, #1 + 800d45c: 701a strb r2, [r3, #0] + 800d45e: e75c b.n 800d31a <LmHandlerConfigure+0x52> + mibReq.Type = MIB_NET_ID; + 800d460: 2305 movs r3, #5 + 800d462: f88d 3010 strb.w r3, [sp, #16] + mibReq.Param.NetID = LORAWAN_NETWORK_ID; + 800d466: 2300 movs r3, #0 + 800d468: 9305 str r3, [sp, #20] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d46a: a804 add r0, sp, #16 + 800d46c: f003 f93e bl 80106ec <LoRaMacMibSetRequestConfirm> + 800d470: e76f b.n 800d352 <LmHandlerConfigure+0x8a> + return LORAMAC_HANDLER_ERROR; + 800d472: f04f 30ff mov.w r0, #4294967295 + 800d476: e7c8 b.n 800d40a <LmHandlerConfigure+0x142> + return LORAMAC_HANDLER_ERROR; + 800d478: f04f 30ff mov.w r0, #4294967295 + 800d47c: e7c5 b.n 800d40a <LmHandlerConfigure+0x142> + 800d47e: bf00 nop + 800d480: 20001090 .word 0x20001090 + 800d484: 080185c4 .word 0x080185c4 + 800d488: 200010a8 .word 0x200010a8 + 800d48c: 200010c0 .word 0x200010c0 + 800d490: 20001070 .word 0x20001070 + 800d494: 20001078 .word 0x20001078 + 800d498: 20001058 .word 0x20001058 + +0800d49c <LmHandlerPackageRegister>: +{ + 800d49c: b530 push {r4, r5, lr} + 800d49e: b083 sub sp, #12 + 800d4a0: 460d mov r5, r1 + LmhPackage_t *package = NULL; + 800d4a2: 2300 movs r3, #0 + 800d4a4: 9301 str r3, [sp, #4] + switch( id ) + 800d4a6: 4604 mov r4, r0 + 800d4a8: b9c8 cbnz r0, 800d4de <LmHandlerPackageRegister+0x42> + package = LmhpCompliancePackageFactory( ); + 800d4aa: f000 fb21 bl 800daf0 <LmhpCompliancePackageFactory> + 800d4ae: 9001 str r0, [sp, #4] + if( package != NULL ) + 800d4b0: 9b01 ldr r3, [sp, #4] + 800d4b2: b1e3 cbz r3, 800d4ee <LmHandlerPackageRegister+0x52> + LmHandlerPackages[id] = package; + 800d4b4: 4a0f ldr r2, [pc, #60] ; (800d4f4 <LmHandlerPackageRegister+0x58>) + 800d4b6: f842 3024 str.w r3, [r2, r4, lsl #2] + LmHandlerPackages[id]->OnJoinRequest = LmHandlerJoin; + 800d4ba: 4a0f ldr r2, [pc, #60] ; (800d4f8 <LmHandlerPackageRegister+0x5c>) + 800d4bc: 62da str r2, [r3, #44] ; 0x2c + LmHandlerPackages[id]->OnSendRequest = LmHandlerSend; + 800d4be: 4a0f ldr r2, [pc, #60] ; (800d4fc <LmHandlerPackageRegister+0x60>) + 800d4c0: 631a str r2, [r3, #48] ; 0x30 + LmHandlerPackages[id]->OnDeviceTimeRequest = LmHandlerDeviceTimeReq; + 800d4c2: 4a0f ldr r2, [pc, #60] ; (800d500 <LmHandlerPackageRegister+0x64>) + 800d4c4: 635a str r2, [r3, #52] ; 0x34 + LmHandlerPackages[id]->OnPackageProcessEvent = LmHandlerCallbacks->OnMacProcess; + 800d4c6: 4a0f ldr r2, [pc, #60] ; (800d504 <LmHandlerPackageRegister+0x68>) + 800d4c8: 6812 ldr r2, [r2, #0] + 800d4ca: 6992 ldr r2, [r2, #24] + 800d4cc: 619a str r2, [r3, #24] + LmHandlerPackages[id]->Init( params, AppData.Buffer, AppData.BufferSize ); + 800d4ce: 685b ldr r3, [r3, #4] + 800d4d0: 22f2 movs r2, #242 ; 0xf2 + 800d4d2: 490d ldr r1, [pc, #52] ; (800d508 <LmHandlerPackageRegister+0x6c>) + 800d4d4: 4628 mov r0, r5 + 800d4d6: 4798 blx r3 + return LORAMAC_HANDLER_SUCCESS; + 800d4d8: 2000 movs r0, #0 +} + 800d4da: b003 add sp, #12 + 800d4dc: bd30 pop {r4, r5, pc} + if( LORAMAC_HANDLER_SUCCESS != LmhpPackagesRegister( id, &package ) ) + 800d4de: a901 add r1, sp, #4 + 800d4e0: f000 fb0c bl 800dafc <LmhpPackagesRegister> + 800d4e4: 2800 cmp r0, #0 + 800d4e6: d0e3 beq.n 800d4b0 <LmHandlerPackageRegister+0x14> + return LORAMAC_HANDLER_ERROR; + 800d4e8: f04f 30ff mov.w r0, #4294967295 + 800d4ec: e7f5 b.n 800d4da <LmHandlerPackageRegister+0x3e> + return LORAMAC_HANDLER_ERROR; + 800d4ee: f04f 30ff mov.w r0, #4294967295 + 800d4f2: e7f2 b.n 800d4da <LmHandlerPackageRegister+0x3e> + 800d4f4: 2000107c .word 0x2000107c + 800d4f8: 0800cf5d .word 0x0800cf5d + 800d4fc: 0800d08d .word 0x0800d08d + 800d500: 0800ce41 .word 0x0800ce41 + 800d504: 20001078 .word 0x20001078 + 800d508: 20000f64 .word 0x20000f64 + +0800d50c <LmHandlerInit>: +{ + 800d50c: b500 push {lr} + 800d50e: b083 sub sp, #12 + 800d510: 9101 str r1, [sp, #4] + LmHandlerCallbacks = handlerCallbacks; + 800d512: 4b15 ldr r3, [pc, #84] ; (800d568 <LmHandlerInit+0x5c>) + 800d514: 6018 str r0, [r3, #0] + LoRaMacPrimitives.MacMcpsConfirm = McpsConfirm; + 800d516: 4b15 ldr r3, [pc, #84] ; (800d56c <LmHandlerInit+0x60>) + 800d518: 4a15 ldr r2, [pc, #84] ; (800d570 <LmHandlerInit+0x64>) + 800d51a: 601a str r2, [r3, #0] + LoRaMacPrimitives.MacMcpsIndication = McpsIndication; + 800d51c: 4a15 ldr r2, [pc, #84] ; (800d574 <LmHandlerInit+0x68>) + 800d51e: 605a str r2, [r3, #4] + LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; + 800d520: 4a15 ldr r2, [pc, #84] ; (800d578 <LmHandlerInit+0x6c>) + 800d522: 609a str r2, [r3, #8] + LoRaMacPrimitives.MacMlmeIndication = MlmeIndication; + 800d524: 4a15 ldr r2, [pc, #84] ; (800d57c <LmHandlerInit+0x70>) + 800d526: 60da str r2, [r3, #12] + LoRaMacCallbacks.GetBatteryLevel = LmHandlerCallbacks->GetBatteryLevel; + 800d528: 6802 ldr r2, [r0, #0] + 800d52a: 4b15 ldr r3, [pc, #84] ; (800d580 <LmHandlerInit+0x74>) + 800d52c: 601a str r2, [r3, #0] + LoRaMacCallbacks.GetTemperatureLevel = LmHandlerCallbacks->GetTemperature; + 800d52e: 6842 ldr r2, [r0, #4] + 800d530: 605a str r2, [r3, #4] + LoRaMacCallbacks.GetUniqueId = LmHandlerCallbacks->GetUniqueId; + 800d532: 6882 ldr r2, [r0, #8] + 800d534: 609a str r2, [r3, #8] + LoRaMacCallbacks.GetDevAddress = LmHandlerCallbacks->GetDevAddr; + 800d536: 68c2 ldr r2, [r0, #12] + 800d538: 60da str r2, [r3, #12] + LoRaMacCallbacks.NvmDataChange = NvmDataMgmtEvent; + 800d53a: 4a12 ldr r2, [pc, #72] ; (800d584 <LmHandlerInit+0x78>) + 800d53c: 611a str r2, [r3, #16] + LoRaMacCallbacks.MacProcessNotify = LmHandlerCallbacks->OnMacProcess; + 800d53e: 6982 ldr r2, [r0, #24] + 800d540: 615a str r2, [r3, #20] + if( LmHandlerPackageRegister( PACKAGE_ID_COMPLIANCE, &LmhpComplianceParams ) != LORAMAC_HANDLER_SUCCESS ) + 800d542: 4911 ldr r1, [pc, #68] ; (800d588 <LmHandlerInit+0x7c>) + 800d544: 2000 movs r0, #0 + 800d546: f7ff ffa9 bl 800d49c <LmHandlerPackageRegister> + 800d54a: b930 cbnz r0, 800d55a <LmHandlerInit+0x4e> + if( LmhpPackagesRegistrationInit( ( Version_t * )&fwVersion ) != LORAMAC_HANDLER_SUCCESS ) + 800d54c: a801 add r0, sp, #4 + 800d54e: f000 fad3 bl 800daf8 <LmhpPackagesRegistrationInit> + 800d552: b928 cbnz r0, 800d560 <LmHandlerInit+0x54> +} + 800d554: b003 add sp, #12 + 800d556: f85d fb04 ldr.w pc, [sp], #4 + return LORAMAC_HANDLER_ERROR; + 800d55a: f04f 30ff mov.w r0, #4294967295 + 800d55e: e7f9 b.n 800d554 <LmHandlerInit+0x48> + return LORAMAC_HANDLER_ERROR; + 800d560: f04f 30ff mov.w r0, #4294967295 + 800d564: e7f6 b.n 800d554 <LmHandlerInit+0x48> + 800d566: bf00 nop + 800d568: 20001078 .word 0x20001078 + 800d56c: 200010c0 .word 0x200010c0 + 800d570: 0800cd8d .word 0x0800cd8d + 800d574: 0800d1dd .word 0x0800d1dd + 800d578: 0800d60d .word 0x0800d60d + 800d57c: 0800cd39 .word 0x0800cd39 + 800d580: 200010a8 .word 0x200010a8 + 800d584: 08012131 .word 0x08012131 + 800d588: 2000083c .word 0x2000083c + +0800d58c <LmHandlerGetVersion>: + *============================================================================= + */ + +LmHandlerErrorStatus_t LmHandlerGetVersion( LmHandlerVersionType_t lmhType, uint32_t *featureVersion ) +{ + if( featureVersion == NULL ) + 800d58c: b161 cbz r1, 800d5a8 <LmHandlerGetVersion+0x1c> + { + return LORAMAC_HANDLER_ERROR; + } + + switch( lmhType ) + 800d58e: b118 cbz r0, 800d598 <LmHandlerGetVersion+0xc> + 800d590: 2801 cmp r0, #1 + 800d592: d005 beq.n 800d5a0 <LmHandlerGetVersion+0x14> + 800d594: 2000 movs r0, #0 + 800d596: 4770 bx lr + { + case LORAMAC_HANDLER_L2_VERSION: + *featureVersion = LORAMAC_VERSION; + 800d598: 4a05 ldr r2, [pc, #20] ; (800d5b0 <LmHandlerGetVersion+0x24>) + 800d59a: 600a str r2, [r1, #0] + break; + default: + break; + } + + return LORAMAC_HANDLER_SUCCESS; + 800d59c: 2000 movs r0, #0 + break; + 800d59e: 4770 bx lr + *featureVersion = REGION_VERSION; + 800d5a0: 4a04 ldr r2, [pc, #16] ; (800d5b4 <LmHandlerGetVersion+0x28>) + 800d5a2: 600a str r2, [r1, #0] + return LORAMAC_HANDLER_SUCCESS; + 800d5a4: 2000 movs r0, #0 + break; + 800d5a6: 4770 bx lr + return LORAMAC_HANDLER_ERROR; + 800d5a8: f04f 30ff mov.w r0, #4294967295 +} + 800d5ac: 4770 bx lr + 800d5ae: bf00 nop + 800d5b0: 01000300 .word 0x01000300 + 800d5b4: 01010003 .word 0x01010003 + +0800d5b8 <LmHandlerStop>: + +LmHandlerErrorStatus_t LmHandlerStop( void ) +{ + 800d5b8: b508 push {r3, lr} + if( LoRaMacDeInitialization() == LORAMAC_STATUS_OK ) + 800d5ba: f003 fd2b bl 8011014 <LoRaMacDeInitialization> + 800d5be: b900 cbnz r0, 800d5c2 <LmHandlerStop+0xa> + } + else + { + return LORAMAC_HANDLER_BUSY_ERROR; + } +} + 800d5c0: bd08 pop {r3, pc} + return LORAMAC_HANDLER_BUSY_ERROR; + 800d5c2: f06f 0001 mvn.w r0, #1 + 800d5c6: e7fb b.n 800d5c0 <LmHandlerStop+0x8> + +0800d5c8 <LmHandlerHalt>: + +LmHandlerErrorStatus_t LmHandlerHalt( void ) +{ + 800d5c8: b508 push {r3, lr} + if( LoRaMacHalt() == LORAMAC_STATUS_OK ) + 800d5ca: f002 fe87 bl 80102dc <LoRaMacHalt> + 800d5ce: b900 cbnz r0, 800d5d2 <LmHandlerHalt+0xa> + } + else + { + return LORAMAC_HANDLER_BUSY_ERROR; + } +} + 800d5d0: bd08 pop {r3, pc} + return LORAMAC_HANDLER_BUSY_ERROR; + 800d5d2: f06f 0001 mvn.w r0, #1 + 800d5d6: e7fb b.n 800d5d0 <LmHandlerHalt+0x8> + +0800d5d8 <LmHandlerGetTxPower>: +} + +LmHandlerErrorStatus_t LmHandlerGetTxPower( int8_t *txPower ) +{ + MibRequestConfirm_t mibReq; + if( txPower == NULL ) + 800d5d8: b180 cbz r0, 800d5fc <LmHandlerGetTxPower+0x24> +{ + 800d5da: b510 push {r4, lr} + 800d5dc: b08a sub sp, #40 ; 0x28 + 800d5de: 4604 mov r4, r0 + { + return LORAMAC_HANDLER_ERROR; + } + + mibReq.Type = MIB_CHANNELS_TX_POWER; + 800d5e0: 2320 movs r3, #32 + 800d5e2: f88d 3000 strb.w r3, [sp] + if( LoRaMacMibGetRequestConfirm( &mibReq ) != LORAMAC_STATUS_OK ) + 800d5e6: 4668 mov r0, sp + 800d5e8: f002 ff0c bl 8010404 <LoRaMacMibGetRequestConfirm> + 800d5ec: b948 cbnz r0, 800d602 <LmHandlerGetTxPower+0x2a> + { + return LORAMAC_HANDLER_ERROR; + } + + *txPower = mibReq.Param.ChannelsTxPower; + 800d5ee: f99d 3004 ldrsb.w r3, [sp, #4] + 800d5f2: 7023 strb r3, [r4, #0] + LmHandlerParams.TxPower = *txPower; + 800d5f4: 4a04 ldr r2, [pc, #16] ; (800d608 <LmHandlerGetTxPower+0x30>) + 800d5f6: 7153 strb r3, [r2, #5] + return LORAMAC_HANDLER_SUCCESS; +} + 800d5f8: b00a add sp, #40 ; 0x28 + 800d5fa: bd10 pop {r4, pc} + return LORAMAC_HANDLER_ERROR; + 800d5fc: f04f 30ff mov.w r0, #4294967295 +} + 800d600: 4770 bx lr + return LORAMAC_HANDLER_ERROR; + 800d602: f04f 30ff mov.w r0, #4294967295 + 800d606: e7f7 b.n 800d5f8 <LmHandlerGetTxPower+0x20> + 800d608: 20001090 .word 0x20001090 + +0800d60c <MlmeConfirm>: +{ + 800d60c: b510 push {r4, lr} + 800d60e: b08a sub sp, #40 ; 0x28 + 800d610: 4604 mov r4, r0 + TxParams.IsMcpsConfirm = 0; + 800d612: 4b2c ldr r3, [pc, #176] ; (800d6c4 <MlmeConfirm+0xb8>) + 800d614: 2200 movs r2, #0 + 800d616: 701a strb r2, [r3, #0] + TxParams.Status = mlmeConfirm->Status; + 800d618: 7842 ldrb r2, [r0, #1] + 800d61a: 705a strb r2, [r3, #1] + if( LmHandlerCallbacks->OnTxData != NULL ) + 800d61c: 4b2a ldr r3, [pc, #168] ; (800d6c8 <MlmeConfirm+0xbc>) + 800d61e: 681b ldr r3, [r3, #0] + 800d620: 6a9b ldr r3, [r3, #40] ; 0x28 + 800d622: b10b cbz r3, 800d628 <MlmeConfirm+0x1c> + LmHandlerCallbacks->OnTxData( &TxParams ); + 800d624: 4827 ldr r0, [pc, #156] ; (800d6c4 <MlmeConfirm+0xb8>) + 800d626: 4798 blx r3 + LmHandlerPackagesNotify( PACKAGE_MLME_CONFIRM, mlmeConfirm ); + 800d628: 4621 mov r1, r4 + 800d62a: 2002 movs r0, #2 + 800d62c: f7ff fb3e bl 800ccac <LmHandlerPackagesNotify> + switch( mlmeConfirm->MlmeRequest ) + 800d630: 7823 ldrb r3, [r4, #0] + 800d632: 2b05 cmp r3, #5 + 800d634: d037 beq.n 800d6a6 <MlmeConfirm+0x9a> + 800d636: 2b0c cmp r3, #12 + 800d638: d03d beq.n 800d6b6 <MlmeConfirm+0xaa> + 800d63a: 2b01 cmp r3, #1 + 800d63c: d001 beq.n 800d642 <MlmeConfirm+0x36> +} + 800d63e: b00a add sp, #40 ; 0x28 + 800d640: bd10 pop {r4, pc} + mibReq.Type = MIB_DEV_ADDR; + 800d642: 2306 movs r3, #6 + 800d644: f88d 3000 strb.w r3, [sp] + LoRaMacMibGetRequestConfirm( &mibReq ); + 800d648: 4668 mov r0, sp + 800d64a: f002 fedb bl 8010404 <LoRaMacMibGetRequestConfirm> + if( SecureElementSetDevAddr( JoinParams.Mode, mibReq.Param.DevAddr ) == SECURE_ELEMENT_SUCCESS ) + 800d64e: 9901 ldr r1, [sp, #4] + 800d650: 4b1e ldr r3, [pc, #120] ; (800d6cc <MlmeConfirm+0xc0>) + 800d652: 79d8 ldrb r0, [r3, #7] + 800d654: f006 fe92 bl 801437c <SecureElementSetDevAddr> + 800d658: b910 cbnz r0, 800d660 <MlmeConfirm+0x54> + CommissioningParams.DevAddr = mibReq.Param.DevAddr; + 800d65a: 9a01 ldr r2, [sp, #4] + 800d65c: 4b1c ldr r3, [pc, #112] ; (800d6d0 <MlmeConfirm+0xc4>) + 800d65e: 615a str r2, [r3, #20] + LmHandlerGetTxDatarate( &JoinParams.Datarate ); + 800d660: 4c1a ldr r4, [pc, #104] ; (800d6cc <MlmeConfirm+0xc0>) + 800d662: 1d20 adds r0, r4, #4 + 800d664: f7ff fe06 bl 800d274 <LmHandlerGetTxDatarate> + LmHandlerGetTxPower( &JoinParams.TxPower ); + 800d668: 1d60 adds r0, r4, #5 + 800d66a: f7ff ffb5 bl 800d5d8 <LmHandlerGetTxPower> + if( TxParams.Status == LORAMAC_EVENT_INFO_STATUS_OK ) + 800d66e: 4b15 ldr r3, [pc, #84] ; (800d6c4 <MlmeConfirm+0xb8>) + 800d670: 785b ldrb r3, [r3, #1] + 800d672: b18b cbz r3, 800d698 <MlmeConfirm+0x8c> + JoinParams.Status = LORAMAC_HANDLER_ERROR; + 800d674: 4b15 ldr r3, [pc, #84] ; (800d6cc <MlmeConfirm+0xc0>) + 800d676: 22ff movs r2, #255 ; 0xff + 800d678: 719a strb r2, [r3, #6] + if( LmHandlerCallbacks->OnJoinRequest != NULL ) + 800d67a: 4b13 ldr r3, [pc, #76] ; (800d6c8 <MlmeConfirm+0xbc>) + 800d67c: 681b ldr r3, [r3, #0] + 800d67e: 6a5b ldr r3, [r3, #36] ; 0x24 + 800d680: b10b cbz r3, 800d686 <MlmeConfirm+0x7a> + LmHandlerCallbacks->OnJoinRequest( &JoinParams ); + 800d682: 4812 ldr r0, [pc, #72] ; (800d6cc <MlmeConfirm+0xc0>) + 800d684: 4798 blx r3 + if( TxParams.Status == LORAMAC_EVENT_INFO_STATUS_OK ) + 800d686: 4b0f ldr r3, [pc, #60] ; (800d6c4 <MlmeConfirm+0xb8>) + 800d688: 785b ldrb r3, [r3, #1] + 800d68a: 2b00 cmp r3, #0 + 800d68c: d1d7 bne.n 800d63e <MlmeConfirm+0x32> + SecureElementPrintSessionKeys( JoinParams.Mode ); + 800d68e: 4b0f ldr r3, [pc, #60] ; (800d6cc <MlmeConfirm+0xc0>) + 800d690: 79d8 ldrb r0, [r3, #7] + 800d692: f006 ff41 bl 8014518 <SecureElementPrintSessionKeys> + break; + 800d696: e7d2 b.n 800d63e <MlmeConfirm+0x32> + JoinParams.Status = LORAMAC_HANDLER_SUCCESS; + 800d698: 2200 movs r2, #0 + 800d69a: 71a2 strb r2, [r4, #6] + LmHandlerRequestClass( LmHandlerParams.DefaultClass ); + 800d69c: 4b0d ldr r3, [pc, #52] ; (800d6d4 <MlmeConfirm+0xc8>) + 800d69e: 7858 ldrb r0, [r3, #1] + 800d6a0: f7ff fc02 bl 800cea8 <LmHandlerRequestClass> + 800d6a4: e7e9 b.n 800d67a <MlmeConfirm+0x6e> + RxParams.LinkCheck = true; + 800d6a6: 4b0c ldr r3, [pc, #48] ; (800d6d8 <MlmeConfirm+0xcc>) + 800d6a8: 2201 movs r2, #1 + 800d6aa: 745a strb r2, [r3, #17] + RxParams.DemodMargin = mlmeConfirm->DemodMargin; + 800d6ac: 7a22 ldrb r2, [r4, #8] + 800d6ae: 749a strb r2, [r3, #18] + RxParams.NbGateways = mlmeConfirm->NbGateways; + 800d6b0: 7a62 ldrb r2, [r4, #9] + 800d6b2: 74da strb r2, [r3, #19] + break; + 800d6b4: e7c3 b.n 800d63e <MlmeConfirm+0x32> + if( mlmeConfirm->Status == LORAMAC_EVENT_INFO_STATUS_OK ) + 800d6b6: 7863 ldrb r3, [r4, #1] + 800d6b8: 2b00 cmp r3, #0 + 800d6ba: d0c0 beq.n 800d63e <MlmeConfirm+0x32> + LmHandlerDeviceTimeReq( ); + 800d6bc: f7ff fbc0 bl 800ce40 <LmHandlerDeviceTimeReq> +} + 800d6c0: e7bd b.n 800d63e <MlmeConfirm+0x32> + 800d6c2: bf00 nop + 800d6c4: 2000085c .word 0x2000085c + 800d6c8: 20001078 .word 0x20001078 + 800d6cc: 20000830 .word 0x20000830 + 800d6d0: 20001058 .word 0x20001058 + 800d6d4: 20001090 .word 0x20001090 + 800d6d8: 20000848 .word 0x20000848 + +0800d6dc <LmHandlerNvmDataStore>: + + return LORAMAC_HANDLER_SUCCESS; +} + +LmHandlerErrorStatus_t LmHandlerNvmDataStore( void ) +{ + 800d6dc: b510 push {r4, lr} + 800d6de: b08a sub sp, #40 ; 0x28 + LoRaMacNvmData_t *nvm; + uint32_t nvm_size; + LmHandlerErrorStatus_t lmhStatus = LORAMAC_HANDLER_SUCCESS; + int32_t status = NVM_DATA_OK; + + lmhStatus = LmHandlerHalt(); + 800d6e0: f7ff ff72 bl 800d5c8 <LmHandlerHalt> + + if( lmhStatus == LORAMAC_HANDLER_SUCCESS ) + 800d6e4: 4604 mov r4, r0 + 800d6e6: b148 cbz r0, 800d6fc <LmHandlerNvmDataStore+0x20> + { + lmhStatus = LORAMAC_HANDLER_ERROR; + } + } + + if( ( lmhStatus == LORAMAC_HANDLER_SUCCESS ) && ( LmHandlerCallbacks->OnNvmDataChange != NULL ) ) + 800d6e8: b92c cbnz r4, 800d6f6 <LmHandlerNvmDataStore+0x1a> + 800d6ea: 4b18 ldr r3, [pc, #96] ; (800d74c <LmHandlerNvmDataStore+0x70>) + 800d6ec: 681b ldr r3, [r3, #0] + 800d6ee: 69db ldr r3, [r3, #28] + 800d6f0: b10b cbz r3, 800d6f6 <LmHandlerNvmDataStore+0x1a> + { + LmHandlerCallbacks->OnNvmDataChange( LORAMAC_HANDLER_NVM_STORE ); + 800d6f2: 2001 movs r0, #1 + 800d6f4: 4798 blx r3 + + return lmhStatus; +#else + return LORAMAC_HANDLER_ERROR; +#endif /* CONTEXT_MANAGEMENT_ENABLED */ +} + 800d6f6: 4620 mov r0, r4 + 800d6f8: b00a add sp, #40 ; 0x28 + 800d6fa: bd10 pop {r4, pc} + status = NvmDataMgmtStoreBegin(); + 800d6fc: f004 fd20 bl 8012140 <NvmDataMgmtStoreBegin> + if( status == NVM_DATA_NO_UPDATED_DATA ) + 800d700: f110 0f02 cmn.w r0, #2 + 800d704: d012 beq.n 800d72c <LmHandlerNvmDataStore+0x50> + else if( ( status != NVM_DATA_OK ) || ( LmHandlerCallbacks->OnStoreContextRequest == NULL ) ) + 800d706: b9d0 cbnz r0, 800d73e <LmHandlerNvmDataStore+0x62> + 800d708: 4b10 ldr r3, [pc, #64] ; (800d74c <LmHandlerNvmDataStore+0x70>) + 800d70a: 681b ldr r3, [r3, #0] + 800d70c: 695b ldr r3, [r3, #20] + 800d70e: b1cb cbz r3, 800d744 <LmHandlerNvmDataStore+0x68> + mibReq.Type = MIB_NVM_CTXS; + 800d710: 2326 movs r3, #38 ; 0x26 + 800d712: f88d 3000 strb.w r3, [sp] + LoRaMacMibGetRequestConfirm( &mibReq ); + 800d716: 4668 mov r0, sp + 800d718: f002 fe74 bl 8010404 <LoRaMacMibGetRequestConfirm> + LmHandlerCallbacks->OnStoreContextRequest( nvm, nvm_size ); + 800d71c: 4b0b ldr r3, [pc, #44] ; (800d74c <LmHandlerNvmDataStore+0x70>) + 800d71e: 681b ldr r3, [r3, #0] + 800d720: 695b ldr r3, [r3, #20] + 800d722: f44f 61ee mov.w r1, #1904 ; 0x770 + 800d726: 9801 ldr r0, [sp, #4] + 800d728: 4798 blx r3 + 800d72a: e001 b.n 800d730 <LmHandlerNvmDataStore+0x54> + lmhStatus = LORAMAC_HANDLER_NVM_DATA_UP_TO_DATE; + 800d72c: f06f 0407 mvn.w r4, #7 + if( NvmDataMgmtStoreEnd() != NVM_DATA_OK ) + 800d730: f004 fd16 bl 8012160 <NvmDataMgmtStoreEnd> + 800d734: 2800 cmp r0, #0 + 800d736: d0d7 beq.n 800d6e8 <LmHandlerNvmDataStore+0xc> + lmhStatus = LORAMAC_HANDLER_ERROR; + 800d738: f04f 34ff mov.w r4, #4294967295 + 800d73c: e7db b.n 800d6f6 <LmHandlerNvmDataStore+0x1a> + lmhStatus = LORAMAC_HANDLER_ERROR; + 800d73e: f04f 34ff mov.w r4, #4294967295 + 800d742: e7f5 b.n 800d730 <LmHandlerNvmDataStore+0x54> + 800d744: f04f 34ff mov.w r4, #4294967295 + 800d748: e7f2 b.n 800d730 <LmHandlerNvmDataStore+0x54> + 800d74a: bf00 nop + 800d74c: 20001078 .word 0x20001078 + +0800d750 <LmhpComplianceInit>: + return &LmhpCompliancePackage; +} + +static void LmhpComplianceInit( void *params, uint8_t *dataBuffer, uint8_t dataBufferMaxSize ) +{ + if( ( params != NULL ) && ( dataBuffer != NULL ) ) + 800d750: 4603 mov r3, r0 + 800d752: b140 cbz r0, 800d766 <LmhpComplianceInit+0x16> + 800d754: b139 cbz r1, 800d766 <LmhpComplianceInit+0x16> + { + LmhpComplianceParams = ( LmhpComplianceParams_t * )params; + 800d756: 4807 ldr r0, [pc, #28] ; (800d774 <LmhpComplianceInit+0x24>) + 800d758: 6003 str r3, [r0, #0] + ComplianceTestState.DataBuffer = dataBuffer; + 800d75a: 4b07 ldr r3, [pc, #28] ; (800d778 <LmhpComplianceInit+0x28>) + 800d75c: 6099 str r1, [r3, #8] + ComplianceTestState.DataBufferMaxSize = dataBufferMaxSize; + 800d75e: 715a strb r2, [r3, #5] + ComplianceTestState.Initialized = true; + 800d760: 2201 movs r2, #1 + 800d762: 701a strb r2, [r3, #0] + 800d764: 4770 bx lr + } + else + { + LmhpComplianceParams = NULL; + 800d766: 2300 movs r3, #0 + 800d768: 4a02 ldr r2, [pc, #8] ; (800d774 <LmhpComplianceInit+0x24>) + 800d76a: 6013 str r3, [r2, #0] + ComplianceTestState.Initialized = false; + 800d76c: 4a02 ldr r2, [pc, #8] ; (800d778 <LmhpComplianceInit+0x28>) + 800d76e: 7013 strb r3, [r2, #0] + } +} + 800d770: 4770 bx lr + 800d772: bf00 nop + 800d774: 200010fc .word 0x200010fc + 800d778: 200010d0 .word 0x200010d0 + +0800d77c <LmhpComplianceIsInitialized>: + +static bool LmhpComplianceIsInitialized( void ) +{ + return ComplianceTestState.Initialized; +} + 800d77c: 4b01 ldr r3, [pc, #4] ; (800d784 <LmhpComplianceIsInitialized+0x8>) + 800d77e: 7818 ldrb r0, [r3, #0] + 800d780: 4770 bx lr + 800d782: bf00 nop + 800d784: 200010d0 .word 0x200010d0 + +0800d788 <LmhpComplianceIsRunning>: + +static bool LmhpComplianceIsRunning( void ) +{ + if( ComplianceTestState.Initialized == false ) + 800d788: 4b02 ldr r3, [pc, #8] ; (800d794 <LmhpComplianceIsRunning+0xc>) + 800d78a: 7818 ldrb r0, [r3, #0] + 800d78c: b100 cbz r0, 800d790 <LmhpComplianceIsRunning+0x8> + { + return false; + } + + return ComplianceTestState.IsRunning; + 800d78e: 7858 ldrb r0, [r3, #1] +} + 800d790: 4770 bx lr + 800d792: bf00 nop + 800d794: 200010d0 .word 0x200010d0 + +0800d798 <LmhpComplianceOnMcpsConfirm>: + +static void LmhpComplianceOnMcpsConfirm( McpsConfirm_t *mcpsConfirm ) +{ + if( ComplianceTestState.Initialized == false ) + 800d798: 4b08 ldr r3, [pc, #32] ; (800d7bc <LmhpComplianceOnMcpsConfirm+0x24>) + 800d79a: 781b ldrb r3, [r3, #0] + 800d79c: b12b cbz r3, 800d7aa <LmhpComplianceOnMcpsConfirm+0x12> + { + return; + } + + if( ( ComplianceTestState.IsRunning == true ) && + 800d79e: 4b07 ldr r3, [pc, #28] ; (800d7bc <LmhpComplianceOnMcpsConfirm+0x24>) + 800d7a0: 785b ldrb r3, [r3, #1] + 800d7a2: b113 cbz r3, 800d7aa <LmhpComplianceOnMcpsConfirm+0x12> + ( mcpsConfirm->McpsRequest == MCPS_CONFIRMED ) && + 800d7a4: 7803 ldrb r3, [r0, #0] + if( ( ComplianceTestState.IsRunning == true ) && + 800d7a6: 2b01 cmp r3, #1 + 800d7a8: d000 beq.n 800d7ac <LmhpComplianceOnMcpsConfirm+0x14> + ( mcpsConfirm->AckReceived != 0 ) ) + { + /* Increment the compliance certification protocol downlink counter */ + ComplianceTestState.DownLinkCounter++; + } +} + 800d7aa: 4770 bx lr + ( mcpsConfirm->AckReceived != 0 ) ) + 800d7ac: 7903 ldrb r3, [r0, #4] + ( mcpsConfirm->McpsRequest == MCPS_CONFIRMED ) && + 800d7ae: 2b00 cmp r3, #0 + 800d7b0: d0fb beq.n 800d7aa <LmhpComplianceOnMcpsConfirm+0x12> + ComplianceTestState.DownLinkCounter++; + 800d7b2: 4a02 ldr r2, [pc, #8] ; (800d7bc <LmhpComplianceOnMcpsConfirm+0x24>) + 800d7b4: 8993 ldrh r3, [r2, #12] + 800d7b6: 3301 adds r3, #1 + 800d7b8: 8193 strh r3, [r2, #12] + 800d7ba: e7f6 b.n 800d7aa <LmhpComplianceOnMcpsConfirm+0x12> + 800d7bc: 200010d0 .word 0x200010d0 + +0800d7c0 <LmhpComplianceOnMlmeConfirm>: + +static void LmhpComplianceOnMlmeConfirm( MlmeConfirm_t *mlmeConfirm ) +{ + if( ComplianceTestState.Initialized == false ) + 800d7c0: 4b08 ldr r3, [pc, #32] ; (800d7e4 <LmhpComplianceOnMlmeConfirm+0x24>) + 800d7c2: 781b ldrb r3, [r3, #0] + 800d7c4: b12b cbz r3, 800d7d2 <LmhpComplianceOnMlmeConfirm+0x12> + { + return; + } + + if( ComplianceTestState.IsRunning == false ) + 800d7c6: 4b07 ldr r3, [pc, #28] ; (800d7e4 <LmhpComplianceOnMlmeConfirm+0x24>) + 800d7c8: 785b ldrb r3, [r3, #1] + 800d7ca: b113 cbz r3, 800d7d2 <LmhpComplianceOnMlmeConfirm+0x12> + { + return; + } + + if( mlmeConfirm->MlmeRequest == MLME_LINK_CHECK ) + 800d7cc: 7803 ldrb r3, [r0, #0] + 800d7ce: 2b05 cmp r3, #5 + 800d7d0: d000 beq.n 800d7d4 <LmhpComplianceOnMlmeConfirm+0x14> + { + ComplianceTestState.LinkCheck = true; + ComplianceTestState.DemodMargin = mlmeConfirm->DemodMargin; + ComplianceTestState.NbGateways = mlmeConfirm->NbGateways; + } +} + 800d7d2: 4770 bx lr + ComplianceTestState.LinkCheck = true; + 800d7d4: 4b03 ldr r3, [pc, #12] ; (800d7e4 <LmhpComplianceOnMlmeConfirm+0x24>) + 800d7d6: 2201 movs r2, #1 + 800d7d8: 739a strb r2, [r3, #14] + ComplianceTestState.DemodMargin = mlmeConfirm->DemodMargin; + 800d7da: 7a02 ldrb r2, [r0, #8] + 800d7dc: 73da strb r2, [r3, #15] + ComplianceTestState.NbGateways = mlmeConfirm->NbGateways; + 800d7de: 7a42 ldrb r2, [r0, #9] + 800d7e0: 741a strb r2, [r3, #16] + 800d7e2: e7f6 b.n 800d7d2 <LmhpComplianceOnMlmeConfirm+0x12> + 800d7e4: 200010d0 .word 0x200010d0 + +0800d7e8 <LmhpComplianceProcess>: +} + +static void LmhpComplianceProcess( void ) +{ + /* Nothing to process */ +} + 800d7e8: 4770 bx lr + ... + +0800d7ec <LmhpComplianceTxProcess>: + if( ComplianceTestState.Initialized == false ) + 800d7ec: 4b26 ldr r3, [pc, #152] ; (800d888 <LmhpComplianceTxProcess+0x9c>) + 800d7ee: 781b ldrb r3, [r3, #0] + 800d7f0: 2b00 cmp r3, #0 + 800d7f2: d040 beq.n 800d876 <LmhpComplianceTxProcess+0x8a> + if( ComplianceTestState.IsRunning == false ) + 800d7f4: 4b24 ldr r3, [pc, #144] ; (800d888 <LmhpComplianceTxProcess+0x9c>) + 800d7f6: 785b ldrb r3, [r3, #1] + 800d7f8: 2b00 cmp r3, #0 + 800d7fa: d03f beq.n 800d87c <LmhpComplianceTxProcess+0x90> +{ + 800d7fc: b500 push {lr} + 800d7fe: b083 sub sp, #12 + if( ComplianceTestState.LinkCheck == true ) + 800d800: 4b21 ldr r3, [pc, #132] ; (800d888 <LmhpComplianceTxProcess+0x9c>) + 800d802: 7b9b ldrb r3, [r3, #14] + 800d804: b323 cbz r3, 800d850 <LmhpComplianceTxProcess+0x64> + ComplianceTestState.LinkCheck = false; + 800d806: 4b20 ldr r3, [pc, #128] ; (800d888 <LmhpComplianceTxProcess+0x9c>) + 800d808: 2200 movs r2, #0 + 800d80a: 739a strb r2, [r3, #14] + ComplianceTestState.DataBufferSize = 3; + 800d80c: 2203 movs r2, #3 + 800d80e: 719a strb r2, [r3, #6] + ComplianceTestState.DataBuffer[0] = 5; + 800d810: 689a ldr r2, [r3, #8] + 800d812: 2105 movs r1, #5 + 800d814: 7011 strb r1, [r2, #0] + ComplianceTestState.DataBuffer[1] = ComplianceTestState.DemodMargin; + 800d816: 7bd9 ldrb r1, [r3, #15] + 800d818: 7051 strb r1, [r2, #1] + ComplianceTestState.DataBuffer[2] = ComplianceTestState.NbGateways; + 800d81a: 7c19 ldrb r1, [r3, #16] + 800d81c: 7091 strb r1, [r2, #2] + ComplianceTestState.State = 1; + 800d81e: 2201 movs r2, #1 + 800d820: 709a strb r2, [r3, #2] + LmHandlerAppData_t appData = + 800d822: 23e0 movs r3, #224 ; 0xe0 + 800d824: f88d 3000 strb.w r3, [sp] + .BufferSize = ComplianceTestState.DataBufferSize, + 800d828: 4b17 ldr r3, [pc, #92] ; (800d888 <LmhpComplianceTxProcess+0x9c>) + 800d82a: 799a ldrb r2, [r3, #6] + LmHandlerAppData_t appData = + 800d82c: f88d 2001 strb.w r2, [sp, #1] + .Buffer = ComplianceTestState.DataBuffer, + 800d830: 689b ldr r3, [r3, #8] + LmHandlerAppData_t appData = + 800d832: 9301 str r3, [sp, #4] + TimerStart( &ComplianceTxNextPacketTimer ); + 800d834: 4815 ldr r0, [pc, #84] ; (800d88c <LmhpComplianceTxProcess+0xa0>) + 800d836: f009 fd2b bl 8017290 <UTIL_TIMER_Start> + if( LmhpCompliancePackage.OnSendRequest == NULL) + 800d83a: 4b15 ldr r3, [pc, #84] ; (800d890 <LmhpComplianceTxProcess+0xa4>) + 800d83c: 6b1b ldr r3, [r3, #48] ; 0x30 + 800d83e: b1fb cbz r3, 800d880 <LmhpComplianceTxProcess+0x94> + return LmhpCompliancePackage.OnSendRequest( &appData, ( LmHandlerMsgTypes_t )ComplianceTestState.IsTxConfirmed, true ); + 800d840: 2201 movs r2, #1 + 800d842: 4911 ldr r1, [pc, #68] ; (800d888 <LmhpComplianceTxProcess+0x9c>) + 800d844: 78c9 ldrb r1, [r1, #3] + 800d846: 4668 mov r0, sp + 800d848: 4798 blx r3 +} + 800d84a: b003 add sp, #12 + 800d84c: f85d fb04 ldr.w pc, [sp], #4 + switch( ComplianceTestState.State ) + 800d850: 4b0d ldr r3, [pc, #52] ; (800d888 <LmhpComplianceTxProcess+0x9c>) + 800d852: 789b ldrb r3, [r3, #2] + 800d854: 2b01 cmp r3, #1 + 800d856: d005 beq.n 800d864 <LmhpComplianceTxProcess+0x78> + 800d858: 2b04 cmp r3, #4 + 800d85a: d1e2 bne.n 800d822 <LmhpComplianceTxProcess+0x36> + ComplianceTestState.State = 1; + 800d85c: 4b0a ldr r3, [pc, #40] ; (800d888 <LmhpComplianceTxProcess+0x9c>) + 800d85e: 2201 movs r2, #1 + 800d860: 709a strb r2, [r3, #2] + break; + 800d862: e7de b.n 800d822 <LmhpComplianceTxProcess+0x36> + ComplianceTestState.DataBufferSize = 2; + 800d864: 4b08 ldr r3, [pc, #32] ; (800d888 <LmhpComplianceTxProcess+0x9c>) + 800d866: 2202 movs r2, #2 + 800d868: 719a strb r2, [r3, #6] + ComplianceTestState.DataBuffer[0] = ComplianceTestState.DownLinkCounter >> 8; + 800d86a: 899a ldrh r2, [r3, #12] + 800d86c: 689b ldr r3, [r3, #8] + 800d86e: 0a11 lsrs r1, r2, #8 + 800d870: 7019 strb r1, [r3, #0] + ComplianceTestState.DataBuffer[1] = ComplianceTestState.DownLinkCounter; + 800d872: 705a strb r2, [r3, #1] + break; + 800d874: e7d5 b.n 800d822 <LmhpComplianceTxProcess+0x36> + return LORAMAC_HANDLER_ERROR; + 800d876: f04f 30ff mov.w r0, #4294967295 + 800d87a: 4770 bx lr + return LORAMAC_HANDLER_SUCCESS; + 800d87c: 2000 movs r0, #0 +} + 800d87e: 4770 bx lr + return LORAMAC_HANDLER_ERROR; + 800d880: f04f 30ff mov.w r0, #4294967295 + 800d884: e7e1 b.n 800d84a <LmhpComplianceTxProcess+0x5e> + 800d886: bf00 nop + 800d888: 200010d0 .word 0x200010d0 + 800d88c: 200010e4 .word 0x200010e4 + 800d890: 20000878 .word 0x20000878 + +0800d894 <LmhpComplianceOnMcpsIndication>: + if( ComplianceTestState.Initialized == false ) + 800d894: 4b8f ldr r3, [pc, #572] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d896: 781b ldrb r3, [r3, #0] + 800d898: 2b00 cmp r3, #0 + 800d89a: f000 8119 beq.w 800dad0 <LmhpComplianceOnMcpsIndication+0x23c> + if( mcpsIndication->RxData == false ) + 800d89e: 7b43 ldrb r3, [r0, #13] + 800d8a0: 2b00 cmp r3, #0 + 800d8a2: f000 8115 beq.w 800dad0 <LmhpComplianceOnMcpsIndication+0x23c> + if( ( ComplianceTestState.IsRunning == true ) && + 800d8a6: 4b8b ldr r3, [pc, #556] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d8a8: 785b ldrb r3, [r3, #1] + 800d8aa: b12b cbz r3, 800d8b8 <LmhpComplianceOnMcpsIndication+0x24> + ( mcpsIndication->AckReceived == 0 ) ) + 800d8ac: 7b82 ldrb r2, [r0, #14] + if( ( ComplianceTestState.IsRunning == true ) && + 800d8ae: b91a cbnz r2, 800d8b8 <LmhpComplianceOnMcpsIndication+0x24> + ComplianceTestState.DownLinkCounter++; + 800d8b0: 4988 ldr r1, [pc, #544] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d8b2: 898a ldrh r2, [r1, #12] + 800d8b4: 3201 adds r2, #1 + 800d8b6: 818a strh r2, [r1, #12] + if( mcpsIndication->Port != COMPLIANCE_PORT ) + 800d8b8: 78c2 ldrb r2, [r0, #3] + 800d8ba: 2ae0 cmp r2, #224 ; 0xe0 + 800d8bc: f040 8108 bne.w 800dad0 <LmhpComplianceOnMcpsIndication+0x23c> +{ + 800d8c0: b510 push {r4, lr} + 800d8c2: b08c sub sp, #48 ; 0x30 + if( ComplianceTestState.IsRunning == false ) + 800d8c4: 2b00 cmp r3, #0 + 800d8c6: d140 bne.n 800d94a <LmhpComplianceOnMcpsIndication+0xb6> + if( ( mcpsIndication->BufferSize == 4 ) && + 800d8c8: 7b03 ldrb r3, [r0, #12] + 800d8ca: 2b04 cmp r3, #4 + 800d8cc: d001 beq.n 800d8d2 <LmhpComplianceOnMcpsIndication+0x3e> +} + 800d8ce: b00c add sp, #48 ; 0x30 + 800d8d0: bd10 pop {r4, pc} + ( mcpsIndication->Buffer[0] == 0x01 ) && + 800d8d2: 6883 ldr r3, [r0, #8] + 800d8d4: 781a ldrb r2, [r3, #0] + if( ( mcpsIndication->BufferSize == 4 ) && + 800d8d6: 2a01 cmp r2, #1 + 800d8d8: d1f9 bne.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ( mcpsIndication->Buffer[1] == 0x01 ) && + 800d8da: 785a ldrb r2, [r3, #1] + ( mcpsIndication->Buffer[0] == 0x01 ) && + 800d8dc: 2a01 cmp r2, #1 + 800d8de: d1f6 bne.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ( mcpsIndication->Buffer[2] == 0x01 ) && + 800d8e0: 789a ldrb r2, [r3, #2] + ( mcpsIndication->Buffer[1] == 0x01 ) && + 800d8e2: 2a01 cmp r2, #1 + 800d8e4: d1f3 bne.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ( mcpsIndication->Buffer[3] == 0x01 ) ) + 800d8e6: 78db ldrb r3, [r3, #3] + ( mcpsIndication->Buffer[2] == 0x01 ) && + 800d8e8: 2b01 cmp r3, #1 + 800d8ea: d1f0 bne.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ComplianceTestState.IsTxConfirmed = false; + 800d8ec: 4b79 ldr r3, [pc, #484] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d8ee: 2400 movs r4, #0 + 800d8f0: 70dc strb r4, [r3, #3] + ComplianceTestState.Port = 224; + 800d8f2: 22e0 movs r2, #224 ; 0xe0 + 800d8f4: 711a strb r2, [r3, #4] + ComplianceTestState.DataBufferSize = 2; + 800d8f6: 2202 movs r2, #2 + 800d8f8: 719a strb r2, [r3, #6] + ComplianceTestState.DownLinkCounter = 0; + 800d8fa: 819c strh r4, [r3, #12] + ComplianceTestState.LinkCheck = false; + 800d8fc: 739c strb r4, [r3, #14] + ComplianceTestState.DemodMargin = 0; + 800d8fe: 73dc strb r4, [r3, #15] + ComplianceTestState.NbGateways = 0; + 800d900: 741c strb r4, [r3, #16] + ComplianceTestState.IsRunning = true; + 800d902: 2201 movs r2, #1 + 800d904: 705a strb r2, [r3, #1] + ComplianceTestState.State = 1; + 800d906: 709a strb r2, [r3, #2] + mibReq.Type = MIB_ADR; + 800d908: 2304 movs r3, #4 + 800d90a: f88d 3008 strb.w r3, [sp, #8] + mibReq.Param.AdrEnable = true; + 800d90e: f88d 200c strb.w r2, [sp, #12] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d912: a802 add r0, sp, #8 + 800d914: f002 feea bl 80106ec <LoRaMacMibSetRequestConfirm> + LoRaMacTestSetDutyCycleOn( false ); + 800d918: 4620 mov r0, r4 + 800d91a: f003 fb5d bl 8010fd8 <LoRaMacTestSetDutyCycleOn> + if( LmhpComplianceParams->StopPeripherals != NULL ) + 800d91e: 4b6e ldr r3, [pc, #440] ; (800dad8 <LmhpComplianceOnMcpsIndication+0x244>) + 800d920: 681b ldr r3, [r3, #0] + 800d922: 685b ldr r3, [r3, #4] + 800d924: b103 cbz r3, 800d928 <LmhpComplianceOnMcpsIndication+0x94> + LmhpComplianceParams->StopPeripherals( ); + 800d926: 4798 blx r3 + TimerInit( &ComplianceTxNextPacketTimer, OnComplianceTxNextPacketTimerEvent ); + 800d928: 4c6c ldr r4, [pc, #432] ; (800dadc <LmhpComplianceOnMcpsIndication+0x248>) + 800d92a: 2200 movs r2, #0 + 800d92c: 9200 str r2, [sp, #0] + 800d92e: 4b6c ldr r3, [pc, #432] ; (800dae0 <LmhpComplianceOnMcpsIndication+0x24c>) + 800d930: f04f 31ff mov.w r1, #4294967295 + 800d934: 4620 mov r0, r4 + 800d936: f009 fbf3 bl 8017120 <UTIL_TIMER_Create> + TimerSetValue( &ComplianceTxNextPacketTimer, COMPLIANCE_TX_DUTYCYCLE ); + 800d93a: f241 3188 movw r1, #5000 ; 0x1388 + 800d93e: 4620 mov r0, r4 + 800d940: f009 fcec bl 801731c <UTIL_TIMER_SetPeriod> + LmhpComplianceTxProcess( ); + 800d944: f7ff ff52 bl 800d7ec <LmhpComplianceTxProcess> + 800d948: e7c1 b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ComplianceTestState.State = mcpsIndication->Buffer[0]; + 800d94a: 6882 ldr r2, [r0, #8] + 800d94c: 7813 ldrb r3, [r2, #0] + 800d94e: 4961 ldr r1, [pc, #388] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d950: 708b strb r3, [r1, #2] + switch( ComplianceTestState.State ) + 800d952: 2b0a cmp r3, #10 + 800d954: d8bb bhi.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + 800d956: e8df f003 tbb [pc, r3] + 800d95a: 2206 .short 0x2206 + 800d95c: 47312b26 .word 0x47312b26 + 800d960: a7a0714e .word 0xa7a0714e + 800d964: b1 .byte 0xb1 + 800d965: 00 .byte 0x00 + TimerStop( &ComplianceTxNextPacketTimer ); + 800d966: 485d ldr r0, [pc, #372] ; (800dadc <LmhpComplianceOnMcpsIndication+0x248>) + 800d968: f009 fc38 bl 80171dc <UTIL_TIMER_Stop> + ComplianceTestState.DownLinkCounter = 0; + 800d96c: 4b59 ldr r3, [pc, #356] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d96e: 2200 movs r2, #0 + 800d970: 819a strh r2, [r3, #12] + ComplianceTestState.IsRunning = false; + 800d972: 705a strb r2, [r3, #1] + mibReq.Type = MIB_ADR; + 800d974: 2304 movs r3, #4 + 800d976: f88d 3008 strb.w r3, [sp, #8] + mibReq.Param.AdrEnable = LmhpComplianceParams->AdrEnabled; + 800d97a: 4c57 ldr r4, [pc, #348] ; (800dad8 <LmhpComplianceOnMcpsIndication+0x244>) + 800d97c: 6823 ldr r3, [r4, #0] + 800d97e: 781b ldrb r3, [r3, #0] + 800d980: f88d 300c strb.w r3, [sp, #12] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800d984: a802 add r0, sp, #8 + 800d986: f002 feb1 bl 80106ec <LoRaMacMibSetRequestConfirm> + LoRaMacTestSetDutyCycleOn( LmhpComplianceParams->DutyCycleEnabled ); + 800d98a: 6823 ldr r3, [r4, #0] + 800d98c: 7858 ldrb r0, [r3, #1] + 800d98e: f003 fb23 bl 8010fd8 <LoRaMacTestSetDutyCycleOn> + if( LmhpComplianceParams->StartPeripherals != NULL ) + 800d992: 6823 ldr r3, [r4, #0] + 800d994: 689b ldr r3, [r3, #8] + 800d996: 2b00 cmp r3, #0 + 800d998: d099 beq.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + LmhpComplianceParams->StartPeripherals( ); + 800d99a: 4798 blx r3 + break; + 800d99c: e797 b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ComplianceTestState.DataBufferSize = 2; + 800d99e: 4b4d ldr r3, [pc, #308] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d9a0: 2202 movs r2, #2 + 800d9a2: 719a strb r2, [r3, #6] + break; + 800d9a4: e793 b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ComplianceTestState.IsTxConfirmed = true; + 800d9a6: 4b4b ldr r3, [pc, #300] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d9a8: 2201 movs r2, #1 + 800d9aa: 70da strb r2, [r3, #3] + ComplianceTestState.State = 1; + 800d9ac: 709a strb r2, [r3, #2] + break; + 800d9ae: e78e b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ComplianceTestState.IsTxConfirmed = false; + 800d9b0: 4b48 ldr r3, [pc, #288] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d9b2: 2200 movs r2, #0 + 800d9b4: 70da strb r2, [r3, #3] + ComplianceTestState.State = 1; + 800d9b6: 2201 movs r2, #1 + 800d9b8: 709a strb r2, [r3, #2] + break; + 800d9ba: e788 b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ComplianceTestState.DataBufferSize = mcpsIndication->BufferSize; + 800d9bc: 7b01 ldrb r1, [r0, #12] + 800d9be: 4b45 ldr r3, [pc, #276] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d9c0: 7199 strb r1, [r3, #6] + ComplianceTestState.DataBuffer[0] = 4; + 800d9c2: 689c ldr r4, [r3, #8] + 800d9c4: 2304 movs r3, #4 + 800d9c6: 7023 strb r3, [r4, #0] + for( uint8_t i = 1; i < MIN( ComplianceTestState.DataBufferSize, ComplianceTestState.DataBufferMaxSize ); i++ ) + 800d9c8: 2301 movs r3, #1 + 800d9ca: 4a42 ldr r2, [pc, #264] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d9cc: 7952 ldrb r2, [r2, #5] + 800d9ce: 428a cmp r2, r1 + 800d9d0: bf28 it cs + 800d9d2: 460a movcs r2, r1 + 800d9d4: 429a cmp r2, r3 + 800d9d6: f67f af7a bls.w 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + ComplianceTestState.DataBuffer[i] = mcpsIndication->Buffer[i] + 1; + 800d9da: 6882 ldr r2, [r0, #8] + 800d9dc: 5cd2 ldrb r2, [r2, r3] + 800d9de: 3201 adds r2, #1 + 800d9e0: 54e2 strb r2, [r4, r3] + for( uint8_t i = 1; i < MIN( ComplianceTestState.DataBufferSize, ComplianceTestState.DataBufferMaxSize ); i++ ) + 800d9e2: 3301 adds r3, #1 + 800d9e4: b2db uxtb r3, r3 + 800d9e6: e7f0 b.n 800d9ca <LmhpComplianceOnMcpsIndication+0x136> + mlmeReq.Type = MLME_LINK_CHECK; + 800d9e8: 2305 movs r3, #5 + 800d9ea: f88d 3008 strb.w r3, [sp, #8] + LoRaMacMlmeRequest( &mlmeReq ); + 800d9ee: a802 add r0, sp, #8 + 800d9f0: f003 f956 bl 8010ca0 <LoRaMacMlmeRequest> + break; + 800d9f4: e76b b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + TimerStop( &ComplianceTxNextPacketTimer ); + 800d9f6: 4839 ldr r0, [pc, #228] ; (800dadc <LmhpComplianceOnMcpsIndication+0x248>) + 800d9f8: f009 fbf0 bl 80171dc <UTIL_TIMER_Stop> + ComplianceTestState.DownLinkCounter = 0; + 800d9fc: 4b35 ldr r3, [pc, #212] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800d9fe: 2200 movs r2, #0 + 800da00: 819a strh r2, [r3, #12] + ComplianceTestState.IsRunning = false; + 800da02: 705a strb r2, [r3, #1] + mibReq.Type = MIB_ADR; + 800da04: 2304 movs r3, #4 + 800da06: f88d 3008 strb.w r3, [sp, #8] + mibReq.Param.AdrEnable = LmhpComplianceParams->AdrEnabled; + 800da0a: 4c33 ldr r4, [pc, #204] ; (800dad8 <LmhpComplianceOnMcpsIndication+0x244>) + 800da0c: 6823 ldr r3, [r4, #0] + 800da0e: 781b ldrb r3, [r3, #0] + 800da10: f88d 300c strb.w r3, [sp, #12] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800da14: a802 add r0, sp, #8 + 800da16: f002 fe69 bl 80106ec <LoRaMacMibSetRequestConfirm> + LoRaMacTestSetDutyCycleOn( LmhpComplianceParams->DutyCycleEnabled ); + 800da1a: 6823 ldr r3, [r4, #0] + 800da1c: 7858 ldrb r0, [r3, #1] + 800da1e: f003 fadb bl 8010fd8 <LoRaMacTestSetDutyCycleOn> + if( LmhpComplianceParams->StartPeripherals != NULL ) + 800da22: 6823 ldr r3, [r4, #0] + 800da24: 689b ldr r3, [r3, #8] + 800da26: b103 cbz r3, 800da2a <LmhpComplianceOnMcpsIndication+0x196> + LmhpComplianceParams->StartPeripherals( ); + 800da28: 4798 blx r3 + if( LmhpCompliancePackage.OnJoinRequest != NULL ) + 800da2a: 4b2e ldr r3, [pc, #184] ; (800dae4 <LmhpComplianceOnMcpsIndication+0x250>) + 800da2c: 6adb ldr r3, [r3, #44] ; 0x2c + 800da2e: 2b00 cmp r3, #0 + 800da30: f43f af4d beq.w 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + LmhpCompliancePackage.OnJoinRequest( ACTIVATION_TYPE_OTAA, true ); + 800da34: 2101 movs r1, #1 + 800da36: 2002 movs r0, #2 + 800da38: 4798 blx r3 + break; + 800da3a: e748 b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + if( mcpsIndication->BufferSize == 3 ) + 800da3c: 7b03 ldrb r3, [r0, #12] + 800da3e: 2b03 cmp r3, #3 + 800da40: d008 beq.n 800da54 <LmhpComplianceOnMcpsIndication+0x1c0> + else if( mcpsIndication->BufferSize == 7 ) + 800da42: 2b07 cmp r3, #7 + 800da44: d010 beq.n 800da68 <LmhpComplianceOnMcpsIndication+0x1d4> + LoRaMacMlmeRequest( &mlmeReq ); + 800da46: a802 add r0, sp, #8 + 800da48: f003 f92a bl 8010ca0 <LoRaMacMlmeRequest> + ComplianceTestState.State = 1; + 800da4c: 4b21 ldr r3, [pc, #132] ; (800dad4 <LmhpComplianceOnMcpsIndication+0x240>) + 800da4e: 2201 movs r2, #1 + 800da50: 709a strb r2, [r3, #2] + break; + 800da52: e73c b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + mlmeReq.Type = MLME_TXCW; + 800da54: 2306 movs r3, #6 + 800da56: f88d 3008 strb.w r3, [sp, #8] + mlmeReq.Req.TxCw.Timeout = ( uint16_t )( ( mcpsIndication->Buffer[1] << 8 ) | mcpsIndication->Buffer[2] ); + 800da5a: 7851 ldrb r1, [r2, #1] + 800da5c: 7893 ldrb r3, [r2, #2] + 800da5e: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800da62: f8ad 300c strh.w r3, [sp, #12] + 800da66: e7ee b.n 800da46 <LmhpComplianceOnMcpsIndication+0x1b2> + mlmeReq.Type = MLME_TXCW_1; + 800da68: f88d 3008 strb.w r3, [sp, #8] + mlmeReq.Req.TxCw.Timeout = ( uint16_t )( ( mcpsIndication->Buffer[1] << 8 ) | mcpsIndication->Buffer[2] ); + 800da6c: 7851 ldrb r1, [r2, #1] + 800da6e: 7893 ldrb r3, [r2, #2] + 800da70: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800da74: f8ad 300c strh.w r3, [sp, #12] + mlmeReq.Req.TxCw.Frequency = ( uint32_t )( ( mcpsIndication->Buffer[3] << 16 ) | ( mcpsIndication->Buffer[4] << 8 ) | mcpsIndication->Buffer[5] ) * 100; + 800da78: 78d1 ldrb r1, [r2, #3] + 800da7a: 7913 ldrb r3, [r2, #4] + 800da7c: 021b lsls r3, r3, #8 + 800da7e: ea43 4301 orr.w r3, r3, r1, lsl #16 + 800da82: 7952 ldrb r2, [r2, #5] + 800da84: 4313 orrs r3, r2 + 800da86: 2264 movs r2, #100 ; 0x64 + 800da88: fb02 f303 mul.w r3, r2, r3 + 800da8c: 9304 str r3, [sp, #16] + mlmeReq.Req.TxCw.Power = mcpsIndication->Buffer[6]; + 800da8e: 6883 ldr r3, [r0, #8] + 800da90: f993 3006 ldrsb.w r3, [r3, #6] + 800da94: f88d 3014 strb.w r3, [sp, #20] + 800da98: e7d5 b.n 800da46 <LmhpComplianceOnMcpsIndication+0x1b2> + mlmeReq.Type = MLME_DEVICE_TIME; + 800da9a: 230a movs r3, #10 + 800da9c: f88d 3008 strb.w r3, [sp, #8] + LoRaMacMlmeRequest( &mlmeReq ); + 800daa0: a802 add r0, sp, #8 + 800daa2: f003 f8fd bl 8010ca0 <LoRaMacMlmeRequest> + break; + 800daa6: e712 b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + mibReq.Type = MIB_DEVICE_CLASS; + 800daa8: 2300 movs r3, #0 + 800daaa: f88d 3008 strb.w r3, [sp, #8] + mibReq.Param.Class = ( DeviceClass_t )mcpsIndication->Buffer[1];; + 800daae: 7853 ldrb r3, [r2, #1] + 800dab0: f88d 300c strb.w r3, [sp, #12] + LoRaMacMibSetRequestConfirm( &mibReq ); + 800dab4: a802 add r0, sp, #8 + 800dab6: f002 fe19 bl 80106ec <LoRaMacMibSetRequestConfirm> + break; + 800daba: e708 b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + mlmeReq.Type = MLME_PING_SLOT_INFO; + 800dabc: 230d movs r3, #13 + 800dabe: f88d 3008 strb.w r3, [sp, #8] + mlmeReq.Req.PingSlotInfo.PingSlot.Value = mcpsIndication->Buffer[1]; + 800dac2: 7853 ldrb r3, [r2, #1] + 800dac4: f88d 300c strb.w r3, [sp, #12] + LoRaMacMlmeRequest( &mlmeReq ); + 800dac8: a802 add r0, sp, #8 + 800daca: f003 f8e9 bl 8010ca0 <LoRaMacMlmeRequest> + break; + 800dace: e6fe b.n 800d8ce <LmhpComplianceOnMcpsIndication+0x3a> + 800dad0: 4770 bx lr + 800dad2: bf00 nop + 800dad4: 200010d0 .word 0x200010d0 + 800dad8: 200010fc .word 0x200010fc + 800dadc: 200010e4 .word 0x200010e4 + 800dae0: 0800dae9 .word 0x0800dae9 + 800dae4: 20000878 .word 0x20000878 + +0800dae8 <OnComplianceTxNextPacketTimerEvent>: + +static void OnComplianceTxNextPacketTimerEvent( void *context ) +{ + 800dae8: b508 push {r3, lr} + LmhpComplianceTxProcess( ); + 800daea: f7ff fe7f bl 800d7ec <LmhpComplianceTxProcess> +} + 800daee: bd08 pop {r3, pc} + +0800daf0 <LmhpCompliancePackageFactory>: +} + 800daf0: 4800 ldr r0, [pc, #0] ; (800daf4 <LmhpCompliancePackageFactory+0x4>) + 800daf2: 4770 bx lr + 800daf4: 20000878 .word 0x20000878 + +0800daf8 <LmhpPackagesRegistrationInit>: + } +#endif /* LORAWAN_PACKAGES_VERSION */ +#endif /* LORAWAN_DATA_DISTRIB_MGT */ + + return LORAMAC_HANDLER_SUCCESS; +} + 800daf8: 2000 movs r0, #0 + 800dafa: 4770 bx lr + +0800dafc <LmhpPackagesRegister>: + } + return LORAMAC_HANDLER_SUCCESS; +#else + return LORAMAC_HANDLER_ERROR; +#endif /* LORAWAN_DATA_DISTRIB_MGT */ +} + 800dafc: f04f 30ff mov.w r0, #4294967295 + 800db00: 4770 bx lr + ... + +0800db04 <UpdateRxSlotIdleState>: + MW_LOG(TS_ON, VLEVEL_M, "MAC rxTimeOut\r\n" ); +} + +static void UpdateRxSlotIdleState( void ) +{ + if( Nvm.MacGroup2.DeviceClass != CLASS_C ) + 800db04: 4b07 ldr r3, [pc, #28] ; (800db24 <UpdateRxSlotIdleState+0x20>) + 800db06: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800db0a: 2b02 cmp r3, #2 + 800db0c: d004 beq.n 800db18 <UpdateRxSlotIdleState+0x14> + { + MacCtx.RxSlot = RX_SLOT_NONE; + 800db0e: 4b06 ldr r3, [pc, #24] ; (800db28 <UpdateRxSlotIdleState+0x24>) + 800db10: 2206 movs r2, #6 + 800db12: f883 2480 strb.w r2, [r3, #1152] ; 0x480 + 800db16: 4770 bx lr + } + else + { + MacCtx.RxSlot = RX_SLOT_WIN_CLASS_C; + 800db18: 4b03 ldr r3, [pc, #12] ; (800db28 <UpdateRxSlotIdleState+0x24>) + 800db1a: 2202 movs r2, #2 + 800db1c: f883 2480 strb.w r2, [r3, #1152] ; 0x480 + } +} + 800db20: 4770 bx lr + 800db22: bf00 nop + 800db24: 20001870 .word 0x20001870 + 800db28: 20001fe4 .word 0x20001fe4 + +0800db2c <LoRaMacEnableRequests>: + return false; +} + +static void LoRaMacEnableRequests( LoRaMacRequestHandling_t requestState ) +{ + MacCtx.AllowRequests = requestState; + 800db2c: 4b01 ldr r3, [pc, #4] ; (800db34 <LoRaMacEnableRequests+0x8>) + 800db2e: f883 0482 strb.w r0, [r3, #1154] ; 0x482 +} + 800db32: 4770 bx lr + 800db34: 20001fe4 .word 0x20001fe4 + +0800db38 <LoRaMacHandleIndicationEvents>: + MacCtx.MacFlags.Bits.MacDone = 0; + } +} + +static void LoRaMacHandleIndicationEvents( void ) +{ + 800db38: b508 push {r3, lr} + // Handle MLME indication + if( MacCtx.MacFlags.Bits.MlmeInd == 1 ) + 800db3a: 4b15 ldr r3, [pc, #84] ; (800db90 <LoRaMacHandleIndicationEvents+0x58>) + 800db3c: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800db40: f013 0f08 tst.w r3, #8 + 800db44: d00e beq.n 800db64 <LoRaMacHandleIndicationEvents+0x2c> + { + MacCtx.MacFlags.Bits.MlmeInd = 0; + 800db46: 4812 ldr r0, [pc, #72] ; (800db90 <LoRaMacHandleIndicationEvents+0x58>) + 800db48: f890 3481 ldrb.w r3, [r0, #1153] ; 0x481 + 800db4c: f36f 03c3 bfc r3, #3, #1 + 800db50: f880 3481 strb.w r3, [r0, #1153] ; 0x481 + MacCtx.MacPrimitives->MacMlmeIndication( &MacCtx.MlmeIndication, &MacCtx.RxStatus ); + 800db54: f8d0 3344 ldr.w r3, [r0, #836] ; 0x344 + 800db58: 68db ldr r3, [r3, #12] + 800db5a: f200 417c addw r1, r0, #1148 ; 0x47c + 800db5e: f200 405c addw r0, r0, #1116 ; 0x45c + 800db62: 4798 blx r3 + } + + // Handle MCPS indication + if( MacCtx.MacFlags.Bits.McpsInd == 1 ) + 800db64: 4b0a ldr r3, [pc, #40] ; (800db90 <LoRaMacHandleIndicationEvents+0x58>) + 800db66: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800db6a: f013 0f02 tst.w r3, #2 + 800db6e: d00e beq.n 800db8e <LoRaMacHandleIndicationEvents+0x56> + { + MacCtx.MacFlags.Bits.McpsInd = 0; + 800db70: 4807 ldr r0, [pc, #28] ; (800db90 <LoRaMacHandleIndicationEvents+0x58>) + 800db72: f890 3481 ldrb.w r3, [r0, #1153] ; 0x481 + 800db76: f36f 0341 bfc r3, #1, #1 + 800db7a: f880 3481 strb.w r3, [r0, #1153] ; 0x481 + MacCtx.MacPrimitives->MacMcpsIndication( &MacCtx.McpsIndication, &MacCtx.RxStatus ); + 800db7e: f8d0 3344 ldr.w r3, [r0, #836] ; 0x344 + 800db82: 685b ldr r3, [r3, #4] + 800db84: f200 417c addw r1, r0, #1148 ; 0x47c + 800db88: f500 6083 add.w r0, r0, #1048 ; 0x418 + 800db8c: 4798 blx r3 + } +} + 800db8e: bd08 pop {r3, pc} + 800db90: 20001fe4 .word 0x20001fe4 + +0800db94 <LoRaMacCheckForRxAbort>: +#endif /* LORAMAC_VERSION */ + +static void LoRaMacCheckForRxAbort( void ) +{ + // A error occurs during receiving + if( ( MacCtx.MacState & LORAMAC_RX_ABORT ) == LORAMAC_RX_ABORT ) + 800db94: 4b07 ldr r3, [pc, #28] ; (800dbb4 <LoRaMacCheckForRxAbort+0x20>) + 800db96: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 800db9a: f013 0f80 tst.w r3, #128 ; 0x80 + 800db9e: d008 beq.n 800dbb2 <LoRaMacCheckForRxAbort+0x1e> + { + MacCtx.MacState &= ~LORAMAC_RX_ABORT; + 800dba0: f023 0180 bic.w r1, r3, #128 ; 0x80 + 800dba4: 4a03 ldr r2, [pc, #12] ; (800dbb4 <LoRaMacCheckForRxAbort+0x20>) + 800dba6: f8c2 1340 str.w r1, [r2, #832] ; 0x340 + MacCtx.MacState &= ~LORAMAC_TX_RUNNING; + 800dbaa: f023 0382 bic.w r3, r3, #130 ; 0x82 + 800dbae: f8c2 3340 str.w r3, [r2, #832] ; 0x340 + } +} + 800dbb2: 4770 bx lr + 800dbb4: 20001fe4 .word 0x20001fe4 + +0800dbb8 <CalculateBackOff>: + +static void CalculateBackOff( void ) +{ + // Make sure that the calculation of the backoff time for the aggregated time off will only be done in + // case the value is zero. It will be set to zero in the function RegionNextChannel. + if( Nvm.MacGroup1.AggregatedTimeOff == 0 ) + 800dbb8: 4b06 ldr r3, [pc, #24] ; (800dbd4 <CalculateBackOff+0x1c>) + 800dbba: 6b1b ldr r3, [r3, #48] ; 0x30 + 800dbbc: b94b cbnz r3, 800dbd2 <CalculateBackOff+0x1a> + { + // Update aggregated time-off. This must be an assignment and no incremental + // update as we do only calculate the time-off based on the last transmission + Nvm.MacGroup1.AggregatedTimeOff = ( MacCtx.TxTimeOnAir * Nvm.MacGroup2.AggregatedDCycle - MacCtx.TxTimeOnAir ); + 800dbbe: 4a05 ldr r2, [pc, #20] ; (800dbd4 <CalculateBackOff+0x1c>) + 800dbc0: f8b2 311e ldrh.w r3, [r2, #286] ; 0x11e + 800dbc4: 4904 ldr r1, [pc, #16] ; (800dbd8 <CalculateBackOff+0x20>) + 800dbc6: f8d1 1414 ldr.w r1, [r1, #1044] ; 0x414 + 800dbca: 3b01 subs r3, #1 + 800dbcc: fb01 f303 mul.w r3, r1, r3 + 800dbd0: 6313 str r3, [r2, #48] ; 0x30 + } +} + 800dbd2: 4770 bx lr + 800dbd4: 20001870 .word 0x20001870 + 800dbd8: 20001fe4 .word 0x20001fe4 + +0800dbdc <SetTxContinuousWave1>: + + return LORAMAC_STATUS_OK; +} + +static LoRaMacStatus_t SetTxContinuousWave1( uint16_t timeout, uint32_t frequency, uint8_t power ) +{ + 800dbdc: b508 push {r3, lr} + 800dbde: 4684 mov ip, r0 + 800dbe0: 4608 mov r0, r1 + 800dbe2: 4611 mov r1, r2 + Radio.SetTxContinuousWave( frequency, power, timeout ); + 800dbe4: 4b06 ldr r3, [pc, #24] ; (800dc00 <SetTxContinuousWave1+0x24>) + 800dbe6: 6bdb ldr r3, [r3, #60] ; 0x3c + 800dbe8: 4662 mov r2, ip + 800dbea: b249 sxtb r1, r1 + 800dbec: 4798 blx r3 + + MacCtx.MacState |= LORAMAC_TX_RUNNING; + 800dbee: 4a05 ldr r2, [pc, #20] ; (800dc04 <SetTxContinuousWave1+0x28>) + 800dbf0: f8d2 3340 ldr.w r3, [r2, #832] ; 0x340 + 800dbf4: f043 0302 orr.w r3, r3, #2 + 800dbf8: f8c2 3340 str.w r3, [r2, #832] ; 0x340 + + return LORAMAC_STATUS_OK; +} + 800dbfc: 2000 movs r0, #0 + 800dbfe: bd08 pop {r3, pc} + 800dc00: 08018cb4 .word 0x08018cb4 + 800dc04: 20001fe4 .word 0x20001fe4 + +0800dc08 <DetermineFrameType>: + return LORAMAC_STATUS_OK; +} + +static LoRaMacStatus_t DetermineFrameType( LoRaMacMessageData_t* macMsg, FType_t* fType ) +{ + if( ( macMsg == NULL ) || ( fType == NULL ) ) + 800dc08: 4602 mov r2, r0 + 800dc0a: b1f8 cbz r0, 800dc4c <DetermineFrameType+0x44> + 800dc0c: b301 cbz r1, 800dc50 <DetermineFrameType+0x48> + * +-------+ +----------+------+-------+--------------+ + * | D | | = 0 | - | > 0 | X | + * +-------+ +----------+------+-------+--------------+ + */ + + if( ( macMsg->FHDR.FCtrl.Bits.FOptsLen > 0 ) && ( macMsg->FPort > 0 ) ) + 800dc0e: 7b03 ldrb r3, [r0, #12] + 800dc10: f013 030f ands.w r3, r3, #15 + 800dc14: d005 beq.n 800dc22 <DetermineFrameType+0x1a> + 800dc16: f890 0020 ldrb.w r0, [r0, #32] + 800dc1a: b110 cbz r0, 800dc22 <DetermineFrameType+0x1a> + { + *fType = FRAME_TYPE_A; + 800dc1c: 2000 movs r0, #0 + 800dc1e: 7008 strb r0, [r1, #0] + 800dc20: 4770 bx lr + } + else if( macMsg->FRMPayloadSize == 0 ) + 800dc22: f892 0028 ldrb.w r0, [r2, #40] ; 0x28 + 800dc26: b910 cbnz r0, 800dc2e <DetermineFrameType+0x26> + { + *fType = FRAME_TYPE_B; + 800dc28: 2301 movs r3, #1 + 800dc2a: 700b strb r3, [r1, #0] + 800dc2c: 4770 bx lr + } + else if( ( macMsg->FHDR.FCtrl.Bits.FOptsLen == 0 ) && ( macMsg->FPort == 0 ) ) + 800dc2e: b92b cbnz r3, 800dc3c <DetermineFrameType+0x34> + 800dc30: f892 0020 ldrb.w r0, [r2, #32] + 800dc34: b910 cbnz r0, 800dc3c <DetermineFrameType+0x34> + { + *fType = FRAME_TYPE_C; + 800dc36: 2302 movs r3, #2 + 800dc38: 700b strb r3, [r1, #0] + 800dc3a: 4770 bx lr + } + else if( ( macMsg->FHDR.FCtrl.Bits.FOptsLen == 0 ) && ( macMsg->FPort > 0 ) ) + 800dc3c: b953 cbnz r3, 800dc54 <DetermineFrameType+0x4c> + 800dc3e: f892 2020 ldrb.w r2, [r2, #32] + 800dc42: b14a cbz r2, 800dc58 <DetermineFrameType+0x50> + { + *fType = FRAME_TYPE_D; + 800dc44: 2203 movs r2, #3 + 800dc46: 700a strb r2, [r1, #0] + { + // Should never happen. + return LORAMAC_STATUS_ERROR; + } + + return LORAMAC_STATUS_OK; + 800dc48: 4618 mov r0, r3 + *fType = FRAME_TYPE_D; + 800dc4a: 4770 bx lr + return LORAMAC_STATUS_PARAMETER_INVALID; + 800dc4c: 2003 movs r0, #3 + 800dc4e: 4770 bx lr + 800dc50: 2003 movs r0, #3 + 800dc52: 4770 bx lr + return LORAMAC_STATUS_ERROR; + 800dc54: 2018 movs r0, #24 + 800dc56: 4770 bx lr + 800dc58: 2018 movs r0, #24 +} + 800dc5a: 4770 bx lr + +0800dc5c <CheckRetransUnconfirmedUplink>: + +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) +static bool CheckRetransUnconfirmedUplink( void ) +{ + // Unconfirmed uplink, when all retransmissions are done. + if( MacCtx.ChannelsNbTransCounter >= + 800dc5c: 4b0f ldr r3, [pc, #60] ; (800dc9c <CheckRetransUnconfirmedUplink+0x40>) + 800dc5e: f893 240c ldrb.w r2, [r3, #1036] ; 0x40c + Nvm.MacGroup2.MacParams.ChannelsNbTrans ) + 800dc62: 4b0f ldr r3, [pc, #60] ; (800dca0 <CheckRetransUnconfirmedUplink+0x44>) + 800dc64: f893 3068 ldrb.w r3, [r3, #104] ; 0x68 + if( MacCtx.ChannelsNbTransCounter >= + 800dc68: 429a cmp r2, r3 + 800dc6a: d20f bcs.n 800dc8c <CheckRetransUnconfirmedUplink+0x30> + { + return true; + } + else if( MacCtx.MacFlags.Bits.McpsInd == 1 ) + 800dc6c: 4b0b ldr r3, [pc, #44] ; (800dc9c <CheckRetransUnconfirmedUplink+0x40>) + 800dc6e: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800dc72: f013 0f02 tst.w r3, #2 + 800dc76: d00b beq.n 800dc90 <CheckRetransUnconfirmedUplink+0x34> + { + // For Class A stop in each case + if( Nvm.MacGroup2.DeviceClass == CLASS_A ) + 800dc78: 4b09 ldr r3, [pc, #36] ; (800dca0 <CheckRetransUnconfirmedUplink+0x44>) + 800dc7a: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800dc7e: b14b cbz r3, 800dc94 <CheckRetransUnconfirmedUplink+0x38> + { + return true; + } + else + {// For Class B & C stop only if the frame was received in RX1 window + if( MacCtx.RxStatus.RxSlot == RX_SLOT_WIN_1 ) + 800dc80: 4b06 ldr r3, [pc, #24] ; (800dc9c <CheckRetransUnconfirmedUplink+0x40>) + 800dc82: f893 347f ldrb.w r3, [r3, #1151] ; 0x47f + 800dc86: b13b cbz r3, 800dc98 <CheckRetransUnconfirmedUplink+0x3c> + { + return true; + } + } + } + return false; + 800dc88: 2000 movs r0, #0 + 800dc8a: 4770 bx lr + return true; + 800dc8c: 2001 movs r0, #1 + 800dc8e: 4770 bx lr + return false; + 800dc90: 2000 movs r0, #0 + 800dc92: 4770 bx lr + return true; + 800dc94: 2001 movs r0, #1 + 800dc96: 4770 bx lr + return true; + 800dc98: 2001 movs r0, #1 +} + 800dc9a: 4770 bx lr + 800dc9c: 20001fe4 .word 0x20001fe4 + 800dca0: 20001870 .word 0x20001870 + +0800dca4 <CheckRetransConfirmedUplink>: + +static bool CheckRetransConfirmedUplink( void ) +{ + // Confirmed uplink, when all retransmissions ( tries to get a ack ) are done. + if( MacCtx.AckTimeoutRetriesCounter >= + 800dca4: 4b0a ldr r3, [pc, #40] ; (800dcd0 <CheckRetransConfirmedUplink+0x2c>) + 800dca6: f893 240e ldrb.w r2, [r3, #1038] ; 0x40e + MacCtx.AckTimeoutRetries ) + 800dcaa: f893 340d ldrb.w r3, [r3, #1037] ; 0x40d + if( MacCtx.AckTimeoutRetriesCounter >= + 800dcae: 429a cmp r2, r3 + 800dcb0: d209 bcs.n 800dcc6 <CheckRetransConfirmedUplink+0x22> + { + return true; + } + else if( MacCtx.MacFlags.Bits.McpsInd == 1 ) + 800dcb2: 4b07 ldr r3, [pc, #28] ; (800dcd0 <CheckRetransConfirmedUplink+0x2c>) + 800dcb4: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800dcb8: f013 0f02 tst.w r3, #2 + 800dcbc: d005 beq.n 800dcca <CheckRetransConfirmedUplink+0x26> + { + if( MacCtx.McpsConfirm.AckReceived == true ) + 800dcbe: 4b04 ldr r3, [pc, #16] ; (800dcd0 <CheckRetransConfirmedUplink+0x2c>) + 800dcc0: f893 0438 ldrb.w r0, [r3, #1080] ; 0x438 + 800dcc4: 4770 bx lr + return true; + 800dcc6: 2001 movs r0, #1 + 800dcc8: 4770 bx lr + { + return true; + } + } + return false; + 800dcca: 2000 movs r0, #0 +} + 800dccc: 4770 bx lr + 800dcce: bf00 nop + 800dcd0: 20001fe4 .word 0x20001fe4 + +0800dcd4 <StopRetransmission>: + } + } + } +#endif /* LORAMAC_VERSION */ + + if( ( MacCtx.MacFlags.Bits.McpsInd == 0 ) || + 800dcd4: 4b11 ldr r3, [pc, #68] ; (800dd1c <StopRetransmission+0x48>) + 800dcd6: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800dcda: f013 0f02 tst.w r3, #2 + 800dcde: d004 beq.n 800dcea <StopRetransmission+0x16> + ( ( MacCtx.RxStatus.RxSlot != RX_SLOT_WIN_1 ) && + 800dce0: 4b0e ldr r3, [pc, #56] ; (800dd1c <StopRetransmission+0x48>) + 800dce2: f893 347f ldrb.w r3, [r3, #1151] ; 0x47f + if( ( MacCtx.MacFlags.Bits.McpsInd == 0 ) || + 800dce6: 2b01 cmp r3, #1 + 800dce8: d907 bls.n 800dcfa <StopRetransmission+0x26> + ( MacCtx.RxStatus.RxSlot != RX_SLOT_WIN_2 ) ) ) + { // Maximum repetitions without downlink. Increase ADR Ack counter. + // Only process the case when the MAC did not receive a downlink. + if( Nvm.MacGroup2.AdrCtrlOn == true ) + 800dcea: 4b0d ldr r3, [pc, #52] ; (800dd20 <StopRetransmission+0x4c>) + 800dcec: f893 311a ldrb.w r3, [r3, #282] ; 0x11a + 800dcf0: b11b cbz r3, 800dcfa <StopRetransmission+0x26> + { +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + Nvm.MacGroup1.AdrAckCounter++; + 800dcf2: 4a0b ldr r2, [pc, #44] ; (800dd20 <StopRetransmission+0x4c>) + 800dcf4: 6a93 ldr r3, [r2, #40] ; 0x28 + 800dcf6: 3301 adds r3, #1 + 800dcf8: 6293 str r3, [r2, #40] ; 0x28 + Nvm.MacGroup1.AdrAckCounter = IncreaseAdrAckCounter( Nvm.MacGroup1.AdrAckCounter ); +#endif /* LORAMAC_VERSION */ + } + } + + MacCtx.ChannelsNbTransCounter = 0; + 800dcfa: 4b08 ldr r3, [pc, #32] ; (800dd1c <StopRetransmission+0x48>) + 800dcfc: 2200 movs r2, #0 + 800dcfe: f883 240c strb.w r2, [r3, #1036] ; 0x40c + MacCtx.NodeAckRequested = false; + 800dd02: f883 2410 strb.w r2, [r3, #1040] ; 0x410 +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + MacCtx.AckTimeoutRetry = false; + 800dd06: f883 240f strb.w r2, [r3, #1039] ; 0x40f +#elif (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) + MacCtx.RetransmitTimeoutRetry = false; +#endif /* LORAMAC_VERSION */ + MacCtx.MacState &= ~LORAMAC_TX_RUNNING; + 800dd0a: f8d3 2340 ldr.w r2, [r3, #832] ; 0x340 + 800dd0e: f022 0202 bic.w r2, r2, #2 + 800dd12: f8c3 2340 str.w r2, [r3, #832] ; 0x340 + + return true; +} + 800dd16: 2001 movs r0, #1 + 800dd18: 4770 bx lr + 800dd1a: bf00 nop + 800dd1c: 20001fe4 .word 0x20001fe4 + 800dd20: 20001870 .word 0x20001870 + +0800dd24 <OnMacProcessNotify>: + +static void OnMacProcessNotify( void ) +{ + 800dd24: b508 push {r3, lr} + if( ( MacCtx.MacCallbacks != NULL ) && ( MacCtx.MacCallbacks->MacProcessNotify != NULL ) ) + 800dd26: 4b04 ldr r3, [pc, #16] ; (800dd38 <OnMacProcessNotify+0x14>) + 800dd28: f8d3 3348 ldr.w r3, [r3, #840] ; 0x348 + 800dd2c: b113 cbz r3, 800dd34 <OnMacProcessNotify+0x10> + 800dd2e: 695b ldr r3, [r3, #20] + 800dd30: b103 cbz r3, 800dd34 <OnMacProcessNotify+0x10> + { + MacCtx.MacCallbacks->MacProcessNotify( ); + 800dd32: 4798 blx r3 + } +} + 800dd34: bd08 pop {r3, pc} + 800dd36: bf00 nop + 800dd38: 20001fe4 .word 0x20001fe4 + +0800dd3c <OnRadioRxError>: +{ + 800dd3c: b508 push {r3, lr} + LoRaMacRadioEvents.Events.RxError = 1; + 800dd3e: 4a04 ldr r2, [pc, #16] ; (800dd50 <OnRadioRxError+0x14>) + 800dd40: 7813 ldrb r3, [r2, #0] + 800dd42: f043 0302 orr.w r3, r3, #2 + 800dd46: 7013 strb r3, [r2, #0] + OnMacProcessNotify( ); + 800dd48: f7ff ffec bl 800dd24 <OnMacProcessNotify> +} + 800dd4c: bd08 pop {r3, pc} + 800dd4e: bf00 nop + 800dd50: 20001fe0 .word 0x20001fe0 + +0800dd54 <CallNvmDataChangeCallback>: + +static void CallNvmDataChangeCallback( uint16_t notifyFlags ) +{ + 800dd54: b508 push {r3, lr} + if( ( MacCtx.MacCallbacks != NULL ) && ( MacCtx.MacCallbacks->NvmDataChange != NULL ) ) + 800dd56: 4b04 ldr r3, [pc, #16] ; (800dd68 <CallNvmDataChangeCallback+0x14>) + 800dd58: f8d3 3348 ldr.w r3, [r3, #840] ; 0x348 + 800dd5c: b113 cbz r3, 800dd64 <CallNvmDataChangeCallback+0x10> + 800dd5e: 691b ldr r3, [r3, #16] + 800dd60: b103 cbz r3, 800dd64 <CallNvmDataChangeCallback+0x10> + { + MacCtx.MacCallbacks->NvmDataChange ( notifyFlags ); + 800dd62: 4798 blx r3 + } +} + 800dd64: bd08 pop {r3, pc} + 800dd66: bf00 nop + 800dd68: 20001fe4 .word 0x20001fe4 + +0800dd6c <IsRequestPending>: +} +#endif /* LORAMAC_VERSION */ + +static uint8_t IsRequestPending( void ) +{ + if( ( MacCtx.MacFlags.Bits.MlmeReq == 1 ) || + 800dd6c: 4b04 ldr r3, [pc, #16] ; (800dd80 <IsRequestPending+0x14>) + 800dd6e: f893 0481 ldrb.w r0, [r3, #1153] ; 0x481 + 800dd72: f010 0005 ands.w r0, r0, #5 + 800dd76: d100 bne.n 800dd7a <IsRequestPending+0xe> + ( MacCtx.MacFlags.Bits.McpsReq == 1 ) ) + { + return 1; + } + return 0; +} + 800dd78: 4770 bx lr + return 1; + 800dd7a: 2001 movs r0, #1 + 800dd7c: e7fc b.n 800dd78 <IsRequestPending+0xc> + 800dd7e: bf00 nop + 800dd80: 20001fe4 .word 0x20001fe4 + +0800dd84 <AckTimeoutRetriesProcess>: + if( MacCtx.AckTimeoutRetriesCounter < MacCtx.AckTimeoutRetries ) + 800dd84: 4a13 ldr r2, [pc, #76] ; (800ddd4 <AckTimeoutRetriesProcess+0x50>) + 800dd86: f892 340e ldrb.w r3, [r2, #1038] ; 0x40e + 800dd8a: f892 240d ldrb.w r2, [r2, #1037] ; 0x40d + 800dd8e: 4293 cmp r3, r2 + 800dd90: d207 bcs.n 800dda2 <AckTimeoutRetriesProcess+0x1e> + MacCtx.AckTimeoutRetriesCounter++; + 800dd92: 3301 adds r3, #1 + 800dd94: b2db uxtb r3, r3 + 800dd96: 4a0f ldr r2, [pc, #60] ; (800ddd4 <AckTimeoutRetriesProcess+0x50>) + 800dd98: f882 340e strb.w r3, [r2, #1038] ; 0x40e + if( ( MacCtx.AckTimeoutRetriesCounter % 2 ) == 1 ) + 800dd9c: f013 0f01 tst.w r3, #1 + 800dda0: d100 bne.n 800dda4 <AckTimeoutRetriesProcess+0x20> + 800dda2: 4770 bx lr +{ + 800dda4: b510 push {r4, lr} + 800dda6: b084 sub sp, #16 + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + 800dda8: 2322 movs r3, #34 ; 0x22 + 800ddaa: f88d 3008 strb.w r3, [sp, #8] + getPhy.UplinkDwellTime = Nvm.MacGroup2.MacParams.UplinkDwellTime; + 800ddae: 4c0a ldr r4, [pc, #40] ; (800ddd8 <AckTimeoutRetriesProcess+0x54>) + 800ddb0: f894 307c ldrb.w r3, [r4, #124] ; 0x7c + 800ddb4: f88d 300a strb.w r3, [sp, #10] + getPhy.Datarate = Nvm.MacGroup1.ChannelsDatarate; + 800ddb8: f994 3039 ldrsb.w r3, [r4, #57] ; 0x39 + 800ddbc: f88d 3009 strb.w r3, [sp, #9] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800ddc0: a902 add r1, sp, #8 + 800ddc2: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800ddc6: f004 f9da bl 801217e <RegionGetPhyParam> + 800ddca: 9001 str r0, [sp, #4] + Nvm.MacGroup1.ChannelsDatarate = phyParam.Value; + 800ddcc: f884 0039 strb.w r0, [r4, #57] ; 0x39 +} + 800ddd0: b004 add sp, #16 + 800ddd2: bd10 pop {r4, pc} + 800ddd4: 20001fe4 .word 0x20001fe4 + 800ddd8: 20001870 .word 0x20001870 + +0800dddc <GetMaxAppPayloadWithoutFOptsLength>: +{ + 800dddc: b500 push {lr} + 800ddde: b085 sub sp, #20 + getPhy.UplinkDwellTime = Nvm.MacGroup2.MacParams.UplinkDwellTime; + 800dde0: 4b0d ldr r3, [pc, #52] ; (800de18 <GetMaxAppPayloadWithoutFOptsLength+0x3c>) + 800dde2: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800dde6: f88d 200a strb.w r2, [sp, #10] + getPhy.Datarate = datarate; + 800ddea: f88d 0009 strb.w r0, [sp, #9] + getPhy.Attribute = PHY_MAX_PAYLOAD; + 800ddee: 220d movs r2, #13 + 800ddf0: f88d 2008 strb.w r2, [sp, #8] + if( Nvm.MacGroup2.MacParams.RepeaterSupport == true ) + 800ddf4: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800ddf8: b113 cbz r3, 800de00 <GetMaxAppPayloadWithoutFOptsLength+0x24> + getPhy.Attribute = PHY_MAX_PAYLOAD_REPEATER; + 800ddfa: 230e movs r3, #14 + 800ddfc: f88d 3008 strb.w r3, [sp, #8] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800de00: a902 add r1, sp, #8 + 800de02: 4b05 ldr r3, [pc, #20] ; (800de18 <GetMaxAppPayloadWithoutFOptsLength+0x3c>) + 800de04: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800de08: f004 f9b9 bl 801217e <RegionGetPhyParam> + 800de0c: 9001 str r0, [sp, #4] +} + 800de0e: b2c0 uxtb r0, r0 + 800de10: b005 add sp, #20 + 800de12: f85d fb04 ldr.w pc, [sp], #4 + 800de16: bf00 nop + 800de18: 20001870 .word 0x20001870 + +0800de1c <ValidatePayloadLength>: +{ + 800de1c: b538 push {r3, r4, r5, lr} + 800de1e: 4605 mov r5, r0 + 800de20: 4614 mov r4, r2 + maxN = GetMaxAppPayloadWithoutFOptsLength( datarate ); + 800de22: 4608 mov r0, r1 + 800de24: f7ff ffda bl 800dddc <GetMaxAppPayloadWithoutFOptsLength> + 800de28: b283 uxth r3, r0 + payloadSize = ( lenN + fOptsLen ); + 800de2a: 1962 adds r2, r4, r5 + if( ( payloadSize <= maxN ) && ( payloadSize <= LORAMAC_PHY_MAXPAYLOAD ) ) + 800de2c: 4293 cmp r3, r2 + 800de2e: d303 bcc.n 800de38 <ValidatePayloadLength+0x1c> + 800de30: 2aff cmp r2, #255 ; 0xff + 800de32: d903 bls.n 800de3c <ValidatePayloadLength+0x20> + return false; + 800de34: 2000 movs r0, #0 + 800de36: e000 b.n 800de3a <ValidatePayloadLength+0x1e> + 800de38: 2000 movs r0, #0 +} + 800de3a: bd38 pop {r3, r4, r5, pc} + return true; + 800de3c: 2001 movs r0, #1 + 800de3e: e7fc b.n 800de3a <ValidatePayloadLength+0x1e> + +0800de40 <ProcessRadioTxDone>: +{ + 800de40: b5f0 push {r4, r5, r6, r7, lr} + 800de42: b08f sub sp, #60 ; 0x3c + if( Nvm.MacGroup2.DeviceClass != CLASS_C ) + 800de44: 4b40 ldr r3, [pc, #256] ; (800df48 <ProcessRadioTxDone+0x108>) + 800de46: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800de4a: 2b02 cmp r3, #2 + 800de4c: d002 beq.n 800de54 <ProcessRadioTxDone+0x14> + Radio.Sleep( ); + 800de4e: 4b3f ldr r3, [pc, #252] ; (800df4c <ProcessRadioTxDone+0x10c>) + 800de50: 6adb ldr r3, [r3, #44] ; 0x2c + 800de52: 4798 blx r3 + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 800de54: f3ef 8710 mrs r7, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 800de58: b672 cpsid i + uint32_t offset = TimerGetCurrentTime( ) - TxDoneParams.CurTime; + 800de5a: f009 f97f bl 801715c <UTIL_TIMER_GetCurrentTime> + 800de5e: 4b3c ldr r3, [pc, #240] ; (800df50 <ProcessRadioTxDone+0x110>) + 800de60: 681d ldr r5, [r3, #0] + TimerSetValue( &MacCtx.RxWindowTimer1, MacCtx.RxWindow1Delay - offset ); + 800de62: 4c3c ldr r4, [pc, #240] ; (800df54 <ProcessRadioTxDone+0x114>) + 800de64: f8d4 13b0 ldr.w r1, [r4, #944] ; 0x3b0 + 800de68: 1a2d subs r5, r5, r0 + 800de6a: f504 7660 add.w r6, r4, #896 ; 0x380 + 800de6e: 4429 add r1, r5 + 800de70: 4630 mov r0, r6 + 800de72: f009 fa53 bl 801731c <UTIL_TIMER_SetPeriod> + TimerStart( &MacCtx.RxWindowTimer1 ); + 800de76: 4630 mov r0, r6 + 800de78: f009 fa0a bl 8017290 <UTIL_TIMER_Start> + TimerSetValue( &MacCtx.RxWindowTimer2, MacCtx.RxWindow2Delay - offset ); + 800de7c: f8d4 13b4 ldr.w r1, [r4, #948] ; 0x3b4 + 800de80: f504 7466 add.w r4, r4, #920 ; 0x398 + 800de84: 4429 add r1, r5 + 800de86: 4620 mov r0, r4 + 800de88: f009 fa48 bl 801731c <UTIL_TIMER_SetPeriod> + TimerStart( &MacCtx.RxWindowTimer2 ); + 800de8c: 4620 mov r0, r4 + 800de8e: f009 f9ff bl 8017290 <UTIL_TIMER_Start> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 800de92: f387 8810 msr PRIMASK, r7 + if( ( Nvm.MacGroup2.DeviceClass == CLASS_C ) || ( MacCtx.NodeAckRequested == true ) ) + 800de96: 4b2c ldr r3, [pc, #176] ; (800df48 <ProcessRadioTxDone+0x108>) + 800de98: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800de9c: 2b02 cmp r3, #2 + 800de9e: d004 beq.n 800deaa <ProcessRadioTxDone+0x6a> + 800dea0: f5a4 7366 sub.w r3, r4, #920 ; 0x398 + 800dea4: f893 3410 ldrb.w r3, [r3, #1040] ; 0x410 + 800dea8: b1ab cbz r3, 800ded6 <ProcessRadioTxDone+0x96> + getPhy.Attribute = PHY_ACK_TIMEOUT; + 800deaa: 2316 movs r3, #22 + 800deac: f88d 3028 strb.w r3, [sp, #40] ; 0x28 + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800deb0: a90a add r1, sp, #40 ; 0x28 + 800deb2: 4b25 ldr r3, [pc, #148] ; (800df48 <ProcessRadioTxDone+0x108>) + 800deb4: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800deb8: f004 f961 bl 801217e <RegionGetPhyParam> + 800debc: 9009 str r0, [sp, #36] ; 0x24 + TimerSetValue( &MacCtx.AckTimeoutTimer, MacCtx.RxWindow2Delay + phyParam.Value ); + 800debe: 4c25 ldr r4, [pc, #148] ; (800df54 <ProcessRadioTxDone+0x114>) + 800dec0: f8d4 13b4 ldr.w r1, [r4, #948] ; 0x3b4 + 800dec4: f504 747d add.w r4, r4, #1012 ; 0x3f4 + 800dec8: 4401 add r1, r0 + 800deca: 4620 mov r0, r4 + 800decc: f009 fa26 bl 801731c <UTIL_TIMER_SetPeriod> + TimerStart( &MacCtx.AckTimeoutTimer ); + 800ded0: 4620 mov r0, r4 + 800ded2: f009 f9dd bl 8017290 <UTIL_TIMER_Start> + Nvm.MacGroup1.LastTxDoneTime = TxDoneParams.CurTime; + 800ded6: 4b1e ldr r3, [pc, #120] ; (800df50 <ProcessRadioTxDone+0x110>) + 800ded8: 681b ldr r3, [r3, #0] + 800deda: 4c1b ldr r4, [pc, #108] ; (800df48 <ProcessRadioTxDone+0x108>) + 800dedc: 62e3 str r3, [r4, #44] ; 0x2c + txDone.Channel = MacCtx.Channel; + 800dede: 4f1d ldr r7, [pc, #116] ; (800df54 <ProcessRadioTxDone+0x114>) + 800dee0: f897 2411 ldrb.w r2, [r7, #1041] ; 0x411 + 800dee4: f88d 2010 strb.w r2, [sp, #16] + txDone.LastTxDoneTime = TxDoneParams.CurTime; + 800dee8: 9305 str r3, [sp, #20] + txDone.ElapsedTimeSinceStartUp = SysTimeSub( SysTimeGetMcuTime( ), Nvm.MacGroup2.InitializationTime ); + 800deea: ae0c add r6, sp, #48 ; 0x30 + 800deec: 4630 mov r0, r6 + 800deee: f009 f8a9 bl 8017044 <SysTimeGetMcuTime> + 800def2: ad02 add r5, sp, #8 + 800def4: f8d4 3124 ldr.w r3, [r4, #292] ; 0x124 + 800def8: 9300 str r3, [sp, #0] + 800defa: f8d4 3120 ldr.w r3, [r4, #288] ; 0x120 + 800defe: e896 0006 ldmia.w r6, {r1, r2} + 800df02: 4628 mov r0, r5 + 800df04: f009 f83b bl 8016f7e <SysTimeSub> + 800df08: ab07 add r3, sp, #28 + 800df0a: e895 0003 ldmia.w r5, {r0, r1} + 800df0e: e883 0003 stmia.w r3, {r0, r1} + txDone.LastTxAirTime = MacCtx.TxTimeOnAir; + 800df12: f8d7 3414 ldr.w r3, [r7, #1044] ; 0x414 + 800df16: 9306 str r3, [sp, #24] + txDone.Joined = true; + 800df18: 2301 movs r3, #1 + 800df1a: f88d 3011 strb.w r3, [sp, #17] + if( Nvm.MacGroup2.NetworkActivation == ACTIVATION_TYPE_NONE ) + 800df1e: f894 312c ldrb.w r3, [r4, #300] ; 0x12c + 800df22: b90b cbnz r3, 800df28 <ProcessRadioTxDone+0xe8> + txDone.Joined = false; + 800df24: f88d 3011 strb.w r3, [sp, #17] + RegionSetBandTxDone( Nvm.MacGroup2.Region, &txDone ); + 800df28: a904 add r1, sp, #16 + 800df2a: 4b07 ldr r3, [pc, #28] ; (800df48 <ProcessRadioTxDone+0x108>) + 800df2c: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800df30: f004 f935 bl 801219e <RegionSetBandTxDone> + if( MacCtx.NodeAckRequested == false ) + 800df34: 4b07 ldr r3, [pc, #28] ; (800df54 <ProcessRadioTxDone+0x114>) + 800df36: f893 3410 ldrb.w r3, [r3, #1040] ; 0x410 + 800df3a: b91b cbnz r3, 800df44 <ProcessRadioTxDone+0x104> + MacCtx.McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_OK; + 800df3c: 4b05 ldr r3, [pc, #20] ; (800df54 <ProcessRadioTxDone+0x114>) + 800df3e: 2200 movs r2, #0 + 800df40: f883 2435 strb.w r2, [r3, #1077] ; 0x435 +} + 800df44: b00f add sp, #60 ; 0x3c + 800df46: bdf0 pop {r4, r5, r6, r7, pc} + 800df48: 20001870 .word 0x20001870 + 800df4c: 08018cb4 .word 0x08018cb4 + 800df50: 200024fc .word 0x200024fc + 800df54: 20001fe4 .word 0x20001fe4 + +0800df58 <OnAckTimeoutTimerEvent>: +{ + 800df58: b510 push {r4, lr} + TimerStop( &MacCtx.AckTimeoutTimer ); + 800df5a: 4c0d ldr r4, [pc, #52] ; (800df90 <OnAckTimeoutTimerEvent+0x38>) + 800df5c: f504 707d add.w r0, r4, #1012 ; 0x3f4 + 800df60: f009 f93c bl 80171dc <UTIL_TIMER_Stop> + if( MacCtx.NodeAckRequested == true ) + 800df64: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800df68: b113 cbz r3, 800df70 <OnAckTimeoutTimerEvent+0x18> + MacCtx.AckTimeoutRetry = true; + 800df6a: 2201 movs r2, #1 + 800df6c: f884 240f strb.w r2, [r4, #1039] ; 0x40f + if( Nvm.MacGroup2.DeviceClass == CLASS_C ) + 800df70: 4b08 ldr r3, [pc, #32] ; (800df94 <OnAckTimeoutTimerEvent+0x3c>) + 800df72: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800df76: 2b02 cmp r3, #2 + 800df78: d002 beq.n 800df80 <OnAckTimeoutTimerEvent+0x28> + OnMacProcessNotify( ); + 800df7a: f7ff fed3 bl 800dd24 <OnMacProcessNotify> +} + 800df7e: bd10 pop {r4, pc} + MacCtx.MacFlags.Bits.MacDone = 1; + 800df80: 4a03 ldr r2, [pc, #12] ; (800df90 <OnAckTimeoutTimerEvent+0x38>) + 800df82: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 800df86: f043 0310 orr.w r3, r3, #16 + 800df8a: f882 3481 strb.w r3, [r2, #1153] ; 0x481 + 800df8e: e7f4 b.n 800df7a <OnAckTimeoutTimerEvent+0x22> + 800df90: 20001fe4 .word 0x20001fe4 + 800df94: 20001870 .word 0x20001870 + +0800df98 <PrepareRxDoneAbort>: +{ + 800df98: b508 push {r3, lr} + MacCtx.MacState |= LORAMAC_RX_ABORT; + 800df9a: 4b0e ldr r3, [pc, #56] ; (800dfd4 <PrepareRxDoneAbort+0x3c>) + 800df9c: f8d3 2340 ldr.w r2, [r3, #832] ; 0x340 + 800dfa0: f042 0280 orr.w r2, r2, #128 ; 0x80 + 800dfa4: f8c3 2340 str.w r2, [r3, #832] ; 0x340 + if( MacCtx.NodeAckRequested == true ) + 800dfa8: f893 3410 ldrb.w r3, [r3, #1040] ; 0x410 + 800dfac: b973 cbnz r3, 800dfcc <PrepareRxDoneAbort+0x34> + MacCtx.MacFlags.Bits.McpsInd = 1; + 800dfae: 4b09 ldr r3, [pc, #36] ; (800dfd4 <PrepareRxDoneAbort+0x3c>) + 800dfb0: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 800dfb4: f042 0202 orr.w r2, r2, #2 + 800dfb8: f883 2481 strb.w r2, [r3, #1153] ; 0x481 + MacCtx.MacFlags.Bits.MacDone = 1; + 800dfbc: b2d2 uxtb r2, r2 + 800dfbe: f042 0210 orr.w r2, r2, #16 + 800dfc2: f883 2481 strb.w r2, [r3, #1153] ; 0x481 + UpdateRxSlotIdleState( ); + 800dfc6: f7ff fd9d bl 800db04 <UpdateRxSlotIdleState> +} + 800dfca: bd08 pop {r3, pc} + OnAckTimeoutTimerEvent( NULL ); + 800dfcc: 2000 movs r0, #0 + 800dfce: f7ff ffc3 bl 800df58 <OnAckTimeoutTimerEvent> + 800dfd2: e7ec b.n 800dfae <PrepareRxDoneAbort+0x16> + 800dfd4: 20001fe4 .word 0x20001fe4 + +0800dfd8 <LoRaMacCheckForBeaconAcquisition>: +{ + 800dfd8: b508 push {r3, lr} + if( ( LoRaMacConfirmQueueIsCmdActive( MLME_BEACON_ACQUISITION ) == true ) && + 800dfda: 200c movs r0, #12 + 800dfdc: f003 fb40 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + 800dfe0: b188 cbz r0, 800e006 <LoRaMacCheckForBeaconAcquisition+0x2e> + ( MacCtx.MacFlags.Bits.McpsReq == 0 ) ) + 800dfe2: 4b0b ldr r3, [pc, #44] ; (800e010 <LoRaMacCheckForBeaconAcquisition+0x38>) + 800dfe4: f893 0481 ldrb.w r0, [r3, #1153] ; 0x481 + if( ( LoRaMacConfirmQueueIsCmdActive( MLME_BEACON_ACQUISITION ) == true ) && + 800dfe8: f010 0f01 tst.w r0, #1 + 800dfec: d10d bne.n 800e00a <LoRaMacCheckForBeaconAcquisition+0x32> + if( MacCtx.MacFlags.Bits.MlmeReq == 1 ) + 800dfee: f010 0004 ands.w r0, r0, #4 + 800dff2: d009 beq.n 800e008 <LoRaMacCheckForBeaconAcquisition+0x30> + MacCtx.MacState &= ~LORAMAC_TX_RUNNING; + 800dff4: 461a mov r2, r3 + 800dff6: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 800dffa: f023 0302 bic.w r3, r3, #2 + 800dffe: f8c2 3340 str.w r3, [r2, #832] ; 0x340 + return 0x01; + 800e002: 2001 movs r0, #1 + 800e004: e000 b.n 800e008 <LoRaMacCheckForBeaconAcquisition+0x30> + return 0x00; + 800e006: 2000 movs r0, #0 +} + 800e008: bd08 pop {r3, pc} + return 0x00; + 800e00a: 2000 movs r0, #0 + 800e00c: e7fc b.n 800e008 <LoRaMacCheckForBeaconAcquisition+0x30> + 800e00e: bf00 nop + 800e010: 20001fe4 .word 0x20001fe4 + +0800e014 <GetFCntDown>: +{ + 800e014: b538 push {r3, r4, r5, lr} + 800e016: 9c05 ldr r4, [sp, #20] + 800e018: 9d06 ldr r5, [sp, #24] + if( ( macMsg == NULL ) || ( fCntID == NULL ) || + 800e01a: b302 cbz r2, 800e05e <GetFCntDown+0x4a> + 800e01c: 4694 mov ip, r2 + 800e01e: b304 cbz r4, 800e062 <GetFCntDown+0x4e> + 800e020: b30d cbz r5, 800e066 <GetFCntDown+0x52> + switch( addrID ) + 800e022: b188 cbz r0, 800e048 <GetFCntDown+0x34> + 800e024: 2801 cmp r0, #1 + 800e026: d120 bne.n 800e06a <GetFCntDown+0x56> + if( lrWanVersion.Fields.Minor == 1 ) + 800e028: f3c3 4207 ubfx r2, r3, #16, #8 + 800e02c: 2a01 cmp r2, #1 + 800e02e: d002 beq.n 800e036 <GetFCntDown+0x22> + *fCntID = FCNT_DOWN; + 800e030: 2303 movs r3, #3 + 800e032: 7023 strb r3, [r4, #0] + 800e034: e00a b.n 800e04c <GetFCntDown+0x38> + if( ( fType == FRAME_TYPE_A ) || ( fType == FRAME_TYPE_D ) ) + 800e036: b121 cbz r1, 800e042 <GetFCntDown+0x2e> + 800e038: 2903 cmp r1, #3 + 800e03a: d002 beq.n 800e042 <GetFCntDown+0x2e> + *fCntID = N_FCNT_DOWN; + 800e03c: 2301 movs r3, #1 + 800e03e: 7023 strb r3, [r4, #0] + 800e040: e004 b.n 800e04c <GetFCntDown+0x38> + *fCntID = A_FCNT_DOWN; + 800e042: 2302 movs r3, #2 + 800e044: 7023 strb r3, [r4, #0] + 800e046: e001 b.n 800e04c <GetFCntDown+0x38> + *fCntID = MC_FCNT_DOWN_0; + 800e048: 2304 movs r3, #4 + 800e04a: 7023 strb r3, [r4, #0] + return LoRaMacCryptoGetFCntDown( *fCntID, maxFCntGap, macMsg->FHDR.FCnt, currentDown ); + 800e04c: 462b mov r3, r5 + 800e04e: f8bc 200e ldrh.w r2, [ip, #14] + 800e052: f8bd 1010 ldrh.w r1, [sp, #16] + 800e056: 7820 ldrb r0, [r4, #0] + 800e058: f003 fd2c bl 8011ab4 <LoRaMacCryptoGetFCntDown> +} + 800e05c: bd38 pop {r3, r4, r5, pc} + return LORAMAC_CRYPTO_ERROR_NPE; + 800e05e: 200a movs r0, #10 + 800e060: e7fc b.n 800e05c <GetFCntDown+0x48> + 800e062: 200a movs r0, #10 + 800e064: e7fa b.n 800e05c <GetFCntDown+0x48> + 800e066: 200a movs r0, #10 + 800e068: e7f8 b.n 800e05c <GetFCntDown+0x48> + switch( addrID ) + 800e06a: 2005 movs r0, #5 + 800e06c: e7f6 b.n 800e05c <GetFCntDown+0x48> + +0800e06e <RemoveMacCommands>: + if( rxSlot == RX_SLOT_WIN_1 || rxSlot == RX_SLOT_WIN_2 ) + 800e06e: 2801 cmp r0, #1 + 800e070: d900 bls.n 800e074 <RemoveMacCommands+0x6> + 800e072: 4770 bx lr +{ + 800e074: b508 push {r3, lr} + if( request == MCPS_CONFIRMED ) + 800e076: 2a01 cmp r2, #1 + 800e078: d105 bne.n 800e086 <RemoveMacCommands+0x18> + if( fCtrl.Bits.Ack == 1 ) + 800e07a: f011 0f20 tst.w r1, #32 + 800e07e: d004 beq.n 800e08a <RemoveMacCommands+0x1c> + LoRaMacCommandsRemoveStickyAnsCmds( ); + 800e080: f003 f99a bl 80113b8 <LoRaMacCommandsRemoveStickyAnsCmds> + 800e084: e001 b.n 800e08a <RemoveMacCommands+0x1c> + LoRaMacCommandsRemoveStickyAnsCmds( ); + 800e086: f003 f997 bl 80113b8 <LoRaMacCommandsRemoveStickyAnsCmds> +} + 800e08a: bd08 pop {r3, pc} + +0800e08c <ProcessMacCommands>: +{ + 800e08c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800e090: b08f sub sp, #60 ; 0x3c + 800e092: 4605 mov r5, r0 + 800e094: 460c mov r4, r1 + 800e096: 4616 mov r6, r2 + 800e098: 4698 mov r8, r3 + uint8_t status = 0; + 800e09a: 2700 movs r7, #0 + 800e09c: f88d 702f strb.w r7, [sp, #47] ; 0x2f + uint8_t macCmdPayload[2] = { 0x00, 0x00 }; + 800e0a0: f8ad 702c strh.w r7, [sp, #44] ; 0x2c + while( macIndex < commandsSize ) + 800e0a4: 42b4 cmp r4, r6 + 800e0a6: f080 82c4 bcs.w 800e632 <ProcessMacCommands+0x5a6> + if( ( LoRaMacCommandsGetCmdSize( payload[macIndex] ) + macIndex ) > commandsSize ) + 800e0aa: 5d28 ldrb r0, [r5, r4] + 800e0ac: f003 f9dc bl 8011468 <LoRaMacCommandsGetCmdSize> + 800e0b0: 4420 add r0, r4 + 800e0b2: 42b0 cmp r0, r6 + 800e0b4: f300 82bd bgt.w 800e632 <ProcessMacCommands+0x5a6> + switch( payload[macIndex++] ) + 800e0b8: f104 0901 add.w r9, r4, #1 + 800e0bc: fa5f f989 uxtb.w r9, r9 + 800e0c0: 5d29 ldrb r1, [r5, r4] + 800e0c2: 3902 subs r1, #2 + 800e0c4: 2911 cmp r1, #17 + 800e0c6: f200 82b4 bhi.w 800e632 <ProcessMacCommands+0x5a6> + 800e0ca: e8df f011 tbh [pc, r1, lsl #1] + 800e0ce: 0012 .short 0x0012 + 800e0d0: 00910029 .word 0x00910029 + 800e0d4: 00ed00a5 .word 0x00ed00a5 + 800e0d8: 013f0105 .word 0x013f0105 + 800e0dc: 01ad0156 .word 0x01ad0156 + 800e0e0: 02b202b2 .word 0x02b202b2 + 800e0e4: 02b201de .word 0x02b201de + 800e0e8: 023e02b2 .word 0x023e02b2 + 800e0ec: 02750255 .word 0x02750255 + 800e0f0: 0291 .short 0x0291 + if( LoRaMacConfirmQueueIsCmdActive( MLME_LINK_CHECK ) == true ) + 800e0f2: 2005 movs r0, #5 + 800e0f4: f003 fab4 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + 800e0f8: b908 cbnz r0, 800e0fe <ProcessMacCommands+0x72> + switch( payload[macIndex++] ) + 800e0fa: 464c mov r4, r9 + 800e0fc: e7d2 b.n 800e0a4 <ProcessMacCommands+0x18> + LoRaMacConfirmQueueSetStatus( LORAMAC_EVENT_INFO_STATUS_OK, MLME_LINK_CHECK ); + 800e0fe: 2105 movs r1, #5 + 800e100: 2000 movs r0, #0 + 800e102: f003 fa61 bl 80115c8 <LoRaMacConfirmQueueSetStatus> + MacCtx.MlmeConfirm.DemodMargin = payload[macIndex++]; + 800e106: 1ca3 adds r3, r4, #2 + 800e108: b2db uxtb r3, r3 + 800e10a: f815 1009 ldrb.w r1, [r5, r9] + 800e10e: 4ac2 ldr r2, [pc, #776] ; (800e418 <ProcessMacCommands+0x38c>) + 800e110: f882 1450 strb.w r1, [r2, #1104] ; 0x450 + MacCtx.MlmeConfirm.NbGateways = payload[macIndex++]; + 800e114: 3403 adds r4, #3 + 800e116: b2e4 uxtb r4, r4 + 800e118: 5ceb ldrb r3, [r5, r3] + 800e11a: f882 3451 strb.w r3, [r2, #1105] ; 0x451 + 800e11e: e7c1 b.n 800e0a4 <ProcessMacCommands+0x18> + int8_t linkAdrDatarate = DR_0; + 800e120: 2300 movs r3, #0 + 800e122: f88d 300a strb.w r3, [sp, #10] + int8_t linkAdrTxPower = TX_POWER_0; + 800e126: f88d 300b strb.w r3, [sp, #11] + uint8_t linkAdrNbRep = 0; + 800e12a: f88d 300c strb.w r3, [sp, #12] + uint8_t linkAdrNbBytesParsed = 0; + 800e12e: f88d 3014 strb.w r3, [sp, #20] + if( adrBlockFound == false ) + 800e132: b10f cbz r7, 800e138 <ProcessMacCommands+0xac> + break; + 800e134: 464c mov r4, r9 + 800e136: e7b5 b.n 800e0a4 <ProcessMacCommands+0x18> + linkAdrReq.Payload = &payload[macIndex - 1]; + 800e138: f109 33ff add.w r3, r9, #4294967295 + 800e13c: 442b add r3, r5 + 800e13e: 9308 str r3, [sp, #32] + linkAdrReq.PayloadSize = commandsSize - ( macIndex - 1 ); + 800e140: eba6 0309 sub.w r3, r6, r9 + 800e144: 3301 adds r3, #1 + 800e146: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + linkAdrReq.AdrEnabled = Nvm.MacGroup2.AdrCtrlOn; + 800e14a: 48b4 ldr r0, [pc, #720] ; (800e41c <ProcessMacCommands+0x390>) + 800e14c: f890 311a ldrb.w r3, [r0, #282] ; 0x11a + 800e150: f88d 3026 strb.w r3, [sp, #38] ; 0x26 + linkAdrReq.UplinkDwellTime = Nvm.MacGroup2.MacParams.UplinkDwellTime; + 800e154: f890 307c ldrb.w r3, [r0, #124] ; 0x7c + 800e158: f88d 3025 strb.w r3, [sp, #37] ; 0x25 + linkAdrReq.CurrentDatarate = Nvm.MacGroup1.ChannelsDatarate; + 800e15c: f990 3039 ldrsb.w r3, [r0, #57] ; 0x39 + 800e160: f88d 3027 strb.w r3, [sp, #39] ; 0x27 + linkAdrReq.CurrentTxPower = Nvm.MacGroup1.ChannelsTxPower; + 800e164: f990 3038 ldrsb.w r3, [r0, #56] ; 0x38 + 800e168: f88d 3028 strb.w r3, [sp, #40] ; 0x28 + linkAdrReq.CurrentNbRep = Nvm.MacGroup2.MacParams.ChannelsNbTrans; + 800e16c: f890 3068 ldrb.w r3, [r0, #104] ; 0x68 + 800e170: f88d 3029 strb.w r3, [sp, #41] ; 0x29 + linkAdrReq.Version = Nvm.MacGroup2.Version; + 800e174: f8d0 3128 ldr.w r3, [r0, #296] ; 0x128 + 800e178: 9307 str r3, [sp, #28] + status = RegionLinkAdrReq( Nvm.MacGroup2.Region, &linkAdrReq, &linkAdrDatarate, + 800e17a: ab05 add r3, sp, #20 + 800e17c: 9301 str r3, [sp, #4] + 800e17e: ab03 add r3, sp, #12 + 800e180: 9300 str r3, [sp, #0] + 800e182: f10d 030b add.w r3, sp, #11 + 800e186: f10d 020a add.w r2, sp, #10 + 800e18a: a907 add r1, sp, #28 + 800e18c: f890 0048 ldrb.w r0, [r0, #72] ; 0x48 + 800e190: f004 f84c bl 801222c <RegionLinkAdrReq> + 800e194: f88d 002f strb.w r0, [sp, #47] ; 0x2f + if( ( status & 0x07 ) == 0x07 ) + 800e198: f000 0007 and.w r0, r0, #7 + 800e19c: 2807 cmp r0, #7 + 800e19e: d001 beq.n 800e1a4 <ProcessMacCommands+0x118> +{ + 800e1a0: 2400 movs r4, #0 + 800e1a2: e015 b.n 800e1d0 <ProcessMacCommands+0x144> + Nvm.MacGroup1.ChannelsDatarate = linkAdrDatarate; + 800e1a4: 4b9d ldr r3, [pc, #628] ; (800e41c <ProcessMacCommands+0x390>) + 800e1a6: f89d 200a ldrb.w r2, [sp, #10] + 800e1aa: f883 2039 strb.w r2, [r3, #57] ; 0x39 + Nvm.MacGroup1.ChannelsTxPower = linkAdrTxPower; + 800e1ae: f89d 200b ldrb.w r2, [sp, #11] + 800e1b2: f883 2038 strb.w r2, [r3, #56] ; 0x38 + Nvm.MacGroup2.MacParams.ChannelsNbTrans = linkAdrNbRep; + 800e1b6: f89d 200c ldrb.w r2, [sp, #12] + 800e1ba: f883 2068 strb.w r2, [r3, #104] ; 0x68 + 800e1be: e7ef b.n 800e1a0 <ProcessMacCommands+0x114> + LoRaMacCommandsAddCmd( MOTE_MAC_LINK_ADR_ANS, &status, 1 ); + 800e1c0: 2201 movs r2, #1 + 800e1c2: f10d 012f add.w r1, sp, #47 ; 0x2f + 800e1c6: 2003 movs r0, #3 + 800e1c8: f003 f882 bl 80112d0 <LoRaMacCommandsAddCmd> + for( uint8_t i = 0; i < ( linkAdrNbBytesParsed / 5 ); i++ ) + 800e1cc: 3401 adds r4, #1 + 800e1ce: b2e4 uxtb r4, r4 + 800e1d0: f89d 2014 ldrb.w r2, [sp, #20] + 800e1d4: 4b92 ldr r3, [pc, #584] ; (800e420 <ProcessMacCommands+0x394>) + 800e1d6: fba3 1302 umull r1, r3, r3, r2 + 800e1da: ebb4 0f93 cmp.w r4, r3, lsr #2 + 800e1de: d3ef bcc.n 800e1c0 <ProcessMacCommands+0x134> + macIndex += linkAdrNbBytesParsed - 1; + 800e1e0: eb02 0309 add.w r3, r2, r9 + 800e1e4: b2db uxtb r3, r3 + 800e1e6: 3b01 subs r3, #1 + 800e1e8: fa5f f983 uxtb.w r9, r3 + adrBlockFound = true; + 800e1ec: 2701 movs r7, #1 + 800e1ee: e7a1 b.n 800e134 <ProcessMacCommands+0xa8> + Nvm.MacGroup2.MaxDCycle = payload[macIndex++] & 0x0F; + 800e1f0: 3402 adds r4, #2 + 800e1f2: b2e4 uxtb r4, r4 + 800e1f4: f815 3009 ldrb.w r3, [r5, r9] + 800e1f8: f003 030f and.w r3, r3, #15 + 800e1fc: 4987 ldr r1, [pc, #540] ; (800e41c <ProcessMacCommands+0x390>) + 800e1fe: f881 311b strb.w r3, [r1, #283] ; 0x11b + Nvm.MacGroup2.AggregatedDCycle = 1 << Nvm.MacGroup2.MaxDCycle; + 800e202: 2201 movs r2, #1 + 800e204: fa02 f303 lsl.w r3, r2, r3 + 800e208: f8a1 311e strh.w r3, [r1, #286] ; 0x11e + LoRaMacCommandsAddCmd( MOTE_MAC_DUTY_CYCLE_ANS, macCmdPayload, 0 ); + 800e20c: 2200 movs r2, #0 + 800e20e: a90b add r1, sp, #44 ; 0x2c + 800e210: 2004 movs r0, #4 + 800e212: f003 f85d bl 80112d0 <LoRaMacCommandsAddCmd> + break; + 800e216: e745 b.n 800e0a4 <ProcessMacCommands+0x18> + status = 0x07; + 800e218: 2307 movs r3, #7 + 800e21a: f88d 302f strb.w r3, [sp, #47] ; 0x2f + rxParamSetupReq.DrOffset = ( payload[macIndex] >> 4 ) & 0x07; + 800e21e: f815 3009 ldrb.w r3, [r5, r9] + 800e222: f3c3 1302 ubfx r3, r3, #4, #3 + 800e226: f88d 301d strb.w r3, [sp, #29] + rxParamSetupReq.Datarate = payload[macIndex] & 0x0F; + 800e22a: f915 3009 ldrsb.w r3, [r5, r9] + 800e22e: f003 030f and.w r3, r3, #15 + 800e232: f88d 301c strb.w r3, [sp, #28] + macIndex++; + 800e236: 1ca3 adds r3, r4, #2 + 800e238: b2db uxtb r3, r3 + rxParamSetupReq.Frequency = ( uint32_t ) payload[macIndex++]; + 800e23a: 1ce1 adds r1, r4, #3 + 800e23c: b2c9 uxtb r1, r1 + 800e23e: 5ceb ldrb r3, [r5, r3] + 800e240: 9308 str r3, [sp, #32] + rxParamSetupReq.Frequency |= ( uint32_t ) payload[macIndex++] << 8; + 800e242: 1d22 adds r2, r4, #4 + 800e244: b2d2 uxtb r2, r2 + 800e246: 5c69 ldrb r1, [r5, r1] + 800e248: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800e24c: 9308 str r3, [sp, #32] + rxParamSetupReq.Frequency |= ( uint32_t ) payload[macIndex++] << 16; + 800e24e: 3405 adds r4, #5 + 800e250: b2e4 uxtb r4, r4 + 800e252: 5caa ldrb r2, [r5, r2] + 800e254: ea43 4302 orr.w r3, r3, r2, lsl #16 + 800e258: 9308 str r3, [sp, #32] + rxParamSetupReq.Frequency *= 100; + 800e25a: 2264 movs r2, #100 ; 0x64 + 800e25c: fb02 f303 mul.w r3, r2, r3 + 800e260: 9308 str r3, [sp, #32] + status = RegionRxParamSetupReq( Nvm.MacGroup2.Region, &rxParamSetupReq ); + 800e262: a907 add r1, sp, #28 + 800e264: 4b6d ldr r3, [pc, #436] ; (800e41c <ProcessMacCommands+0x390>) + 800e266: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e26a: f003 fff0 bl 801224e <RegionRxParamSetupReq> + 800e26e: f88d 002f strb.w r0, [sp, #47] ; 0x2f + if( ( status & 0x07 ) == 0x07 ) + 800e272: f000 0307 and.w r3, r0, #7 + 800e276: 2b07 cmp r3, #7 + 800e278: d007 beq.n 800e28a <ProcessMacCommands+0x1fe> + macCmdPayload[0] = status; + 800e27a: f88d 002c strb.w r0, [sp, #44] ; 0x2c + LoRaMacCommandsAddCmd( MOTE_MAC_RX_PARAM_SETUP_ANS, macCmdPayload, 1 ); + 800e27e: 2201 movs r2, #1 + 800e280: a90b add r1, sp, #44 ; 0x2c + 800e282: 2005 movs r0, #5 + 800e284: f003 f824 bl 80112d0 <LoRaMacCommandsAddCmd> + break; + 800e288: e70c b.n 800e0a4 <ProcessMacCommands+0x18> + Nvm.MacGroup2.MacParams.Rx2Channel.Datarate = rxParamSetupReq.Datarate; + 800e28a: f89d 201c ldrb.w r2, [sp, #28] + 800e28e: 4b63 ldr r3, [pc, #396] ; (800e41c <ProcessMacCommands+0x390>) + 800e290: f883 2070 strb.w r2, [r3, #112] ; 0x70 + Nvm.MacGroup2.MacParams.RxCChannel.Datarate = rxParamSetupReq.Datarate; + 800e294: f883 2078 strb.w r2, [r3, #120] ; 0x78 + Nvm.MacGroup2.MacParams.Rx2Channel.Frequency = rxParamSetupReq.Frequency; + 800e298: 9a08 ldr r2, [sp, #32] + 800e29a: 66da str r2, [r3, #108] ; 0x6c + Nvm.MacGroup2.MacParams.RxCChannel.Frequency = rxParamSetupReq.Frequency; + 800e29c: 675a str r2, [r3, #116] ; 0x74 + Nvm.MacGroup2.MacParams.Rx1DrOffset = rxParamSetupReq.DrOffset; + 800e29e: f89d 201d ldrb.w r2, [sp, #29] + 800e2a2: f883 2069 strb.w r2, [r3, #105] ; 0x69 + 800e2a6: e7e8 b.n 800e27a <ProcessMacCommands+0x1ee> + if( ( MacCtx.MacCallbacks != NULL ) && ( MacCtx.MacCallbacks->GetBatteryLevel != NULL ) ) + 800e2a8: 4b5b ldr r3, [pc, #364] ; (800e418 <ProcessMacCommands+0x38c>) + 800e2aa: f8d3 3348 ldr.w r3, [r3, #840] ; 0x348 + 800e2ae: b17b cbz r3, 800e2d0 <ProcessMacCommands+0x244> + 800e2b0: 681b ldr r3, [r3, #0] + 800e2b2: b17b cbz r3, 800e2d4 <ProcessMacCommands+0x248> + batteryLevel = MacCtx.MacCallbacks->GetBatteryLevel( ); + 800e2b4: 4798 blx r3 + macCmdPayload[0] = batteryLevel; + 800e2b6: f88d 002c strb.w r0, [sp, #44] ; 0x2c + macCmdPayload[1] = ( uint8_t )( snr & 0x3F ); + 800e2ba: f008 033f and.w r3, r8, #63 ; 0x3f + 800e2be: f88d 302d strb.w r3, [sp, #45] ; 0x2d + LoRaMacCommandsAddCmd( MOTE_MAC_DEV_STATUS_ANS, macCmdPayload, 2 ); + 800e2c2: 2202 movs r2, #2 + 800e2c4: a90b add r1, sp, #44 ; 0x2c + 800e2c6: 2006 movs r0, #6 + 800e2c8: f003 f802 bl 80112d0 <LoRaMacCommandsAddCmd> + switch( payload[macIndex++] ) + 800e2cc: 464c mov r4, r9 + break; + 800e2ce: e6e9 b.n 800e0a4 <ProcessMacCommands+0x18> + uint8_t batteryLevel = BAT_LEVEL_NO_MEASURE; + 800e2d0: 20ff movs r0, #255 ; 0xff + 800e2d2: e7f0 b.n 800e2b6 <ProcessMacCommands+0x22a> + 800e2d4: 20ff movs r0, #255 ; 0xff + 800e2d6: e7ee b.n 800e2b6 <ProcessMacCommands+0x22a> + status = 0x03; + 800e2d8: 2303 movs r3, #3 + 800e2da: f88d 302f strb.w r3, [sp, #47] ; 0x2f + newChannelReq.ChannelId = payload[macIndex++]; + 800e2de: 1ca3 adds r3, r4, #2 + 800e2e0: b2db uxtb r3, r3 + 800e2e2: f915 2009 ldrsb.w r2, [r5, r9] + 800e2e6: f88d 2018 strb.w r2, [sp, #24] + newChannelReq.NewChannel = &chParam; + 800e2ea: aa07 add r2, sp, #28 + 800e2ec: 9205 str r2, [sp, #20] + chParam.Frequency = ( uint32_t ) payload[macIndex++]; + 800e2ee: 1ce2 adds r2, r4, #3 + 800e2f0: b2d2 uxtb r2, r2 + 800e2f2: 5ceb ldrb r3, [r5, r3] + 800e2f4: 9307 str r3, [sp, #28] + chParam.Frequency |= ( uint32_t ) payload[macIndex++] << 8; + 800e2f6: 1d21 adds r1, r4, #4 + 800e2f8: b2c9 uxtb r1, r1 + 800e2fa: 5caa ldrb r2, [r5, r2] + 800e2fc: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800e300: 9307 str r3, [sp, #28] + chParam.Frequency |= ( uint32_t ) payload[macIndex++] << 16; + 800e302: 1d62 adds r2, r4, #5 + 800e304: b2d2 uxtb r2, r2 + 800e306: 5c69 ldrb r1, [r5, r1] + 800e308: ea43 4301 orr.w r3, r3, r1, lsl #16 + 800e30c: 9307 str r3, [sp, #28] + chParam.Frequency *= 100; + 800e30e: 2164 movs r1, #100 ; 0x64 + 800e310: fb01 f303 mul.w r3, r1, r3 + 800e314: 9307 str r3, [sp, #28] + chParam.Rx1Frequency = 0; + 800e316: 2300 movs r3, #0 + 800e318: 9308 str r3, [sp, #32] + chParam.DrRange.Value = payload[macIndex++]; + 800e31a: 3406 adds r4, #6 + 800e31c: b2e4 uxtb r4, r4 + 800e31e: 56ab ldrsb r3, [r5, r2] + 800e320: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + status = ( uint8_t )RegionNewChannelReq( Nvm.MacGroup2.Region, &newChannelReq ); + 800e324: a905 add r1, sp, #20 + 800e326: 4b3d ldr r3, [pc, #244] ; (800e41c <ProcessMacCommands+0x390>) + 800e328: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e32c: f003 ff97 bl 801225e <RegionNewChannelReq> + 800e330: b2c3 uxtb r3, r0 + 800e332: f88d 302f strb.w r3, [sp, #47] ; 0x2f + if( ( int8_t )status >= 0 ) + 800e336: 2800 cmp r0, #0 + 800e338: f6ff aeb4 blt.w 800e0a4 <ProcessMacCommands+0x18> + macCmdPayload[0] = status; + 800e33c: f88d 302c strb.w r3, [sp, #44] ; 0x2c + LoRaMacCommandsAddCmd( MOTE_MAC_NEW_CHANNEL_ANS, macCmdPayload, 1 ); + 800e340: 2201 movs r2, #1 + 800e342: a90b add r1, sp, #44 ; 0x2c + 800e344: 2007 movs r0, #7 + 800e346: f002 ffc3 bl 80112d0 <LoRaMacCommandsAddCmd> + break; + 800e34a: e6ab b.n 800e0a4 <ProcessMacCommands+0x18> + uint8_t delay = payload[macIndex++] & 0x0F; + 800e34c: 3402 adds r4, #2 + 800e34e: b2e4 uxtb r4, r4 + 800e350: f815 3009 ldrb.w r3, [r5, r9] + if( delay == 0 ) + 800e354: f013 030f ands.w r3, r3, #15 + 800e358: d100 bne.n 800e35c <ProcessMacCommands+0x2d0> + delay++; + 800e35a: 3301 adds r3, #1 + Nvm.MacGroup2.MacParams.ReceiveDelay1 = delay * 1000; + 800e35c: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800e360: fb02 f303 mul.w r3, r2, r3 + 800e364: 4a2d ldr r2, [pc, #180] ; (800e41c <ProcessMacCommands+0x390>) + 800e366: 6593 str r3, [r2, #88] ; 0x58 + Nvm.MacGroup2.MacParams.ReceiveDelay2 = Nvm.MacGroup2.MacParams.ReceiveDelay1 + 1000; + 800e368: f503 737a add.w r3, r3, #1000 ; 0x3e8 + 800e36c: 65d3 str r3, [r2, #92] ; 0x5c + LoRaMacCommandsAddCmd( MOTE_MAC_RX_TIMING_SETUP_ANS, macCmdPayload, 0 ); + 800e36e: 2200 movs r2, #0 + 800e370: a90b add r1, sp, #44 ; 0x2c + 800e372: 2008 movs r0, #8 + 800e374: f002 ffac bl 80112d0 <LoRaMacCommandsAddCmd> + break; + 800e378: e694 b.n 800e0a4 <ProcessMacCommands+0x18> + uint8_t eirpDwellTime = payload[macIndex++]; + 800e37a: 3402 adds r4, #2 + 800e37c: b2e4 uxtb r4, r4 + 800e37e: f815 3009 ldrb.w r3, [r5, r9] + txParamSetupReq.UplinkDwellTime = 0; + 800e382: 2200 movs r2, #0 + 800e384: f88d 200c strb.w r2, [sp, #12] + txParamSetupReq.DownlinkDwellTime = 0; + 800e388: f88d 200d strb.w r2, [sp, #13] + if( ( eirpDwellTime & 0x20 ) == 0x20 ) + 800e38c: f013 0f20 tst.w r3, #32 + 800e390: d002 beq.n 800e398 <ProcessMacCommands+0x30c> + txParamSetupReq.DownlinkDwellTime = 1; + 800e392: 2201 movs r2, #1 + 800e394: f88d 200d strb.w r2, [sp, #13] + if( ( eirpDwellTime & 0x10 ) == 0x10 ) + 800e398: f013 0f10 tst.w r3, #16 + 800e39c: d002 beq.n 800e3a4 <ProcessMacCommands+0x318> + txParamSetupReq.UplinkDwellTime = 1; + 800e39e: 2201 movs r2, #1 + 800e3a0: f88d 200c strb.w r2, [sp, #12] + txParamSetupReq.MaxEirp = eirpDwellTime & 0x0F; + 800e3a4: f003 030f and.w r3, r3, #15 + 800e3a8: f88d 300e strb.w r3, [sp, #14] + if( RegionTxParamSetupReq( Nvm.MacGroup2.Region, &txParamSetupReq ) != -1 ) + 800e3ac: a903 add r1, sp, #12 + 800e3ae: 4b1b ldr r3, [pc, #108] ; (800e41c <ProcessMacCommands+0x390>) + 800e3b0: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e3b4: f003 ff5b bl 801226e <RegionTxParamSetupReq> + 800e3b8: f1b0 3fff cmp.w r0, #4294967295 + 800e3bc: f43f ae72 beq.w 800e0a4 <ProcessMacCommands+0x18> + Nvm.MacGroup2.MacParams.UplinkDwellTime = txParamSetupReq.UplinkDwellTime; + 800e3c0: f89d a00c ldrb.w sl, [sp, #12] + 800e3c4: f8df 9054 ldr.w r9, [pc, #84] ; 800e41c <ProcessMacCommands+0x390> + 800e3c8: f889 a07c strb.w sl, [r9, #124] ; 0x7c + Nvm.MacGroup2.MacParams.DownlinkDwellTime = txParamSetupReq.DownlinkDwellTime; + 800e3cc: f89d 300d ldrb.w r3, [sp, #13] + 800e3d0: f889 307d strb.w r3, [r9, #125] ; 0x7d + Nvm.MacGroup2.MacParams.MaxEirp = LoRaMacMaxEirpTable[txParamSetupReq.MaxEirp]; + 800e3d4: f89d 300e ldrb.w r3, [sp, #14] + 800e3d8: 4a12 ldr r2, [pc, #72] ; (800e424 <ProcessMacCommands+0x398>) + 800e3da: 5cd0 ldrb r0, [r2, r3] + 800e3dc: f7f3 fb1a bl 8001a14 <__aeabi_ui2f> + 800e3e0: f8c9 0080 str.w r0, [r9, #128] ; 0x80 + getPhy.Attribute = PHY_MIN_TX_DR; + 800e3e4: 2302 movs r3, #2 + 800e3e6: f88d 301c strb.w r3, [sp, #28] + getPhy.UplinkDwellTime = Nvm.MacGroup2.MacParams.UplinkDwellTime; + 800e3ea: f88d a01e strb.w sl, [sp, #30] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800e3ee: a907 add r1, sp, #28 + 800e3f0: f899 0048 ldrb.w r0, [r9, #72] ; 0x48 + 800e3f4: f003 fec3 bl 801217e <RegionGetPhyParam> + 800e3f8: 9005 str r0, [sp, #20] + Nvm.MacGroup1.ChannelsDatarate = MAX( Nvm.MacGroup1.ChannelsDatarate, ( int8_t )phyParam.Value ); + 800e3fa: b240 sxtb r0, r0 + 800e3fc: f999 3039 ldrsb.w r3, [r9, #57] ; 0x39 + 800e400: 4298 cmp r0, r3 + 800e402: bfb8 it lt + 800e404: 4618 movlt r0, r3 + 800e406: f889 0039 strb.w r0, [r9, #57] ; 0x39 + LoRaMacCommandsAddCmd( MOTE_MAC_TX_PARAM_SETUP_ANS, macCmdPayload, 0 ); + 800e40a: 2200 movs r2, #0 + 800e40c: a90b add r1, sp, #44 ; 0x2c + 800e40e: 2009 movs r0, #9 + 800e410: f002 ff5e bl 80112d0 <LoRaMacCommandsAddCmd> + break; + 800e414: e646 b.n 800e0a4 <ProcessMacCommands+0x18> + 800e416: bf00 nop + 800e418: 20001fe4 .word 0x20001fe4 + 800e41c: 20001870 .word 0x20001870 + 800e420: cccccccd .word 0xcccccccd + 800e424: 08018650 .word 0x08018650 + status = 0x03; + 800e428: 2303 movs r3, #3 + 800e42a: f88d 302f strb.w r3, [sp, #47] ; 0x2f + dlChannelReq.ChannelId = payload[macIndex++]; + 800e42e: 1ca3 adds r3, r4, #2 + 800e430: b2db uxtb r3, r3 + 800e432: f815 2009 ldrb.w r2, [r5, r9] + 800e436: f88d 201c strb.w r2, [sp, #28] + dlChannelReq.Rx1Frequency = ( uint32_t ) payload[macIndex++]; + 800e43a: 1ce1 adds r1, r4, #3 + 800e43c: b2c9 uxtb r1, r1 + 800e43e: 5ceb ldrb r3, [r5, r3] + 800e440: 9308 str r3, [sp, #32] + dlChannelReq.Rx1Frequency |= ( uint32_t ) payload[macIndex++] << 8; + 800e442: 1d22 adds r2, r4, #4 + 800e444: b2d2 uxtb r2, r2 + 800e446: 5c69 ldrb r1, [r5, r1] + 800e448: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800e44c: 9308 str r3, [sp, #32] + dlChannelReq.Rx1Frequency |= ( uint32_t ) payload[macIndex++] << 16; + 800e44e: 3405 adds r4, #5 + 800e450: b2e4 uxtb r4, r4 + 800e452: 5caa ldrb r2, [r5, r2] + 800e454: ea43 4302 orr.w r3, r3, r2, lsl #16 + 800e458: 9308 str r3, [sp, #32] + dlChannelReq.Rx1Frequency *= 100; + 800e45a: 2264 movs r2, #100 ; 0x64 + 800e45c: fb02 f303 mul.w r3, r2, r3 + 800e460: 9308 str r3, [sp, #32] + status = ( uint8_t )RegionDlChannelReq( Nvm.MacGroup2.Region, &dlChannelReq ); + 800e462: a907 add r1, sp, #28 + 800e464: 4b74 ldr r3, [pc, #464] ; (800e638 <ProcessMacCommands+0x5ac>) + 800e466: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e46a: f003 ff08 bl 801227e <RegionDlChannelReq> + 800e46e: b2c3 uxtb r3, r0 + 800e470: f88d 302f strb.w r3, [sp, #47] ; 0x2f + if( ( int8_t )status >= 0 ) + 800e474: 2800 cmp r0, #0 + 800e476: f6ff ae15 blt.w 800e0a4 <ProcessMacCommands+0x18> + macCmdPayload[0] = status; + 800e47a: f88d 302c strb.w r3, [sp, #44] ; 0x2c + LoRaMacCommandsAddCmd( MOTE_MAC_DL_CHANNEL_ANS, macCmdPayload, 1 ); + 800e47e: 2201 movs r2, #1 + 800e480: a90b add r1, sp, #44 ; 0x2c + 800e482: 200a movs r0, #10 + 800e484: f002 ff24 bl 80112d0 <LoRaMacCommandsAddCmd> + break; + 800e488: e60c b.n 800e0a4 <ProcessMacCommands+0x18> + if( LoRaMacConfirmQueueIsCmdActive( MLME_DEVICE_TIME ) == true ) + 800e48a: 200a movs r0, #10 + 800e48c: f003 f8e8 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + 800e490: b908 cbnz r0, 800e496 <ProcessMacCommands+0x40a> + switch( payload[macIndex++] ) + 800e492: 464c mov r4, r9 + 800e494: e606 b.n 800e0a4 <ProcessMacCommands+0x18> + LoRaMacConfirmQueueSetStatus( LORAMAC_EVENT_INFO_STATUS_OK, MLME_DEVICE_TIME ); + 800e496: 210a movs r1, #10 + 800e498: 2000 movs r0, #0 + 800e49a: f003 f895 bl 80115c8 <LoRaMacConfirmQueueSetStatus> + SysTime_t gpsEpochTime = { 0 }; + 800e49e: a903 add r1, sp, #12 + 800e4a0: 2300 movs r3, #0 + 800e4a2: 9303 str r3, [sp, #12] + 800e4a4: 9304 str r3, [sp, #16] + SysTime_t sysTime = { 0 }; + 800e4a6: f10d 0a14 add.w sl, sp, #20 + 800e4aa: 9305 str r3, [sp, #20] + 800e4ac: 9306 str r3, [sp, #24] + SysTime_t sysTimeCurrent = { 0 }; + 800e4ae: f10d 0b1c add.w fp, sp, #28 + 800e4b2: 9307 str r3, [sp, #28] + 800e4b4: 9308 str r3, [sp, #32] + gpsEpochTime.Seconds = ( uint32_t )payload[macIndex++]; + 800e4b6: 1ca0 adds r0, r4, #2 + 800e4b8: b2c0 uxtb r0, r0 + 800e4ba: f815 3009 ldrb.w r3, [r5, r9] + 800e4be: 9303 str r3, [sp, #12] + gpsEpochTime.Seconds |= ( uint32_t )payload[macIndex++] << 8; + 800e4c0: 1ce2 adds r2, r4, #3 + 800e4c2: b2d2 uxtb r2, r2 + 800e4c4: 5c28 ldrb r0, [r5, r0] + 800e4c6: ea43 2300 orr.w r3, r3, r0, lsl #8 + 800e4ca: 9303 str r3, [sp, #12] + gpsEpochTime.Seconds |= ( uint32_t )payload[macIndex++] << 16; + 800e4cc: 1d20 adds r0, r4, #4 + 800e4ce: b2c0 uxtb r0, r0 + 800e4d0: 5caa ldrb r2, [r5, r2] + 800e4d2: ea43 4302 orr.w r3, r3, r2, lsl #16 + 800e4d6: 9303 str r3, [sp, #12] + gpsEpochTime.Seconds |= ( uint32_t )payload[macIndex++] << 24; + 800e4d8: 1d62 adds r2, r4, #5 + 800e4da: b2d2 uxtb r2, r2 + 800e4dc: 5c28 ldrb r0, [r5, r0] + 800e4de: ea43 6300 orr.w r3, r3, r0, lsl #24 + 800e4e2: 9303 str r3, [sp, #12] + gpsEpochTime.SubSeconds = payload[macIndex++]; + 800e4e4: 3406 adds r4, #6 + 800e4e6: b2e4 uxtb r4, r4 + 800e4e8: 5caa ldrb r2, [r5, r2] + 800e4ea: f8ad 2010 strh.w r2, [sp, #16] + gpsEpochTime.SubSeconds = ( int16_t )( ( ( int32_t )gpsEpochTime.SubSeconds * 1000 ) >> 8 ); + 800e4ee: f44f 707a mov.w r0, #1000 ; 0x3e8 + 800e4f2: fb00 f202 mul.w r2, r0, r2 + 800e4f6: 0a12 lsrs r2, r2, #8 + 800e4f8: f8ad 2010 strh.w r2, [sp, #16] + sysTime = gpsEpochTime; + 800e4fc: c903 ldmia r1, {r0, r1} + 800e4fe: e88a 0003 stmia.w sl, {r0, r1} + sysTime.Seconds += UNIX_GPS_EPOCH_OFFSET; + 800e502: 4a4e ldr r2, [pc, #312] ; (800e63c <ProcessMacCommands+0x5b0>) + 800e504: 441a add r2, r3 + 800e506: 9205 str r2, [sp, #20] + sysTimeCurrent = SysTimeGet( ); + 800e508: 4658 mov r0, fp + 800e50a: f008 fd79 bl 8017000 <SysTimeGet> + sysTime = SysTimeAdd( sysTimeCurrent, SysTimeSub( sysTime, MacCtx.LastTxSysTime ) ); + 800e50e: f8df 9130 ldr.w r9, [pc, #304] ; 800e640 <ProcessMacCommands+0x5b4> + 800e512: f8d9 333c ldr.w r3, [r9, #828] ; 0x33c + 800e516: 9300 str r3, [sp, #0] + 800e518: f8d9 3338 ldr.w r3, [r9, #824] ; 0x338 + 800e51c: e89a 0006 ldmia.w sl, {r1, r2} + 800e520: a80c add r0, sp, #48 ; 0x30 + 800e522: f008 fd2c bl 8016f7e <SysTimeSub> + 800e526: 9b0d ldr r3, [sp, #52] ; 0x34 + 800e528: 9300 str r3, [sp, #0] + 800e52a: 9b0c ldr r3, [sp, #48] ; 0x30 + 800e52c: e89b 0006 ldmia.w fp, {r1, r2} + 800e530: 4650 mov r0, sl + 800e532: f008 fd05 bl 8016f40 <SysTimeAdd> + SysTimeSet( sysTime ); + 800e536: e89a 0003 ldmia.w sl, {r0, r1} + 800e53a: f008 fd3f bl 8016fbc <SysTimeSet> + LoRaMacClassBDeviceTimeAns( ); + 800e53e: f002 fe2d bl 801119c <LoRaMacClassBDeviceTimeAns> + MacCtx.McpsIndication.DeviceTimeAnsReceived = true; + 800e542: 2301 movs r3, #1 + 800e544: f889 3430 strb.w r3, [r9, #1072] ; 0x430 + 800e548: e5ac b.n 800e0a4 <ProcessMacCommands+0x18> + if( LoRaMacConfirmQueueIsCmdActive( MLME_PING_SLOT_INFO ) == true ) + 800e54a: 200d movs r0, #13 + 800e54c: f003 f888 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + 800e550: b908 cbnz r0, 800e556 <ProcessMacCommands+0x4ca> + switch( payload[macIndex++] ) + 800e552: 464c mov r4, r9 + 800e554: e5a6 b.n 800e0a4 <ProcessMacCommands+0x18> + LoRaMacConfirmQueueSetStatus( LORAMAC_EVENT_INFO_STATUS_OK, MLME_PING_SLOT_INFO ); + 800e556: 210d movs r1, #13 + 800e558: 2000 movs r0, #0 + 800e55a: f003 f835 bl 80115c8 <LoRaMacConfirmQueueSetStatus> + if( ( MacCtx.RxSlot != RX_SLOT_WIN_CLASS_B_PING_SLOT ) && ( MacCtx.RxSlot != RX_SLOT_WIN_CLASS_B_MULTICAST_SLOT ) ) + 800e55e: 4b38 ldr r3, [pc, #224] ; (800e640 <ProcessMacCommands+0x5b4>) + 800e560: f893 3480 ldrb.w r3, [r3, #1152] ; 0x480 + 800e564: 3b04 subs r3, #4 + 800e566: b2db uxtb r3, r3 + 800e568: 2b01 cmp r3, #1 + 800e56a: d801 bhi.n 800e570 <ProcessMacCommands+0x4e4> + switch( payload[macIndex++] ) + 800e56c: 464c mov r4, r9 + 800e56e: e599 b.n 800e0a4 <ProcessMacCommands+0x18> + LoRaMacClassBPingSlotInfoAns( ); + 800e570: f002 fe10 bl 8011194 <LoRaMacClassBPingSlotInfoAns> + switch( payload[macIndex++] ) + 800e574: 464c mov r4, r9 + 800e576: e595 b.n 800e0a4 <ProcessMacCommands+0x18> + frequency = ( uint32_t )payload[macIndex++]; + 800e578: 1ca2 adds r2, r4, #2 + 800e57a: b2d2 uxtb r2, r2 + 800e57c: f815 3009 ldrb.w r3, [r5, r9] + frequency |= ( uint32_t )payload[macIndex++] << 8; + 800e580: 1ce1 adds r1, r4, #3 + 800e582: b2c9 uxtb r1, r1 + 800e584: 5caa ldrb r2, [r5, r2] + 800e586: ea43 2302 orr.w r3, r3, r2, lsl #8 + frequency |= ( uint32_t )payload[macIndex++] << 16; + 800e58a: 1d22 adds r2, r4, #4 + 800e58c: b2d2 uxtb r2, r2 + 800e58e: 5c69 ldrb r1, [r5, r1] + 800e590: ea43 4301 orr.w r3, r3, r1, lsl #16 + datarate = payload[macIndex++] & 0x0F; + 800e594: 3405 adds r4, #5 + 800e596: b2e4 uxtb r4, r4 + 800e598: 5ca8 ldrb r0, [r5, r2] + status = LoRaMacClassBPingSlotChannelReq( datarate, frequency ); + 800e59a: 2164 movs r1, #100 ; 0x64 + 800e59c: fb03 f101 mul.w r1, r3, r1 + 800e5a0: f000 000f and.w r0, r0, #15 + 800e5a4: f002 fdf7 bl 8011196 <LoRaMacClassBPingSlotChannelReq> + macCmdPayload[0] = status; + 800e5a8: f88d 002c strb.w r0, [sp, #44] ; 0x2c + LoRaMacCommandsAddCmd( MOTE_MAC_PING_SLOT_FREQ_ANS, macCmdPayload, 1 ); + 800e5ac: 2201 movs r2, #1 + 800e5ae: a90b add r1, sp, #44 ; 0x2c + 800e5b0: 2011 movs r0, #17 + 800e5b2: f002 fe8d bl 80112d0 <LoRaMacCommandsAddCmd> + break; + 800e5b6: e575 b.n 800e0a4 <ProcessMacCommands+0x18> + if( LoRaMacConfirmQueueIsCmdActive( MLME_BEACON_TIMING ) == true ) + 800e5b8: 200e movs r0, #14 + 800e5ba: f003 f851 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + 800e5be: b908 cbnz r0, 800e5c4 <ProcessMacCommands+0x538> + switch( payload[macIndex++] ) + 800e5c0: 464c mov r4, r9 + 800e5c2: e56f b.n 800e0a4 <ProcessMacCommands+0x18> + LoRaMacConfirmQueueSetStatus( LORAMAC_EVENT_INFO_STATUS_OK, MLME_BEACON_TIMING ); + 800e5c4: 210e movs r1, #14 + 800e5c6: 2000 movs r0, #0 + 800e5c8: f002 fffe bl 80115c8 <LoRaMacConfirmQueueSetStatus> + beaconTimingDelay = ( uint16_t )payload[macIndex++]; + 800e5cc: 1ca2 adds r2, r4, #2 + 800e5ce: b2d2 uxtb r2, r2 + 800e5d0: f815 0009 ldrb.w r0, [r5, r9] + beaconTimingDelay |= ( uint16_t )payload[macIndex++] << 8; + 800e5d4: 1ce3 adds r3, r4, #3 + 800e5d6: b2db uxtb r3, r3 + 800e5d8: f815 c002 ldrb.w ip, [r5, r2] + beaconTimingChannel = payload[macIndex++]; + 800e5dc: 3404 adds r4, #4 + 800e5de: b2e4 uxtb r4, r4 + LoRaMacClassBBeaconTimingAns( beaconTimingDelay, beaconTimingChannel, RxDoneParams.LastRxDone ); + 800e5e0: 4a18 ldr r2, [pc, #96] ; (800e644 <ProcessMacCommands+0x5b8>) + 800e5e2: 6812 ldr r2, [r2, #0] + 800e5e4: 5ce9 ldrb r1, [r5, r3] + 800e5e6: ea40 200c orr.w r0, r0, ip, lsl #8 + 800e5ea: f002 fdd6 bl 801119a <LoRaMacClassBBeaconTimingAns> + 800e5ee: e559 b.n 800e0a4 <ProcessMacCommands+0x18> + frequency = ( uint32_t )payload[macIndex++]; + 800e5f0: 1ca1 adds r1, r4, #2 + 800e5f2: b2c9 uxtb r1, r1 + 800e5f4: f815 3009 ldrb.w r3, [r5, r9] + frequency |= ( uint32_t )payload[macIndex++] << 8; + 800e5f8: 1ce2 adds r2, r4, #3 + 800e5fa: b2d2 uxtb r2, r2 + 800e5fc: 5c69 ldrb r1, [r5, r1] + 800e5fe: ea43 2301 orr.w r3, r3, r1, lsl #8 + frequency |= ( uint32_t )payload[macIndex++] << 16; + 800e602: 3404 adds r4, #4 + 800e604: b2e4 uxtb r4, r4 + 800e606: 5caa ldrb r2, [r5, r2] + 800e608: ea43 4302 orr.w r3, r3, r2, lsl #16 + if( LoRaMacClassBBeaconFreqReq( frequency ) == true ) + 800e60c: 2064 movs r0, #100 ; 0x64 + 800e60e: fb03 f000 mul.w r0, r3, r0 + 800e612: f002 fdc4 bl 801119e <LoRaMacClassBBeaconFreqReq> + 800e616: b140 cbz r0, 800e62a <ProcessMacCommands+0x59e> + macCmdPayload[0] = 1; + 800e618: 2301 movs r3, #1 + 800e61a: f88d 302c strb.w r3, [sp, #44] ; 0x2c + LoRaMacCommandsAddCmd( MOTE_MAC_BEACON_FREQ_ANS, macCmdPayload, 1 ); + 800e61e: 2201 movs r2, #1 + 800e620: a90b add r1, sp, #44 ; 0x2c + 800e622: 2013 movs r0, #19 + 800e624: f002 fe54 bl 80112d0 <LoRaMacCommandsAddCmd> + break; + 800e628: e53c b.n 800e0a4 <ProcessMacCommands+0x18> + macCmdPayload[0] = 0; + 800e62a: 2300 movs r3, #0 + 800e62c: f88d 302c strb.w r3, [sp, #44] ; 0x2c + 800e630: e7f5 b.n 800e61e <ProcessMacCommands+0x592> +} + 800e632: b00f add sp, #60 ; 0x3c + 800e634: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800e638: 20001870 .word 0x20001870 + 800e63c: 12d53d80 .word 0x12d53d80 + 800e640: 20001fe4 .word 0x20001fe4 + 800e644: 200024ec .word 0x200024ec + +0800e648 <ProcessRadioRxDone>: +{ + 800e648: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 800e64c: b0a5 sub sp, #148 ; 0x94 + uint8_t *payload = RxDoneParams.Payload; + 800e64e: 4b9c ldr r3, [pc, #624] ; (800e8c0 <ProcessRadioRxDone+0x278>) + 800e650: 685e ldr r6, [r3, #4] + uint16_t size = RxDoneParams.Size; + 800e652: 891d ldrh r5, [r3, #8] + int16_t rssi = RxDoneParams.Rssi; + 800e654: f9b3 900a ldrsh.w r9, [r3, #10] + int8_t snr = RxDoneParams.Snr; + 800e658: f993 700c ldrsb.w r7, [r3, #12] + uint32_t downLinkCounter = 0; + 800e65c: 2300 movs r3, #0 + 800e65e: 9308 str r3, [sp, #32] + uint32_t address = Nvm.MacGroup2.DevAddr; + 800e660: 4a98 ldr r2, [pc, #608] ; (800e8c4 <ProcessRadioRxDone+0x27c>) + 800e662: f8d2 80e4 ldr.w r8, [r2, #228] ; 0xe4 + MacCtx.McpsConfirm.AckReceived = false; + 800e666: 4c98 ldr r4, [pc, #608] ; (800e8c8 <ProcessRadioRxDone+0x280>) + 800e668: f884 3438 strb.w r3, [r4, #1080] ; 0x438 + MacCtx.RxStatus.Rssi = rssi; + 800e66c: f8a4 947c strh.w r9, [r4, #1148] ; 0x47c + MacCtx.RxStatus.Snr = snr; + 800e670: f884 747e strb.w r7, [r4, #1150] ; 0x47e + MacCtx.RxStatus.RxSlot = MacCtx.RxSlot; + 800e674: f894 2480 ldrb.w r2, [r4, #1152] ; 0x480 + 800e678: f884 247f strb.w r2, [r4, #1151] ; 0x47f + MacCtx.McpsIndication.Port = 0; + 800e67c: f884 341b strb.w r3, [r4, #1051] ; 0x41b + MacCtx.McpsIndication.Multicast = 0; + 800e680: f884 341a strb.w r3, [r4, #1050] ; 0x41a + MacCtx.McpsIndication.IsUplinkTxPending = 0; + 800e684: f884 341d strb.w r3, [r4, #1053] ; 0x41d + MacCtx.McpsIndication.Buffer = NULL; + 800e688: f8c4 3420 str.w r3, [r4, #1056] ; 0x420 + MacCtx.McpsIndication.BufferSize = 0; + 800e68c: f884 3424 strb.w r3, [r4, #1060] ; 0x424 + MacCtx.McpsIndication.RxData = false; + 800e690: f884 3425 strb.w r3, [r4, #1061] ; 0x425 + MacCtx.McpsIndication.AckReceived = false; + 800e694: f884 3426 strb.w r3, [r4, #1062] ; 0x426 + MacCtx.McpsIndication.DownLinkCounter = 0; + 800e698: f8c4 3428 str.w r3, [r4, #1064] ; 0x428 + MacCtx.McpsIndication.McpsIndication = MCPS_UNCONFIRMED; + 800e69c: f884 3418 strb.w r3, [r4, #1048] ; 0x418 + MacCtx.McpsIndication.DevAddress = 0; + 800e6a0: f8c4 342c str.w r3, [r4, #1068] ; 0x42c + MacCtx.McpsIndication.DeviceTimeAnsReceived = false; + 800e6a4: f884 3430 strb.w r3, [r4, #1072] ; 0x430 + Radio.Sleep( ); + 800e6a8: 4b88 ldr r3, [pc, #544] ; (800e8cc <ProcessRadioRxDone+0x284>) + 800e6aa: 6adb ldr r3, [r3, #44] ; 0x2c + 800e6ac: 4798 blx r3 + TimerStop( &MacCtx.RxWindowTimer2 ); + 800e6ae: f504 7066 add.w r0, r4, #920 ; 0x398 + 800e6b2: f008 fd93 bl 80171dc <UTIL_TIMER_Stop> + if( LoRaMacClassBRxBeacon( payload, size ) == true ) + 800e6b6: 4629 mov r1, r5 + 800e6b8: 4630 mov r0, r6 + 800e6ba: f002 fd58 bl 801116e <LoRaMacClassBRxBeacon> + 800e6be: b9a0 cbnz r0, 800e6ea <ProcessRadioRxDone+0xa2> + if( Nvm.MacGroup2.DeviceClass == CLASS_B ) + 800e6c0: 4b80 ldr r3, [pc, #512] ; (800e8c4 <ProcessRadioRxDone+0x27c>) + 800e6c2: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800e6c6: 2b01 cmp r3, #1 + 800e6c8: d016 beq.n 800e6f8 <ProcessRadioRxDone+0xb0> + if( size == 0 ) + 800e6ca: b395 cbz r5, 800e732 <ProcessRadioRxDone+0xea> + macHdr.Value = payload[pktHeaderLen++]; + 800e6cc: 7834 ldrb r4, [r6, #0] + switch( macHdr.Bits.MType ) + 800e6ce: 0963 lsrs r3, r4, #5 + 800e6d0: 3b01 subs r3, #1 + 800e6d2: 2b06 cmp r3, #6 + 800e6d4: f200 82b3 bhi.w 800ec3e <ProcessRadioRxDone+0x5f6> + 800e6d8: e8df f013 tbh [pc, r3, lsl #1] + 800e6dc: 02b10032 .word 0x02b10032 + 800e6e0: 02b100c6 .word 0x02b100c6 + 800e6e4: 02b100c2 .word 0x02b100c2 + 800e6e8: 028b .short 0x028b + MacCtx.MlmeIndication.BeaconInfo.Rssi = rssi; + 800e6ea: f8a4 9472 strh.w r9, [r4, #1138] ; 0x472 + MacCtx.MlmeIndication.BeaconInfo.Snr = snr; + 800e6ee: f884 7474 strb.w r7, [r4, #1140] ; 0x474 +} + 800e6f2: b025 add sp, #148 ; 0x94 + 800e6f4: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + if( LoRaMacClassBIsPingExpected( ) == true ) + 800e6f8: f002 fd3d bl 8011176 <LoRaMacClassBIsPingExpected> + 800e6fc: b150 cbz r0, 800e714 <ProcessRadioRxDone+0xcc> + LoRaMacClassBSetPingSlotState( PINGSLOT_STATE_CALC_PING_OFFSET ); + 800e6fe: 2000 movs r0, #0 + 800e700: f002 fd2e bl 8011160 <LoRaMacClassBSetPingSlotState> + LoRaMacClassBPingSlotTimerEvent( NULL ); + 800e704: 2000 movs r0, #0 + 800e706: f002 fd30 bl 801116a <LoRaMacClassBPingSlotTimerEvent> + MacCtx.RxStatus.RxSlot = RX_SLOT_WIN_CLASS_B_PING_SLOT; + 800e70a: 4b6f ldr r3, [pc, #444] ; (800e8c8 <ProcessRadioRxDone+0x280>) + 800e70c: 2204 movs r2, #4 + 800e70e: f883 247f strb.w r2, [r3, #1151] ; 0x47f + 800e712: e7da b.n 800e6ca <ProcessRadioRxDone+0x82> + else if( LoRaMacClassBIsMulticastExpected( ) == true ) + 800e714: f002 fd31 bl 801117a <LoRaMacClassBIsMulticastExpected> + 800e718: 2800 cmp r0, #0 + 800e71a: d0d6 beq.n 800e6ca <ProcessRadioRxDone+0x82> + LoRaMacClassBSetMulticastSlotState( PINGSLOT_STATE_CALC_PING_OFFSET ); + 800e71c: 2000 movs r0, #0 + 800e71e: f002 fd20 bl 8011162 <LoRaMacClassBSetMulticastSlotState> + LoRaMacClassBMulticastSlotTimerEvent( NULL ); + 800e722: 2000 movs r0, #0 + 800e724: f002 fd22 bl 801116c <LoRaMacClassBMulticastSlotTimerEvent> + MacCtx.RxStatus.RxSlot = RX_SLOT_WIN_CLASS_B_MULTICAST_SLOT; + 800e728: 4b67 ldr r3, [pc, #412] ; (800e8c8 <ProcessRadioRxDone+0x280>) + 800e72a: 2205 movs r2, #5 + 800e72c: f883 247f strb.w r2, [r3, #1151] ; 0x47f + 800e730: e7cb b.n 800e6ca <ProcessRadioRxDone+0x82> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800e732: 4b65 ldr r3, [pc, #404] ; (800e8c8 <ProcessRadioRxDone+0x280>) + 800e734: 2201 movs r2, #1 + 800e736: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800e73a: f7ff fc2d bl 800df98 <PrepareRxDoneAbort> + return; + 800e73e: e7d8 b.n 800e6f2 <ProcessRadioRxDone+0xaa> + if( size < LORAMAC_JOIN_ACCEPT_FRAME_MIN_SIZE ) + 800e740: 2d10 cmp r5, #16 + 800e742: d92e bls.n 800e7a2 <ProcessRadioRxDone+0x15a> + macMsgJoinAccept.Buffer = payload; + 800e744: 9609 str r6, [sp, #36] ; 0x24 + macMsgJoinAccept.BufSize = size; + 800e746: b2ed uxtb r5, r5 + 800e748: f88d 5028 strb.w r5, [sp, #40] ; 0x28 + if( Nvm.MacGroup2.NetworkActivation != ACTIVATION_TYPE_NONE ) + 800e74c: 4b5d ldr r3, [pc, #372] ; (800e8c4 <ProcessRadioRxDone+0x27c>) + 800e74e: f893 312c ldrb.w r3, [r3, #300] ; 0x12c + 800e752: bb6b cbnz r3, 800e7b0 <ProcessRadioRxDone+0x168> + SecureElementGetJoinEui( joinEui ); + 800e754: a805 add r0, sp, #20 + 800e756: f005 fe03 bl 8014360 <SecureElementGetJoinEui> + macCryptoStatus = LoRaMacCryptoHandleJoinAccept( JOIN_REQ, joinEui, &macMsgJoinAccept ); + 800e75a: aa09 add r2, sp, #36 ; 0x24 + 800e75c: a905 add r1, sp, #20 + 800e75e: 20ff movs r0, #255 ; 0xff + 800e760: f003 fb14 bl 8011d8c <LoRaMacCryptoHandleJoinAccept> + 800e764: 4604 mov r4, r0 + verifyRxDr.DatarateParams.Datarate = macMsgJoinAccept.DLSettings.Bits.RX2DataRate; + 800e766: f89d 3034 ldrb.w r3, [sp, #52] ; 0x34 + 800e76a: f3c3 0303 ubfx r3, r3, #0, #4 + 800e76e: f88d 3010 strb.w r3, [sp, #16] + verifyRxDr.DatarateParams.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 800e772: 4b54 ldr r3, [pc, #336] ; (800e8c4 <ProcessRadioRxDone+0x27c>) + 800e774: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 800e778: f88d 2011 strb.w r2, [sp, #17] + rxDrValid = RegionVerify( Nvm.MacGroup2.Region, &verifyRxDr, PHY_RX_DR ); + 800e77c: 2207 movs r2, #7 + 800e77e: a904 add r1, sp, #16 + 800e780: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e784: f003 fd19 bl 80121ba <RegionVerify> + if( ( LORAMAC_CRYPTO_SUCCESS == macCryptoStatus ) && ( rxDrValid == true ) ) + 800e788: b904 cbnz r4, 800e78c <ProcessRadioRxDone+0x144> + 800e78a: b9c0 cbnz r0, 800e7be <ProcessRadioRxDone+0x176> + if( LoRaMacConfirmQueueIsCmdActive( MLME_JOIN ) == true ) + 800e78c: 2001 movs r0, #1 + 800e78e: f002 ff67 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + 800e792: 2800 cmp r0, #0 + 800e794: f000 8247 beq.w 800ec26 <ProcessRadioRxDone+0x5de> + LoRaMacConfirmQueueSetStatus( LORAMAC_EVENT_INFO_STATUS_JOIN_FAIL, MLME_JOIN ); + 800e798: 2101 movs r1, #1 + 800e79a: 2007 movs r0, #7 + 800e79c: f002 ff14 bl 80115c8 <LoRaMacConfirmQueueSetStatus> + 800e7a0: e241 b.n 800ec26 <ProcessRadioRxDone+0x5de> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800e7a2: 4b49 ldr r3, [pc, #292] ; (800e8c8 <ProcessRadioRxDone+0x280>) + 800e7a4: 2201 movs r2, #1 + 800e7a6: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800e7aa: f7ff fbf5 bl 800df98 <PrepareRxDoneAbort> + return; + 800e7ae: e7a0 b.n 800e6f2 <ProcessRadioRxDone+0xaa> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800e7b0: 4b45 ldr r3, [pc, #276] ; (800e8c8 <ProcessRadioRxDone+0x280>) + 800e7b2: 2201 movs r2, #1 + 800e7b4: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800e7b8: f7ff fbee bl 800df98 <PrepareRxDoneAbort> + return; + 800e7bc: e799 b.n 800e6f2 <ProcessRadioRxDone+0xaa> + Nvm.MacGroup2.NetID = ( uint32_t ) macMsgJoinAccept.NetID[0]; + 800e7be: f89d 302d ldrb.w r3, [sp, #45] ; 0x2d + 800e7c2: 4c40 ldr r4, [pc, #256] ; (800e8c4 <ProcessRadioRxDone+0x27c>) + 800e7c4: f8c4 30e0 str.w r3, [r4, #224] ; 0xe0 + Nvm.MacGroup2.NetID |= ( ( uint32_t ) macMsgJoinAccept.NetID[1] << 8 ); + 800e7c8: f89d 202e ldrb.w r2, [sp, #46] ; 0x2e + 800e7cc: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800e7d0: f8c4 30e0 str.w r3, [r4, #224] ; 0xe0 + Nvm.MacGroup2.NetID |= ( ( uint32_t ) macMsgJoinAccept.NetID[2] << 16 ); + 800e7d4: f89d 202f ldrb.w r2, [sp, #47] ; 0x2f + 800e7d8: ea43 4302 orr.w r3, r3, r2, lsl #16 + 800e7dc: f8c4 30e0 str.w r3, [r4, #224] ; 0xe0 + Nvm.MacGroup2.DevAddr = macMsgJoinAccept.DevAddr; + 800e7e0: 990c ldr r1, [sp, #48] ; 0x30 + 800e7e2: f8c4 10e4 str.w r1, [r4, #228] ; 0xe4 + SecureElementSetDevAddr( ACTIVATION_TYPE_OTAA, Nvm.MacGroup2.DevAddr ); + 800e7e6: 2002 movs r0, #2 + 800e7e8: f005 fdc8 bl 801437c <SecureElementSetDevAddr> + Nvm.MacGroup2.MacParams.Rx1DrOffset = macMsgJoinAccept.DLSettings.Bits.RX1DRoffset; + 800e7ec: f89d 3034 ldrb.w r3, [sp, #52] ; 0x34 + 800e7f0: f3c3 1202 ubfx r2, r3, #4, #3 + 800e7f4: f884 2069 strb.w r2, [r4, #105] ; 0x69 + Nvm.MacGroup2.MacParams.Rx2Channel.Datarate = macMsgJoinAccept.DLSettings.Bits.RX2DataRate; + 800e7f8: f3c3 0303 ubfx r3, r3, #0, #4 + 800e7fc: f884 3070 strb.w r3, [r4, #112] ; 0x70 + Nvm.MacGroup2.MacParams.RxCChannel.Datarate = macMsgJoinAccept.DLSettings.Bits.RX2DataRate; + 800e800: f884 3078 strb.w r3, [r4, #120] ; 0x78 + Nvm.MacGroup2.MacParams.ReceiveDelay1 = macMsgJoinAccept.RxDelay; + 800e804: f89d 3035 ldrb.w r3, [sp, #53] ; 0x35 + 800e808: 65a3 str r3, [r4, #88] ; 0x58 + if( Nvm.MacGroup2.MacParams.ReceiveDelay1 == 0 ) + 800e80a: b90b cbnz r3, 800e810 <ProcessRadioRxDone+0x1c8> + Nvm.MacGroup2.MacParams.ReceiveDelay1 = 1; + 800e80c: 2201 movs r2, #1 + 800e80e: 65a2 str r2, [r4, #88] ; 0x58 + Nvm.MacGroup2.MacParams.ReceiveDelay1 *= 1000; + 800e810: 4c2c ldr r4, [pc, #176] ; (800e8c4 <ProcessRadioRxDone+0x27c>) + 800e812: 6da3 ldr r3, [r4, #88] ; 0x58 + 800e814: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800e818: fb02 f303 mul.w r3, r2, r3 + 800e81c: 65a3 str r3, [r4, #88] ; 0x58 + Nvm.MacGroup2.MacParams.ReceiveDelay2 = Nvm.MacGroup2.MacParams.ReceiveDelay1 + 1000; + 800e81e: 4413 add r3, r2 + 800e820: 65e3 str r3, [r4, #92] ; 0x5c + Nvm.MacGroup2.MacParams.ChannelsNbTrans = 1; + 800e822: 2601 movs r6, #1 + 800e824: f884 6068 strb.w r6, [r4, #104] ; 0x68 + Nvm.MacGroup2.Version.Fields.Minor = 0; + 800e828: 2300 movs r3, #0 + 800e82a: f884 312a strb.w r3, [r4, #298] ; 0x12a + applyCFList.Payload = macMsgJoinAccept.CFList; + 800e82e: f10d 0336 add.w r3, sp, #54 ; 0x36 + 800e832: 9322 str r3, [sp, #136] ; 0x88 + applyCFList.Size = size - 17; + 800e834: 3d11 subs r5, #17 + 800e836: f88d 508c strb.w r5, [sp, #140] ; 0x8c + RegionApplyCFList( Nvm.MacGroup2.Region, &applyCFList ); + 800e83a: a922 add r1, sp, #136 ; 0x88 + 800e83c: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800e840: f003 fcc5 bl 80121ce <RegionApplyCFList> + Nvm.MacGroup2.NetworkActivation = ACTIVATION_TYPE_OTAA; + 800e844: 2302 movs r3, #2 + 800e846: f884 312c strb.w r3, [r4, #300] ; 0x12c + if( LoRaMacConfirmQueueIsCmdActive( joinType ) == true ) + 800e84a: 4630 mov r0, r6 + 800e84c: f002 ff08 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + 800e850: 2800 cmp r0, #0 + 800e852: f000 81e8 beq.w 800ec26 <ProcessRadioRxDone+0x5de> + LoRaMacConfirmQueueSetStatus( LORAMAC_EVENT_INFO_STATUS_OK, joinType ); + 800e856: 4631 mov r1, r6 + 800e858: 2000 movs r0, #0 + 800e85a: f002 feb5 bl 80115c8 <LoRaMacConfirmQueueSetStatus> + 800e85e: e1e2 b.n 800ec26 <ProcessRadioRxDone+0x5de> + MacCtx.McpsIndication.McpsIndication = MCPS_CONFIRMED; + 800e860: 4b19 ldr r3, [pc, #100] ; (800e8c8 <ProcessRadioRxDone+0x280>) + 800e862: 2201 movs r2, #1 + 800e864: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + getPhy.UplinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 800e868: 4b16 ldr r3, [pc, #88] ; (800e8c4 <ProcessRadioRxDone+0x27c>) + 800e86a: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 800e86e: f88d 2082 strb.w r2, [sp, #130] ; 0x82 + getPhy.Datarate = MacCtx.McpsIndication.RxDatarate; + 800e872: 4a15 ldr r2, [pc, #84] ; (800e8c8 <ProcessRadioRxDone+0x280>) + 800e874: f992 241c ldrsb.w r2, [r2, #1052] ; 0x41c + 800e878: f88d 2081 strb.w r2, [sp, #129] ; 0x81 + getPhy.Attribute = PHY_MAX_PAYLOAD; + 800e87c: 220d movs r2, #13 + 800e87e: f88d 2080 strb.w r2, [sp, #128] ; 0x80 + if( Nvm.MacGroup2.MacParams.RepeaterSupport == true ) + 800e882: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800e886: b113 cbz r3, 800e88e <ProcessRadioRxDone+0x246> + getPhy.Attribute = PHY_MAX_PAYLOAD_REPEATER; + 800e888: 230e movs r3, #14 + 800e88a: f88d 3080 strb.w r3, [sp, #128] ; 0x80 + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800e88e: a920 add r1, sp, #128 ; 0x80 + 800e890: 4b0c ldr r3, [pc, #48] ; (800e8c4 <ProcessRadioRxDone+0x27c>) + 800e892: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e896: f003 fc72 bl 801217e <RegionGetPhyParam> + 800e89a: 901f str r0, [sp, #124] ; 0x7c + if( ( MAX( 0, ( int16_t )( ( int16_t ) size - ( int16_t ) LORAMAC_FRAME_PAYLOAD_OVERHEAD_SIZE ) ) > ( int16_t )phyParam.Value ) || + 800e89c: f1a5 030d sub.w r3, r5, #13 + 800e8a0: b21b sxth r3, r3 + 800e8a2: ea23 73e3 bic.w r3, r3, r3, asr #31 + 800e8a6: b200 sxth r0, r0 + 800e8a8: 4283 cmp r3, r0 + 800e8aa: dc01 bgt.n 800e8b0 <ProcessRadioRxDone+0x268> + 800e8ac: 2d0b cmp r5, #11 + 800e8ae: d80f bhi.n 800e8d0 <ProcessRadioRxDone+0x288> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800e8b0: 4b05 ldr r3, [pc, #20] ; (800e8c8 <ProcessRadioRxDone+0x280>) + 800e8b2: 2201 movs r2, #1 + 800e8b4: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800e8b8: f7ff fb6e bl 800df98 <PrepareRxDoneAbort> + return; + 800e8bc: e719 b.n 800e6f2 <ProcessRadioRxDone+0xaa> + 800e8be: bf00 nop + 800e8c0: 200024ec .word 0x200024ec + 800e8c4: 20001870 .word 0x20001870 + 800e8c8: 20001fe4 .word 0x20001fe4 + 800e8cc: 08018cb4 .word 0x08018cb4 + macMsgData.Buffer = payload; + 800e8d0: 9613 str r6, [sp, #76] ; 0x4c + macMsgData.BufSize = size; + 800e8d2: f88d 5050 strb.w r5, [sp, #80] ; 0x50 + macMsgData.FRMPayload = MacCtx.RxPayload; + 800e8d6: 4bb0 ldr r3, [pc, #704] ; (800eb98 <ProcessRadioRxDone+0x550>) + 800e8d8: 931c str r3, [sp, #112] ; 0x70 + macMsgData.FRMPayloadSize = LORAMAC_PHY_MAXPAYLOAD; + 800e8da: 23ff movs r3, #255 ; 0xff + 800e8dc: f88d 3074 strb.w r3, [sp, #116] ; 0x74 + if( LORAMAC_PARSER_SUCCESS != LoRaMacParserData( &macMsgData ) ) + 800e8e0: a813 add r0, sp, #76 ; 0x4c + 800e8e2: f003 fb21 bl 8011f28 <LoRaMacParserData> + 800e8e6: 2800 cmp r0, #0 + 800e8e8: d148 bne.n 800e97c <ProcessRadioRxDone+0x334> + MacCtx.McpsIndication.DevAddress = macMsgData.FHDR.DevAddr; + 800e8ea: 9a15 ldr r2, [sp, #84] ; 0x54 + 800e8ec: 4bab ldr r3, [pc, #684] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800e8ee: f8c3 242c str.w r2, [r3, #1068] ; 0x42c + if( LORAMAC_STATUS_OK != DetermineFrameType( &macMsgData, &fType ) ) + 800e8f2: a905 add r1, sp, #20 + 800e8f4: a813 add r0, sp, #76 ; 0x4c + 800e8f6: f7ff f987 bl 800dc08 <DetermineFrameType> + 800e8fa: 4605 mov r5, r0 + 800e8fc: 2800 cmp r0, #0 + 800e8fe: d144 bne.n 800e98a <ProcessRadioRxDone+0x342> + downLinkCounter = 0; + 800e900: 2300 movs r3, #0 + 800e902: 9308 str r3, [sp, #32] + for( uint8_t i = 0; i < LORAMAC_MAX_MC_CTX; i++ ) + 800e904: 4603 mov r3, r0 + 800e906: 2b00 cmp r3, #0 + 800e908: d046 beq.n 800e998 <ProcessRadioRxDone+0x350> + AddressIdentifier_t addrID = UNICAST_DEV_ADDR; + 800e90a: f04f 0901 mov.w r9, #1 + if( ( multicast == 1 ) && ( ( fType != FRAME_TYPE_D ) || + 800e90e: 2d01 cmp r5, #1 + 800e910: d108 bne.n 800e924 <ProcessRadioRxDone+0x2dc> + 800e912: f89d 3014 ldrb.w r3, [sp, #20] + 800e916: 2b03 cmp r3, #3 + 800e918: d16d bne.n 800e9f6 <ProcessRadioRxDone+0x3ae> + ( macMsgData.FHDR.FCtrl.Bits.Ack != 0 ) || + 800e91a: f89d 3058 ldrb.w r3, [sp, #88] ; 0x58 + 800e91e: f013 0f60 tst.w r3, #96 ; 0x60 + 800e922: d168 bne.n 800e9f6 <ProcessRadioRxDone+0x3ae> + getPhy.Attribute = PHY_MAX_FCNT_GAP; + 800e924: 2315 movs r3, #21 + 800e926: f88d 3080 strb.w r3, [sp, #128] ; 0x80 + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800e92a: 4e9d ldr r6, [pc, #628] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800e92c: a920 add r1, sp, #128 ; 0x80 + 800e92e: f896 0048 ldrb.w r0, [r6, #72] ; 0x48 + 800e932: f003 fc24 bl 801217e <RegionGetPhyParam> + 800e936: 901f str r0, [sp, #124] ; 0x7c + macCryptoStatus = GetFCntDown( addrID, fType, &macMsgData, Nvm.MacGroup2.Version, phyParam.Value, &fCntID, &downLinkCounter ); + 800e938: ab08 add r3, sp, #32 + 800e93a: 9302 str r3, [sp, #8] + 800e93c: f10d 031f add.w r3, sp, #31 + 800e940: 9301 str r3, [sp, #4] + 800e942: b280 uxth r0, r0 + 800e944: 9000 str r0, [sp, #0] + 800e946: f8d6 3128 ldr.w r3, [r6, #296] ; 0x128 + 800e94a: aa13 add r2, sp, #76 ; 0x4c + 800e94c: f89d 1014 ldrb.w r1, [sp, #20] + 800e950: 4648 mov r0, r9 + 800e952: f7ff fb5f bl 800e014 <GetFCntDown> + if( macCryptoStatus != LORAMAC_CRYPTO_SUCCESS ) + 800e956: 2800 cmp r0, #0 + 800e958: d06d beq.n 800ea36 <ProcessRadioRxDone+0x3ee> + if( macCryptoStatus == LORAMAC_CRYPTO_FAIL_FCNT_DUPLICATED ) + 800e95a: 2807 cmp r0, #7 + 800e95c: d052 beq.n 800ea04 <ProcessRadioRxDone+0x3bc> + else if( macCryptoStatus == LORAMAC_CRYPTO_FAIL_MAX_GAP_FCNT ) + 800e95e: 2808 cmp r0, #8 + 800e960: d064 beq.n 800ea2c <ProcessRadioRxDone+0x3e4> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800e962: 4b8e ldr r3, [pc, #568] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800e964: 2201 movs r2, #1 + 800e966: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + MacCtx.McpsIndication.DownLinkCounter = downLinkCounter; + 800e96a: 9a08 ldr r2, [sp, #32] + 800e96c: 4b8b ldr r3, [pc, #556] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800e96e: f8c3 2428 str.w r2, [r3, #1064] ; 0x428 + MacCtx.MlmeIndication.DownLinkCounter = downLinkCounter; + 800e972: f8c3 2460 str.w r2, [r3, #1120] ; 0x460 + PrepareRxDoneAbort( ); + 800e976: f7ff fb0f bl 800df98 <PrepareRxDoneAbort> + return; + 800e97a: e6ba b.n 800e6f2 <ProcessRadioRxDone+0xaa> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800e97c: 4b87 ldr r3, [pc, #540] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800e97e: 2201 movs r2, #1 + 800e980: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800e984: f7ff fb08 bl 800df98 <PrepareRxDoneAbort> + return; + 800e988: e6b3 b.n 800e6f2 <ProcessRadioRxDone+0xaa> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800e98a: 4b84 ldr r3, [pc, #528] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800e98c: 2201 movs r2, #1 + 800e98e: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800e992: f7ff fb01 bl 800df98 <PrepareRxDoneAbort> + return; + 800e996: e6ac b.n 800e6f2 <ProcessRadioRxDone+0xaa> + if( ( Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.Address == macMsgData.FHDR.DevAddr ) && + 800e998: 4618 mov r0, r3 + 800e99a: eb03 0143 add.w r1, r3, r3, lsl #1 + 800e99e: 4a80 ldr r2, [pc, #512] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800e9a0: eb02 1201 add.w r2, r2, r1, lsl #4 + 800e9a4: f8d2 20ec ldr.w r2, [r2, #236] ; 0xec + 800e9a8: 9915 ldr r1, [sp, #84] ; 0x54 + 800e9aa: 428a cmp r2, r1 + 800e9ac: d002 beq.n 800e9b4 <ProcessRadioRxDone+0x36c> + for( uint8_t i = 0; i < LORAMAC_MAX_MC_CTX; i++ ) + 800e9ae: 3301 adds r3, #1 + 800e9b0: b2db uxtb r3, r3 + 800e9b2: e7a8 b.n 800e906 <ProcessRadioRxDone+0x2be> + ( Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.IsEnabled == true ) ) + 800e9b4: eb03 0643 add.w r6, r3, r3, lsl #1 + 800e9b8: 4979 ldr r1, [pc, #484] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800e9ba: eb01 1106 add.w r1, r1, r6, lsl #4 + 800e9be: f891 10e9 ldrb.w r1, [r1, #233] ; 0xe9 + if( ( Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.Address == macMsgData.FHDR.DevAddr ) && + 800e9c2: 2900 cmp r1, #0 + 800e9c4: d0f3 beq.n 800e9ae <ProcessRadioRxDone+0x366> + addrID = Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.GroupID; + 800e9c6: 4b76 ldr r3, [pc, #472] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800e9c8: 2130 movs r1, #48 ; 0x30 + 800e9ca: fb01 3000 mla r0, r1, r0, r3 + 800e9ce: f890 90ea ldrb.w r9, [r0, #234] ; 0xea + downLinkCounter = *( Nvm.MacGroup2.MulticastChannelList[i].DownLinkCounter ); + 800e9d2: f8d0 110c ldr.w r1, [r0, #268] ; 0x10c + 800e9d6: 6809 ldr r1, [r1, #0] + 800e9d8: 9108 str r1, [sp, #32] + if( Nvm.MacGroup2.DeviceClass == CLASS_C ) + 800e9da: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800e9de: 2b02 cmp r3, #2 + 800e9e0: d002 beq.n 800e9e8 <ProcessRadioRxDone+0x3a0> + address = Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.Address; + 800e9e2: 4690 mov r8, r2 + multicast = 1; + 800e9e4: 2501 movs r5, #1 + 800e9e6: e792 b.n 800e90e <ProcessRadioRxDone+0x2c6> + MacCtx.RxStatus.RxSlot = RX_SLOT_WIN_CLASS_C_MULTICAST; + 800e9e8: 4b6c ldr r3, [pc, #432] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800e9ea: 2103 movs r1, #3 + 800e9ec: f883 147f strb.w r1, [r3, #1151] ; 0x47f + address = Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.Address; + 800e9f0: 4690 mov r8, r2 + multicast = 1; + 800e9f2: 2501 movs r5, #1 + 800e9f4: e78b b.n 800e90e <ProcessRadioRxDone+0x2c6> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800e9f6: 4b69 ldr r3, [pc, #420] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800e9f8: 2201 movs r2, #1 + 800e9fa: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800e9fe: f7ff facb bl 800df98 <PrepareRxDoneAbort> + return; + 800ea02: e676 b.n 800e6f2 <ProcessRadioRxDone+0xaa> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_DOWNLINK_REPEATED; + 800ea04: 4b65 ldr r3, [pc, #404] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800ea06: 2208 movs r2, #8 + 800ea08: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + if( ( Nvm.MacGroup2.Version.Fields.Minor == 0 ) && ( macHdr.Bits.MType == FRAME_TYPE_DATA_CONFIRMED_DOWN ) && ( Nvm.MacGroup1.LastRxMic == macMsgData.MIC ) ) + 800ea0c: f896 312a ldrb.w r3, [r6, #298] ; 0x12a + 800ea10: 2b00 cmp r3, #0 + 800ea12: d1aa bne.n 800e96a <ProcessRadioRxDone+0x322> + 800ea14: f004 04e0 and.w r4, r4, #224 ; 0xe0 + 800ea18: 2ca0 cmp r4, #160 ; 0xa0 + 800ea1a: d1a6 bne.n 800e96a <ProcessRadioRxDone+0x322> + 800ea1c: 6b72 ldr r2, [r6, #52] ; 0x34 + 800ea1e: 9b1e ldr r3, [sp, #120] ; 0x78 + 800ea20: 429a cmp r2, r3 + 800ea22: d1a2 bne.n 800e96a <ProcessRadioRxDone+0x322> + Nvm.MacGroup1.SrvAckRequested = true; + 800ea24: 2201 movs r2, #1 + 800ea26: f886 203a strb.w r2, [r6, #58] ; 0x3a + 800ea2a: e79e b.n 800e96a <ProcessRadioRxDone+0x322> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_DOWNLINK_TOO_MANY_FRAMES_LOSS; + 800ea2c: 4b5b ldr r3, [pc, #364] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800ea2e: 220a movs r2, #10 + 800ea30: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + 800ea34: e799 b.n 800e96a <ProcessRadioRxDone+0x322> + macCryptoStatus = LoRaMacCryptoUnsecureMessage( addrID, address, fCntID, downLinkCounter, &macMsgData ); + 800ea36: ab13 add r3, sp, #76 ; 0x4c + 800ea38: 9300 str r3, [sp, #0] + 800ea3a: 9b08 ldr r3, [sp, #32] + 800ea3c: f89d 201f ldrb.w r2, [sp, #31] + 800ea40: 4641 mov r1, r8 + 800ea42: 4648 mov r0, r9 + 800ea44: f003 f8fa bl 8011c3c <LoRaMacCryptoUnsecureMessage> + if( macCryptoStatus != LORAMAC_CRYPTO_SUCCESS ) + 800ea48: 2800 cmp r0, #0 + 800ea4a: d14a bne.n 800eae2 <ProcessRadioRxDone+0x49a> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_OK; + 800ea4c: 4b53 ldr r3, [pc, #332] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800ea4e: 2100 movs r1, #0 + 800ea50: f883 1419 strb.w r1, [r3, #1049] ; 0x419 + MacCtx.McpsIndication.Multicast = multicast; + 800ea54: f883 541a strb.w r5, [r3, #1050] ; 0x41a + MacCtx.McpsIndication.Buffer = NULL; + 800ea58: f8c3 1420 str.w r1, [r3, #1056] ; 0x420 + MacCtx.McpsIndication.BufferSize = 0; + 800ea5c: f883 1424 strb.w r1, [r3, #1060] ; 0x424 + MacCtx.McpsIndication.DownLinkCounter = downLinkCounter; + 800ea60: 9a08 ldr r2, [sp, #32] + 800ea62: f8c3 2428 str.w r2, [r3, #1064] ; 0x428 + MacCtx.MlmeIndication.DownLinkCounter = downLinkCounter; + 800ea66: f8c3 2460 str.w r2, [r3, #1120] ; 0x460 + MacCtx.McpsIndication.AckReceived = macMsgData.FHDR.FCtrl.Bits.Ack; + 800ea6a: f89d 2058 ldrb.w r2, [sp, #88] ; 0x58 + 800ea6e: f3c2 1240 ubfx r2, r2, #5, #1 + 800ea72: f883 2426 strb.w r2, [r3, #1062] ; 0x426 + MacCtx.McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_OK; + 800ea76: f883 1435 strb.w r1, [r3, #1077] ; 0x435 + MacCtx.McpsConfirm.AckReceived = macMsgData.FHDR.FCtrl.Bits.Ack; + 800ea7a: f883 2438 strb.w r2, [r3, #1080] ; 0x438 + if( ( MacCtx.RxStatus.RxSlot == RX_SLOT_WIN_1 ) || + 800ea7e: f893 047f ldrb.w r0, [r3, #1151] ; 0x47f + 800ea82: 2801 cmp r0, #1 + 800ea84: d93b bls.n 800eafe <ProcessRadioRxDone+0x4b6> + if( multicast == 1 ) + 800ea86: 2d01 cmp r5, #1 + 800ea88: d03c beq.n 800eb04 <ProcessRadioRxDone+0x4bc> + if( macHdr.Bits.MType == FRAME_TYPE_DATA_CONFIRMED_DOWN ) + 800ea8a: f004 04e0 and.w r4, r4, #224 ; 0xe0 + 800ea8e: 2ca0 cmp r4, #160 ; 0xa0 + 800ea90: d03d beq.n 800eb0e <ProcessRadioRxDone+0x4c6> + Nvm.MacGroup1.SrvAckRequested = false; + 800ea92: 2300 movs r3, #0 + 800ea94: 4a42 ldr r2, [pc, #264] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800ea96: f882 303a strb.w r3, [r2, #58] ; 0x3a + MacCtx.McpsIndication.McpsIndication = MCPS_UNCONFIRMED; + 800ea9a: 4a40 ldr r2, [pc, #256] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800ea9c: f882 3418 strb.w r3, [r2, #1048] ; 0x418 + if( ( ( Nvm.MacGroup1.SrvAckRequested == true ) || ( macMsgData.FHDR.FCtrl.Bits.FPending > 0 ) ) && ( Nvm.MacGroup2.DeviceClass == CLASS_A ) ) + 800eaa0: 4b3f ldr r3, [pc, #252] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800eaa2: f893 303a ldrb.w r3, [r3, #58] ; 0x3a + 800eaa6: b923 cbnz r3, 800eab2 <ProcessRadioRxDone+0x46a> + 800eaa8: f89d 3058 ldrb.w r3, [sp, #88] ; 0x58 + 800eaac: f013 0f10 tst.w r3, #16 + 800eab0: d007 beq.n 800eac2 <ProcessRadioRxDone+0x47a> + 800eab2: 4b3b ldr r3, [pc, #236] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800eab4: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800eab8: b91b cbnz r3, 800eac2 <ProcessRadioRxDone+0x47a> + MacCtx.McpsIndication.IsUplinkTxPending = 1; + 800eaba: 4b38 ldr r3, [pc, #224] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800eabc: 2201 movs r2, #1 + 800eabe: f883 241d strb.w r2, [r3, #1053] ; 0x41d + RemoveMacCommands( MacCtx.RxStatus.RxSlot, macMsgData.FHDR.FCtrl, MacCtx.McpsConfirm.McpsRequest ); + 800eac2: 4b36 ldr r3, [pc, #216] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800eac4: f893 2434 ldrb.w r2, [r3, #1076] ; 0x434 + 800eac8: f89d 1058 ldrb.w r1, [sp, #88] ; 0x58 + 800eacc: f7ff facf bl 800e06e <RemoveMacCommands> + switch( fType ) + 800ead0: f89d 3014 ldrb.w r3, [sp, #20] + 800ead4: 2b03 cmp r3, #3 + 800ead6: f200 8085 bhi.w 800ebe4 <ProcessRadioRxDone+0x59c> + 800eada: e8df f003 tbb [pc, r3] + 800eade: 4a27 .short 0x4a27 + 800eae0: 7363 .short 0x7363 + if( macCryptoStatus == LORAMAC_CRYPTO_FAIL_ADDRESS ) + 800eae2: 2802 cmp r0, #2 + 800eae4: d006 beq.n 800eaf4 <ProcessRadioRxDone+0x4ac> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_MIC_FAIL; + 800eae6: 4b2d ldr r3, [pc, #180] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800eae8: 220c movs r2, #12 + 800eaea: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800eaee: f7ff fa53 bl 800df98 <PrepareRxDoneAbort> + return; + 800eaf2: e5fe b.n 800e6f2 <ProcessRadioRxDone+0xaa> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ADDRESS_FAIL; + 800eaf4: 4b29 ldr r3, [pc, #164] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800eaf6: 220b movs r2, #11 + 800eaf8: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + 800eafc: e7f7 b.n 800eaee <ProcessRadioRxDone+0x4a6> + Nvm.MacGroup1.AdrAckCounter = 0; + 800eafe: 4b28 ldr r3, [pc, #160] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800eb00: 6299 str r1, [r3, #40] ; 0x28 + 800eb02: e7c0 b.n 800ea86 <ProcessRadioRxDone+0x43e> + MacCtx.McpsIndication.McpsIndication = MCPS_MULTICAST; + 800eb04: 4b25 ldr r3, [pc, #148] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800eb06: 2202 movs r2, #2 + 800eb08: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + 800eb0c: e7c8 b.n 800eaa0 <ProcessRadioRxDone+0x458> + Nvm.MacGroup1.SrvAckRequested = true; + 800eb0e: 4b24 ldr r3, [pc, #144] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800eb10: 2201 movs r2, #1 + 800eb12: f883 203a strb.w r2, [r3, #58] ; 0x3a + if( Nvm.MacGroup2.Version.Fields.Minor == 0 ) + 800eb16: f893 312a ldrb.w r3, [r3, #298] ; 0x12a + 800eb1a: b913 cbnz r3, 800eb22 <ProcessRadioRxDone+0x4da> + Nvm.MacGroup1.LastRxMic = macMsgData.MIC; + 800eb1c: 9a1e ldr r2, [sp, #120] ; 0x78 + 800eb1e: 4b20 ldr r3, [pc, #128] ; (800eba0 <ProcessRadioRxDone+0x558>) + 800eb20: 635a str r2, [r3, #52] ; 0x34 + MacCtx.McpsIndication.McpsIndication = MCPS_CONFIRMED; + 800eb22: 4b1e ldr r3, [pc, #120] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800eb24: 2201 movs r2, #1 + 800eb26: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + 800eb2a: e7b9 b.n 800eaa0 <ProcessRadioRxDone+0x458> + ProcessMacCommands( macMsgData.FHDR.FOpts, 0, macMsgData.FHDR.FCtrl.Bits.FOptsLen, snr, MacCtx.RxStatus.RxSlot ); + 800eb2c: f89d 2058 ldrb.w r2, [sp, #88] ; 0x58 + 800eb30: 4c1a ldr r4, [pc, #104] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800eb32: f894 347f ldrb.w r3, [r4, #1151] ; 0x47f + 800eb36: 9300 str r3, [sp, #0] + 800eb38: 463b mov r3, r7 + 800eb3a: f002 020f and.w r2, r2, #15 + 800eb3e: 2100 movs r1, #0 + 800eb40: a817 add r0, sp, #92 ; 0x5c + 800eb42: f7ff faa3 bl 800e08c <ProcessMacCommands> + MacCtx.McpsIndication.Port = macMsgData.FPort; + 800eb46: f89d 306c ldrb.w r3, [sp, #108] ; 0x6c + 800eb4a: f884 341b strb.w r3, [r4, #1051] ; 0x41b + MacCtx.McpsIndication.Buffer = macMsgData.FRMPayload; + 800eb4e: 9b1c ldr r3, [sp, #112] ; 0x70 + 800eb50: f8c4 3420 str.w r3, [r4, #1056] ; 0x420 + MacCtx.McpsIndication.BufferSize = macMsgData.FRMPayloadSize; + 800eb54: f89d 3074 ldrb.w r3, [sp, #116] ; 0x74 + 800eb58: f884 3424 strb.w r3, [r4, #1060] ; 0x424 + MacCtx.McpsIndication.RxData = true; + 800eb5c: 2301 movs r3, #1 + 800eb5e: f884 3425 strb.w r3, [r4, #1061] ; 0x425 + MacCtx.MacFlags.Bits.McpsInd = 1; + 800eb62: 4a0e ldr r2, [pc, #56] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800eb64: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 800eb68: f043 0302 orr.w r3, r3, #2 + 800eb6c: f882 3481 strb.w r3, [r2, #1153] ; 0x481 + break; + 800eb70: e059 b.n 800ec26 <ProcessRadioRxDone+0x5de> + ProcessMacCommands( macMsgData.FHDR.FOpts, 0, macMsgData.FHDR.FCtrl.Bits.FOptsLen, snr, MacCtx.RxStatus.RxSlot ); + 800eb72: f89d 2058 ldrb.w r2, [sp, #88] ; 0x58 + 800eb76: 4c09 ldr r4, [pc, #36] ; (800eb9c <ProcessRadioRxDone+0x554>) + 800eb78: f894 347f ldrb.w r3, [r4, #1151] ; 0x47f + 800eb7c: 9300 str r3, [sp, #0] + 800eb7e: 463b mov r3, r7 + 800eb80: f002 020f and.w r2, r2, #15 + 800eb84: 2100 movs r1, #0 + 800eb86: a817 add r0, sp, #92 ; 0x5c + 800eb88: f7ff fa80 bl 800e08c <ProcessMacCommands> + MacCtx.McpsIndication.Port = macMsgData.FPort; + 800eb8c: f89d 306c ldrb.w r3, [sp, #108] ; 0x6c + 800eb90: f884 341b strb.w r3, [r4, #1051] ; 0x41b + break; + 800eb94: e7e5 b.n 800eb62 <ProcessRadioRxDone+0x51a> + 800eb96: bf00 nop + 800eb98: 2000221c .word 0x2000221c + 800eb9c: 20001fe4 .word 0x20001fe4 + 800eba0: 20001870 .word 0x20001870 + ProcessMacCommands( macMsgData.FRMPayload, 0, macMsgData.FRMPayloadSize, snr, MacCtx.RxStatus.RxSlot ); + 800eba4: 4c33 ldr r4, [pc, #204] ; (800ec74 <ProcessRadioRxDone+0x62c>) + 800eba6: f894 347f ldrb.w r3, [r4, #1151] ; 0x47f + 800ebaa: 9300 str r3, [sp, #0] + 800ebac: 463b mov r3, r7 + 800ebae: f89d 2074 ldrb.w r2, [sp, #116] ; 0x74 + 800ebb2: 2100 movs r1, #0 + 800ebb4: 981c ldr r0, [sp, #112] ; 0x70 + 800ebb6: f7ff fa69 bl 800e08c <ProcessMacCommands> + MacCtx.McpsIndication.Port = macMsgData.FPort; + 800ebba: f89d 306c ldrb.w r3, [sp, #108] ; 0x6c + 800ebbe: f884 341b strb.w r3, [r4, #1051] ; 0x41b + break; + 800ebc2: e7ce b.n 800eb62 <ProcessRadioRxDone+0x51a> + MacCtx.McpsIndication.Port = macMsgData.FPort; + 800ebc4: f89d 206c ldrb.w r2, [sp, #108] ; 0x6c + 800ebc8: 4b2a ldr r3, [pc, #168] ; (800ec74 <ProcessRadioRxDone+0x62c>) + 800ebca: f883 241b strb.w r2, [r3, #1051] ; 0x41b + MacCtx.McpsIndication.Buffer = macMsgData.FRMPayload; + 800ebce: 9a1c ldr r2, [sp, #112] ; 0x70 + 800ebd0: f8c3 2420 str.w r2, [r3, #1056] ; 0x420 + MacCtx.McpsIndication.BufferSize = macMsgData.FRMPayloadSize; + 800ebd4: f89d 2074 ldrb.w r2, [sp, #116] ; 0x74 + 800ebd8: f883 2424 strb.w r2, [r3, #1060] ; 0x424 + MacCtx.McpsIndication.RxData = true; + 800ebdc: 2201 movs r2, #1 + 800ebde: f883 2425 strb.w r2, [r3, #1061] ; 0x425 + break; + 800ebe2: e7be b.n 800eb62 <ProcessRadioRxDone+0x51a> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800ebe4: 4b23 ldr r3, [pc, #140] ; (800ec74 <ProcessRadioRxDone+0x62c>) + 800ebe6: 2201 movs r2, #1 + 800ebe8: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800ebec: f7ff f9d4 bl 800df98 <PrepareRxDoneAbort> + break; + 800ebf0: e7b7 b.n 800eb62 <ProcessRadioRxDone+0x51a> + memcpy1( MacCtx.RxPayload, &payload[pktHeaderLen], size - pktHeaderLen ); + 800ebf2: 1e6a subs r2, r5, #1 + 800ebf4: 4c1f ldr r4, [pc, #124] ; (800ec74 <ProcessRadioRxDone+0x62c>) + 800ebf6: f504 770e add.w r7, r4, #568 ; 0x238 + 800ebfa: b292 uxth r2, r2 + 800ebfc: 1c71 adds r1, r6, #1 + 800ebfe: 4638 mov r0, r7 + 800ec00: f005 fccb bl 801459a <memcpy1> + MacCtx.McpsIndication.McpsIndication = MCPS_PROPRIETARY; + 800ec04: 2303 movs r3, #3 + 800ec06: f884 3418 strb.w r3, [r4, #1048] ; 0x418 + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_OK; + 800ec0a: 2300 movs r3, #0 + 800ec0c: f884 3419 strb.w r3, [r4, #1049] ; 0x419 + MacCtx.McpsIndication.Buffer = MacCtx.RxPayload; + 800ec10: f8c4 7420 str.w r7, [r4, #1056] ; 0x420 + MacCtx.McpsIndication.BufferSize = size - pktHeaderLen; + 800ec14: 3d01 subs r5, #1 + 800ec16: f884 5424 strb.w r5, [r4, #1060] ; 0x424 + MacCtx.MacFlags.Bits.McpsInd = 1; + 800ec1a: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800ec1e: f043 0302 orr.w r3, r3, #2 + 800ec22: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + if( MacCtx.NodeAckRequested == true ) + 800ec26: 4b13 ldr r3, [pc, #76] ; (800ec74 <ProcessRadioRxDone+0x62c>) + 800ec28: f893 3410 ldrb.w r3, [r3, #1040] ; 0x410 + 800ec2c: b173 cbz r3, 800ec4c <ProcessRadioRxDone+0x604> + if( MacCtx.McpsConfirm.AckReceived == true ) + 800ec2e: 4b11 ldr r3, [pc, #68] ; (800ec74 <ProcessRadioRxDone+0x62c>) + 800ec30: f893 3438 ldrb.w r3, [r3, #1080] ; 0x438 + 800ec34: b17b cbz r3, 800ec56 <ProcessRadioRxDone+0x60e> + OnAckTimeoutTimerEvent( NULL ); + 800ec36: 2000 movs r0, #0 + 800ec38: f7ff f98e bl 800df58 <OnAckTimeoutTimerEvent> + 800ec3c: e00b b.n 800ec56 <ProcessRadioRxDone+0x60e> + MacCtx.McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800ec3e: 4b0d ldr r3, [pc, #52] ; (800ec74 <ProcessRadioRxDone+0x62c>) + 800ec40: 2201 movs r2, #1 + 800ec42: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + PrepareRxDoneAbort( ); + 800ec46: f7ff f9a7 bl 800df98 <PrepareRxDoneAbort> + break; + 800ec4a: e7ec b.n 800ec26 <ProcessRadioRxDone+0x5de> + if( Nvm.MacGroup2.DeviceClass == CLASS_C ) + 800ec4c: 4b0a ldr r3, [pc, #40] ; (800ec78 <ProcessRadioRxDone+0x630>) + 800ec4e: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800ec52: 2b02 cmp r3, #2 + 800ec54: d009 beq.n 800ec6a <ProcessRadioRxDone+0x622> + MacCtx.MacFlags.Bits.MacDone = 1; + 800ec56: 4a07 ldr r2, [pc, #28] ; (800ec74 <ProcessRadioRxDone+0x62c>) + 800ec58: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 800ec5c: f043 0310 orr.w r3, r3, #16 + 800ec60: f882 3481 strb.w r3, [r2, #1153] ; 0x481 + UpdateRxSlotIdleState( ); + 800ec64: f7fe ff4e bl 800db04 <UpdateRxSlotIdleState> + 800ec68: e543 b.n 800e6f2 <ProcessRadioRxDone+0xaa> + OnAckTimeoutTimerEvent( NULL ); + 800ec6a: 2000 movs r0, #0 + 800ec6c: f7ff f974 bl 800df58 <OnAckTimeoutTimerEvent> + 800ec70: e7f1 b.n 800ec56 <ProcessRadioRxDone+0x60e> + 800ec72: bf00 nop + 800ec74: 20001fe4 .word 0x20001fe4 + 800ec78: 20001870 .word 0x20001870 + +0800ec7c <ProcessRadioTxTimeout>: +{ + 800ec7c: b510 push {r4, lr} + if( Nvm.MacGroup2.DeviceClass != CLASS_C ) + 800ec7e: 4b0f ldr r3, [pc, #60] ; (800ecbc <ProcessRadioTxTimeout+0x40>) + 800ec80: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800ec84: 2b02 cmp r3, #2 + 800ec86: d002 beq.n 800ec8e <ProcessRadioTxTimeout+0x12> + Radio.Sleep( ); + 800ec88: 4b0d ldr r3, [pc, #52] ; (800ecc0 <ProcessRadioTxTimeout+0x44>) + 800ec8a: 6adb ldr r3, [r3, #44] ; 0x2c + 800ec8c: 4798 blx r3 + UpdateRxSlotIdleState( ); + 800ec8e: f7fe ff39 bl 800db04 <UpdateRxSlotIdleState> + MacCtx.McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT; + 800ec92: 4c0c ldr r4, [pc, #48] ; (800ecc4 <ProcessRadioTxTimeout+0x48>) + 800ec94: 2002 movs r0, #2 + 800ec96: f884 0435 strb.w r0, [r4, #1077] ; 0x435 + LoRaMacConfirmQueueSetStatusCmn( LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT ); + 800ec9a: f002 fcc3 bl 8011624 <LoRaMacConfirmQueueSetStatusCmn> + if( MacCtx.NodeAckRequested == true ) + 800ec9e: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800eca2: b113 cbz r3, 800ecaa <ProcessRadioTxTimeout+0x2e> + MacCtx.AckTimeoutRetry = true; + 800eca4: 2201 movs r2, #1 + 800eca6: f884 240f strb.w r2, [r4, #1039] ; 0x40f + MacCtx.MacFlags.Bits.MacDone = 1; + 800ecaa: 4a06 ldr r2, [pc, #24] ; (800ecc4 <ProcessRadioTxTimeout+0x48>) + 800ecac: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 800ecb0: f043 0310 orr.w r3, r3, #16 + 800ecb4: f882 3481 strb.w r3, [r2, #1153] ; 0x481 +} + 800ecb8: bd10 pop {r4, pc} + 800ecba: bf00 nop + 800ecbc: 20001870 .word 0x20001870 + 800ecc0: 08018cb4 .word 0x08018cb4 + 800ecc4: 20001fe4 .word 0x20001fe4 + +0800ecc8 <CheckForClassBCollision>: +{ + 800ecc8: b508 push {r3, lr} + if( LoRaMacClassBIsBeaconExpected( ) == true ) + 800ecca: f002 fa52 bl 8011172 <LoRaMacClassBIsBeaconExpected> + 800ecce: b978 cbnz r0, 800ecf0 <CheckForClassBCollision+0x28> + if( Nvm.MacGroup2.DeviceClass == CLASS_B ) + 800ecd0: 4b09 ldr r3, [pc, #36] ; (800ecf8 <CheckForClassBCollision+0x30>) + 800ecd2: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800ecd6: 2b01 cmp r3, #1 + 800ecd8: d001 beq.n 800ecde <CheckForClassBCollision+0x16> + return LORAMAC_STATUS_OK; + 800ecda: 2000 movs r0, #0 +} + 800ecdc: bd08 pop {r3, pc} + if( LoRaMacClassBIsPingExpected( ) == true ) + 800ecde: f002 fa4a bl 8011176 <LoRaMacClassBIsPingExpected> + 800ece2: b938 cbnz r0, 800ecf4 <CheckForClassBCollision+0x2c> + else if( LoRaMacClassBIsMulticastExpected( ) == true ) + 800ece4: f002 fa49 bl 801117a <LoRaMacClassBIsMulticastExpected> + 800ece8: 2800 cmp r0, #0 + 800ecea: d0f7 beq.n 800ecdc <CheckForClassBCollision+0x14> + return LORAMAC_STATUS_BUSY_PING_SLOT_WINDOW_TIME; + 800ecec: 200f movs r0, #15 + 800ecee: e7f5 b.n 800ecdc <CheckForClassBCollision+0x14> + return LORAMAC_STATUS_BUSY_BEACON_RESERVED_TIME; + 800ecf0: 200e movs r0, #14 + 800ecf2: e7f3 b.n 800ecdc <CheckForClassBCollision+0x14> + return LORAMAC_STATUS_BUSY_PING_SLOT_WINDOW_TIME; + 800ecf4: 200f movs r0, #15 + 800ecf6: e7f1 b.n 800ecdc <CheckForClassBCollision+0x14> + 800ecf8: 20001870 .word 0x20001870 + +0800ecfc <HandleRadioRxErrorTimeout>: +{ + 800ecfc: b5f8 push {r3, r4, r5, r6, r7, lr} + 800ecfe: 4605 mov r5, r0 + 800ed00: 460c mov r4, r1 + if( Nvm.MacGroup2.DeviceClass != CLASS_C ) + 800ed02: 4b37 ldr r3, [pc, #220] ; (800ede0 <HandleRadioRxErrorTimeout+0xe4>) + 800ed04: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800ed08: 2b02 cmp r3, #2 + 800ed0a: d002 beq.n 800ed12 <HandleRadioRxErrorTimeout+0x16> + Radio.Sleep( ); + 800ed0c: 4b35 ldr r3, [pc, #212] ; (800ede4 <HandleRadioRxErrorTimeout+0xe8>) + 800ed0e: 6adb ldr r3, [r3, #44] ; 0x2c + 800ed10: 4798 blx r3 + if( LoRaMacClassBIsBeaconExpected( ) == true ) + 800ed12: f002 fa2e bl 8011172 <LoRaMacClassBIsBeaconExpected> + 800ed16: 4606 mov r6, r0 + 800ed18: bb00 cbnz r0, 800ed5c <HandleRadioRxErrorTimeout+0x60> + if( Nvm.MacGroup2.DeviceClass == CLASS_B ) + 800ed1a: 4b31 ldr r3, [pc, #196] ; (800ede0 <HandleRadioRxErrorTimeout+0xe4>) + 800ed1c: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800ed20: 2b01 cmp r3, #1 + 800ed22: d022 beq.n 800ed6a <HandleRadioRxErrorTimeout+0x6e> + if( classBRx == false ) + 800ed24: b9be cbnz r6, 800ed56 <HandleRadioRxErrorTimeout+0x5a> + if( MacCtx.RxSlot == RX_SLOT_WIN_1 ) + 800ed26: 4b30 ldr r3, [pc, #192] ; (800ede8 <HandleRadioRxErrorTimeout+0xec>) + 800ed28: f893 3480 ldrb.w r3, [r3, #1152] ; 0x480 + 800ed2c: 2b00 cmp r3, #0 + 800ed2e: d13f bne.n 800edb0 <HandleRadioRxErrorTimeout+0xb4> + if( MacCtx.NodeAckRequested == true ) + 800ed30: 4b2d ldr r3, [pc, #180] ; (800ede8 <HandleRadioRxErrorTimeout+0xec>) + 800ed32: f893 3410 ldrb.w r3, [r3, #1040] ; 0x410 + 800ed36: b113 cbz r3, 800ed3e <HandleRadioRxErrorTimeout+0x42> + MacCtx.McpsConfirm.Status = rx1EventInfoStatus; + 800ed38: 4b2b ldr r3, [pc, #172] ; (800ede8 <HandleRadioRxErrorTimeout+0xec>) + 800ed3a: f883 5435 strb.w r5, [r3, #1077] ; 0x435 + LoRaMacConfirmQueueSetStatusCmn( rx1EventInfoStatus ); + 800ed3e: 4628 mov r0, r5 + 800ed40: f002 fc70 bl 8011624 <LoRaMacConfirmQueueSetStatusCmn> + if( TimerGetElapsedTime( Nvm.MacGroup1.LastTxDoneTime ) >= MacCtx.RxWindow2Delay ) + 800ed44: 4b26 ldr r3, [pc, #152] ; (800ede0 <HandleRadioRxErrorTimeout+0xe4>) + 800ed46: 6ad8 ldr r0, [r3, #44] ; 0x2c + 800ed48: f008 fa12 bl 8017170 <UTIL_TIMER_GetElapsedTime> + 800ed4c: 4b26 ldr r3, [pc, #152] ; (800ede8 <HandleRadioRxErrorTimeout+0xec>) + 800ed4e: f8d3 33b4 ldr.w r3, [r3, #948] ; 0x3b4 + 800ed52: 4298 cmp r0, r3 + 800ed54: d220 bcs.n 800ed98 <HandleRadioRxErrorTimeout+0x9c> + UpdateRxSlotIdleState( ); + 800ed56: f7fe fed5 bl 800db04 <UpdateRxSlotIdleState> +} + 800ed5a: bdf8 pop {r3, r4, r5, r6, r7, pc} + LoRaMacClassBSetBeaconState( BEACON_STATE_TIMEOUT ); + 800ed5c: 2002 movs r0, #2 + 800ed5e: f002 f9fe bl 801115e <LoRaMacClassBSetBeaconState> + LoRaMacClassBBeaconTimerEvent( NULL ); + 800ed62: 2000 movs r0, #0 + 800ed64: f002 fa00 bl 8011168 <LoRaMacClassBBeaconTimerEvent> + classBRx = true; + 800ed68: e7d7 b.n 800ed1a <HandleRadioRxErrorTimeout+0x1e> + if( LoRaMacClassBIsPingExpected( ) == true ) + 800ed6a: f002 fa04 bl 8011176 <LoRaMacClassBIsPingExpected> + 800ed6e: 4607 mov r7, r0 + 800ed70: b950 cbnz r0, 800ed88 <HandleRadioRxErrorTimeout+0x8c> + if( LoRaMacClassBIsMulticastExpected( ) == true ) + 800ed72: f002 fa02 bl 801117a <LoRaMacClassBIsMulticastExpected> + 800ed76: 2800 cmp r0, #0 + 800ed78: d0d4 beq.n 800ed24 <HandleRadioRxErrorTimeout+0x28> + LoRaMacClassBSetMulticastSlotState( PINGSLOT_STATE_CALC_PING_OFFSET ); + 800ed7a: 2000 movs r0, #0 + 800ed7c: f002 f9f1 bl 8011162 <LoRaMacClassBSetMulticastSlotState> + LoRaMacClassBMulticastSlotTimerEvent( NULL ); + 800ed80: 2000 movs r0, #0 + 800ed82: f002 f9f3 bl 801116c <LoRaMacClassBMulticastSlotTimerEvent> + if( classBRx == false ) + 800ed86: e7e6 b.n 800ed56 <HandleRadioRxErrorTimeout+0x5a> + LoRaMacClassBSetPingSlotState( PINGSLOT_STATE_CALC_PING_OFFSET ); + 800ed88: 2000 movs r0, #0 + 800ed8a: f002 f9e9 bl 8011160 <LoRaMacClassBSetPingSlotState> + LoRaMacClassBPingSlotTimerEvent( NULL ); + 800ed8e: 2000 movs r0, #0 + 800ed90: f002 f9eb bl 801116a <LoRaMacClassBPingSlotTimerEvent> + classBRx = true; + 800ed94: 463e mov r6, r7 + 800ed96: e7ec b.n 800ed72 <HandleRadioRxErrorTimeout+0x76> + TimerStop( &MacCtx.RxWindowTimer2 ); + 800ed98: 4c13 ldr r4, [pc, #76] ; (800ede8 <HandleRadioRxErrorTimeout+0xec>) + 800ed9a: f504 7066 add.w r0, r4, #920 ; 0x398 + 800ed9e: f008 fa1d bl 80171dc <UTIL_TIMER_Stop> + MacCtx.MacFlags.Bits.MacDone = 1; + 800eda2: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800eda6: f043 0310 orr.w r3, r3, #16 + 800edaa: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800edae: e7d2 b.n 800ed56 <HandleRadioRxErrorTimeout+0x5a> + if( MacCtx.NodeAckRequested == true ) + 800edb0: 4b0d ldr r3, [pc, #52] ; (800ede8 <HandleRadioRxErrorTimeout+0xec>) + 800edb2: f893 3410 ldrb.w r3, [r3, #1040] ; 0x410 + 800edb6: b113 cbz r3, 800edbe <HandleRadioRxErrorTimeout+0xc2> + MacCtx.McpsConfirm.Status = rx2EventInfoStatus; + 800edb8: 4b0b ldr r3, [pc, #44] ; (800ede8 <HandleRadioRxErrorTimeout+0xec>) + 800edba: f883 4435 strb.w r4, [r3, #1077] ; 0x435 + LoRaMacConfirmQueueSetStatusCmn( rx2EventInfoStatus ); + 800edbe: 4620 mov r0, r4 + 800edc0: f002 fc30 bl 8011624 <LoRaMacConfirmQueueSetStatusCmn> + if( Nvm.MacGroup2.DeviceClass != CLASS_C ) + 800edc4: 4b06 ldr r3, [pc, #24] ; (800ede0 <HandleRadioRxErrorTimeout+0xe4>) + 800edc6: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800edca: 2b02 cmp r3, #2 + 800edcc: d0c3 beq.n 800ed56 <HandleRadioRxErrorTimeout+0x5a> + MacCtx.MacFlags.Bits.MacDone = 1; + 800edce: 4a06 ldr r2, [pc, #24] ; (800ede8 <HandleRadioRxErrorTimeout+0xec>) + 800edd0: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 800edd4: f043 0310 orr.w r3, r3, #16 + 800edd8: f882 3481 strb.w r3, [r2, #1153] ; 0x481 + 800eddc: e7bb b.n 800ed56 <HandleRadioRxErrorTimeout+0x5a> + 800edde: bf00 nop + 800ede0: 20001870 .word 0x20001870 + 800ede4: 08018cb4 .word 0x08018cb4 + 800ede8: 20001fe4 .word 0x20001fe4 + +0800edec <ProcessRadioRxError>: +{ + 800edec: b508 push {r3, lr} + HandleRadioRxErrorTimeout( LORAMAC_EVENT_INFO_STATUS_RX1_ERROR, LORAMAC_EVENT_INFO_STATUS_RX2_ERROR ); + 800edee: 2106 movs r1, #6 + 800edf0: 2005 movs r0, #5 + 800edf2: f7ff ff83 bl 800ecfc <HandleRadioRxErrorTimeout> +} + 800edf6: bd08 pop {r3, pc} + +0800edf8 <ProcessRadioRxTimeout>: +{ + 800edf8: b508 push {r3, lr} + HandleRadioRxErrorTimeout( LORAMAC_EVENT_INFO_STATUS_RX1_TIMEOUT, LORAMAC_EVENT_INFO_STATUS_RX2_TIMEOUT ); + 800edfa: 2104 movs r1, #4 + 800edfc: 2003 movs r0, #3 + 800edfe: f7ff ff7d bl 800ecfc <HandleRadioRxErrorTimeout> +} + 800ee02: bd08 pop {r3, pc} + +0800ee04 <LoRaMacHandleIrqEvents>: + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 800ee04: f3ef 8110 mrs r1, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 800ee08: b672 cpsid i + events = LoRaMacRadioEvents; + 800ee0a: 4a14 ldr r2, [pc, #80] ; (800ee5c <LoRaMacHandleIrqEvents+0x58>) + 800ee0c: 6813 ldr r3, [r2, #0] + LoRaMacRadioEvents.Value = 0; + 800ee0e: 2000 movs r0, #0 + 800ee10: 6010 str r0, [r2, #0] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 800ee12: f381 8810 msr PRIMASK, r1 + if( events.Value != 0 ) + 800ee16: b303 cbz r3, 800ee5a <LoRaMacHandleIrqEvents+0x56> +{ + 800ee18: b510 push {r4, lr} + if( events.Events.TxDone == 1 ) + 800ee1a: b2dc uxtb r4, r3 + 800ee1c: f013 0f10 tst.w r3, #16 + 800ee20: d10c bne.n 800ee3c <LoRaMacHandleIrqEvents+0x38> + if( events.Events.RxDone == 1 ) + 800ee22: f014 0f08 tst.w r4, #8 + 800ee26: d10c bne.n 800ee42 <LoRaMacHandleIrqEvents+0x3e> + if( events.Events.TxTimeout == 1 ) + 800ee28: f014 0f04 tst.w r4, #4 + 800ee2c: d10c bne.n 800ee48 <LoRaMacHandleIrqEvents+0x44> + if( events.Events.RxError == 1 ) + 800ee2e: f014 0f02 tst.w r4, #2 + 800ee32: d10c bne.n 800ee4e <LoRaMacHandleIrqEvents+0x4a> + if( events.Events.RxTimeout == 1 ) + 800ee34: f014 0f01 tst.w r4, #1 + 800ee38: d10c bne.n 800ee54 <LoRaMacHandleIrqEvents+0x50> +} + 800ee3a: bd10 pop {r4, pc} + ProcessRadioTxDone( ); + 800ee3c: f7ff f800 bl 800de40 <ProcessRadioTxDone> + 800ee40: e7ef b.n 800ee22 <LoRaMacHandleIrqEvents+0x1e> + ProcessRadioRxDone( ); + 800ee42: f7ff fc01 bl 800e648 <ProcessRadioRxDone> + 800ee46: e7ef b.n 800ee28 <LoRaMacHandleIrqEvents+0x24> + ProcessRadioTxTimeout( ); + 800ee48: f7ff ff18 bl 800ec7c <ProcessRadioTxTimeout> + 800ee4c: e7ef b.n 800ee2e <LoRaMacHandleIrqEvents+0x2a> + ProcessRadioRxError( ); + 800ee4e: f7ff ffcd bl 800edec <ProcessRadioRxError> + 800ee52: e7ef b.n 800ee34 <LoRaMacHandleIrqEvents+0x30> + ProcessRadioRxTimeout( ); + 800ee54: f7ff ffd0 bl 800edf8 <ProcessRadioRxTimeout> +} + 800ee58: e7ef b.n 800ee3a <LoRaMacHandleIrqEvents+0x36> + 800ee5a: 4770 bx lr + 800ee5c: 20001fe0 .word 0x20001fe0 + +0800ee60 <LoRaMacHandleMlmeRequest>: +{ + 800ee60: b508 push {r3, lr} + if( MacCtx.MacFlags.Bits.MlmeReq == 1 ) + 800ee62: 4b16 ldr r3, [pc, #88] ; (800eebc <LoRaMacHandleMlmeRequest+0x5c>) + 800ee64: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800ee68: f013 0f04 tst.w r3, #4 + 800ee6c: d100 bne.n 800ee70 <LoRaMacHandleMlmeRequest+0x10> +} + 800ee6e: bd08 pop {r3, pc} + if( LoRaMacConfirmQueueIsCmdActive( MLME_JOIN ) == true ) + 800ee70: 2001 movs r0, #1 + 800ee72: f002 fbf5 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + 800ee76: b178 cbz r0, 800ee98 <LoRaMacHandleMlmeRequest+0x38> + if( LoRaMacConfirmQueueGetStatus( MLME_JOIN ) == LORAMAC_EVENT_INFO_STATUS_OK ) + 800ee78: 2001 movs r0, #1 + 800ee7a: f002 fbbb bl 80115f4 <LoRaMacConfirmQueueGetStatus> + 800ee7e: b918 cbnz r0, 800ee88 <LoRaMacHandleMlmeRequest+0x28> + MacCtx.ChannelsNbTransCounter = 0; + 800ee80: 4b0e ldr r3, [pc, #56] ; (800eebc <LoRaMacHandleMlmeRequest+0x5c>) + 800ee82: 2200 movs r2, #0 + 800ee84: f883 240c strb.w r2, [r3, #1036] ; 0x40c + MacCtx.MacState &= ~LORAMAC_TX_RUNNING; + 800ee88: 4a0c ldr r2, [pc, #48] ; (800eebc <LoRaMacHandleMlmeRequest+0x5c>) + 800ee8a: f8d2 3340 ldr.w r3, [r2, #832] ; 0x340 + 800ee8e: f023 0302 bic.w r3, r3, #2 + 800ee92: f8c2 3340 str.w r3, [r2, #832] ; 0x340 + 800ee96: e7ea b.n 800ee6e <LoRaMacHandleMlmeRequest+0xe> + else if( ( LoRaMacConfirmQueueIsCmdActive( MLME_TXCW ) == true ) || + 800ee98: 2006 movs r0, #6 + 800ee9a: f002 fbe1 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + 800ee9e: b138 cbz r0, 800eeb0 <LoRaMacHandleMlmeRequest+0x50> + MacCtx.MacState &= ~LORAMAC_TX_RUNNING; + 800eea0: 4a06 ldr r2, [pc, #24] ; (800eebc <LoRaMacHandleMlmeRequest+0x5c>) + 800eea2: f8d2 3340 ldr.w r3, [r2, #832] ; 0x340 + 800eea6: f023 0302 bic.w r3, r3, #2 + 800eeaa: f8c2 3340 str.w r3, [r2, #832] ; 0x340 +} + 800eeae: e7de b.n 800ee6e <LoRaMacHandleMlmeRequest+0xe> + ( LoRaMacConfirmQueueIsCmdActive( MLME_TXCW_1 ) == true ) ) + 800eeb0: 2007 movs r0, #7 + 800eeb2: f002 fbd5 bl 8011660 <LoRaMacConfirmQueueIsCmdActive> + else if( ( LoRaMacConfirmQueueIsCmdActive( MLME_TXCW ) == true ) || + 800eeb6: 2800 cmp r0, #0 + 800eeb8: d0d9 beq.n 800ee6e <LoRaMacHandleMlmeRequest+0xe> + 800eeba: e7f1 b.n 800eea0 <LoRaMacHandleMlmeRequest+0x40> + 800eebc: 20001fe4 .word 0x20001fe4 + +0800eec0 <AckTimeoutRetriesFinalize>: + if( MacCtx.McpsConfirm.AckReceived == false ) + 800eec0: 4b14 ldr r3, [pc, #80] ; (800ef14 <AckTimeoutRetriesFinalize+0x54>) + 800eec2: f893 3438 ldrb.w r3, [r3, #1080] ; 0x438 + 800eec6: b12b cbz r3, 800eed4 <AckTimeoutRetriesFinalize+0x14> + MacCtx.McpsConfirm.NbRetries = MacCtx.AckTimeoutRetriesCounter; + 800eec8: 4b12 ldr r3, [pc, #72] ; (800ef14 <AckTimeoutRetriesFinalize+0x54>) + 800eeca: f893 240e ldrb.w r2, [r3, #1038] ; 0x40e + 800eece: f883 2439 strb.w r2, [r3, #1081] ; 0x439 + 800eed2: 4770 bx lr +{ + 800eed4: b500 push {lr} + 800eed6: b085 sub sp, #20 + params.Type = INIT_TYPE_ACTIVATE_DEFAULT_CHANNELS; + 800eed8: 2302 movs r3, #2 + 800eeda: f88d 300c strb.w r3, [sp, #12] + params.NvmGroup1 = &Nvm.RegionGroup1; + 800eede: 4b0e ldr r3, [pc, #56] ; (800ef18 <AckTimeoutRetriesFinalize+0x58>) + 800eee0: f503 7208 add.w r2, r3, #544 ; 0x220 + 800eee4: 9201 str r2, [sp, #4] + params.NvmGroup2 = &Nvm.RegionGroup2; + 800eee6: f503 722d add.w r2, r3, #692 ; 0x2b4 + 800eeea: 9202 str r2, [sp, #8] + RegionInitDefaults( Nvm.MacGroup2.Region, ¶ms ); + 800eeec: a901 add r1, sp, #4 + 800eeee: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800eef2: f003 f95b bl 80121ac <RegionInitDefaults> + MacCtx.NodeAckRequested = false; + 800eef6: 4b07 ldr r3, [pc, #28] ; (800ef14 <AckTimeoutRetriesFinalize+0x54>) + 800eef8: 2200 movs r2, #0 + 800eefa: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + MacCtx.McpsConfirm.AckReceived = false; + 800eefe: f883 2438 strb.w r2, [r3, #1080] ; 0x438 + MacCtx.McpsConfirm.NbRetries = MacCtx.AckTimeoutRetriesCounter; + 800ef02: 4b04 ldr r3, [pc, #16] ; (800ef14 <AckTimeoutRetriesFinalize+0x54>) + 800ef04: f893 240e ldrb.w r2, [r3, #1038] ; 0x40e + 800ef08: f883 2439 strb.w r2, [r3, #1081] ; 0x439 +} + 800ef0c: b005 add sp, #20 + 800ef0e: f85d fb04 ldr.w pc, [sp], #4 + 800ef12: bf00 nop + 800ef14: 20001fe4 .word 0x20001fe4 + 800ef18: 20001870 .word 0x20001870 + +0800ef1c <SerializeTxFrame>: +{ + 800ef1c: b508 push {r3, lr} + switch( MacCtx.TxMsg.Type ) + 800ef1e: 4b0f ldr r3, [pc, #60] ; (800ef5c <SerializeTxFrame+0x40>) + 800ef20: f893 3104 ldrb.w r3, [r3, #260] ; 0x104 + 800ef24: b11b cbz r3, 800ef2e <SerializeTxFrame+0x12> + 800ef26: 2b04 cmp r3, #4 + 800ef28: d00a beq.n 800ef40 <SerializeTxFrame+0x24> + 800ef2a: 2003 movs r0, #3 +} + 800ef2c: bd08 pop {r3, pc} + serializeStatus = LoRaMacSerializerJoinRequest( &MacCtx.TxMsg.Message.JoinReq ); + 800ef2e: 480c ldr r0, [pc, #48] ; (800ef60 <SerializeTxFrame+0x44>) + 800ef30: f003 f859 bl 8011fe6 <LoRaMacSerializerJoinRequest> + if( LORAMAC_SERIALIZER_SUCCESS != serializeStatus ) + 800ef34: b968 cbnz r0, 800ef52 <SerializeTxFrame+0x36> + MacCtx.PktBufferLen = MacCtx.TxMsg.Message.JoinReq.BufSize; + 800ef36: 4b09 ldr r3, [pc, #36] ; (800ef5c <SerializeTxFrame+0x40>) + 800ef38: f893 210c ldrb.w r2, [r3, #268] ; 0x10c + 800ef3c: 801a strh r2, [r3, #0] + break; + 800ef3e: e7f5 b.n 800ef2c <SerializeTxFrame+0x10> + serializeStatus = LoRaMacSerializerData( &MacCtx.TxMsg.Message.Data ); + 800ef40: 4807 ldr r0, [pc, #28] ; (800ef60 <SerializeTxFrame+0x44>) + 800ef42: f003 f886 bl 8012052 <LoRaMacSerializerData> + if( LORAMAC_SERIALIZER_SUCCESS != serializeStatus ) + 800ef46: b930 cbnz r0, 800ef56 <SerializeTxFrame+0x3a> + MacCtx.PktBufferLen = MacCtx.TxMsg.Message.Data.BufSize; + 800ef48: 4b04 ldr r3, [pc, #16] ; (800ef5c <SerializeTxFrame+0x40>) + 800ef4a: f893 210c ldrb.w r2, [r3, #268] ; 0x10c + 800ef4e: 801a strh r2, [r3, #0] + break; + 800ef50: e7ec b.n 800ef2c <SerializeTxFrame+0x10> + return LORAMAC_STATUS_CRYPTO_ERROR; + 800ef52: 2011 movs r0, #17 + 800ef54: e7ea b.n 800ef2c <SerializeTxFrame+0x10> + return LORAMAC_STATUS_CRYPTO_ERROR; + 800ef56: 2011 movs r0, #17 + 800ef58: e7e8 b.n 800ef2c <SerializeTxFrame+0x10> + 800ef5a: bf00 nop + 800ef5c: 20001fe4 .word 0x20001fe4 + 800ef60: 200020ec .word 0x200020ec + +0800ef64 <ComputeRxWindowParameters>: +{ + 800ef64: b570 push {r4, r5, r6, lr} + 800ef66: b082 sub sp, #8 + RegionComputeRxWindowParameters( Nvm.MacGroup2.Region, + 800ef68: 4c1e ldr r4, [pc, #120] ; (800efe4 <ComputeRxWindowParameters+0x80>) + 800ef6a: f894 6048 ldrb.w r6, [r4, #72] ; 0x48 + RegionApplyDrOffset( Nvm.MacGroup2.Region, + 800ef6e: f994 3069 ldrsb.w r3, [r4, #105] ; 0x69 + 800ef72: f994 2039 ldrsb.w r2, [r4, #57] ; 0x39 + 800ef76: f894 107d ldrb.w r1, [r4, #125] ; 0x7d + 800ef7a: 4630 mov r0, r6 + 800ef7c: f003 f9a4 bl 80122c8 <RegionApplyDrOffset> + RegionComputeRxWindowParameters( Nvm.MacGroup2.Region, + 800ef80: 4d19 ldr r5, [pc, #100] ; (800efe8 <ComputeRxWindowParameters+0x84>) + 800ef82: f505 736e add.w r3, r5, #952 ; 0x3b8 + 800ef86: 9300 str r3, [sp, #0] + 800ef88: 6ce3 ldr r3, [r4, #76] ; 0x4c + 800ef8a: f894 2050 ldrb.w r2, [r4, #80] ; 0x50 + 800ef8e: b241 sxtb r1, r0 + 800ef90: 4630 mov r0, r6 + 800ef92: f003 f92b bl 80121ec <RegionComputeRxWindowParameters> + RegionComputeRxWindowParameters( Nvm.MacGroup2.Region, + 800ef96: f505 7373 add.w r3, r5, #972 ; 0x3cc + 800ef9a: 9300 str r3, [sp, #0] + 800ef9c: 6ce3 ldr r3, [r4, #76] ; 0x4c + 800ef9e: f894 2050 ldrb.w r2, [r4, #80] ; 0x50 + 800efa2: f994 1070 ldrsb.w r1, [r4, #112] ; 0x70 + 800efa6: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800efaa: f003 f91f bl 80121ec <RegionComputeRxWindowParameters> + MacCtx.RxWindow1Delay = Nvm.MacGroup2.MacParams.ReceiveDelay1 + MacCtx.RxWindow1Config.WindowOffset; + 800efae: 6da3 ldr r3, [r4, #88] ; 0x58 + 800efb0: f8d5 13c4 ldr.w r1, [r5, #964] ; 0x3c4 + 800efb4: 440b add r3, r1 + 800efb6: f8c5 33b0 str.w r3, [r5, #944] ; 0x3b0 + MacCtx.RxWindow2Delay = Nvm.MacGroup2.MacParams.ReceiveDelay2 + MacCtx.RxWindow2Config.WindowOffset; + 800efba: 6de3 ldr r3, [r4, #92] ; 0x5c + 800efbc: f8d5 23d8 ldr.w r2, [r5, #984] ; 0x3d8 + 800efc0: 4413 add r3, r2 + 800efc2: f8c5 33b4 str.w r3, [r5, #948] ; 0x3b4 + if( MacCtx.TxMsg.Type != LORAMAC_MSG_TYPE_DATA ) + 800efc6: f895 3104 ldrb.w r3, [r5, #260] ; 0x104 + 800efca: 2b04 cmp r3, #4 + 800efcc: d007 beq.n 800efde <ComputeRxWindowParameters+0x7a> + MacCtx.RxWindow1Delay = Nvm.MacGroup2.MacParams.JoinAcceptDelay1 + MacCtx.RxWindow1Config.WindowOffset; + 800efce: 6e23 ldr r3, [r4, #96] ; 0x60 + 800efd0: 4419 add r1, r3 + 800efd2: f8c5 13b0 str.w r1, [r5, #944] ; 0x3b0 + MacCtx.RxWindow2Delay = Nvm.MacGroup2.MacParams.JoinAcceptDelay2 + MacCtx.RxWindow2Config.WindowOffset; + 800efd6: 6e61 ldr r1, [r4, #100] ; 0x64 + 800efd8: 440a add r2, r1 + 800efda: f8c5 23b4 str.w r2, [r5, #948] ; 0x3b4 +} + 800efde: b002 add sp, #8 + 800efe0: bd70 pop {r4, r5, r6, pc} + 800efe2: bf00 nop + 800efe4: 20001870 .word 0x20001870 + 800efe8: 20001fe4 .word 0x20001fe4 + +0800efec <VerifyTxFrame>: +{ + 800efec: b510 push {r4, lr} + 800efee: b082 sub sp, #8 + size_t macCmdsSize = 0; + 800eff0: 2300 movs r3, #0 + 800eff2: 9301 str r3, [sp, #4] + if( Nvm.MacGroup2.NetworkActivation != ACTIVATION_TYPE_NONE ) + 800eff4: 4b0d ldr r3, [pc, #52] ; (800f02c <VerifyTxFrame+0x40>) + 800eff6: f893 412c ldrb.w r4, [r3, #300] ; 0x12c + 800effa: b914 cbnz r4, 800f002 <VerifyTxFrame+0x16> +} + 800effc: 4620 mov r0, r4 + 800effe: b002 add sp, #8 + 800f000: bd10 pop {r4, pc} + if( LoRaMacCommandsGetSizeSerializedCmds( &macCmdsSize ) != LORAMAC_COMMANDS_SUCCESS ) + 800f002: a801 add r0, sp, #4 + 800f004: f002 f9f2 bl 80113ec <LoRaMacCommandsGetSizeSerializedCmds> + 800f008: 4604 mov r4, r0 + 800f00a: b968 cbnz r0, 800f028 <VerifyTxFrame+0x3c> + if( ValidatePayloadLength( MacCtx.AppDataSize, Nvm.MacGroup1.ChannelsDatarate, macCmdsSize ) == false ) + 800f00c: f89d 2004 ldrb.w r2, [sp, #4] + 800f010: 4b06 ldr r3, [pc, #24] ; (800f02c <VerifyTxFrame+0x40>) + 800f012: f993 1039 ldrsb.w r1, [r3, #57] ; 0x39 + 800f016: 4b06 ldr r3, [pc, #24] ; (800f030 <VerifyTxFrame+0x44>) + 800f018: f893 0237 ldrb.w r0, [r3, #567] ; 0x237 + 800f01c: f7fe fefe bl 800de1c <ValidatePayloadLength> + 800f020: 2800 cmp r0, #0 + 800f022: d1eb bne.n 800effc <VerifyTxFrame+0x10> + return LORAMAC_STATUS_LENGTH_ERROR; + 800f024: 2408 movs r4, #8 + 800f026: e7e9 b.n 800effc <VerifyTxFrame+0x10> + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + 800f028: 2413 movs r4, #19 + 800f02a: e7e7 b.n 800effc <VerifyTxFrame+0x10> + 800f02c: 20001870 .word 0x20001870 + 800f030: 20001fe4 .word 0x20001fe4 + +0800f034 <SecureFrame>: +{ + 800f034: b530 push {r4, r5, lr} + 800f036: b083 sub sp, #12 + uint32_t fCntUp = 0; + 800f038: 2300 movs r3, #0 + 800f03a: 9301 str r3, [sp, #4] + switch( MacCtx.TxMsg.Type ) + 800f03c: 4b1a ldr r3, [pc, #104] ; (800f0a8 <SecureFrame+0x74>) + 800f03e: f893 3104 ldrb.w r3, [r3, #260] ; 0x104 + 800f042: b133 cbz r3, 800f052 <SecureFrame+0x1e> + 800f044: 4605 mov r5, r0 + 800f046: 460c mov r4, r1 + 800f048: 2b04 cmp r3, #4 + 800f04a: d00b beq.n 800f064 <SecureFrame+0x30> + 800f04c: 2003 movs r0, #3 +} + 800f04e: b003 add sp, #12 + 800f050: bd30 pop {r4, r5, pc} + macCryptoStatus = LoRaMacCryptoPrepareJoinRequest( &MacCtx.TxMsg.Message.JoinReq ); + 800f052: 4816 ldr r0, [pc, #88] ; (800f0ac <SecureFrame+0x78>) + 800f054: f002 fd82 bl 8011b5c <LoRaMacCryptoPrepareJoinRequest> + if( LORAMAC_CRYPTO_SUCCESS != macCryptoStatus ) + 800f058: bb00 cbnz r0, 800f09c <SecureFrame+0x68> + MacCtx.PktBufferLen = MacCtx.TxMsg.Message.JoinReq.BufSize; + 800f05a: 4b13 ldr r3, [pc, #76] ; (800f0a8 <SecureFrame+0x74>) + 800f05c: f893 210c ldrb.w r2, [r3, #268] ; 0x10c + 800f060: 801a strh r2, [r3, #0] + break; + 800f062: e7f4 b.n 800f04e <SecureFrame+0x1a> + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoGetFCntUp( &fCntUp ) ) + 800f064: a801 add r0, sp, #4 + 800f066: f002 fd19 bl 8011a9c <LoRaMacCryptoGetFCntUp> + 800f06a: b9c8 cbnz r0, 800f0a0 <SecureFrame+0x6c> + if( ( MacCtx.ChannelsNbTransCounter >= 1 ) || ( MacCtx.AckTimeoutRetriesCounter > 1 ) ) + 800f06c: 4b0e ldr r3, [pc, #56] ; (800f0a8 <SecureFrame+0x74>) + 800f06e: f893 340c ldrb.w r3, [r3, #1036] ; 0x40c + 800f072: b923 cbnz r3, 800f07e <SecureFrame+0x4a> + 800f074: 4b0c ldr r3, [pc, #48] ; (800f0a8 <SecureFrame+0x74>) + 800f076: f893 340e ldrb.w r3, [r3, #1038] ; 0x40e + 800f07a: 2b01 cmp r3, #1 + 800f07c: d902 bls.n 800f084 <SecureFrame+0x50> + fCntUp -= 1; + 800f07e: 9b01 ldr r3, [sp, #4] + 800f080: 3b01 subs r3, #1 + 800f082: 9301 str r3, [sp, #4] + macCryptoStatus = LoRaMacCryptoSecureMessage( fCntUp, txDr, txCh, &MacCtx.TxMsg.Message.Data ); + 800f084: 4b09 ldr r3, [pc, #36] ; (800f0ac <SecureFrame+0x78>) + 800f086: 4622 mov r2, r4 + 800f088: 4629 mov r1, r5 + 800f08a: 9801 ldr r0, [sp, #4] + 800f08c: f002 fd92 bl 8011bb4 <LoRaMacCryptoSecureMessage> + if( LORAMAC_CRYPTO_SUCCESS != macCryptoStatus ) + 800f090: b940 cbnz r0, 800f0a4 <SecureFrame+0x70> + MacCtx.PktBufferLen = MacCtx.TxMsg.Message.Data.BufSize; + 800f092: 4b05 ldr r3, [pc, #20] ; (800f0a8 <SecureFrame+0x74>) + 800f094: f893 210c ldrb.w r2, [r3, #268] ; 0x10c + 800f098: 801a strh r2, [r3, #0] + break; + 800f09a: e7d8 b.n 800f04e <SecureFrame+0x1a> + return LORAMAC_STATUS_CRYPTO_ERROR; + 800f09c: 2011 movs r0, #17 + 800f09e: e7d6 b.n 800f04e <SecureFrame+0x1a> + return LORAMAC_STATUS_FCNT_HANDLER_ERROR; + 800f0a0: 2012 movs r0, #18 + 800f0a2: e7d4 b.n 800f04e <SecureFrame+0x1a> + return LORAMAC_STATUS_CRYPTO_ERROR; + 800f0a4: 2011 movs r0, #17 + 800f0a6: e7d2 b.n 800f04e <SecureFrame+0x1a> + 800f0a8: 20001fe4 .word 0x20001fe4 + 800f0ac: 200020ec .word 0x200020ec + +0800f0b0 <SendFrameOnChannel>: +{ + 800f0b0: b570 push {r4, r5, r6, lr} + 800f0b2: b086 sub sp, #24 + 800f0b4: 4606 mov r6, r0 + int8_t txPower = 0; + 800f0b6: 2300 movs r3, #0 + 800f0b8: f88d 3007 strb.w r3, [sp, #7] + txConfig.Channel = channel; + 800f0bc: f88d 0008 strb.w r0, [sp, #8] + txConfig.Datarate = Nvm.MacGroup1.ChannelsDatarate; + 800f0c0: 4d34 ldr r5, [pc, #208] ; (800f194 <SendFrameOnChannel+0xe4>) + 800f0c2: f995 3039 ldrsb.w r3, [r5, #57] ; 0x39 + 800f0c6: f88d 3009 strb.w r3, [sp, #9] + txConfig.TxPower = Nvm.MacGroup1.ChannelsTxPower; + 800f0ca: f995 3038 ldrsb.w r3, [r5, #56] ; 0x38 + 800f0ce: f88d 300a strb.w r3, [sp, #10] + txConfig.MaxEirp = Nvm.MacGroup2.MacParams.MaxEirp; + 800f0d2: f8d5 3080 ldr.w r3, [r5, #128] ; 0x80 + 800f0d6: 9303 str r3, [sp, #12] + txConfig.AntennaGain = Nvm.MacGroup2.MacParams.AntennaGain; + 800f0d8: f8d5 3084 ldr.w r3, [r5, #132] ; 0x84 + 800f0dc: 9304 str r3, [sp, #16] + txConfig.PktLen = MacCtx.PktBufferLen; + 800f0de: 4c2e ldr r4, [pc, #184] ; (800f198 <SendFrameOnChannel+0xe8>) + 800f0e0: 8823 ldrh r3, [r4, #0] + 800f0e2: f8ad 3014 strh.w r3, [sp, #20] + RegionTxConfig( Nvm.MacGroup2.Region, &txConfig, &txPower, &MacCtx.TxTimeOnAir ); + 800f0e6: f204 4314 addw r3, r4, #1044 ; 0x414 + 800f0ea: f10d 0207 add.w r2, sp, #7 + 800f0ee: a902 add r1, sp, #8 + 800f0f0: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800f0f4: f003 f88f bl 8012216 <RegionTxConfig> + MacCtx.McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 800f0f8: 2301 movs r3, #1 + 800f0fa: f884 3435 strb.w r3, [r4, #1077] ; 0x435 + MacCtx.McpsConfirm.Datarate = Nvm.MacGroup1.ChannelsDatarate; + 800f0fe: f895 3039 ldrb.w r3, [r5, #57] ; 0x39 + 800f102: f884 3436 strb.w r3, [r4, #1078] ; 0x436 + MacCtx.McpsConfirm.TxPower = txPower; + 800f106: f89d 3007 ldrb.w r3, [sp, #7] + 800f10a: f884 3437 strb.w r3, [r4, #1079] ; 0x437 + MacCtx.McpsConfirm.Channel = channel; + 800f10e: f8c4 6444 str.w r6, [r4, #1092] ; 0x444 + MacCtx.McpsConfirm.TxTimeOnAir = MacCtx.TxTimeOnAir; + 800f112: f8d4 3414 ldr.w r3, [r4, #1044] ; 0x414 + 800f116: f8c4 343c str.w r3, [r4, #1084] ; 0x43c + MacCtx.MlmeConfirm.TxTimeOnAir = MacCtx.TxTimeOnAir; + 800f11a: f8c4 344c str.w r3, [r4, #1100] ; 0x44c + if( LoRaMacClassBIsBeaconModeActive( ) == true ) + 800f11e: f002 f82e bl 801117e <LoRaMacClassBIsBeaconModeActive> + 800f122: bb58 cbnz r0, 800f17c <SendFrameOnChannel+0xcc> + if( Nvm.MacGroup2.DeviceClass == CLASS_B ) + 800f124: 4b1b ldr r3, [pc, #108] ; (800f194 <SendFrameOnChannel+0xe4>) + 800f126: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800f12a: 2b01 cmp r3, #1 + 800f12c: d02e beq.n 800f18c <SendFrameOnChannel+0xdc> + LoRaMacClassBHaltBeaconing( ); + 800f12e: f002 f829 bl 8011184 <LoRaMacClassBHaltBeaconing> + status = SecureFrame( Nvm.MacGroup1.ChannelsDatarate, MacCtx.Channel ); + 800f132: 4b18 ldr r3, [pc, #96] ; (800f194 <SendFrameOnChannel+0xe4>) + 800f134: f993 0039 ldrsb.w r0, [r3, #57] ; 0x39 + 800f138: 4b17 ldr r3, [pc, #92] ; (800f198 <SendFrameOnChannel+0xe8>) + 800f13a: f893 1411 ldrb.w r1, [r3, #1041] ; 0x411 + 800f13e: b2c0 uxtb r0, r0 + 800f140: f7ff ff78 bl 800f034 <SecureFrame> + if( status != LORAMAC_STATUS_OK ) + 800f144: 4604 mov r4, r0 + 800f146: b9b0 cbnz r0, 800f176 <SendFrameOnChannel+0xc6> + MacCtx.MacState |= LORAMAC_TX_RUNNING; + 800f148: 4b13 ldr r3, [pc, #76] ; (800f198 <SendFrameOnChannel+0xe8>) + 800f14a: f8d3 2340 ldr.w r2, [r3, #832] ; 0x340 + 800f14e: f042 0202 orr.w r2, r2, #2 + 800f152: f8c3 2340 str.w r2, [r3, #832] ; 0x340 + if( MacCtx.NodeAckRequested == false ) + 800f156: f893 3410 ldrb.w r3, [r3, #1040] ; 0x410 + 800f15a: b92b cbnz r3, 800f168 <SendFrameOnChannel+0xb8> + MacCtx.ChannelsNbTransCounter++; + 800f15c: 4a0e ldr r2, [pc, #56] ; (800f198 <SendFrameOnChannel+0xe8>) + 800f15e: f892 340c ldrb.w r3, [r2, #1036] ; 0x40c + 800f162: 3301 adds r3, #1 + 800f164: f882 340c strb.w r3, [r2, #1036] ; 0x40c + Radio.Send( MacCtx.PktBuffer, MacCtx.PktBufferLen ); + 800f168: 4b0c ldr r3, [pc, #48] ; (800f19c <SendFrameOnChannel+0xec>) + 800f16a: 6a9b ldr r3, [r3, #40] ; 0x28 + 800f16c: 480a ldr r0, [pc, #40] ; (800f198 <SendFrameOnChannel+0xe8>) + 800f16e: f830 1b02 ldrh.w r1, [r0], #2 + 800f172: b2c9 uxtb r1, r1 + 800f174: 4798 blx r3 +} + 800f176: 4620 mov r0, r4 + 800f178: b006 add sp, #24 + 800f17a: bd70 pop {r4, r5, r6, pc} + TimerTime_t collisionTime = LoRaMacClassBIsUplinkCollision( MacCtx.TxTimeOnAir ); + 800f17c: f8d4 0414 ldr.w r0, [r4, #1044] ; 0x414 + 800f180: f002 f80f bl 80111a2 <LoRaMacClassBIsUplinkCollision> + if( collisionTime > 0 ) + 800f184: 2800 cmp r0, #0 + 800f186: d0cd beq.n 800f124 <SendFrameOnChannel+0x74> + return LORAMAC_STATUS_BUSY_UPLINK_COLLISION; + 800f188: 2410 movs r4, #16 + 800f18a: e7f4 b.n 800f176 <SendFrameOnChannel+0xc6> + LoRaMacClassBStopRxSlots( ); + 800f18c: f002 f80b bl 80111a6 <LoRaMacClassBStopRxSlots> + 800f190: e7cd b.n 800f12e <SendFrameOnChannel+0x7e> + 800f192: bf00 nop + 800f194: 20001870 .word 0x20001870 + 800f198: 20001fe4 .word 0x20001fe4 + 800f19c: 08018cb4 .word 0x08018cb4 + +0800f1a0 <ScheduleTx>: +{ + 800f1a0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800f1a4: b08c sub sp, #48 ; 0x30 + 800f1a6: 4605 mov r5, r0 + status = CheckForClassBCollision( ); + 800f1a8: f7ff fd8e bl 800ecc8 <CheckForClassBCollision> + if( status != LORAMAC_STATUS_OK ) + 800f1ac: 4604 mov r4, r0 + 800f1ae: b118 cbz r0, 800f1b8 <ScheduleTx+0x18> +} + 800f1b0: 4620 mov r0, r4 + 800f1b2: b00c add sp, #48 ; 0x30 + 800f1b4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + CalculateBackOff( ); + 800f1b8: f7fe fcfe bl 800dbb8 <CalculateBackOff> + status = SerializeTxFrame( ); + 800f1bc: f7ff feae bl 800ef1c <SerializeTxFrame> + if( status != LORAMAC_STATUS_OK ) + 800f1c0: 4604 mov r4, r0 + 800f1c2: 2800 cmp r0, #0 + 800f1c4: d1f4 bne.n 800f1b0 <ScheduleTx+0x10> + nextChan.AggrTimeOff = Nvm.MacGroup1.AggregatedTimeOff; + 800f1c6: 4e36 ldr r6, [pc, #216] ; (800f2a0 <ScheduleTx+0x100>) + 800f1c8: 6b33 ldr r3, [r6, #48] ; 0x30 + 800f1ca: 9304 str r3, [sp, #16] + nextChan.Datarate = Nvm.MacGroup1.ChannelsDatarate; + 800f1cc: f996 3039 ldrsb.w r3, [r6, #57] ; 0x39 + 800f1d0: f88d 3018 strb.w r3, [sp, #24] + nextChan.DutyCycleEnabled = Nvm.MacGroup2.DutyCycleOn; + 800f1d4: f896 311c ldrb.w r3, [r6, #284] ; 0x11c + 800f1d8: f88d 301a strb.w r3, [sp, #26] + nextChan.ElapsedTimeSinceStartUp = SysTimeSub( SysTimeGetMcuTime( ), Nvm.MacGroup2.InitializationTime ); + 800f1dc: f10d 0828 add.w r8, sp, #40 ; 0x28 + 800f1e0: 4640 mov r0, r8 + 800f1e2: f007 ff2f bl 8017044 <SysTimeGetMcuTime> + 800f1e6: af02 add r7, sp, #8 + 800f1e8: f8d6 3124 ldr.w r3, [r6, #292] ; 0x124 + 800f1ec: 9300 str r3, [sp, #0] + 800f1ee: f8d6 3120 ldr.w r3, [r6, #288] ; 0x120 + 800f1f2: e898 0006 ldmia.w r8, {r1, r2} + 800f1f6: 4638 mov r0, r7 + 800f1f8: f007 fec1 bl 8016f7e <SysTimeSub> + 800f1fc: ab07 add r3, sp, #28 + 800f1fe: e897 0003 ldmia.w r7, {r0, r1} + 800f202: e883 0003 stmia.w r3, {r0, r1} + nextChan.LastAggrTx = Nvm.MacGroup1.LastTxDoneTime; + 800f206: 6af3 ldr r3, [r6, #44] ; 0x2c + 800f208: 9305 str r3, [sp, #20] + nextChan.LastTxIsJoinRequest = false; + 800f20a: 2300 movs r3, #0 + 800f20c: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + nextChan.Joined = true; + 800f210: 2301 movs r3, #1 + 800f212: f88d 3019 strb.w r3, [sp, #25] + nextChan.PktLen = MacCtx.PktBufferLen; + 800f216: 4b23 ldr r3, [pc, #140] ; (800f2a4 <ScheduleTx+0x104>) + 800f218: 881b ldrh r3, [r3, #0] + 800f21a: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 + if( Nvm.MacGroup2.NetworkActivation == ACTIVATION_TYPE_NONE ) + 800f21e: f896 312c ldrb.w r3, [r6, #300] ; 0x12c + 800f222: b92b cbnz r3, 800f230 <ScheduleTx+0x90> + nextChan.LastTxIsJoinRequest = true; + 800f224: 2301 movs r3, #1 + 800f226: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + nextChan.Joined = false; + 800f22a: 2300 movs r3, #0 + 800f22c: f88d 3019 strb.w r3, [sp, #25] + status = RegionNextChannel( Nvm.MacGroup2.Region, &nextChan, &MacCtx.Channel, &MacCtx.DutyCycleWaitTime, &Nvm.MacGroup1.AggregatedTimeOff ); + 800f230: 4a1c ldr r2, [pc, #112] ; (800f2a4 <ScheduleTx+0x104>) + 800f232: 481b ldr r0, [pc, #108] ; (800f2a0 <ScheduleTx+0x100>) + 800f234: f100 0330 add.w r3, r0, #48 ; 0x30 + 800f238: 9300 str r3, [sp, #0] + 800f23a: f202 4384 addw r3, r2, #1156 ; 0x484 + 800f23e: f202 4211 addw r2, r2, #1041 ; 0x411 + 800f242: a904 add r1, sp, #16 + 800f244: f890 0048 ldrb.w r0, [r0, #72] ; 0x48 + 800f248: f003 f82b bl 80122a2 <RegionNextChannel> + if( status != LORAMAC_STATUS_OK ) + 800f24c: b1c0 cbz r0, 800f280 <ScheduleTx+0xe0> + if( status == LORAMAC_STATUS_DUTYCYCLE_RESTRICTED ) + 800f24e: 280b cmp r0, #11 + 800f250: d124 bne.n 800f29c <ScheduleTx+0xfc> + if( MacCtx.DutyCycleWaitTime != 0 ) + 800f252: 4a14 ldr r2, [pc, #80] ; (800f2a4 <ScheduleTx+0x104>) + 800f254: f8d2 1484 ldr.w r1, [r2, #1156] ; 0x484 + 800f258: b191 cbz r1, 800f280 <ScheduleTx+0xe0> + if( allowDelayedTx == true ) + 800f25a: b90d cbnz r5, 800f260 <ScheduleTx+0xc0> + return status; + 800f25c: 4604 mov r4, r0 + 800f25e: e7a7 b.n 800f1b0 <ScheduleTx+0x10> + MacCtx.MacState |= LORAMAC_TX_DELAYED; + 800f260: 4615 mov r5, r2 + 800f262: f8d2 2340 ldr.w r2, [r2, #832] ; 0x340 + 800f266: f042 0220 orr.w r2, r2, #32 + 800f26a: f8c5 2340 str.w r2, [r5, #832] ; 0x340 + TimerSetValue( &MacCtx.TxDelayedTimer, MacCtx.DutyCycleWaitTime ); + 800f26e: f505 755a add.w r5, r5, #872 ; 0x368 + 800f272: 4628 mov r0, r5 + 800f274: f008 f852 bl 801731c <UTIL_TIMER_SetPeriod> + TimerStart( &MacCtx.TxDelayedTimer ); + 800f278: 4628 mov r0, r5 + 800f27a: f008 f809 bl 8017290 <UTIL_TIMER_Start> + return LORAMAC_STATUS_OK; + 800f27e: e797 b.n 800f1b0 <ScheduleTx+0x10> + ComputeRxWindowParameters( ); + 800f280: f7ff fe70 bl 800ef64 <ComputeRxWindowParameters> + status = VerifyTxFrame( ); + 800f284: f7ff feb2 bl 800efec <VerifyTxFrame> + if( status != LORAMAC_STATUS_OK ) + 800f288: 4604 mov r4, r0 + 800f28a: 2800 cmp r0, #0 + 800f28c: d190 bne.n 800f1b0 <ScheduleTx+0x10> + return SendFrameOnChannel( MacCtx.Channel ); + 800f28e: 4b05 ldr r3, [pc, #20] ; (800f2a4 <ScheduleTx+0x104>) + 800f290: f893 0411 ldrb.w r0, [r3, #1041] ; 0x411 + 800f294: f7ff ff0c bl 800f0b0 <SendFrameOnChannel> + 800f298: 4604 mov r4, r0 + 800f29a: e789 b.n 800f1b0 <ScheduleTx+0x10> + return status; + 800f29c: 4604 mov r4, r0 + 800f29e: e787 b.n 800f1b0 <ScheduleTx+0x10> + 800f2a0: 20001870 .word 0x20001870 + 800f2a4: 20001fe4 .word 0x20001fe4 + +0800f2a8 <OnTxDelayedTimerEvent>: +{ + 800f2a8: b510 push {r4, lr} + TimerStop( &MacCtx.TxDelayedTimer ); + 800f2aa: 4c11 ldr r4, [pc, #68] ; (800f2f0 <OnTxDelayedTimerEvent+0x48>) + 800f2ac: f504 705a add.w r0, r4, #872 ; 0x368 + 800f2b0: f007 ff94 bl 80171dc <UTIL_TIMER_Stop> + MacCtx.MacState &= ~LORAMAC_TX_DELAYED; + 800f2b4: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800f2b8: f023 0320 bic.w r3, r3, #32 + 800f2bc: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + switch( ScheduleTx( true ) ) + 800f2c0: 2001 movs r0, #1 + 800f2c2: f7ff ff6d bl 800f1a0 <ScheduleTx> + 800f2c6: b108 cbz r0, 800f2cc <OnTxDelayedTimerEvent+0x24> + 800f2c8: 280b cmp r0, #11 + 800f2ca: d100 bne.n 800f2ce <OnTxDelayedTimerEvent+0x26> +} + 800f2cc: bd10 pop {r4, pc} + MacCtx.McpsConfirm.Datarate = Nvm.MacGroup1.ChannelsDatarate; + 800f2ce: 4b09 ldr r3, [pc, #36] ; (800f2f4 <OnTxDelayedTimerEvent+0x4c>) + 800f2d0: f893 2039 ldrb.w r2, [r3, #57] ; 0x39 + 800f2d4: f884 2436 strb.w r2, [r4, #1078] ; 0x436 + MacCtx.McpsConfirm.NbRetries = MacCtx.AckTimeoutRetriesCounter; + 800f2d8: f894 240e ldrb.w r2, [r4, #1038] ; 0x40e + 800f2dc: f884 2439 strb.w r2, [r4, #1081] ; 0x439 + MacCtx.McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_TX_DR_PAYLOAD_SIZE_ERROR; + 800f2e0: 2009 movs r0, #9 + 800f2e2: f884 0435 strb.w r0, [r4, #1077] ; 0x435 + LoRaMacConfirmQueueSetStatusCmn( LORAMAC_EVENT_INFO_STATUS_TX_DR_PAYLOAD_SIZE_ERROR ); + 800f2e6: f002 f99d bl 8011624 <LoRaMacConfirmQueueSetStatusCmn> + StopRetransmission( ); + 800f2ea: f7fe fcf3 bl 800dcd4 <StopRetransmission> +} + 800f2ee: e7ed b.n 800f2cc <OnTxDelayedTimerEvent+0x24> + 800f2f0: 20001fe4 .word 0x20001fe4 + 800f2f4: 20001870 .word 0x20001870 + +0800f2f8 <LoRaMacHandleMcpsRequest>: + if( MacCtx.MacFlags.Bits.McpsReq == 1 ) + 800f2f8: 4b23 ldr r3, [pc, #140] ; (800f388 <LoRaMacHandleMcpsRequest+0x90>) + 800f2fa: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800f2fe: f013 0f01 tst.w r3, #1 + 800f302: d040 beq.n 800f386 <LoRaMacHandleMcpsRequest+0x8e> +{ + 800f304: b510 push {r4, lr} + if( ( MacCtx.McpsConfirm.McpsRequest == MCPS_UNCONFIRMED ) || + 800f306: 4b20 ldr r3, [pc, #128] ; (800f388 <LoRaMacHandleMcpsRequest+0x90>) + 800f308: f893 3434 ldrb.w r3, [r3, #1076] ; 0x434 + 800f30c: b12b cbz r3, 800f31a <LoRaMacHandleMcpsRequest+0x22> + 800f30e: 2b03 cmp r3, #3 + 800f310: d003 beq.n 800f31a <LoRaMacHandleMcpsRequest+0x22> + else if( MacCtx.McpsConfirm.McpsRequest == MCPS_CONFIRMED ) + 800f312: 2b01 cmp r3, #1 + 800f314: d007 beq.n 800f326 <LoRaMacHandleMcpsRequest+0x2e> + bool waitForRetransmission = false; + 800f316: 2400 movs r4, #0 + 800f318: e003 b.n 800f322 <LoRaMacHandleMcpsRequest+0x2a> + stopRetransmission = CheckRetransUnconfirmedUplink( ); + 800f31a: f7fe fc9f bl 800dc5c <CheckRetransUnconfirmedUplink> + 800f31e: 4604 mov r4, r0 + if( stopRetransmission == true ) + 800f320: b9a4 cbnz r4, 800f34c <LoRaMacHandleMcpsRequest+0x54> + else if( waitForRetransmission == false ) + 800f322: b31c cbz r4, 800f36c <LoRaMacHandleMcpsRequest+0x74> +} + 800f324: bd10 pop {r4, pc} + if( MacCtx.AckTimeoutRetry == true ) + 800f326: 4b18 ldr r3, [pc, #96] ; (800f388 <LoRaMacHandleMcpsRequest+0x90>) + 800f328: f893 340f ldrb.w r3, [r3, #1039] ; 0x40f + 800f32c: b1e3 cbz r3, 800f368 <LoRaMacHandleMcpsRequest+0x70> + stopRetransmission = CheckRetransConfirmedUplink( ); + 800f32e: f7fe fcb9 bl 800dca4 <CheckRetransConfirmedUplink> + 800f332: 4604 mov r4, r0 + if( Nvm.MacGroup2.Version.Fields.Minor == 0 ) + 800f334: 4b15 ldr r3, [pc, #84] ; (800f38c <LoRaMacHandleMcpsRequest+0x94>) + 800f336: f893 312a ldrb.w r3, [r3, #298] ; 0x12a + 800f33a: 2b00 cmp r3, #0 + 800f33c: d1f0 bne.n 800f320 <LoRaMacHandleMcpsRequest+0x28> + if( stopRetransmission == false ) + 800f33e: b910 cbnz r0, 800f346 <LoRaMacHandleMcpsRequest+0x4e> + AckTimeoutRetriesProcess( ); + 800f340: f7fe fd20 bl 800dd84 <AckTimeoutRetriesProcess> + 800f344: e7ec b.n 800f320 <LoRaMacHandleMcpsRequest+0x28> + AckTimeoutRetriesFinalize( ); + 800f346: f7ff fdbb bl 800eec0 <AckTimeoutRetriesFinalize> + 800f34a: e7e9 b.n 800f320 <LoRaMacHandleMcpsRequest+0x28> + TimerStop( &MacCtx.TxDelayedTimer ); + 800f34c: 4c0e ldr r4, [pc, #56] ; (800f388 <LoRaMacHandleMcpsRequest+0x90>) + 800f34e: f504 705a add.w r0, r4, #872 ; 0x368 + 800f352: f007 ff43 bl 80171dc <UTIL_TIMER_Stop> + MacCtx.MacState &= ~LORAMAC_TX_DELAYED; + 800f356: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800f35a: f023 0320 bic.w r3, r3, #32 + 800f35e: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + StopRetransmission( ); + 800f362: f7fe fcb7 bl 800dcd4 <StopRetransmission> + 800f366: e7dd b.n 800f324 <LoRaMacHandleMcpsRequest+0x2c> + waitForRetransmission = true; + 800f368: 2401 movs r4, #1 + 800f36a: e7da b.n 800f322 <LoRaMacHandleMcpsRequest+0x2a> + MacCtx.MacFlags.Bits.MacDone = 0; + 800f36c: 4b06 ldr r3, [pc, #24] ; (800f388 <LoRaMacHandleMcpsRequest+0x90>) + 800f36e: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 800f372: f36f 1204 bfc r2, #4, #1 + 800f376: f883 2481 strb.w r2, [r3, #1153] ; 0x481 + MacCtx.AckTimeoutRetry = false; + 800f37a: 2000 movs r0, #0 + 800f37c: f883 040f strb.w r0, [r3, #1039] ; 0x40f + OnTxDelayedTimerEvent( NULL ); + 800f380: f7ff ff92 bl 800f2a8 <OnTxDelayedTimerEvent> +} + 800f384: e7ce b.n 800f324 <LoRaMacHandleMcpsRequest+0x2c> + 800f386: 4770 bx lr + 800f388: 20001fe4 .word 0x20001fe4 + 800f38c: 20001870 .word 0x20001870 + +0800f390 <LoRaMacHandleRequestEvents>: +{ + 800f390: b538 push {r3, r4, r5, lr} + if( MacCtx.MacState == LORAMAC_IDLE ) + 800f392: 4b22 ldr r3, [pc, #136] ; (800f41c <LoRaMacHandleRequestEvents+0x8c>) + 800f394: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 800f398: bb7b cbnz r3, 800f3fa <LoRaMacHandleRequestEvents+0x6a> + if( MacCtx.MacFlags.Bits.McpsReq == 1 ) + 800f39a: 4b20 ldr r3, [pc, #128] ; (800f41c <LoRaMacHandleRequestEvents+0x8c>) + 800f39c: f893 4481 ldrb.w r4, [r3, #1153] ; 0x481 + 800f3a0: f014 0501 ands.w r5, r4, #1 + 800f3a4: d005 beq.n 800f3b2 <LoRaMacHandleRequestEvents+0x22> + MacCtx.MacFlags.Bits.McpsReq = 0; + 800f3a6: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 800f3aa: f36f 0200 bfc r2, #0, #1 + 800f3ae: f883 2481 strb.w r2, [r3, #1153] ; 0x481 + if( MacCtx.MacFlags.Bits.MlmeReq == 1 ) + 800f3b2: 4b1a ldr r3, [pc, #104] ; (800f41c <LoRaMacHandleRequestEvents+0x8c>) + 800f3b4: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800f3b8: f013 0f04 tst.w r3, #4 + 800f3bc: d006 beq.n 800f3cc <LoRaMacHandleRequestEvents+0x3c> + MacCtx.MacFlags.Bits.MlmeReq = 0; + 800f3be: 4b17 ldr r3, [pc, #92] ; (800f41c <LoRaMacHandleRequestEvents+0x8c>) + 800f3c0: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 800f3c4: f36f 0282 bfc r2, #2, #1 + 800f3c8: f883 2481 strb.w r2, [r3, #1153] ; 0x481 + LoRaMacEnableRequests( LORAMAC_REQUEST_HANDLING_ON ); + 800f3cc: 2001 movs r0, #1 + 800f3ce: f7fe fbad bl 800db2c <LoRaMacEnableRequests> + if( reqEvents.Bits.McpsReq == 1 ) + 800f3d2: b135 cbz r5, 800f3e2 <LoRaMacHandleRequestEvents+0x52> + MacCtx.MacPrimitives->MacMcpsConfirm( &MacCtx.McpsConfirm ); + 800f3d4: 4811 ldr r0, [pc, #68] ; (800f41c <LoRaMacHandleRequestEvents+0x8c>) + 800f3d6: f8d0 3344 ldr.w r3, [r0, #836] ; 0x344 + 800f3da: 681b ldr r3, [r3, #0] + 800f3dc: f200 4034 addw r0, r0, #1076 ; 0x434 + 800f3e0: 4798 blx r3 + if( reqEvents.Bits.MlmeReq == 1 ) + 800f3e2: f014 0f04 tst.w r4, #4 + 800f3e6: d109 bne.n 800f3fc <LoRaMacHandleRequestEvents+0x6c> + LoRaMacClassBResumeBeaconing( ); + 800f3e8: f001 fecd bl 8011186 <LoRaMacClassBResumeBeaconing> + MacCtx.MacFlags.Bits.MacDone = 0; + 800f3ec: 4b0b ldr r3, [pc, #44] ; (800f41c <LoRaMacHandleRequestEvents+0x8c>) + 800f3ee: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 800f3f2: f36f 1204 bfc r2, #4, #1 + 800f3f6: f883 2481 strb.w r2, [r3, #1153] ; 0x481 +} + 800f3fa: bd38 pop {r3, r4, r5, pc} + LoRaMacConfirmQueueHandleCb( &MacCtx.MlmeConfirm ); + 800f3fc: 4808 ldr r0, [pc, #32] ; (800f420 <LoRaMacHandleRequestEvents+0x90>) + 800f3fe: f002 f93b bl 8011678 <LoRaMacConfirmQueueHandleCb> + if( LoRaMacConfirmQueueGetCnt( ) > 0 ) + 800f402: f002 f971 bl 80116e8 <LoRaMacConfirmQueueGetCnt> + 800f406: 2800 cmp r0, #0 + 800f408: d0ee beq.n 800f3e8 <LoRaMacHandleRequestEvents+0x58> + MacCtx.MacFlags.Bits.MlmeReq = 1; + 800f40a: 4a04 ldr r2, [pc, #16] ; (800f41c <LoRaMacHandleRequestEvents+0x8c>) + 800f40c: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 800f410: f043 0304 orr.w r3, r3, #4 + 800f414: f882 3481 strb.w r3, [r2, #1153] ; 0x481 + 800f418: e7e6 b.n 800f3e8 <LoRaMacHandleRequestEvents+0x58> + 800f41a: bf00 nop + 800f41c: 20001fe4 .word 0x20001fe4 + 800f420: 2000242c .word 0x2000242c + +0800f424 <OpenContinuousRxCWindow>: +{ + 800f424: b570 push {r4, r5, r6, lr} + 800f426: b082 sub sp, #8 + Nvm.MacGroup2.MacParams.RxCChannel.Datarate, + 800f428: 4c14 ldr r4, [pc, #80] ; (800f47c <OpenContinuousRxCWindow+0x58>) + RegionComputeRxWindowParameters( Nvm.MacGroup2.Region, + 800f42a: 4d15 ldr r5, [pc, #84] ; (800f480 <OpenContinuousRxCWindow+0x5c>) + 800f42c: f505 7678 add.w r6, r5, #992 ; 0x3e0 + 800f430: 9600 str r6, [sp, #0] + 800f432: 6ce3 ldr r3, [r4, #76] ; 0x4c + 800f434: f894 2050 ldrb.w r2, [r4, #80] ; 0x50 + 800f438: f994 1078 ldrsb.w r1, [r4, #120] ; 0x78 + 800f43c: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800f440: f002 fed4 bl 80121ec <RegionComputeRxWindowParameters> + MacCtx.RxWindowCConfig.RxSlot = RX_SLOT_WIN_CLASS_C; + 800f444: 2302 movs r3, #2 + 800f446: f885 33f3 strb.w r3, [r5, #1011] ; 0x3f3 + MacCtx.RxWindowCConfig.RxContinuous = true; + 800f44a: 2301 movs r3, #1 + 800f44c: f885 33f2 strb.w r3, [r5, #1010] ; 0x3f2 + if( RegionRxConfig( Nvm.MacGroup2.Region, &MacCtx.RxWindowCConfig, ( int8_t* )&MacCtx.McpsIndication.RxDatarate ) == true ) + 800f450: f205 421c addw r2, r5, #1052 ; 0x41c + 800f454: 4631 mov r1, r6 + 800f456: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800f45a: f002 fed2 bl 8012202 <RegionRxConfig> + 800f45e: b158 cbz r0, 800f478 <OpenContinuousRxCWindow+0x54> + MacCtx.MlmeIndication.RxDatarate = MacCtx.McpsIndication.RxDatarate; + 800f460: f895 341c ldrb.w r3, [r5, #1052] ; 0x41c + 800f464: f885 345e strb.w r3, [r5, #1118] ; 0x45e + Radio.Rx( 0 ); // Continuous mode + 800f468: 4b06 ldr r3, [pc, #24] ; (800f484 <OpenContinuousRxCWindow+0x60>) + 800f46a: 6b5b ldr r3, [r3, #52] ; 0x34 + 800f46c: 2000 movs r0, #0 + 800f46e: 4798 blx r3 + MacCtx.RxSlot = MacCtx.RxWindowCConfig.RxSlot; + 800f470: f895 33f3 ldrb.w r3, [r5, #1011] ; 0x3f3 + 800f474: f885 3480 strb.w r3, [r5, #1152] ; 0x480 +} + 800f478: b002 add sp, #8 + 800f47a: bd70 pop {r4, r5, r6, pc} + 800f47c: 20001870 .word 0x20001870 + 800f480: 20001fe4 .word 0x20001fe4 + 800f484: 08018cb4 .word 0x08018cb4 + +0800f488 <RxWindowSetup>: +{ + 800f488: b538 push {r3, r4, r5, lr} + 800f48a: 460c mov r4, r1 + TimerStop( rxTimer ); + 800f48c: f007 fea6 bl 80171dc <UTIL_TIMER_Stop> + Radio.Standby( ); + 800f490: 4b0c ldr r3, [pc, #48] ; (800f4c4 <RxWindowSetup+0x3c>) + 800f492: 6b1b ldr r3, [r3, #48] ; 0x30 + 800f494: 4798 blx r3 + if( RegionRxConfig( Nvm.MacGroup2.Region, rxConfig, ( int8_t* )&MacCtx.McpsIndication.RxDatarate ) == true ) + 800f496: 4a0c ldr r2, [pc, #48] ; (800f4c8 <RxWindowSetup+0x40>) + 800f498: 4621 mov r1, r4 + 800f49a: 4b0c ldr r3, [pc, #48] ; (800f4cc <RxWindowSetup+0x44>) + 800f49c: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800f4a0: f002 feaf bl 8012202 <RegionRxConfig> + 800f4a4: b160 cbz r0, 800f4c0 <RxWindowSetup+0x38> + MacCtx.MlmeIndication.RxDatarate = MacCtx.McpsIndication.RxDatarate; + 800f4a6: 4d0a ldr r5, [pc, #40] ; (800f4d0 <RxWindowSetup+0x48>) + 800f4a8: f895 341c ldrb.w r3, [r5, #1052] ; 0x41c + 800f4ac: f885 345e strb.w r3, [r5, #1118] ; 0x45e + Radio.Rx( Nvm.MacGroup2.MacParams.MaxRxWindow ); + 800f4b0: 4b04 ldr r3, [pc, #16] ; (800f4c4 <RxWindowSetup+0x3c>) + 800f4b2: 6b5b ldr r3, [r3, #52] ; 0x34 + 800f4b4: 4a05 ldr r2, [pc, #20] ; (800f4cc <RxWindowSetup+0x44>) + 800f4b6: 6d50 ldr r0, [r2, #84] ; 0x54 + 800f4b8: 4798 blx r3 + MacCtx.RxSlot = rxConfig->RxSlot; + 800f4ba: 7ce3 ldrb r3, [r4, #19] + 800f4bc: f885 3480 strb.w r3, [r5, #1152] ; 0x480 +} + 800f4c0: bd38 pop {r3, r4, r5, pc} + 800f4c2: bf00 nop + 800f4c4: 08018cb4 .word 0x08018cb4 + 800f4c8: 20002400 .word 0x20002400 + 800f4cc: 20001870 .word 0x20001870 + 800f4d0: 20001fe4 .word 0x20001fe4 + +0800f4d4 <OnRxWindow2TimerEvent>: +{ + 800f4d4: b508 push {r3, lr} + if( MacCtx.RxSlot == RX_SLOT_WIN_1 ) + 800f4d6: 4b11 ldr r3, [pc, #68] ; (800f51c <OnRxWindow2TimerEvent+0x48>) + 800f4d8: f893 3480 ldrb.w r3, [r3, #1152] ; 0x480 + 800f4dc: b903 cbnz r3, 800f4e0 <OnRxWindow2TimerEvent+0xc> +} + 800f4de: bd08 pop {r3, pc} + MacCtx.RxWindow2Config.Channel = MacCtx.Channel; + 800f4e0: 480e ldr r0, [pc, #56] ; (800f51c <OnRxWindow2TimerEvent+0x48>) + 800f4e2: f890 3411 ldrb.w r3, [r0, #1041] ; 0x411 + 800f4e6: f880 33cc strb.w r3, [r0, #972] ; 0x3cc + MacCtx.RxWindow2Config.Frequency = Nvm.MacGroup2.MacParams.Rx2Channel.Frequency; + 800f4ea: 4b0d ldr r3, [pc, #52] ; (800f520 <OnRxWindow2TimerEvent+0x4c>) + 800f4ec: 6eda ldr r2, [r3, #108] ; 0x6c + 800f4ee: f8c0 23d0 str.w r2, [r0, #976] ; 0x3d0 + MacCtx.RxWindow2Config.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 800f4f2: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 800f4f6: f880 23dc strb.w r2, [r0, #988] ; 0x3dc + MacCtx.RxWindow2Config.RepeaterSupport = Nvm.MacGroup2.MacParams.RepeaterSupport; + 800f4fa: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800f4fe: f880 33dd strb.w r3, [r0, #989] ; 0x3dd + MacCtx.RxWindow2Config.RxContinuous = false; + 800f502: 2300 movs r3, #0 + 800f504: f880 33de strb.w r3, [r0, #990] ; 0x3de + MacCtx.RxWindow2Config.RxSlot = RX_SLOT_WIN_2; + 800f508: 2301 movs r3, #1 + 800f50a: f880 33df strb.w r3, [r0, #991] ; 0x3df + RxWindowSetup( &MacCtx.RxWindowTimer2, &MacCtx.RxWindow2Config ); + 800f50e: f500 7173 add.w r1, r0, #972 ; 0x3cc + 800f512: f500 7066 add.w r0, r0, #920 ; 0x398 + 800f516: f7ff ffb7 bl 800f488 <RxWindowSetup> + 800f51a: e7e0 b.n 800f4de <OnRxWindow2TimerEvent+0xa> + 800f51c: 20001fe4 .word 0x20001fe4 + 800f520: 20001870 .word 0x20001870 + +0800f524 <OnRxWindow1TimerEvent>: +{ + 800f524: b508 push {r3, lr} + MacCtx.RxWindow1Config.Channel = MacCtx.Channel; + 800f526: 480f ldr r0, [pc, #60] ; (800f564 <OnRxWindow1TimerEvent+0x40>) + 800f528: f890 3411 ldrb.w r3, [r0, #1041] ; 0x411 + 800f52c: f880 33b8 strb.w r3, [r0, #952] ; 0x3b8 + MacCtx.RxWindow1Config.DrOffset = Nvm.MacGroup2.MacParams.Rx1DrOffset; + 800f530: 4b0d ldr r3, [pc, #52] ; (800f568 <OnRxWindow1TimerEvent+0x44>) + 800f532: f993 2069 ldrsb.w r2, [r3, #105] ; 0x69 + 800f536: f880 23bb strb.w r2, [r0, #955] ; 0x3bb + MacCtx.RxWindow1Config.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 800f53a: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 800f53e: f880 23c8 strb.w r2, [r0, #968] ; 0x3c8 + MacCtx.RxWindow1Config.RepeaterSupport = Nvm.MacGroup2.MacParams.RepeaterSupport; + 800f542: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800f546: f880 33c9 strb.w r3, [r0, #969] ; 0x3c9 + MacCtx.RxWindow1Config.RxContinuous = false; + 800f54a: 2300 movs r3, #0 + 800f54c: f880 33ca strb.w r3, [r0, #970] ; 0x3ca + MacCtx.RxWindow1Config.RxSlot = RX_SLOT_WIN_1; + 800f550: f880 33cb strb.w r3, [r0, #971] ; 0x3cb + RxWindowSetup( &MacCtx.RxWindowTimer1, &MacCtx.RxWindow1Config ); + 800f554: f500 716e add.w r1, r0, #952 ; 0x3b8 + 800f558: f500 7060 add.w r0, r0, #896 ; 0x380 + 800f55c: f7ff ff94 bl 800f488 <RxWindowSetup> +} + 800f560: bd08 pop {r3, pc} + 800f562: bf00 nop + 800f564: 20001fe4 .word 0x20001fe4 + 800f568: 20001870 .word 0x20001870 + +0800f56c <LoRaMacHandleNvm>: +{ + 800f56c: b538 push {r3, r4, r5, lr} + if( MacCtx.MacState != LORAMAC_IDLE ) + 800f56e: 4b30 ldr r3, [pc, #192] ; (800f630 <LoRaMacHandleNvm+0xc4>) + 800f570: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 800f574: b103 cbz r3, 800f578 <LoRaMacHandleNvm+0xc> +} + 800f576: bd38 pop {r3, r4, r5, pc} + 800f578: 4604 mov r4, r0 + crc = Crc32( ( uint8_t* ) &nvmData->Crypto, sizeof( nvmData->Crypto ) - + 800f57a: 2124 movs r1, #36 ; 0x24 + 800f57c: f005 f82e bl 80145dc <Crc32> + if( crc != nvmData->Crypto.Crc32 ) + 800f580: 6a63 ldr r3, [r4, #36] ; 0x24 + 800f582: 4283 cmp r3, r0 + 800f584: d052 beq.n 800f62c <LoRaMacHandleNvm+0xc0> + nvmData->Crypto.Crc32 = crc; + 800f586: 6260 str r0, [r4, #36] ; 0x24 + notifyFlags |= LORAMAC_NVM_NOTIFY_FLAG_CRYPTO; + 800f588: 2501 movs r5, #1 + crc = Crc32( ( uint8_t* ) &nvmData->MacGroup1, sizeof( nvmData->MacGroup1 ) - + 800f58a: 211c movs r1, #28 + 800f58c: f104 0028 add.w r0, r4, #40 ; 0x28 + 800f590: f005 f824 bl 80145dc <Crc32> + if( crc != nvmData->MacGroup1.Crc32 ) + 800f594: 6c63 ldr r3, [r4, #68] ; 0x44 + 800f596: 4283 cmp r3, r0 + 800f598: d002 beq.n 800f5a0 <LoRaMacHandleNvm+0x34> + nvmData->MacGroup1.Crc32 = crc; + 800f59a: 6460 str r0, [r4, #68] ; 0x44 + notifyFlags |= LORAMAC_NVM_NOTIFY_FLAG_MAC_GROUP1; + 800f59c: f045 0502 orr.w r5, r5, #2 + crc = Crc32( ( uint8_t* ) &nvmData->MacGroup2, sizeof( nvmData->MacGroup2 ) - + 800f5a0: 21fc movs r1, #252 ; 0xfc + 800f5a2: f104 0048 add.w r0, r4, #72 ; 0x48 + 800f5a6: f005 f819 bl 80145dc <Crc32> + if( crc != nvmData->MacGroup2.Crc32 ) + 800f5aa: f8d4 3144 ldr.w r3, [r4, #324] ; 0x144 + 800f5ae: 4283 cmp r3, r0 + 800f5b0: d003 beq.n 800f5ba <LoRaMacHandleNvm+0x4e> + nvmData->MacGroup2.Crc32 = crc; + 800f5b2: f8c4 0144 str.w r0, [r4, #324] ; 0x144 + notifyFlags |= LORAMAC_NVM_NOTIFY_FLAG_MAC_GROUP2; + 800f5b6: f045 0504 orr.w r5, r5, #4 + crc = Crc32( ( uint8_t* ) &nvmData->SecureElement, sizeof( nvmData->SecureElement ) - + 800f5ba: 21d4 movs r1, #212 ; 0xd4 + 800f5bc: f504 70a4 add.w r0, r4, #328 ; 0x148 + 800f5c0: f005 f80c bl 80145dc <Crc32> + if( crc != nvmData->SecureElement.Crc32 ) + 800f5c4: f8d4 321c ldr.w r3, [r4, #540] ; 0x21c + 800f5c8: 4283 cmp r3, r0 + 800f5ca: d003 beq.n 800f5d4 <LoRaMacHandleNvm+0x68> + nvmData->SecureElement.Crc32 = crc; + 800f5cc: f8c4 021c str.w r0, [r4, #540] ; 0x21c + notifyFlags |= LORAMAC_NVM_NOTIFY_FLAG_SECURE_ELEMENT; + 800f5d0: f045 0508 orr.w r5, r5, #8 + crc = Crc32( ( uint8_t* ) &nvmData->RegionGroup1, sizeof( nvmData->RegionGroup1 ) - + 800f5d4: 2190 movs r1, #144 ; 0x90 + 800f5d6: f504 7008 add.w r0, r4, #544 ; 0x220 + 800f5da: f004 ffff bl 80145dc <Crc32> + if( crc != nvmData->RegionGroup1.Crc32 ) + 800f5de: f8d4 32b0 ldr.w r3, [r4, #688] ; 0x2b0 + 800f5e2: 4283 cmp r3, r0 + 800f5e4: d003 beq.n 800f5ee <LoRaMacHandleNvm+0x82> + nvmData->RegionGroup1.Crc32 = crc; + 800f5e6: f8c4 02b0 str.w r0, [r4, #688] ; 0x2b0 + notifyFlags |= LORAMAC_NVM_NOTIFY_FLAG_REGION_GROUP1; + 800f5ea: f045 0510 orr.w r5, r5, #16 + crc = Crc32( ( uint8_t* ) &nvmData->RegionGroup2, sizeof( nvmData->RegionGroup2 ) - + 800f5ee: f44f 6194 mov.w r1, #1184 ; 0x4a0 + 800f5f2: f504 702d add.w r0, r4, #692 ; 0x2b4 + 800f5f6: f004 fff1 bl 80145dc <Crc32> + if( crc != nvmData->RegionGroup2.Crc32 ) + 800f5fa: f8d4 3754 ldr.w r3, [r4, #1876] ; 0x754 + 800f5fe: 4283 cmp r3, r0 + 800f600: d003 beq.n 800f60a <LoRaMacHandleNvm+0x9e> + nvmData->RegionGroup2.Crc32 = crc; + 800f602: f8c4 0754 str.w r0, [r4, #1876] ; 0x754 + notifyFlags |= LORAMAC_NVM_NOTIFY_FLAG_REGION_GROUP2; + 800f606: f045 0520 orr.w r5, r5, #32 + crc = Crc32( ( uint8_t* ) &nvmData->ClassB, sizeof( nvmData->ClassB ) - + 800f60a: 2114 movs r1, #20 + 800f60c: f504 60eb add.w r0, r4, #1880 ; 0x758 + 800f610: f004 ffe4 bl 80145dc <Crc32> + if( crc != nvmData->ClassB.Crc32 ) + 800f614: f8d4 376c ldr.w r3, [r4, #1900] ; 0x76c + 800f618: 4283 cmp r3, r0 + 800f61a: d003 beq.n 800f624 <LoRaMacHandleNvm+0xb8> + nvmData->ClassB.Crc32 = crc; + 800f61c: f8c4 076c str.w r0, [r4, #1900] ; 0x76c + notifyFlags |= LORAMAC_NVM_NOTIFY_FLAG_CLASS_B; + 800f620: f045 0540 orr.w r5, r5, #64 ; 0x40 + CallNvmDataChangeCallback( notifyFlags ); + 800f624: 4628 mov r0, r5 + 800f626: f7fe fb95 bl 800dd54 <CallNvmDataChangeCallback> + 800f62a: e7a4 b.n 800f576 <LoRaMacHandleNvm+0xa> + uint16_t notifyFlags = LORAMAC_NVM_NOTIFY_FLAG_NONE; + 800f62c: 2500 movs r5, #0 + 800f62e: e7ac b.n 800f58a <LoRaMacHandleNvm+0x1e> + 800f630: 20001fe4 .word 0x20001fe4 + +0800f634 <RestoreNvmData>: +{ + 800f634: b538 push {r3, r4, r5, lr} + if( MacCtx.MacState != LORAMAC_STOPPED ) + 800f636: 4b3d ldr r3, [pc, #244] ; (800f72c <RestoreNvmData+0xf8>) + 800f638: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 800f63c: 2b01 cmp r3, #1 + 800f63e: d001 beq.n 800f644 <RestoreNvmData+0x10> + return LORAMAC_STATUS_BUSY; + 800f640: 2001 movs r0, #1 +} + 800f642: bd38 pop {r3, r4, r5, pc} + crc = Crc32( ( uint8_t* ) &(NvmBackup.Crypto), sizeof( NvmBackup.Crypto ) - + 800f644: 4c3a ldr r4, [pc, #232] ; (800f730 <RestoreNvmData+0xfc>) + 800f646: 2124 movs r1, #36 ; 0x24 + 800f648: 4620 mov r0, r4 + 800f64a: f004 ffc7 bl 80145dc <Crc32> + if( crc != NvmBackup.Crypto.Crc32 ) + 800f64e: 6a63 ldr r3, [r4, #36] ; 0x24 + 800f650: 4283 cmp r3, r0 + 800f652: d001 beq.n 800f658 <RestoreNvmData+0x24> + return LORAMAC_STATUS_NVM_DATA_INCONSISTENT; + 800f654: 2017 movs r0, #23 + 800f656: e7f4 b.n 800f642 <RestoreNvmData+0xe> + crc = Crc32( ( uint8_t* ) &(NvmBackup.MacGroup1), sizeof( NvmBackup.MacGroup1 ) - + 800f658: 211c movs r1, #28 + 800f65a: f104 0028 add.w r0, r4, #40 ; 0x28 + 800f65e: f004 ffbd bl 80145dc <Crc32> + if( crc != NvmBackup.MacGroup1.Crc32 ) + 800f662: 6c63 ldr r3, [r4, #68] ; 0x44 + 800f664: 4283 cmp r3, r0 + 800f666: d001 beq.n 800f66c <RestoreNvmData+0x38> + return LORAMAC_STATUS_NVM_DATA_INCONSISTENT; + 800f668: 2017 movs r0, #23 + 800f66a: e7ea b.n 800f642 <RestoreNvmData+0xe> + crc = Crc32( ( uint8_t* ) &(NvmBackup.MacGroup2), sizeof( NvmBackup.MacGroup2 ) - + 800f66c: 21fc movs r1, #252 ; 0xfc + 800f66e: f104 0048 add.w r0, r4, #72 ; 0x48 + 800f672: f004 ffb3 bl 80145dc <Crc32> + if( crc != NvmBackup.MacGroup2.Crc32 ) + 800f676: f8d4 3144 ldr.w r3, [r4, #324] ; 0x144 + 800f67a: 4283 cmp r3, r0 + 800f67c: d001 beq.n 800f682 <RestoreNvmData+0x4e> + return LORAMAC_STATUS_NVM_DATA_INCONSISTENT; + 800f67e: 2017 movs r0, #23 + 800f680: e7df b.n 800f642 <RestoreNvmData+0xe> + crc = Crc32( ( uint8_t* ) &(NvmBackup.SecureElement), sizeof( NvmBackup.SecureElement ) - + 800f682: 21d4 movs r1, #212 ; 0xd4 + 800f684: f504 70a4 add.w r0, r4, #328 ; 0x148 + 800f688: f004 ffa8 bl 80145dc <Crc32> + if( crc != NvmBackup.SecureElement.Crc32 ) + 800f68c: f8d4 321c ldr.w r3, [r4, #540] ; 0x21c + 800f690: 4283 cmp r3, r0 + 800f692: d001 beq.n 800f698 <RestoreNvmData+0x64> + return LORAMAC_STATUS_NVM_DATA_INCONSISTENT; + 800f694: 2017 movs r0, #23 + 800f696: e7d4 b.n 800f642 <RestoreNvmData+0xe> + crc = Crc32( ( uint8_t* ) &(NvmBackup.RegionGroup1), sizeof( NvmBackup.RegionGroup1 ) - + 800f698: 2190 movs r1, #144 ; 0x90 + 800f69a: f504 7008 add.w r0, r4, #544 ; 0x220 + 800f69e: f004 ff9d bl 80145dc <Crc32> + if( crc != NvmBackup.RegionGroup1.Crc32 ) + 800f6a2: f8d4 32b0 ldr.w r3, [r4, #688] ; 0x2b0 + 800f6a6: 4283 cmp r3, r0 + 800f6a8: d001 beq.n 800f6ae <RestoreNvmData+0x7a> + return LORAMAC_STATUS_NVM_DATA_INCONSISTENT; + 800f6aa: 2017 movs r0, #23 + 800f6ac: e7c9 b.n 800f642 <RestoreNvmData+0xe> + crc = Crc32( ( uint8_t* ) &(NvmBackup.RegionGroup2), sizeof( NvmBackup.RegionGroup2 ) - + 800f6ae: f44f 6194 mov.w r1, #1184 ; 0x4a0 + 800f6b2: f504 702d add.w r0, r4, #692 ; 0x2b4 + 800f6b6: f004 ff91 bl 80145dc <Crc32> + if( crc != NvmBackup.RegionGroup2.Crc32 ) + 800f6ba: f8d4 3754 ldr.w r3, [r4, #1876] ; 0x754 + 800f6be: 4283 cmp r3, r0 + 800f6c0: d001 beq.n 800f6c6 <RestoreNvmData+0x92> + return LORAMAC_STATUS_NVM_DATA_INCONSISTENT; + 800f6c2: 2017 movs r0, #23 + 800f6c4: e7bd b.n 800f642 <RestoreNvmData+0xe> + crc = Crc32( ( uint8_t* ) &(NvmBackup.ClassB), sizeof( NvmBackup.ClassB ) - + 800f6c6: 2114 movs r1, #20 + 800f6c8: f504 60eb add.w r0, r4, #1880 ; 0x758 + 800f6cc: f004 ff86 bl 80145dc <Crc32> + if( crc != NvmBackup.ClassB.Crc32 ) + 800f6d0: f8d4 376c ldr.w r3, [r4, #1900] ; 0x76c + 800f6d4: 4283 cmp r3, r0 + 800f6d6: d001 beq.n 800f6dc <RestoreNvmData+0xa8> + return LORAMAC_STATUS_NVM_DATA_INCONSISTENT; + 800f6d8: 2017 movs r0, #23 + 800f6da: e7b2 b.n 800f642 <RestoreNvmData+0xe> + memcpy1( ( uint8_t* ) &Nvm, ( uint8_t* ) &NvmBackup, sizeof( LoRaMacNvmData_t ) ); + 800f6dc: 4625 mov r5, r4 + 800f6de: 4c15 ldr r4, [pc, #84] ; (800f734 <RestoreNvmData+0x100>) + 800f6e0: f44f 62ee mov.w r2, #1904 ; 0x770 + 800f6e4: 4629 mov r1, r5 + 800f6e6: 4620 mov r0, r4 + 800f6e8: f004 ff57 bl 801459a <memcpy1> + memset1( ( uint8_t* ) &NvmBackup, 0, sizeof( LoRaMacNvmData_t ) ); + 800f6ec: f44f 62ee mov.w r2, #1904 ; 0x770 + 800f6f0: 2100 movs r1, #0 + 800f6f2: 4628 mov r0, r5 + 800f6f4: f004 ff69 bl 80145ca <memset1> + MacCtx.RxWindowCConfig.Channel = MacCtx.Channel; + 800f6f8: 4b0c ldr r3, [pc, #48] ; (800f72c <RestoreNvmData+0xf8>) + 800f6fa: f893 2411 ldrb.w r2, [r3, #1041] ; 0x411 + 800f6fe: f883 23e0 strb.w r2, [r3, #992] ; 0x3e0 + MacCtx.RxWindowCConfig.Frequency = Nvm.MacGroup2.MacParams.RxCChannel.Frequency; + 800f702: 6f62 ldr r2, [r4, #116] ; 0x74 + 800f704: f8c3 23e4 str.w r2, [r3, #996] ; 0x3e4 + MacCtx.RxWindowCConfig.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 800f708: f894 207d ldrb.w r2, [r4, #125] ; 0x7d + 800f70c: f883 23f0 strb.w r2, [r3, #1008] ; 0x3f0 + MacCtx.RxWindowCConfig.RxContinuous = true; + 800f710: 2201 movs r2, #1 + 800f712: f883 23f2 strb.w r2, [r3, #1010] ; 0x3f2 + MacCtx.RxWindowCConfig.RxSlot = RX_SLOT_WIN_CLASS_C; + 800f716: 2202 movs r2, #2 + 800f718: f883 23f3 strb.w r2, [r3, #1011] ; 0x3f3 + Radio.SetPublicNetwork( Nvm.MacGroup2.PublicNetwork ); + 800f71c: 4b06 ldr r3, [pc, #24] ; (800f738 <RestoreNvmData+0x104>) + 800f71e: 6d9b ldr r3, [r3, #88] ; 0x58 + 800f720: f894 0119 ldrb.w r0, [r4, #281] ; 0x119 + 800f724: 4798 blx r3 + return LORAMAC_STATUS_OK; + 800f726: 2000 movs r0, #0 + 800f728: e78b b.n 800f642 <RestoreNvmData+0xe> + 800f72a: bf00 nop + 800f72c: 20001fe4 .word 0x20001fe4 + 800f730: 20001100 .word 0x20001100 + 800f734: 20001870 .word 0x20001870 + 800f738: 08018cb4 .word 0x08018cb4 + +0800f73c <OnRadioRxTimeout>: +{ + 800f73c: b508 push {r3, lr} + LoRaMacRadioEvents.Events.RxTimeout = 1; + 800f73e: 4a07 ldr r2, [pc, #28] ; (800f75c <OnRadioRxTimeout+0x20>) + 800f740: 7813 ldrb r3, [r2, #0] + 800f742: f043 0301 orr.w r3, r3, #1 + 800f746: 7013 strb r3, [r2, #0] + OnMacProcessNotify( ); + 800f748: f7fe faec bl 800dd24 <OnMacProcessNotify> + MW_LOG(TS_ON, VLEVEL_M, "MAC rxTimeOut\r\n" ); + 800f74c: 4b04 ldr r3, [pc, #16] ; (800f760 <OnRadioRxTimeout+0x24>) + 800f74e: 2201 movs r2, #1 + 800f750: 2100 movs r1, #0 + 800f752: 2002 movs r0, #2 + 800f754: f007 f9f0 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 800f758: bd08 pop {r3, pc} + 800f75a: bf00 nop + 800f75c: 20001fe0 .word 0x20001fe0 + 800f760: 08018610 .word 0x08018610 + +0800f764 <OnRadioTxTimeout>: +{ + 800f764: b508 push {r3, lr} + LoRaMacRadioEvents.Events.TxTimeout = 1; + 800f766: 4a07 ldr r2, [pc, #28] ; (800f784 <OnRadioTxTimeout+0x20>) + 800f768: 7813 ldrb r3, [r2, #0] + 800f76a: f043 0304 orr.w r3, r3, #4 + 800f76e: 7013 strb r3, [r2, #0] + OnMacProcessNotify( ); + 800f770: f7fe fad8 bl 800dd24 <OnMacProcessNotify> + MW_LOG(TS_ON, VLEVEL_M, "MAC txTimeOut\r\n" ); + 800f774: 4b04 ldr r3, [pc, #16] ; (800f788 <OnRadioTxTimeout+0x24>) + 800f776: 2201 movs r2, #1 + 800f778: 2100 movs r1, #0 + 800f77a: 2002 movs r0, #2 + 800f77c: f007 f9dc bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 800f780: bd08 pop {r3, pc} + 800f782: bf00 nop + 800f784: 20001fe0 .word 0x20001fe0 + 800f788: 08018620 .word 0x08018620 + +0800f78c <OnRadioRxDone>: +{ + 800f78c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800f790: 4680 mov r8, r0 + 800f792: 460f mov r7, r1 + 800f794: 4616 mov r6, r2 + 800f796: 461d mov r5, r3 + RxDoneParams.LastRxDone = TimerGetCurrentTime( ); + 800f798: f007 fce0 bl 801715c <UTIL_TIMER_GetCurrentTime> + 800f79c: 4c0a ldr r4, [pc, #40] ; (800f7c8 <OnRadioRxDone+0x3c>) + 800f79e: 6020 str r0, [r4, #0] + RxDoneParams.Payload = payload; + 800f7a0: f8c4 8004 str.w r8, [r4, #4] + RxDoneParams.Size = size; + 800f7a4: 8127 strh r7, [r4, #8] + RxDoneParams.Rssi = rssi; + 800f7a6: 8166 strh r6, [r4, #10] + RxDoneParams.Snr = snr; + 800f7a8: 7325 strb r5, [r4, #12] + LoRaMacRadioEvents.Events.RxDone = 1; + 800f7aa: 4a08 ldr r2, [pc, #32] ; (800f7cc <OnRadioRxDone+0x40>) + 800f7ac: 7813 ldrb r3, [r2, #0] + 800f7ae: f043 0308 orr.w r3, r3, #8 + 800f7b2: 7013 strb r3, [r2, #0] + OnMacProcessNotify( ); + 800f7b4: f7fe fab6 bl 800dd24 <OnMacProcessNotify> + MW_LOG(TS_ON, VLEVEL_M, "MAC rxDone\r\n" ); + 800f7b8: 4b05 ldr r3, [pc, #20] ; (800f7d0 <OnRadioRxDone+0x44>) + 800f7ba: 2201 movs r2, #1 + 800f7bc: 2100 movs r1, #0 + 800f7be: 2002 movs r0, #2 + 800f7c0: f007 f9ba bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 800f7c4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800f7c8: 200024ec .word 0x200024ec + 800f7cc: 20001fe0 .word 0x20001fe0 + 800f7d0: 08018630 .word 0x08018630 + +0800f7d4 <OnRadioTxDone>: +{ + 800f7d4: b510 push {r4, lr} + 800f7d6: b082 sub sp, #8 + TxDoneParams.CurTime = TimerGetCurrentTime( ); + 800f7d8: f007 fcc0 bl 801715c <UTIL_TIMER_GetCurrentTime> + 800f7dc: 4b0c ldr r3, [pc, #48] ; (800f810 <OnRadioTxDone+0x3c>) + 800f7de: 6018 str r0, [r3, #0] + MacCtx.LastTxSysTime = SysTimeGet( ); + 800f7e0: 466c mov r4, sp + 800f7e2: 4620 mov r0, r4 + 800f7e4: f007 fc0c bl 8017000 <SysTimeGet> + 800f7e8: 4b0a ldr r3, [pc, #40] ; (800f814 <OnRadioTxDone+0x40>) + 800f7ea: e894 0003 ldmia.w r4, {r0, r1} + 800f7ee: e883 0003 stmia.w r3, {r0, r1} + LoRaMacRadioEvents.Events.TxDone = 1; + 800f7f2: 4a09 ldr r2, [pc, #36] ; (800f818 <OnRadioTxDone+0x44>) + 800f7f4: 7813 ldrb r3, [r2, #0] + 800f7f6: f043 0310 orr.w r3, r3, #16 + 800f7fa: 7013 strb r3, [r2, #0] + OnMacProcessNotify( ); + 800f7fc: f7fe fa92 bl 800dd24 <OnMacProcessNotify> + MW_LOG(TS_ON, VLEVEL_M, "MAC txDone\r\n" ); + 800f800: 4b06 ldr r3, [pc, #24] ; (800f81c <OnRadioTxDone+0x48>) + 800f802: 2201 movs r2, #1 + 800f804: 2100 movs r1, #0 + 800f806: 2002 movs r0, #2 + 800f808: f007 f996 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 800f80c: b002 add sp, #8 + 800f80e: bd10 pop {r4, pc} + 800f810: 200024fc .word 0x200024fc + 800f814: 2000231c .word 0x2000231c + 800f818: 20001fe0 .word 0x20001fe0 + 800f81c: 08018640 .word 0x08018640 + +0800f820 <ResetMacParameters>: +{ + 800f820: b5f0 push {r4, r5, r6, r7, lr} + 800f822: b08f sub sp, #60 ; 0x3c + if( isRejoin == false ) + 800f824: b918 cbnz r0, 800f82e <ResetMacParameters+0xe> + Nvm.MacGroup2.NetworkActivation = ACTIVATION_TYPE_NONE; + 800f826: 4b5b ldr r3, [pc, #364] ; (800f994 <ResetMacParameters+0x174>) + 800f828: 2200 movs r2, #0 + 800f82a: f883 212c strb.w r2, [r3, #300] ; 0x12c + Nvm.MacGroup1.AdrAckCounter = 0; + 800f82e: 4c59 ldr r4, [pc, #356] ; (800f994 <ResetMacParameters+0x174>) + 800f830: 2500 movs r5, #0 + 800f832: 62a5 str r5, [r4, #40] ; 0x28 + MacCtx.ChannelsNbTransCounter = 0; + 800f834: 4e58 ldr r6, [pc, #352] ; (800f998 <ResetMacParameters+0x178>) + 800f836: f886 540c strb.w r5, [r6, #1036] ; 0x40c + MacCtx.AckTimeoutRetries = 1; + 800f83a: 2701 movs r7, #1 + 800f83c: f886 740d strb.w r7, [r6, #1037] ; 0x40d + MacCtx.AckTimeoutRetriesCounter = 1; + 800f840: f886 740e strb.w r7, [r6, #1038] ; 0x40e + MacCtx.AckTimeoutRetry = false; + 800f844: f886 540f strb.w r5, [r6, #1039] ; 0x40f + Nvm.MacGroup2.MaxDCycle = 0; + 800f848: f884 511b strb.w r5, [r4, #283] ; 0x11b + Nvm.MacGroup2.AggregatedDCycle = 1; + 800f84c: f8a4 711e strh.w r7, [r4, #286] ; 0x11e + Nvm.MacGroup1.ChannelsTxPower = Nvm.MacGroup2.ChannelsTxPowerDefault; + 800f850: f994 30dc ldrsb.w r3, [r4, #220] ; 0xdc + 800f854: f884 3038 strb.w r3, [r4, #56] ; 0x38 + Nvm.MacGroup1.ChannelsDatarate = Nvm.MacGroup2.ChannelsDatarateDefault; + 800f858: f994 30dd ldrsb.w r3, [r4, #221] ; 0xdd + 800f85c: f884 3039 strb.w r3, [r4, #57] ; 0x39 + Nvm.MacGroup2.MacParams.Rx1DrOffset = Nvm.MacGroup2.MacParamsDefaults.Rx1DrOffset; + 800f860: f894 30b1 ldrb.w r3, [r4, #177] ; 0xb1 + 800f864: f884 3069 strb.w r3, [r4, #105] ; 0x69 + Nvm.MacGroup2.MacParams.Rx2Channel = Nvm.MacGroup2.MacParamsDefaults.Rx2Channel; + 800f868: f104 036c add.w r3, r4, #108 ; 0x6c + 800f86c: f104 02b4 add.w r2, r4, #180 ; 0xb4 + 800f870: e892 0003 ldmia.w r2, {r0, r1} + 800f874: e883 0003 stmia.w r3, {r0, r1} + Nvm.MacGroup2.MacParams.RxCChannel = Nvm.MacGroup2.MacParamsDefaults.RxCChannel; + 800f878: f104 0374 add.w r3, r4, #116 ; 0x74 + 800f87c: f104 02bc add.w r2, r4, #188 ; 0xbc + 800f880: e892 0003 ldmia.w r2, {r0, r1} + 800f884: e883 0003 stmia.w r3, {r0, r1} + Nvm.MacGroup2.MacParams.UplinkDwellTime = Nvm.MacGroup2.MacParamsDefaults.UplinkDwellTime; + 800f888: f894 30c4 ldrb.w r3, [r4, #196] ; 0xc4 + 800f88c: f884 307c strb.w r3, [r4, #124] ; 0x7c + Nvm.MacGroup2.MacParams.DownlinkDwellTime = Nvm.MacGroup2.MacParamsDefaults.DownlinkDwellTime; + 800f890: f894 30c5 ldrb.w r3, [r4, #197] ; 0xc5 + 800f894: f884 307d strb.w r3, [r4, #125] ; 0x7d + Nvm.MacGroup2.MacParams.MaxEirp = Nvm.MacGroup2.MacParamsDefaults.MaxEirp; + 800f898: f8d4 30c8 ldr.w r3, [r4, #200] ; 0xc8 + 800f89c: f8c4 3080 str.w r3, [r4, #128] ; 0x80 + Nvm.MacGroup2.MacParams.AntennaGain = Nvm.MacGroup2.MacParamsDefaults.AntennaGain; + 800f8a0: f8d4 30cc ldr.w r3, [r4, #204] ; 0xcc + 800f8a4: f8c4 3084 str.w r3, [r4, #132] ; 0x84 + Nvm.MacGroup2.MacParams.AdrAckLimit = Nvm.MacGroup2.MacParamsDefaults.AdrAckLimit; + 800f8a8: f8b4 30d0 ldrh.w r3, [r4, #208] ; 0xd0 + 800f8ac: f8a4 3088 strh.w r3, [r4, #136] ; 0x88 + Nvm.MacGroup2.MacParams.AdrAckDelay = Nvm.MacGroup2.MacParamsDefaults.AdrAckDelay; + 800f8b0: f8b4 30d2 ldrh.w r3, [r4, #210] ; 0xd2 + 800f8b4: f8a4 308a strh.w r3, [r4, #138] ; 0x8a + MacCtx.NodeAckRequested = false; + 800f8b8: f886 5410 strb.w r5, [r6, #1040] ; 0x410 + Nvm.MacGroup1.SrvAckRequested = false; + 800f8bc: f884 503a strb.w r5, [r4, #58] ; 0x3a + Nvm.MacGroup2.Rejoin0UplinksLimit = 0; + 800f8c0: f8c4 5130 str.w r5, [r4, #304] ; 0x130 + Nvm.MacGroup2.ForceRejoinMaxRetries = 0; + 800f8c4: f884 5134 strb.w r5, [r4, #308] ; 0x134 + Nvm.MacGroup2.ForceRejoinType = 0; + 800f8c8: f884 5135 strb.w r5, [r4, #309] ; 0x135 + Nvm.MacGroup2.Rejoin0CycleInSec = 0; + 800f8cc: f8c4 5138 str.w r5, [r4, #312] ; 0x138 + Nvm.MacGroup2.Rejoin1CycleInSec = 0; + 800f8d0: f8c4 513c str.w r5, [r4, #316] ; 0x13c + Nvm.MacGroup2.IsRejoin0RequestQueued = 0; + 800f8d4: f884 5141 strb.w r5, [r4, #321] ; 0x141 + Nvm.MacGroup2.IsRejoin1RequestQueued = 0; + 800f8d8: f884 5142 strb.w r5, [r4, #322] ; 0x142 + Nvm.MacGroup2.IsRejoin2RequestQueued = 0; + 800f8dc: f884 5143 strb.w r5, [r4, #323] ; 0x143 + params.Type = INIT_TYPE_RESET_TO_DEFAULT_CHANNELS; + 800f8e0: f88d 700c strb.w r7, [sp, #12] + params.NvmGroup1 = &Nvm.RegionGroup1; + 800f8e4: f504 7308 add.w r3, r4, #544 ; 0x220 + 800f8e8: 9301 str r3, [sp, #4] + params.NvmGroup2 = &Nvm.RegionGroup2; + 800f8ea: f504 732d add.w r3, r4, #692 ; 0x2b4 + 800f8ee: 9302 str r3, [sp, #8] + RegionInitDefaults( Nvm.MacGroup2.Region, ¶ms ); + 800f8f0: a901 add r1, sp, #4 + 800f8f2: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800f8f6: f002 fc59 bl 80121ac <RegionInitDefaults> + MacCtx.Channel = 0; + 800f8fa: f886 5411 strb.w r5, [r6, #1041] ; 0x411 + MacCtx.RxWindow2Config.Channel = MacCtx.Channel; + 800f8fe: f886 53cc strb.w r5, [r6, #972] ; 0x3cc + MacCtx.RxWindow2Config.Frequency = Nvm.MacGroup2.MacParams.Rx2Channel.Frequency; + 800f902: 6ee3 ldr r3, [r4, #108] ; 0x6c + 800f904: f8c6 33d0 str.w r3, [r6, #976] ; 0x3d0 + MacCtx.RxWindow2Config.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 800f908: f894 307d ldrb.w r3, [r4, #125] ; 0x7d + 800f90c: f886 33dc strb.w r3, [r6, #988] ; 0x3dc + MacCtx.RxWindow2Config.RepeaterSupport = Nvm.MacGroup2.MacParams.RepeaterSupport; + 800f910: f894 308c ldrb.w r3, [r4, #140] ; 0x8c + 800f914: f886 33dd strb.w r3, [r6, #989] ; 0x3dd + MacCtx.RxWindow2Config.RxContinuous = false; + 800f918: f886 53de strb.w r5, [r6, #990] ; 0x3de + MacCtx.RxWindow2Config.RxSlot = RX_SLOT_WIN_2; + 800f91c: f886 73df strb.w r7, [r6, #991] ; 0x3df + MacCtx.RxWindowCConfig = MacCtx.RxWindow2Config; + 800f920: f506 7478 add.w r4, r6, #992 ; 0x3e0 + 800f924: f506 7c73 add.w ip, r6, #972 ; 0x3cc + 800f928: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 800f92c: c40f stmia r4!, {r0, r1, r2, r3} + 800f92e: f8dc 3000 ldr.w r3, [ip] + 800f932: 6023 str r3, [r4, #0] + MacCtx.RxWindowCConfig.RxContinuous = true; + 800f934: f886 73f2 strb.w r7, [r6, #1010] ; 0x3f2 + MacCtx.RxWindowCConfig.RxSlot = RX_SLOT_WIN_CLASS_C; + 800f938: 2302 movs r3, #2 + 800f93a: f886 33f3 strb.w r3, [r6, #1011] ; 0x3f3 + classBCallbacks.GetTemperatureLevel = NULL; + 800f93e: 950c str r5, [sp, #48] ; 0x30 + classBCallbacks.MacProcessNotify = NULL; + 800f940: 950d str r5, [sp, #52] ; 0x34 + if( MacCtx.MacCallbacks != NULL ) + 800f942: f8d6 3348 ldr.w r3, [r6, #840] ; 0x348 + 800f946: b11b cbz r3, 800f950 <ResetMacParameters+0x130> + classBCallbacks.GetTemperatureLevel = MacCtx.MacCallbacks->GetTemperatureLevel; + 800f948: 685a ldr r2, [r3, #4] + 800f94a: 920c str r2, [sp, #48] ; 0x30 + classBCallbacks.MacProcessNotify = MacCtx.MacCallbacks->MacProcessNotify; + 800f94c: 695b ldr r3, [r3, #20] + 800f94e: 930d str r3, [sp, #52] ; 0x34 + classBParams.MlmeIndication = &MacCtx.MlmeIndication; + 800f950: 4b11 ldr r3, [pc, #68] ; (800f998 <ResetMacParameters+0x178>) + 800f952: f203 425c addw r2, r3, #1116 ; 0x45c + 800f956: 9204 str r2, [sp, #16] + classBParams.McpsIndication = &MacCtx.McpsIndication; + 800f958: f503 6283 add.w r2, r3, #1048 ; 0x418 + 800f95c: 9205 str r2, [sp, #20] + classBParams.MlmeConfirm = &MacCtx.MlmeConfirm; + 800f95e: f503 6289 add.w r2, r3, #1096 ; 0x448 + 800f962: 9206 str r2, [sp, #24] + classBParams.LoRaMacFlags = &MacCtx.MacFlags; + 800f964: f203 4381 addw r3, r3, #1153 ; 0x481 + 800f968: 9307 str r3, [sp, #28] + classBParams.LoRaMacDevAddr = &Nvm.MacGroup2.DevAddr; + 800f96a: 4a0a ldr r2, [pc, #40] ; (800f994 <ResetMacParameters+0x174>) + 800f96c: f102 03e4 add.w r3, r2, #228 ; 0xe4 + 800f970: 9308 str r3, [sp, #32] + classBParams.LoRaMacRegion = &Nvm.MacGroup2.Region; + 800f972: f102 0348 add.w r3, r2, #72 ; 0x48 + 800f976: 9309 str r3, [sp, #36] ; 0x24 + classBParams.LoRaMacParams = &Nvm.MacGroup2.MacParams; + 800f978: f102 034c add.w r3, r2, #76 ; 0x4c + 800f97c: 930a str r3, [sp, #40] ; 0x28 + classBParams.MulticastChannels = &Nvm.MacGroup2.MulticastChannelList[0]; + 800f97e: f102 03e8 add.w r3, r2, #232 ; 0xe8 + 800f982: 930b str r3, [sp, #44] ; 0x2c + LoRaMacClassBInit( &classBParams, &classBCallbacks, &Nvm.ClassB ); + 800f984: f502 62eb add.w r2, r2, #1880 ; 0x758 + 800f988: a90c add r1, sp, #48 ; 0x30 + 800f98a: a804 add r0, sp, #16 + 800f98c: f001 fbe6 bl 801115c <LoRaMacClassBInit> +} + 800f990: b00f add sp, #60 ; 0x3c + 800f992: bdf0 pop {r4, r5, r6, r7, pc} + 800f994: 20001870 .word 0x20001870 + 800f998: 20001fe4 .word 0x20001fe4 + +0800f99c <SwitchClass>: +{ + 800f99c: b570 push {r4, r5, r6, lr} + 800f99e: 4604 mov r4, r0 + switch( Nvm.MacGroup2.DeviceClass ) + 800f9a0: 4b44 ldr r3, [pc, #272] ; (800fab4 <SwitchClass+0x118>) + 800f9a2: f893 5118 ldrb.w r5, [r3, #280] ; 0x118 + 800f9a6: 2d01 cmp r5, #1 + 800f9a8: d06d beq.n 800fa86 <SwitchClass+0xea> + 800f9aa: 2d02 cmp r5, #2 + 800f9ac: d073 beq.n 800fa96 <SwitchClass+0xfa> + 800f9ae: b10d cbz r5, 800f9b4 <SwitchClass+0x18> + 800f9b0: 2003 movs r0, #3 +} + 800f9b2: bd70 pop {r4, r5, r6, pc} + if( deviceClass == CLASS_A ) + 800f9b4: bb50 cbnz r0, 800fa0c <SwitchClass+0x70> + Nvm.MacGroup2.MacParams.RxCChannel = Nvm.MacGroup2.MacParams.Rx2Channel; + 800f9b6: f103 0274 add.w r2, r3, #116 ; 0x74 + 800f9ba: 336c adds r3, #108 ; 0x6c + 800f9bc: e893 0003 ldmia.w r3, {r0, r1} + 800f9c0: e882 0003 stmia.w r2, {r0, r1} + status = LORAMAC_STATUS_OK; + 800f9c4: 4620 mov r0, r4 + if( deviceClass == CLASS_B ) + 800f9c6: 2c01 cmp r4, #1 + 800f9c8: d022 beq.n 800fa10 <SwitchClass+0x74> + if( deviceClass == CLASS_C ) + 800f9ca: 2c02 cmp r4, #2 + 800f9cc: d1f1 bne.n 800f9b2 <SwitchClass+0x16> + Nvm.MacGroup2.DeviceClass = deviceClass; + 800f9ce: 4b39 ldr r3, [pc, #228] ; (800fab4 <SwitchClass+0x118>) + 800f9d0: f883 4118 strb.w r4, [r3, #280] ; 0x118 + MacCtx.RxWindowCConfig = MacCtx.RxWindow2Config; + 800f9d4: 4e38 ldr r6, [pc, #224] ; (800fab8 <SwitchClass+0x11c>) + 800f9d6: f506 7478 add.w r4, r6, #992 ; 0x3e0 + 800f9da: f506 7c73 add.w ip, r6, #972 ; 0x3cc + 800f9de: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 800f9e2: c40f stmia r4!, {r0, r1, r2, r3} + 800f9e4: f8dc 3000 ldr.w r3, [ip] + 800f9e8: 6023 str r3, [r4, #0] + MacCtx.RxWindowCConfig.RxSlot = RX_SLOT_WIN_CLASS_C; + 800f9ea: 2302 movs r3, #2 + 800f9ec: f886 33f3 strb.w r3, [r6, #1011] ; 0x3f3 + for( int8_t i = 0; i < LORAMAC_MAX_MC_CTX; i++ ) + 800f9f0: 2300 movs r3, #0 + 800f9f2: 2b00 cmp r3, #0 + 800f9f4: dd15 ble.n 800fa22 <SwitchClass+0x86> + MacCtx.NodeAckRequested = false; + 800f9f6: 4b30 ldr r3, [pc, #192] ; (800fab8 <SwitchClass+0x11c>) + 800f9f8: 2200 movs r2, #0 + 800f9fa: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + Radio.Sleep( ); + 800f9fe: 4b2f ldr r3, [pc, #188] ; (800fabc <SwitchClass+0x120>) + 800fa00: 6adb ldr r3, [r3, #44] ; 0x2c + 800fa02: 4798 blx r3 + OpenContinuousRxCWindow( ); + 800fa04: f7ff fd0e bl 800f424 <OpenContinuousRxCWindow> + status = LORAMAC_STATUS_OK; + 800fa08: 4628 mov r0, r5 + 800fa0a: e7d2 b.n 800f9b2 <SwitchClass+0x16> + LoRaMacStatus_t status = LORAMAC_STATUS_PARAMETER_INVALID; + 800fa0c: 2003 movs r0, #3 + 800fa0e: e7da b.n 800f9c6 <SwitchClass+0x2a> + status = LoRaMacClassBSwitchClass( deviceClass ); + 800fa10: 4620 mov r0, r4 + 800fa12: f001 fbb9 bl 8011188 <LoRaMacClassBSwitchClass> + if( status == LORAMAC_STATUS_OK ) + 800fa16: 2800 cmp r0, #0 + 800fa18: d1d7 bne.n 800f9ca <SwitchClass+0x2e> + Nvm.MacGroup2.DeviceClass = deviceClass; + 800fa1a: 4b26 ldr r3, [pc, #152] ; (800fab4 <SwitchClass+0x118>) + 800fa1c: f883 4118 strb.w r4, [r3, #280] ; 0x118 + 800fa20: e7d3 b.n 800f9ca <SwitchClass+0x2e> + if( ( Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.IsEnabled == true ) && + 800fa22: eb03 0143 add.w r1, r3, r3, lsl #1 + 800fa26: 4a23 ldr r2, [pc, #140] ; (800fab4 <SwitchClass+0x118>) + 800fa28: eb02 1201 add.w r2, r2, r1, lsl #4 + 800fa2c: f892 20e9 ldrb.w r2, [r2, #233] ; 0xe9 + 800fa30: b132 cbz r2, 800fa40 <SwitchClass+0xa4> + ( Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.RxParams.Class == CLASS_C ) ) + 800fa32: 4a20 ldr r2, [pc, #128] ; (800fab4 <SwitchClass+0x118>) + 800fa34: eb02 1201 add.w r2, r2, r1, lsl #4 + 800fa38: f892 2100 ldrb.w r2, [r2, #256] ; 0x100 + if( ( Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.IsEnabled == true ) && + 800fa3c: 2a02 cmp r2, #2 + 800fa3e: d002 beq.n 800fa46 <SwitchClass+0xaa> + for( int8_t i = 0; i < LORAMAC_MAX_MC_CTX; i++ ) + 800fa40: 3301 adds r3, #1 + 800fa42: b25b sxtb r3, r3 + 800fa44: e7d5 b.n 800f9f2 <SwitchClass+0x56> + Nvm.MacGroup2.MacParams.RxCChannel.Frequency = Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.RxParams.Params.ClassC.Frequency; + 800fa46: 4a1b ldr r2, [pc, #108] ; (800fab4 <SwitchClass+0x118>) + 800fa48: eb02 1301 add.w r3, r2, r1, lsl #4 + 800fa4c: f8d3 1104 ldr.w r1, [r3, #260] ; 0x104 + 800fa50: 6751 str r1, [r2, #116] ; 0x74 + Nvm.MacGroup2.MacParams.RxCChannel.Datarate = Nvm.MacGroup2.MulticastChannelList[i].ChannelParams.RxParams.Params.ClassC.Datarate; + 800fa52: f893 3108 ldrb.w r3, [r3, #264] ; 0x108 + 800fa56: f882 3078 strb.w r3, [r2, #120] ; 0x78 + MacCtx.RxWindowCConfig.Channel = MacCtx.Channel; + 800fa5a: 4b17 ldr r3, [pc, #92] ; (800fab8 <SwitchClass+0x11c>) + 800fa5c: f893 0411 ldrb.w r0, [r3, #1041] ; 0x411 + 800fa60: f883 03e0 strb.w r0, [r3, #992] ; 0x3e0 + MacCtx.RxWindowCConfig.Frequency = Nvm.MacGroup2.MacParams.RxCChannel.Frequency; + 800fa64: f8c3 13e4 str.w r1, [r3, #996] ; 0x3e4 + MacCtx.RxWindowCConfig.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 800fa68: f892 107d ldrb.w r1, [r2, #125] ; 0x7d + 800fa6c: f883 13f0 strb.w r1, [r3, #1008] ; 0x3f0 + MacCtx.RxWindowCConfig.RepeaterSupport = Nvm.MacGroup2.MacParams.RepeaterSupport; + 800fa70: f892 208c ldrb.w r2, [r2, #140] ; 0x8c + 800fa74: f883 23f1 strb.w r2, [r3, #1009] ; 0x3f1 + MacCtx.RxWindowCConfig.RxSlot = RX_SLOT_WIN_CLASS_C_MULTICAST; + 800fa78: 2203 movs r2, #3 + 800fa7a: f883 23f3 strb.w r2, [r3, #1011] ; 0x3f3 + MacCtx.RxWindowCConfig.RxContinuous = true; + 800fa7e: 2201 movs r2, #1 + 800fa80: f883 23f2 strb.w r2, [r3, #1010] ; 0x3f2 + break; + 800fa84: e7b7 b.n 800f9f6 <SwitchClass+0x5a> + status = LoRaMacClassBSwitchClass( deviceClass ); + 800fa86: f001 fb7f bl 8011188 <LoRaMacClassBSwitchClass> + if( status == LORAMAC_STATUS_OK ) + 800fa8a: 2800 cmp r0, #0 + 800fa8c: d191 bne.n 800f9b2 <SwitchClass+0x16> + Nvm.MacGroup2.DeviceClass = deviceClass; + 800fa8e: 4b09 ldr r3, [pc, #36] ; (800fab4 <SwitchClass+0x118>) + 800fa90: f883 4118 strb.w r4, [r3, #280] ; 0x118 + 800fa94: e78d b.n 800f9b2 <SwitchClass+0x16> + if( deviceClass == CLASS_A ) + 800fa96: b958 cbnz r0, 800fab0 <SwitchClass+0x114> + MacCtx.RxSlot = RX_SLOT_NONE; + 800fa98: 4b07 ldr r3, [pc, #28] ; (800fab8 <SwitchClass+0x11c>) + 800fa9a: 2206 movs r2, #6 + 800fa9c: f883 2480 strb.w r2, [r3, #1152] ; 0x480 + Nvm.MacGroup2.DeviceClass = deviceClass; + 800faa0: 4b04 ldr r3, [pc, #16] ; (800fab4 <SwitchClass+0x118>) + 800faa2: f883 0118 strb.w r0, [r3, #280] ; 0x118 + Radio.Sleep( ); + 800faa6: 4b05 ldr r3, [pc, #20] ; (800fabc <SwitchClass+0x120>) + 800faa8: 6adb ldr r3, [r3, #44] ; 0x2c + 800faaa: 4798 blx r3 + status = LORAMAC_STATUS_OK; + 800faac: 4620 mov r0, r4 + 800faae: e780 b.n 800f9b2 <SwitchClass+0x16> + LoRaMacStatus_t status = LORAMAC_STATUS_PARAMETER_INVALID; + 800fab0: 2003 movs r0, #3 + 800fab2: e77e b.n 800f9b2 <SwitchClass+0x16> + 800fab4: 20001870 .word 0x20001870 + 800fab8: 20001fe4 .word 0x20001fe4 + 800fabc: 08018cb4 .word 0x08018cb4 + +0800fac0 <SendReJoinReq>: +{ + 800fac0: b538 push {r3, r4, r5, lr} + switch( joinReqType ) + 800fac2: 28ff cmp r0, #255 ; 0xff + 800fac4: d003 beq.n 800face <SendReJoinReq+0xe> + bool allowDelayedTx = true; + 800fac6: 2001 movs r0, #1 + status = ScheduleTx( allowDelayedTx ); + 800fac8: f7ff fb6a bl 800f1a0 <ScheduleTx> +} + 800facc: bd38 pop {r3, r4, r5, pc} + SwitchClass( CLASS_A ); + 800face: 2000 movs r0, #0 + 800fad0: f7ff ff64 bl 800f99c <SwitchClass> + MacCtx.TxMsg.Type = LORAMAC_MSG_TYPE_JOIN_REQUEST; + 800fad4: 4d0a ldr r5, [pc, #40] ; (800fb00 <SendReJoinReq+0x40>) + 800fad6: 2400 movs r4, #0 + 800fad8: f885 4104 strb.w r4, [r5, #260] ; 0x104 + MacCtx.TxMsg.Message.JoinReq.Buffer = MacCtx.PktBuffer; + 800fadc: 1cab adds r3, r5, #2 + 800fade: f8c5 3108 str.w r3, [r5, #264] ; 0x108 + MacCtx.TxMsg.Message.JoinReq.BufSize = LORAMAC_PHY_MAXPAYLOAD; + 800fae2: 23ff movs r3, #255 ; 0xff + 800fae4: f885 310c strb.w r3, [r5, #268] ; 0x10c + MacCtx.TxMsg.Message.JoinReq.MHDR.Value = macHdr.Value; + 800fae8: f885 410d strb.w r4, [r5, #269] ; 0x10d + SecureElementGetJoinEui( MacCtx.TxMsg.Message.JoinReq.JoinEUI ); + 800faec: f505 7087 add.w r0, r5, #270 ; 0x10e + 800faf0: f004 fc36 bl 8014360 <SecureElementGetJoinEui> + SecureElementGetDevEui( MacCtx.TxMsg.Message.JoinReq.DevEUI ); + 800faf4: f505 708b add.w r0, r5, #278 ; 0x116 + 800faf8: f004 fc14 bl 8014324 <SecureElementGetDevEui> + allowDelayedTx = false; + 800fafc: 4620 mov r0, r4 + break; + 800fafe: e7e3 b.n 800fac8 <SendReJoinReq+0x8> + 800fb00: 20001fe4 .word 0x20001fe4 + +0800fb04 <SetTxContinuousWave>: +{ + 800fb04: b510 push {r4, lr} + 800fb06: b084 sub sp, #16 + continuousWave.Channel = MacCtx.Channel; + 800fb08: 4c11 ldr r4, [pc, #68] ; (800fb50 <SetTxContinuousWave+0x4c>) + 800fb0a: f894 3411 ldrb.w r3, [r4, #1041] ; 0x411 + 800fb0e: f88d 3000 strb.w r3, [sp] + continuousWave.Datarate = Nvm.MacGroup1.ChannelsDatarate; + 800fb12: 4b10 ldr r3, [pc, #64] ; (800fb54 <SetTxContinuousWave+0x50>) + 800fb14: f993 2039 ldrsb.w r2, [r3, #57] ; 0x39 + 800fb18: f88d 2001 strb.w r2, [sp, #1] + continuousWave.TxPower = Nvm.MacGroup1.ChannelsTxPower; + 800fb1c: f993 2038 ldrsb.w r2, [r3, #56] ; 0x38 + 800fb20: f88d 2002 strb.w r2, [sp, #2] + continuousWave.MaxEirp = Nvm.MacGroup2.MacParams.MaxEirp; + 800fb24: f8d3 2080 ldr.w r2, [r3, #128] ; 0x80 + 800fb28: 9201 str r2, [sp, #4] + continuousWave.AntennaGain = Nvm.MacGroup2.MacParams.AntennaGain; + 800fb2a: f8d3 2084 ldr.w r2, [r3, #132] ; 0x84 + 800fb2e: 9202 str r2, [sp, #8] + continuousWave.Timeout = timeout; + 800fb30: f8ad 000c strh.w r0, [sp, #12] + RegionSetContinuousWave( Nvm.MacGroup2.Region, &continuousWave ); + 800fb34: 4669 mov r1, sp + 800fb36: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800fb3a: f002 fbbe bl 80122ba <RegionSetContinuousWave> + MacCtx.MacState |= LORAMAC_TX_RUNNING; + 800fb3e: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800fb42: f043 0302 orr.w r3, r3, #2 + 800fb46: f8c4 3340 str.w r3, [r4, #832] ; 0x340 +} + 800fb4a: 2000 movs r0, #0 + 800fb4c: b004 add sp, #16 + 800fb4e: bd10 pop {r4, pc} + 800fb50: 20001fe4 .word 0x20001fe4 + 800fb54: 20001870 .word 0x20001870 + +0800fb58 <PrepareFrame>: +{ + 800fb58: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 800fb5c: b083 sub sp, #12 + 800fb5e: 4605 mov r5, r0 + 800fb60: 460e mov r6, r1 + 800fb62: 4617 mov r7, r2 + 800fb64: f8bd 4028 ldrh.w r4, [sp, #40] ; 0x28 + MacCtx.PktBufferLen = 0; + 800fb68: 4959 ldr r1, [pc, #356] ; (800fcd0 <PrepareFrame+0x178>) + 800fb6a: 2200 movs r2, #0 + 800fb6c: 800a strh r2, [r1, #0] + MacCtx.NodeAckRequested = false; + 800fb6e: f881 2410 strb.w r2, [r1, #1040] ; 0x410 + uint32_t fCntUp = 0; + 800fb72: 9201 str r2, [sp, #4] + size_t macCmdsSize = 0; + 800fb74: 9200 str r2, [sp, #0] + if( fBuffer == NULL ) + 800fb76: 4698 mov r8, r3 + 800fb78: b1cb cbz r3, 800fbae <PrepareFrame+0x56> + memcpy1( MacCtx.AppData, ( uint8_t* ) fBuffer, fBufferSize ); + 800fb7a: f8df 9154 ldr.w r9, [pc, #340] ; 800fcd0 <PrepareFrame+0x178> + 800fb7e: 4622 mov r2, r4 + 800fb80: 4641 mov r1, r8 + 800fb82: f509 709c add.w r0, r9, #312 ; 0x138 + 800fb86: f004 fd08 bl 801459a <memcpy1> + MacCtx.AppDataSize = fBufferSize; + 800fb8a: b2e0 uxtb r0, r4 + 800fb8c: f889 0237 strb.w r0, [r9, #567] ; 0x237 + MacCtx.PktBuffer[0] = macHdr->Value; + 800fb90: 782b ldrb r3, [r5, #0] + 800fb92: f889 3002 strb.w r3, [r9, #2] + switch( macHdr->Bits.MType ) + 800fb96: 782b ldrb r3, [r5, #0] + 800fb98: 095b lsrs r3, r3, #5 + 800fb9a: 2b04 cmp r3, #4 + 800fb9c: d009 beq.n 800fbb2 <PrepareFrame+0x5a> + 800fb9e: 2b07 cmp r3, #7 + 800fba0: d079 beq.n 800fc96 <PrepareFrame+0x13e> + 800fba2: 2b02 cmp r3, #2 + 800fba4: d009 beq.n 800fbba <PrepareFrame+0x62> + 800fba6: 2002 movs r0, #2 +} + 800fba8: b003 add sp, #12 + 800fbaa: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + fBufferSize = 0; + 800fbae: 4614 mov r4, r2 + 800fbb0: e7e3 b.n 800fb7a <PrepareFrame+0x22> + MacCtx.NodeAckRequested = true; + 800fbb2: 4b47 ldr r3, [pc, #284] ; (800fcd0 <PrepareFrame+0x178>) + 800fbb4: 2201 movs r2, #1 + 800fbb6: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + MacCtx.TxMsg.Type = LORAMAC_MSG_TYPE_DATA; + 800fbba: 4b45 ldr r3, [pc, #276] ; (800fcd0 <PrepareFrame+0x178>) + 800fbbc: 2204 movs r2, #4 + 800fbbe: f883 2104 strb.w r2, [r3, #260] ; 0x104 + MacCtx.TxMsg.Message.Data.Buffer = MacCtx.PktBuffer; + 800fbc2: 1c9a adds r2, r3, #2 + 800fbc4: f8c3 2108 str.w r2, [r3, #264] ; 0x108 + MacCtx.TxMsg.Message.Data.BufSize = LORAMAC_PHY_MAXPAYLOAD; + 800fbc8: 22ff movs r2, #255 ; 0xff + 800fbca: f883 210c strb.w r2, [r3, #268] ; 0x10c + MacCtx.TxMsg.Message.Data.MHDR.Value = macHdr->Value; + 800fbce: 782a ldrb r2, [r5, #0] + 800fbd0: f883 210d strb.w r2, [r3, #269] ; 0x10d + MacCtx.TxMsg.Message.Data.FPort = fPort; + 800fbd4: f883 7128 strb.w r7, [r3, #296] ; 0x128 + MacCtx.TxMsg.Message.Data.FHDR.DevAddr = Nvm.MacGroup2.DevAddr; + 800fbd8: 4a3e ldr r2, [pc, #248] ; (800fcd4 <PrepareFrame+0x17c>) + 800fbda: f8d2 20e4 ldr.w r2, [r2, #228] ; 0xe4 + 800fbde: f8c3 2110 str.w r2, [r3, #272] ; 0x110 + MacCtx.TxMsg.Message.Data.FHDR.FCtrl.Value = fCtrl->Value; + 800fbe2: 7832 ldrb r2, [r6, #0] + 800fbe4: f883 2114 strb.w r2, [r3, #276] ; 0x114 + MacCtx.TxMsg.Message.Data.FRMPayloadSize = MacCtx.AppDataSize; + 800fbe8: f883 0130 strb.w r0, [r3, #304] ; 0x130 + MacCtx.TxMsg.Message.Data.FRMPayload = MacCtx.AppData; + 800fbec: f503 729c add.w r2, r3, #312 ; 0x138 + 800fbf0: f8c3 212c str.w r2, [r3, #300] ; 0x12c + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoGetFCntUp( &fCntUp ) ) + 800fbf4: a801 add r0, sp, #4 + 800fbf6: f001 ff51 bl 8011a9c <LoRaMacCryptoGetFCntUp> + 800fbfa: 2800 cmp r0, #0 + 800fbfc: d15c bne.n 800fcb8 <PrepareFrame+0x160> + MacCtx.TxMsg.Message.Data.FHDR.FCnt = ( uint16_t )fCntUp; + 800fbfe: 9a01 ldr r2, [sp, #4] + 800fc00: 4b33 ldr r3, [pc, #204] ; (800fcd0 <PrepareFrame+0x178>) + 800fc02: f8a3 2116 strh.w r2, [r3, #278] ; 0x116 + MacCtx.McpsConfirm.NbRetries = 0; + 800fc06: 2100 movs r1, #0 + 800fc08: f883 1439 strb.w r1, [r3, #1081] ; 0x439 + MacCtx.McpsConfirm.AckReceived = false; + 800fc0c: f883 1438 strb.w r1, [r3, #1080] ; 0x438 + MacCtx.McpsConfirm.UpLinkCounter = fCntUp; + 800fc10: f8c3 2440 str.w r2, [r3, #1088] ; 0x440 + if( LoRaMacCommandsGetSizeSerializedCmds( &macCmdsSize ) != LORAMAC_COMMANDS_SUCCESS ) + 800fc14: 4668 mov r0, sp + 800fc16: f001 fbe9 bl 80113ec <LoRaMacCommandsGetSizeSerializedCmds> + 800fc1a: 2800 cmp r0, #0 + 800fc1c: d14e bne.n 800fcbc <PrepareFrame+0x164> + if( macCmdsSize > 0 ) + 800fc1e: 9b00 ldr r3, [sp, #0] + 800fc20: 2b00 cmp r3, #0 + 800fc22: d0c1 beq.n 800fba8 <PrepareFrame+0x50> + availableSize = GetMaxAppPayloadWithoutFOptsLength( Nvm.MacGroup1.ChannelsDatarate ); + 800fc24: 4b2b ldr r3, [pc, #172] ; (800fcd4 <PrepareFrame+0x17c>) + 800fc26: f993 0039 ldrsb.w r0, [r3, #57] ; 0x39 + 800fc2a: f7fe f8d7 bl 800dddc <GetMaxAppPayloadWithoutFOptsLength> + if( ( MacCtx.AppDataSize > 0 ) && ( macCmdsSize <= LORA_MAC_COMMAND_MAX_FOPTS_LENGTH ) ) + 800fc2e: 4b28 ldr r3, [pc, #160] ; (800fcd0 <PrepareFrame+0x178>) + 800fc30: f893 3237 ldrb.w r3, [r3, #567] ; 0x237 + 800fc34: b113 cbz r3, 800fc3c <PrepareFrame+0xe4> + 800fc36: 9a00 ldr r2, [sp, #0] + 800fc38: 2a0f cmp r2, #15 + 800fc3a: d915 bls.n 800fc68 <PrepareFrame+0x110> + else if( ( MacCtx.AppDataSize > 0 ) && ( macCmdsSize > LORA_MAC_COMMAND_MAX_FOPTS_LENGTH ) ) + 800fc3c: b113 cbz r3, 800fc44 <PrepareFrame+0xec> + 800fc3e: 9b00 ldr r3, [sp, #0] + 800fc40: 2b0f cmp r3, #15 + 800fc42: d821 bhi.n 800fc88 <PrepareFrame+0x130> + if( LoRaMacCommandsSerializeCmds( availableSize, &macCmdsSize, MacCtx.MacCommandsBuffer ) != LORAMAC_COMMANDS_SUCCESS ) + 800fc44: 4a24 ldr r2, [pc, #144] ; (800fcd8 <PrepareFrame+0x180>) + 800fc46: 4669 mov r1, sp + 800fc48: f001 fbdc bl 8011404 <LoRaMacCommandsSerializeCmds> + 800fc4c: 2800 cmp r0, #0 + 800fc4e: d13b bne.n 800fcc8 <PrepareFrame+0x170> + MacCtx.TxMsg.Message.Data.FPort = 0; + 800fc50: 4b1f ldr r3, [pc, #124] ; (800fcd0 <PrepareFrame+0x178>) + 800fc52: 2200 movs r2, #0 + 800fc54: f883 2128 strb.w r2, [r3, #296] ; 0x128 + MacCtx.TxMsg.Message.Data.FRMPayload = MacCtx.MacCommandsBuffer; + 800fc58: f503 6291 add.w r2, r3, #1160 ; 0x488 + 800fc5c: f8c3 212c str.w r2, [r3, #300] ; 0x12c + MacCtx.TxMsg.Message.Data.FRMPayloadSize = macCmdsSize; + 800fc60: 9a00 ldr r2, [sp, #0] + 800fc62: f883 2130 strb.w r2, [r3, #304] ; 0x130 + 800fc66: e79f b.n 800fba8 <PrepareFrame+0x50> + if( LoRaMacCommandsSerializeCmds( LORA_MAC_COMMAND_MAX_FOPTS_LENGTH, &macCmdsSize, MacCtx.TxMsg.Message.Data.FHDR.FOpts ) != LORAMAC_COMMANDS_SUCCESS ) + 800fc68: 4a1c ldr r2, [pc, #112] ; (800fcdc <PrepareFrame+0x184>) + 800fc6a: 4669 mov r1, sp + 800fc6c: 200f movs r0, #15 + 800fc6e: f001 fbc9 bl 8011404 <LoRaMacCommandsSerializeCmds> + 800fc72: bb28 cbnz r0, 800fcc0 <PrepareFrame+0x168> + fCtrl->Bits.FOptsLen = macCmdsSize; + 800fc74: 7833 ldrb r3, [r6, #0] + 800fc76: 9a00 ldr r2, [sp, #0] + 800fc78: f362 0303 bfi r3, r2, #0, #4 + 800fc7c: 7033 strb r3, [r6, #0] + MacCtx.TxMsg.Message.Data.FHDR.FCtrl.Value = fCtrl->Value; + 800fc7e: b2da uxtb r2, r3 + 800fc80: 4b13 ldr r3, [pc, #76] ; (800fcd0 <PrepareFrame+0x178>) + 800fc82: f883 2114 strb.w r2, [r3, #276] ; 0x114 + 800fc86: e78f b.n 800fba8 <PrepareFrame+0x50> + if( LoRaMacCommandsSerializeCmds( availableSize, &macCmdsSize, MacCtx.MacCommandsBuffer ) != LORAMAC_COMMANDS_SUCCESS ) + 800fc88: 4a13 ldr r2, [pc, #76] ; (800fcd8 <PrepareFrame+0x180>) + 800fc8a: 4669 mov r1, sp + 800fc8c: f001 fbba bl 8011404 <LoRaMacCommandsSerializeCmds> + 800fc90: b1c0 cbz r0, 800fcc4 <PrepareFrame+0x16c> + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + 800fc92: 2013 movs r0, #19 + 800fc94: e788 b.n 800fba8 <PrepareFrame+0x50> + if( ( fBuffer != NULL ) && ( MacCtx.AppDataSize > 0 ) ) + 800fc96: f1b8 0f00 cmp.w r8, #0 + 800fc9a: d017 beq.n 800fccc <PrepareFrame+0x174> + 800fc9c: 2800 cmp r0, #0 + 800fc9e: d083 beq.n 800fba8 <PrepareFrame+0x50> + memcpy1( MacCtx.PktBuffer + LORAMAC_MHDR_FIELD_SIZE, ( uint8_t* ) fBuffer, MacCtx.AppDataSize ); + 800fca0: 4c0b ldr r4, [pc, #44] ; (800fcd0 <PrepareFrame+0x178>) + 800fca2: b282 uxth r2, r0 + 800fca4: 4641 mov r1, r8 + 800fca6: 1ce0 adds r0, r4, #3 + 800fca8: f004 fc77 bl 801459a <memcpy1> + MacCtx.PktBufferLen = LORAMAC_MHDR_FIELD_SIZE + MacCtx.AppDataSize; + 800fcac: f894 3237 ldrb.w r3, [r4, #567] ; 0x237 + 800fcb0: 3301 adds r3, #1 + 800fcb2: 8023 strh r3, [r4, #0] + return LORAMAC_STATUS_OK; + 800fcb4: 2000 movs r0, #0 + 800fcb6: e777 b.n 800fba8 <PrepareFrame+0x50> + return LORAMAC_STATUS_FCNT_HANDLER_ERROR; + 800fcb8: 2012 movs r0, #18 + 800fcba: e775 b.n 800fba8 <PrepareFrame+0x50> + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + 800fcbc: 2013 movs r0, #19 + 800fcbe: e773 b.n 800fba8 <PrepareFrame+0x50> + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + 800fcc0: 2013 movs r0, #19 + 800fcc2: e771 b.n 800fba8 <PrepareFrame+0x50> + return LORAMAC_STATUS_SKIPPED_APP_DATA; + 800fcc4: 200a movs r0, #10 + 800fcc6: e76f b.n 800fba8 <PrepareFrame+0x50> + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + 800fcc8: 2013 movs r0, #19 + 800fcca: e76d b.n 800fba8 <PrepareFrame+0x50> + return LORAMAC_STATUS_OK; + 800fccc: 2000 movs r0, #0 + 800fcce: e76b b.n 800fba8 <PrepareFrame+0x50> + 800fcd0: 20001fe4 .word 0x20001fe4 + 800fcd4: 20001870 .word 0x20001870 + 800fcd8: 2000246c .word 0x2000246c + 800fcdc: 200020fc .word 0x200020fc + +0800fce0 <Send>: +{ + 800fce0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 800fce4: b08a sub sp, #40 ; 0x28 + 800fce6: 4617 mov r7, r2 + 800fce8: 4698 mov r8, r3 + int8_t datarate = Nvm.MacGroup1.ChannelsDatarate; + 800fcea: 4c42 ldr r4, [pc, #264] ; (800fdf4 <Send+0x114>) + 800fcec: f994 a039 ldrsb.w sl, [r4, #57] ; 0x39 + int8_t txPower = Nvm.MacGroup1.ChannelsTxPower; + 800fcf0: f994 9038 ldrsb.w r9, [r4, #56] ; 0x38 + uint32_t adrAckCounter = Nvm.MacGroup1.AdrAckCounter; + 800fcf4: 6aa2 ldr r2, [r4, #40] ; 0x28 + 800fcf6: 9208 str r2, [sp, #32] + if( Nvm.MacGroup2.NetworkActivation == ACTIVATION_TYPE_NONE ) + 800fcf8: f894 312c ldrb.w r3, [r4, #300] ; 0x12c + 800fcfc: 2b00 cmp r3, #0 + 800fcfe: d077 beq.n 800fdf0 <Send+0x110> + 800fd00: 4605 mov r5, r0 + 800fd02: 460e mov r6, r1 + if( Nvm.MacGroup2.MaxDCycle == 0 ) + 800fd04: f894 311b ldrb.w r3, [r4, #283] ; 0x11b + 800fd08: b90b cbnz r3, 800fd0e <Send+0x2e> + Nvm.MacGroup1.AggregatedTimeOff = 0; + 800fd0a: 2100 movs r1, #0 + 800fd0c: 6321 str r1, [r4, #48] ; 0x30 + fCtrl.Value = 0; + 800fd0e: 2300 movs r3, #0 + 800fd10: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + fCtrl.Bits.Adr = Nvm.MacGroup2.AdrCtrlOn; + 800fd14: 4837 ldr r0, [pc, #220] ; (800fdf4 <Send+0x114>) + 800fd16: f890 111a ldrb.w r1, [r0, #282] ; 0x11a + 800fd1a: f361 13c7 bfi r3, r1, #7, #1 + 800fd1e: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + if( Nvm.MacGroup2.DeviceClass == CLASS_B ) + 800fd22: f890 3118 ldrb.w r3, [r0, #280] ; 0x118 + 800fd26: 2b01 cmp r3, #1 + 800fd28: d04f beq.n 800fdca <Send+0xea> + if( Nvm.MacGroup1.SrvAckRequested == true ) + 800fd2a: 4b32 ldr r3, [pc, #200] ; (800fdf4 <Send+0x114>) + 800fd2c: f893 303a ldrb.w r3, [r3, #58] ; 0x3a + 800fd30: b12b cbz r3, 800fd3e <Send+0x5e> + fCtrl.Bits.Ack = 1; + 800fd32: f89d 3024 ldrb.w r3, [sp, #36] ; 0x24 + 800fd36: f043 0320 orr.w r3, r3, #32 + 800fd3a: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + adrNext.UpdateChanMask = true; + 800fd3e: 2301 movs r3, #1 + 800fd40: f88d 3010 strb.w r3, [sp, #16] + adrNext.AdrEnabled = fCtrl.Bits.Adr; + 800fd44: f88d 1011 strb.w r1, [sp, #17] + adrNext.AdrAckCounter = Nvm.MacGroup1.AdrAckCounter; + 800fd48: 9205 str r2, [sp, #20] + adrNext.AdrAckLimit = Nvm.MacGroup2.MacParams.AdrAckLimit; + 800fd4a: 492a ldr r1, [pc, #168] ; (800fdf4 <Send+0x114>) + 800fd4c: f8b1 3088 ldrh.w r3, [r1, #136] ; 0x88 + 800fd50: f8ad 3018 strh.w r3, [sp, #24] + adrNext.AdrAckDelay = Nvm.MacGroup2.MacParams.AdrAckDelay; + 800fd54: f8b1 308a ldrh.w r3, [r1, #138] ; 0x8a + 800fd58: f8ad 301a strh.w r3, [sp, #26] + adrNext.Datarate = Nvm.MacGroup1.ChannelsDatarate; + 800fd5c: f88d a01c strb.w sl, [sp, #28] + adrNext.TxPower = Nvm.MacGroup1.ChannelsTxPower; + 800fd60: f88d 901d strb.w r9, [sp, #29] + adrNext.UplinkDwellTime = Nvm.MacGroup2.MacParams.UplinkDwellTime; + 800fd64: f891 307c ldrb.w r3, [r1, #124] ; 0x7c + 800fd68: f88d 301e strb.w r3, [sp, #30] + adrNext.Region = Nvm.MacGroup2.Region; + 800fd6c: f891 3048 ldrb.w r3, [r1, #72] ; 0x48 + 800fd70: f88d 301f strb.w r3, [sp, #31] + adrNext.Version = Nvm.MacGroup2.Version; + 800fd74: f8d1 3128 ldr.w r3, [r1, #296] ; 0x128 + 800fd78: 9303 str r3, [sp, #12] + fCtrl.Bits.AdrAckReq = LoRaMacAdrCalcNext( &adrNext, &Nvm.MacGroup1.ChannelsDatarate, + 800fd7a: ab08 add r3, sp, #32 + 800fd7c: f101 0238 add.w r2, r1, #56 ; 0x38 + 800fd80: 3139 adds r1, #57 ; 0x39 + 800fd82: a803 add r0, sp, #12 + 800fd84: f001 f9e2 bl 801114c <LoRaMacAdrCalcNext> + 800fd88: f89d 3024 ldrb.w r3, [sp, #36] ; 0x24 + 800fd8c: f360 1386 bfi r3, r0, #6, #1 + 800fd90: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + status = PrepareFrame( macHdr, &fCtrl, fPort, fBuffer, fBufferSize ); + 800fd94: f8cd 8000 str.w r8, [sp] + 800fd98: 463b mov r3, r7 + 800fd9a: 4632 mov r2, r6 + 800fd9c: a909 add r1, sp, #36 ; 0x24 + 800fd9e: 4628 mov r0, r5 + 800fda0: f7ff feda bl 800fb58 <PrepareFrame> + if( ( status == LORAMAC_STATUS_OK ) || ( status == LORAMAC_STATUS_SKIPPED_APP_DATA ) ) + 800fda4: 4604 mov r4, r0 + 800fda6: b108 cbz r0, 800fdac <Send+0xcc> + 800fda8: 280a cmp r0, #10 + 800fdaa: d104 bne.n 800fdb6 <Send+0xd6> + status = ScheduleTx( allowDelayedTx ); + 800fdac: f89d 0048 ldrb.w r0, [sp, #72] ; 0x48 + 800fdb0: f7ff f9f6 bl 800f1a0 <ScheduleTx> + 800fdb4: 4604 mov r4, r0 + if( status != LORAMAC_STATUS_OK ) + 800fdb6: b17c cbz r4, 800fdd8 <Send+0xf8> + Nvm.MacGroup1.ChannelsDatarate = datarate; + 800fdb8: 4b0e ldr r3, [pc, #56] ; (800fdf4 <Send+0x114>) + 800fdba: f883 a039 strb.w sl, [r3, #57] ; 0x39 + Nvm.MacGroup1.ChannelsTxPower = txPower; + 800fdbe: f883 9038 strb.w r9, [r3, #56] ; 0x38 +} + 800fdc2: 4620 mov r0, r4 + 800fdc4: b00a add sp, #40 ; 0x28 + 800fdc6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + fCtrl.Bits.FPending = 1; + 800fdca: f89d 3024 ldrb.w r3, [sp, #36] ; 0x24 + 800fdce: f043 0310 orr.w r3, r3, #16 + 800fdd2: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + 800fdd6: e7a8 b.n 800fd2a <Send+0x4a> + Nvm.MacGroup1.SrvAckRequested = false; + 800fdd8: 4b06 ldr r3, [pc, #24] ; (800fdf4 <Send+0x114>) + 800fdda: 2200 movs r2, #0 + 800fddc: f883 203a strb.w r2, [r3, #58] ; 0x3a + Nvm.MacGroup1.AdrAckCounter = adrAckCounter; + 800fde0: 9a08 ldr r2, [sp, #32] + 800fde2: 629a str r2, [r3, #40] ; 0x28 + if( LoRaMacCommandsRemoveNoneStickyCmds( ) != LORAMAC_COMMANDS_SUCCESS ) + 800fde4: f001 fad0 bl 8011388 <LoRaMacCommandsRemoveNoneStickyCmds> + 800fde8: 2800 cmp r0, #0 + 800fdea: d0ea beq.n 800fdc2 <Send+0xe2> + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + 800fdec: 2413 movs r4, #19 + 800fdee: e7e8 b.n 800fdc2 <Send+0xe2> + return LORAMAC_STATUS_NO_NETWORK_JOINED; + 800fdf0: 2407 movs r4, #7 + 800fdf2: e7e6 b.n 800fdc2 <Send+0xe2> + 800fdf4: 20001870 .word 0x20001870 + +0800fdf8 <LoRaMacIsBusy>: + if( MacCtx.MacState == LORAMAC_STOPPED ) + 800fdf8: 4b09 ldr r3, [pc, #36] ; (800fe20 <LoRaMacIsBusy+0x28>) + 800fdfa: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 800fdfe: 2b01 cmp r3, #1 + 800fe00: d007 beq.n 800fe12 <LoRaMacIsBusy+0x1a> + if( ( MacCtx.MacState == LORAMAC_IDLE ) && + 800fe02: b943 cbnz r3, 800fe16 <LoRaMacIsBusy+0x1e> + ( MacCtx.AllowRequests == LORAMAC_REQUEST_HANDLING_ON ) ) + 800fe04: 4b06 ldr r3, [pc, #24] ; (800fe20 <LoRaMacIsBusy+0x28>) + 800fe06: f893 3482 ldrb.w r3, [r3, #1154] ; 0x482 + if( ( MacCtx.MacState == LORAMAC_IDLE ) && + 800fe0a: 2b01 cmp r3, #1 + 800fe0c: d005 beq.n 800fe1a <LoRaMacIsBusy+0x22> + return true; + 800fe0e: 2001 movs r0, #1 + 800fe10: 4770 bx lr + return false; + 800fe12: 2000 movs r0, #0 + 800fe14: 4770 bx lr + return true; + 800fe16: 2001 movs r0, #1 + 800fe18: 4770 bx lr + return false; + 800fe1a: 2000 movs r0, #0 +} + 800fe1c: 4770 bx lr + 800fe1e: bf00 nop + 800fe20: 20001fe4 .word 0x20001fe4 + +0800fe24 <LoRaMacIsStopped>: + if( MacCtx.MacState == LORAMAC_STOPPED ) + 800fe24: 4b04 ldr r3, [pc, #16] ; (800fe38 <LoRaMacIsStopped+0x14>) + 800fe26: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 800fe2a: 2b01 cmp r3, #1 + 800fe2c: d001 beq.n 800fe32 <LoRaMacIsStopped+0xe> + return false; + 800fe2e: 2000 movs r0, #0 + 800fe30: 4770 bx lr + return true; + 800fe32: 2001 movs r0, #1 +} + 800fe34: 4770 bx lr + 800fe36: bf00 nop + 800fe38: 20001fe4 .word 0x20001fe4 + +0800fe3c <LoRaMacProcess>: +{ + 800fe3c: b508 push {r3, lr} + LoRaMacHandleIrqEvents( ); + 800fe3e: f7fe ffe1 bl 800ee04 <LoRaMacHandleIrqEvents> + LoRaMacClassBProcess( ); + 800fe42: f001 f9b1 bl 80111a8 <LoRaMacClassBProcess> + if( MacCtx.MacFlags.Bits.MacDone == 1 ) + 800fe46: 4b1f ldr r3, [pc, #124] ; (800fec4 <LoRaMacProcess+0x88>) + 800fe48: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800fe4c: f013 0f10 tst.w r3, #16 + 800fe50: d10d bne.n 800fe6e <LoRaMacProcess+0x32> + LoRaMacHandleIndicationEvents( ); + 800fe52: f7fd fe71 bl 800db38 <LoRaMacHandleIndicationEvents> + if( MacCtx.RxSlot == RX_SLOT_WIN_CLASS_C ) + 800fe56: 4b1b ldr r3, [pc, #108] ; (800fec4 <LoRaMacProcess+0x88>) + 800fe58: f893 3480 ldrb.w r3, [r3, #1152] ; 0x480 + 800fe5c: 2b02 cmp r3, #2 + 800fe5e: d022 beq.n 800fea6 <LoRaMacProcess+0x6a> + if( MacCtx.MacFlags.Bits.NvmHandle == 1 ) + 800fe60: 4b18 ldr r3, [pc, #96] ; (800fec4 <LoRaMacProcess+0x88>) + 800fe62: f893 3481 ldrb.w r3, [r3, #1153] ; 0x481 + 800fe66: f013 0f20 tst.w r3, #32 + 800fe6a: d11f bne.n 800feac <LoRaMacProcess+0x70> +} + 800fe6c: bd08 pop {r3, pc} + LoRaMacEnableRequests( LORAMAC_REQUEST_HANDLING_OFF ); + 800fe6e: 2000 movs r0, #0 + 800fe70: f7fd fe5c bl 800db2c <LoRaMacEnableRequests> + LoRaMacCheckForRxAbort( ); + 800fe74: f7fd fe8e bl 800db94 <LoRaMacCheckForRxAbort> + if( IsRequestPending( ) > 0 ) + 800fe78: f7fd ff78 bl 800dd6c <IsRequestPending> + 800fe7c: b110 cbz r0, 800fe84 <LoRaMacProcess+0x48> + noTx |= LoRaMacCheckForBeaconAcquisition( ); + 800fe7e: f7fe f8ab bl 800dfd8 <LoRaMacCheckForBeaconAcquisition> + if( noTx == 0x00 ) + 800fe82: b918 cbnz r0, 800fe8c <LoRaMacProcess+0x50> + LoRaMacHandleMlmeRequest( ); + 800fe84: f7fe ffec bl 800ee60 <LoRaMacHandleMlmeRequest> + LoRaMacHandleMcpsRequest( ); + 800fe88: f7ff fa36 bl 800f2f8 <LoRaMacHandleMcpsRequest> + LoRaMacHandleRequestEvents( ); + 800fe8c: f7ff fa80 bl 800f390 <LoRaMacHandleRequestEvents> + LoRaMacEnableRequests( LORAMAC_REQUEST_HANDLING_ON ); + 800fe90: 2001 movs r0, #1 + 800fe92: f7fd fe4b bl 800db2c <LoRaMacEnableRequests> + MacCtx.MacFlags.Bits.NvmHandle = 1; + 800fe96: 4a0b ldr r2, [pc, #44] ; (800fec4 <LoRaMacProcess+0x88>) + 800fe98: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 800fe9c: f043 0320 orr.w r3, r3, #32 + 800fea0: f882 3481 strb.w r3, [r2, #1153] ; 0x481 + 800fea4: e7d5 b.n 800fe52 <LoRaMacProcess+0x16> + OpenContinuousRxCWindow( ); + 800fea6: f7ff fabd bl 800f424 <OpenContinuousRxCWindow> + 800feaa: e7d9 b.n 800fe60 <LoRaMacProcess+0x24> + MacCtx.MacFlags.Bits.NvmHandle = 0; + 800feac: 4b05 ldr r3, [pc, #20] ; (800fec4 <LoRaMacProcess+0x88>) + 800feae: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 800feb2: f36f 1245 bfc r2, #5, #1 + 800feb6: f883 2481 strb.w r2, [r3, #1153] ; 0x481 + LoRaMacHandleNvm( &Nvm ); + 800feba: 4803 ldr r0, [pc, #12] ; (800fec8 <LoRaMacProcess+0x8c>) + 800febc: f7ff fb56 bl 800f56c <LoRaMacHandleNvm> +} + 800fec0: e7d4 b.n 800fe6c <LoRaMacProcess+0x30> + 800fec2: bf00 nop + 800fec4: 20001fe4 .word 0x20001fe4 + 800fec8: 20001870 .word 0x20001870 + +0800fecc <LoRaMacInitialization>: + +LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t* primitives, LoRaMacCallback_t* callbacks, LoRaMacRegion_t region ) +{ + 800fecc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800fed0: b08b sub sp, #44 ; 0x2c + GetPhyParams_t getPhy; + PhyParam_t phyParam; + + if( ( primitives == NULL ) || + 800fed2: 2800 cmp r0, #0 + 800fed4: f000 81a0 beq.w 8010218 <LoRaMacInitialization+0x34c> + 800fed8: 4688 mov r8, r1 + 800feda: 4691 mov r9, r2 + 800fedc: 4607 mov r7, r0 + 800fede: 2900 cmp r1, #0 + 800fee0: f000 819c beq.w 801021c <LoRaMacInitialization+0x350> + ( callbacks == NULL ) ) + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + if( ( primitives->MacMcpsConfirm == NULL ) || + 800fee4: 6803 ldr r3, [r0, #0] + 800fee6: 2b00 cmp r3, #0 + 800fee8: f000 819a beq.w 8010220 <LoRaMacInitialization+0x354> + ( primitives->MacMcpsIndication == NULL ) || + 800feec: 6843 ldr r3, [r0, #4] + if( ( primitives->MacMcpsConfirm == NULL ) || + 800feee: 2b00 cmp r3, #0 + 800fef0: f000 8198 beq.w 8010224 <LoRaMacInitialization+0x358> + ( primitives->MacMlmeConfirm == NULL ) || + 800fef4: 6883 ldr r3, [r0, #8] + ( primitives->MacMcpsIndication == NULL ) || + 800fef6: 2b00 cmp r3, #0 + 800fef8: f000 8196 beq.w 8010228 <LoRaMacInitialization+0x35c> + ( primitives->MacMlmeIndication == NULL ) ) + 800fefc: 68c3 ldr r3, [r0, #12] + ( primitives->MacMlmeConfirm == NULL ) || + 800fefe: 2b00 cmp r3, #0 + 800ff00: f000 8194 beq.w 801022c <LoRaMacInitialization+0x360> + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + // Verify if the region is supported + if( RegionIsActive( region ) == false ) + 800ff04: 4610 mov r0, r2 + 800ff06: f002 f935 bl 8012174 <RegionIsActive> + 800ff0a: 2800 cmp r0, #0 + 800ff0c: f000 8190 beq.w 8010230 <LoRaMacInitialization+0x364> + { + return LORAMAC_STATUS_REGION_NOT_SUPPORTED; + } + + // Confirm queue reset + LoRaMacConfirmQueueInit( primitives ); + 800ff10: 4638 mov r0, r7 + 800ff12: f001 fb0b bl 801152c <LoRaMacConfirmQueueInit> + + // Initialize the module context with zeros + memset1( ( uint8_t* ) &Nvm, 0x00, sizeof( LoRaMacNvmData_t ) ); + 800ff16: 4ccc ldr r4, [pc, #816] ; (8010248 <LoRaMacInitialization+0x37c>) + 800ff18: f44f 62ee mov.w r2, #1904 ; 0x770 + 800ff1c: 2100 movs r1, #0 + 800ff1e: 4620 mov r0, r4 + 800ff20: f004 fb53 bl 80145ca <memset1> + memset1( ( uint8_t* ) &MacCtx, 0x00, sizeof( LoRaMacCtx_t ) ); + 800ff24: 4dc9 ldr r5, [pc, #804] ; (801024c <LoRaMacInitialization+0x380>) + 800ff26: f44f 62a1 mov.w r2, #1288 ; 0x508 + 800ff2a: 2100 movs r1, #0 + 800ff2c: 4628 mov r0, r5 + 800ff2e: f004 fb4c bl 80145ca <memset1> + + // Set non zero variables to its default value +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + MacCtx.AckTimeoutRetriesCounter = 1; + 800ff32: f04f 0a01 mov.w sl, #1 + 800ff36: f885 a40e strb.w sl, [r5, #1038] ; 0x40e + MacCtx.AckTimeoutRetries = 1; + 800ff3a: f885 a40d strb.w sl, [r5, #1037] ; 0x40d +#endif /* LORAMAC_VERSION */ + Nvm.MacGroup2.Region = region; + 800ff3e: f884 9048 strb.w r9, [r4, #72] ; 0x48 + Nvm.MacGroup2.DeviceClass = CLASS_A; + 800ff42: 2600 movs r6, #0 + 800ff44: f884 6118 strb.w r6, [r4, #280] ; 0x118 + Nvm.MacGroup2.MacParams.RepeaterSupport = false; + 800ff48: f884 608c strb.w r6, [r4, #140] ; 0x8c + + // Setup version + Nvm.MacGroup2.Version.Value = LORAMAC_VERSION; + 800ff4c: 4bc0 ldr r3, [pc, #768] ; (8010250 <LoRaMacInitialization+0x384>) + 800ff4e: f8c4 3128 str.w r3, [r4, #296] ; 0x128 + params.Bands = &RegionBands; + RegionInitDefaults( Nvm.MacGroup2.Region, ¶ms ); +#endif /* LORAMAC_VERSION */ + + // Reset to defaults + getPhy.Attribute = PHY_DUTY_CYCLE; + 800ff52: 230f movs r3, #15 + 800ff54: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800ff58: a908 add r1, sp, #32 + 800ff5a: 4648 mov r0, r9 + 800ff5c: f002 f90f bl 801217e <RegionGetPhyParam> + 800ff60: 9007 str r0, [sp, #28] + Nvm.MacGroup2.DutyCycleOn = ( bool ) phyParam.Value; + 800ff62: 1b80 subs r0, r0, r6 + 800ff64: bf18 it ne + 800ff66: 2001 movne r0, #1 + 800ff68: f884 011c strb.w r0, [r4, #284] ; 0x11c + + getPhy.Attribute = PHY_DEF_TX_POWER; + 800ff6c: f04f 0b0a mov.w fp, #10 + 800ff70: f88d b020 strb.w fp, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800ff74: a908 add r1, sp, #32 + 800ff76: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800ff7a: f002 f900 bl 801217e <RegionGetPhyParam> + 800ff7e: 9007 str r0, [sp, #28] + Nvm.MacGroup2.ChannelsTxPowerDefault = phyParam.Value; + 800ff80: f884 00dc strb.w r0, [r4, #220] ; 0xdc + + getPhy.Attribute = PHY_DEF_TX_DR; + 800ff84: f04f 0906 mov.w r9, #6 + 800ff88: f88d 9020 strb.w r9, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800ff8c: a908 add r1, sp, #32 + 800ff8e: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800ff92: f002 f8f4 bl 801217e <RegionGetPhyParam> + 800ff96: 9007 str r0, [sp, #28] + Nvm.MacGroup2.ChannelsDatarateDefault = phyParam.Value; + 800ff98: f884 00dd strb.w r0, [r4, #221] ; 0xdd + + getPhy.Attribute = PHY_MAX_RX_WINDOW; + 800ff9c: 2310 movs r3, #16 + 800ff9e: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800ffa2: a908 add r1, sp, #32 + 800ffa4: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800ffa8: f002 f8e9 bl 801217e <RegionGetPhyParam> + 800ffac: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.MaxRxWindow = phyParam.Value; + 800ffae: f8c4 009c str.w r0, [r4, #156] ; 0x9c + + getPhy.Attribute = PHY_RECEIVE_DELAY1; + 800ffb2: 2311 movs r3, #17 + 800ffb4: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800ffb8: a908 add r1, sp, #32 + 800ffba: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800ffbe: f002 f8de bl 801217e <RegionGetPhyParam> + 800ffc2: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.ReceiveDelay1 = phyParam.Value; + 800ffc4: f8c4 00a0 str.w r0, [r4, #160] ; 0xa0 + + getPhy.Attribute = PHY_RECEIVE_DELAY2; + 800ffc8: 2312 movs r3, #18 + 800ffca: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800ffce: a908 add r1, sp, #32 + 800ffd0: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800ffd4: f002 f8d3 bl 801217e <RegionGetPhyParam> + 800ffd8: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.ReceiveDelay2 = phyParam.Value; + 800ffda: f8c4 00a4 str.w r0, [r4, #164] ; 0xa4 + + getPhy.Attribute = PHY_JOIN_ACCEPT_DELAY1; + 800ffde: 2313 movs r3, #19 + 800ffe0: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800ffe4: a908 add r1, sp, #32 + 800ffe6: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800ffea: f002 f8c8 bl 801217e <RegionGetPhyParam> + 800ffee: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.JoinAcceptDelay1 = phyParam.Value; + 800fff0: f8c4 00a8 str.w r0, [r4, #168] ; 0xa8 + + getPhy.Attribute = PHY_JOIN_ACCEPT_DELAY2; + 800fff4: 2314 movs r3, #20 + 800fff6: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 800fffa: a908 add r1, sp, #32 + 800fffc: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 8010000: f002 f8bd bl 801217e <RegionGetPhyParam> + 8010004: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.JoinAcceptDelay2 = phyParam.Value; + 8010006: f8c4 00ac str.w r0, [r4, #172] ; 0xac + + getPhy.Attribute = PHY_DEF_DR1_OFFSET; + 801000a: 2317 movs r3, #23 + 801000c: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 8010010: a908 add r1, sp, #32 + 8010012: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 8010016: f002 f8b2 bl 801217e <RegionGetPhyParam> + 801001a: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.Rx1DrOffset = phyParam.Value; + 801001c: f884 00b1 strb.w r0, [r4, #177] ; 0xb1 + + getPhy.Attribute = PHY_DEF_RX2_FREQUENCY; + 8010020: 2318 movs r3, #24 + 8010022: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 8010026: a908 add r1, sp, #32 + 8010028: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 801002c: f002 f8a7 bl 801217e <RegionGetPhyParam> + 8010030: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.Rx2Channel.Frequency = phyParam.Value; + 8010032: f8c4 00b4 str.w r0, [r4, #180] ; 0xb4 + Nvm.MacGroup2.MacParamsDefaults.RxCChannel.Frequency = phyParam.Value; + 8010036: f8c4 00bc str.w r0, [r4, #188] ; 0xbc + + getPhy.Attribute = PHY_DEF_RX2_DR; + 801003a: 2319 movs r3, #25 + 801003c: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 8010040: a908 add r1, sp, #32 + 8010042: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 8010046: f002 f89a bl 801217e <RegionGetPhyParam> + 801004a: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.Rx2Channel.Datarate = phyParam.Value; + 801004c: b2c0 uxtb r0, r0 + 801004e: f884 00b8 strb.w r0, [r4, #184] ; 0xb8 + Nvm.MacGroup2.MacParamsDefaults.RxCChannel.Datarate = phyParam.Value; + 8010052: f884 00c0 strb.w r0, [r4, #192] ; 0xc0 + + getPhy.Attribute = PHY_DEF_UPLINK_DWELL_TIME; + 8010056: 231e movs r3, #30 + 8010058: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 801005c: a908 add r1, sp, #32 + 801005e: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 8010062: f002 f88c bl 801217e <RegionGetPhyParam> + 8010066: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.UplinkDwellTime = phyParam.Value; + 8010068: f884 00c4 strb.w r0, [r4, #196] ; 0xc4 + + getPhy.Attribute = PHY_DEF_DOWNLINK_DWELL_TIME; + 801006c: 231f movs r3, #31 + 801006e: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 8010072: a908 add r1, sp, #32 + 8010074: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 8010078: f002 f881 bl 801217e <RegionGetPhyParam> + 801007c: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.DownlinkDwellTime = phyParam.Value; + 801007e: f884 00c5 strb.w r0, [r4, #197] ; 0xc5 + + getPhy.Attribute = PHY_DEF_MAX_EIRP; + 8010082: 2320 movs r3, #32 + 8010084: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 8010088: eb0d 0103 add.w r1, sp, r3 + 801008c: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 8010090: f002 f875 bl 801217e <RegionGetPhyParam> + 8010094: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.MaxEirp = phyParam.fValue; + 8010096: 9b07 ldr r3, [sp, #28] + 8010098: f8c4 30c8 str.w r3, [r4, #200] ; 0xc8 + + getPhy.Attribute = PHY_DEF_ANTENNA_GAIN; + 801009c: 2321 movs r3, #33 ; 0x21 + 801009e: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 80100a2: a908 add r1, sp, #32 + 80100a4: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 80100a8: f002 f869 bl 801217e <RegionGetPhyParam> + 80100ac: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.AntennaGain = phyParam.fValue; + 80100ae: 9b07 ldr r3, [sp, #28] + 80100b0: f8c4 30cc str.w r3, [r4, #204] ; 0xcc + + getPhy.Attribute = PHY_DEF_ADR_ACK_LIMIT; + 80100b4: 230b movs r3, #11 + 80100b6: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 80100ba: a908 add r1, sp, #32 + 80100bc: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 80100c0: f002 f85d bl 801217e <RegionGetPhyParam> + 80100c4: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.AdrAckLimit = phyParam.Value; + 80100c6: f8a4 00d0 strh.w r0, [r4, #208] ; 0xd0 + + getPhy.Attribute = PHY_DEF_ADR_ACK_DELAY; + 80100ca: 230c movs r3, #12 + 80100cc: f88d 3020 strb.w r3, [sp, #32] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 80100d0: a908 add r1, sp, #32 + 80100d2: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 80100d6: f002 f852 bl 801217e <RegionGetPhyParam> + 80100da: 9007 str r0, [sp, #28] + Nvm.MacGroup2.MacParamsDefaults.AdrAckDelay = phyParam.Value; + 80100dc: f8a4 00d2 strh.w r0, [r4, #210] ; 0xd2 + + // Init parameters which are not set in function ResetMacParameters + Nvm.MacGroup2.MacParamsDefaults.ChannelsNbTrans = 1; + 80100e0: f884 a0b0 strb.w sl, [r4, #176] ; 0xb0 + Nvm.MacGroup2.MacParamsDefaults.SystemMaxRxError = 10; + 80100e4: f8c4 b094 str.w fp, [r4, #148] ; 0x94 + Nvm.MacGroup2.MacParamsDefaults.MinRxSymbols = 6; + 80100e8: f884 9098 strb.w r9, [r4, #152] ; 0x98 + + Nvm.MacGroup2.MacParams.SystemMaxRxError = Nvm.MacGroup2.MacParamsDefaults.SystemMaxRxError; + 80100ec: f8c4 b04c str.w fp, [r4, #76] ; 0x4c + Nvm.MacGroup2.MacParams.MinRxSymbols = Nvm.MacGroup2.MacParamsDefaults.MinRxSymbols; + 80100f0: f884 9050 strb.w r9, [r4, #80] ; 0x50 + Nvm.MacGroup2.MacParams.MaxRxWindow = Nvm.MacGroup2.MacParamsDefaults.MaxRxWindow; + 80100f4: f8d4 309c ldr.w r3, [r4, #156] ; 0x9c + 80100f8: 6563 str r3, [r4, #84] ; 0x54 + Nvm.MacGroup2.MacParams.ReceiveDelay1 = Nvm.MacGroup2.MacParamsDefaults.ReceiveDelay1; + 80100fa: f8d4 30a0 ldr.w r3, [r4, #160] ; 0xa0 + 80100fe: 65a3 str r3, [r4, #88] ; 0x58 + Nvm.MacGroup2.MacParams.ReceiveDelay2 = Nvm.MacGroup2.MacParamsDefaults.ReceiveDelay2; + 8010100: f8d4 30a4 ldr.w r3, [r4, #164] ; 0xa4 + 8010104: 65e3 str r3, [r4, #92] ; 0x5c + Nvm.MacGroup2.MacParams.JoinAcceptDelay1 = Nvm.MacGroup2.MacParamsDefaults.JoinAcceptDelay1; + 8010106: f8d4 30a8 ldr.w r3, [r4, #168] ; 0xa8 + 801010a: 6623 str r3, [r4, #96] ; 0x60 + Nvm.MacGroup2.MacParams.JoinAcceptDelay2 = Nvm.MacGroup2.MacParamsDefaults.JoinAcceptDelay2; + 801010c: f8d4 30ac ldr.w r3, [r4, #172] ; 0xac + 8010110: 6663 str r3, [r4, #100] ; 0x64 + Nvm.MacGroup2.MacParams.ChannelsNbTrans = Nvm.MacGroup2.MacParamsDefaults.ChannelsNbTrans; + 8010112: f884 a068 strb.w sl, [r4, #104] ; 0x68 + +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + InitDefaultsParams_t params; + params.Type = INIT_TYPE_DEFAULTS; + 8010116: f88d 6018 strb.w r6, [sp, #24] + params.NvmGroup1 = &Nvm.RegionGroup1; + 801011a: f504 7308 add.w r3, r4, #544 ; 0x220 + 801011e: 9304 str r3, [sp, #16] + params.NvmGroup2 = &Nvm.RegionGroup2; + 8010120: f504 732d add.w r3, r4, #692 ; 0x2b4 + 8010124: 9305 str r3, [sp, #20] + RegionInitDefaults( Nvm.MacGroup2.Region, ¶ms ); + 8010126: a904 add r1, sp, #16 + 8010128: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 801012c: f002 f83e bl 80121ac <RegionInitDefaults> +#elif (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) + // FPort 224 is enabled by default. + Nvm.MacGroup2.IsCertPortOn = true; +#endif /* LORAMAC_VERSION */ + + MacCtx.MacCallbacks = callbacks; + 8010130: f8c5 8348 str.w r8, [r5, #840] ; 0x348 + ResetMacParameters( false ); + 8010134: 4630 mov r0, r6 + 8010136: f7ff fb73 bl 800f820 <ResetMacParameters> + + Nvm.MacGroup2.PublicNetwork = true; + 801013a: f884 a119 strb.w sl, [r4, #281] ; 0x119 + + MacCtx.MacPrimitives = primitives; + 801013e: f8c5 7344 str.w r7, [r5, #836] ; 0x344 + MacCtx.MacFlags.Value = 0; + 8010142: f885 6481 strb.w r6, [r5, #1153] ; 0x481 + MacCtx.MacState = LORAMAC_STOPPED; + 8010146: f8c5 a340 str.w sl, [r5, #832] ; 0x340 + + // Reset duty cycle times + Nvm.MacGroup1.LastTxDoneTime = 0; + 801014a: 62e6 str r6, [r4, #44] ; 0x2c + Nvm.MacGroup1.AggregatedTimeOff = 0; + 801014c: 6326 str r6, [r4, #48] ; 0x30 + + // Initialize timers + TimerInit( &MacCtx.TxDelayedTimer, OnTxDelayedTimerEvent ); + 801014e: 9600 str r6, [sp, #0] + 8010150: 4b40 ldr r3, [pc, #256] ; (8010254 <LoRaMacInitialization+0x388>) + 8010152: 4632 mov r2, r6 + 8010154: f04f 31ff mov.w r1, #4294967295 + 8010158: f505 705a add.w r0, r5, #872 ; 0x368 + 801015c: f006 ffe0 bl 8017120 <UTIL_TIMER_Create> + TimerInit( &MacCtx.RxWindowTimer1, OnRxWindow1TimerEvent ); + 8010160: 9600 str r6, [sp, #0] + 8010162: 4b3d ldr r3, [pc, #244] ; (8010258 <LoRaMacInitialization+0x38c>) + 8010164: 4632 mov r2, r6 + 8010166: f04f 31ff mov.w r1, #4294967295 + 801016a: f505 7060 add.w r0, r5, #896 ; 0x380 + 801016e: f006 ffd7 bl 8017120 <UTIL_TIMER_Create> + TimerInit( &MacCtx.RxWindowTimer2, OnRxWindow2TimerEvent ); + 8010172: 9600 str r6, [sp, #0] + 8010174: 4b39 ldr r3, [pc, #228] ; (801025c <LoRaMacInitialization+0x390>) + 8010176: 4632 mov r2, r6 + 8010178: f04f 31ff mov.w r1, #4294967295 + 801017c: f505 7066 add.w r0, r5, #920 ; 0x398 + 8010180: f006 ffce bl 8017120 <UTIL_TIMER_Create> +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + TimerInit( &MacCtx.AckTimeoutTimer, OnAckTimeoutTimerEvent ); + 8010184: 9600 str r6, [sp, #0] + 8010186: 4b36 ldr r3, [pc, #216] ; (8010260 <LoRaMacInitialization+0x394>) + 8010188: 4632 mov r2, r6 + 801018a: f04f 31ff mov.w r1, #4294967295 + 801018e: f505 707d add.w r0, r5, #1012 ; 0x3f4 + 8010192: f006 ffc5 bl 8017120 <UTIL_TIMER_Create> + TimerInit( &MacCtx.Rejoin1CycleTimer, OnRejoin1CycleTimerEvent ); + TimerInit( &MacCtx.ForceRejoinReqCycleTimer, OnForceRejoinReqCycleTimerEvent ); +#endif /* LORAMAC_VERSION */ + + // Store the current initialization time + Nvm.MacGroup2.InitializationTime = SysTimeGetMcuTime( ); + 8010196: ae02 add r6, sp, #8 + 8010198: 4630 mov r0, r6 + 801019a: f006 ff53 bl 8017044 <SysTimeGetMcuTime> + 801019e: f504 7390 add.w r3, r4, #288 ; 0x120 + 80101a2: e896 0003 ldmia.w r6, {r0, r1} + 80101a6: e883 0003 stmia.w r3, {r0, r1} + // Initialize MAC radio events + LoRaMacRadioEvents.Value = 0; +#endif /* LORAMAC_VERSION */ + + // Initialize Radio driver + MacCtx.RadioEvents.TxDone = OnRadioTxDone; + 80101aa: 4b2e ldr r3, [pc, #184] ; (8010264 <LoRaMacInitialization+0x398>) + 80101ac: f8c5 334c str.w r3, [r5, #844] ; 0x34c + MacCtx.RadioEvents.RxDone = OnRadioRxDone; + 80101b0: 4b2d ldr r3, [pc, #180] ; (8010268 <LoRaMacInitialization+0x39c>) + 80101b2: f8c5 3354 str.w r3, [r5, #852] ; 0x354 + MacCtx.RadioEvents.RxError = OnRadioRxError; + 80101b6: 4b2d ldr r3, [pc, #180] ; (801026c <LoRaMacInitialization+0x3a0>) + 80101b8: f8c5 335c str.w r3, [r5, #860] ; 0x35c + MacCtx.RadioEvents.TxTimeout = OnRadioTxTimeout; + 80101bc: 4b2c ldr r3, [pc, #176] ; (8010270 <LoRaMacInitialization+0x3a4>) + 80101be: f8c5 3350 str.w r3, [r5, #848] ; 0x350 + MacCtx.RadioEvents.RxTimeout = OnRadioRxTimeout; + 80101c2: 4b2c ldr r3, [pc, #176] ; (8010274 <LoRaMacInitialization+0x3a8>) + 80101c4: f8c5 3358 str.w r3, [r5, #856] ; 0x358 + Radio.Init( &MacCtx.RadioEvents ); + 80101c8: 4b2b ldr r3, [pc, #172] ; (8010278 <LoRaMacInitialization+0x3ac>) + 80101ca: 681b ldr r3, [r3, #0] + 80101cc: f505 7053 add.w r0, r5, #844 ; 0x34c + 80101d0: 4798 blx r3 + + // Initialize the Secure Element driver + if( SecureElementInit( &Nvm.SecureElement ) != SECURE_ELEMENT_SUCCESS ) + 80101d2: f504 70a4 add.w r0, r4, #328 ; 0x148 + 80101d6: f003 feff bl 8013fd8 <SecureElementInit> + 80101da: bb70 cbnz r0, 801023a <LoRaMacInitialization+0x36e> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + } + + // Initialize Crypto module + if( LoRaMacCryptoInit( &Nvm.Crypto ) != LORAMAC_CRYPTO_SUCCESS ) + 80101dc: 4620 mov r0, r4 + 80101de: f001 fc3d bl 8011a5c <LoRaMacCryptoInit> + 80101e2: bb60 cbnz r0, 801023e <LoRaMacInitialization+0x372> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + } + + // Initialize MAC commands module + if( LoRaMacCommandsInit( ) != LORAMAC_COMMANDS_SUCCESS ) + 80101e4: f001 f866 bl 80112b4 <LoRaMacCommandsInit> + 80101e8: bb58 cbnz r0, 8010242 <LoRaMacInitialization+0x376> + { + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + } + + // Set multicast downlink counter reference + if( LoRaMacCryptoSetMulticastReference( Nvm.MacGroup2.MulticastChannelList ) != LORAMAC_CRYPTO_SUCCESS ) + 80101ea: f104 00e8 add.w r0, r4, #232 ; 0xe8 + 80101ee: f001 fc9b bl 8011b28 <LoRaMacCryptoSetMulticastReference> + 80101f2: 4604 mov r4, r0 + 80101f4: 2800 cmp r0, #0 + 80101f6: d141 bne.n 801027c <LoRaMacInitialization+0x3b0> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + } + + // Random seed initialization + srand1( Radio.Random( ) ); + 80101f8: 4d1f ldr r5, [pc, #124] ; (8010278 <LoRaMacInitialization+0x3ac>) + 80101fa: 696b ldr r3, [r5, #20] + 80101fc: 4798 blx r3 + 80101fe: f004 f9b9 bl 8014574 <srand1> + + Radio.SetPublicNetwork( Nvm.MacGroup2.PublicNetwork ); + 8010202: 6dab ldr r3, [r5, #88] ; 0x58 + 8010204: 4a10 ldr r2, [pc, #64] ; (8010248 <LoRaMacInitialization+0x37c>) + 8010206: f892 0119 ldrb.w r0, [r2, #281] ; 0x119 + 801020a: 4798 blx r3 + Radio.Sleep( ); + 801020c: 6aeb ldr r3, [r5, #44] ; 0x2c + 801020e: 4798 blx r3 + + LoRaMacEnableRequests( LORAMAC_REQUEST_HANDLING_ON ); + 8010210: 4650 mov r0, sl + 8010212: f7fd fc8b bl 800db2c <LoRaMacEnableRequests> + + return LORAMAC_STATUS_OK; + 8010216: e00c b.n 8010232 <LoRaMacInitialization+0x366> + return LORAMAC_STATUS_PARAMETER_INVALID; + 8010218: 2403 movs r4, #3 + 801021a: e00a b.n 8010232 <LoRaMacInitialization+0x366> + 801021c: 2403 movs r4, #3 + 801021e: e008 b.n 8010232 <LoRaMacInitialization+0x366> + return LORAMAC_STATUS_PARAMETER_INVALID; + 8010220: 2403 movs r4, #3 + 8010222: e006 b.n 8010232 <LoRaMacInitialization+0x366> + 8010224: 2403 movs r4, #3 + 8010226: e004 b.n 8010232 <LoRaMacInitialization+0x366> + 8010228: 2403 movs r4, #3 + 801022a: e002 b.n 8010232 <LoRaMacInitialization+0x366> + 801022c: 2403 movs r4, #3 + 801022e: e000 b.n 8010232 <LoRaMacInitialization+0x366> + return LORAMAC_STATUS_REGION_NOT_SUPPORTED; + 8010230: 2409 movs r4, #9 +} + 8010232: 4620 mov r0, r4 + 8010234: b00b add sp, #44 ; 0x2c + 8010236: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + return LORAMAC_STATUS_CRYPTO_ERROR; + 801023a: 2411 movs r4, #17 + 801023c: e7f9 b.n 8010232 <LoRaMacInitialization+0x366> + return LORAMAC_STATUS_CRYPTO_ERROR; + 801023e: 2411 movs r4, #17 + 8010240: e7f7 b.n 8010232 <LoRaMacInitialization+0x366> + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + 8010242: 2413 movs r4, #19 + 8010244: e7f5 b.n 8010232 <LoRaMacInitialization+0x366> + 8010246: bf00 nop + 8010248: 20001870 .word 0x20001870 + 801024c: 20001fe4 .word 0x20001fe4 + 8010250: 01000300 .word 0x01000300 + 8010254: 0800f2a9 .word 0x0800f2a9 + 8010258: 0800f525 .word 0x0800f525 + 801025c: 0800f4d5 .word 0x0800f4d5 + 8010260: 0800df59 .word 0x0800df59 + 8010264: 0800f7d5 .word 0x0800f7d5 + 8010268: 0800f78d .word 0x0800f78d + 801026c: 0800dd3d .word 0x0800dd3d + 8010270: 0800f765 .word 0x0800f765 + 8010274: 0800f73d .word 0x0800f73d + 8010278: 08018cb4 .word 0x08018cb4 + return LORAMAC_STATUS_CRYPTO_ERROR; + 801027c: 2411 movs r4, #17 + 801027e: e7d8 b.n 8010232 <LoRaMacInitialization+0x366> + +08010280 <LoRaMacStart>: + +LoRaMacStatus_t LoRaMacStart( void ) +{ + 8010280: b510 push {r4, lr} + MacCtx.MacState = LORAMAC_IDLE; + 8010282: 2400 movs r4, #0 + 8010284: 4b03 ldr r3, [pc, #12] ; (8010294 <LoRaMacStart+0x14>) + 8010286: f8c3 4340 str.w r4, [r3, #832] ; 0x340 + UpdateRxSlotIdleState(); + 801028a: f7fd fc3b bl 800db04 <UpdateRxSlotIdleState> + return LORAMAC_STATUS_OK; +} + 801028e: 4620 mov r0, r4 + 8010290: bd10 pop {r4, pc} + 8010292: bf00 nop + 8010294: 20001fe4 .word 0x20001fe4 + +08010298 <LoRaMacStop>: + +LoRaMacStatus_t LoRaMacStop( void ) +{ + 8010298: b508 push {r3, lr} + if( LoRaMacIsBusy( ) == false ) + 801029a: f7ff fdad bl 800fdf8 <LoRaMacIsBusy> + 801029e: b130 cbz r0, 80102ae <LoRaMacStop+0x16> + Radio.Sleep( ); + } + MacCtx.MacState = LORAMAC_STOPPED; + return LORAMAC_STATUS_OK; + } + else if( MacCtx.MacState == LORAMAC_STOPPED ) + 80102a0: 4b0b ldr r3, [pc, #44] ; (80102d0 <LoRaMacStop+0x38>) + 80102a2: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 80102a6: 2b01 cmp r3, #1 + 80102a8: d010 beq.n 80102cc <LoRaMacStop+0x34> + { + return LORAMAC_STATUS_OK; + } + return LORAMAC_STATUS_BUSY; + 80102aa: 2001 movs r0, #1 +} + 80102ac: bd08 pop {r3, pc} + if( Nvm.MacGroup2.DeviceClass == CLASS_C ) + 80102ae: 4b09 ldr r3, [pc, #36] ; (80102d4 <LoRaMacStop+0x3c>) + 80102b0: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 80102b4: 2b02 cmp r3, #2 + 80102b6: d005 beq.n 80102c4 <LoRaMacStop+0x2c> + MacCtx.MacState = LORAMAC_STOPPED; + 80102b8: 4b05 ldr r3, [pc, #20] ; (80102d0 <LoRaMacStop+0x38>) + 80102ba: 2201 movs r2, #1 + 80102bc: f8c3 2340 str.w r2, [r3, #832] ; 0x340 + return LORAMAC_STATUS_OK; + 80102c0: 2000 movs r0, #0 + 80102c2: e7f3 b.n 80102ac <LoRaMacStop+0x14> + Radio.Sleep( ); + 80102c4: 4b04 ldr r3, [pc, #16] ; (80102d8 <LoRaMacStop+0x40>) + 80102c6: 6adb ldr r3, [r3, #44] ; 0x2c + 80102c8: 4798 blx r3 + 80102ca: e7f5 b.n 80102b8 <LoRaMacStop+0x20> + return LORAMAC_STATUS_OK; + 80102cc: 2000 movs r0, #0 + 80102ce: e7ed b.n 80102ac <LoRaMacStop+0x14> + 80102d0: 20001fe4 .word 0x20001fe4 + 80102d4: 20001870 .word 0x20001870 + 80102d8: 08018cb4 .word 0x08018cb4 + +080102dc <LoRaMacHalt>: + +LoRaMacStatus_t LoRaMacHalt( void ) +{ + 80102dc: b570 push {r4, r5, r6, lr} + // Stop Timers + TimerStop( &MacCtx.TxDelayedTimer ); + 80102de: 4c14 ldr r4, [pc, #80] ; (8010330 <LoRaMacHalt+0x54>) + 80102e0: f504 705a add.w r0, r4, #872 ; 0x368 + 80102e4: f006 ff7a bl 80171dc <UTIL_TIMER_Stop> + TimerStop( &MacCtx.RxWindowTimer1 ); + 80102e8: f504 7060 add.w r0, r4, #896 ; 0x380 + 80102ec: f006 ff76 bl 80171dc <UTIL_TIMER_Stop> + TimerStop( &MacCtx.RxWindowTimer2 ); + 80102f0: f504 7066 add.w r0, r4, #920 ; 0x398 + 80102f4: f006 ff72 bl 80171dc <UTIL_TIMER_Stop> +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + TimerStop( &MacCtx.AckTimeoutTimer ); + 80102f8: f504 707d add.w r0, r4, #1012 ; 0x3f4 + 80102fc: f006 ff6e bl 80171dc <UTIL_TIMER_Stop> +#elif (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) + TimerStop( &MacCtx.RetransmitTimeoutTimer ); +#endif /* LORAMAC_VERSION */ + + // Take care about class B + LoRaMacClassBHaltBeaconing( ); + 8010300: f000 ff40 bl 8011184 <LoRaMacClassBHaltBeaconing> + + // Switch off Radio + Radio.Sleep( ); + 8010304: 4b0b ldr r3, [pc, #44] ; (8010334 <LoRaMacHalt+0x58>) + 8010306: 6adb ldr r3, [r3, #44] ; 0x2c + 8010308: 4798 blx r3 + + MacCtx.MacState = LORAMAC_IDLE; + 801030a: 2500 movs r5, #0 + 801030c: f8c4 5340 str.w r5, [r4, #832] ; 0x340 + +#if (defined( CONTEXT_MANAGEMENT_ENABLED ) && ( CONTEXT_MANAGEMENT_ENABLED == 1 )) + LoRaMacHandleNvm( &Nvm ); + 8010310: 4e09 ldr r6, [pc, #36] ; (8010338 <LoRaMacHalt+0x5c>) + 8010312: 4630 mov r0, r6 + 8010314: f7ff f92a bl 800f56c <LoRaMacHandleNvm> + + // Preserve the Nvm context if data retention + memcpy1( ( uint8_t* ) &NvmBackup, ( uint8_t* ) &Nvm, sizeof( LoRaMacNvmData_t ) ); + 8010318: f44f 62ee mov.w r2, #1904 ; 0x770 + 801031c: 4631 mov r1, r6 + 801031e: 4807 ldr r0, [pc, #28] ; (801033c <LoRaMacHalt+0x60>) + 8010320: f004 f93b bl 801459a <memcpy1> +#endif /* CONTEXT_MANAGEMENT_ENABLED */ + + MacCtx.MacState = LORAMAC_STOPPED; + 8010324: 2301 movs r3, #1 + 8010326: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + + return LORAMAC_STATUS_OK; +} + 801032a: 4628 mov r0, r5 + 801032c: bd70 pop {r4, r5, r6, pc} + 801032e: bf00 nop + 8010330: 20001fe4 .word 0x20001fe4 + 8010334: 08018cb4 .word 0x08018cb4 + 8010338: 20001870 .word 0x20001870 + 801033c: 20001100 .word 0x20001100 + +08010340 <LoRaMacQueryTxPossible>: + +LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) +{ + 8010340: b530 push {r4, r5, lr} + 8010342: b089 sub sp, #36 ; 0x24 + 8010344: 4604 mov r4, r0 + CalcNextAdrParams_t adrNext; + uint32_t adrAckCounter = Nvm.MacGroup1.AdrAckCounter; + 8010346: 4b2e ldr r3, [pc, #184] ; (8010400 <LoRaMacQueryTxPossible+0xc0>) + 8010348: 6a9a ldr r2, [r3, #40] ; 0x28 + 801034a: 9202 str r2, [sp, #8] + int8_t datarate = Nvm.MacGroup2.ChannelsDatarateDefault; + 801034c: f993 00dd ldrsb.w r0, [r3, #221] ; 0xdd + 8010350: f88d 0007 strb.w r0, [sp, #7] + int8_t txPower = Nvm.MacGroup2.ChannelsTxPowerDefault; + 8010354: f993 30dc ldrsb.w r3, [r3, #220] ; 0xdc + 8010358: f88d 3006 strb.w r3, [sp, #6] +#if (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) + uint8_t nbTrans = MacCtx.ChannelsNbTransCounter; +#endif /* LORAMAC_VERSION */ + size_t macCmdsSize = 0; + 801035c: 2300 movs r3, #0 + 801035e: 9300 str r3, [sp, #0] + + if( txInfo == NULL ) + 8010360: 2900 cmp r1, #0 + 8010362: d047 beq.n 80103f4 <LoRaMacQueryTxPossible+0xb4> + 8010364: 460d mov r5, r1 + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + // Setup ADR request +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + adrNext.Version = Nvm.MacGroup2.Version; + 8010366: 4b26 ldr r3, [pc, #152] ; (8010400 <LoRaMacQueryTxPossible+0xc0>) + 8010368: f8d3 1128 ldr.w r1, [r3, #296] ; 0x128 + 801036c: 9103 str r1, [sp, #12] +#endif /* LORAMAC_VERSION */ + adrNext.UpdateChanMask = false; + 801036e: 2100 movs r1, #0 + 8010370: f88d 1010 strb.w r1, [sp, #16] + adrNext.AdrEnabled = Nvm.MacGroup2.AdrCtrlOn; + 8010374: f893 111a ldrb.w r1, [r3, #282] ; 0x11a + 8010378: f88d 1011 strb.w r1, [sp, #17] + adrNext.AdrAckCounter = Nvm.MacGroup1.AdrAckCounter; + 801037c: 9205 str r2, [sp, #20] + adrNext.AdrAckLimit = Nvm.MacGroup2.MacParams.AdrAckLimit; + 801037e: f8b3 2088 ldrh.w r2, [r3, #136] ; 0x88 + 8010382: f8ad 2018 strh.w r2, [sp, #24] + adrNext.AdrAckDelay = Nvm.MacGroup2.MacParams.AdrAckDelay; + 8010386: f8b3 208a ldrh.w r2, [r3, #138] ; 0x8a + 801038a: f8ad 201a strh.w r2, [sp, #26] + adrNext.Datarate = Nvm.MacGroup1.ChannelsDatarate; + 801038e: f993 2039 ldrsb.w r2, [r3, #57] ; 0x39 + 8010392: f88d 201c strb.w r2, [sp, #28] + adrNext.TxPower = Nvm.MacGroup1.ChannelsTxPower; + 8010396: f993 2038 ldrsb.w r2, [r3, #56] ; 0x38 + 801039a: f88d 201d strb.w r2, [sp, #29] +#if (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) + adrNext.NbTrans = MacCtx.ChannelsNbTransCounter; +#endif /* LORAMAC_VERSION */ + adrNext.UplinkDwellTime = Nvm.MacGroup2.MacParams.UplinkDwellTime; + 801039e: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 80103a2: f88d 201e strb.w r2, [sp, #30] + adrNext.Region = Nvm.MacGroup2.Region; + 80103a6: f893 3048 ldrb.w r3, [r3, #72] ; 0x48 + 80103aa: f88d 301f strb.w r3, [sp, #31] + + // We call the function for information purposes only. We don't want to + // apply the datarate, the tx power and the ADR ack counter. +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + LoRaMacAdrCalcNext( &adrNext, &datarate, &txPower, &adrAckCounter ); + 80103ae: ab02 add r3, sp, #8 + 80103b0: f10d 0206 add.w r2, sp, #6 + 80103b4: f10d 0107 add.w r1, sp, #7 + 80103b8: a803 add r0, sp, #12 + 80103ba: f000 fec7 bl 801114c <LoRaMacAdrCalcNext> +#elif (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) + LoRaMacAdrCalcNext( &adrNext, &datarate, &txPower, &nbTrans, &adrAckCounter ); +#endif /* LORAMAC_VERSION */ + + txInfo->CurrentPossiblePayloadSize = GetMaxAppPayloadWithoutFOptsLength( datarate ); + 80103be: f99d 0007 ldrsb.w r0, [sp, #7] + 80103c2: f7fd fd0b bl 800dddc <GetMaxAppPayloadWithoutFOptsLength> + 80103c6: 7068 strb r0, [r5, #1] + + if( LoRaMacCommandsGetSizeSerializedCmds( &macCmdsSize ) != LORAMAC_COMMANDS_SUCCESS ) + 80103c8: 4668 mov r0, sp + 80103ca: f001 f80f bl 80113ec <LoRaMacCommandsGetSizeSerializedCmds> + 80103ce: b998 cbnz r0, 80103f8 <LoRaMacQueryTxPossible+0xb8> + { + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + } + + // Verify if the MAC commands fit into the FOpts and into the maximum payload. + if( ( LORA_MAC_COMMAND_MAX_FOPTS_LENGTH >= macCmdsSize ) && ( txInfo->CurrentPossiblePayloadSize >= macCmdsSize ) ) + 80103d0: 9b00 ldr r3, [sp, #0] + 80103d2: 2b0f cmp r3, #15 + 80103d4: d80a bhi.n 80103ec <LoRaMacQueryTxPossible+0xac> + 80103d6: 786a ldrb r2, [r5, #1] + 80103d8: 4293 cmp r3, r2 + 80103da: d807 bhi.n 80103ec <LoRaMacQueryTxPossible+0xac> + { + txInfo->MaxPossibleApplicationDataSize = txInfo->CurrentPossiblePayloadSize - macCmdsSize; + 80103dc: 1ad3 subs r3, r2, r3 + 80103de: 702b strb r3, [r5, #0] + + // Verify if the application data together with MAC command fit into the maximum payload. + if( txInfo->CurrentPossiblePayloadSize >= ( macCmdsSize + size ) ) + 80103e0: 9b00 ldr r3, [sp, #0] + 80103e2: 441c add r4, r3 + 80103e4: 42a2 cmp r2, r4 + 80103e6: d309 bcc.n 80103fc <LoRaMacQueryTxPossible+0xbc> + else + { + txInfo->MaxPossibleApplicationDataSize = 0; + return LORAMAC_STATUS_LENGTH_ERROR; + } +} + 80103e8: b009 add sp, #36 ; 0x24 + 80103ea: bd30 pop {r4, r5, pc} + txInfo->MaxPossibleApplicationDataSize = 0; + 80103ec: 2300 movs r3, #0 + 80103ee: 702b strb r3, [r5, #0] + return LORAMAC_STATUS_LENGTH_ERROR; + 80103f0: 2008 movs r0, #8 + 80103f2: e7f9 b.n 80103e8 <LoRaMacQueryTxPossible+0xa8> + return LORAMAC_STATUS_PARAMETER_INVALID; + 80103f4: 2003 movs r0, #3 + 80103f6: e7f7 b.n 80103e8 <LoRaMacQueryTxPossible+0xa8> + return LORAMAC_STATUS_MAC_COMMAD_ERROR; + 80103f8: 2013 movs r0, #19 + 80103fa: e7f5 b.n 80103e8 <LoRaMacQueryTxPossible+0xa8> + return LORAMAC_STATUS_LENGTH_ERROR; + 80103fc: 2008 movs r0, #8 + 80103fe: e7f3 b.n 80103e8 <LoRaMacQueryTxPossible+0xa8> + 8010400: 20001870 .word 0x20001870 + +08010404 <LoRaMacMibGetRequestConfirm>: +{ + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + + if( mibGet == NULL ) + 8010404: 2800 cmp r0, #0 + 8010406: f000 8163 beq.w 80106d0 <LoRaMacMibGetRequestConfirm+0x2cc> +{ + 801040a: b510 push {r4, lr} + 801040c: b084 sub sp, #16 + 801040e: 4604 mov r4, r0 + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + switch( mibGet->Type ) + 8010410: 7800 ldrb r0, [r0, #0] + 8010412: 283f cmp r0, #63 ; 0x3f + 8010414: f200 8158 bhi.w 80106c8 <LoRaMacMibGetRequestConfirm+0x2c4> + 8010418: e8df f010 tbh [pc, r0, lsl #1] + 801041c: 00460040 .word 0x00460040 + 8010420: 0051004c .word 0x0051004c + 8010424: 005c0056 .word 0x005c0056 + 8010428: 01560062 .word 0x01560062 + 801042c: 01560156 .word 0x01560156 + 8010430: 01560156 .word 0x01560156 + 8010434: 01560156 .word 0x01560156 + 8010438: 006a0156 .word 0x006a0156 + 801043c: 00760070 .word 0x00760070 + 8010440: 008b0083 .word 0x008b0083 + 8010444: 009b0093 .word 0x009b0093 + 8010448: 00a300b0 .word 0x00a300b0 + 801044c: 00c300bd .word 0x00c300bd + 8010450: 00cd00c8 .word 0x00cd00c8 + 8010454: 00d700d2 .word 0x00d700d2 + 8010458: 00e200dc .word 0x00e200dc + 801045c: 00e800ee .word 0x00e800ee + 8010460: 00f900f4 .word 0x00f900f4 + 8010464: 010d00ff .word 0x010d00ff + 8010468: 01090105 .word 0x01090105 + 801046c: 01130156 .word 0x01130156 + 8010470: 01560156 .word 0x01560156 + 8010474: 01560156 .word 0x01560156 + 8010478: 01560156 .word 0x01560156 + 801047c: 01560156 .word 0x01560156 + 8010480: 01560156 .word 0x01560156 + 8010484: 01560156 .word 0x01560156 + 8010488: 01560156 .word 0x01560156 + 801048c: 011c0156 .word 0x011c0156 + 8010490: 01280122 .word 0x01280122 + 8010494: 0134012e .word 0x0134012e + 8010498: 0148013a .word 0x0148013a + { + case MIB_DEVICE_CLASS: + { + mibGet->Param.Class = Nvm.MacGroup2.DeviceClass; + 801049c: 4b8d ldr r3, [pc, #564] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 801049e: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 80104a2: 7123 strb r3, [r4, #4] + status = LoRaMacClassBMibGetRequestConfirm( mibGet ); + break; + } + } + return status; +} + 80104a4: b004 add sp, #16 + 80104a6: bd10 pop {r4, pc} + mibGet->Param.NetworkActivation = Nvm.MacGroup2.NetworkActivation; + 80104a8: 4b8a ldr r3, [pc, #552] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80104aa: f893 312c ldrb.w r3, [r3, #300] ; 0x12c + 80104ae: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80104b0: 2000 movs r0, #0 + break; + 80104b2: e7f7 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + SecureElementGetDevEui( mibGet->Param.DevEui ); + 80104b4: 6860 ldr r0, [r4, #4] + 80104b6: f003 ff35 bl 8014324 <SecureElementGetDevEui> + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80104ba: 2000 movs r0, #0 + break; + 80104bc: e7f2 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + SecureElementGetJoinEui( mibGet->Param.JoinEui ); + 80104be: 6860 ldr r0, [r4, #4] + 80104c0: f003 ff4e bl 8014360 <SecureElementGetJoinEui> + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80104c4: 2000 movs r0, #0 + break; + 80104c6: e7ed b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.AdrEnable = Nvm.MacGroup2.AdrCtrlOn; + 80104c8: 4b82 ldr r3, [pc, #520] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80104ca: f893 311a ldrb.w r3, [r3, #282] ; 0x11a + 80104ce: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80104d0: 2000 movs r0, #0 + break; + 80104d2: e7e7 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.NetID = Nvm.MacGroup2.NetID; + 80104d4: 4b7f ldr r3, [pc, #508] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80104d6: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 80104da: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80104dc: 2000 movs r0, #0 + break; + 80104de: e7e1 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + SecureElementGetDevAddr( Nvm.MacGroup2.NetworkActivation, &mibGet->Param.DevAddr ); + 80104e0: 1d21 adds r1, r4, #4 + 80104e2: 4b7c ldr r3, [pc, #496] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80104e4: f893 012c ldrb.w r0, [r3, #300] ; 0x12c + 80104e8: f003 ff56 bl 8014398 <SecureElementGetDevAddr> + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80104ec: 2000 movs r0, #0 + break; + 80104ee: e7d9 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.EnablePublicNetwork = Nvm.MacGroup2.PublicNetwork; + 80104f0: 4b78 ldr r3, [pc, #480] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80104f2: f893 3119 ldrb.w r3, [r3, #281] ; 0x119 + 80104f6: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80104f8: 2000 movs r0, #0 + break; + 80104fa: e7d3 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.EnableRepeaterSupport = Nvm.MacGroup2.MacParams.RepeaterSupport; + 80104fc: 4b75 ldr r3, [pc, #468] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80104fe: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 8010502: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010504: 2000 movs r0, #0 + break; + 8010506: e7cd b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + getPhy.Attribute = PHY_CHANNELS; + 8010508: 231d movs r3, #29 + 801050a: f88d 3008 strb.w r3, [sp, #8] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 801050e: a902 add r1, sp, #8 + 8010510: 4b70 ldr r3, [pc, #448] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010512: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010516: f001 fe32 bl 801217e <RegionGetPhyParam> + 801051a: 9001 str r0, [sp, #4] + mibGet->Param.ChannelList = phyParam.Channels; + 801051c: 6060 str r0, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801051e: 2000 movs r0, #0 + break; + 8010520: e7c0 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.Rx2Channel = Nvm.MacGroup2.MacParams.Rx2Channel; + 8010522: 3404 adds r4, #4 + 8010524: 4b6c ldr r3, [pc, #432] ; (80106d8 <LoRaMacMibGetRequestConfirm+0x2d4>) + 8010526: e893 0003 ldmia.w r3, {r0, r1} + 801052a: e884 0003 stmia.w r4, {r0, r1} + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801052e: 2000 movs r0, #0 + break; + 8010530: e7b8 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.Rx2Channel = Nvm.MacGroup2.MacParamsDefaults.Rx2Channel; + 8010532: 3404 adds r4, #4 + 8010534: 4b69 ldr r3, [pc, #420] ; (80106dc <LoRaMacMibGetRequestConfirm+0x2d8>) + 8010536: e893 0003 ldmia.w r3, {r0, r1} + 801053a: e884 0003 stmia.w r4, {r0, r1} + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801053e: 2000 movs r0, #0 + break; + 8010540: e7b0 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.RxCChannel = Nvm.MacGroup2.MacParams.RxCChannel; + 8010542: 3404 adds r4, #4 + 8010544: 4b66 ldr r3, [pc, #408] ; (80106e0 <LoRaMacMibGetRequestConfirm+0x2dc>) + 8010546: e893 0003 ldmia.w r3, {r0, r1} + 801054a: e884 0003 stmia.w r4, {r0, r1} + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801054e: 2000 movs r0, #0 + break; + 8010550: e7a8 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.RxCChannel = Nvm.MacGroup2.MacParamsDefaults.RxCChannel; + 8010552: 3404 adds r4, #4 + 8010554: 4b63 ldr r3, [pc, #396] ; (80106e4 <LoRaMacMibGetRequestConfirm+0x2e0>) + 8010556: e893 0003 ldmia.w r3, {r0, r1} + 801055a: e884 0003 stmia.w r4, {r0, r1} + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801055e: 2000 movs r0, #0 + break; + 8010560: e7a0 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + getPhy.Attribute = PHY_CHANNELS_DEFAULT_MASK; + 8010562: 231b movs r3, #27 + 8010564: f88d 3008 strb.w r3, [sp, #8] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 8010568: a902 add r1, sp, #8 + 801056a: 4b5a ldr r3, [pc, #360] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 801056c: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010570: f001 fe05 bl 801217e <RegionGetPhyParam> + 8010574: 9001 str r0, [sp, #4] + mibGet->Param.ChannelsDefaultMask = phyParam.ChannelsMask; + 8010576: 6060 str r0, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010578: 2000 movs r0, #0 + break; + 801057a: e793 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + getPhy.Attribute = PHY_CHANNELS_MASK; + 801057c: 231a movs r3, #26 + 801057e: f88d 3008 strb.w r3, [sp, #8] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 8010582: a902 add r1, sp, #8 + 8010584: 4b53 ldr r3, [pc, #332] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010586: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 801058a: f001 fdf8 bl 801217e <RegionGetPhyParam> + 801058e: 9001 str r0, [sp, #4] + mibGet->Param.ChannelsMask = phyParam.ChannelsMask; + 8010590: 6060 str r0, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010592: 2000 movs r0, #0 + break; + 8010594: e786 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.ChannelsNbTrans = Nvm.MacGroup2.MacParams.ChannelsNbTrans; + 8010596: 4b4f ldr r3, [pc, #316] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010598: f893 3068 ldrb.w r3, [r3, #104] ; 0x68 + 801059c: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801059e: 2000 movs r0, #0 + break; + 80105a0: e780 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.MaxRxWindow = Nvm.MacGroup2.MacParams.MaxRxWindow; + 80105a2: 4b4c ldr r3, [pc, #304] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80105a4: 6d5b ldr r3, [r3, #84] ; 0x54 + 80105a6: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80105a8: 2000 movs r0, #0 + break; + 80105aa: e77b b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.ReceiveDelay1 = Nvm.MacGroup2.MacParams.ReceiveDelay1; + 80105ac: 4b49 ldr r3, [pc, #292] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80105ae: 6d9b ldr r3, [r3, #88] ; 0x58 + 80105b0: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80105b2: 2000 movs r0, #0 + break; + 80105b4: e776 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.ReceiveDelay2 = Nvm.MacGroup2.MacParams.ReceiveDelay2; + 80105b6: 4b47 ldr r3, [pc, #284] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80105b8: 6ddb ldr r3, [r3, #92] ; 0x5c + 80105ba: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80105bc: 2000 movs r0, #0 + break; + 80105be: e771 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.JoinAcceptDelay1 = Nvm.MacGroup2.MacParams.JoinAcceptDelay1; + 80105c0: 4b44 ldr r3, [pc, #272] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80105c2: 6e1b ldr r3, [r3, #96] ; 0x60 + 80105c4: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80105c6: 2000 movs r0, #0 + break; + 80105c8: e76c b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.JoinAcceptDelay2 = Nvm.MacGroup2.MacParams.JoinAcceptDelay2; + 80105ca: 4b42 ldr r3, [pc, #264] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80105cc: 6e5b ldr r3, [r3, #100] ; 0x64 + 80105ce: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80105d0: 2000 movs r0, #0 + break; + 80105d2: e767 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.ChannelsDefaultDatarate = Nvm.MacGroup2.ChannelsDatarateDefault; + 80105d4: 4b3f ldr r3, [pc, #252] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80105d6: f993 30dd ldrsb.w r3, [r3, #221] ; 0xdd + 80105da: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80105dc: 2000 movs r0, #0 + break; + 80105de: e761 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.ChannelsDatarate = Nvm.MacGroup1.ChannelsDatarate; + 80105e0: 4b3c ldr r3, [pc, #240] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80105e2: f993 3039 ldrsb.w r3, [r3, #57] ; 0x39 + 80105e6: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80105e8: 2000 movs r0, #0 + break; + 80105ea: e75b b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.ChannelsDefaultTxPower = Nvm.MacGroup2.ChannelsTxPowerDefault; + 80105ec: 4b39 ldr r3, [pc, #228] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80105ee: f993 30dc ldrsb.w r3, [r3, #220] ; 0xdc + 80105f2: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80105f4: 2000 movs r0, #0 + break; + 80105f6: e755 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.ChannelsTxPower = Nvm.MacGroup1.ChannelsTxPower; + 80105f8: 4b36 ldr r3, [pc, #216] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80105fa: f993 3038 ldrsb.w r3, [r3, #56] ; 0x38 + 80105fe: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010600: 2000 movs r0, #0 + break; + 8010602: e74f b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.SystemMaxRxError = Nvm.MacGroup2.MacParams.SystemMaxRxError; + 8010604: 4b33 ldr r3, [pc, #204] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010606: 6cdb ldr r3, [r3, #76] ; 0x4c + 8010608: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801060a: 2000 movs r0, #0 + break; + 801060c: e74a b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.MinRxSymbols = Nvm.MacGroup2.MacParams.MinRxSymbols; + 801060e: 4b31 ldr r3, [pc, #196] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010610: f893 3050 ldrb.w r3, [r3, #80] ; 0x50 + 8010614: 7123 strb r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010616: 2000 movs r0, #0 + break; + 8010618: e744 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.AntennaGain = Nvm.MacGroup2.MacParams.AntennaGain; + 801061a: 4b2e ldr r3, [pc, #184] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 801061c: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8010620: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010622: 2000 movs r0, #0 + break; + 8010624: e73e b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.Contexts = &Nvm; + 8010626: 4b2b ldr r3, [pc, #172] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010628: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801062a: 2000 movs r0, #0 + break; + 801062c: e73a b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.BackupContexts = &NvmBackup; + 801062e: 4b2e ldr r3, [pc, #184] ; (80106e8 <LoRaMacMibGetRequestConfirm+0x2e4>) + 8010630: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010632: 2000 movs r0, #0 + break; + 8010634: e736 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.DefaultAntennaGain = Nvm.MacGroup2.MacParamsDefaults.AntennaGain; + 8010636: 4b27 ldr r3, [pc, #156] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010638: f8d3 30cc ldr.w r3, [r3, #204] ; 0xcc + 801063c: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801063e: 2000 movs r0, #0 + break; + 8010640: e730 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.LrWanVersion.LoRaWan = Nvm.MacGroup2.Version; + 8010642: 4b24 ldr r3, [pc, #144] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010644: f8d3 3128 ldr.w r3, [r3, #296] ; 0x128 + 8010648: 6063 str r3, [r4, #4] + mibGet->Param.LrWanVersion.LoRaWanRegion = RegionGetVersion( ); + 801064a: f001 fe49 bl 80122e0 <RegionGetVersion> + 801064e: 60a0 str r0, [r4, #8] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010650: 2000 movs r0, #0 + break; + 8010652: e727 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.RxBCTimeout = Nvm.MacGroup2.MacParams.RxBCTimeout; + 8010654: 4b1f ldr r3, [pc, #124] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010656: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 801065a: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801065c: 2000 movs r0, #0 + break; + 801065e: e721 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.AdrAckLimit = Nvm.MacGroup2.MacParams.AdrAckLimit; + 8010660: 4b1c ldr r3, [pc, #112] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010662: f8b3 3088 ldrh.w r3, [r3, #136] ; 0x88 + 8010666: 80a3 strh r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010668: 2000 movs r0, #0 + break; + 801066a: e71b b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.AdrAckDelay = Nvm.MacGroup2.MacParams.AdrAckDelay; + 801066c: 4b19 ldr r3, [pc, #100] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 801066e: f8b3 308a ldrh.w r3, [r3, #138] ; 0x8a + 8010672: 80a3 strh r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010674: 2000 movs r0, #0 + break; + 8010676: e715 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.AdrAckLimit = Nvm.MacGroup2.MacParamsDefaults.AdrAckLimit; + 8010678: 4b16 ldr r3, [pc, #88] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 801067a: f8b3 30d0 ldrh.w r3, [r3, #208] ; 0xd0 + 801067e: 80a3 strh r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010680: 2000 movs r0, #0 + break; + 8010682: e70f b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.AdrAckDelay = Nvm.MacGroup2.MacParamsDefaults.AdrAckDelay; + 8010684: 4b13 ldr r3, [pc, #76] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010686: f8b3 30d2 ldrh.w r3, [r3, #210] ; 0xd2 + 801068a: 80a3 strh r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 801068c: 2000 movs r0, #0 + break; + 801068e: e709 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + if( Nvm.MacGroup2.Region != LORAMAC_REGION_AS923 && Nvm.MacGroup2.Region != LORAMAC_REGION_KR920 ) + 8010690: 4b10 ldr r3, [pc, #64] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 8010692: f893 3048 ldrb.w r3, [r3, #72] ; 0x48 + 8010696: b11b cbz r3, 80106a0 <LoRaMacMibGetRequestConfirm+0x29c> + 8010698: 2b06 cmp r3, #6 + 801069a: d001 beq.n 80106a0 <LoRaMacMibGetRequestConfirm+0x29c> + status = LORAMAC_STATUS_ERROR; + 801069c: 2018 movs r0, #24 + 801069e: e701 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.RssiFreeThreshold = Nvm.RegionGroup2.RssiFreeThreshold; + 80106a0: 4b0c ldr r3, [pc, #48] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80106a2: f9b3 374c ldrsh.w r3, [r3, #1868] ; 0x74c + 80106a6: 80a3 strh r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80106a8: 2000 movs r0, #0 + 80106aa: e6fb b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + if( Nvm.MacGroup2.Region != LORAMAC_REGION_AS923 && Nvm.MacGroup2.Region != LORAMAC_REGION_KR920 ) + 80106ac: 4b09 ldr r3, [pc, #36] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80106ae: f893 3048 ldrb.w r3, [r3, #72] ; 0x48 + 80106b2: b11b cbz r3, 80106bc <LoRaMacMibGetRequestConfirm+0x2b8> + 80106b4: 2b06 cmp r3, #6 + 80106b6: d001 beq.n 80106bc <LoRaMacMibGetRequestConfirm+0x2b8> + status = LORAMAC_STATUS_ERROR; + 80106b8: 2018 movs r0, #24 + 80106ba: e6f3 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + mibGet->Param.CarrierSenseTime = Nvm.RegionGroup2.CarrierSenseTime; + 80106bc: 4b05 ldr r3, [pc, #20] ; (80106d4 <LoRaMacMibGetRequestConfirm+0x2d0>) + 80106be: f8d3 3750 ldr.w r3, [r3, #1872] ; 0x750 + 80106c2: 6063 str r3, [r4, #4] + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80106c4: 2000 movs r0, #0 + 80106c6: e6ed b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + status = LoRaMacClassBMibGetRequestConfirm( mibGet ); + 80106c8: 4620 mov r0, r4 + 80106ca: f000 fd5f bl 801118c <LoRaMacClassBMibGetRequestConfirm> + break; + 80106ce: e6e9 b.n 80104a4 <LoRaMacMibGetRequestConfirm+0xa0> + return LORAMAC_STATUS_PARAMETER_INVALID; + 80106d0: 2003 movs r0, #3 +} + 80106d2: 4770 bx lr + 80106d4: 20001870 .word 0x20001870 + 80106d8: 200018dc .word 0x200018dc + 80106dc: 20001924 .word 0x20001924 + 80106e0: 200018e4 .word 0x200018e4 + 80106e4: 2000192c .word 0x2000192c + 80106e8: 20001100 .word 0x20001100 + +080106ec <LoRaMacMibSetRequestConfirm>: + +LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t* mibSet ) +{ + 80106ec: b530 push {r4, r5, lr} + 80106ee: b085 sub sp, #20 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + ChanMaskSetParams_t chanMaskSet; + VerifyParams_t verify; + + if( mibSet == NULL ) + 80106f0: 2800 cmp r0, #0 + 80106f2: f000 829e beq.w 8010c32 <LoRaMacMibSetRequestConfirm+0x546> + 80106f6: 4605 mov r5, r0 + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + if( ( MacCtx.MacState & LORAMAC_TX_RUNNING ) == LORAMAC_TX_RUNNING ) + 80106f8: 4b9f ldr r3, [pc, #636] ; (8010978 <LoRaMacMibSetRequestConfirm+0x28c>) + 80106fa: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 80106fe: f013 0f02 tst.w r3, #2 + 8010702: f040 8298 bne.w 8010c36 <LoRaMacMibSetRequestConfirm+0x54a> + { + return LORAMAC_STATUS_BUSY; + } + + switch( mibSet->Type ) + 8010706: 7804 ldrb r4, [r0, #0] + 8010708: 2c3f cmp r4, #63 ; 0x3f + 801070a: f200 828e bhi.w 8010c2a <LoRaMacMibSetRequestConfirm+0x53e> + 801070e: e8df f014 tbh [pc, r4, lsl #1] + 8010712: 0040 .short 0x0040 + 8010714: 004e0045 .word 0x004e0045 + 8010718: 005f0057 .word 0x005f0057 + 801071c: 006b0065 .word 0x006b0065 + 8010720: 0087007a .word 0x0087007a + 8010724: 00a10094 .word 0x00a10094 + 8010728: 00bb00ae .word 0x00bb00ae + 801072c: 00d500c8 .word 0x00d500c8 + 8010730: 00ed00e2 .word 0x00ed00e2 + 8010734: 00f3028c .word 0x00f3028c + 8010738: 013d0119 .word 0x013d0119 + 801073c: 0195016b .word 0x0195016b + 8010740: 01a50185 .word 0x01a50185 + 8010744: 01b501b0 .word 0x01b501b0 + 8010748: 01bf01ba .word 0x01bf01ba + 801074c: 01c901c4 .word 0x01c901c4 + 8010750: 020c01de .word 0x020c01de + 8010754: 022101f7 .word 0x022101f7 + 8010758: 02300228 .word 0x02300228 + 801075c: 023c0236 .word 0x023c0236 + 8010760: 0240028c .word 0x0240028c + 8010764: 028c028c .word 0x028c028c + 8010768: 028c028c .word 0x028c028c + 801076c: 028c028c .word 0x028c028c + 8010770: 028c028c .word 0x028c028c + 8010774: 028c028c .word 0x028c028c + 8010778: 028c028c .word 0x028c028c + 801077c: 028c028c .word 0x028c028c + 8010780: 028c028c .word 0x028c028c + 8010784: 02570251 .word 0x02570251 + 8010788: 0263025d .word 0x0263025d + 801078c: 026f0269 .word 0x026f0269 + 8010790: 027e .short 0x027e + { + case MIB_DEVICE_CLASS: + { + status = SwitchClass( mibSet->Param.Class ); + 8010792: 7900 ldrb r0, [r0, #4] + 8010794: f7ff f902 bl 800f99c <SwitchClass> + 8010798: 4604 mov r4, r0 + break; + 801079a: e24d b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_NETWORK_ACTIVATION: + { + if( mibSet->Param.NetworkActivation != ACTIVATION_TYPE_OTAA ) + 801079c: 7903 ldrb r3, [r0, #4] + 801079e: 2b02 cmp r3, #2 + 80107a0: f000 824d beq.w 8010c3e <LoRaMacMibSetRequestConfirm+0x552> + { + Nvm.MacGroup2.NetworkActivation = mibSet->Param.NetworkActivation; + 80107a4: 4a75 ldr r2, [pc, #468] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 80107a6: f882 312c strb.w r3, [r2, #300] ; 0x12c + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80107aa: 2400 movs r4, #0 + 80107ac: e244 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_DEV_EUI: + { + if( SecureElementSetDevEui( mibSet->Param.DevEui ) != SECURE_ELEMENT_SUCCESS ) + 80107ae: 6840 ldr r0, [r0, #4] + 80107b0: f003 fdaa bl 8014308 <SecureElementSetDevEui> + 80107b4: 4604 mov r4, r0 + 80107b6: 2800 cmp r0, #0 + 80107b8: f000 823e beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + status = LORAMAC_STATUS_PARAMETER_INVALID; + 80107bc: 2403 movs r4, #3 + 80107be: e23b b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_JOIN_EUI: + { + if( SecureElementSetJoinEui( mibSet->Param.JoinEui ) != SECURE_ELEMENT_SUCCESS ) + 80107c0: 6840 ldr r0, [r0, #4] + 80107c2: f003 fdbd bl 8014340 <SecureElementSetJoinEui> + 80107c6: 2800 cmp r0, #0 + 80107c8: f040 8236 bne.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80107cc: 4604 mov r4, r0 + 80107ce: e233 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_ADR: + { + Nvm.MacGroup2.AdrCtrlOn = mibSet->Param.AdrEnable; + 80107d0: 7902 ldrb r2, [r0, #4] + 80107d2: 4b6a ldr r3, [pc, #424] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 80107d4: f883 211a strb.w r2, [r3, #282] ; 0x11a + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80107d8: 2400 movs r4, #0 + break; + 80107da: e22d b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_NET_ID: + { + Nvm.MacGroup2.NetID = mibSet->Param.NetID; + 80107dc: 6842 ldr r2, [r0, #4] + 80107de: 4b67 ldr r3, [pc, #412] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 80107e0: f8c3 20e0 str.w r2, [r3, #224] ; 0xe0 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80107e4: 2400 movs r4, #0 + break; + 80107e6: e227 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_DEV_ADDR: + { + if(SecureElementSetDevAddr( Nvm.MacGroup2.NetworkActivation, mibSet->Param.DevAddr ) != SECURE_ELEMENT_SUCCESS ) + 80107e8: 6841 ldr r1, [r0, #4] + 80107ea: 4b64 ldr r3, [pc, #400] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 80107ec: f893 012c ldrb.w r0, [r3, #300] ; 0x12c + 80107f0: f003 fdc4 bl 801437c <SecureElementSetDevAddr> + 80107f4: 4604 mov r4, r0 + 80107f6: 2800 cmp r0, #0 + 80107f8: f040 8223 bne.w 8010c42 <LoRaMacMibSetRequestConfirm+0x556> + status = LORAMAC_STATUS_PARAMETER_INVALID; + } + else + { + /* Update Nvm.MacGroup2.devAdr to handle set/get sequence */ + Nvm.MacGroup2.DevAddr = mibSet->Param.DevAddr; + 80107fc: 686a ldr r2, [r5, #4] + 80107fe: 4b5f ldr r3, [pc, #380] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 8010800: f8c3 20e4 str.w r2, [r3, #228] ; 0xe4 + 8010804: e218 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_APP_KEY: + { + if( mibSet->Param.AppKey != NULL ) + 8010806: 6841 ldr r1, [r0, #4] + 8010808: 2900 cmp r1, #0 + 801080a: f000 821c beq.w 8010c46 <LoRaMacMibSetRequestConfirm+0x55a> + { + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoSetKey( APP_KEY, mibSet->Param.AppKey ) ) + 801080e: 2000 movs r0, #0 + 8010810: f001 fa9a bl 8011d48 <LoRaMacCryptoSetKey> + 8010814: 4604 mov r4, r0 + 8010816: 2800 cmp r0, #0 + 8010818: f000 820e beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + 801081c: 2411 movs r4, #17 + 801081e: e20b b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_NWK_KEY: + { + if( mibSet->Param.NwkKey != NULL ) + 8010820: 6841 ldr r1, [r0, #4] + 8010822: 2900 cmp r1, #0 + 8010824: f000 8211 beq.w 8010c4a <LoRaMacMibSetRequestConfirm+0x55e> + { + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoSetKey( NWK_KEY, mibSet->Param.NwkKey ) ) + 8010828: 2001 movs r0, #1 + 801082a: f001 fa8d bl 8011d48 <LoRaMacCryptoSetKey> + 801082e: 4604 mov r4, r0 + 8010830: 2800 cmp r0, #0 + 8010832: f000 8201 beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + 8010836: 2411 movs r4, #17 + 8010838: e1fe b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + break; + } +#else + case MIB_NWK_S_KEY: + { + if( mibSet->Param.NwkSKey != NULL ) + 801083a: 6841 ldr r1, [r0, #4] + 801083c: 2900 cmp r1, #0 + 801083e: f000 8206 beq.w 8010c4e <LoRaMacMibSetRequestConfirm+0x562> + { + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoSetKey( NWK_S_KEY, mibSet->Param.NwkSKey ) ) + 8010842: 2008 movs r0, #8 + 8010844: f001 fa80 bl 8011d48 <LoRaMacCryptoSetKey> + 8010848: 4604 mov r4, r0 + 801084a: 2800 cmp r0, #0 + 801084c: f000 81f4 beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + 8010850: 2411 movs r4, #17 + 8010852: e1f1 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + break; + } +#endif /* LORAMAC_VERSION */ + case MIB_APP_S_KEY: + { + if( mibSet->Param.AppSKey != NULL ) + 8010854: 6841 ldr r1, [r0, #4] + 8010856: 2900 cmp r1, #0 + 8010858: f000 81fb beq.w 8010c52 <LoRaMacMibSetRequestConfirm+0x566> + { + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoSetKey( APP_S_KEY, mibSet->Param.AppSKey ) ) + 801085c: 2009 movs r0, #9 + 801085e: f001 fa73 bl 8011d48 <LoRaMacCryptoSetKey> + 8010862: 4604 mov r4, r0 + 8010864: 2800 cmp r0, #0 + 8010866: f000 81e7 beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + 801086a: 2411 movs r4, #17 + 801086c: e1e4 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_MC_KE_KEY: + { + if( mibSet->Param.McKEKey != NULL ) + 801086e: 6841 ldr r1, [r0, #4] + 8010870: 2900 cmp r1, #0 + 8010872: f000 81f0 beq.w 8010c56 <LoRaMacMibSetRequestConfirm+0x56a> + { + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoSetKey( MC_KE_KEY, mibSet->Param.McKEKey ) ) + 8010876: 200c movs r0, #12 + 8010878: f001 fa66 bl 8011d48 <LoRaMacCryptoSetKey> + 801087c: 4604 mov r4, r0 + 801087e: 2800 cmp r0, #0 + 8010880: f000 81da beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + 8010884: 2411 movs r4, #17 + 8010886: e1d7 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + break; + } +#if ( LORAMAC_MAX_MC_CTX > 0 ) + case MIB_MC_KEY_0: + { + if( mibSet->Param.McKey0 != NULL ) + 8010888: 6841 ldr r1, [r0, #4] + 801088a: 2900 cmp r1, #0 + 801088c: f000 81e5 beq.w 8010c5a <LoRaMacMibSetRequestConfirm+0x56e> + { + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoSetKey( MC_KEY_0, mibSet->Param.McKey0 ) ) + 8010890: 200d movs r0, #13 + 8010892: f001 fa59 bl 8011d48 <LoRaMacCryptoSetKey> + 8010896: 4604 mov r4, r0 + 8010898: 2800 cmp r0, #0 + 801089a: f000 81cd beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + 801089e: 2411 movs r4, #17 + 80108a0: e1ca b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_MC_APP_S_KEY_0: + { + if( mibSet->Param.McAppSKey0 != NULL ) + 80108a2: 6841 ldr r1, [r0, #4] + 80108a4: 2900 cmp r1, #0 + 80108a6: f000 81da beq.w 8010c5e <LoRaMacMibSetRequestConfirm+0x572> + { + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoSetKey( MC_APP_S_KEY_0, mibSet->Param.McAppSKey0 ) ) + 80108aa: 200e movs r0, #14 + 80108ac: f001 fa4c bl 8011d48 <LoRaMacCryptoSetKey> + 80108b0: 4604 mov r4, r0 + 80108b2: 2800 cmp r0, #0 + 80108b4: f000 81c0 beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + 80108b8: 2411 movs r4, #17 + 80108ba: e1bd b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_MC_NWK_S_KEY_0: + { + if( mibSet->Param.McNwkSKey0 != NULL ) + 80108bc: 6841 ldr r1, [r0, #4] + 80108be: 2900 cmp r1, #0 + 80108c0: f000 81cf beq.w 8010c62 <LoRaMacMibSetRequestConfirm+0x576> + { + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoSetKey( MC_NWK_S_KEY_0, mibSet->Param.McNwkSKey0 ) ) + 80108c4: 200f movs r0, #15 + 80108c6: f001 fa3f bl 8011d48 <LoRaMacCryptoSetKey> + 80108ca: 4604 mov r4, r0 + 80108cc: 2800 cmp r0, #0 + 80108ce: f000 81b3 beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + return LORAMAC_STATUS_CRYPTO_ERROR; + 80108d2: 2411 movs r4, #17 + 80108d4: e1b0 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + break; + } +#endif /* LORAMAC_MAX_MC_CTX > 3 */ + case MIB_PUBLIC_NETWORK: + { + Nvm.MacGroup2.PublicNetwork = mibSet->Param.EnablePublicNetwork; + 80108d6: 7900 ldrb r0, [r0, #4] + 80108d8: 4b28 ldr r3, [pc, #160] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 80108da: f883 0119 strb.w r0, [r3, #281] ; 0x119 + Radio.SetPublicNetwork( Nvm.MacGroup2.PublicNetwork ); + 80108de: 4c28 ldr r4, [pc, #160] ; (8010980 <LoRaMacMibSetRequestConfirm+0x294>) + 80108e0: 6da3 ldr r3, [r4, #88] ; 0x58 + 80108e2: 4798 blx r3 + Radio.Sleep( ); + 80108e4: 6ae3 ldr r3, [r4, #44] ; 0x2c + 80108e6: 4798 blx r3 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80108e8: 2400 movs r4, #0 + break; + 80108ea: e1a5 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_REPEATER_SUPPORT: + { + Nvm.MacGroup2.MacParams.RepeaterSupport = mibSet->Param.EnableRepeaterSupport; + 80108ec: 7902 ldrb r2, [r0, #4] + 80108ee: 4b23 ldr r3, [pc, #140] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 80108f0: f883 208c strb.w r2, [r3, #140] ; 0x8c + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80108f4: 2400 movs r4, #0 + break; + 80108f6: e19f b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_RX2_CHANNEL: + { + verify.DatarateParams.Datarate = mibSet->Param.Rx2Channel.Datarate; + 80108f8: f990 3008 ldrsb.w r3, [r0, #8] + 80108fc: f88d 3004 strb.w r3, [sp, #4] + verify.DatarateParams.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 8010900: 4b1e ldr r3, [pc, #120] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 8010902: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 8010906: f88d 2005 strb.w r2, [sp, #5] + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_RX_DR ) != true ) + 801090a: 2207 movs r2, #7 + 801090c: a901 add r1, sp, #4 + 801090e: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010912: f001 fc52 bl 80121ba <RegionVerify> + 8010916: b908 cbnz r0, 801091c <LoRaMacMibSetRequestConfirm+0x230> + { + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010918: 2403 movs r4, #3 + 801091a: e18d b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + else + { + verify.Frequency = mibSet->Param.Rx2Channel.Frequency; + 801091c: 686b ldr r3, [r5, #4] + 801091e: 9301 str r3, [sp, #4] + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_FREQUENCY ) != true ) + 8010920: 2200 movs r2, #0 + 8010922: a901 add r1, sp, #4 + 8010924: 4b15 ldr r3, [pc, #84] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 8010926: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 801092a: f001 fc46 bl 80121ba <RegionVerify> + 801092e: 2800 cmp r0, #0 + 8010930: f000 81a0 beq.w 8010c74 <LoRaMacMibSetRequestConfirm+0x588> + { + status = LORAMAC_STATUS_PARAMETER_INVALID; + } + else + { + Nvm.MacGroup2.MacParams.Rx2Channel = mibSet->Param.Rx2Channel; + 8010934: 4b13 ldr r3, [pc, #76] ; (8010984 <LoRaMacMibSetRequestConfirm+0x298>) + 8010936: 3504 adds r5, #4 + 8010938: e895 0003 ldmia.w r5, {r0, r1} + 801093c: e883 0003 stmia.w r3, {r0, r1} + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010940: 2400 movs r4, #0 + 8010942: e179 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_RX2_DEFAULT_CHANNEL: + { + verify.DatarateParams.Datarate = mibSet->Param.Rx2Channel.Datarate; + 8010944: f990 3008 ldrsb.w r3, [r0, #8] + 8010948: f88d 3004 strb.w r3, [sp, #4] + verify.DatarateParams.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 801094c: 4b0b ldr r3, [pc, #44] ; (801097c <LoRaMacMibSetRequestConfirm+0x290>) + 801094e: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 8010952: f88d 2005 strb.w r2, [sp, #5] + + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_RX_DR ) == true ) + 8010956: 2207 movs r2, #7 + 8010958: a901 add r1, sp, #4 + 801095a: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 801095e: f001 fc2c bl 80121ba <RegionVerify> + 8010962: 2800 cmp r0, #0 + 8010964: f000 8188 beq.w 8010c78 <LoRaMacMibSetRequestConfirm+0x58c> + { + Nvm.MacGroup2.MacParamsDefaults.Rx2Channel = mibSet->Param.Rx2DefaultChannel; + 8010968: 4b07 ldr r3, [pc, #28] ; (8010988 <LoRaMacMibSetRequestConfirm+0x29c>) + 801096a: 3504 adds r5, #4 + 801096c: e895 0003 ldmia.w r5, {r0, r1} + 8010970: e883 0003 stmia.w r3, {r0, r1} + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010974: 2400 movs r4, #0 + 8010976: e15f b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + 8010978: 20001fe4 .word 0x20001fe4 + 801097c: 20001870 .word 0x20001870 + 8010980: 08018cb4 .word 0x08018cb4 + 8010984: 200018dc .word 0x200018dc + 8010988: 20001924 .word 0x20001924 + } + break; + } + case MIB_RXC_CHANNEL: + { + verify.DatarateParams.Datarate = mibSet->Param.RxCChannel.Datarate; + 801098c: f990 3008 ldrsb.w r3, [r0, #8] + 8010990: f88d 3004 strb.w r3, [sp, #4] + verify.DatarateParams.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 8010994: 4bb4 ldr r3, [pc, #720] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010996: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 801099a: f88d 2005 strb.w r2, [sp, #5] + + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_RX_DR ) == true ) + 801099e: 2207 movs r2, #7 + 80109a0: a901 add r1, sp, #4 + 80109a2: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 80109a6: f001 fc08 bl 80121ba <RegionVerify> + 80109aa: 2800 cmp r0, #0 + 80109ac: f000 8166 beq.w 8010c7c <LoRaMacMibSetRequestConfirm+0x590> + { + Nvm.MacGroup2.MacParams.RxCChannel = mibSet->Param.RxCChannel; + 80109b0: 4bad ldr r3, [pc, #692] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 80109b2: f103 0274 add.w r2, r3, #116 ; 0x74 + 80109b6: 3504 adds r5, #4 + 80109b8: e895 0003 ldmia.w r5, {r0, r1} + 80109bc: e882 0003 stmia.w r2, {r0, r1} + + if( ( Nvm.MacGroup2.DeviceClass == CLASS_C ) && ( Nvm.MacGroup2.NetworkActivation != ACTIVATION_TYPE_NONE ) ) + 80109c0: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 80109c4: 2b02 cmp r3, #2 + 80109c6: d001 beq.n 80109cc <LoRaMacMibSetRequestConfirm+0x2e0> + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80109c8: 2400 movs r4, #0 + 80109ca: e135 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + if( ( Nvm.MacGroup2.DeviceClass == CLASS_C ) && ( Nvm.MacGroup2.NetworkActivation != ACTIVATION_TYPE_NONE ) ) + 80109cc: f1a2 0374 sub.w r3, r2, #116 ; 0x74 + 80109d0: f893 412c ldrb.w r4, [r3, #300] ; 0x12c + 80109d4: 2c00 cmp r4, #0 + 80109d6: f000 812f beq.w 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + { + // We can only compute the RX window parameters directly, if we are already + // in class c mode and joined. We cannot setup an RX window in case of any other + // class type. + // Set the radio into sleep mode in case we are still in RX mode + Radio.Sleep( ); + 80109da: 4ba4 ldr r3, [pc, #656] ; (8010c6c <LoRaMacMibSetRequestConfirm+0x580>) + 80109dc: 6adb ldr r3, [r3, #44] ; 0x2c + 80109de: 4798 blx r3 + + OpenContinuousRxCWindow( ); + 80109e0: f7fe fd20 bl 800f424 <OpenContinuousRxCWindow> + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 80109e4: 2400 movs r4, #0 + 80109e6: e127 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_RXC_DEFAULT_CHANNEL: + { + verify.DatarateParams.Datarate = mibSet->Param.RxCChannel.Datarate; + 80109e8: f990 3008 ldrsb.w r3, [r0, #8] + 80109ec: f88d 3004 strb.w r3, [sp, #4] + verify.DatarateParams.DownlinkDwellTime = Nvm.MacGroup2.MacParams.DownlinkDwellTime; + 80109f0: 4b9d ldr r3, [pc, #628] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 80109f2: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 80109f6: f88d 2005 strb.w r2, [sp, #5] + + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_RX_DR ) == true ) + 80109fa: 2207 movs r2, #7 + 80109fc: a901 add r1, sp, #4 + 80109fe: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010a02: f001 fbda bl 80121ba <RegionVerify> + 8010a06: 2800 cmp r0, #0 + 8010a08: f000 813a beq.w 8010c80 <LoRaMacMibSetRequestConfirm+0x594> + { + Nvm.MacGroup2.MacParamsDefaults.RxCChannel = mibSet->Param.RxCDefaultChannel; + 8010a0c: 4b98 ldr r3, [pc, #608] ; (8010c70 <LoRaMacMibSetRequestConfirm+0x584>) + 8010a0e: 3504 adds r5, #4 + 8010a10: e895 0003 ldmia.w r5, {r0, r1} + 8010a14: e883 0003 stmia.w r3, {r0, r1} + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010a18: 2400 movs r4, #0 + 8010a1a: e10d b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_CHANNELS_DEFAULT_MASK: + { + chanMaskSet.ChannelsMaskIn = mibSet->Param.ChannelsDefaultMask; + 8010a1c: 6843 ldr r3, [r0, #4] + 8010a1e: 9302 str r3, [sp, #8] + chanMaskSet.ChannelsMaskType = CHANNELS_DEFAULT_MASK; + 8010a20: 2301 movs r3, #1 + 8010a22: f88d 300c strb.w r3, [sp, #12] + + if( RegionChanMaskSet( Nvm.MacGroup2.Region, &chanMaskSet ) == false ) + 8010a26: a902 add r1, sp, #8 + 8010a28: 4b8f ldr r3, [pc, #572] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010a2a: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010a2e: f001 fbd5 bl 80121dc <RegionChanMaskSet> + 8010a32: 2800 cmp r0, #0 + 8010a34: f000 8126 beq.w 8010c84 <LoRaMacMibSetRequestConfirm+0x598> + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010a38: 2400 movs r4, #0 + 8010a3a: e0fd b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_CHANNELS_MASK: + { + chanMaskSet.ChannelsMaskIn = mibSet->Param.ChannelsMask; + 8010a3c: 6843 ldr r3, [r0, #4] + 8010a3e: 9302 str r3, [sp, #8] + chanMaskSet.ChannelsMaskType = CHANNELS_MASK; + 8010a40: 2300 movs r3, #0 + 8010a42: f88d 300c strb.w r3, [sp, #12] + + if( RegionChanMaskSet( Nvm.MacGroup2.Region, &chanMaskSet ) == false ) + 8010a46: a902 add r1, sp, #8 + 8010a48: 4b87 ldr r3, [pc, #540] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010a4a: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010a4e: f001 fbc5 bl 80121dc <RegionChanMaskSet> + 8010a52: 2800 cmp r0, #0 + 8010a54: f000 8118 beq.w 8010c88 <LoRaMacMibSetRequestConfirm+0x59c> + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010a58: 2400 movs r4, #0 + 8010a5a: e0ed b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_CHANNELS_NB_TRANS: + { + if( ( mibSet->Param.ChannelsNbTrans >= 1 ) && + 8010a5c: 7902 ldrb r2, [r0, #4] + 8010a5e: 1e53 subs r3, r2, #1 + 8010a60: b2db uxtb r3, r3 + 8010a62: 2b0e cmp r3, #14 + 8010a64: f200 8112 bhi.w 8010c8c <LoRaMacMibSetRequestConfirm+0x5a0> + ( mibSet->Param.ChannelsNbTrans <= 15 ) ) + { + Nvm.MacGroup2.MacParams.ChannelsNbTrans = mibSet->Param.ChannelsNbTrans; + 8010a68: 4b7f ldr r3, [pc, #508] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010a6a: f883 2068 strb.w r2, [r3, #104] ; 0x68 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010a6e: 2400 movs r4, #0 + 8010a70: e0e2 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_MAX_RX_WINDOW_DURATION: + { + Nvm.MacGroup2.MacParams.MaxRxWindow = mibSet->Param.MaxRxWindow; + 8010a72: 6842 ldr r2, [r0, #4] + 8010a74: 4b7c ldr r3, [pc, #496] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010a76: 655a str r2, [r3, #84] ; 0x54 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010a78: 2400 movs r4, #0 + break; + 8010a7a: e0dd b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_RECEIVE_DELAY_1: + { + Nvm.MacGroup2.MacParams.ReceiveDelay1 = mibSet->Param.ReceiveDelay1; + 8010a7c: 6842 ldr r2, [r0, #4] + 8010a7e: 4b7a ldr r3, [pc, #488] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010a80: 659a str r2, [r3, #88] ; 0x58 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010a82: 2400 movs r4, #0 + break; + 8010a84: e0d8 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_RECEIVE_DELAY_2: + { + Nvm.MacGroup2.MacParams.ReceiveDelay2 = mibSet->Param.ReceiveDelay2; + 8010a86: 6842 ldr r2, [r0, #4] + 8010a88: 4b77 ldr r3, [pc, #476] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010a8a: 65da str r2, [r3, #92] ; 0x5c + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010a8c: 2400 movs r4, #0 + break; + 8010a8e: e0d3 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_JOIN_ACCEPT_DELAY_1: + { + Nvm.MacGroup2.MacParams.JoinAcceptDelay1 = mibSet->Param.JoinAcceptDelay1; + 8010a90: 6842 ldr r2, [r0, #4] + 8010a92: 4b75 ldr r3, [pc, #468] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010a94: 661a str r2, [r3, #96] ; 0x60 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010a96: 2400 movs r4, #0 + break; + 8010a98: e0ce b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_JOIN_ACCEPT_DELAY_2: + { + Nvm.MacGroup2.MacParams.JoinAcceptDelay2 = mibSet->Param.JoinAcceptDelay2; + 8010a9a: 6842 ldr r2, [r0, #4] + 8010a9c: 4b72 ldr r3, [pc, #456] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010a9e: 665a str r2, [r3, #100] ; 0x64 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010aa0: 2400 movs r4, #0 + break; + 8010aa2: e0c9 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_CHANNELS_DEFAULT_DATARATE: + { + verify.DatarateParams.Datarate = mibSet->Param.ChannelsDefaultDatarate; + 8010aa4: f990 3004 ldrsb.w r3, [r0, #4] + 8010aa8: f88d 3004 strb.w r3, [sp, #4] + + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_DEF_TX_DR ) == true ) + 8010aac: 2206 movs r2, #6 + 8010aae: a901 add r1, sp, #4 + 8010ab0: 4b6d ldr r3, [pc, #436] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010ab2: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010ab6: f001 fb80 bl 80121ba <RegionVerify> + 8010aba: 2800 cmp r0, #0 + 8010abc: f000 80e8 beq.w 8010c90 <LoRaMacMibSetRequestConfirm+0x5a4> + { + Nvm.MacGroup2.ChannelsDatarateDefault = verify.DatarateParams.Datarate; + 8010ac0: f99d 2004 ldrsb.w r2, [sp, #4] + 8010ac4: 4b68 ldr r3, [pc, #416] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010ac6: f883 20dd strb.w r2, [r3, #221] ; 0xdd + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010aca: 2400 movs r4, #0 + 8010acc: e0b4 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_CHANNELS_DATARATE: + { + verify.DatarateParams.Datarate = mibSet->Param.ChannelsDatarate; + 8010ace: f990 3004 ldrsb.w r3, [r0, #4] + 8010ad2: f88d 3004 strb.w r3, [sp, #4] + verify.DatarateParams.UplinkDwellTime = Nvm.MacGroup2.MacParams.UplinkDwellTime; + 8010ad6: 4b64 ldr r3, [pc, #400] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010ad8: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 8010adc: f88d 2006 strb.w r2, [sp, #6] + + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_TX_DR ) == true ) + 8010ae0: 2205 movs r2, #5 + 8010ae2: a901 add r1, sp, #4 + 8010ae4: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010ae8: f001 fb67 bl 80121ba <RegionVerify> + 8010aec: 2800 cmp r0, #0 + 8010aee: f000 80d1 beq.w 8010c94 <LoRaMacMibSetRequestConfirm+0x5a8> + { + Nvm.MacGroup1.ChannelsDatarate = verify.DatarateParams.Datarate; + 8010af2: f99d 2004 ldrsb.w r2, [sp, #4] + 8010af6: 4b5c ldr r3, [pc, #368] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010af8: f883 2039 strb.w r2, [r3, #57] ; 0x39 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010afc: 2400 movs r4, #0 + 8010afe: e09b b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_CHANNELS_DEFAULT_TX_POWER: + { + verify.TxPower = mibSet->Param.ChannelsDefaultTxPower; + 8010b00: f990 3004 ldrsb.w r3, [r0, #4] + 8010b04: f88d 3004 strb.w r3, [sp, #4] + + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_DEF_TX_POWER ) == true ) + 8010b08: 220a movs r2, #10 + 8010b0a: a901 add r1, sp, #4 + 8010b0c: 4b56 ldr r3, [pc, #344] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010b0e: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010b12: f001 fb52 bl 80121ba <RegionVerify> + 8010b16: 2800 cmp r0, #0 + 8010b18: f000 80be beq.w 8010c98 <LoRaMacMibSetRequestConfirm+0x5ac> + { + Nvm.MacGroup2.ChannelsTxPowerDefault = verify.TxPower; + 8010b1c: f99d 2004 ldrsb.w r2, [sp, #4] + 8010b20: 4b51 ldr r3, [pc, #324] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010b22: f883 20dc strb.w r2, [r3, #220] ; 0xdc + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010b26: 2400 movs r4, #0 + 8010b28: e086 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_CHANNELS_TX_POWER: + { + verify.TxPower = mibSet->Param.ChannelsTxPower; + 8010b2a: f990 3004 ldrsb.w r3, [r0, #4] + 8010b2e: f88d 3004 strb.w r3, [sp, #4] + + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_TX_POWER ) == true ) + 8010b32: 2209 movs r2, #9 + 8010b34: a901 add r1, sp, #4 + 8010b36: 4b4c ldr r3, [pc, #304] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010b38: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010b3c: f001 fb3d bl 80121ba <RegionVerify> + 8010b40: 2800 cmp r0, #0 + 8010b42: f000 80ab beq.w 8010c9c <LoRaMacMibSetRequestConfirm+0x5b0> + { + Nvm.MacGroup1.ChannelsTxPower = verify.TxPower; + 8010b46: f99d 2004 ldrsb.w r2, [sp, #4] + 8010b4a: 4b47 ldr r3, [pc, #284] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010b4c: f883 2038 strb.w r2, [r3, #56] ; 0x38 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010b50: 2400 movs r4, #0 + 8010b52: e071 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_SYSTEM_MAX_RX_ERROR: + { + Nvm.MacGroup2.MacParams.SystemMaxRxError = Nvm.MacGroup2.MacParamsDefaults.SystemMaxRxError = mibSet->Param.SystemMaxRxError; + 8010b54: 6842 ldr r2, [r0, #4] + 8010b56: 4b44 ldr r3, [pc, #272] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010b58: f8c3 2094 str.w r2, [r3, #148] ; 0x94 + 8010b5c: 64da str r2, [r3, #76] ; 0x4c + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010b5e: 2400 movs r4, #0 + break; + 8010b60: e06a b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_MIN_RX_SYMBOLS: + { + Nvm.MacGroup2.MacParams.MinRxSymbols = Nvm.MacGroup2.MacParamsDefaults.MinRxSymbols = mibSet->Param.MinRxSymbols; + 8010b62: 7902 ldrb r2, [r0, #4] + 8010b64: 4b40 ldr r3, [pc, #256] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010b66: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 8010b6a: f883 2050 strb.w r2, [r3, #80] ; 0x50 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010b6e: 2400 movs r4, #0 + break; + 8010b70: e062 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_ANTENNA_GAIN: + { + Nvm.MacGroup2.MacParams.AntennaGain = mibSet->Param.AntennaGain; + 8010b72: 6842 ldr r2, [r0, #4] + 8010b74: 4b3c ldr r3, [pc, #240] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010b76: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010b7a: 2400 movs r4, #0 + break; + 8010b7c: e05c b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_DEFAULT_ANTENNA_GAIN: + { + Nvm.MacGroup2.MacParamsDefaults.AntennaGain = mibSet->Param.DefaultAntennaGain; + 8010b7e: 6842 ldr r2, [r0, #4] + 8010b80: 4b39 ldr r3, [pc, #228] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010b82: f8c3 20cc str.w r2, [r3, #204] ; 0xcc + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010b86: 2400 movs r4, #0 + break; + 8010b88: e056 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_NVM_CTXS: + { + status = RestoreNvmData( ); + 8010b8a: f7fe fd53 bl 800f634 <RestoreNvmData> + 8010b8e: 4604 mov r4, r0 + break; + 8010b90: e052 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_ABP_LORAWAN_VERSION: + { + if( mibSet->Param.AbpLrWanVersion.Fields.Minor <= 1 ) + 8010b92: 7983 ldrb r3, [r0, #6] + 8010b94: 2b01 cmp r3, #1 + 8010b96: d901 bls.n 8010b9c <LoRaMacMibSetRequestConfirm+0x4b0> + return LORAMAC_STATUS_CRYPTO_ERROR; + } + } + else + { + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010b98: 2403 movs r4, #3 + 8010b9a: e04d b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + Nvm.MacGroup2.Version = mibSet->Param.AbpLrWanVersion; + 8010b9c: 6842 ldr r2, [r0, #4] + 8010b9e: 4b32 ldr r3, [pc, #200] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010ba0: f8c3 2128 str.w r2, [r3, #296] ; 0x128 + if( LORAMAC_CRYPTO_SUCCESS != LoRaMacCryptoSetLrWanVersion( mibSet->Param.AbpLrWanVersion ) ) + 8010ba4: 6840 ldr r0, [r0, #4] + 8010ba6: f000 ff71 bl 8011a8c <LoRaMacCryptoSetLrWanVersion> + 8010baa: 4604 mov r4, r0 + 8010bac: 2800 cmp r0, #0 + 8010bae: d043 beq.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + return LORAMAC_STATUS_CRYPTO_ERROR; + 8010bb0: 2411 movs r4, #17 + 8010bb2: e041 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + break; + } + case MIB_RXB_C_TIMEOUT: + { + Nvm.MacGroup2.MacParams.RxBCTimeout = mibSet->Param.RxBCTimeout; + 8010bb4: 6842 ldr r2, [r0, #4] + 8010bb6: 4b2c ldr r3, [pc, #176] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010bb8: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010bbc: 2400 movs r4, #0 + break; + 8010bbe: e03b b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + break; + } +#endif /* LORAMAC_VERSION */ + case MIB_ADR_ACK_LIMIT: + { + Nvm.MacGroup2.MacParams.AdrAckLimit = mibSet->Param.AdrAckLimit; + 8010bc0: 8882 ldrh r2, [r0, #4] + 8010bc2: 4b29 ldr r3, [pc, #164] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010bc4: f8a3 2088 strh.w r2, [r3, #136] ; 0x88 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010bc8: 2400 movs r4, #0 + break; + 8010bca: e035 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_ADR_ACK_DELAY: + { + Nvm.MacGroup2.MacParams.AdrAckDelay = mibSet->Param.AdrAckDelay; + 8010bcc: 8882 ldrh r2, [r0, #4] + 8010bce: 4b26 ldr r3, [pc, #152] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010bd0: f8a3 208a strh.w r2, [r3, #138] ; 0x8a + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010bd4: 2400 movs r4, #0 + break; + 8010bd6: e02f b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_ADR_ACK_DEFAULT_LIMIT: + { + Nvm.MacGroup2.MacParamsDefaults.AdrAckLimit = mibSet->Param.AdrAckLimit; + 8010bd8: 8882 ldrh r2, [r0, #4] + 8010bda: 4b23 ldr r3, [pc, #140] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010bdc: f8a3 20d0 strh.w r2, [r3, #208] ; 0xd0 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010be0: 2400 movs r4, #0 + break; + 8010be2: e029 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_ADR_ACK_DEFAULT_DELAY: + { + Nvm.MacGroup2.MacParamsDefaults.AdrAckDelay = mibSet->Param.AdrAckDelay; + 8010be4: 8882 ldrh r2, [r0, #4] + 8010be6: 4b20 ldr r3, [pc, #128] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010be8: f8a3 20d2 strh.w r2, [r3, #210] ; 0xd2 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010bec: 2400 movs r4, #0 + break; + 8010bee: e023 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + case MIB_RSSI_FREE_THRESHOLD: + { +#if defined(REGION_KR920) || defined(REGION_AS923) + if( Nvm.MacGroup2.Region != LORAMAC_REGION_AS923 && Nvm.MacGroup2.Region != LORAMAC_REGION_KR920 ) + 8010bf0: 4b1d ldr r3, [pc, #116] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010bf2: f893 3048 ldrb.w r3, [r3, #72] ; 0x48 + 8010bf6: b11b cbz r3, 8010c00 <LoRaMacMibSetRequestConfirm+0x514> + 8010bf8: 2b06 cmp r3, #6 + 8010bfa: d001 beq.n 8010c00 <LoRaMacMibSetRequestConfirm+0x514> + { + status = LORAMAC_STATUS_ERROR; + 8010bfc: 2418 movs r4, #24 + 8010bfe: e01b b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + else + { + Nvm.RegionGroup2.RssiFreeThreshold = mibSet->Param.RssiFreeThreshold; + 8010c00: f9b5 2004 ldrsh.w r2, [r5, #4] + 8010c04: 4b18 ldr r3, [pc, #96] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010c06: f8a3 274c strh.w r2, [r3, #1868] ; 0x74c + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010c0a: 2400 movs r4, #0 + 8010c0c: e014 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + break; + } + case MIB_CARRIER_SENSE_TIME: + { +#if defined(REGION_KR920) || defined(REGION_AS923) + if( Nvm.MacGroup2.Region != LORAMAC_REGION_AS923 && Nvm.MacGroup2.Region != LORAMAC_REGION_KR920 ) + 8010c0e: 4b16 ldr r3, [pc, #88] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010c10: f893 3048 ldrb.w r3, [r3, #72] ; 0x48 + 8010c14: b11b cbz r3, 8010c1e <LoRaMacMibSetRequestConfirm+0x532> + 8010c16: 2b06 cmp r3, #6 + 8010c18: d001 beq.n 8010c1e <LoRaMacMibSetRequestConfirm+0x532> + { + status = LORAMAC_STATUS_ERROR; + 8010c1a: 2418 movs r4, #24 + 8010c1c: e00c b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + } + else + { + Nvm.RegionGroup2.CarrierSenseTime = mibSet->Param.CarrierSenseTime; + 8010c1e: 686a ldr r2, [r5, #4] + 8010c20: 4b11 ldr r3, [pc, #68] ; (8010c68 <LoRaMacMibSetRequestConfirm+0x57c>) + 8010c22: f8c3 2750 str.w r2, [r3, #1872] ; 0x750 + LoRaMacStatus_t status = LORAMAC_STATUS_OK; + 8010c26: 2400 movs r4, #0 + 8010c28: e006 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> +#endif + break; + } + default: + { + status = LoRaMacMibClassBSetRequestConfirm( mibSet ); + 8010c2a: f000 fab1 bl 8011190 <LoRaMacMibClassBSetRequestConfirm> + 8010c2e: 4604 mov r4, r0 + break; + 8010c30: e002 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + return LORAMAC_STATUS_PARAMETER_INVALID; + 8010c32: 2403 movs r4, #3 + 8010c34: e000 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + return LORAMAC_STATUS_BUSY; + 8010c36: 2401 movs r4, #1 + // Handle NVM potential changes + MacCtx.MacFlags.Bits.NvmHandle = 1; + } +#endif /* LORAMAC_VERSION */ + return status; +} + 8010c38: 4620 mov r0, r4 + 8010c3a: b005 add sp, #20 + 8010c3c: bd30 pop {r4, r5, pc} + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c3e: 2403 movs r4, #3 + 8010c40: e7fa b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c42: 2403 movs r4, #3 + 8010c44: e7f8 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c46: 2403 movs r4, #3 + 8010c48: e7f6 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c4a: 2403 movs r4, #3 + 8010c4c: e7f4 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c4e: 2403 movs r4, #3 + 8010c50: e7f2 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c52: 2403 movs r4, #3 + 8010c54: e7f0 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c56: 2403 movs r4, #3 + 8010c58: e7ee b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c5a: 2403 movs r4, #3 + 8010c5c: e7ec b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c5e: 2403 movs r4, #3 + 8010c60: e7ea b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c62: 2403 movs r4, #3 + 8010c64: e7e8 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + 8010c66: bf00 nop + 8010c68: 20001870 .word 0x20001870 + 8010c6c: 08018cb4 .word 0x08018cb4 + 8010c70: 2000192c .word 0x2000192c + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c74: 2403 movs r4, #3 + 8010c76: e7df b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c78: 2403 movs r4, #3 + 8010c7a: e7dd b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c7c: 2403 movs r4, #3 + 8010c7e: e7db b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c80: 2403 movs r4, #3 + 8010c82: e7d9 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c84: 2403 movs r4, #3 + 8010c86: e7d7 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c88: 2403 movs r4, #3 + 8010c8a: e7d5 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c8c: 2403 movs r4, #3 + 8010c8e: e7d3 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c90: 2403 movs r4, #3 + 8010c92: e7d1 b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c94: 2403 movs r4, #3 + 8010c96: e7cf b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c98: 2403 movs r4, #3 + 8010c9a: e7cd b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + status = LORAMAC_STATUS_PARAMETER_INVALID; + 8010c9c: 2403 movs r4, #3 + 8010c9e: e7cb b.n 8010c38 <LoRaMacMibSetRequestConfirm+0x54c> + +08010ca0 <LoRaMacMlmeRequest>: + + return LORAMAC_STATUS_OK; +} + +LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t* mlmeRequest ) +{ + 8010ca0: b570 push {r4, r5, r6, lr} + 8010ca2: b084 sub sp, #16 + LoRaMacStatus_t status = LORAMAC_STATUS_SERVICE_UNKNOWN; + MlmeConfirmQueue_t queueElement; + uint8_t macCmdPayload[2] = { 0x00, 0x00 }; + 8010ca4: 2300 movs r3, #0 + 8010ca6: f8ad 3008 strh.w r3, [sp, #8] + + if( mlmeRequest == NULL ) + 8010caa: 2800 cmp r0, #0 + 8010cac: f000 80d0 beq.w 8010e50 <LoRaMacMlmeRequest+0x1b0> + 8010cb0: 4605 mov r5, r0 + // Initialize mlmeRequest->ReqReturn.DutyCycleWaitTime to 0 in order to + // return a valid value in case the MAC is busy. + mlmeRequest->ReqReturn.DutyCycleWaitTime = 0; +#endif /* LORAMAC_VERSION */ + + if( LoRaMacIsBusy( ) == true ) + 8010cb2: f7ff f8a1 bl 800fdf8 <LoRaMacIsBusy> + 8010cb6: b118 cbz r0, 8010cc0 <LoRaMacMlmeRequest+0x20> + { + return LORAMAC_STATUS_BUSY; + 8010cb8: 2401 movs r4, #1 + else + { + LoRaMacConfirmQueueAdd( &queueElement ); + } + return status; +} + 8010cba: 4620 mov r0, r4 + 8010cbc: b004 add sp, #16 + 8010cbe: bd70 pop {r4, r5, r6, pc} + if( LoRaMacConfirmQueueIsFull( ) == true ) + 8010cc0: f000 fd18 bl 80116f4 <LoRaMacConfirmQueueIsFull> + 8010cc4: b108 cbz r0, 8010cca <LoRaMacMlmeRequest+0x2a> + return LORAMAC_STATUS_BUSY; + 8010cc6: 2401 movs r4, #1 + 8010cc8: e7f7 b.n 8010cba <LoRaMacMlmeRequest+0x1a> + if( LoRaMacConfirmQueueGetCnt( ) == 0 ) + 8010cca: f000 fd0d bl 80116e8 <LoRaMacConfirmQueueGetCnt> + 8010cce: b1f8 cbz r0, 8010d10 <LoRaMacMlmeRequest+0x70> + MacCtx.MlmeConfirm.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 8010cd0: 4b60 ldr r3, [pc, #384] ; (8010e54 <LoRaMacMlmeRequest+0x1b4>) + 8010cd2: 2101 movs r1, #1 + 8010cd4: f883 1449 strb.w r1, [r3, #1097] ; 0x449 + MacCtx.MacFlags.Bits.MlmeReq = 1; + 8010cd8: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 8010cdc: f042 0204 orr.w r2, r2, #4 + 8010ce0: f883 2481 strb.w r2, [r3, #1153] ; 0x481 + queueElement.Request = mlmeRequest->Type; + 8010ce4: 782b ldrb r3, [r5, #0] + 8010ce6: f88d 300c strb.w r3, [sp, #12] + queueElement.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 8010cea: f88d 100d strb.w r1, [sp, #13] + queueElement.RestrictCommonReadyToHandle = false; + 8010cee: 2200 movs r2, #0 + 8010cf0: f88d 200f strb.w r2, [sp, #15] + switch( mlmeRequest->Type ) + 8010cf4: 461c mov r4, r3 + 8010cf6: 3b01 subs r3, #1 + 8010cf8: 2b0d cmp r3, #13 + 8010cfa: f200 808f bhi.w 8010e1c <LoRaMacMlmeRequest+0x17c> + 8010cfe: e8df f003 tbb [pc, r3] + 8010d02: 8d0d .short 0x8d0d + 8010d04: 42388d8d .word 0x42388d8d + 8010d08: 508d8d47 .word 0x508d8d47 + 8010d0c: 755f7e8d .word 0x755f7e8d + memset1( ( uint8_t* ) &MacCtx.MlmeConfirm, 0, sizeof( MacCtx.MlmeConfirm ) ); + 8010d10: 2214 movs r2, #20 + 8010d12: 2100 movs r1, #0 + 8010d14: 4850 ldr r0, [pc, #320] ; (8010e58 <LoRaMacMlmeRequest+0x1b8>) + 8010d16: f003 fc58 bl 80145ca <memset1> + 8010d1a: e7d9 b.n 8010cd0 <LoRaMacMlmeRequest+0x30> + if( ( MacCtx.MacState & LORAMAC_TX_DELAYED ) == LORAMAC_TX_DELAYED ) + 8010d1c: 4b4d ldr r3, [pc, #308] ; (8010e54 <LoRaMacMlmeRequest+0x1b4>) + 8010d1e: f8d3 3340 ldr.w r3, [r3, #832] ; 0x340 + 8010d22: f013 0f20 tst.w r3, #32 + 8010d26: d1c8 bne.n 8010cba <LoRaMacMlmeRequest+0x1a> + ResetMacParameters( false ); + 8010d28: 2000 movs r0, #0 + 8010d2a: f7fe fd79 bl 800f820 <ResetMacParameters> + Nvm.MacGroup1.ChannelsDatarate = RegionAlternateDr( Nvm.MacGroup2.Region, mlmeRequest->Req.Join.Datarate, ALTERNATE_DR ); + 8010d2e: 4c4b ldr r4, [pc, #300] ; (8010e5c <LoRaMacMlmeRequest+0x1bc>) + 8010d30: 2200 movs r2, #0 + 8010d32: f995 1005 ldrsb.w r1, [r5, #5] + 8010d36: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 8010d3a: f001 faa8 bl 801228e <RegionAlternateDr> + 8010d3e: f884 0039 strb.w r0, [r4, #57] ; 0x39 + Nvm.MacGroup1.ChannelsTxPower = mlmeRequest->Req.Join.TxPower; + 8010d42: f995 3006 ldrsb.w r3, [r5, #6] + 8010d46: f884 3038 strb.w r3, [r4, #56] ; 0x38 + queueElement.Status = LORAMAC_EVENT_INFO_STATUS_JOIN_FAIL; + 8010d4a: 2307 movs r3, #7 + 8010d4c: f88d 300d strb.w r3, [sp, #13] + status = SendReJoinReq( JOIN_REQ ); + 8010d50: 20ff movs r0, #255 ; 0xff + 8010d52: f7fe feb5 bl 800fac0 <SendReJoinReq> + if( status != LORAMAC_STATUS_OK ) + 8010d56: 4604 mov r4, r0 + 8010d58: 2800 cmp r0, #0 + 8010d5a: d060 beq.n 8010e1e <LoRaMacMlmeRequest+0x17e> + Nvm.MacGroup1.ChannelsDatarate = RegionAlternateDr( Nvm.MacGroup2.Region, mlmeRequest->Req.Join.Datarate, ALTERNATE_DR_RESTORE ); + 8010d5c: 4e3f ldr r6, [pc, #252] ; (8010e5c <LoRaMacMlmeRequest+0x1bc>) + 8010d5e: 2201 movs r2, #1 + 8010d60: f995 1005 ldrsb.w r1, [r5, #5] + 8010d64: f896 0048 ldrb.w r0, [r6, #72] ; 0x48 + 8010d68: f001 fa91 bl 801228e <RegionAlternateDr> + 8010d6c: f886 0039 strb.w r0, [r6, #57] ; 0x39 + 8010d70: e055 b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + if( LoRaMacCommandsAddCmd( MOTE_MAC_LINK_CHECK_REQ, macCmdPayload, 0 ) != LORAMAC_COMMANDS_SUCCESS ) + 8010d72: 2200 movs r2, #0 + 8010d74: a902 add r1, sp, #8 + 8010d76: 2002 movs r0, #2 + 8010d78: f000 faaa bl 80112d0 <LoRaMacCommandsAddCmd> + 8010d7c: 4604 mov r4, r0 + 8010d7e: 2800 cmp r0, #0 + 8010d80: d04d beq.n 8010e1e <LoRaMacMlmeRequest+0x17e> + status = LORAMAC_STATUS_MAC_COMMAD_ERROR; + 8010d82: 2413 movs r4, #19 + 8010d84: e04b b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + status = SetTxContinuousWave( mlmeRequest->Req.TxCw.Timeout ); + 8010d86: 88a8 ldrh r0, [r5, #4] + 8010d88: f7fe febc bl 800fb04 <SetTxContinuousWave> + 8010d8c: 4604 mov r4, r0 + break; + 8010d8e: e046 b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + status = SetTxContinuousWave1( mlmeRequest->Req.TxCw.Timeout, mlmeRequest->Req.TxCw.Frequency, mlmeRequest->Req.TxCw.Power ); + 8010d90: f995 200c ldrsb.w r2, [r5, #12] + 8010d94: b2d2 uxtb r2, r2 + 8010d96: 68a9 ldr r1, [r5, #8] + 8010d98: 88a8 ldrh r0, [r5, #4] + 8010d9a: f7fc ff1f bl 800dbdc <SetTxContinuousWave1> + 8010d9e: 4604 mov r4, r0 + break; + 8010da0: e03d b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + if (LoRaMacCommandsGetCmd( MOTE_MAC_DEVICE_TIME_REQ, &newCmd ) == LORAMAC_COMMANDS_SUCCESS) + 8010da2: a901 add r1, sp, #4 + 8010da4: 200d movs r0, #13 + 8010da6: f000 fadf bl 8011368 <LoRaMacCommandsGetCmd> + 8010daa: 4604 mov r4, r0 + 8010dac: b3b8 cbz r0, 8010e1e <LoRaMacMlmeRequest+0x17e> + else if( LoRaMacCommandsAddCmd( MOTE_MAC_DEVICE_TIME_REQ, macCmdPayload, 0 ) != LORAMAC_COMMANDS_SUCCESS ) + 8010dae: 2200 movs r2, #0 + 8010db0: a902 add r1, sp, #8 + 8010db2: 200d movs r0, #13 + 8010db4: f000 fa8c bl 80112d0 <LoRaMacCommandsAddCmd> + 8010db8: 4604 mov r4, r0 + 8010dba: b380 cbz r0, 8010e1e <LoRaMacMlmeRequest+0x17e> + status = LORAMAC_STATUS_MAC_COMMAD_ERROR; + 8010dbc: 2413 movs r4, #19 + break; + 8010dbe: e02e b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + if( Nvm.MacGroup2.DeviceClass == CLASS_A ) + 8010dc0: 4b26 ldr r3, [pc, #152] ; (8010e5c <LoRaMacMlmeRequest+0x1bc>) + 8010dc2: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 8010dc6: b10b cbz r3, 8010dcc <LoRaMacMlmeRequest+0x12c> + LoRaMacStatus_t status = LORAMAC_STATUS_SERVICE_UNKNOWN; + 8010dc8: 2402 movs r4, #2 + 8010dca: e028 b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + uint8_t value = mlmeRequest->Req.PingSlotInfo.PingSlot.Value; + 8010dcc: 792c ldrb r4, [r5, #4] + LoRaMacClassBSetPingSlotInfo( mlmeRequest->Req.PingSlotInfo.PingSlot.Fields.Periodicity ); + 8010dce: f004 0007 and.w r0, r4, #7 + 8010dd2: f000 f9d6 bl 8011182 <LoRaMacClassBSetPingSlotInfo> + macCmdPayload[0] = value; + 8010dd6: f88d 4008 strb.w r4, [sp, #8] + if( LoRaMacCommandsAddCmd( MOTE_MAC_PING_SLOT_INFO_REQ, macCmdPayload, 1 ) != LORAMAC_COMMANDS_SUCCESS ) + 8010dda: 2201 movs r2, #1 + 8010ddc: a902 add r1, sp, #8 + 8010dde: 2010 movs r0, #16 + 8010de0: f000 fa76 bl 80112d0 <LoRaMacCommandsAddCmd> + 8010de4: 4604 mov r4, r0 + 8010de6: b1d0 cbz r0, 8010e1e <LoRaMacMlmeRequest+0x17e> + status = LORAMAC_STATUS_MAC_COMMAD_ERROR; + 8010de8: 2413 movs r4, #19 + 8010dea: e018 b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + if( LoRaMacCommandsAddCmd( MOTE_MAC_BEACON_TIMING_REQ, macCmdPayload, 0 ) != LORAMAC_COMMANDS_SUCCESS ) + 8010dec: 2200 movs r2, #0 + 8010dee: a902 add r1, sp, #8 + 8010df0: 2012 movs r0, #18 + 8010df2: f000 fa6d bl 80112d0 <LoRaMacCommandsAddCmd> + 8010df6: 4604 mov r4, r0 + 8010df8: b188 cbz r0, 8010e1e <LoRaMacMlmeRequest+0x17e> + status = LORAMAC_STATUS_MAC_COMMAD_ERROR; + 8010dfa: 2413 movs r4, #19 + 8010dfc: e00f b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + queueElement.RestrictCommonReadyToHandle = true; + 8010dfe: 2301 movs r3, #1 + 8010e00: f88d 300f strb.w r3, [sp, #15] + if( LoRaMacClassBIsAcquisitionInProgress( ) == false ) + 8010e04: f000 f9ae bl 8011164 <LoRaMacClassBIsAcquisitionInProgress> + 8010e08: b108 cbz r0, 8010e0e <LoRaMacMlmeRequest+0x16e> + status = LORAMAC_STATUS_BUSY; + 8010e0a: 2401 movs r4, #1 + 8010e0c: e007 b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + LoRaMacClassBSetBeaconState( BEACON_STATE_ACQUISITION ); + 8010e0e: f000 f9a6 bl 801115e <LoRaMacClassBSetBeaconState> + LoRaMacClassBBeaconTimerEvent( NULL ); + 8010e12: 2000 movs r0, #0 + 8010e14: f000 f9a8 bl 8011168 <LoRaMacClassBBeaconTimerEvent> + status = LORAMAC_STATUS_OK; + 8010e18: 2400 movs r4, #0 + 8010e1a: e000 b.n 8010e1e <LoRaMacMlmeRequest+0x17e> + switch( mlmeRequest->Type ) + 8010e1c: 2402 movs r4, #2 + mlmeRequest->ReqReturn.DutyCycleWaitTime = MacCtx.DutyCycleWaitTime; + 8010e1e: 4b0d ldr r3, [pc, #52] ; (8010e54 <LoRaMacMlmeRequest+0x1b4>) + 8010e20: f8d3 3484 ldr.w r3, [r3, #1156] ; 0x484 + 8010e24: 612b str r3, [r5, #16] + if( status != LORAMAC_STATUS_OK ) + 8010e26: b17c cbz r4, 8010e48 <LoRaMacMlmeRequest+0x1a8> + if( LoRaMacConfirmQueueGetCnt( ) == 0 ) + 8010e28: f000 fc5e bl 80116e8 <LoRaMacConfirmQueueGetCnt> + 8010e2c: 2800 cmp r0, #0 + 8010e2e: f47f af44 bne.w 8010cba <LoRaMacMlmeRequest+0x1a> + MacCtx.NodeAckRequested = false; + 8010e32: 4b08 ldr r3, [pc, #32] ; (8010e54 <LoRaMacMlmeRequest+0x1b4>) + 8010e34: 2100 movs r1, #0 + 8010e36: f883 1410 strb.w r1, [r3, #1040] ; 0x410 + MacCtx.MacFlags.Bits.MlmeReq = 0; + 8010e3a: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 8010e3e: f361 0282 bfi r2, r1, #2, #1 + 8010e42: f883 2481 strb.w r2, [r3, #1153] ; 0x481 + 8010e46: e738 b.n 8010cba <LoRaMacMlmeRequest+0x1a> + LoRaMacConfirmQueueAdd( &queueElement ); + 8010e48: a803 add r0, sp, #12 + 8010e4a: f000 fb83 bl 8011554 <LoRaMacConfirmQueueAdd> + 8010e4e: e734 b.n 8010cba <LoRaMacMlmeRequest+0x1a> + return LORAMAC_STATUS_PARAMETER_INVALID; + 8010e50: 2403 movs r4, #3 + 8010e52: e732 b.n 8010cba <LoRaMacMlmeRequest+0x1a> + 8010e54: 20001fe4 .word 0x20001fe4 + 8010e58: 2000242c .word 0x2000242c + 8010e5c: 20001870 .word 0x20001870 + +08010e60 <LoRaMacMcpsRequest>: + void* fBuffer = NULL; + uint16_t fBufferSize; + int8_t datarate = DR_0; + bool readyToSend = false; + + if( mcpsRequest == NULL ) + 8010e60: 2800 cmp r0, #0 + 8010e62: f000 80b0 beq.w 8010fc6 <LoRaMacMcpsRequest+0x166> +{ + 8010e66: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8010e6a: b088 sub sp, #32 + 8010e6c: 460d mov r5, r1 + 8010e6e: f04f 0800 mov.w r8, #0 + 8010e72: 4604 mov r4, r0 + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + if( LoRaMacIsBusy( ) == true ) + 8010e74: f7fe ffc0 bl 800fdf8 <LoRaMacIsBusy> + 8010e78: 4606 mov r6, r0 + 8010e7a: b118 cbz r0, 8010e84 <LoRaMacMcpsRequest+0x24> + { + return LORAMAC_STATUS_BUSY; + 8010e7c: 2001 movs r0, #1 + + // Fill return structure + mcpsRequest->ReqReturn.DutyCycleWaitTime = MacCtx.DutyCycleWaitTime; + + return status; +} + 8010e7e: b008 add sp, #32 + 8010e80: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + macHdr.Value = 0; + 8010e84: 4641 mov r1, r8 + 8010e86: f88d 8010 strb.w r8, [sp, #16] + memset1( ( uint8_t* ) &MacCtx.McpsConfirm, 0, sizeof( MacCtx.McpsConfirm ) ); + 8010e8a: 4f51 ldr r7, [pc, #324] ; (8010fd0 <LoRaMacMcpsRequest+0x170>) + 8010e8c: 2214 movs r2, #20 + 8010e8e: f207 4034 addw r0, r7, #1076 ; 0x434 + 8010e92: f003 fb9a bl 80145ca <memset1> + MacCtx.McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + 8010e96: 2301 movs r3, #1 + 8010e98: f887 3435 strb.w r3, [r7, #1077] ; 0x435 + MacCtx.AckTimeoutRetriesCounter = 1; + 8010e9c: f887 340e strb.w r3, [r7, #1038] ; 0x40e + switch( mcpsRequest->Type ) + 8010ea0: 7823 ldrb r3, [r4, #0] + 8010ea2: 2b01 cmp r3, #1 + 8010ea4: d059 beq.n 8010f5a <LoRaMacMcpsRequest+0xfa> + 8010ea6: 2b03 cmp r3, #3 + 8010ea8: d06f beq.n 8010f8a <LoRaMacMcpsRequest+0x12a> + 8010eaa: 2b00 cmp r3, #0 + 8010eac: d042 beq.n 8010f34 <LoRaMacMcpsRequest+0xd4> + 8010eae: 2700 movs r7, #0 + 8010eb0: 46ba mov sl, r7 + 8010eb2: 46b9 mov r9, r7 + getPhy.Attribute = PHY_MIN_TX_DR; + 8010eb4: 2302 movs r3, #2 + 8010eb6: f88d 3018 strb.w r3, [sp, #24] + getPhy.UplinkDwellTime = Nvm.MacGroup2.MacParams.UplinkDwellTime; + 8010eba: 4b46 ldr r3, [pc, #280] ; (8010fd4 <LoRaMacMcpsRequest+0x174>) + 8010ebc: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 8010ec0: f88d 201a strb.w r2, [sp, #26] + phyParam = RegionGetPhyParam( Nvm.MacGroup2.Region, &getPhy ); + 8010ec4: a906 add r1, sp, #24 + 8010ec6: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010eca: f001 f958 bl 801217e <RegionGetPhyParam> + 8010ece: 9005 str r0, [sp, #20] + datarate = MAX( datarate, ( int8_t )phyParam.Value ); + 8010ed0: b240 sxtb r0, r0 + 8010ed2: 42b8 cmp r0, r7 + 8010ed4: bfb8 it lt + 8010ed6: 4638 movlt r0, r7 + if( readyToSend == true ) + 8010ed8: 2e00 cmp r6, #0 + 8010eda: d06e beq.n 8010fba <LoRaMacMcpsRequest+0x15a> + if( Nvm.MacGroup2.AdrCtrlOn == false ) + 8010edc: 4b3d ldr r3, [pc, #244] ; (8010fd4 <LoRaMacMcpsRequest+0x174>) + 8010ede: f893 311a ldrb.w r3, [r3, #282] ; 0x11a + 8010ee2: b99b cbnz r3, 8010f0c <LoRaMacMcpsRequest+0xac> + verify.DatarateParams.Datarate = datarate; + 8010ee4: f88d 000c strb.w r0, [sp, #12] + verify.DatarateParams.UplinkDwellTime = Nvm.MacGroup2.MacParams.UplinkDwellTime; + 8010ee8: 4b3a ldr r3, [pc, #232] ; (8010fd4 <LoRaMacMcpsRequest+0x174>) + 8010eea: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 8010eee: f88d 200e strb.w r2, [sp, #14] + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_TX_DR ) == true ) + 8010ef2: 2205 movs r2, #5 + 8010ef4: a903 add r1, sp, #12 + 8010ef6: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010efa: f001 f95e bl 80121ba <RegionVerify> + 8010efe: 2800 cmp r0, #0 + 8010f00: d063 beq.n 8010fca <LoRaMacMcpsRequest+0x16a> + Nvm.MacGroup1.ChannelsDatarate = verify.DatarateParams.Datarate; + 8010f02: f99d 200c ldrsb.w r2, [sp, #12] + 8010f06: 4b33 ldr r3, [pc, #204] ; (8010fd4 <LoRaMacMcpsRequest+0x174>) + 8010f08: f883 2039 strb.w r2, [r3, #57] ; 0x39 + status = Send( &macHdr, fPort, fBuffer, fBufferSize, allowDelayedTx ); + 8010f0c: 9500 str r5, [sp, #0] + 8010f0e: 4643 mov r3, r8 + 8010f10: 4652 mov r2, sl + 8010f12: 4649 mov r1, r9 + 8010f14: a804 add r0, sp, #16 + 8010f16: f7fe fee3 bl 800fce0 <Send> + if( status == LORAMAC_STATUS_OK ) + 8010f1a: 2800 cmp r0, #0 + 8010f1c: d148 bne.n 8010fb0 <LoRaMacMcpsRequest+0x150> + MacCtx.McpsConfirm.McpsRequest = mcpsRequest->Type; + 8010f1e: 7822 ldrb r2, [r4, #0] + 8010f20: 4b2b ldr r3, [pc, #172] ; (8010fd0 <LoRaMacMcpsRequest+0x170>) + 8010f22: f883 2434 strb.w r2, [r3, #1076] ; 0x434 + MacCtx.MacFlags.Bits.McpsReq = 1; + 8010f26: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 8010f2a: f042 0201 orr.w r2, r2, #1 + 8010f2e: f883 2481 strb.w r2, [r3, #1153] ; 0x481 + 8010f32: e043 b.n 8010fbc <LoRaMacMcpsRequest+0x15c> + MacCtx.AckTimeoutRetries = 1; + 8010f34: 2601 movs r6, #1 + 8010f36: f887 640d strb.w r6, [r7, #1037] ; 0x40d + macHdr.Bits.MType = FRAME_TYPE_DATA_UNCONFIRMED_UP; + 8010f3a: f89d 3010 ldrb.w r3, [sp, #16] + 8010f3e: 2202 movs r2, #2 + 8010f40: f362 1347 bfi r3, r2, #5, #3 + 8010f44: f88d 3010 strb.w r3, [sp, #16] + fPort = mcpsRequest->Req.Unconfirmed.fPort; + 8010f48: f894 9004 ldrb.w r9, [r4, #4] + fBuffer = mcpsRequest->Req.Unconfirmed.fBuffer; + 8010f4c: f8d4 a008 ldr.w sl, [r4, #8] + fBufferSize = mcpsRequest->Req.Unconfirmed.fBufferSize; + 8010f50: f8b4 800c ldrh.w r8, [r4, #12] + datarate = mcpsRequest->Req.Unconfirmed.Datarate; + 8010f54: f994 700e ldrsb.w r7, [r4, #14] + break; + 8010f58: e7ac b.n 8010eb4 <LoRaMacMcpsRequest+0x54> + MacCtx.AckTimeoutRetries = MIN( mcpsRequest->Req.Confirmed.NbTrials, MAX_ACK_RETRIES ); + 8010f5a: 7be3 ldrb r3, [r4, #15] + 8010f5c: 2b08 cmp r3, #8 + 8010f5e: bf28 it cs + 8010f60: 2308 movcs r3, #8 + 8010f62: 4a1b ldr r2, [pc, #108] ; (8010fd0 <LoRaMacMcpsRequest+0x170>) + 8010f64: f882 340d strb.w r3, [r2, #1037] ; 0x40d + macHdr.Bits.MType = FRAME_TYPE_DATA_CONFIRMED_UP; + 8010f68: f89d 3010 ldrb.w r3, [sp, #16] + 8010f6c: 2204 movs r2, #4 + 8010f6e: f362 1347 bfi r3, r2, #5, #3 + 8010f72: f88d 3010 strb.w r3, [sp, #16] + fPort = mcpsRequest->Req.Confirmed.fPort; + 8010f76: f894 9004 ldrb.w r9, [r4, #4] + fBuffer = mcpsRequest->Req.Confirmed.fBuffer; + 8010f7a: f8d4 a008 ldr.w sl, [r4, #8] + fBufferSize = mcpsRequest->Req.Confirmed.fBufferSize; + 8010f7e: f8b4 800c ldrh.w r8, [r4, #12] + datarate = mcpsRequest->Req.Confirmed.Datarate; + 8010f82: f994 700e ldrsb.w r7, [r4, #14] + readyToSend = true; + 8010f86: 2601 movs r6, #1 + break; + 8010f88: e794 b.n 8010eb4 <LoRaMacMcpsRequest+0x54> + MacCtx.AckTimeoutRetries = 1; + 8010f8a: 2601 movs r6, #1 + 8010f8c: 4b10 ldr r3, [pc, #64] ; (8010fd0 <LoRaMacMcpsRequest+0x170>) + 8010f8e: f883 640d strb.w r6, [r3, #1037] ; 0x40d + macHdr.Bits.MType = FRAME_TYPE_PROPRIETARY; + 8010f92: f89d 3010 ldrb.w r3, [sp, #16] + 8010f96: f043 03e0 orr.w r3, r3, #224 ; 0xe0 + 8010f9a: f88d 3010 strb.w r3, [sp, #16] + fBuffer = mcpsRequest->Req.Proprietary.fBuffer; + 8010f9e: f8d4 a004 ldr.w sl, [r4, #4] + fBufferSize = mcpsRequest->Req.Proprietary.fBufferSize; + 8010fa2: f8b4 8008 ldrh.w r8, [r4, #8] + datarate = mcpsRequest->Req.Proprietary.Datarate; + 8010fa6: f994 700a ldrsb.w r7, [r4, #10] + uint8_t fPort = 0; + 8010faa: f04f 0900 mov.w r9, #0 + break; + 8010fae: e781 b.n 8010eb4 <LoRaMacMcpsRequest+0x54> + MacCtx.NodeAckRequested = false; + 8010fb0: 4b07 ldr r3, [pc, #28] ; (8010fd0 <LoRaMacMcpsRequest+0x170>) + 8010fb2: 2200 movs r2, #0 + 8010fb4: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + 8010fb8: e000 b.n 8010fbc <LoRaMacMcpsRequest+0x15c> + LoRaMacStatus_t status = LORAMAC_STATUS_SERVICE_UNKNOWN; + 8010fba: 2002 movs r0, #2 + mcpsRequest->ReqReturn.DutyCycleWaitTime = MacCtx.DutyCycleWaitTime; + 8010fbc: 4b04 ldr r3, [pc, #16] ; (8010fd0 <LoRaMacMcpsRequest+0x170>) + 8010fbe: f8d3 3484 ldr.w r3, [r3, #1156] ; 0x484 + 8010fc2: 6123 str r3, [r4, #16] + return status; + 8010fc4: e75b b.n 8010e7e <LoRaMacMcpsRequest+0x1e> + return LORAMAC_STATUS_PARAMETER_INVALID; + 8010fc6: 2003 movs r0, #3 +} + 8010fc8: 4770 bx lr + return LORAMAC_STATUS_PARAMETER_INVALID; + 8010fca: 2003 movs r0, #3 + 8010fcc: e757 b.n 8010e7e <LoRaMacMcpsRequest+0x1e> + 8010fce: bf00 nop + 8010fd0: 20001fe4 .word 0x20001fe4 + 8010fd4: 20001870 .word 0x20001870 + +08010fd8 <LoRaMacTestSetDutyCycleOn>: + OnMacProcessNotify( ); +} +#endif /* LORAMAC_VERSION */ + +void LoRaMacTestSetDutyCycleOn( bool enable ) +{ + 8010fd8: b510 push {r4, lr} + 8010fda: b082 sub sp, #8 + 8010fdc: 4604 mov r4, r0 + VerifyParams_t verify; + + verify.DutyCycle = enable; + 8010fde: f88d 0004 strb.w r0, [sp, #4] + + if( RegionVerify( Nvm.MacGroup2.Region, &verify, PHY_DUTY_CYCLE ) == true ) + 8010fe2: 220f movs r2, #15 + 8010fe4: a901 add r1, sp, #4 + 8010fe6: 4b09 ldr r3, [pc, #36] ; (801100c <LoRaMacTestSetDutyCycleOn+0x34>) + 8010fe8: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 8010fec: f001 f8e5 bl 80121ba <RegionVerify> + 8010ff0: b148 cbz r0, 8011006 <LoRaMacTestSetDutyCycleOn+0x2e> + { + Nvm.MacGroup2.DutyCycleOn = enable; + 8010ff2: 4b06 ldr r3, [pc, #24] ; (801100c <LoRaMacTestSetDutyCycleOn+0x34>) + 8010ff4: f883 411c strb.w r4, [r3, #284] ; 0x11c + // Handle NVM potential changes + MacCtx.MacFlags.Bits.NvmHandle = 1; + 8010ff8: 4a05 ldr r2, [pc, #20] ; (8011010 <LoRaMacTestSetDutyCycleOn+0x38>) + 8010ffa: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 8010ffe: f043 0320 orr.w r3, r3, #32 + 8011002: f882 3481 strb.w r3, [r2, #1153] ; 0x481 + } +} + 8011006: b002 add sp, #8 + 8011008: bd10 pop {r4, pc} + 801100a: bf00 nop + 801100c: 20001870 .word 0x20001870 + 8011010: 20001fe4 .word 0x20001fe4 + +08011014 <LoRaMacDeInitialization>: + +LoRaMacStatus_t LoRaMacDeInitialization( void ) +{ + 8011014: b538 push {r3, r4, r5, lr} + // Check the current state of the LoRaMac + if ( LoRaMacStop( ) == LORAMAC_STATUS_OK ) + 8011016: f7ff f93f bl 8010298 <LoRaMacStop> + 801101a: b110 cbz r0, 8011022 <LoRaMacDeInitialization+0xe> + // Return success + return LORAMAC_STATUS_OK; + } + else + { + return LORAMAC_STATUS_BUSY; + 801101c: 2401 movs r4, #1 + } +} + 801101e: 4620 mov r0, r4 + 8011020: bd38 pop {r3, r4, r5, pc} + 8011022: 4604 mov r4, r0 + TimerStop( &MacCtx.TxDelayedTimer ); + 8011024: 4d0c ldr r5, [pc, #48] ; (8011058 <LoRaMacDeInitialization+0x44>) + 8011026: f505 705a add.w r0, r5, #872 ; 0x368 + 801102a: f006 f8d7 bl 80171dc <UTIL_TIMER_Stop> + TimerStop( &MacCtx.RxWindowTimer1 ); + 801102e: f505 7060 add.w r0, r5, #896 ; 0x380 + 8011032: f006 f8d3 bl 80171dc <UTIL_TIMER_Stop> + TimerStop( &MacCtx.RxWindowTimer2 ); + 8011036: f505 7066 add.w r0, r5, #920 ; 0x398 + 801103a: f006 f8cf bl 80171dc <UTIL_TIMER_Stop> + TimerStop( &MacCtx.AckTimeoutTimer ); + 801103e: f505 707d add.w r0, r5, #1012 ; 0x3f4 + 8011042: f006 f8cb bl 80171dc <UTIL_TIMER_Stop> + LoRaMacClassBHaltBeaconing( ); + 8011046: f000 f89d bl 8011184 <LoRaMacClassBHaltBeaconing> + ResetMacParameters( false ); + 801104a: 2000 movs r0, #0 + 801104c: f7fe fbe8 bl 800f820 <ResetMacParameters> + Radio.Sleep( ); + 8011050: 4b02 ldr r3, [pc, #8] ; (801105c <LoRaMacDeInitialization+0x48>) + 8011052: 6adb ldr r3, [r3, #44] ; 0x2c + 8011054: 4798 blx r3 + return LORAMAC_STATUS_OK; + 8011056: e7e2 b.n 801101e <LoRaMacDeInitialization+0xa> + 8011058: 20001fe4 .word 0x20001fe4 + 801105c: 08018cb4 .word 0x08018cb4 + +08011060 <CalcNextV10X>: +#include "LoRaMacAdr.h" +#include "LoRaMacVersion.h" + +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) +static bool CalcNextV10X( CalcNextAdrParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + 8011060: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8011064: b089 sub sp, #36 ; 0x24 + 8011066: 460f mov r7, r1 + 8011068: 4616 mov r6, r2 + 801106a: 461d mov r5, r3 + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + 801106c: f990 9010 ldrsb.w r9, [r0, #16] + int8_t txPower = adrNext->TxPower; + 8011070: f990 b011 ldrsb.w fp, [r0, #17] + int8_t minTxDatarate; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + 8011074: 6883 ldr r3, [r0, #8] + 8011076: 602b str r3, [r5, #0] + + if( adrNext->AdrEnabled == true ) + 8011078: f890 8005 ldrb.w r8, [r0, #5] + 801107c: f1b8 0f00 cmp.w r8, #0 + 8011080: d107 bne.n 8011092 <CalcNextV10X+0x32> + } + } + } + } + + *drOut = datarate; + 8011082: f887 9000 strb.w r9, [r7] + *txPowOut = txPower; + 8011086: f886 b000 strb.w fp, [r6] + return adrAckReq; +} + 801108a: 4640 mov r0, r8 + 801108c: b009 add sp, #36 ; 0x24 + 801108e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8011092: 4604 mov r4, r0 + getPhy.Attribute = PHY_MIN_TX_DR; + 8011094: 2302 movs r3, #2 + 8011096: f88d 3018 strb.w r3, [sp, #24] + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + 801109a: 7c83 ldrb r3, [r0, #18] + 801109c: f88d 301a strb.w r3, [sp, #26] + phyParam = RegionGetPhyParam( adrNext->Region, &getPhy ); + 80110a0: a906 add r1, sp, #24 + 80110a2: 7cc0 ldrb r0, [r0, #19] + 80110a4: f001 f86b bl 801217e <RegionGetPhyParam> + 80110a8: 9005 str r0, [sp, #20] + minTxDatarate = phyParam.Value; + 80110aa: fa4f fa80 sxtb.w sl, r0 + datarate = MAX( datarate, minTxDatarate ); + 80110ae: 464a mov r2, r9 + 80110b0: 45d1 cmp r9, sl + 80110b2: bfb8 it lt + 80110b4: 4652 movlt r2, sl + 80110b6: 9201 str r2, [sp, #4] + if( datarate == minTxDatarate ) + 80110b8: 45d1 cmp r9, sl + 80110ba: dc04 bgt.n 80110c6 <CalcNextV10X+0x66> + *adrAckCounter = 0; + 80110bc: 2300 movs r3, #0 + 80110be: 602b str r3, [r5, #0] + datarate = MAX( datarate, minTxDatarate ); + 80110c0: 4691 mov r9, r2 + adrAckReq = false; + 80110c2: 4698 mov r8, r3 + 80110c4: e7dd b.n 8011082 <CalcNextV10X+0x22> + if( adrNext->AdrAckCounter >= adrNext->AdrAckLimit ) + 80110c6: 68a2 ldr r2, [r4, #8] + 80110c8: 89a3 ldrh r3, [r4, #12] + 80110ca: 429a cmp r2, r3 + 80110cc: d201 bcs.n 80110d2 <CalcNextV10X+0x72> + adrAckReq = false; + 80110ce: f04f 0800 mov.w r8, #0 + if( adrNext->AdrAckCounter >= ( adrNext->AdrAckLimit + adrNext->AdrAckDelay ) ) + 80110d2: 89e1 ldrh r1, [r4, #14] + 80110d4: 440b add r3, r1 + 80110d6: 429a cmp r2, r3 + 80110d8: d202 bcs.n 80110e0 <CalcNextV10X+0x80> + datarate = MAX( datarate, minTxDatarate ); + 80110da: f8dd 9004 ldr.w r9, [sp, #4] + 80110de: e7d0 b.n 8011082 <CalcNextV10X+0x22> + getPhy.Attribute = PHY_MAX_TX_POWER; + 80110e0: 2308 movs r3, #8 + 80110e2: f88d 3018 strb.w r3, [sp, #24] + phyParam = RegionGetPhyParam( adrNext->Region, &getPhy ); + 80110e6: a906 add r1, sp, #24 + 80110e8: 7ce0 ldrb r0, [r4, #19] + 80110ea: f001 f848 bl 801217e <RegionGetPhyParam> + 80110ee: 9005 str r0, [sp, #20] + txPower = phyParam.Value; + 80110f0: fa4f fb80 sxtb.w fp, r0 + if( ( adrNext->AdrAckCounter % adrNext->AdrAckDelay ) == 1 ) + 80110f4: 68a3 ldr r3, [r4, #8] + 80110f6: 89e2 ldrh r2, [r4, #14] + 80110f8: fbb3 f1f2 udiv r1, r3, r2 + 80110fc: fb02 3311 mls r3, r2, r1, r3 + 8011100: 2b01 cmp r3, #1 + 8011102: d002 beq.n 801110a <CalcNextV10X+0xaa> + datarate = MAX( datarate, minTxDatarate ); + 8011104: f8dd 9004 ldr.w r9, [sp, #4] + 8011108: e7bb b.n 8011082 <CalcNextV10X+0x22> + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + 801110a: 2322 movs r3, #34 ; 0x22 + 801110c: f88d 3018 strb.w r3, [sp, #24] + getPhy.Datarate = datarate; + 8011110: 9b01 ldr r3, [sp, #4] + 8011112: f88d 3019 strb.w r3, [sp, #25] + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + 8011116: 7ca3 ldrb r3, [r4, #18] + 8011118: f88d 301a strb.w r3, [sp, #26] + phyParam = RegionGetPhyParam( adrNext->Region, &getPhy ); + 801111c: a906 add r1, sp, #24 + 801111e: 7ce0 ldrb r0, [r4, #19] + 8011120: f001 f82d bl 801217e <RegionGetPhyParam> + 8011124: 9005 str r0, [sp, #20] + datarate = phyParam.Value; + 8011126: fa4f f980 sxtb.w r9, r0 + if( datarate == minTxDatarate ) + 801112a: 45ca cmp sl, r9 + 801112c: d1a9 bne.n 8011082 <CalcNextV10X+0x22> + if( adrNext->UpdateChanMask == true ) + 801112e: f894 8004 ldrb.w r8, [r4, #4] + 8011132: f1b8 0f00 cmp.w r8, #0 + 8011136: d0a4 beq.n 8011082 <CalcNextV10X+0x22> + params.Type = INIT_TYPE_ACTIVATE_DEFAULT_CHANNELS; + 8011138: 2302 movs r3, #2 + 801113a: f88d 3010 strb.w r3, [sp, #16] + RegionInitDefaults( adrNext->Region, ¶ms ); + 801113e: a902 add r1, sp, #8 + 8011140: 7ce0 ldrb r0, [r4, #19] + 8011142: f001 f833 bl 80121ac <RegionInitDefaults> + adrAckReq = false; + 8011146: f04f 0800 mov.w r8, #0 + 801114a: e79a b.n 8011082 <CalcNextV10X+0x22> + +0801114c <LoRaMacAdrCalcNext>: + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool LoRaMacAdrCalcNext( CalcNextAdrParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + 801114c: b510 push {r4, lr} + if( adrNext->Version.Fields.Minor == 0 ) + 801114e: 7884 ldrb r4, [r0, #2] + 8011150: b10c cbz r4, 8011156 <LoRaMacAdrCalcNext+0xa> + { + return CalcNextV10X( adrNext, drOut, txPowOut, adrAckCounter ); + } + return false; + 8011152: 2000 movs r0, #0 +} + 8011154: bd10 pop {r4, pc} + return CalcNextV10X( adrNext, drOut, txPowOut, adrAckCounter ); + 8011156: f7ff ff83 bl 8011060 <CalcNextV10X> + 801115a: e7fb b.n 8011154 <LoRaMacAdrCalcNext+0x8> + +0801115c <LoRaMacClassBInit>: + TimerInit( &Ctx.PingSlotTimer, LoRaMacClassBPingSlotTimerEvent ); + TimerInit( &Ctx.MulticastSlotTimer, LoRaMacClassBMulticastSlotTimerEvent ); + + InitClassB( ); +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801115c: 4770 bx lr + +0801115e <LoRaMacClassBSetBeaconState>: + { + Ctx.BeaconState = beaconState; + } + } +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801115e: 4770 bx lr + +08011160 <LoRaMacClassBSetPingSlotState>: +void LoRaMacClassBSetPingSlotState( PingSlotState_t pingSlotState ) +{ +#if ( LORAMAC_CLASSB_ENABLED == 1 ) + Ctx.PingSlotState = pingSlotState; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011160: 4770 bx lr + +08011162 <LoRaMacClassBSetMulticastSlotState>: +void LoRaMacClassBSetMulticastSlotState( PingSlotState_t multicastSlotState ) +{ +#if ( LORAMAC_CLASSB_ENABLED == 1 ) + Ctx.MulticastSlotState = multicastSlotState; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011162: 4770 bx lr + +08011164 <LoRaMacClassBIsAcquisitionInProgress>: + } + return false; +#else + return false; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011164: 2000 movs r0, #0 + 8011166: 4770 bx lr + +08011168 <LoRaMacClassBBeaconTimerEvent>: + Ctx.BeaconCtx.TimeStamp = TimerGetCurrentTime( ); + TimerStop( &Ctx.BeaconTimer ); + LoRaMacClassBEvents.Events.Beacon = 1; + OnClassBMacProcessNotify( ); +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011168: 4770 bx lr + +0801116a <LoRaMacClassBPingSlotTimerEvent>: +#if ( LORAMAC_CLASSB_ENABLED == 1 ) + LoRaMacClassBEvents.Events.PingSlot = 1; + + OnClassBMacProcessNotify( ); +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801116a: 4770 bx lr + +0801116c <LoRaMacClassBMulticastSlotTimerEvent>: +#if ( LORAMAC_CLASSB_ENABLED == 1 ) + LoRaMacClassBEvents.Events.MulticastSlot = 1; + + OnClassBMacProcessNotify( ); +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801116c: 4770 bx lr + +0801116e <LoRaMacClassBRxBeacon>: + } + return beaconProcessed; +#else + return false; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801116e: 2000 movs r0, #0 + 8011170: 4770 bx lr + +08011172 <LoRaMacClassBIsBeaconExpected>: + } + return false; +#else + return false; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011172: 2000 movs r0, #0 + 8011174: 4770 bx lr + +08011176 <LoRaMacClassBIsPingExpected>: + } + return false; +#else + return false; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011176: 2000 movs r0, #0 + 8011178: 4770 bx lr + +0801117a <LoRaMacClassBIsMulticastExpected>: + } + return false; +#else + return false; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801117a: 2000 movs r0, #0 + 801117c: 4770 bx lr + +0801117e <LoRaMacClassBIsBeaconModeActive>: + } + return false; +#else + return false; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801117e: 2000 movs r0, #0 + 8011180: 4770 bx lr + +08011182 <LoRaMacClassBSetPingSlotInfo>: +{ +#if ( LORAMAC_CLASSB_ENABLED == 1 ) + ClassBNvm->PingSlotCtx.PingNb = CalcPingNb( periodicity ); + ClassBNvm->PingSlotCtx.PingPeriod = CalcPingPeriod( ClassBNvm->PingSlotCtx.PingNb ); +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011182: 4770 bx lr + +08011184 <LoRaMacClassBHaltBeaconing>: + + // Halt ping and multicast slot state machines + LoRaMacClassBStopRxSlots( ); + } +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011184: 4770 bx lr + +08011186 <LoRaMacClassBResumeBeaconing>: + } + + LoRaMacClassBBeaconTimerEvent( NULL ); + } +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011186: 4770 bx lr + +08011188 <LoRaMacClassBSwitchClass>: + } + return LORAMAC_STATUS_SERVICE_UNKNOWN; +#else + return LORAMAC_STATUS_SERVICE_UNKNOWN; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011188: 2002 movs r0, #2 + 801118a: 4770 bx lr + +0801118c <LoRaMacClassBMibGetRequestConfirm>: + } + return status; +#else + return LORAMAC_STATUS_SERVICE_UNKNOWN; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801118c: 2002 movs r0, #2 + 801118e: 4770 bx lr + +08011190 <LoRaMacMibClassBSetRequestConfirm>: + } + return status; +#else + return LORAMAC_STATUS_SERVICE_UNKNOWN; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011190: 2002 movs r0, #2 + 8011192: 4770 bx lr + +08011194 <LoRaMacClassBPingSlotInfoAns>: + { + LoRaMacConfirmQueueSetStatus( LORAMAC_EVENT_INFO_STATUS_OK, MLME_PING_SLOT_INFO ); + ClassBNvm->PingSlotCtx.Ctrl.Assigned = 1; + } +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011194: 4770 bx lr + +08011196 <LoRaMacClassBPingSlotChannelReq>: + + return status; +#else + return 0; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 8011196: 2000 movs r0, #0 + 8011198: 4770 bx lr + +0801119a <LoRaMacClassBBeaconTimingAns>: + + Ctx.LoRaMacClassBParams.MlmeConfirm->BeaconTimingDelay = Ctx.BeaconCtx.BeaconTimingDelay; + Ctx.LoRaMacClassBParams.MlmeConfirm->BeaconTimingChannel = Ctx.BeaconCtx.BeaconTimingChannel; + } +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801119a: 4770 bx lr + +0801119c <LoRaMacClassBDeviceTimeAns>: + Ctx.BeaconCtx.BeaconTime.SubSeconds = 0; + LoRaMacConfirmQueueSetStatus( LORAMAC_EVENT_INFO_STATUS_OK, MLME_DEVICE_TIME ); + } + } +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801119c: 4770 bx lr + +0801119e <LoRaMacClassBBeaconFreqReq>: + } + return false; +#else + return false; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 801119e: 2000 movs r0, #0 + 80111a0: 4770 bx lr + +080111a2 <LoRaMacClassBIsUplinkCollision>: + } + return 0; +#else + return 0; +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 80111a2: 2000 movs r0, #0 + 80111a4: 4770 bx lr + +080111a6 <LoRaMacClassBStopRxSlots>: + CRITICAL_SECTION_BEGIN( ); + LoRaMacClassBEvents.Events.PingSlot = 0; + LoRaMacClassBEvents.Events.MulticastSlot = 0; + CRITICAL_SECTION_END( ); +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 80111a6: 4770 bx lr + +080111a8 <LoRaMacClassBProcess>: + { + LoRaMacClassBProcessMulticastSlot( ); + } + } +#endif /* LORAMAC_CLASSB_ENABLED */ +} + 80111a8: 4770 bx lr + +080111aa <IsSlotFree>: + */ +static bool IsSlotFree( const MacCommand_t* slot ) +{ + uint8_t* mem = ( uint8_t* )slot; + + for( uint16_t size = 0; size < sizeof( MacCommand_t ); size++ ) + 80111aa: 2300 movs r3, #0 + 80111ac: 2b0f cmp r3, #15 + 80111ae: d804 bhi.n 80111ba <IsSlotFree+0x10> + { + if( mem[size] != 0x00 ) + 80111b0: 5cc2 ldrb r2, [r0, r3] + 80111b2: b922 cbnz r2, 80111be <IsSlotFree+0x14> + for( uint16_t size = 0; size < sizeof( MacCommand_t ); size++ ) + 80111b4: 3301 adds r3, #1 + 80111b6: b29b uxth r3, r3 + 80111b8: e7f8 b.n 80111ac <IsSlotFree+0x2> + { + return false; + } + } + return true; + 80111ba: 2001 movs r0, #1 + 80111bc: 4770 bx lr + return false; + 80111be: 2000 movs r0, #0 +} + 80111c0: 4770 bx lr + ... + +080111c4 <MallocNewMacCommandSlot>: + * \brief Allocates a new MAC command memory slot + * + * \retval - Pointer to slot + */ +static MacCommand_t* MallocNewMacCommandSlot( void ) +{ + 80111c4: b538 push {r3, r4, r5, lr} + uint8_t itr = 0; + 80111c6: 2400 movs r4, #0 + + while( IsSlotFree( ( const MacCommand_t* )&CommandsCtx.MacCommandSlots[itr] ) == false ) + 80111c8: 0123 lsls r3, r4, #4 + 80111ca: 3308 adds r3, #8 + 80111cc: 4d06 ldr r5, [pc, #24] ; (80111e8 <MallocNewMacCommandSlot+0x24>) + 80111ce: 441d add r5, r3 + 80111d0: 4628 mov r0, r5 + 80111d2: f7ff ffea bl 80111aa <IsSlotFree> + 80111d6: b920 cbnz r0, 80111e2 <MallocNewMacCommandSlot+0x1e> + { + itr++; + 80111d8: 3401 adds r4, #1 + 80111da: b2e4 uxtb r4, r4 + if( itr == NUM_OF_MAC_COMMANDS ) + 80111dc: 2c0f cmp r4, #15 + 80111de: d1f3 bne.n 80111c8 <MallocNewMacCommandSlot+0x4> + { + return NULL; + 80111e0: 2500 movs r5, #0 + } + } + + return &CommandsCtx.MacCommandSlots[itr]; +} + 80111e2: 4628 mov r0, r5 + 80111e4: bd38 pop {r3, r4, r5, pc} + 80111e6: bf00 nop + 80111e8: 20002500 .word 0x20002500 + +080111ec <LinkedListInit>: + * \param [in] list - List that shall be initialized + * \retval - Status of the operation + */ +static bool LinkedListInit( MacCommandsList_t* list ) +{ + if( list == NULL ) + 80111ec: b120 cbz r0, 80111f8 <LinkedListInit+0xc> + { + return false; + } + + list->First = NULL; + 80111ee: 2200 movs r2, #0 + 80111f0: 6002 str r2, [r0, #0] + list->Last = NULL; + 80111f2: 6042 str r2, [r0, #4] + + return true; + 80111f4: 2001 movs r0, #1 + 80111f6: 4770 bx lr + return false; + 80111f8: 2000 movs r0, #0 +} + 80111fa: 4770 bx lr + +080111fc <LinkedListAdd>: + * \param [in] element - Element to add + * \retval - Status of the operation + */ +static bool LinkedListAdd( MacCommandsList_t* list, MacCommand_t* element ) +{ + if( ( list == NULL ) || ( element == NULL ) ) + 80111fc: 4603 mov r3, r0 + 80111fe: b160 cbz r0, 801121a <LinkedListAdd+0x1e> + 8011200: b169 cbz r1, 801121e <LinkedListAdd+0x22> + { + return false; + } + + // Check if this is the first entry to enter the list. + if( list->First == NULL ) + 8011202: 6802 ldr r2, [r0, #0] + 8011204: b13a cbz r2, 8011216 <LinkedListAdd+0x1a> + { + list->First = element; + } + + // Check if the last entry exists and update its next point. + if( list->Last ) + 8011206: 685a ldr r2, [r3, #4] + 8011208: b102 cbz r2, 801120c <LinkedListAdd+0x10> + { + list->Last->Next = element; + 801120a: 6011 str r1, [r2, #0] + } + + // Update the next point of this entry. + element->Next = NULL; + 801120c: 2200 movs r2, #0 + 801120e: 600a str r2, [r1, #0] + + // Update the last entry of the list. + list->Last = element; + 8011210: 6059 str r1, [r3, #4] + + return true; + 8011212: 2001 movs r0, #1 + 8011214: 4770 bx lr + list->First = element; + 8011216: 6001 str r1, [r0, #0] + 8011218: e7f5 b.n 8011206 <LinkedListAdd+0xa> + return false; + 801121a: 2000 movs r0, #0 + 801121c: 4770 bx lr + 801121e: 2000 movs r0, #0 +} + 8011220: 4770 bx lr + +08011222 <LinkedListGetPrevious>: + * \param [in] element - Element where the previous element shall be searched + * \retval - Status of the operation + */ +static MacCommand_t* LinkedListGetPrevious( MacCommandsList_t* list, MacCommand_t* element ) +{ + if( ( list == NULL ) || ( element == NULL ) ) + 8011222: b160 cbz r0, 801123e <LinkedListGetPrevious+0x1c> + 8011224: b161 cbz r1, 8011240 <LinkedListGetPrevious+0x1e> + } + + MacCommand_t* curElement; + + // Start at the head of the list + curElement = list->First; + 8011226: 6800 ldr r0, [r0, #0] + + // When current element is the first of the list, there's no previous element so we can return NULL immediately. + if( element != curElement ) + 8011228: 4281 cmp r1, r0 + 801122a: d102 bne.n 8011232 <LinkedListGetPrevious+0x10> + curElement = curElement->Next; + } + } + else + { + curElement = NULL; + 801122c: 2000 movs r0, #0 + } + + return curElement; +} + 801122e: 4770 bx lr + curElement = curElement->Next; + 8011230: 4618 mov r0, r3 + while( ( curElement != NULL ) && ( curElement->Next != element ) ) + 8011232: 2800 cmp r0, #0 + 8011234: d0fb beq.n 801122e <LinkedListGetPrevious+0xc> + 8011236: 6803 ldr r3, [r0, #0] + 8011238: 428b cmp r3, r1 + 801123a: d1f9 bne.n 8011230 <LinkedListGetPrevious+0xe> + 801123c: 4770 bx lr + 801123e: 4770 bx lr + return NULL; + 8011240: 4608 mov r0, r1 + 8011242: 4770 bx lr + +08011244 <LinkedListRemove>: + * \param [in] element - Element to remove + * \retval - Status of the operation + */ +static bool LinkedListRemove( MacCommandsList_t* list, MacCommand_t* element ) +{ + if( ( list == NULL ) || ( element == NULL ) ) + 8011244: b1b8 cbz r0, 8011276 <LinkedListRemove+0x32> +{ + 8011246: b538 push {r3, r4, r5, lr} + 8011248: 460c mov r4, r1 + 801124a: 4605 mov r5, r0 + if( ( list == NULL ) || ( element == NULL ) ) + 801124c: b1a9 cbz r1, 801127a <LinkedListRemove+0x36> + { + return false; + } + + MacCommand_t* PrevElement = LinkedListGetPrevious( list, element ); + 801124e: f7ff ffe8 bl 8011222 <LinkedListGetPrevious> + + if( list->First == element ) + 8011252: 682b ldr r3, [r5, #0] + 8011254: 42a3 cmp r3, r4 + 8011256: d009 beq.n 801126c <LinkedListRemove+0x28> + { + list->First = element->Next; + } + + if( list->Last == element ) + 8011258: 686b ldr r3, [r5, #4] + 801125a: 42a3 cmp r3, r4 + 801125c: d009 beq.n 8011272 <LinkedListRemove+0x2e> + { + list->Last = PrevElement; + } + + if( PrevElement != NULL ) + 801125e: b108 cbz r0, 8011264 <LinkedListRemove+0x20> + { + PrevElement->Next = element->Next; + 8011260: 6823 ldr r3, [r4, #0] + 8011262: 6003 str r3, [r0, #0] + } + + element->Next = NULL; + 8011264: 2300 movs r3, #0 + 8011266: 6023 str r3, [r4, #0] + + return true; + 8011268: 2001 movs r0, #1 +} + 801126a: bd38 pop {r3, r4, r5, pc} + list->First = element->Next; + 801126c: 6823 ldr r3, [r4, #0] + 801126e: 602b str r3, [r5, #0] + 8011270: e7f2 b.n 8011258 <LinkedListRemove+0x14> + list->Last = PrevElement; + 8011272: 6068 str r0, [r5, #4] + 8011274: e7f3 b.n 801125e <LinkedListRemove+0x1a> + return false; + 8011276: 2000 movs r0, #0 +} + 8011278: 4770 bx lr + return false; + 801127a: 2000 movs r0, #0 + 801127c: e7f5 b.n 801126a <LinkedListRemove+0x26> + +0801127e <IsSticky>: + * + * \retval - Status of the operation + */ +static bool IsSticky( uint8_t cid ) +{ + switch( cid ) + 801127e: 2805 cmp r0, #5 + 8011280: d006 beq.n 8011290 <IsSticky+0x12> + 8011282: d307 bcc.n 8011294 <IsSticky+0x16> + 8011284: 3808 subs r0, #8 + 8011286: b2c0 uxtb r0, r0 + 8011288: 2802 cmp r0, #2 + 801128a: d905 bls.n 8011298 <IsSticky+0x1a> +#if (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) + case MOTE_MAC_PING_SLOT_CHANNEL_ANS: +#endif /* LORAMAC_VERSION */ + return true; + default: + return false; + 801128c: 2000 movs r0, #0 + 801128e: 4770 bx lr + switch( cid ) + 8011290: 2001 movs r0, #1 + 8011292: 4770 bx lr + return false; + 8011294: 2000 movs r0, #0 + 8011296: 4770 bx lr + switch( cid ) + 8011298: 2001 movs r0, #1 + } +} + 801129a: 4770 bx lr + +0801129c <IsConfirmationRequired>: + return true; +#endif /* LORAMAC_VERSION */ + default: + return false; + } +} + 801129c: 2000 movs r0, #0 + 801129e: 4770 bx lr + +080112a0 <FreeMacCommandSlot>: + if( slot == NULL ) + 80112a0: b130 cbz r0, 80112b0 <FreeMacCommandSlot+0x10> +{ + 80112a2: b508 push {r3, lr} + memset1( ( uint8_t* )slot, 0x00, sizeof( MacCommand_t ) ); + 80112a4: 2210 movs r2, #16 + 80112a6: 2100 movs r1, #0 + 80112a8: f003 f98f bl 80145ca <memset1> + return true; + 80112ac: 2001 movs r0, #1 +} + 80112ae: bd08 pop {r3, pc} + return false; + 80112b0: 2000 movs r0, #0 +} + 80112b2: 4770 bx lr + +080112b4 <LoRaMacCommandsInit>: + +LoRaMacCommandStatus_t LoRaMacCommandsInit( void ) +{ + 80112b4: b510 push {r4, lr} + // Initialize with default + memset1( ( uint8_t* )&CommandsCtx, 0, sizeof( CommandsCtx ) ); + 80112b6: 4c05 ldr r4, [pc, #20] ; (80112cc <LoRaMacCommandsInit+0x18>) + 80112b8: 22fc movs r2, #252 ; 0xfc + 80112ba: 2100 movs r1, #0 + 80112bc: 4620 mov r0, r4 + 80112be: f003 f984 bl 80145ca <memset1> + + LinkedListInit( &CommandsCtx.MacCommandList ); + 80112c2: 4620 mov r0, r4 + 80112c4: f7ff ff92 bl 80111ec <LinkedListInit> + + return LORAMAC_COMMANDS_SUCCESS; +} + 80112c8: 2000 movs r0, #0 + 80112ca: bd10 pop {r4, pc} + 80112cc: 20002500 .word 0x20002500 + +080112d0 <LoRaMacCommandsAddCmd>: + +LoRaMacCommandStatus_t LoRaMacCommandsAddCmd( uint8_t cid, uint8_t* payload, size_t payloadSize ) +{ + if( payload == NULL ) + 80112d0: b321 cbz r1, 801131c <LoRaMacCommandsAddCmd+0x4c> +{ + 80112d2: b5f8 push {r3, r4, r5, r6, r7, lr} + 80112d4: 4605 mov r5, r0 + 80112d6: 4614 mov r4, r2 + 80112d8: 460f mov r7, r1 + return LORAMAC_COMMANDS_ERROR_NPE; + } + MacCommand_t* newCmd; + + // Allocate a memory slot + newCmd = MallocNewMacCommandSlot( ); + 80112da: f7ff ff73 bl 80111c4 <MallocNewMacCommandSlot> + + if( newCmd == NULL ) + 80112de: 4606 mov r6, r0 + 80112e0: b1f0 cbz r0, 8011320 <LoRaMacCommandsAddCmd+0x50> + { + return LORAMAC_COMMANDS_ERROR_MEMORY; + } + + // Add it to the list of Mac commands + if( LinkedListAdd( &CommandsCtx.MacCommandList, newCmd ) == false ) + 80112e2: 4601 mov r1, r0 + 80112e4: 4810 ldr r0, [pc, #64] ; (8011328 <LoRaMacCommandsAddCmd+0x58>) + 80112e6: f7ff ff89 bl 80111fc <LinkedListAdd> + 80112ea: b1d8 cbz r0, 8011324 <LoRaMacCommandsAddCmd+0x54> + { + return LORAMAC_COMMANDS_ERROR; + } + + // Set Values + newCmd->CID = cid; + 80112ec: 7135 strb r5, [r6, #4] + newCmd->PayloadSize = payloadSize; + 80112ee: 60b4 str r4, [r6, #8] + memcpy1( ( uint8_t* )newCmd->Payload, payload, payloadSize ); + 80112f0: b2a2 uxth r2, r4 + 80112f2: 4639 mov r1, r7 + 80112f4: 1d70 adds r0, r6, #5 + 80112f6: f003 f950 bl 801459a <memcpy1> + newCmd->IsSticky = IsSticky( cid ); + 80112fa: 4628 mov r0, r5 + 80112fc: f7ff ffbf bl 801127e <IsSticky> + 8011300: 7330 strb r0, [r6, #12] + newCmd->IsConfirmationRequired = IsConfirmationRequired( cid ); + 8011302: 4628 mov r0, r5 + 8011304: f7ff ffca bl 801129c <IsConfirmationRequired> + 8011308: 7370 strb r0, [r6, #13] + + CommandsCtx.SerializedCmdsSize += ( CID_FIELD_SIZE + payloadSize ); + 801130a: 4b07 ldr r3, [pc, #28] ; (8011328 <LoRaMacCommandsAddCmd+0x58>) + 801130c: f8d3 20f8 ldr.w r2, [r3, #248] ; 0xf8 + 8011310: 4414 add r4, r2 + 8011312: 3401 adds r4, #1 + 8011314: f8c3 40f8 str.w r4, [r3, #248] ; 0xf8 + + return LORAMAC_COMMANDS_SUCCESS; + 8011318: 2000 movs r0, #0 +} + 801131a: bdf8 pop {r3, r4, r5, r6, r7, pc} + return LORAMAC_COMMANDS_ERROR_NPE; + 801131c: 2001 movs r0, #1 +} + 801131e: 4770 bx lr + return LORAMAC_COMMANDS_ERROR_MEMORY; + 8011320: 2002 movs r0, #2 + 8011322: e7fa b.n 801131a <LoRaMacCommandsAddCmd+0x4a> + return LORAMAC_COMMANDS_ERROR; + 8011324: 2005 movs r0, #5 + 8011326: e7f8 b.n 801131a <LoRaMacCommandsAddCmd+0x4a> + 8011328: 20002500 .word 0x20002500 + +0801132c <LoRaMacCommandsRemoveCmd>: + +LoRaMacCommandStatus_t LoRaMacCommandsRemoveCmd( MacCommand_t* macCmd ) +{ + if( macCmd == NULL ) + 801132c: b1a0 cbz r0, 8011358 <LoRaMacCommandsRemoveCmd+0x2c> +{ + 801132e: b510 push {r4, lr} + 8011330: 4604 mov r4, r0 + { + return LORAMAC_COMMANDS_ERROR_NPE; + } + + // Remove the Mac command element from MacCommandList + if( LinkedListRemove( &CommandsCtx.MacCommandList, macCmd ) == false ) + 8011332: 4601 mov r1, r0 + 8011334: 480b ldr r0, [pc, #44] ; (8011364 <LoRaMacCommandsRemoveCmd+0x38>) + 8011336: f7ff ff85 bl 8011244 <LinkedListRemove> + 801133a: b178 cbz r0, 801135c <LoRaMacCommandsRemoveCmd+0x30> + { + return LORAMAC_COMMANDS_ERROR_CMD_NOT_FOUND; + } + + CommandsCtx.SerializedCmdsSize -= ( CID_FIELD_SIZE + macCmd->PayloadSize ); + 801133c: 68a1 ldr r1, [r4, #8] + 801133e: 4a09 ldr r2, [pc, #36] ; (8011364 <LoRaMacCommandsRemoveCmd+0x38>) + 8011340: f8d2 30f8 ldr.w r3, [r2, #248] ; 0xf8 + 8011344: 1a5b subs r3, r3, r1 + 8011346: 3b01 subs r3, #1 + 8011348: f8c2 30f8 str.w r3, [r2, #248] ; 0xf8 + + // Free the MacCommand Slot + if( FreeMacCommandSlot( macCmd ) == false ) + 801134c: 4620 mov r0, r4 + 801134e: f7ff ffa7 bl 80112a0 <FreeMacCommandSlot> + 8011352: b128 cbz r0, 8011360 <LoRaMacCommandsRemoveCmd+0x34> + { + return LORAMAC_COMMANDS_ERROR; + } + + return LORAMAC_COMMANDS_SUCCESS; + 8011354: 2000 movs r0, #0 +} + 8011356: bd10 pop {r4, pc} + return LORAMAC_COMMANDS_ERROR_NPE; + 8011358: 2001 movs r0, #1 +} + 801135a: 4770 bx lr + return LORAMAC_COMMANDS_ERROR_CMD_NOT_FOUND; + 801135c: 2003 movs r0, #3 + 801135e: e7fa b.n 8011356 <LoRaMacCommandsRemoveCmd+0x2a> + return LORAMAC_COMMANDS_ERROR; + 8011360: 2005 movs r0, #5 + 8011362: e7f8 b.n 8011356 <LoRaMacCommandsRemoveCmd+0x2a> + 8011364: 20002500 .word 0x20002500 + +08011368 <LoRaMacCommandsGetCmd>: +LoRaMacCommandStatus_t LoRaMacCommandsGetCmd( uint8_t cid, MacCommand_t** macCmd ) +{ + MacCommand_t* curElement; + + // Start at the head of the list + curElement = CommandsCtx.MacCommandList.First; + 8011368: 4b06 ldr r3, [pc, #24] ; (8011384 <LoRaMacCommandsGetCmd+0x1c>) + 801136a: 681b ldr r3, [r3, #0] + + // Loop through all elements until we find the element with the given CID + while( ( curElement != NULL ) && ( curElement->CID != cid ) ) + 801136c: e000 b.n 8011370 <LoRaMacCommandsGetCmd+0x8> + { + curElement = curElement->Next; + 801136e: 681b ldr r3, [r3, #0] + while( ( curElement != NULL ) && ( curElement->CID != cid ) ) + 8011370: b113 cbz r3, 8011378 <LoRaMacCommandsGetCmd+0x10> + 8011372: 791a ldrb r2, [r3, #4] + 8011374: 4282 cmp r2, r0 + 8011376: d1fa bne.n 801136e <LoRaMacCommandsGetCmd+0x6> + } + + // Update the pointer anyway + *macCmd = curElement; + 8011378: 600b str r3, [r1, #0] + + // Handle error in case if we reached the end without finding it. + if( curElement == NULL ) + 801137a: b10b cbz r3, 8011380 <LoRaMacCommandsGetCmd+0x18> + { + return LORAMAC_COMMANDS_ERROR_CMD_NOT_FOUND; + } + return LORAMAC_COMMANDS_SUCCESS; + 801137c: 2000 movs r0, #0 + 801137e: 4770 bx lr + return LORAMAC_COMMANDS_ERROR_CMD_NOT_FOUND; + 8011380: 2003 movs r0, #3 +} + 8011382: 4770 bx lr + 8011384: 20002500 .word 0x20002500 + +08011388 <LoRaMacCommandsRemoveNoneStickyCmds>: +{ + MacCommand_t* curElement; + MacCommand_t* nexElement; + + // Start at the head of the list + curElement = CommandsCtx.MacCommandList.First; + 8011388: 4b0a ldr r3, [pc, #40] ; (80113b4 <LoRaMacCommandsRemoveNoneStickyCmds+0x2c>) + 801138a: 6818 ldr r0, [r3, #0] + + // Loop through all elements + while( curElement != NULL ) + 801138c: b120 cbz r0, 8011398 <LoRaMacCommandsRemoveNoneStickyCmds+0x10> + { + if( curElement->IsSticky == false ) + 801138e: 7b03 ldrb r3, [r0, #12] + 8011390: b11b cbz r3, 801139a <LoRaMacCommandsRemoveNoneStickyCmds+0x12> + LoRaMacCommandsRemoveCmd( curElement ); + curElement = nexElement; + } + else + { + curElement = curElement->Next; + 8011392: 6800 ldr r0, [r0, #0] + 8011394: e7fa b.n 801138c <LoRaMacCommandsRemoveNoneStickyCmds+0x4> + } + } + + return LORAMAC_COMMANDS_SUCCESS; +} + 8011396: bd10 pop {r4, pc} + 8011398: 4770 bx lr +{ + 801139a: b510 push {r4, lr} + nexElement = curElement->Next; + 801139c: 6804 ldr r4, [r0, #0] + LoRaMacCommandsRemoveCmd( curElement ); + 801139e: f7ff ffc5 bl 801132c <LoRaMacCommandsRemoveCmd> + curElement = nexElement; + 80113a2: 4620 mov r0, r4 + while( curElement != NULL ) + 80113a4: 2800 cmp r0, #0 + 80113a6: d0f6 beq.n 8011396 <LoRaMacCommandsRemoveNoneStickyCmds+0xe> + if( curElement->IsSticky == false ) + 80113a8: 7b03 ldrb r3, [r0, #12] + 80113aa: 2b00 cmp r3, #0 + 80113ac: d0f6 beq.n 801139c <LoRaMacCommandsRemoveNoneStickyCmds+0x14> + curElement = curElement->Next; + 80113ae: 6800 ldr r0, [r0, #0] + 80113b0: e7f8 b.n 80113a4 <LoRaMacCommandsRemoveNoneStickyCmds+0x1c> + 80113b2: bf00 nop + 80113b4: 20002500 .word 0x20002500 + +080113b8 <LoRaMacCommandsRemoveStickyAnsCmds>: + +LoRaMacCommandStatus_t LoRaMacCommandsRemoveStickyAnsCmds( void ) +{ + 80113b8: b570 push {r4, r5, r6, lr} + MacCommand_t* curElement; + MacCommand_t* nexElement; + + // Start at the head of the list + curElement = CommandsCtx.MacCommandList.First; + 80113ba: 4b0b ldr r3, [pc, #44] ; (80113e8 <LoRaMacCommandsRemoveStickyAnsCmds+0x30>) + 80113bc: 681c ldr r4, [r3, #0] + + // Loop through all elements + while( curElement != NULL ) + 80113be: e000 b.n 80113c2 <LoRaMacCommandsRemoveStickyAnsCmds+0xa> +{ + 80113c0: 4634 mov r4, r6 + while( curElement != NULL ) + 80113c2: b17c cbz r4, 80113e4 <LoRaMacCommandsRemoveStickyAnsCmds+0x2c> + { + nexElement = curElement->Next; + 80113c4: 6826 ldr r6, [r4, #0] + if( ( IsSticky( curElement->CID ) == true ) && + 80113c6: 7925 ldrb r5, [r4, #4] + 80113c8: 4628 mov r0, r5 + 80113ca: f7ff ff58 bl 801127e <IsSticky> + 80113ce: 2800 cmp r0, #0 + 80113d0: d0f6 beq.n 80113c0 <LoRaMacCommandsRemoveStickyAnsCmds+0x8> + ( IsConfirmationRequired( curElement->CID ) == false ) ) + 80113d2: 4628 mov r0, r5 + 80113d4: f7ff ff62 bl 801129c <IsConfirmationRequired> + if( ( IsSticky( curElement->CID ) == true ) && + 80113d8: 2800 cmp r0, #0 + 80113da: d1f1 bne.n 80113c0 <LoRaMacCommandsRemoveStickyAnsCmds+0x8> + { + LoRaMacCommandsRemoveCmd( curElement ); + 80113dc: 4620 mov r0, r4 + 80113de: f7ff ffa5 bl 801132c <LoRaMacCommandsRemoveCmd> + 80113e2: e7ed b.n 80113c0 <LoRaMacCommandsRemoveStickyAnsCmds+0x8> + } + curElement = nexElement; + } + + return LORAMAC_COMMANDS_SUCCESS; +} + 80113e4: 2000 movs r0, #0 + 80113e6: bd70 pop {r4, r5, r6, pc} + 80113e8: 20002500 .word 0x20002500 + +080113ec <LoRaMacCommandsGetSizeSerializedCmds>: + +LoRaMacCommandStatus_t LoRaMacCommandsGetSizeSerializedCmds( size_t* size ) +{ + if( size == NULL ) + 80113ec: b128 cbz r0, 80113fa <LoRaMacCommandsGetSizeSerializedCmds+0xe> + { + return LORAMAC_COMMANDS_ERROR_NPE; + } + *size = CommandsCtx.SerializedCmdsSize; + 80113ee: 4a04 ldr r2, [pc, #16] ; (8011400 <LoRaMacCommandsGetSizeSerializedCmds+0x14>) + 80113f0: f8d2 20f8 ldr.w r2, [r2, #248] ; 0xf8 + 80113f4: 6002 str r2, [r0, #0] + return LORAMAC_COMMANDS_SUCCESS; + 80113f6: 2000 movs r0, #0 + 80113f8: 4770 bx lr + return LORAMAC_COMMANDS_ERROR_NPE; + 80113fa: 2001 movs r0, #1 +} + 80113fc: 4770 bx lr + 80113fe: bf00 nop + 8011400: 20002500 .word 0x20002500 + +08011404 <LoRaMacCommandsSerializeCmds>: + +LoRaMacCommandStatus_t LoRaMacCommandsSerializeCmds( size_t availableSize, size_t* effectiveSize, uint8_t* buffer ) +{ + 8011404: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + MacCommand_t* curElement = CommandsCtx.MacCommandList.First; + 8011408: 4b16 ldr r3, [pc, #88] ; (8011464 <LoRaMacCommandsSerializeCmds+0x60>) + 801140a: 681c ldr r4, [r3, #0] + MacCommand_t* nextElement; + uint8_t itr = 0; + + if( ( buffer == NULL ) || ( effectiveSize == NULL ) ) + 801140c: b32a cbz r2, 801145a <LoRaMacCommandsSerializeCmds+0x56> + 801140e: 4607 mov r7, r0 + 8011410: 4688 mov r8, r1 + 8011412: 4616 mov r6, r2 + 8011414: b319 cbz r1, 801145e <LoRaMacCommandsSerializeCmds+0x5a> + uint8_t itr = 0; + 8011416: 2100 movs r1, #0 + { + return LORAMAC_COMMANDS_ERROR_NPE; + } + + // Loop through all elements which fits into the buffer + while( curElement != NULL ) + 8011418: b194 cbz r4, 8011440 <LoRaMacCommandsSerializeCmds+0x3c> + { + // If the next MAC command still fits into the buffer, add it. + if( ( availableSize - itr ) >= ( CID_FIELD_SIZE + curElement->PayloadSize ) ) + 801141a: 1a7a subs r2, r7, r1 + 801141c: 68a3 ldr r3, [r4, #8] + 801141e: 3301 adds r3, #1 + 8011420: 429a cmp r2, r3 + 8011422: d30d bcc.n 8011440 <LoRaMacCommandsSerializeCmds+0x3c> + { + buffer[itr++] = curElement->CID; + 8011424: 1c4d adds r5, r1, #1 + 8011426: b2ed uxtb r5, r5 + 8011428: 7923 ldrb r3, [r4, #4] + 801142a: 5473 strb r3, [r6, r1] + memcpy1( &buffer[itr], curElement->Payload, curElement->PayloadSize ); + 801142c: 8922 ldrh r2, [r4, #8] + 801142e: 1d61 adds r1, r4, #5 + 8011430: 1970 adds r0, r6, r5 + 8011432: f003 f8b2 bl 801459a <memcpy1> + itr += curElement->PayloadSize; + 8011436: 68a3 ldr r3, [r4, #8] + 8011438: 441d add r5, r3 + 801143a: b2e9 uxtb r1, r5 + } + else + { + break; + } + curElement = curElement->Next; + 801143c: 6824 ldr r4, [r4, #0] + 801143e: e7eb b.n 8011418 <LoRaMacCommandsSerializeCmds+0x14> + } + + // Remove all commands which do not fit into the buffer + while( curElement != NULL ) + 8011440: b12c cbz r4, 801144e <LoRaMacCommandsSerializeCmds+0x4a> + { + // Store the next element before removing the current one + nextElement = curElement->Next; + 8011442: 6825 ldr r5, [r4, #0] + LoRaMacCommandsRemoveCmd( curElement ); + 8011444: 4620 mov r0, r4 + 8011446: f7ff ff71 bl 801132c <LoRaMacCommandsRemoveCmd> + curElement = nextElement; + 801144a: 462c mov r4, r5 + 801144c: e7f8 b.n 8011440 <LoRaMacCommandsSerializeCmds+0x3c> + } + + // Fetch the effective size of the mac commands + LoRaMacCommandsGetSizeSerializedCmds( effectiveSize ); + 801144e: 4640 mov r0, r8 + 8011450: f7ff ffcc bl 80113ec <LoRaMacCommandsGetSizeSerializedCmds> + + return LORAMAC_COMMANDS_SUCCESS; + 8011454: 2000 movs r0, #0 +} + 8011456: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + return LORAMAC_COMMANDS_ERROR_NPE; + 801145a: 2001 movs r0, #1 + 801145c: e7fb b.n 8011456 <LoRaMacCommandsSerializeCmds+0x52> + 801145e: 2001 movs r0, #1 + 8011460: e7f9 b.n 8011456 <LoRaMacCommandsSerializeCmds+0x52> + 8011462: bf00 nop + 8011464: 20002500 .word 0x20002500 + +08011468 <LoRaMacCommandsGetCmdSize>: +uint8_t LoRaMacCommandsGetCmdSize( uint8_t cid ) +{ + uint8_t cidSize = 0; + + // Decode Frame MAC commands + switch( cid ) + 8011468: 1e83 subs r3, r0, #2 + 801146a: 2b11 cmp r3, #17 + 801146c: d80a bhi.n 8011484 <LoRaMacCommandsGetCmdSize+0x1c> + 801146e: e8df f003 tbb [pc, r3] + 8011472: 0b23 .short 0x0b23 + 8011474: 110f240d .word 0x110f240d + 8011478: 09171513 .word 0x09171513 + 801147c: 09091909 .word 0x09091909 + 8011480: 211f1d1b .word 0x211f1d1b + 8011484: 2000 movs r0, #0 + 8011486: 4770 bx lr + break; + } + case SRV_MAC_LINK_ADR_REQ: + { + // cid + DataRate_TXPower + ChMask (2) + Redundancy + cidSize = 5; + 8011488: 2005 movs r0, #5 + break; + 801148a: 4770 bx lr + } + case SRV_MAC_DUTY_CYCLE_REQ: + { + // cid + DutyCyclePL + cidSize = 2; + 801148c: 2002 movs r0, #2 + break; + 801148e: 4770 bx lr + break; + } + case SRV_MAC_DEV_STATUS_REQ: + { + // cid + cidSize = 1; + 8011490: 2001 movs r0, #1 + break; + 8011492: 4770 bx lr + } + case SRV_MAC_NEW_CHANNEL_REQ: + { + // cid + ChIndex + Frequency (3) + DrRange + cidSize = 6; + 8011494: 2006 movs r0, #6 + break; + 8011496: 4770 bx lr + } + case SRV_MAC_RX_TIMING_SETUP_REQ: + { + // cid + Settings + cidSize = 2; + 8011498: 2002 movs r0, #2 + break; + 801149a: 4770 bx lr + } + case SRV_MAC_TX_PARAM_SETUP_REQ: + { + // cid + EIRP_DwellTime + cidSize = 2; + 801149c: 2002 movs r0, #2 + break; + 801149e: 4770 bx lr + } + case SRV_MAC_DL_CHANNEL_REQ: + { + // cid + ChIndex + Frequency (3) + cidSize = 5; + 80114a0: 2005 movs r0, #5 + break; + 80114a2: 4770 bx lr + } +#endif /* LORAMAC_VERSION */ + case SRV_MAC_DEVICE_TIME_ANS: + { + // cid + Seconds (4) + Fractional seconds (1) + cidSize = 6; + 80114a4: 2006 movs r0, #6 + break; + 80114a6: 4770 bx lr + } + case SRV_MAC_PING_SLOT_INFO_ANS: + { + // cid + cidSize = 1; + 80114a8: 2001 movs r0, #1 + break; + 80114aa: 4770 bx lr + } + case SRV_MAC_PING_SLOT_CHANNEL_REQ: + { + // cid + Frequency (3) + DR + cidSize = 5; + 80114ac: 2005 movs r0, #5 + break; + 80114ae: 4770 bx lr + } + case SRV_MAC_BEACON_TIMING_ANS: + { + // cid + TimingDelay (2) + Channel + cidSize = 4; + 80114b0: 2004 movs r0, #4 + break; + 80114b2: 4770 bx lr + } + case SRV_MAC_BEACON_FREQ_REQ: + { + // cid + Frequency (3) + cidSize = 4; + 80114b4: 2004 movs r0, #4 + break; + 80114b6: 4770 bx lr + cidSize = 3; + 80114b8: 2003 movs r0, #3 + // Unknown command. ABORT MAC commands processing + break; + } + } + return cidSize; +} + 80114ba: 4770 bx lr + +080114bc <IncreaseBufferPointer>: + */ +static LoRaMacConfirmQueueCtx_t ConfirmQueueCtx; + +static MlmeConfirmQueue_t* IncreaseBufferPointer( MlmeConfirmQueue_t* bufferPointer ) +{ + if( bufferPointer == &ConfirmQueueCtx.Nvm.MlmeConfirmQueue[LORA_MAC_MLME_CONFIRM_QUEUE_LEN - 1] ) + 80114bc: 4b03 ldr r3, [pc, #12] ; (80114cc <IncreaseBufferPointer+0x10>) + 80114be: 4298 cmp r0, r3 + 80114c0: d001 beq.n 80114c6 <IncreaseBufferPointer+0xa> + bufferPointer = ConfirmQueueCtx.Nvm.MlmeConfirmQueue; + } + else + { + // Increase + bufferPointer++; + 80114c2: 3004 adds r0, #4 + 80114c4: 4770 bx lr + bufferPointer = ConfirmQueueCtx.Nvm.MlmeConfirmQueue; + 80114c6: 4802 ldr r0, [pc, #8] ; (80114d0 <IncreaseBufferPointer+0x14>) + } + return bufferPointer; +} + 80114c8: 4770 bx lr + 80114ca: bf00 nop + 80114cc: 20002618 .word 0x20002618 + 80114d0: 20002608 .word 0x20002608 + +080114d4 <IsListEmpty>: + return bufferPointer; +} + +static bool IsListEmpty( uint8_t count ) +{ + if( count == 0 ) + 80114d4: b108 cbz r0, 80114da <IsListEmpty+0x6> + { + return true; + } + return false; + 80114d6: 2000 movs r0, #0 + 80114d8: 4770 bx lr + return true; + 80114da: 2001 movs r0, #1 +} + 80114dc: 4770 bx lr + +080114de <IsListFull>: + +static bool IsListFull( uint8_t count ) +{ + if( count >= LORA_MAC_MLME_CONFIRM_QUEUE_LEN ) + 80114de: 2804 cmp r0, #4 + 80114e0: d801 bhi.n 80114e6 <IsListFull+0x8> + { + return true; + } + return false; + 80114e2: 2000 movs r0, #0 + 80114e4: 4770 bx lr + return true; + 80114e6: 2001 movs r0, #1 +} + 80114e8: 4770 bx lr + ... + +080114ec <GetElement>: + +static MlmeConfirmQueue_t* GetElement( Mlme_t request, MlmeConfirmQueue_t* bufferStart, MlmeConfirmQueue_t* bufferEnd ) +{ + 80114ec: b5f8 push {r3, r4, r5, r6, r7, lr} + 80114ee: 4606 mov r6, r0 + 80114f0: 460c mov r4, r1 + MlmeConfirmQueue_t* element = bufferStart; + + if( IsListEmpty( ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt ) == true ) + 80114f2: 4b0d ldr r3, [pc, #52] ; (8011528 <GetElement+0x3c>) + 80114f4: f893 7020 ldrb.w r7, [r3, #32] + 80114f8: 4638 mov r0, r7 + 80114fa: f7ff ffeb bl 80114d4 <IsListEmpty> + 80114fe: b970 cbnz r0, 801151e <GetElement+0x32> + { + return NULL; + } + + for( uint8_t elementCnt = 0; elementCnt < ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt; elementCnt++ ) + 8011500: 2500 movs r5, #0 + 8011502: 42af cmp r7, r5 + 8011504: d909 bls.n 801151a <GetElement+0x2e> + { + if( element->Request == request ) + 8011506: 7823 ldrb r3, [r4, #0] + 8011508: 42b3 cmp r3, r6 + 801150a: d00a beq.n 8011522 <GetElement+0x36> + { + // We have found the element + return element; + } + element = IncreaseBufferPointer( element ); + 801150c: 4620 mov r0, r4 + 801150e: f7ff ffd5 bl 80114bc <IncreaseBufferPointer> + 8011512: 4604 mov r4, r0 + for( uint8_t elementCnt = 0; elementCnt < ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt; elementCnt++ ) + 8011514: 3501 adds r5, #1 + 8011516: b2ed uxtb r5, r5 + 8011518: e7f3 b.n 8011502 <GetElement+0x16> + } + + return NULL; + 801151a: 2000 movs r0, #0 +} + 801151c: bdf8 pop {r3, r4, r5, r6, r7, pc} + return NULL; + 801151e: 2000 movs r0, #0 + 8011520: e7fc b.n 801151c <GetElement+0x30> + return element; + 8011522: 4620 mov r0, r4 + 8011524: e7fa b.n 801151c <GetElement+0x30> + 8011526: bf00 nop + 8011528: 200025fc .word 0x200025fc + +0801152c <LoRaMacConfirmQueueInit>: + +void LoRaMacConfirmQueueInit( LoRaMacPrimitives_t* primitives ) +{ + 801152c: b510 push {r4, lr} + ConfirmQueueCtx.Primitives = primitives; + 801152e: 4c08 ldr r4, [pc, #32] ; (8011550 <LoRaMacConfirmQueueInit+0x24>) + 8011530: 6020 str r0, [r4, #0] + + // Init counter + ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt = 0; + 8011532: 2300 movs r3, #0 + 8011534: f884 3020 strb.w r3, [r4, #32] + + // Init buffer + ConfirmQueueCtx.BufferStart = ConfirmQueueCtx.Nvm.MlmeConfirmQueue; + 8011538: f104 000c add.w r0, r4, #12 + 801153c: 6060 str r0, [r4, #4] + ConfirmQueueCtx.BufferEnd = ConfirmQueueCtx.Nvm.MlmeConfirmQueue; + 801153e: 60a0 str r0, [r4, #8] + + memset1( ( uint8_t* )ConfirmQueueCtx.Nvm.MlmeConfirmQueue, 0xFF, sizeof( ConfirmQueueCtx.Nvm.MlmeConfirmQueue ) ); + 8011540: 2214 movs r2, #20 + 8011542: 21ff movs r1, #255 ; 0xff + 8011544: f003 f841 bl 80145ca <memset1> + + // Common status + ConfirmQueueCtx.Nvm.CommonStatus = LORAMAC_EVENT_INFO_STATUS_ERROR; + 8011548: 2301 movs r3, #1 + 801154a: f884 3021 strb.w r3, [r4, #33] ; 0x21 +} + 801154e: bd10 pop {r4, pc} + 8011550: 200025fc .word 0x200025fc + +08011554 <LoRaMacConfirmQueueAdd>: + +bool LoRaMacConfirmQueueAdd( MlmeConfirmQueue_t* mlmeConfirm ) +{ + 8011554: b538 push {r3, r4, r5, lr} + 8011556: 4605 mov r5, r0 + if( IsListFull( ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt ) == true ) + 8011558: 4b0f ldr r3, [pc, #60] ; (8011598 <LoRaMacConfirmQueueAdd+0x44>) + 801155a: f893 0020 ldrb.w r0, [r3, #32] + 801155e: f7ff ffbe bl 80114de <IsListFull> + 8011562: b9b8 cbnz r0, 8011594 <LoRaMacConfirmQueueAdd+0x40> + // Protect the buffer against overwrites + return false; + } + + // Add the element to the ring buffer + ConfirmQueueCtx.BufferEnd->Request = mlmeConfirm->Request; + 8011564: 4c0c ldr r4, [pc, #48] ; (8011598 <LoRaMacConfirmQueueAdd+0x44>) + 8011566: 68a3 ldr r3, [r4, #8] + 8011568: 782a ldrb r2, [r5, #0] + 801156a: 701a strb r2, [r3, #0] + ConfirmQueueCtx.BufferEnd->Status = mlmeConfirm->Status; + 801156c: 68a3 ldr r3, [r4, #8] + 801156e: 786a ldrb r2, [r5, #1] + 8011570: 705a strb r2, [r3, #1] + ConfirmQueueCtx.BufferEnd->RestrictCommonReadyToHandle = mlmeConfirm->RestrictCommonReadyToHandle; + 8011572: 68a3 ldr r3, [r4, #8] + 8011574: 78ea ldrb r2, [r5, #3] + 8011576: 70da strb r2, [r3, #3] +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) + ConfirmQueueCtx.BufferEnd->ReadyToHandle = false; + 8011578: 68a3 ldr r3, [r4, #8] + 801157a: 2200 movs r2, #0 + 801157c: 709a strb r2, [r3, #2] +#elif (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) + ConfirmQueueCtx.BufferEnd->ReadyToHandle = mlmeConfirm->ReadyToHandle; +#endif /* LORAMAC_VERSION */ + // Increase counter + ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt++; + 801157e: f894 3020 ldrb.w r3, [r4, #32] + 8011582: 3301 adds r3, #1 + 8011584: f884 3020 strb.w r3, [r4, #32] + // Update end pointer + ConfirmQueueCtx.BufferEnd = IncreaseBufferPointer( ConfirmQueueCtx.BufferEnd ); + 8011588: 68a0 ldr r0, [r4, #8] + 801158a: f7ff ff97 bl 80114bc <IncreaseBufferPointer> + 801158e: 60a0 str r0, [r4, #8] + + return true; + 8011590: 2001 movs r0, #1 +} + 8011592: bd38 pop {r3, r4, r5, pc} + return false; + 8011594: 2000 movs r0, #0 + 8011596: e7fc b.n 8011592 <LoRaMacConfirmQueueAdd+0x3e> + 8011598: 200025fc .word 0x200025fc + +0801159c <LoRaMacConfirmQueueRemoveFirst>: + + return true; +} + +bool LoRaMacConfirmQueueRemoveFirst( void ) +{ + 801159c: b538 push {r3, r4, r5, lr} + if( IsListEmpty( ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt ) == true ) + 801159e: 4b09 ldr r3, [pc, #36] ; (80115c4 <LoRaMacConfirmQueueRemoveFirst+0x28>) + 80115a0: f893 4020 ldrb.w r4, [r3, #32] + 80115a4: 4620 mov r0, r4 + 80115a6: f7ff ff95 bl 80114d4 <IsListEmpty> + 80115aa: b948 cbnz r0, 80115c0 <LoRaMacConfirmQueueRemoveFirst+0x24> + { + return false; + } + + // Increase counter + ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt--; + 80115ac: 4d05 ldr r5, [pc, #20] ; (80115c4 <LoRaMacConfirmQueueRemoveFirst+0x28>) + 80115ae: 3c01 subs r4, #1 + 80115b0: f885 4020 strb.w r4, [r5, #32] + // Update start pointer + ConfirmQueueCtx.BufferStart = IncreaseBufferPointer( ConfirmQueueCtx.BufferStart ); + 80115b4: 6868 ldr r0, [r5, #4] + 80115b6: f7ff ff81 bl 80114bc <IncreaseBufferPointer> + 80115ba: 6068 str r0, [r5, #4] + + return true; + 80115bc: 2001 movs r0, #1 +} + 80115be: bd38 pop {r3, r4, r5, pc} + return false; + 80115c0: 2000 movs r0, #0 + 80115c2: e7fc b.n 80115be <LoRaMacConfirmQueueRemoveFirst+0x22> + 80115c4: 200025fc .word 0x200025fc + +080115c8 <LoRaMacConfirmQueueSetStatus>: + +void LoRaMacConfirmQueueSetStatus( LoRaMacEventInfoStatus_t status, Mlme_t request ) +{ + 80115c8: b538 push {r3, r4, r5, lr} + 80115ca: 4605 mov r5, r0 + 80115cc: 460c mov r4, r1 + MlmeConfirmQueue_t* element = NULL; + + if( IsListEmpty( ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt ) == false ) + 80115ce: 4b08 ldr r3, [pc, #32] ; (80115f0 <LoRaMacConfirmQueueSetStatus+0x28>) + 80115d0: f893 0020 ldrb.w r0, [r3, #32] + 80115d4: f7ff ff7e bl 80114d4 <IsListEmpty> + 80115d8: b948 cbnz r0, 80115ee <LoRaMacConfirmQueueSetStatus+0x26> + { + element = GetElement( request, ConfirmQueueCtx.BufferStart, ConfirmQueueCtx.BufferEnd ); + 80115da: 4b05 ldr r3, [pc, #20] ; (80115f0 <LoRaMacConfirmQueueSetStatus+0x28>) + 80115dc: 689a ldr r2, [r3, #8] + 80115de: 6859 ldr r1, [r3, #4] + 80115e0: 4620 mov r0, r4 + 80115e2: f7ff ff83 bl 80114ec <GetElement> + if( element != NULL ) + 80115e6: b110 cbz r0, 80115ee <LoRaMacConfirmQueueSetStatus+0x26> + { + element->Status = status; + 80115e8: 7045 strb r5, [r0, #1] + element->ReadyToHandle = true; + 80115ea: 2201 movs r2, #1 + 80115ec: 7082 strb r2, [r0, #2] + } + } +} + 80115ee: bd38 pop {r3, r4, r5, pc} + 80115f0: 200025fc .word 0x200025fc + +080115f4 <LoRaMacConfirmQueueGetStatus>: + +LoRaMacEventInfoStatus_t LoRaMacConfirmQueueGetStatus( Mlme_t request ) +{ + 80115f4: b510 push {r4, lr} + 80115f6: 4604 mov r4, r0 + MlmeConfirmQueue_t* element = NULL; + + if( IsListEmpty( ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt ) == false ) + 80115f8: 4b09 ldr r3, [pc, #36] ; (8011620 <LoRaMacConfirmQueueGetStatus+0x2c>) + 80115fa: f893 0020 ldrb.w r0, [r3, #32] + 80115fe: f7ff ff69 bl 80114d4 <IsListEmpty> + 8011602: b940 cbnz r0, 8011616 <LoRaMacConfirmQueueGetStatus+0x22> + { + element = GetElement( request, ConfirmQueueCtx.BufferStart, ConfirmQueueCtx.BufferEnd ); + 8011604: 4b06 ldr r3, [pc, #24] ; (8011620 <LoRaMacConfirmQueueGetStatus+0x2c>) + 8011606: 689a ldr r2, [r3, #8] + 8011608: 6859 ldr r1, [r3, #4] + 801160a: 4620 mov r0, r4 + 801160c: f7ff ff6e bl 80114ec <GetElement> + if( element != NULL ) + 8011610: b118 cbz r0, 801161a <LoRaMacConfirmQueueGetStatus+0x26> + { + return element->Status; + 8011612: 7840 ldrb r0, [r0, #1] + 8011614: e000 b.n 8011618 <LoRaMacConfirmQueueGetStatus+0x24> + } + } + return LORAMAC_EVENT_INFO_STATUS_ERROR; + 8011616: 2001 movs r0, #1 +} + 8011618: bd10 pop {r4, pc} + return LORAMAC_EVENT_INFO_STATUS_ERROR; + 801161a: 2001 movs r0, #1 + 801161c: e7fc b.n 8011618 <LoRaMacConfirmQueueGetStatus+0x24> + 801161e: bf00 nop + 8011620: 200025fc .word 0x200025fc + +08011624 <LoRaMacConfirmQueueSetStatusCmn>: + +void LoRaMacConfirmQueueSetStatusCmn( LoRaMacEventInfoStatus_t status ) +{ + 8011624: b538 push {r3, r4, r5, lr} + 8011626: 4605 mov r5, r0 + MlmeConfirmQueue_t* element = ConfirmQueueCtx.BufferStart; + 8011628: 4b0c ldr r3, [pc, #48] ; (801165c <LoRaMacConfirmQueueSetStatusCmn+0x38>) + 801162a: 685c ldr r4, [r3, #4] + + ConfirmQueueCtx.Nvm.CommonStatus = status; + 801162c: f883 0021 strb.w r0, [r3, #33] ; 0x21 + + if( IsListEmpty( ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt ) == false ) + 8011630: f893 0020 ldrb.w r0, [r3, #32] + 8011634: f7ff ff4e bl 80114d4 <IsListEmpty> + 8011638: b150 cbz r0, 8011650 <LoRaMacConfirmQueueSetStatusCmn+0x2c> + element->ReadyToHandle = true; + } + element = IncreaseBufferPointer( element ); + }while( element != ConfirmQueueCtx.BufferEnd ); + } +} + 801163a: bd38 pop {r3, r4, r5, pc} + element->ReadyToHandle = true; + 801163c: 2301 movs r3, #1 + 801163e: 70a3 strb r3, [r4, #2] + element = IncreaseBufferPointer( element ); + 8011640: 4620 mov r0, r4 + 8011642: f7ff ff3b bl 80114bc <IncreaseBufferPointer> + 8011646: 4604 mov r4, r0 + }while( element != ConfirmQueueCtx.BufferEnd ); + 8011648: 4b04 ldr r3, [pc, #16] ; (801165c <LoRaMacConfirmQueueSetStatusCmn+0x38>) + 801164a: 689b ldr r3, [r3, #8] + 801164c: 4283 cmp r3, r0 + 801164e: d0f4 beq.n 801163a <LoRaMacConfirmQueueSetStatusCmn+0x16> + element->Status = status; + 8011650: 7065 strb r5, [r4, #1] + if( element->RestrictCommonReadyToHandle == false ) + 8011652: 78e3 ldrb r3, [r4, #3] + 8011654: 2b00 cmp r3, #0 + 8011656: d1f3 bne.n 8011640 <LoRaMacConfirmQueueSetStatusCmn+0x1c> + 8011658: e7f0 b.n 801163c <LoRaMacConfirmQueueSetStatusCmn+0x18> + 801165a: bf00 nop + 801165c: 200025fc .word 0x200025fc + +08011660 <LoRaMacConfirmQueueIsCmdActive>: +{ + return ConfirmQueueCtx.Nvm.CommonStatus; +} + +bool LoRaMacConfirmQueueIsCmdActive( Mlme_t request ) +{ + 8011660: b508 push {r3, lr} + if( GetElement( request, ConfirmQueueCtx.BufferStart, ConfirmQueueCtx.BufferEnd ) != NULL ) + 8011662: 4b04 ldr r3, [pc, #16] ; (8011674 <LoRaMacConfirmQueueIsCmdActive+0x14>) + 8011664: 689a ldr r2, [r3, #8] + 8011666: 6859 ldr r1, [r3, #4] + 8011668: f7ff ff40 bl 80114ec <GetElement> + 801166c: b100 cbz r0, 8011670 <LoRaMacConfirmQueueIsCmdActive+0x10> + { + return true; + 801166e: 2001 movs r0, #1 + } + return false; +} + 8011670: bd08 pop {r3, pc} + 8011672: bf00 nop + 8011674: 200025fc .word 0x200025fc + +08011678 <LoRaMacConfirmQueueHandleCb>: + +void LoRaMacConfirmQueueHandleCb( MlmeConfirm_t* mlmeConfirm ) +{ + 8011678: b5f0 push {r4, r5, r6, r7, lr} + 801167a: b083 sub sp, #12 + 801167c: 4606 mov r6, r0 + uint8_t nbElements = ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt; + 801167e: 4b19 ldr r3, [pc, #100] ; (80116e4 <LoRaMacConfirmQueueHandleCb+0x6c>) + 8011680: f893 7020 ldrb.w r7, [r3, #32] + bool readyToHandle = false; + MlmeConfirmQueue_t mlmeConfirmToStore; + + memset1( ( uint8_t* ) &mlmeConfirmToStore, 0, sizeof( MlmeConfirmQueue_t ) ); + 8011684: 2204 movs r2, #4 + 8011686: 2100 movs r1, #0 + 8011688: eb0d 0002 add.w r0, sp, r2 + 801168c: f002 ff9d bl 80145ca <memset1> + + for( uint8_t i = 0; i < nbElements; i++ ) + 8011690: 2400 movs r4, #0 + 8011692: e00d b.n 80116b0 <LoRaMacConfirmQueueHandleCb+0x38> + ConfirmQueueCtx.Primitives->MacMlmeConfirm( mlmeConfirm ); + } + else + { + // The request is not processed yet. Store the state. + mlmeConfirmToStore.Request = ConfirmQueueCtx.BufferStart->Request; + 8011694: 781a ldrb r2, [r3, #0] + 8011696: f88d 2004 strb.w r2, [sp, #4] + mlmeConfirmToStore.Status = ConfirmQueueCtx.BufferStart->Status; + 801169a: 785a ldrb r2, [r3, #1] + 801169c: f88d 2005 strb.w r2, [sp, #5] + mlmeConfirmToStore.RestrictCommonReadyToHandle = ConfirmQueueCtx.BufferStart->RestrictCommonReadyToHandle; + 80116a0: 78db ldrb r3, [r3, #3] + 80116a2: f88d 3007 strb.w r3, [sp, #7] + } + + // Increase the pointer afterwards to prevent overwrites + LoRaMacConfirmQueueRemoveFirst( ); + 80116a6: f7ff ff79 bl 801159c <LoRaMacConfirmQueueRemoveFirst> + + if( readyToHandle == false ) + 80116aa: b1a5 cbz r5, 80116d6 <LoRaMacConfirmQueueHandleCb+0x5e> + for( uint8_t i = 0; i < nbElements; i++ ) + 80116ac: 3401 adds r4, #1 + 80116ae: b2e4 uxtb r4, r4 + 80116b0: 42bc cmp r4, r7 + 80116b2: d214 bcs.n 80116de <LoRaMacConfirmQueueHandleCb+0x66> + mlmeConfirm->MlmeRequest = ConfirmQueueCtx.BufferStart->Request; + 80116b4: 4b0b ldr r3, [pc, #44] ; (80116e4 <LoRaMacConfirmQueueHandleCb+0x6c>) + 80116b6: 685a ldr r2, [r3, #4] + 80116b8: 7812 ldrb r2, [r2, #0] + 80116ba: 7032 strb r2, [r6, #0] + mlmeConfirm->Status = ConfirmQueueCtx.BufferStart->Status; + 80116bc: 685a ldr r2, [r3, #4] + 80116be: 7852 ldrb r2, [r2, #1] + 80116c0: 7072 strb r2, [r6, #1] + readyToHandle = ConfirmQueueCtx.BufferStart->ReadyToHandle; + 80116c2: 685b ldr r3, [r3, #4] + 80116c4: 789d ldrb r5, [r3, #2] + if( readyToHandle == true ) + 80116c6: 2d00 cmp r5, #0 + 80116c8: d0e4 beq.n 8011694 <LoRaMacConfirmQueueHandleCb+0x1c> + ConfirmQueueCtx.Primitives->MacMlmeConfirm( mlmeConfirm ); + 80116ca: 4b06 ldr r3, [pc, #24] ; (80116e4 <LoRaMacConfirmQueueHandleCb+0x6c>) + 80116cc: 681b ldr r3, [r3, #0] + 80116ce: 689b ldr r3, [r3, #8] + 80116d0: 4630 mov r0, r6 + 80116d2: 4798 blx r3 + 80116d4: e7e7 b.n 80116a6 <LoRaMacConfirmQueueHandleCb+0x2e> + { + // Add a request which has not been finished again to the queue + LoRaMacConfirmQueueAdd( &mlmeConfirmToStore ); + 80116d6: a801 add r0, sp, #4 + 80116d8: f7ff ff3c bl 8011554 <LoRaMacConfirmQueueAdd> + 80116dc: e7e6 b.n 80116ac <LoRaMacConfirmQueueHandleCb+0x34> + } + } +} + 80116de: b003 add sp, #12 + 80116e0: bdf0 pop {r4, r5, r6, r7, pc} + 80116e2: bf00 nop + 80116e4: 200025fc .word 0x200025fc + +080116e8 <LoRaMacConfirmQueueGetCnt>: + +uint8_t LoRaMacConfirmQueueGetCnt( void ) +{ + return ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt; +} + 80116e8: 4b01 ldr r3, [pc, #4] ; (80116f0 <LoRaMacConfirmQueueGetCnt+0x8>) + 80116ea: f893 0020 ldrb.w r0, [r3, #32] + 80116ee: 4770 bx lr + 80116f0: 200025fc .word 0x200025fc + +080116f4 <LoRaMacConfirmQueueIsFull>: + +bool LoRaMacConfirmQueueIsFull( void ) +{ + 80116f4: b508 push {r3, lr} + if( IsListFull( ConfirmQueueCtx.Nvm.MlmeConfirmQueueCnt ) == true ) + 80116f6: 4b03 ldr r3, [pc, #12] ; (8011704 <LoRaMacConfirmQueueIsFull+0x10>) + 80116f8: f893 0020 ldrb.w r0, [r3, #32] + 80116fc: f7ff feef bl 80114de <IsListFull> + } + else + { + return false; + } +} + 8011700: bd08 pop {r3, pc} + 8011702: bf00 nop + 8011704: 200025fc .word 0x200025fc + +08011708 <PrepareB0>: + * \param [in] fCnt - Frame counter + * \param [in,out] b0 - B0 block + * \retval - Status of the operation + */ +static LoRaMacCryptoStatus_t PrepareB0( uint16_t msgLen, KeyIdentifier_t keyID, bool isAck, uint8_t dir, uint32_t devAddr, uint32_t fCnt, uint8_t* b0 ) +{ + 8011708: b410 push {r4} + 801170a: 9c01 ldr r4, [sp, #4] + 801170c: 9902 ldr r1, [sp, #8] + 801170e: 9a03 ldr r2, [sp, #12] + if( b0 == 0 ) + 8011710: b1da cbz r2, 801174a <PrepareB0+0x42> + 8011712: 4684 mov ip, r0 + { + return LORAMAC_CRYPTO_ERROR_NPE; + } + + b0[0] = 0x49; + 8011714: 2049 movs r0, #73 ; 0x49 + 8011716: 7010 strb r0, [r2, #0] + b0[2] = ( confFCnt >> 8 ) & 0xFF; + } + else +#endif /* LORAMAC_VERSION */ + { + b0[1] = 0x00; + 8011718: 2000 movs r0, #0 + 801171a: 7050 strb r0, [r2, #1] + b0[2] = 0x00; + 801171c: 7090 strb r0, [r2, #2] + } + + b0[3] = 0x00; + 801171e: 70d0 strb r0, [r2, #3] + b0[4] = 0x00; + 8011720: 7110 strb r0, [r2, #4] + + b0[5] = dir; + 8011722: 7153 strb r3, [r2, #5] + + b0[6] = devAddr & 0xFF; + 8011724: 7194 strb r4, [r2, #6] + b0[7] = ( devAddr >> 8 ) & 0xFF; + 8011726: 0a23 lsrs r3, r4, #8 + 8011728: 71d3 strb r3, [r2, #7] + b0[8] = ( devAddr >> 16 ) & 0xFF; + 801172a: 0c23 lsrs r3, r4, #16 + 801172c: 7213 strb r3, [r2, #8] + b0[9] = ( devAddr >> 24 ) & 0xFF; + 801172e: 0e24 lsrs r4, r4, #24 + 8011730: 7254 strb r4, [r2, #9] + + b0[10] = fCnt & 0xFF; + 8011732: 7291 strb r1, [r2, #10] + b0[11] = ( fCnt >> 8 ) & 0xFF; + 8011734: 0a0b lsrs r3, r1, #8 + 8011736: 72d3 strb r3, [r2, #11] + b0[12] = ( fCnt >> 16 ) & 0xFF; + 8011738: 0c0b lsrs r3, r1, #16 + 801173a: 7313 strb r3, [r2, #12] + b0[13] = ( fCnt >> 24 ) & 0xFF; + 801173c: 0e09 lsrs r1, r1, #24 + 801173e: 7351 strb r1, [r2, #13] + + b0[14] = 0x00; + 8011740: 7390 strb r0, [r2, #14] + + b0[15] = msgLen & 0xFF; + 8011742: f882 c00f strb.w ip, [r2, #15] + + return LORAMAC_CRYPTO_SUCCESS; +} + 8011746: bc10 pop {r4} + 8011748: 4770 bx lr + return LORAMAC_CRYPTO_ERROR_NPE; + 801174a: 200a movs r0, #10 + 801174c: e7fb b.n 8011746 <PrepareB0+0x3e> + ... + +08011750 <GetKeyAddrItem>: + * \param [out] keyItem - Key item reference + * \retval - Status of the operation + */ +static LoRaMacCryptoStatus_t GetKeyAddrItem( AddressIdentifier_t addrID, KeyAddr_t** item ) +{ + for( uint8_t i = 0; i < NUM_OF_SEC_CTX; i++ ) + 8011750: 2300 movs r3, #0 + 8011752: 2b01 cmp r3, #1 + 8011754: d80e bhi.n 8011774 <GetKeyAddrItem+0x24> + { + if( KeyAddrList[i].AddrID == addrID ) + 8011756: 469c mov ip, r3 + 8011758: 4a07 ldr r2, [pc, #28] ; (8011778 <GetKeyAddrItem+0x28>) + 801175a: f812 2023 ldrb.w r2, [r2, r3, lsl #2] + 801175e: 4282 cmp r2, r0 + 8011760: d002 beq.n 8011768 <GetKeyAddrItem+0x18> + for( uint8_t i = 0; i < NUM_OF_SEC_CTX; i++ ) + 8011762: 3301 adds r3, #1 + 8011764: b2db uxtb r3, r3 + 8011766: e7f4 b.n 8011752 <GetKeyAddrItem+0x2> + { + *item = &( KeyAddrList[i] ); + 8011768: 4b03 ldr r3, [pc, #12] ; (8011778 <GetKeyAddrItem+0x28>) + 801176a: eb03 038c add.w r3, r3, ip, lsl #2 + 801176e: 600b str r3, [r1, #0] + return LORAMAC_CRYPTO_SUCCESS; + 8011770: 2000 movs r0, #0 + 8011772: 4770 bx lr + } + } + return LORAMAC_CRYPTO_ERROR_INVALID_ADDR_ID; + 8011774: 200c movs r0, #12 +} + 8011776: 4770 bx lr + 8011778: 200008b4 .word 0x200008b4 + +0801177c <GetLastFcntDown>: + * + * \retval - Status of the operation + */ +static LoRaMacCryptoStatus_t GetLastFcntDown( FCntIdentifier_t fCntID, uint32_t* lastDown ) +{ + if( lastDown == NULL ) + 801177c: b1f1 cbz r1, 80117bc <GetLastFcntDown+0x40> + { + return LORAMAC_CRYPTO_ERROR_NPE; + } + switch( fCntID ) + 801177e: 3801 subs r0, #1 + 8011780: 2803 cmp r0, #3 + 8011782: d81d bhi.n 80117c0 <GetLastFcntDown+0x44> + 8011784: e8df f000 tbb [pc, r0] + 8011788: 140e0802 .word 0x140e0802 + { + case N_FCNT_DOWN: + *lastDown = CryptoNvm->FCntList.NFCntDown; + 801178c: 4a0d ldr r2, [pc, #52] ; (80117c4 <GetLastFcntDown+0x48>) + 801178e: 6812 ldr r2, [r2, #0] + 8011790: 6912 ldr r2, [r2, #16] + 8011792: 600a str r2, [r1, #0] + break; +#endif /* LORAMAC_MAX_MC_CTX > 3 */ + default: + return LORAMAC_CRYPTO_FAIL_FCNT_ID; + } + return LORAMAC_CRYPTO_SUCCESS; + 8011794: 2000 movs r0, #0 + break; + 8011796: 4770 bx lr + *lastDown = CryptoNvm->FCntList.AFCntDown; + 8011798: 4a0a ldr r2, [pc, #40] ; (80117c4 <GetLastFcntDown+0x48>) + 801179a: 6812 ldr r2, [r2, #0] + 801179c: 6952 ldr r2, [r2, #20] + 801179e: 600a str r2, [r1, #0] + return LORAMAC_CRYPTO_SUCCESS; + 80117a0: 2000 movs r0, #0 + break; + 80117a2: 4770 bx lr + *lastDown = CryptoNvm->FCntList.FCntDown; + 80117a4: 4a07 ldr r2, [pc, #28] ; (80117c4 <GetLastFcntDown+0x48>) + 80117a6: 6812 ldr r2, [r2, #0] + 80117a8: 6992 ldr r2, [r2, #24] + 80117aa: 600a str r2, [r1, #0] + return LORAMAC_CRYPTO_SUCCESS; + 80117ac: 2000 movs r0, #0 + break; + 80117ae: 4770 bx lr + *lastDown = CryptoNvm->FCntList.McFCntDown[0]; + 80117b0: 4a04 ldr r2, [pc, #16] ; (80117c4 <GetLastFcntDown+0x48>) + 80117b2: 6812 ldr r2, [r2, #0] + 80117b4: 69d2 ldr r2, [r2, #28] + 80117b6: 600a str r2, [r1, #0] + return LORAMAC_CRYPTO_SUCCESS; + 80117b8: 2000 movs r0, #0 + break; + 80117ba: 4770 bx lr + return LORAMAC_CRYPTO_ERROR_NPE; + 80117bc: 200a movs r0, #10 + 80117be: 4770 bx lr + switch( fCntID ) + 80117c0: 2005 movs r0, #5 +} + 80117c2: 4770 bx lr + 80117c4: 20002620 .word 0x20002620 + +080117c8 <CheckFCntDown>: + * \param [in] currentDown - Current downlink counter value + * + * \retval - Status of the operation + */ +static bool CheckFCntDown( FCntIdentifier_t fCntID, uint32_t currentDown ) +{ + 80117c8: b510 push {r4, lr} + 80117ca: b082 sub sp, #8 + 80117cc: 460c mov r4, r1 + uint32_t lastDown = 0; + 80117ce: 2300 movs r3, #0 + 80117d0: 9301 str r3, [sp, #4] + if( GetLastFcntDown( fCntID, &lastDown ) != LORAMAC_CRYPTO_SUCCESS ) + 80117d2: a901 add r1, sp, #4 + 80117d4: f7ff ffd2 bl 801177c <GetLastFcntDown> + 80117d8: b948 cbnz r0, 80117ee <CheckFCntDown+0x26> + { + return false; + } + if( ( currentDown > lastDown ) || + 80117da: 9b01 ldr r3, [sp, #4] + 80117dc: 42a3 cmp r3, r4 + 80117de: d309 bcc.n 80117f4 <CheckFCntDown+0x2c> + 80117e0: f1b3 3fff cmp.w r3, #4294967295 + 80117e4: d001 beq.n 80117ea <CheckFCntDown+0x22> + { + return true; + } + else + { + return false; + 80117e6: 2000 movs r0, #0 + 80117e8: e002 b.n 80117f0 <CheckFCntDown+0x28> + return true; + 80117ea: 2001 movs r0, #1 + 80117ec: e000 b.n 80117f0 <CheckFCntDown+0x28> + return false; + 80117ee: 2000 movs r0, #0 + } +} + 80117f0: b002 add sp, #8 + 80117f2: bd10 pop {r4, pc} + return true; + 80117f4: 2001 movs r0, #1 + 80117f6: e7fb b.n 80117f0 <CheckFCntDown+0x28> + +080117f8 <UpdateFCntDown>: + * + * \retval - Status of the operation + */ +static void UpdateFCntDown( FCntIdentifier_t fCntID, uint32_t currentDown ) +{ + switch( fCntID ) + 80117f8: 3801 subs r0, #1 + 80117fa: 2803 cmp r0, #3 + 80117fc: d815 bhi.n 801182a <UpdateFCntDown+0x32> + 80117fe: e8df f000 tbb [pc, r0] + 8011802: 0702 .short 0x0702 + 8011804: 110c .short 0x110c + { + case N_FCNT_DOWN: + CryptoNvm->FCntList.NFCntDown = currentDown; + 8011806: 4b09 ldr r3, [pc, #36] ; (801182c <UpdateFCntDown+0x34>) + 8011808: 681b ldr r3, [r3, #0] + 801180a: 6119 str r1, [r3, #16] + CryptoNvm->LastDownFCnt = currentDown; + 801180c: 6219 str r1, [r3, #32] + break; + 801180e: 4770 bx lr + case A_FCNT_DOWN: + CryptoNvm->FCntList.AFCntDown = currentDown; + 8011810: 4b06 ldr r3, [pc, #24] ; (801182c <UpdateFCntDown+0x34>) + 8011812: 681b ldr r3, [r3, #0] + 8011814: 6159 str r1, [r3, #20] + CryptoNvm->LastDownFCnt = currentDown; + 8011816: 6219 str r1, [r3, #32] + break; + 8011818: 4770 bx lr + case FCNT_DOWN: + CryptoNvm->FCntList.FCntDown = currentDown; + 801181a: 4b04 ldr r3, [pc, #16] ; (801182c <UpdateFCntDown+0x34>) + 801181c: 681b ldr r3, [r3, #0] + 801181e: 6199 str r1, [r3, #24] + CryptoNvm->LastDownFCnt = currentDown; + 8011820: 6219 str r1, [r3, #32] + break; + 8011822: 4770 bx lr +#if ( LORAMAC_MAX_MC_CTX > 0 ) + case MC_FCNT_DOWN_0: + CryptoNvm->FCntList.McFCntDown[0] = currentDown; + 8011824: 4b01 ldr r3, [pc, #4] ; (801182c <UpdateFCntDown+0x34>) + 8011826: 681b ldr r3, [r3, #0] + 8011828: 61d9 str r1, [r3, #28] + break; +#endif /* LORAMAC_MAX_MC_CTX > 3 */ + default: + break; + } +} + 801182a: 4770 bx lr + 801182c: 20002620 .word 0x20002620 + +08011830 <ResetFCnts>: +/*! + * Resets the frame counters + */ +static void ResetFCnts( void ) +{ + CryptoNvm->FCntList.FCntUp = 0; + 8011830: 4b0a ldr r3, [pc, #40] ; (801185c <ResetFCnts+0x2c>) + 8011832: 681a ldr r2, [r3, #0] + 8011834: 2300 movs r3, #0 + 8011836: 60d3 str r3, [r2, #12] + CryptoNvm->FCntList.NFCntDown = FCNT_DOWN_INITIAL_VALUE; + 8011838: f04f 31ff mov.w r1, #4294967295 + 801183c: 6111 str r1, [r2, #16] + CryptoNvm->FCntList.AFCntDown = FCNT_DOWN_INITIAL_VALUE; + 801183e: 6151 str r1, [r2, #20] + CryptoNvm->FCntList.FCntDown = FCNT_DOWN_INITIAL_VALUE; + 8011840: 6191 str r1, [r2, #24] + CryptoNvm->LastDownFCnt = CryptoNvm->FCntList.FCntDown; + 8011842: 6211 str r1, [r2, #32] + + for( int32_t i = 0; i < LORAMAC_MAX_MC_CTX; i++ ) + 8011844: 2b00 cmp r3, #0 + 8011846: dd00 ble.n 801184a <ResetFCnts+0x1a> + { + CryptoNvm->FCntList.McFCntDown[i] = FCNT_DOWN_INITIAL_VALUE; + } +} + 8011848: 4770 bx lr + CryptoNvm->FCntList.McFCntDown[i] = FCNT_DOWN_INITIAL_VALUE; + 801184a: 1d99 adds r1, r3, #6 + 801184c: eb02 0181 add.w r1, r2, r1, lsl #2 + 8011850: f04f 30ff mov.w r0, #4294967295 + 8011854: 6048 str r0, [r1, #4] + for( int32_t i = 0; i < LORAMAC_MAX_MC_CTX; i++ ) + 8011856: 3301 adds r3, #1 + 8011858: e7f4 b.n 8011844 <ResetFCnts+0x14> + 801185a: bf00 nop + 801185c: 20002620 .word 0x20002620 + +08011860 <IsJoinNonce10xOk>: + +static bool IsJoinNonce10xOk( uint32_t joinNonce ) +{ +#if( USE_10X_JOIN_NONCE_COUNTER_CHECK == 1 ) + // Check if the JoinNonce is greater as the previous one + return ( joinNonce > CryptoNvm->JoinNonce ) ? true : false; + 8011860: 4b03 ldr r3, [pc, #12] ; (8011870 <IsJoinNonce10xOk+0x10>) + 8011862: 681b ldr r3, [r3, #0] + 8011864: 689b ldr r3, [r3, #8] +#else + // Check if the JoinNonce is different from the previous one + return( joinNonce != CryptoNvm->JoinNonce ) ? true : false; +#endif +} + 8011866: 4283 cmp r3, r0 + 8011868: bf2c ite cs + 801186a: 2000 movcs r0, #0 + 801186c: 2001 movcc r0, #1 + 801186e: 4770 bx lr + 8011870: 20002620 .word 0x20002620 + +08011874 <ComputeCmacB0>: +{ + 8011874: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8011878: b088 sub sp, #32 + 801187a: 9e11 ldr r6, [sp, #68] ; 0x44 + if( ( msg == 0 ) || ( cmac == 0 ) ) + 801187c: b1f0 cbz r0, 80118bc <ComputeCmacB0+0x48> + 801187e: 460c mov r4, r1 + 8011880: 4615 mov r5, r2 + 8011882: 461a mov r2, r3 + 8011884: 4680 mov r8, r0 + 8011886: b1de cbz r6, 80118c0 <ComputeCmacB0+0x4c> + if( len > CRYPTO_MAXMESSAGE_SIZE ) + 8011888: f5b1 7f80 cmp.w r1, #256 ; 0x100 + 801188c: d81a bhi.n 80118c4 <ComputeCmacB0+0x50> + PrepareB0( len, keyID, isAck, dir, devAddr, fCnt, micBuff ); + 801188e: af04 add r7, sp, #16 + 8011890: 9702 str r7, [sp, #8] + 8011892: 9b10 ldr r3, [sp, #64] ; 0x40 + 8011894: 9301 str r3, [sp, #4] + 8011896: 9b0f ldr r3, [sp, #60] ; 0x3c + 8011898: 9300 str r3, [sp, #0] + 801189a: f89d 3038 ldrb.w r3, [sp, #56] ; 0x38 + 801189e: 4629 mov r1, r5 + 80118a0: 4620 mov r0, r4 + 80118a2: f7ff ff31 bl 8011708 <PrepareB0> + if( SecureElementComputeAesCmac( micBuff, msg, len, keyID, cmac ) != SECURE_ELEMENT_SUCCESS ) + 80118a6: 9600 str r6, [sp, #0] + 80118a8: 462b mov r3, r5 + 80118aa: 4622 mov r2, r4 + 80118ac: 4641 mov r1, r8 + 80118ae: 4638 mov r0, r7 + 80118b0: f002 fc20 bl 80140f4 <SecureElementComputeAesCmac> + 80118b4: b940 cbnz r0, 80118c8 <ComputeCmacB0+0x54> +} + 80118b6: b008 add sp, #32 + 80118b8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + return LORAMAC_CRYPTO_ERROR_NPE; + 80118bc: 200a movs r0, #10 + 80118be: e7fa b.n 80118b6 <ComputeCmacB0+0x42> + 80118c0: 200a movs r0, #10 + 80118c2: e7f8 b.n 80118b6 <ComputeCmacB0+0x42> + return LORAMAC_CRYPTO_ERROR_BUF_SIZE; + 80118c4: 200e movs r0, #14 + 80118c6: e7f6 b.n 80118b6 <ComputeCmacB0+0x42> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 80118c8: 200f movs r0, #15 + 80118ca: e7f4 b.n 80118b6 <ComputeCmacB0+0x42> + +080118cc <DeriveSessionKey10x>: +{ + 80118cc: b510 push {r4, lr} + 80118ce: b084 sub sp, #16 + uint8_t compBase[16] = { 0 }; + 80118d0: 2400 movs r4, #0 + 80118d2: 9400 str r4, [sp, #0] + 80118d4: 9401 str r4, [sp, #4] + 80118d6: 9402 str r4, [sp, #8] + 80118d8: 9403 str r4, [sp, #12] + switch( keyID ) + 80118da: 2808 cmp r0, #8 + 80118dc: d003 beq.n 80118e6 <DeriveSessionKey10x+0x1a> + 80118de: 2809 cmp r0, #9 + 80118e0: d025 beq.n 801192e <DeriveSessionKey10x+0x62> + 80118e2: 200b movs r0, #11 + 80118e4: e021 b.n 801192a <DeriveSessionKey10x+0x5e> + compBase[0] = 0x01; + 80118e6: 2401 movs r4, #1 + 80118e8: f88d 4000 strb.w r4, [sp] + compBase[1] = ( uint8_t )( ( joinNonce >> 0 ) & 0xFF ); + 80118ec: f88d 1001 strb.w r1, [sp, #1] + compBase[2] = ( uint8_t )( ( joinNonce >> 8 ) & 0xFF ); + 80118f0: f3c1 2407 ubfx r4, r1, #8, #8 + 80118f4: f88d 4002 strb.w r4, [sp, #2] + compBase[3] = ( uint8_t )( ( joinNonce >> 16 ) & 0xFF ); + 80118f8: f3c1 4107 ubfx r1, r1, #16, #8 + 80118fc: f88d 1003 strb.w r1, [sp, #3] + compBase[4] = ( uint8_t )( ( netID >> 0 ) & 0xFF ); + 8011900: f88d 2004 strb.w r2, [sp, #4] + compBase[5] = ( uint8_t )( ( netID >> 8 ) & 0xFF ); + 8011904: f3c2 2107 ubfx r1, r2, #8, #8 + 8011908: f88d 1005 strb.w r1, [sp, #5] + compBase[6] = ( uint8_t )( ( netID >> 16 ) & 0xFF ); + 801190c: f3c2 4207 ubfx r2, r2, #16, #8 + 8011910: f88d 2006 strb.w r2, [sp, #6] + compBase[7] = ( uint8_t )( ( devNonce >> 0 ) & 0xFF ); + 8011914: f88d 3007 strb.w r3, [sp, #7] + compBase[8] = ( uint8_t )( ( devNonce >> 8 ) & 0xFF ); + 8011918: 0a1b lsrs r3, r3, #8 + 801191a: f88d 3008 strb.w r3, [sp, #8] + if( SecureElementDeriveAndStoreKey( compBase, NWK_KEY, keyID ) != SECURE_ELEMENT_SUCCESS ) + 801191e: 4602 mov r2, r0 + 8011920: 2101 movs r1, #1 + 8011922: 4668 mov r0, sp + 8011924: f002 fc84 bl 8014230 <SecureElementDeriveAndStoreKey> + 8011928: b928 cbnz r0, 8011936 <DeriveSessionKey10x+0x6a> +} + 801192a: b004 add sp, #16 + 801192c: bd10 pop {r4, pc} + compBase[0] = 0x02; + 801192e: 2402 movs r4, #2 + 8011930: f88d 4000 strb.w r4, [sp] + break; + 8011934: e7da b.n 80118ec <DeriveSessionKey10x+0x20> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 8011936: 200f movs r0, #15 + 8011938: e7f7 b.n 801192a <DeriveSessionKey10x+0x5e> + +0801193a <PayloadEncrypt>: +{ + 801193a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 801193e: b088 sub sp, #32 + 8011940: 4690 mov r8, r2 + 8011942: 9a0f ldr r2, [sp, #60] ; 0x3c + if( buffer == 0 ) + 8011944: 2800 cmp r0, #0 + 8011946: d052 beq.n 80119ee <PayloadEncrypt+0xb4> + 8011948: 460d mov r5, r1 + 801194a: 4604 mov r4, r0 + uint8_t sBlock[16] = { 0 }; + 801194c: 2600 movs r6, #0 + 801194e: 9604 str r6, [sp, #16] + 8011950: 9605 str r6, [sp, #20] + 8011952: 9606 str r6, [sp, #24] + 8011954: 9607 str r6, [sp, #28] + uint8_t aBlock[16] = { 0 }; + 8011956: 9600 str r6, [sp, #0] + 8011958: 9601 str r6, [sp, #4] + 801195a: 9602 str r6, [sp, #8] + 801195c: 9603 str r6, [sp, #12] + aBlock[0] = 0x01; + 801195e: 2701 movs r7, #1 + 8011960: f88d 7000 strb.w r7, [sp] + aBlock[5] = dir; + 8011964: f89d 1038 ldrb.w r1, [sp, #56] ; 0x38 + 8011968: f88d 1005 strb.w r1, [sp, #5] + aBlock[6] = address & 0xFF; + 801196c: f88d 3006 strb.w r3, [sp, #6] + aBlock[7] = ( address >> 8 ) & 0xFF; + 8011970: 0a19 lsrs r1, r3, #8 + 8011972: f88d 1007 strb.w r1, [sp, #7] + aBlock[8] = ( address >> 16 ) & 0xFF; + 8011976: 0c19 lsrs r1, r3, #16 + 8011978: f88d 1008 strb.w r1, [sp, #8] + aBlock[9] = ( address >> 24 ) & 0xFF; + 801197c: 0e1b lsrs r3, r3, #24 + 801197e: f88d 3009 strb.w r3, [sp, #9] + aBlock[10] = frameCounter & 0xFF; + 8011982: f88d 200a strb.w r2, [sp, #10] + aBlock[11] = ( frameCounter >> 8 ) & 0xFF; + 8011986: 0a13 lsrs r3, r2, #8 + 8011988: f88d 300b strb.w r3, [sp, #11] + aBlock[12] = ( frameCounter >> 16 ) & 0xFF; + 801198c: 0c13 lsrs r3, r2, #16 + 801198e: f88d 300c strb.w r3, [sp, #12] + aBlock[13] = ( frameCounter >> 24 ) & 0xFF; + 8011992: 0e12 lsrs r2, r2, #24 + 8011994: f88d 200d strb.w r2, [sp, #13] + while( size > 0 ) + 8011998: e014 b.n 80119c4 <PayloadEncrypt+0x8a> + buffer[bufferIndex + i] = buffer[bufferIndex + i] ^ sBlock[i]; + 801199a: 18f2 adds r2, r6, r3 + 801199c: 5ca0 ldrb r0, [r4, r2] + 801199e: f103 0120 add.w r1, r3, #32 + 80119a2: 4469 add r1, sp + 80119a4: f811 1c10 ldrb.w r1, [r1, #-16] + 80119a8: 4048 eors r0, r1 + 80119aa: 54a0 strb r0, [r4, r2] + for( uint8_t i = 0; i < ( ( size > 16 ) ? 16 : size ); i++ ) + 80119ac: 3301 adds r3, #1 + 80119ae: b2db uxtb r3, r3 + 80119b0: 462a mov r2, r5 + 80119b2: 2d10 cmp r5, #16 + 80119b4: bfa8 it ge + 80119b6: 2210 movge r2, #16 + 80119b8: 4293 cmp r3, r2 + 80119ba: dbee blt.n 801199a <PayloadEncrypt+0x60> + size -= 16; + 80119bc: 3d10 subs r5, #16 + 80119be: b22d sxth r5, r5 + bufferIndex += 16; + 80119c0: 3610 adds r6, #16 + 80119c2: b2f6 uxtb r6, r6 + while( size > 0 ) + 80119c4: 2d00 cmp r5, #0 + 80119c6: dd0e ble.n 80119e6 <PayloadEncrypt+0xac> + aBlock[15] = ctr & 0xFF; + 80119c8: f88d 700f strb.w r7, [sp, #15] + ctr++; + 80119cc: 3701 adds r7, #1 + 80119ce: b2bf uxth r7, r7 + if( SecureElementAesEncrypt( aBlock, 16, keyID, sBlock ) != SECURE_ELEMENT_SUCCESS ) + 80119d0: ab04 add r3, sp, #16 + 80119d2: 4642 mov r2, r8 + 80119d4: 2110 movs r1, #16 + 80119d6: 4668 mov r0, sp + 80119d8: f002 fbb1 bl 801413e <SecureElementAesEncrypt> + 80119dc: 4603 mov r3, r0 + 80119de: 2800 cmp r0, #0 + 80119e0: d0e6 beq.n 80119b0 <PayloadEncrypt+0x76> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 80119e2: 200f movs r0, #15 + 80119e4: e000 b.n 80119e8 <PayloadEncrypt+0xae> + return LORAMAC_CRYPTO_SUCCESS; + 80119e6: 2000 movs r0, #0 +} + 80119e8: b008 add sp, #32 + 80119ea: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + return LORAMAC_CRYPTO_ERROR_NPE; + 80119ee: 200a movs r0, #10 + 80119f0: e7fa b.n 80119e8 <PayloadEncrypt+0xae> + +080119f2 <VerifyCmacB0>: + if( msg == 0 ) + 80119f2: b368 cbz r0, 8011a50 <VerifyCmacB0+0x5e> +{ + 80119f4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80119f8: b0c8 sub sp, #288 ; 0x120 + 80119fa: 460c mov r4, r1 + 80119fc: 4615 mov r5, r2 + 80119fe: 461e mov r6, r3 + 8011a00: 4680 mov r8, r0 + if( len > CRYPTO_MAXMESSAGE_SIZE ) + 8011a02: f5b1 7f80 cmp.w r1, #256 ; 0x100 + 8011a06: d825 bhi.n 8011a54 <VerifyCmacB0+0x62> + memset1( micBuff, 0, CRYPTO_BUFFER_SIZE ); + 8011a08: af04 add r7, sp, #16 + 8011a0a: f44f 7288 mov.w r2, #272 ; 0x110 + 8011a0e: 2100 movs r1, #0 + 8011a10: 4638 mov r0, r7 + 8011a12: f002 fdda bl 80145ca <memset1> + PrepareB0( len, keyID, isAck, dir, devAddr, fCnt, micBuff ); + 8011a16: 9702 str r7, [sp, #8] + 8011a18: 9b50 ldr r3, [sp, #320] ; 0x140 + 8011a1a: 9301 str r3, [sp, #4] + 8011a1c: 9b4f ldr r3, [sp, #316] ; 0x13c + 8011a1e: 9300 str r3, [sp, #0] + 8011a20: f89d 3138 ldrb.w r3, [sp, #312] ; 0x138 + 8011a24: 4632 mov r2, r6 + 8011a26: 4629 mov r1, r5 + 8011a28: 4620 mov r0, r4 + 8011a2a: f7ff fe6d bl 8011708 <PrepareB0> + memcpy1( ( micBuff + MIC_BLOCK_BX_SIZE ), msg, len ); + 8011a2e: 4622 mov r2, r4 + 8011a30: 4641 mov r1, r8 + 8011a32: a808 add r0, sp, #32 + 8011a34: f002 fdb1 bl 801459a <memcpy1> + retval = SecureElementVerifyAesCmac( micBuff, ( len + MIC_BLOCK_BX_SIZE ), expectedCmac, keyID ); + 8011a38: 462b mov r3, r5 + 8011a3a: 9a51 ldr r2, [sp, #324] ; 0x144 + 8011a3c: f104 0110 add.w r1, r4, #16 + 8011a40: 4638 mov r0, r7 + 8011a42: f002 fb66 bl 8014112 <SecureElementVerifyAesCmac> + if( retval == SECURE_ELEMENT_SUCCESS ) + 8011a46: b130 cbz r0, 8011a56 <VerifyCmacB0+0x64> + else if( retval == SECURE_ELEMENT_FAIL_CMAC ) + 8011a48: 2801 cmp r0, #1 + 8011a4a: d004 beq.n 8011a56 <VerifyCmacB0+0x64> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 8011a4c: 200f movs r0, #15 + 8011a4e: e002 b.n 8011a56 <VerifyCmacB0+0x64> + return LORAMAC_CRYPTO_ERROR_NPE; + 8011a50: 200a movs r0, #10 +} + 8011a52: 4770 bx lr + return LORAMAC_CRYPTO_ERROR_BUF_SIZE; + 8011a54: 200e movs r0, #14 +} + 8011a56: b048 add sp, #288 ; 0x120 + 8011a58: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +08011a5c <LoRaMacCryptoInit>: +/* + * API functions + */ +LoRaMacCryptoStatus_t LoRaMacCryptoInit( LoRaMacCryptoNvmData_t* nvm ) +{ + if( nvm == NULL ) + 8011a5c: b188 cbz r0, 8011a82 <LoRaMacCryptoInit+0x26> +{ + 8011a5e: b510 push {r4, lr} + { + return LORAMAC_CRYPTO_FAIL_PARAM; + } + + // Assign non volatile context + CryptoNvm = nvm; + 8011a60: 4c09 ldr r4, [pc, #36] ; (8011a88 <LoRaMacCryptoInit+0x2c>) + 8011a62: 6020 str r0, [r4, #0] + + // Initialize with default + memset1( ( uint8_t* )CryptoNvm, 0, sizeof( LoRaMacCryptoNvmData_t ) ); + 8011a64: 2228 movs r2, #40 ; 0x28 + 8011a66: 2100 movs r1, #0 + 8011a68: f002 fdaf bl 80145ca <memset1> + + // Set default LoRaWAN version + CryptoNvm->LrWanVersion.Fields.Major = 1; + 8011a6c: 6823 ldr r3, [r4, #0] + 8011a6e: 2201 movs r2, #1 + 8011a70: 70da strb r2, [r3, #3] + CryptoNvm->LrWanVersion.Fields.Minor = 1; + 8011a72: 709a strb r2, [r3, #2] + CryptoNvm->LrWanVersion.Fields.Patch = 1; + 8011a74: 705a strb r2, [r3, #1] + CryptoNvm->LrWanVersion.Fields.Revision = 0; + 8011a76: 2400 movs r4, #0 + 8011a78: 701c strb r4, [r3, #0] + + // Reset frame counters + ResetFCnts( ); + 8011a7a: f7ff fed9 bl 8011830 <ResetFCnts> + + return LORAMAC_CRYPTO_SUCCESS; + 8011a7e: 4620 mov r0, r4 +} + 8011a80: bd10 pop {r4, pc} + return LORAMAC_CRYPTO_FAIL_PARAM; + 8011a82: 2009 movs r0, #9 +} + 8011a84: 4770 bx lr + 8011a86: bf00 nop + 8011a88: 20002620 .word 0x20002620 + +08011a8c <LoRaMacCryptoSetLrWanVersion>: + +LoRaMacCryptoStatus_t LoRaMacCryptoSetLrWanVersion( Version_t version ) +{ + CryptoNvm->LrWanVersion = version; + 8011a8c: 4b02 ldr r3, [pc, #8] ; (8011a98 <LoRaMacCryptoSetLrWanVersion+0xc>) + 8011a8e: 681b ldr r3, [r3, #0] + 8011a90: 6018 str r0, [r3, #0] + return LORAMAC_CRYPTO_SUCCESS; +} + 8011a92: 2000 movs r0, #0 + 8011a94: 4770 bx lr + 8011a96: bf00 nop + 8011a98: 20002620 .word 0x20002620 + +08011a9c <LoRaMacCryptoGetFCntUp>: + +LoRaMacCryptoStatus_t LoRaMacCryptoGetFCntUp( uint32_t* currentUp ) +{ + if( currentUp == NULL ) + 8011a9c: b130 cbz r0, 8011aac <LoRaMacCryptoGetFCntUp+0x10> + { + return LORAMAC_CRYPTO_ERROR_NPE; + } + + *currentUp = CryptoNvm->FCntList.FCntUp + 1; + 8011a9e: 4b04 ldr r3, [pc, #16] ; (8011ab0 <LoRaMacCryptoGetFCntUp+0x14>) + 8011aa0: 681b ldr r3, [r3, #0] + 8011aa2: 68db ldr r3, [r3, #12] + 8011aa4: 3301 adds r3, #1 + 8011aa6: 6003 str r3, [r0, #0] + + return LORAMAC_CRYPTO_SUCCESS; + 8011aa8: 2000 movs r0, #0 + 8011aaa: 4770 bx lr + return LORAMAC_CRYPTO_ERROR_NPE; + 8011aac: 200a movs r0, #10 +} + 8011aae: 4770 bx lr + 8011ab0: 20002620 .word 0x20002620 + +08011ab4 <LoRaMacCryptoGetFCntDown>: +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) +LoRaMacCryptoStatus_t LoRaMacCryptoGetFCntDown( FCntIdentifier_t fCntID, uint16_t maxFCntGap, uint32_t frameFcnt, uint32_t* currentDown ) +{ + 8011ab4: b570 push {r4, r5, r6, lr} + 8011ab6: b082 sub sp, #8 + 8011ab8: 4614 mov r4, r2 + uint32_t lastDown = 0; + 8011aba: 2200 movs r2, #0 + 8011abc: 9201 str r2, [sp, #4] + int32_t fCntDiff = 0; + LoRaMacCryptoStatus_t cryptoStatus = LORAMAC_CRYPTO_ERROR; + + if( currentDown == NULL ) + 8011abe: b363 cbz r3, 8011b1a <LoRaMacCryptoGetFCntDown+0x66> + 8011ac0: 460d mov r5, r1 + 8011ac2: 461e mov r6, r3 + { + return LORAMAC_CRYPTO_ERROR_NPE; + } + + cryptoStatus = GetLastFcntDown( fCntID, &lastDown ); + 8011ac4: a901 add r1, sp, #4 + 8011ac6: f7ff fe59 bl 801177c <GetLastFcntDown> + if( cryptoStatus != LORAMAC_CRYPTO_SUCCESS ) + 8011aca: b9b8 cbnz r0, 8011afc <LoRaMacCryptoGetFCntDown+0x48> + { + return cryptoStatus; + } + + // For LoRaWAN 1.0.X only, allow downlink frames of 0 + if( lastDown == FCNT_DOWN_INITIAL_VALUE ) + 8011acc: 9b01 ldr r3, [sp, #4] + 8011ace: f1b3 3fff cmp.w r3, #4294967295 + 8011ad2: d015 beq.n 8011b00 <LoRaMacCryptoGetFCntDown+0x4c> + *currentDown = frameFcnt; + } + else + { + // Add difference, consider roll-over + fCntDiff = ( int32_t )( ( int64_t )frameFcnt - ( int64_t )( lastDown & 0x0000FFFF ) ); + 8011ad4: b29a uxth r2, r3 + 8011ad6: 1aa2 subs r2, r4, r2 + + if( fCntDiff > 0 ) + 8011ad8: 2a00 cmp r2, #0 + 8011ada: dd13 ble.n 8011b04 <LoRaMacCryptoGetFCntDown+0x50> + { // Positive difference + *currentDown = lastDown + fCntDiff; + 8011adc: 4413 add r3, r2 + 8011ade: 6033 str r3, [r6, #0] + *currentDown = ( lastDown & 0xFFFF0000 ) + 0x10000 + frameFcnt; + } + } + + // For LoRaWAN 1.0.X only, check maxFCntGap + if( CryptoNvm->LrWanVersion.Fields.Minor == 0 ) + 8011ae0: 4b10 ldr r3, [pc, #64] ; (8011b24 <LoRaMacCryptoGetFCntDown+0x70>) + 8011ae2: 681b ldr r3, [r3, #0] + 8011ae4: 789a ldrb r2, [r3, #2] + 8011ae6: b94a cbnz r2, 8011afc <LoRaMacCryptoGetFCntDown+0x48> + { + if( ( ( int64_t )*currentDown - ( int64_t )lastDown ) >= maxFCntGap ) + 8011ae8: 6833 ldr r3, [r6, #0] + 8011aea: 9901 ldr r1, [sp, #4] + 8011aec: 1a5b subs r3, r3, r1 + 8011aee: eb61 0101 sbc.w r1, r1, r1 + 8011af2: 42ab cmp r3, r5 + 8011af4: f171 0100 sbcs.w r1, r1, #0 + 8011af8: da11 bge.n 8011b1e <LoRaMacCryptoGetFCntDown+0x6a> + { + return LORAMAC_CRYPTO_FAIL_MAX_GAP_FCNT; + } + } + + return LORAMAC_CRYPTO_SUCCESS; + 8011afa: 4610 mov r0, r2 +} + 8011afc: b002 add sp, #8 + 8011afe: bd70 pop {r4, r5, r6, pc} + *currentDown = frameFcnt; + 8011b00: 6034 str r4, [r6, #0] + 8011b02: e7ed b.n 8011ae0 <LoRaMacCryptoGetFCntDown+0x2c> + else if( fCntDiff == 0 ) + 8011b04: b132 cbz r2, 8011b14 <LoRaMacCryptoGetFCntDown+0x60> + *currentDown = ( lastDown & 0xFFFF0000 ) + 0x10000 + frameFcnt; + 8011b06: 0c1b lsrs r3, r3, #16 + 8011b08: 041b lsls r3, r3, #16 + 8011b0a: 4423 add r3, r4 + 8011b0c: f503 3380 add.w r3, r3, #65536 ; 0x10000 + 8011b10: 6033 str r3, [r6, #0] + 8011b12: e7e5 b.n 8011ae0 <LoRaMacCryptoGetFCntDown+0x2c> + *currentDown = lastDown; + 8011b14: 6033 str r3, [r6, #0] + return LORAMAC_CRYPTO_FAIL_FCNT_DUPLICATED; + 8011b16: 2007 movs r0, #7 + 8011b18: e7f0 b.n 8011afc <LoRaMacCryptoGetFCntDown+0x48> + return LORAMAC_CRYPTO_ERROR_NPE; + 8011b1a: 200a movs r0, #10 + 8011b1c: e7ee b.n 8011afc <LoRaMacCryptoGetFCntDown+0x48> + return LORAMAC_CRYPTO_FAIL_MAX_GAP_FCNT; + 8011b1e: 2008 movs r0, #8 + 8011b20: e7ec b.n 8011afc <LoRaMacCryptoGetFCntDown+0x48> + 8011b22: bf00 nop + 8011b24: 20002620 .word 0x20002620 + +08011b28 <LoRaMacCryptoSetMulticastReference>: +#endif /* LORAMAC_VERSION */ +} + +LoRaMacCryptoStatus_t LoRaMacCryptoSetMulticastReference( MulticastCtx_t* multicastList ) +{ + if( multicastList == NULL ) + 8011b28: 4601 mov r1, r0 + 8011b2a: b908 cbnz r0, 8011b30 <LoRaMacCryptoSetMulticastReference+0x8> + { + return LORAMAC_CRYPTO_ERROR_NPE; + 8011b2c: 200a movs r0, #10 + { + multicastList[i].DownLinkCounter = &CryptoNvm->FCntList.McFCntDown[i]; + } + + return LORAMAC_CRYPTO_SUCCESS; +} + 8011b2e: 4770 bx lr + for( int32_t i = 0; i < LORAMAC_MAX_MC_CTX; i++ ) + 8011b30: 2300 movs r3, #0 + 8011b32: 2b00 cmp r3, #0 + 8011b34: dd01 ble.n 8011b3a <LoRaMacCryptoSetMulticastReference+0x12> + return LORAMAC_CRYPTO_SUCCESS; + 8011b36: 2000 movs r0, #0 + 8011b38: 4770 bx lr + multicastList[i].DownLinkCounter = &CryptoNvm->FCntList.McFCntDown[i]; + 8011b3a: 4a07 ldr r2, [pc, #28] ; (8011b58 <LoRaMacCryptoSetMulticastReference+0x30>) + 8011b3c: 6812 ldr r2, [r2, #0] + 8011b3e: eb03 0043 add.w r0, r3, r3, lsl #1 + 8011b42: eb01 1000 add.w r0, r1, r0, lsl #4 + 8011b46: f103 0c06 add.w ip, r3, #6 + 8011b4a: eb02 028c add.w r2, r2, ip, lsl #2 + 8011b4e: 3204 adds r2, #4 + 8011b50: 6242 str r2, [r0, #36] ; 0x24 + for( int32_t i = 0; i < LORAMAC_MAX_MC_CTX; i++ ) + 8011b52: 3301 adds r3, #1 + 8011b54: e7ed b.n 8011b32 <LoRaMacCryptoSetMulticastReference+0xa> + 8011b56: bf00 nop + 8011b58: 20002620 .word 0x20002620 + +08011b5c <LoRaMacCryptoPrepareJoinRequest>: + return LORAMAC_CRYPTO_SUCCESS; +} + +LoRaMacCryptoStatus_t LoRaMacCryptoPrepareJoinRequest( LoRaMacMessageJoinRequest_t* macMsg ) +{ + if( macMsg == 0 ) + 8011b5c: b300 cbz r0, 8011ba0 <LoRaMacCryptoPrepareJoinRequest+0x44> +{ + 8011b5e: b510 push {r4, lr} + 8011b60: b084 sub sp, #16 + 8011b62: 4604 mov r4, r0 + } + KeyIdentifier_t micComputationKeyID = NWK_KEY; + + // Add device nonce +#if ( USE_RANDOM_DEV_NONCE == 1 ) + uint32_t devNonce = 0; + 8011b64: 2300 movs r3, #0 + 8011b66: 9303 str r3, [sp, #12] + SecureElementRandomNumber( &devNonce ); + 8011b68: a803 add r0, sp, #12 + 8011b6a: f002 fbbf bl 80142ec <SecureElementRandomNumber> + CryptoNvm->DevNonce = devNonce; + 8011b6e: 4b10 ldr r3, [pc, #64] ; (8011bb0 <LoRaMacCryptoPrepareJoinRequest+0x54>) + 8011b70: 681a ldr r2, [r3, #0] + 8011b72: f8bd 300c ldrh.w r3, [sp, #12] + 8011b76: 8093 strh r3, [r2, #4] +#else + CryptoNvm->DevNonce++; +#endif /* USE_RANDOM_DEV_NONCE */ + macMsg->DevNonce = CryptoNvm->DevNonce; + 8011b78: 82e3 strh r3, [r4, #22] + return LORAMAC_CRYPTO_ERROR; + } +#endif /* LORAMAC_VERSION */ + + // Serialize message + if( LoRaMacSerializerJoinRequest( macMsg ) != LORAMAC_SERIALIZER_SUCCESS ) + 8011b7a: 4620 mov r0, r4 + 8011b7c: f000 fa33 bl 8011fe6 <LoRaMacSerializerJoinRequest> + 8011b80: b980 cbnz r0, 8011ba4 <LoRaMacCryptoPrepareJoinRequest+0x48> + { + return LORAMAC_CRYPTO_ERROR_SERIALIZER; + } + + // Compute mic + if( SecureElementComputeAesCmac( NULL, macMsg->Buffer, ( LORAMAC_JOIN_REQ_MSG_SIZE - LORAMAC_MIC_FIELD_SIZE ), micComputationKeyID, &macMsg->MIC ) != SECURE_ELEMENT_SUCCESS ) + 8011b82: 4623 mov r3, r4 + 8011b84: f853 1b18 ldr.w r1, [r3], #24 + 8011b88: 9300 str r3, [sp, #0] + 8011b8a: 2301 movs r3, #1 + 8011b8c: 2213 movs r2, #19 + 8011b8e: f002 fab1 bl 80140f4 <SecureElementComputeAesCmac> + 8011b92: b950 cbnz r0, 8011baa <LoRaMacCryptoPrepareJoinRequest+0x4e> + { + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + } + + // Reserialize message to add the MIC + if( LoRaMacSerializerJoinRequest( macMsg ) != LORAMAC_SERIALIZER_SUCCESS ) + 8011b94: 4620 mov r0, r4 + 8011b96: f000 fa26 bl 8011fe6 <LoRaMacSerializerJoinRequest> + 8011b9a: b120 cbz r0, 8011ba6 <LoRaMacCryptoPrepareJoinRequest+0x4a> + { + return LORAMAC_CRYPTO_ERROR_SERIALIZER; + 8011b9c: 2011 movs r0, #17 + 8011b9e: e002 b.n 8011ba6 <LoRaMacCryptoPrepareJoinRequest+0x4a> + return LORAMAC_CRYPTO_ERROR_NPE; + 8011ba0: 200a movs r0, #10 + } + + return LORAMAC_CRYPTO_SUCCESS; +} + 8011ba2: 4770 bx lr + return LORAMAC_CRYPTO_ERROR_SERIALIZER; + 8011ba4: 2011 movs r0, #17 +} + 8011ba6: b004 add sp, #16 + 8011ba8: bd10 pop {r4, pc} + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 8011baa: 200f movs r0, #15 + 8011bac: e7fb b.n 8011ba6 <LoRaMacCryptoPrepareJoinRequest+0x4a> + 8011bae: bf00 nop + 8011bb0: 20002620 .word 0x20002620 + +08011bb4 <LoRaMacCryptoSecureMessage>: +LoRaMacCryptoStatus_t LoRaMacCryptoSecureMessage( uint32_t fCntUp, uint8_t txDr, uint8_t txCh, LoRaMacMessageData_t* macMsg ) +{ + LoRaMacCryptoStatus_t retval = LORAMAC_CRYPTO_ERROR; + KeyIdentifier_t payloadDecryptionKeyID = APP_S_KEY; + + if( macMsg == NULL ) + 8011bb4: 2b00 cmp r3, #0 + 8011bb6: d036 beq.n 8011c26 <LoRaMacCryptoSecureMessage+0x72> +{ + 8011bb8: b530 push {r4, r5, lr} + 8011bba: b085 sub sp, #20 + 8011bbc: 4604 mov r4, r0 + 8011bbe: 461d mov r5, r3 + { + return LORAMAC_CRYPTO_ERROR_NPE; + } + + if( fCntUp < CryptoNvm->FCntList.FCntUp ) + 8011bc0: 4b1d ldr r3, [pc, #116] ; (8011c38 <LoRaMacCryptoSecureMessage+0x84>) + 8011bc2: 681b ldr r3, [r3, #0] + 8011bc4: 68db ldr r3, [r3, #12] + 8011bc6: 4283 cmp r3, r0 + 8011bc8: d82f bhi.n 8011c2a <LoRaMacCryptoSecureMessage+0x76> + { + return LORAMAC_CRYPTO_FAIL_FCNT_SMALLER; + } + + // Encrypt payload + if( macMsg->FPort == 0 ) + 8011bca: f895 2020 ldrb.w r2, [r5, #32] + 8011bce: b342 cbz r2, 8011c22 <LoRaMacCryptoSecureMessage+0x6e> + KeyIdentifier_t payloadDecryptionKeyID = APP_S_KEY; + 8011bd0: 2209 movs r2, #9 +#else + payloadDecryptionKeyID = NWK_S_KEY; +#endif /* LORAMAC_VERSION */ + } + + if( fCntUp > CryptoNvm->FCntList.FCntUp ) + 8011bd2: 42a3 cmp r3, r4 + 8011bd4: d209 bcs.n 8011bea <LoRaMacCryptoSecureMessage+0x36> + { + retval = PayloadEncrypt( macMsg->FRMPayload, macMsg->FRMPayloadSize, payloadDecryptionKeyID, macMsg->FHDR.DevAddr, UPLINK, fCntUp ); + 8011bd6: 9401 str r4, [sp, #4] + 8011bd8: 2300 movs r3, #0 + 8011bda: 9300 str r3, [sp, #0] + 8011bdc: 68ab ldr r3, [r5, #8] + 8011bde: f895 1028 ldrb.w r1, [r5, #40] ; 0x28 + 8011be2: 6a68 ldr r0, [r5, #36] ; 0x24 + 8011be4: f7ff fea9 bl 801193a <PayloadEncrypt> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011be8: bb10 cbnz r0, 8011c30 <LoRaMacCryptoSecureMessage+0x7c> + } +#endif /* LORAMAC_VERSION */ + } + + // Serialize message + if( LoRaMacSerializerData( macMsg ) != LORAMAC_SERIALIZER_SUCCESS ) + 8011bea: 4628 mov r0, r5 + 8011bec: f000 fa31 bl 8012052 <LoRaMacSerializerData> + 8011bf0: b9e8 cbnz r0, 8011c2e <LoRaMacCryptoSecureMessage+0x7a> +#else + payloadDecryptionKeyID = NWK_S_KEY; +#endif /* LORAMAC_VERSION */ + // MIC = cmacF[0..3] + // The IsAck parameter is every time false since the ConfFCnt field is not used in legacy mode. + retval = ComputeCmacB0( macMsg->Buffer, ( macMsg->BufSize - LORAMAC_MIC_FIELD_SIZE ), payloadDecryptionKeyID, false, UPLINK, macMsg->FHDR.DevAddr, fCntUp, &macMsg->MIC ); + 8011bf2: 7929 ldrb r1, [r5, #4] + 8011bf4: 3904 subs r1, #4 + 8011bf6: 462b mov r3, r5 + 8011bf8: f853 0b2c ldr.w r0, [r3], #44 + 8011bfc: 9303 str r3, [sp, #12] + 8011bfe: 9402 str r4, [sp, #8] + 8011c00: 68ab ldr r3, [r5, #8] + 8011c02: 9301 str r3, [sp, #4] + 8011c04: 2300 movs r3, #0 + 8011c06: 9300 str r3, [sp, #0] + 8011c08: 2208 movs r2, #8 + 8011c0a: b289 uxth r1, r1 + 8011c0c: f7ff fe32 bl 8011874 <ComputeCmacB0> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011c10: b970 cbnz r0, 8011c30 <LoRaMacCryptoSecureMessage+0x7c> + return retval; + } + } + + // Re-serialize message to add the MIC + if( LoRaMacSerializerData( macMsg ) != LORAMAC_SERIALIZER_SUCCESS ) + 8011c12: 4628 mov r0, r5 + 8011c14: f000 fa1d bl 8012052 <LoRaMacSerializerData> + 8011c18: b960 cbnz r0, 8011c34 <LoRaMacCryptoSecureMessage+0x80> + { + return LORAMAC_CRYPTO_ERROR_SERIALIZER; + } + + CryptoNvm->FCntList.FCntUp = fCntUp; + 8011c1a: 4b07 ldr r3, [pc, #28] ; (8011c38 <LoRaMacCryptoSecureMessage+0x84>) + 8011c1c: 681b ldr r3, [r3, #0] + 8011c1e: 60dc str r4, [r3, #12] + + return LORAMAC_CRYPTO_SUCCESS; + 8011c20: e006 b.n 8011c30 <LoRaMacCryptoSecureMessage+0x7c> + payloadDecryptionKeyID = NWK_S_KEY; + 8011c22: 2208 movs r2, #8 + 8011c24: e7d5 b.n 8011bd2 <LoRaMacCryptoSecureMessage+0x1e> + return LORAMAC_CRYPTO_ERROR_NPE; + 8011c26: 200a movs r0, #10 +} + 8011c28: 4770 bx lr + return LORAMAC_CRYPTO_FAIL_FCNT_SMALLER; + 8011c2a: 2006 movs r0, #6 + 8011c2c: e000 b.n 8011c30 <LoRaMacCryptoSecureMessage+0x7c> + return LORAMAC_CRYPTO_ERROR_SERIALIZER; + 8011c2e: 2011 movs r0, #17 +} + 8011c30: b005 add sp, #20 + 8011c32: bd30 pop {r4, r5, pc} + return LORAMAC_CRYPTO_ERROR_SERIALIZER; + 8011c34: 2011 movs r0, #17 + 8011c36: e7fb b.n 8011c30 <LoRaMacCryptoSecureMessage+0x7c> + 8011c38: 20002620 .word 0x20002620 + +08011c3c <LoRaMacCryptoUnsecureMessage>: + +LoRaMacCryptoStatus_t LoRaMacCryptoUnsecureMessage( AddressIdentifier_t addrID, uint32_t address, FCntIdentifier_t fCntID, uint32_t fCntDown, LoRaMacMessageData_t* macMsg ) +{ + 8011c3c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8011c40: b087 sub sp, #28 + 8011c42: 9e0e ldr r6, [sp, #56] ; 0x38 + if( macMsg == 0 ) + 8011c44: 2e00 cmp r6, #0 + 8011c46: d049 beq.n 8011cdc <LoRaMacCryptoUnsecureMessage+0xa0> + 8011c48: 4605 mov r5, r0 + 8011c4a: 4688 mov r8, r1 + 8011c4c: 4617 mov r7, r2 + 8011c4e: 461c mov r4, r3 + { + return LORAMAC_CRYPTO_ERROR_NPE; + } + + if( CheckFCntDown( fCntID, fCntDown ) == false ) + 8011c50: 4619 mov r1, r3 + 8011c52: 4610 mov r0, r2 + 8011c54: f7ff fdb8 bl 80117c8 <CheckFCntDown> + 8011c58: 2800 cmp r0, #0 + 8011c5a: d041 beq.n 8011ce0 <LoRaMacCryptoUnsecureMessage+0xa4> + KeyIdentifier_t micComputationKeyID = NWK_S_KEY; +#endif /* LORAMAC_VERSION */ + KeyAddr_t* curItem; + + // Parse the message + if( LoRaMacParserData( macMsg ) != LORAMAC_PARSER_SUCCESS ) + 8011c5c: 4630 mov r0, r6 + 8011c5e: f000 f963 bl 8011f28 <LoRaMacParserData> + 8011c62: 2800 cmp r0, #0 + 8011c64: d141 bne.n 8011cea <LoRaMacCryptoUnsecureMessage+0xae> + { + return LORAMAC_CRYPTO_ERROR_PARSER; + } + + // Determine current security context + retval = GetKeyAddrItem( addrID, &curItem ); + 8011c66: a905 add r1, sp, #20 + 8011c68: 4628 mov r0, r5 + 8011c6a: f7ff fd71 bl 8011750 <GetKeyAddrItem> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011c6e: 4605 mov r5, r0 + 8011c70: 2800 cmp r0, #0 + 8011c72: d136 bne.n 8011ce2 <LoRaMacCryptoUnsecureMessage+0xa6> + { + return retval; + } + + payloadDecryptionKeyID = curItem->AppSkey; + 8011c74: 9b05 ldr r3, [sp, #20] + 8011c76: f893 9001 ldrb.w r9, [r3, #1] + micComputationKeyID = curItem->NwkSkey; + 8011c7a: 789a ldrb r2, [r3, #2] + + // Check if it is our address + if( address != macMsg->FHDR.DevAddr ) + 8011c7c: 68b3 ldr r3, [r6, #8] + 8011c7e: 4543 cmp r3, r8 + 8011c80: d135 bne.n 8011cee <LoRaMacCryptoUnsecureMessage+0xb2> + { + return LORAMAC_CRYPTO_FAIL_ADDRESS; + } + + // Compute mic + bool isAck = macMsg->FHDR.FCtrl.Bits.Ack; + 8011c82: 7b33 ldrb r3, [r6, #12] + 8011c84: f3c3 1340 ubfx r3, r3, #5, #1 + if( CryptoNvm->LrWanVersion.Fields.Minor == 0 ) + 8011c88: 491a ldr r1, [pc, #104] ; (8011cf4 <LoRaMacCryptoUnsecureMessage+0xb8>) + 8011c8a: 6809 ldr r1, [r1, #0] + 8011c8c: 7889 ldrb r1, [r1, #2] + 8011c8e: b901 cbnz r1, 8011c92 <LoRaMacCryptoUnsecureMessage+0x56> + { + // In legacy mode the IsAck parameter is forced to be false since the ConfFCnt field is not used. + isAck = false; + 8011c90: 2300 movs r3, #0 + } + + // Verify mic + retval = VerifyCmacB0( macMsg->Buffer, ( macMsg->BufSize - LORAMAC_MIC_FIELD_SIZE ), micComputationKeyID, isAck, DOWNLINK, address, fCntDown, macMsg->MIC ); + 8011c92: 7931 ldrb r1, [r6, #4] + 8011c94: 3904 subs r1, #4 + 8011c96: 6af0 ldr r0, [r6, #44] ; 0x2c + 8011c98: 9003 str r0, [sp, #12] + 8011c9a: 9402 str r4, [sp, #8] + 8011c9c: f8cd 8004 str.w r8, [sp, #4] + 8011ca0: 2001 movs r0, #1 + 8011ca2: 9000 str r0, [sp, #0] + 8011ca4: b289 uxth r1, r1 + 8011ca6: 6830 ldr r0, [r6, #0] + 8011ca8: f7ff fea3 bl 80119f2 <VerifyCmacB0> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011cac: 4605 mov r5, r0 + 8011cae: b9c0 cbnz r0, 8011ce2 <LoRaMacCryptoUnsecureMessage+0xa6> + { + return retval; + } + + // Decrypt payload + if( macMsg->FPort == 0 ) + 8011cb0: f896 3020 ldrb.w r3, [r6, #32] + 8011cb4: b90b cbnz r3, 8011cba <LoRaMacCryptoUnsecureMessage+0x7e> + { + // Use network session encryption key +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01010100 )) + payloadDecryptionKeyID = NWK_S_ENC_KEY; +#else + payloadDecryptionKeyID = NWK_S_KEY; + 8011cb6: f04f 0908 mov.w r9, #8 +#endif /* LORAMAC_VERSION */ + } + retval = PayloadEncrypt( macMsg->FRMPayload, macMsg->FRMPayloadSize, payloadDecryptionKeyID, address, DOWNLINK, fCntDown ); + 8011cba: 9401 str r4, [sp, #4] + 8011cbc: 2301 movs r3, #1 + 8011cbe: 9300 str r3, [sp, #0] + 8011cc0: 4643 mov r3, r8 + 8011cc2: 464a mov r2, r9 + 8011cc4: f896 1028 ldrb.w r1, [r6, #40] ; 0x28 + 8011cc8: 6a70 ldr r0, [r6, #36] ; 0x24 + 8011cca: f7ff fe36 bl 801193a <PayloadEncrypt> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011cce: 4605 mov r5, r0 + 8011cd0: b938 cbnz r0, 8011ce2 <LoRaMacCryptoUnsecureMessage+0xa6> + } + } + } +#endif /* LORAMAC_VERSION */ + + UpdateFCntDown( fCntID, fCntDown ); + 8011cd2: 4621 mov r1, r4 + 8011cd4: 4638 mov r0, r7 + 8011cd6: f7ff fd8f bl 80117f8 <UpdateFCntDown> + + return LORAMAC_CRYPTO_SUCCESS; + 8011cda: e002 b.n 8011ce2 <LoRaMacCryptoUnsecureMessage+0xa6> + return LORAMAC_CRYPTO_ERROR_NPE; + 8011cdc: 250a movs r5, #10 + 8011cde: e000 b.n 8011ce2 <LoRaMacCryptoUnsecureMessage+0xa6> + return LORAMAC_CRYPTO_FAIL_FCNT_SMALLER; + 8011ce0: 2506 movs r5, #6 +} + 8011ce2: 4628 mov r0, r5 + 8011ce4: b007 add sp, #28 + 8011ce6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + return LORAMAC_CRYPTO_ERROR_PARSER; + 8011cea: 2510 movs r5, #16 + 8011cec: e7f9 b.n 8011ce2 <LoRaMacCryptoUnsecureMessage+0xa6> + return LORAMAC_CRYPTO_FAIL_ADDRESS; + 8011cee: 2502 movs r5, #2 + 8011cf0: e7f7 b.n 8011ce2 <LoRaMacCryptoUnsecureMessage+0xa6> + 8011cf2: bf00 nop + 8011cf4: 20002620 .word 0x20002620 + +08011cf8 <LoRaMacCryptoDeriveLifeTimeKey>: + + return LORAMAC_CRYPTO_SUCCESS; +} + +LoRaMacCryptoStatus_t LoRaMacCryptoDeriveLifeTimeKey( uint8_t versionMinor, KeyIdentifier_t keyID ) +{ + 8011cf8: b500 push {lr} + 8011cfa: b085 sub sp, #20 + 8011cfc: 460a mov r2, r1 + uint8_t compBase[16] = { 0 }; + 8011cfe: 2300 movs r3, #0 + 8011d00: 9300 str r3, [sp, #0] + 8011d02: 9301 str r3, [sp, #4] + 8011d04: 9302 str r3, [sp, #8] + 8011d06: 9303 str r3, [sp, #12] + KeyIdentifier_t rootKeyId = APP_KEY; + switch( keyID ) + 8011d08: 290b cmp r1, #11 + 8011d0a: d007 beq.n 8011d1c <LoRaMacCryptoDeriveLifeTimeKey+0x24> + 8011d0c: 290c cmp r1, #12 + 8011d0e: d013 beq.n 8011d38 <LoRaMacCryptoDeriveLifeTimeKey+0x40> + 8011d10: 290a cmp r1, #10 + 8011d12: d00c beq.n 8011d2e <LoRaMacCryptoDeriveLifeTimeKey+0x36> + 8011d14: 200b movs r0, #11 + { + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + } + + return LORAMAC_CRYPTO_SUCCESS; +} + 8011d16: b005 add sp, #20 + 8011d18: f85d fb04 ldr.w pc, [sp], #4 + if( versionMinor == 1 ) + 8011d1c: 2801 cmp r0, #1 + 8011d1e: d001 beq.n 8011d24 <LoRaMacCryptoDeriveLifeTimeKey+0x2c> + KeyIdentifier_t rootKeyId = APP_KEY; + 8011d20: 2100 movs r1, #0 + 8011d22: e00a b.n 8011d3a <LoRaMacCryptoDeriveLifeTimeKey+0x42> + compBase[0] = 0x20; + 8011d24: 2320 movs r3, #32 + 8011d26: f88d 3000 strb.w r3, [sp] + KeyIdentifier_t rootKeyId = APP_KEY; + 8011d2a: 2100 movs r1, #0 + 8011d2c: e005 b.n 8011d3a <LoRaMacCryptoDeriveLifeTimeKey+0x42> + compBase[0] = 0x30; + 8011d2e: 2330 movs r3, #48 ; 0x30 + 8011d30: f88d 3000 strb.w r3, [sp] + KeyIdentifier_t rootKeyId = APP_KEY; + 8011d34: 2100 movs r1, #0 + break; + 8011d36: e000 b.n 8011d3a <LoRaMacCryptoDeriveLifeTimeKey+0x42> + switch( keyID ) + 8011d38: 210b movs r1, #11 + if( SecureElementDeriveAndStoreKey( compBase, rootKeyId, keyID ) != SECURE_ELEMENT_SUCCESS ) + 8011d3a: 4668 mov r0, sp + 8011d3c: f002 fa78 bl 8014230 <SecureElementDeriveAndStoreKey> + 8011d40: 2800 cmp r0, #0 + 8011d42: d0e8 beq.n 8011d16 <LoRaMacCryptoDeriveLifeTimeKey+0x1e> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 8011d44: 200f movs r0, #15 + 8011d46: e7e6 b.n 8011d16 <LoRaMacCryptoDeriveLifeTimeKey+0x1e> + +08011d48 <LoRaMacCryptoSetKey>: +{ + 8011d48: b510 push {r4, lr} + 8011d4a: 4604 mov r4, r0 + if( SecureElementSetKey( keyID, key ) != SECURE_ELEMENT_SUCCESS ) + 8011d4c: f002 fa2e bl 80141ac <SecureElementSetKey> + 8011d50: b998 cbnz r0, 8011d7a <LoRaMacCryptoSetKey+0x32> + if( keyID == APP_KEY ) + 8011d52: b104 cbz r4, 8011d56 <LoRaMacCryptoSetKey+0xe> +} + 8011d54: bd10 pop {r4, pc} + if( LoRaMacCryptoDeriveLifeTimeKey( CryptoNvm->LrWanVersion.Fields.Minor, MC_ROOT_KEY ) != LORAMAC_CRYPTO_SUCCESS ) + 8011d56: 4b0c ldr r3, [pc, #48] ; (8011d88 <LoRaMacCryptoSetKey+0x40>) + 8011d58: 681b ldr r3, [r3, #0] + 8011d5a: 210b movs r1, #11 + 8011d5c: 7898 ldrb r0, [r3, #2] + 8011d5e: f7ff ffcb bl 8011cf8 <LoRaMacCryptoDeriveLifeTimeKey> + 8011d62: b960 cbnz r0, 8011d7e <LoRaMacCryptoSetKey+0x36> + if( LoRaMacCryptoDeriveLifeTimeKey( 0, MC_KE_KEY ) != LORAMAC_CRYPTO_SUCCESS ) + 8011d64: 210c movs r1, #12 + 8011d66: f7ff ffc7 bl 8011cf8 <LoRaMacCryptoDeriveLifeTimeKey> + 8011d6a: b950 cbnz r0, 8011d82 <LoRaMacCryptoSetKey+0x3a> + if( LoRaMacCryptoDeriveLifeTimeKey( 0, DATABLOCK_INT_KEY ) != LORAMAC_CRYPTO_SUCCESS ) + 8011d6c: 210a movs r1, #10 + 8011d6e: f7ff ffc3 bl 8011cf8 <LoRaMacCryptoDeriveLifeTimeKey> + 8011d72: 2800 cmp r0, #0 + 8011d74: d0ee beq.n 8011d54 <LoRaMacCryptoSetKey+0xc> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 8011d76: 200f movs r0, #15 + 8011d78: e7ec b.n 8011d54 <LoRaMacCryptoSetKey+0xc> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 8011d7a: 200f movs r0, #15 + 8011d7c: e7ea b.n 8011d54 <LoRaMacCryptoSetKey+0xc> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 8011d7e: 200f movs r0, #15 + 8011d80: e7e8 b.n 8011d54 <LoRaMacCryptoSetKey+0xc> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 8011d82: 200f movs r0, #15 + 8011d84: e7e6 b.n 8011d54 <LoRaMacCryptoSetKey+0xc> + 8011d86: bf00 nop + 8011d88: 20002620 .word 0x20002620 + +08011d8c <LoRaMacCryptoHandleJoinAccept>: + if( ( macMsg == 0 ) || ( joinEUI == 0 ) ) + 8011d8c: 2a00 cmp r2, #0 + 8011d8e: d06c beq.n 8011e6a <LoRaMacCryptoHandleJoinAccept+0xde> +{ + 8011d90: b5f0 push {r4, r5, r6, r7, lr} + 8011d92: b08f sub sp, #60 ; 0x3c + 8011d94: 4607 mov r7, r0 + 8011d96: 460d mov r5, r1 + 8011d98: 4614 mov r4, r2 + if( ( macMsg == 0 ) || ( joinEUI == 0 ) ) + 8011d9a: 2900 cmp r1, #0 + 8011d9c: d067 beq.n 8011e6e <LoRaMacCryptoHandleJoinAccept+0xe2> + uint8_t decJoinAccept[LORAMAC_JOIN_ACCEPT_FRAME_MAX_SIZE] = { 0 }; + 8011d9e: 2600 movs r6, #0 + 8011da0: 9605 str r6, [sp, #20] + 8011da2: 221d movs r2, #29 + 8011da4: 4631 mov r1, r6 + 8011da6: a806 add r0, sp, #24 + 8011da8: f005 fc8a bl 80176c0 <memset> + uint8_t versionMinor = 0; + 8011dac: f88d 6013 strb.w r6, [sp, #19] + uint16_t nonce = CryptoNvm->DevNonce; + 8011db0: 4b33 ldr r3, [pc, #204] ; (8011e80 <LoRaMacCryptoHandleJoinAccept+0xf4>) + 8011db2: 681b ldr r3, [r3, #0] + 8011db4: 889e ldrh r6, [r3, #4] + if( SecureElementProcessJoinAccept( joinReqType, joinEUI, nonce, macMsg->Buffer, + 8011db6: f10d 0313 add.w r3, sp, #19 + 8011dba: 9302 str r3, [sp, #8] + 8011dbc: ab05 add r3, sp, #20 + 8011dbe: 9301 str r3, [sp, #4] + 8011dc0: 7923 ldrb r3, [r4, #4] + 8011dc2: 9300 str r3, [sp, #0] + 8011dc4: 6823 ldr r3, [r4, #0] + 8011dc6: 4632 mov r2, r6 + 8011dc8: 4629 mov r1, r5 + 8011dca: 4638 mov r0, r7 + 8011dcc: f002 fa50 bl 8014270 <SecureElementProcessJoinAccept> + 8011dd0: 2800 cmp r0, #0 + 8011dd2: d14e bne.n 8011e72 <LoRaMacCryptoHandleJoinAccept+0xe6> + memcpy1( macMsg->Buffer, decJoinAccept, macMsg->BufSize ); + 8011dd4: 7922 ldrb r2, [r4, #4] + 8011dd6: a905 add r1, sp, #20 + 8011dd8: 6820 ldr r0, [r4, #0] + 8011dda: f002 fbde bl 801459a <memcpy1> + if( LoRaMacParserJoinAccept( macMsg ) != LORAMAC_PARSER_SUCCESS ) + 8011dde: 4620 mov r0, r4 + 8011de0: f000 f850 bl 8011e84 <LoRaMacParserJoinAccept> + 8011de4: 2800 cmp r0, #0 + 8011de6: d147 bne.n 8011e78 <LoRaMacCryptoHandleJoinAccept+0xec> + currentJoinNonce = ( uint32_t )macMsg->JoinNonce[0]; + 8011de8: 79a5 ldrb r5, [r4, #6] + currentJoinNonce |= ( ( uint32_t )macMsg->JoinNonce[1] << 8 ); + 8011dea: 79e3 ldrb r3, [r4, #7] + 8011dec: ea45 2503 orr.w r5, r5, r3, lsl #8 + currentJoinNonce |= ( ( uint32_t )macMsg->JoinNonce[2] << 16 ); + 8011df0: 7a23 ldrb r3, [r4, #8] + 8011df2: ea45 4503 orr.w r5, r5, r3, lsl #16 + isJoinNonceOk = IsJoinNonce10xOk( currentJoinNonce ); + 8011df6: 4628 mov r0, r5 + 8011df8: f7ff fd32 bl 8011860 <IsJoinNonce10xOk> + if( isJoinNonceOk == true ) + 8011dfc: 2800 cmp r0, #0 + 8011dfe: d03d beq.n 8011e7c <LoRaMacCryptoHandleJoinAccept+0xf0> + CryptoNvm->JoinNonce = currentJoinNonce; + 8011e00: 4b1f ldr r3, [pc, #124] ; (8011e80 <LoRaMacCryptoHandleJoinAccept+0xf4>) + 8011e02: 681b ldr r3, [r3, #0] + 8011e04: 609d str r5, [r3, #8] + retval = LoRaMacCryptoDeriveLifeTimeKey( versionMinor, MC_ROOT_KEY ); + 8011e06: 210b movs r1, #11 + 8011e08: f89d 0013 ldrb.w r0, [sp, #19] + 8011e0c: f7ff ff74 bl 8011cf8 <LoRaMacCryptoDeriveLifeTimeKey> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011e10: bb80 cbnz r0, 8011e74 <LoRaMacCryptoHandleJoinAccept+0xe8> + retval = LoRaMacCryptoDeriveLifeTimeKey( 0, MC_KE_KEY ); + 8011e12: 210c movs r1, #12 + 8011e14: 2000 movs r0, #0 + 8011e16: f7ff ff6f bl 8011cf8 <LoRaMacCryptoDeriveLifeTimeKey> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011e1a: bb58 cbnz r0, 8011e74 <LoRaMacCryptoHandleJoinAccept+0xe8> + retval = LoRaMacCryptoDeriveLifeTimeKey( 0, DATABLOCK_INT_KEY ); + 8011e1c: 210a movs r1, #10 + 8011e1e: 2000 movs r0, #0 + 8011e20: f7ff ff6a bl 8011cf8 <LoRaMacCryptoDeriveLifeTimeKey> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011e24: bb30 cbnz r0, 8011e74 <LoRaMacCryptoHandleJoinAccept+0xe8> + netID = ( uint32_t )macMsg->NetID[0]; + 8011e26: 7a63 ldrb r3, [r4, #9] + netID |= ( ( uint32_t )macMsg->NetID[1] << 8 ); + 8011e28: 7aa2 ldrb r2, [r4, #10] + 8011e2a: ea43 2302 orr.w r3, r3, r2, lsl #8 + netID |= ( ( uint32_t )macMsg->NetID[2] << 16 ); + 8011e2e: 7ae2 ldrb r2, [r4, #11] + 8011e30: ea43 4402 orr.w r4, r3, r2, lsl #16 + retval = DeriveSessionKey10x( APP_S_KEY, currentJoinNonce, netID, nonce ); + 8011e34: 4633 mov r3, r6 + 8011e36: 4622 mov r2, r4 + 8011e38: 4629 mov r1, r5 + 8011e3a: 2009 movs r0, #9 + 8011e3c: f7ff fd46 bl 80118cc <DeriveSessionKey10x> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011e40: b9c0 cbnz r0, 8011e74 <LoRaMacCryptoHandleJoinAccept+0xe8> + retval = DeriveSessionKey10x( NWK_S_KEY, currentJoinNonce, netID, nonce ); + 8011e42: 4633 mov r3, r6 + 8011e44: 4622 mov r2, r4 + 8011e46: 4629 mov r1, r5 + 8011e48: 2008 movs r0, #8 + 8011e4a: f7ff fd3f bl 80118cc <DeriveSessionKey10x> + if( retval != LORAMAC_CRYPTO_SUCCESS ) + 8011e4e: b988 cbnz r0, 8011e74 <LoRaMacCryptoHandleJoinAccept+0xe8> + CryptoNvm->LrWanVersion.Fields.Minor = versionMinor; + 8011e50: 4b0b ldr r3, [pc, #44] ; (8011e80 <LoRaMacCryptoHandleJoinAccept+0xf4>) + 8011e52: 681b ldr r3, [r3, #0] + 8011e54: f89d 2013 ldrb.w r2, [sp, #19] + 8011e58: 709a strb r2, [r3, #2] + CryptoNvm->FCntList.FCntUp = 0; + 8011e5a: 2200 movs r2, #0 + 8011e5c: 60da str r2, [r3, #12] + CryptoNvm->FCntList.FCntDown = FCNT_DOWN_INITIAL_VALUE; + 8011e5e: f04f 32ff mov.w r2, #4294967295 + 8011e62: 619a str r2, [r3, #24] + CryptoNvm->FCntList.NFCntDown = FCNT_DOWN_INITIAL_VALUE; + 8011e64: 611a str r2, [r3, #16] + CryptoNvm->FCntList.AFCntDown = FCNT_DOWN_INITIAL_VALUE; + 8011e66: 615a str r2, [r3, #20] + return LORAMAC_CRYPTO_SUCCESS; + 8011e68: e004 b.n 8011e74 <LoRaMacCryptoHandleJoinAccept+0xe8> + return LORAMAC_CRYPTO_ERROR_NPE; + 8011e6a: 200a movs r0, #10 +} + 8011e6c: 4770 bx lr + return LORAMAC_CRYPTO_ERROR_NPE; + 8011e6e: 200a movs r0, #10 + 8011e70: e000 b.n 8011e74 <LoRaMacCryptoHandleJoinAccept+0xe8> + return LORAMAC_CRYPTO_ERROR_SECURE_ELEMENT_FUNC; + 8011e72: 200f movs r0, #15 +} + 8011e74: b00f add sp, #60 ; 0x3c + 8011e76: bdf0 pop {r4, r5, r6, r7, pc} + return LORAMAC_CRYPTO_ERROR_PARSER; + 8011e78: 2010 movs r0, #16 + 8011e7a: e7fb b.n 8011e74 <LoRaMacCryptoHandleJoinAccept+0xe8> + return LORAMAC_CRYPTO_FAIL_JOIN_NONCE; + 8011e7c: 2003 movs r0, #3 + 8011e7e: e7f9 b.n 8011e74 <LoRaMacCryptoHandleJoinAccept+0xe8> + 8011e80: 20002620 .word 0x20002620 + +08011e84 <LoRaMacParserJoinAccept>: +#include "LoRaMacParser.h" +#include "utilities.h" + +LoRaMacParserStatus_t LoRaMacParserJoinAccept( LoRaMacMessageJoinAccept_t* macMsg ) +{ + if( ( macMsg == 0 ) || ( macMsg->Buffer == 0 ) ) + 8011e84: 2800 cmp r0, #0 + 8011e86: d049 beq.n 8011f1c <LoRaMacParserJoinAccept+0x98> +{ + 8011e88: b510 push {r4, lr} + 8011e8a: 4604 mov r4, r0 + if( ( macMsg == 0 ) || ( macMsg->Buffer == 0 ) ) + 8011e8c: 6801 ldr r1, [r0, #0] + 8011e8e: 2900 cmp r1, #0 + 8011e90: d046 beq.n 8011f20 <LoRaMacParserJoinAccept+0x9c> + return LORAMAC_PARSER_ERROR_NPE; + } + + uint16_t bufItr = 0; + + macMsg->MHDR.Value = macMsg->Buffer[bufItr++]; + 8011e92: f811 3b01 ldrb.w r3, [r1], #1 + 8011e96: 7143 strb r3, [r0, #5] + + memcpy1( macMsg->JoinNonce, &macMsg->Buffer[bufItr], 3 ); + 8011e98: 2203 movs r2, #3 + 8011e9a: 3006 adds r0, #6 + 8011e9c: f002 fb7d bl 801459a <memcpy1> + bufItr = bufItr + 3; + + memcpy1( macMsg->NetID, &macMsg->Buffer[bufItr], 3 ); + 8011ea0: 4620 mov r0, r4 + 8011ea2: f850 1b09 ldr.w r1, [r0], #9 + 8011ea6: 2203 movs r2, #3 + 8011ea8: 3104 adds r1, #4 + 8011eaa: f002 fb76 bl 801459a <memcpy1> + bufItr = bufItr + 3; + + macMsg->DevAddr = ( uint32_t ) macMsg->Buffer[bufItr++]; + 8011eae: 6821 ldr r1, [r4, #0] + 8011eb0: 79cb ldrb r3, [r1, #7] + 8011eb2: 60e3 str r3, [r4, #12] + macMsg->DevAddr |= ( ( uint32_t ) macMsg->Buffer[bufItr++] << 8 ); + 8011eb4: 7a0a ldrb r2, [r1, #8] + 8011eb6: ea43 2302 orr.w r3, r3, r2, lsl #8 + 8011eba: 60e3 str r3, [r4, #12] + macMsg->DevAddr |= ( ( uint32_t ) macMsg->Buffer[bufItr++] << 16 ); + 8011ebc: 7a4a ldrb r2, [r1, #9] + 8011ebe: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8011ec2: 60e3 str r3, [r4, #12] + macMsg->DevAddr |= ( ( uint32_t ) macMsg->Buffer[bufItr++] << 24 ); + 8011ec4: 7a8a ldrb r2, [r1, #10] + 8011ec6: ea43 6302 orr.w r3, r3, r2, lsl #24 + 8011eca: 60e3 str r3, [r4, #12] + + macMsg->DLSettings.Value = macMsg->Buffer[bufItr++]; + 8011ecc: 7acb ldrb r3, [r1, #11] + 8011ece: 7423 strb r3, [r4, #16] + + macMsg->RxDelay = macMsg->Buffer[bufItr++]; + 8011ed0: 7b0b ldrb r3, [r1, #12] + 8011ed2: 7463 strb r3, [r4, #17] + + if( ( macMsg->BufSize - LORAMAC_MIC_FIELD_SIZE - bufItr ) == LORAMAC_CF_LIST_FIELD_SIZE ) + 8011ed4: 7923 ldrb r3, [r4, #4] + 8011ed6: 2b21 cmp r3, #33 ; 0x21 + 8011ed8: d018 beq.n 8011f0c <LoRaMacParserJoinAccept+0x88> + { + memcpy1( macMsg->CFList, &macMsg->Buffer[bufItr], LORAMAC_CF_LIST_FIELD_SIZE ); + bufItr = bufItr + LORAMAC_CF_LIST_FIELD_SIZE; + } + else if( ( macMsg->BufSize - LORAMAC_MIC_FIELD_SIZE - bufItr ) > 0 ) + 8011eda: 2b11 cmp r3, #17 + 8011edc: dc22 bgt.n 8011f24 <LoRaMacParserJoinAccept+0xa0> + macMsg->RxDelay = macMsg->Buffer[bufItr++]; + 8011ede: 220d movs r2, #13 + { + return LORAMAC_PARSER_FAIL; + } + + macMsg->MIC = ( uint32_t ) macMsg->Buffer[bufItr++]; + 8011ee0: 6821 ldr r1, [r4, #0] + 8011ee2: f102 0c01 add.w ip, r2, #1 + 8011ee6: 5c8b ldrb r3, [r1, r2] + 8011ee8: 6263 str r3, [r4, #36] ; 0x24 + macMsg->MIC |= ( ( uint32_t ) macMsg->Buffer[bufItr++] << 8 ); + 8011eea: 1c90 adds r0, r2, #2 + 8011eec: f811 c00c ldrb.w ip, [r1, ip] + 8011ef0: ea43 230c orr.w r3, r3, ip, lsl #8 + 8011ef4: 6263 str r3, [r4, #36] ; 0x24 + macMsg->MIC |= ( ( uint32_t ) macMsg->Buffer[bufItr++] << 16 ); + 8011ef6: 3203 adds r2, #3 + 8011ef8: 5c08 ldrb r0, [r1, r0] + 8011efa: ea43 4300 orr.w r3, r3, r0, lsl #16 + 8011efe: 6263 str r3, [r4, #36] ; 0x24 + macMsg->MIC |= ( ( uint32_t ) macMsg->Buffer[bufItr++] << 24 ); + 8011f00: 5c8a ldrb r2, [r1, r2] + 8011f02: ea43 6302 orr.w r3, r3, r2, lsl #24 + 8011f06: 6263 str r3, [r4, #36] ; 0x24 + + return LORAMAC_PARSER_SUCCESS; + 8011f08: 2000 movs r0, #0 +} + 8011f0a: bd10 pop {r4, pc} + memcpy1( macMsg->CFList, &macMsg->Buffer[bufItr], LORAMAC_CF_LIST_FIELD_SIZE ); + 8011f0c: 2210 movs r2, #16 + 8011f0e: 310d adds r1, #13 + 8011f10: f104 0012 add.w r0, r4, #18 + 8011f14: f002 fb41 bl 801459a <memcpy1> + bufItr = bufItr + LORAMAC_CF_LIST_FIELD_SIZE; + 8011f18: 221d movs r2, #29 + 8011f1a: e7e1 b.n 8011ee0 <LoRaMacParserJoinAccept+0x5c> + return LORAMAC_PARSER_ERROR_NPE; + 8011f1c: 2002 movs r0, #2 +} + 8011f1e: 4770 bx lr + return LORAMAC_PARSER_ERROR_NPE; + 8011f20: 2002 movs r0, #2 + 8011f22: e7f2 b.n 8011f0a <LoRaMacParserJoinAccept+0x86> + return LORAMAC_PARSER_FAIL; + 8011f24: 2001 movs r0, #1 + 8011f26: e7f0 b.n 8011f0a <LoRaMacParserJoinAccept+0x86> + +08011f28 <LoRaMacParserData>: + +LoRaMacParserStatus_t LoRaMacParserData( LoRaMacMessageData_t* macMsg ) +{ + if( ( macMsg == 0 ) || ( macMsg->Buffer == 0 ) ) + 8011f28: 2800 cmp r0, #0 + 8011f2a: d058 beq.n 8011fde <LoRaMacParserData+0xb6> +{ + 8011f2c: b510 push {r4, lr} + 8011f2e: 4604 mov r4, r0 + if( ( macMsg == 0 ) || ( macMsg->Buffer == 0 ) ) + 8011f30: 6801 ldr r1, [r0, #0] + 8011f32: 2900 cmp r1, #0 + 8011f34: d055 beq.n 8011fe2 <LoRaMacParserData+0xba> + return LORAMAC_PARSER_ERROR_NPE; + } + + uint16_t bufItr = 0; + + macMsg->MHDR.Value = macMsg->Buffer[bufItr++]; + 8011f36: 780b ldrb r3, [r1, #0] + 8011f38: 7143 strb r3, [r0, #5] + + macMsg->FHDR.DevAddr = macMsg->Buffer[bufItr++]; + 8011f3a: 784b ldrb r3, [r1, #1] + 8011f3c: 6083 str r3, [r0, #8] + macMsg->FHDR.DevAddr |= ( ( uint32_t ) macMsg->Buffer[bufItr++] << 8 ); + 8011f3e: 788a ldrb r2, [r1, #2] + 8011f40: ea43 2302 orr.w r3, r3, r2, lsl #8 + 8011f44: 6083 str r3, [r0, #8] + macMsg->FHDR.DevAddr |= ( ( uint32_t ) macMsg->Buffer[bufItr++] << 16 ); + 8011f46: 78ca ldrb r2, [r1, #3] + 8011f48: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8011f4c: 6083 str r3, [r0, #8] + macMsg->FHDR.DevAddr |= ( ( uint32_t ) macMsg->Buffer[bufItr++] << 24 ); + 8011f4e: 790a ldrb r2, [r1, #4] + 8011f50: ea43 6302 orr.w r3, r3, r2, lsl #24 + 8011f54: 6083 str r3, [r0, #8] + + macMsg->FHDR.FCtrl.Value = macMsg->Buffer[bufItr++]; + 8011f56: 794b ldrb r3, [r1, #5] + 8011f58: 7303 strb r3, [r0, #12] + + macMsg->FHDR.FCnt = macMsg->Buffer[bufItr++]; + 8011f5a: 798b ldrb r3, [r1, #6] + 8011f5c: 81c3 strh r3, [r0, #14] + macMsg->FHDR.FCnt |= macMsg->Buffer[bufItr++] << 8; + 8011f5e: 79ca ldrb r2, [r1, #7] + 8011f60: ea43 2302 orr.w r3, r3, r2, lsl #8 + 8011f64: 81c3 strh r3, [r0, #14] + + memcpy1( macMsg->FHDR.FOpts, &macMsg->Buffer[bufItr], macMsg->FHDR.FCtrl.Bits.FOptsLen ); + 8011f66: 7b02 ldrb r2, [r0, #12] + 8011f68: f002 020f and.w r2, r2, #15 + 8011f6c: 3108 adds r1, #8 + 8011f6e: 3010 adds r0, #16 + 8011f70: f002 fb13 bl 801459a <memcpy1> + bufItr = bufItr + macMsg->FHDR.FCtrl.Bits.FOptsLen; + 8011f74: 7b23 ldrb r3, [r4, #12] + 8011f76: f003 030f and.w r3, r3, #15 + 8011f7a: f103 0008 add.w r0, r3, #8 + + // Initialize anyway with zero. + macMsg->FPort = 0; + 8011f7e: 2200 movs r2, #0 + 8011f80: f884 2020 strb.w r2, [r4, #32] + macMsg->FRMPayloadSize = 0; + 8011f84: f884 2028 strb.w r2, [r4, #40] ; 0x28 + + if( ( macMsg->BufSize - bufItr - LORAMAC_MIC_FIELD_SIZE ) > 0 ) + 8011f88: 7922 ldrb r2, [r4, #4] + 8011f8a: 1a11 subs r1, r2, r0 + 8011f8c: 2904 cmp r1, #4 + 8011f8e: dc16 bgt.n 8011fbe <LoRaMacParserData+0x96> + macMsg->FRMPayloadSize = ( macMsg->BufSize - bufItr - LORAMAC_MIC_FIELD_SIZE ); + memcpy1( macMsg->FRMPayload, &macMsg->Buffer[bufItr], macMsg->FRMPayloadSize ); + bufItr = bufItr + macMsg->FRMPayloadSize; + } + + macMsg->MIC = ( uint32_t ) macMsg->Buffer[( macMsg->BufSize - LORAMAC_MIC_FIELD_SIZE )]; + 8011f90: 6822 ldr r2, [r4, #0] + 8011f92: 7923 ldrb r3, [r4, #4] + 8011f94: 441a add r2, r3 + 8011f96: f812 3c04 ldrb.w r3, [r2, #-4] + 8011f9a: 62e3 str r3, [r4, #44] ; 0x2c + macMsg->MIC |= ( ( uint32_t ) macMsg->Buffer[( macMsg->BufSize - LORAMAC_MIC_FIELD_SIZE ) + 1] << 8 ); + 8011f9c: f812 1c03 ldrb.w r1, [r2, #-3] + 8011fa0: ea43 2301 orr.w r3, r3, r1, lsl #8 + 8011fa4: 62e3 str r3, [r4, #44] ; 0x2c + macMsg->MIC |= ( ( uint32_t ) macMsg->Buffer[( macMsg->BufSize - LORAMAC_MIC_FIELD_SIZE ) + 2] << 16 ); + 8011fa6: f812 1c02 ldrb.w r1, [r2, #-2] + 8011faa: ea43 4301 orr.w r3, r3, r1, lsl #16 + 8011fae: 62e3 str r3, [r4, #44] ; 0x2c + macMsg->MIC |= ( ( uint32_t ) macMsg->Buffer[( macMsg->BufSize - LORAMAC_MIC_FIELD_SIZE ) + 3] << 24 ); + 8011fb0: f812 2c01 ldrb.w r2, [r2, #-1] + 8011fb4: ea43 6302 orr.w r3, r3, r2, lsl #24 + 8011fb8: 62e3 str r3, [r4, #44] ; 0x2c + + return LORAMAC_PARSER_SUCCESS; + 8011fba: 2000 movs r0, #0 +} + 8011fbc: bd10 pop {r4, pc} + macMsg->FPort = macMsg->Buffer[bufItr++]; + 8011fbe: 6821 ldr r1, [r4, #0] + 8011fc0: 3309 adds r3, #9 + 8011fc2: 5c08 ldrb r0, [r1, r0] + 8011fc4: f884 0020 strb.w r0, [r4, #32] + macMsg->FRMPayloadSize = ( macMsg->BufSize - bufItr - LORAMAC_MIC_FIELD_SIZE ); + 8011fc8: 1ad2 subs r2, r2, r3 + 8011fca: b2d2 uxtb r2, r2 + 8011fcc: 3a04 subs r2, #4 + 8011fce: b2d2 uxtb r2, r2 + 8011fd0: f884 2028 strb.w r2, [r4, #40] ; 0x28 + memcpy1( macMsg->FRMPayload, &macMsg->Buffer[bufItr], macMsg->FRMPayloadSize ); + 8011fd4: 4419 add r1, r3 + 8011fd6: 6a60 ldr r0, [r4, #36] ; 0x24 + 8011fd8: f002 fadf bl 801459a <memcpy1> + bufItr = bufItr + macMsg->FRMPayloadSize; + 8011fdc: e7d8 b.n 8011f90 <LoRaMacParserData+0x68> + return LORAMAC_PARSER_ERROR_NPE; + 8011fde: 2002 movs r0, #2 +} + 8011fe0: 4770 bx lr + return LORAMAC_PARSER_ERROR_NPE; + 8011fe2: 2002 movs r0, #2 + 8011fe4: e7ea b.n 8011fbc <LoRaMacParserData+0x94> + +08011fe6 <LoRaMacSerializerJoinRequest>: +#include "LoRaMacSerializer.h" +#include "utilities.h" + +LoRaMacSerializerStatus_t LoRaMacSerializerJoinRequest( LoRaMacMessageJoinRequest_t* macMsg ) +{ + if( ( macMsg == 0 ) || ( macMsg->Buffer == 0 ) ) + 8011fe6: b370 cbz r0, 8012046 <LoRaMacSerializerJoinRequest+0x60> +{ + 8011fe8: b510 push {r4, lr} + 8011fea: 4604 mov r4, r0 + if( ( macMsg == 0 ) || ( macMsg->Buffer == 0 ) ) + 8011fec: 6803 ldr r3, [r0, #0] + 8011fee: b363 cbz r3, 801204a <LoRaMacSerializerJoinRequest+0x64> + } + + uint16_t bufItr = 0; + + // Check macMsg->BufSize + if( macMsg->BufSize < LORAMAC_JOIN_REQ_MSG_SIZE ) + 8011ff0: 7902 ldrb r2, [r0, #4] + 8011ff2: 2a16 cmp r2, #22 + 8011ff4: d92b bls.n 801204e <LoRaMacSerializerJoinRequest+0x68> + { + return LORAMAC_SERIALIZER_ERROR_BUF_SIZE; + } + + macMsg->Buffer[bufItr++] = macMsg->MHDR.Value; + 8011ff6: 7942 ldrb r2, [r0, #5] + 8011ff8: 701a strb r2, [r3, #0] + + memcpyr( &macMsg->Buffer[bufItr], macMsg->JoinEUI, LORAMAC_JOIN_EUI_FIELD_SIZE ); + 8011ffa: 4601 mov r1, r0 + 8011ffc: f851 0b06 ldr.w r0, [r1], #6 + 8012000: 2208 movs r2, #8 + 8012002: 3001 adds r0, #1 + 8012004: f002 fad4 bl 80145b0 <memcpyr> + bufItr += LORAMAC_JOIN_EUI_FIELD_SIZE; + + memcpyr( &macMsg->Buffer[bufItr], macMsg->DevEUI, LORAMAC_DEV_EUI_FIELD_SIZE ); + 8012008: 4621 mov r1, r4 + 801200a: f851 0b0e ldr.w r0, [r1], #14 + 801200e: 2208 movs r2, #8 + 8012010: 3009 adds r0, #9 + 8012012: f002 facd bl 80145b0 <memcpyr> + bufItr += LORAMAC_DEV_EUI_FIELD_SIZE; + + macMsg->Buffer[bufItr++] = macMsg->DevNonce & 0xFF; + 8012016: 8ae2 ldrh r2, [r4, #22] + 8012018: 6823 ldr r3, [r4, #0] + 801201a: 745a strb r2, [r3, #17] + macMsg->Buffer[bufItr++] = ( macMsg->DevNonce >> 8 ) & 0xFF; + 801201c: 8ae3 ldrh r3, [r4, #22] + 801201e: 6822 ldr r2, [r4, #0] + 8012020: 0a1b lsrs r3, r3, #8 + 8012022: 7493 strb r3, [r2, #18] + + macMsg->Buffer[bufItr++] = macMsg->MIC & 0xFF; + 8012024: 69a2 ldr r2, [r4, #24] + 8012026: 6823 ldr r3, [r4, #0] + 8012028: 74da strb r2, [r3, #19] + macMsg->Buffer[bufItr++] = ( macMsg->MIC >> 8 ) & 0xFF; + 801202a: 69a3 ldr r3, [r4, #24] + 801202c: 0a1b lsrs r3, r3, #8 + 801202e: 6822 ldr r2, [r4, #0] + 8012030: 7513 strb r3, [r2, #20] + macMsg->Buffer[bufItr++] = ( macMsg->MIC >> 16 ) & 0xFF; + 8012032: 8b62 ldrh r2, [r4, #26] + 8012034: 6823 ldr r3, [r4, #0] + 8012036: 755a strb r2, [r3, #21] + macMsg->Buffer[bufItr++] = ( macMsg->MIC >> 24 ) & 0xFF; + 8012038: 7ee2 ldrb r2, [r4, #27] + 801203a: 6823 ldr r3, [r4, #0] + 801203c: 759a strb r2, [r3, #22] + + macMsg->BufSize = bufItr; + 801203e: 2317 movs r3, #23 + 8012040: 7123 strb r3, [r4, #4] + + return LORAMAC_SERIALIZER_SUCCESS; + 8012042: 2000 movs r0, #0 +} + 8012044: bd10 pop {r4, pc} + return LORAMAC_SERIALIZER_ERROR_NPE; + 8012046: 2001 movs r0, #1 +} + 8012048: 4770 bx lr + return LORAMAC_SERIALIZER_ERROR_NPE; + 801204a: 2001 movs r0, #1 + 801204c: e7fa b.n 8012044 <LoRaMacSerializerJoinRequest+0x5e> + return LORAMAC_SERIALIZER_ERROR_BUF_SIZE; + 801204e: 2002 movs r0, #2 + 8012050: e7f8 b.n 8012044 <LoRaMacSerializerJoinRequest+0x5e> + +08012052 <LoRaMacSerializerData>: + return LORAMAC_SERIALIZER_SUCCESS; +} + +LoRaMacSerializerStatus_t LoRaMacSerializerData( LoRaMacMessageData_t* macMsg ) +{ + if( ( macMsg == 0 ) || ( macMsg->Buffer == 0 ) ) + 8012052: 2800 cmp r0, #0 + 8012054: d066 beq.n 8012124 <LoRaMacSerializerData+0xd2> +{ + 8012056: b538 push {r3, r4, r5, lr} + 8012058: 4604 mov r4, r0 + if( ( macMsg == 0 ) || ( macMsg->Buffer == 0 ) ) + 801205a: 6801 ldr r1, [r0, #0] + 801205c: 2900 cmp r1, #0 + 801205e: d063 beq.n 8012128 <LoRaMacSerializerData+0xd6> + uint16_t computedBufSize = LORAMAC_MHDR_FIELD_SIZE + + LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE + + LORAMAC_FHDR_F_CTRL_FIELD_SIZE + + LORAMAC_FHDR_F_CNT_FIELD_SIZE; + + computedBufSize += macMsg->FHDR.FCtrl.Bits.FOptsLen; + 8012060: 7b02 ldrb r2, [r0, #12] + 8012062: f002 020f and.w r2, r2, #15 + 8012066: f102 0008 add.w r0, r2, #8 + + if( macMsg->FRMPayloadSize > 0 ) + 801206a: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 + 801206e: b10b cbz r3, 8012074 <LoRaMacSerializerData+0x22> + { + computedBufSize += LORAMAC_F_PORT_FIELD_SIZE; + 8012070: f102 0009 add.w r0, r2, #9 + } + + computedBufSize += macMsg->FRMPayloadSize; + 8012074: 4403 add r3, r0 + computedBufSize += LORAMAC_MIC_FIELD_SIZE; + 8012076: 3304 adds r3, #4 + 8012078: b29b uxth r3, r3 + + if( macMsg->BufSize < computedBufSize ) + 801207a: 7922 ldrb r2, [r4, #4] + 801207c: 429a cmp r2, r3 + 801207e: d355 bcc.n 801212c <LoRaMacSerializerData+0xda> + { + return LORAMAC_SERIALIZER_ERROR_BUF_SIZE; + } + + macMsg->Buffer[bufItr++] = macMsg->MHDR.Value; + 8012080: 7963 ldrb r3, [r4, #5] + 8012082: 700b strb r3, [r1, #0] + + macMsg->Buffer[bufItr++] = ( macMsg->FHDR.DevAddr ) & 0xFF; + 8012084: 68a2 ldr r2, [r4, #8] + 8012086: 6823 ldr r3, [r4, #0] + 8012088: 705a strb r2, [r3, #1] + macMsg->Buffer[bufItr++] = ( macMsg->FHDR.DevAddr >> 8 ) & 0xFF; + 801208a: 68a3 ldr r3, [r4, #8] + 801208c: 0a1b lsrs r3, r3, #8 + 801208e: 6822 ldr r2, [r4, #0] + 8012090: 7093 strb r3, [r2, #2] + macMsg->Buffer[bufItr++] = ( macMsg->FHDR.DevAddr >> 16 ) & 0xFF; + 8012092: 8962 ldrh r2, [r4, #10] + 8012094: 6823 ldr r3, [r4, #0] + 8012096: 70da strb r2, [r3, #3] + macMsg->Buffer[bufItr++] = ( macMsg->FHDR.DevAddr >> 24 ) & 0xFF; + 8012098: 7ae2 ldrb r2, [r4, #11] + 801209a: 6823 ldr r3, [r4, #0] + 801209c: 711a strb r2, [r3, #4] + + macMsg->Buffer[bufItr++] = macMsg->FHDR.FCtrl.Value; + 801209e: 6823 ldr r3, [r4, #0] + 80120a0: 7b22 ldrb r2, [r4, #12] + 80120a2: 715a strb r2, [r3, #5] + + macMsg->Buffer[bufItr++] = macMsg->FHDR.FCnt & 0xFF; + 80120a4: 89e2 ldrh r2, [r4, #14] + 80120a6: 6823 ldr r3, [r4, #0] + 80120a8: 719a strb r2, [r3, #6] + macMsg->Buffer[bufItr++] = ( macMsg->FHDR.FCnt >> 8 ) & 0xFF; + 80120aa: 89e3 ldrh r3, [r4, #14] + 80120ac: 6822 ldr r2, [r4, #0] + 80120ae: 0a1b lsrs r3, r3, #8 + 80120b0: 71d3 strb r3, [r2, #7] + + memcpy1( &macMsg->Buffer[bufItr], macMsg->FHDR.FOpts, macMsg->FHDR.FCtrl.Bits.FOptsLen ); + 80120b2: 4621 mov r1, r4 + 80120b4: f851 0b10 ldr.w r0, [r1], #16 + 80120b8: 7b22 ldrb r2, [r4, #12] + 80120ba: f002 020f and.w r2, r2, #15 + 80120be: 3008 adds r0, #8 + 80120c0: f002 fa6b bl 801459a <memcpy1> + bufItr = bufItr + macMsg->FHDR.FCtrl.Bits.FOptsLen; + 80120c4: 7b23 ldrb r3, [r4, #12] + 80120c6: f003 030f and.w r3, r3, #15 + 80120ca: f103 0508 add.w r5, r3, #8 + + if( macMsg->FRMPayloadSize > 0 ) + 80120ce: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 + 80120d2: b12a cbz r2, 80120e0 <LoRaMacSerializerData+0x8e> + { + macMsg->Buffer[bufItr++] = macMsg->FPort; + 80120d4: 6822 ldr r2, [r4, #0] + 80120d6: f894 1020 ldrb.w r1, [r4, #32] + 80120da: 5551 strb r1, [r2, r5] + 80120dc: f103 0509 add.w r5, r3, #9 + } + + memcpy1( &macMsg->Buffer[bufItr], macMsg->FRMPayload, macMsg->FRMPayloadSize ); + 80120e0: 6820 ldr r0, [r4, #0] + 80120e2: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 + 80120e6: 6a61 ldr r1, [r4, #36] ; 0x24 + 80120e8: 4428 add r0, r5 + 80120ea: f002 fa56 bl 801459a <memcpy1> + bufItr = bufItr + macMsg->FRMPayloadSize; + 80120ee: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 + 80120f2: 442b add r3, r5 + + macMsg->Buffer[bufItr++] = macMsg->MIC & 0xFF; + 80120f4: 6ae0 ldr r0, [r4, #44] ; 0x2c + 80120f6: 6821 ldr r1, [r4, #0] + 80120f8: 1c5a adds r2, r3, #1 + 80120fa: b292 uxth r2, r2 + 80120fc: 54c8 strb r0, [r1, r3] + macMsg->Buffer[bufItr++] = ( macMsg->MIC >> 8 ) & 0xFF; + 80120fe: 6ae1 ldr r1, [r4, #44] ; 0x2c + 8012100: 0a08 lsrs r0, r1, #8 + 8012102: 6825 ldr r5, [r4, #0] + 8012104: 1c99 adds r1, r3, #2 + 8012106: b289 uxth r1, r1 + 8012108: 54a8 strb r0, [r5, r2] + macMsg->Buffer[bufItr++] = ( macMsg->MIC >> 16 ) & 0xFF; + 801210a: 8de5 ldrh r5, [r4, #46] ; 0x2e + 801210c: 6820 ldr r0, [r4, #0] + 801210e: 1cda adds r2, r3, #3 + 8012110: b292 uxth r2, r2 + 8012112: 5445 strb r5, [r0, r1] + macMsg->Buffer[bufItr++] = ( macMsg->MIC >> 24 ) & 0xFF; + 8012114: f894 002f ldrb.w r0, [r4, #47] ; 0x2f + 8012118: 6821 ldr r1, [r4, #0] + 801211a: 3304 adds r3, #4 + 801211c: 5488 strb r0, [r1, r2] + + macMsg->BufSize = bufItr; + 801211e: 7123 strb r3, [r4, #4] + + return LORAMAC_SERIALIZER_SUCCESS; + 8012120: 2000 movs r0, #0 +} + 8012122: bd38 pop {r3, r4, r5, pc} + return LORAMAC_SERIALIZER_ERROR_NPE; + 8012124: 2001 movs r0, #1 +} + 8012126: 4770 bx lr + return LORAMAC_SERIALIZER_ERROR_NPE; + 8012128: 2001 movs r0, #1 + 801212a: e7fa b.n 8012122 <LoRaMacSerializerData+0xd0> + return LORAMAC_SERIALIZER_ERROR_BUF_SIZE; + 801212c: 2002 movs r0, #2 + 801212e: e7f8 b.n 8012122 <LoRaMacSerializerData+0xd0> + +08012130 <NvmDataMgmtEvent>: +#endif /* CONTEXT_MANAGEMENT_ENABLED == 1 */ + +void NvmDataMgmtEvent( uint16_t notifyFlags ) +{ +#if ( CONTEXT_MANAGEMENT_ENABLED == 1 ) + NvmNotifyFlags |= notifyFlags; + 8012130: 4b02 ldr r3, [pc, #8] ; (801213c <NvmDataMgmtEvent+0xc>) + 8012132: 881a ldrh r2, [r3, #0] + 8012134: 4310 orrs r0, r2 + 8012136: 8018 strh r0, [r3, #0] +#endif /* CONTEXT_MANAGEMENT_ENABLED == 1 */ +} + 8012138: 4770 bx lr + 801213a: bf00 nop + 801213c: 20002624 .word 0x20002624 + +08012140 <NvmDataMgmtStoreBegin>: + +int32_t NvmDataMgmtStoreBegin( void ) +{ + 8012140: b508 push {r3, lr} +#if ( CONTEXT_MANAGEMENT_ENABLED == 1 ) + /* Input checks */ + if( NvmNotifyFlags == LORAMAC_NVM_NOTIFY_FLAG_NONE ) + 8012142: 4b06 ldr r3, [pc, #24] ; (801215c <NvmDataMgmtStoreBegin+0x1c>) + 8012144: 881b ldrh r3, [r3, #0] + 8012146: b11b cbz r3, 8012150 <NvmDataMgmtStoreBegin+0x10> + { + /* There was no update. */ + return NVM_DATA_NO_UPDATED_DATA; + } + if( LoRaMacStop( ) != LORAMAC_STATUS_OK ) + 8012148: f7fe f8a6 bl 8010298 <LoRaMacStop> + 801214c: b918 cbnz r0, 8012156 <NvmDataMgmtStoreBegin+0x16> + } + return NVM_DATA_OK; +#else + return NVM_DATA_DISABLED; +#endif /* CONTEXT_MANAGEMENT_ENABLED */ +} + 801214e: bd08 pop {r3, pc} + return NVM_DATA_NO_UPDATED_DATA; + 8012150: f06f 0001 mvn.w r0, #1 + 8012154: e7fb b.n 801214e <NvmDataMgmtStoreBegin+0xe> + return NVM_DATA_NOT_AVAILABLE; + 8012156: f06f 0002 mvn.w r0, #2 + 801215a: e7f8 b.n 801214e <NvmDataMgmtStoreBegin+0xe> + 801215c: 20002624 .word 0x20002624 + +08012160 <NvmDataMgmtStoreEnd>: + +int32_t NvmDataMgmtStoreEnd( void ) +{ + 8012160: b510 push {r4, lr} +#if ( CONTEXT_MANAGEMENT_ENABLED == 1 ) + /* Reset notification flags */ + NvmNotifyFlags = LORAMAC_NVM_NOTIFY_FLAG_NONE; + 8012162: 2400 movs r4, #0 + 8012164: 4b02 ldr r3, [pc, #8] ; (8012170 <NvmDataMgmtStoreEnd+0x10>) + 8012166: 801c strh r4, [r3, #0] + + /* Resume LoRaMac */ + LoRaMacStart( ); + 8012168: f7fe f88a bl 8010280 <LoRaMacStart> + return NVM_DATA_OK; +#else + return NVM_DATA_DISABLED; +#endif /* CONTEXT_MANAGEMENT_ENABLED */ +} + 801216c: 4620 mov r0, r4 + 801216e: bd10 pop {r4, pc} + 8012170: 20002624 .word 0x20002624 + +08012174 <RegionIsActive>: +#define RU864_RX_BEACON_SETUP( ) +#endif + +bool RegionIsActive( LoRaMacRegion_t region ) +{ + switch( region ) + 8012174: b908 cbnz r0, 801217a <RegionIsActive+0x6> + { + AS923_IS_ACTIVE( ); + 8012176: 2001 movs r0, #1 + 8012178: 4770 bx lr + IN865_IS_ACTIVE( ); + US915_IS_ACTIVE( ); + RU864_IS_ACTIVE( ); + default: + { + return false; + 801217a: 2000 movs r0, #0 + } + } +} + 801217c: 4770 bx lr + +0801217e <RegionGetPhyParam>: + +PhyParam_t RegionGetPhyParam( LoRaMacRegion_t region, GetPhyParams_t* getPhy ) +{ + 801217e: b500 push {lr} + 8012180: b083 sub sp, #12 + PhyParam_t phyParam = { 0 }; + 8012182: 2300 movs r3, #0 + 8012184: 9300 str r3, [sp, #0] + switch( region ) + 8012186: b128 cbz r0, 8012194 <RegionGetPhyParam+0x16> + IN865_GET_PHY_PARAM( ); + US915_GET_PHY_PARAM( ); + RU864_GET_PHY_PARAM( ); + default: + { + return phyParam; + 8012188: 9b00 ldr r3, [sp, #0] + 801218a: 9301 str r3, [sp, #4] + } + } +} + 801218c: 9801 ldr r0, [sp, #4] + 801218e: b003 add sp, #12 + 8012190: f85d fb04 ldr.w pc, [sp], #4 + AS923_GET_PHY_PARAM( ); + 8012194: 4608 mov r0, r1 + 8012196: f000 f8ed bl 8012374 <RegionAS923GetPhyParam> + 801219a: 9001 str r0, [sp, #4] + 801219c: e7f6 b.n 801218c <RegionGetPhyParam+0xe> + +0801219e <RegionSetBandTxDone>: + +void RegionSetBandTxDone( LoRaMacRegion_t region, SetBandTxDoneParams_t* txDone ) +{ + switch( region ) + 801219e: b100 cbz r0, 80121a2 <RegionSetBandTxDone+0x4> + 80121a0: 4770 bx lr +{ + 80121a2: b508 push {r3, lr} + { + AS923_SET_BAND_TX_DONE( ); + 80121a4: 4608 mov r0, r1 + 80121a6: f000 f9f1 bl 801258c <RegionAS923SetBandTxDone> + default: + { + return; + } + } +} + 80121aa: bd08 pop {r3, pc} + +080121ac <RegionInitDefaults>: + +void RegionInitDefaults( LoRaMacRegion_t region, InitDefaultsParams_t* params ) +{ + switch( region ) + 80121ac: b100 cbz r0, 80121b0 <RegionInitDefaults+0x4> + 80121ae: 4770 bx lr +{ + 80121b0: b508 push {r3, lr} + { + AS923_INIT_DEFAULTS( ); + 80121b2: 4608 mov r0, r1 + 80121b4: f000 fa08 bl 80125c8 <RegionAS923InitDefaults> + default: + { + break; + } + } +} + 80121b8: bd08 pop {r3, pc} + +080121ba <RegionVerify>: + +bool RegionVerify( LoRaMacRegion_t region, VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( region ) + 80121ba: b108 cbz r0, 80121c0 <RegionVerify+0x6> + IN865_VERIFY( ); + US915_VERIFY( ); + RU864_VERIFY( ); + default: + { + return false; + 80121bc: 2000 movs r0, #0 + } + } +} + 80121be: 4770 bx lr +{ + 80121c0: b508 push {r3, lr} + 80121c2: 460b mov r3, r1 + AS923_VERIFY( ); + 80121c4: 4611 mov r1, r2 + 80121c6: 4618 mov r0, r3 + 80121c8: f000 fa58 bl 801267c <RegionAS923Verify> +} + 80121cc: bd08 pop {r3, pc} + +080121ce <RegionApplyCFList>: + +void RegionApplyCFList( LoRaMacRegion_t region, ApplyCFListParams_t* applyCFList ) +{ + switch( region ) + 80121ce: b100 cbz r0, 80121d2 <RegionApplyCFList+0x4> + 80121d0: 4770 bx lr +{ + 80121d2: b508 push {r3, lr} + { + AS923_APPLY_CF_LIST( ); + 80121d4: 4608 mov r0, r1 + 80121d6: f000 fe19 bl 8012e0c <RegionAS923ApplyCFList> + default: + { + break; + } + } +} + 80121da: bd08 pop {r3, pc} + +080121dc <RegionChanMaskSet>: + +bool RegionChanMaskSet( LoRaMacRegion_t region, ChanMaskSetParams_t* chanMaskSet ) +{ + switch( region ) + 80121dc: b108 cbz r0, 80121e2 <RegionChanMaskSet+0x6> + IN865_CHAN_MASK_SET( ); + US915_CHAN_MASK_SET( ); + RU864_CHAN_MASK_SET( ); + default: + { + return false; + 80121de: 2000 movs r0, #0 + } + } +} + 80121e0: 4770 bx lr +{ + 80121e2: b508 push {r3, lr} + AS923_CHAN_MASK_SET( ); + 80121e4: 4608 mov r0, r1 + 80121e6: f000 fa9b bl 8012720 <RegionAS923ChanMaskSet> +} + 80121ea: bd08 pop {r3, pc} + +080121ec <RegionComputeRxWindowParameters>: + +void RegionComputeRxWindowParameters( LoRaMacRegion_t region, int8_t datarate, uint8_t minRxSymbols, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + switch( region ) + 80121ec: b100 cbz r0, 80121f0 <RegionComputeRxWindowParameters+0x4> + 80121ee: 4770 bx lr +{ + 80121f0: b508 push {r3, lr} + 80121f2: 468c mov ip, r1 + 80121f4: 4611 mov r1, r2 + 80121f6: 461a mov r2, r3 + { + AS923_COMPUTE_RX_WINDOW_PARAMETERS( ); + 80121f8: 9b02 ldr r3, [sp, #8] + 80121fa: 4660 mov r0, ip + 80121fc: f000 faae bl 801275c <RegionAS923ComputeRxWindowParameters> + default: + { + break; + } + } +} + 8012200: bd08 pop {r3, pc} + +08012202 <RegionRxConfig>: + +bool RegionRxConfig( LoRaMacRegion_t region, RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + switch( region ) + 8012202: b108 cbz r0, 8012208 <RegionRxConfig+0x6> + IN865_RX_CONFIG( ); + US915_RX_CONFIG( ); + RU864_RX_CONFIG( ); + default: + { + return false; + 8012204: 2000 movs r0, #0 + } + } +} + 8012206: 4770 bx lr +{ + 8012208: b508 push {r3, lr} + 801220a: 460b mov r3, r1 + AS923_RX_CONFIG( ); + 801220c: 4611 mov r1, r2 + 801220e: 4618 mov r0, r3 + 8012210: f000 fada bl 80127c8 <RegionAS923RxConfig> +} + 8012214: bd08 pop {r3, pc} + +08012216 <RegionTxConfig>: + +bool RegionTxConfig( LoRaMacRegion_t region, TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + switch( region ) + 8012216: b108 cbz r0, 801221c <RegionTxConfig+0x6> + IN865_TX_CONFIG( ); + US915_TX_CONFIG( ); + RU864_TX_CONFIG( ); + default: + { + return false; + 8012218: 2000 movs r0, #0 + } + } +} + 801221a: 4770 bx lr +{ + 801221c: b508 push {r3, lr} + 801221e: 468c mov ip, r1 + 8012220: 4611 mov r1, r2 + AS923_TX_CONFIG( ); + 8012222: 461a mov r2, r3 + 8012224: 4660 mov r0, ip + 8012226: f000 fb53 bl 80128d0 <RegionAS923TxConfig> +} + 801222a: bd08 pop {r3, pc} + +0801222c <RegionLinkAdrReq>: + +uint8_t RegionLinkAdrReq( LoRaMacRegion_t region, LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + switch( region ) + 801222c: b108 cbz r0, 8012232 <RegionLinkAdrReq+0x6> + IN865_LINK_ADR_REQ( ); + US915_LINK_ADR_REQ( ); + RU864_LINK_ADR_REQ( ); + default: + { + return 0; + 801222e: 2000 movs r0, #0 + } + } +} + 8012230: 4770 bx lr +{ + 8012232: b500 push {lr} + 8012234: b083 sub sp, #12 + 8012236: 468c mov ip, r1 + 8012238: 4611 mov r1, r2 + 801223a: 461a mov r2, r3 + AS923_LINK_ADR_REQ( ); + 801223c: 9b05 ldr r3, [sp, #20] + 801223e: 9300 str r3, [sp, #0] + 8012240: 9b04 ldr r3, [sp, #16] + 8012242: 4660 mov r0, ip + 8012244: f000 fbdc bl 8012a00 <RegionAS923LinkAdrReq> +} + 8012248: b003 add sp, #12 + 801224a: f85d fb04 ldr.w pc, [sp], #4 + +0801224e <RegionRxParamSetupReq>: + +uint8_t RegionRxParamSetupReq( LoRaMacRegion_t region, RxParamSetupReqParams_t* rxParamSetupReq ) +{ + switch( region ) + 801224e: b108 cbz r0, 8012254 <RegionRxParamSetupReq+0x6> + IN865_RX_PARAM_SETUP_REQ( ); + US915_RX_PARAM_SETUP_REQ( ); + RU864_RX_PARAM_SETUP_REQ( ); + default: + { + return 0; + 8012250: 2000 movs r0, #0 + } + } +} + 8012252: 4770 bx lr +{ + 8012254: b508 push {r3, lr} + AS923_RX_PARAM_SETUP_REQ( ); + 8012256: 4608 mov r0, r1 + 8012258: f000 fc98 bl 8012b8c <RegionAS923RxParamSetupReq> +} + 801225c: bd08 pop {r3, pc} + +0801225e <RegionNewChannelReq>: + +int8_t RegionNewChannelReq( LoRaMacRegion_t region, NewChannelReqParams_t* newChannelReq ) +{ + switch( region ) + 801225e: b108 cbz r0, 8012264 <RegionNewChannelReq+0x6> + IN865_NEW_CHANNEL_REQ( ); + US915_NEW_CHANNEL_REQ( ); + RU864_NEW_CHANNEL_REQ( ); + default: + { + return 0; + 8012260: 2000 movs r0, #0 + } + } +} + 8012262: 4770 bx lr +{ + 8012264: b508 push {r3, lr} + AS923_NEW_CHANNEL_REQ( ); + 8012266: 4608 mov r0, r1 + 8012268: f000 fe11 bl 8012e8e <RegionAS923NewChannelReq> +} + 801226c: bd08 pop {r3, pc} + +0801226e <RegionTxParamSetupReq>: + +int8_t RegionTxParamSetupReq( LoRaMacRegion_t region, TxParamSetupReqParams_t* txParamSetupReq ) +{ + switch( region ) + 801226e: b108 cbz r0, 8012274 <RegionTxParamSetupReq+0x6> + IN865_TX_PARAM_SETUP_REQ( ); + US915_TX_PARAM_SETUP_REQ( ); + RU864_TX_PARAM_SETUP_REQ( ); + default: + { + return 0; + 8012270: 2000 movs r0, #0 + } + } +} + 8012272: 4770 bx lr +{ + 8012274: b508 push {r3, lr} + AS923_TX_PARAM_SETUP_REQ( ); + 8012276: 4608 mov r0, r1 + 8012278: f000 fca5 bl 8012bc6 <RegionAS923TxParamSetupReq> +} + 801227c: bd08 pop {r3, pc} + +0801227e <RegionDlChannelReq>: + +int8_t RegionDlChannelReq( LoRaMacRegion_t region, DlChannelReqParams_t* dlChannelReq ) +{ + switch( region ) + 801227e: b108 cbz r0, 8012284 <RegionDlChannelReq+0x6> + IN865_DL_CHANNEL_REQ( ); + US915_DL_CHANNEL_REQ( ); + RU864_DL_CHANNEL_REQ( ); + default: + { + return 0; + 8012280: 2000 movs r0, #0 + } + } +} + 8012282: 4770 bx lr +{ + 8012284: b508 push {r3, lr} + AS923_DL_CHANNEL_REQ( ); + 8012286: 4608 mov r0, r1 + 8012288: f000 fca0 bl 8012bcc <RegionAS923DlChannelReq> +} + 801228c: bd08 pop {r3, pc} + +0801228e <RegionAlternateDr>: + +int8_t RegionAlternateDr( LoRaMacRegion_t region, int8_t currentDr, AlternateDrType_t type ) +{ + switch( region ) + 801228e: b108 cbz r0, 8012294 <RegionAlternateDr+0x6> + IN865_ALTERNATE_DR( ); + US915_ALTERNATE_DR( ); + RU864_ALTERNATE_DR( ); + default: + { + return 0; + 8012290: 2000 movs r0, #0 + } + } +} + 8012292: 4770 bx lr +{ + 8012294: b508 push {r3, lr} + 8012296: 460b mov r3, r1 + AS923_ALTERNATE_DR( ); + 8012298: 4611 mov r1, r2 + 801229a: 4618 mov r0, r3 + 801229c: f000 fcbc bl 8012c18 <RegionAS923AlternateDr> +} + 80122a0: bd08 pop {r3, pc} + +080122a2 <RegionNextChannel>: + +LoRaMacStatus_t RegionNextChannel( LoRaMacRegion_t region, NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) +{ + switch( region ) + 80122a2: b108 cbz r0, 80122a8 <RegionNextChannel+0x6> + IN865_NEXT_CHANNEL( ); + US915_NEXT_CHANNEL( ); + RU864_NEXT_CHANNEL( ); + default: + { + return LORAMAC_STATUS_REGION_NOT_SUPPORTED; + 80122a4: 2009 movs r0, #9 + } + } +} + 80122a6: 4770 bx lr +{ + 80122a8: b508 push {r3, lr} + 80122aa: 468c mov ip, r1 + 80122ac: 4611 mov r1, r2 + 80122ae: 461a mov r2, r3 + AS923_NEXT_CHANNEL( ); + 80122b0: 9b02 ldr r3, [sp, #8] + 80122b2: 4660 mov r0, ip + 80122b4: f000 fcb2 bl 8012c1c <RegionAS923NextChannel> +} + 80122b8: bd08 pop {r3, pc} + +080122ba <RegionSetContinuousWave>: +} + +#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) +void RegionSetContinuousWave( LoRaMacRegion_t region, ContinuousWaveParams_t* continuousWave ) +{ + switch( region ) + 80122ba: b100 cbz r0, 80122be <RegionSetContinuousWave+0x4> + 80122bc: 4770 bx lr +{ + 80122be: b508 push {r3, lr} + { + AS923_SET_CONTINUOUS_WAVE( ); + 80122c0: 4608 mov r0, r1 + 80122c2: f000 fe0f bl 8012ee4 <RegionAS923SetContinuousWave> + default: + { + break; + } + } +} + 80122c6: bd08 pop {r3, pc} + +080122c8 <RegionApplyDrOffset>: +#endif /* REGION_VERSION */ + +uint8_t RegionApplyDrOffset( LoRaMacRegion_t region, uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + 80122c8: 468c mov ip, r1 + 80122ca: 4611 mov r1, r2 + switch( region ) + 80122cc: b108 cbz r0, 80122d2 <RegionApplyDrOffset+0xa> + IN865_APPLY_DR_OFFSET( ); + US915_APPLY_DR_OFFSET( ); + RU864_APPLY_DR_OFFSET( ); + default: + { + return dr; + 80122ce: b2d0 uxtb r0, r2 + } + } +} + 80122d0: 4770 bx lr +{ + 80122d2: b508 push {r3, lr} + AS923_APPLY_DR_OFFSET( ); + 80122d4: 461a mov r2, r3 + 80122d6: 4660 mov r0, ip + 80122d8: f000 fe32 bl 8012f40 <RegionAS923ApplyDrOffset> +} + 80122dc: bd08 pop {r3, pc} + ... + +080122e0 <RegionGetVersion>: + Version_t version; + + version.Value = REGION_VERSION; + + return version; +} + 80122e0: 4800 ldr r0, [pc, #0] ; (80122e4 <RegionGetVersion+0x4>) + 80122e2: 4770 bx lr + 80122e4: 01010003 .word 0x01010003 + +080122e8 <VerifyRfFreq>: +static Band_t* RegionBands; +#endif /* REGION_VERSION */ + +// Static functions +static bool VerifyRfFreq( uint32_t freq ) +{ + 80122e8: b510 push {r4, lr} + 80122ea: 4604 mov r4, r0 + // Check radio driver support + if( Radio.CheckRfFrequency( freq ) == false ) + 80122ec: 4b05 ldr r3, [pc, #20] ; (8012304 <VerifyRfFreq+0x1c>) + 80122ee: 6a1b ldr r3, [r3, #32] + 80122f0: 4798 blx r3 + 80122f2: b120 cbz r0, 80122fe <VerifyRfFreq+0x16> + { + return false; + } + + if( ( freq < AS923_MIN_RF_FREQUENCY ) || ( freq > AS923_MAX_RF_FREQUENCY ) ) + 80122f4: 4b04 ldr r3, [pc, #16] ; (8012308 <VerifyRfFreq+0x20>) + 80122f6: 4423 add r3, r4 + 80122f8: 4a04 ldr r2, [pc, #16] ; (801230c <VerifyRfFreq+0x24>) + 80122fa: 4293 cmp r3, r2 + 80122fc: d800 bhi.n 8012300 <VerifyRfFreq+0x18> + { + return false; + } + return true; +} + 80122fe: bd10 pop {r4, pc} + return false; + 8012300: 2000 movs r0, #0 + 8012302: e7fc b.n 80122fe <VerifyRfFreq+0x16> + 8012304: 08018cb4 .word 0x08018cb4 + 8012308: c9763540 .word 0xc9763540 + 801230c: 00c65d40 .word 0x00c65d40 + +08012310 <GetTimeOnAir>: + +static TimerTime_t GetTimeOnAir( int8_t datarate, uint16_t pktLen ) +{ + 8012310: b570 push {r4, r5, r6, lr} + 8012312: b084 sub sp, #16 + 8012314: 4605 mov r5, r0 + 8012316: 460c mov r4, r1 + int8_t phyDr = DataratesAS923[datarate]; + 8012318: 4b13 ldr r3, [pc, #76] ; (8012368 <GetTimeOnAir+0x58>) + 801231a: 561e ldrsb r6, [r3, r0] + uint32_t bandwidth = RegionCommonGetBandwidth( datarate, BandwidthsAS923 ); + 801231c: 4913 ldr r1, [pc, #76] ; (801236c <GetTimeOnAir+0x5c>) + 801231e: f001 f9b9 bl 8013694 <RegionCommonGetBandwidth> + 8012322: 4601 mov r1, r0 + TimerTime_t timeOnAir = 0; + + if( datarate == DR_7 ) + 8012324: 2d07 cmp r5, #7 + 8012326: d00e beq.n 8012346 <GetTimeOnAir+0x36> + { // High Speed FSK channel + timeOnAir = Radio.TimeOnAir( MODEM_FSK, bandwidth, phyDr * 1000, 0, 5, false, pktLen, true ); + } + else + { + timeOnAir = Radio.TimeOnAir( MODEM_LORA, bandwidth, phyDr, 1, 8, false, pktLen, true ); + 8012328: 4b11 ldr r3, [pc, #68] ; (8012370 <GetTimeOnAir+0x60>) + 801232a: 6a5d ldr r5, [r3, #36] ; 0x24 + 801232c: 2001 movs r0, #1 + 801232e: 9003 str r0, [sp, #12] + 8012330: b2e4 uxtb r4, r4 + 8012332: 9402 str r4, [sp, #8] + 8012334: 2300 movs r3, #0 + 8012336: 9301 str r3, [sp, #4] + 8012338: 2308 movs r3, #8 + 801233a: 9300 str r3, [sp, #0] + 801233c: 4603 mov r3, r0 + 801233e: 4632 mov r2, r6 + 8012340: 47a8 blx r5 + } + return timeOnAir; +} + 8012342: b004 add sp, #16 + 8012344: bd70 pop {r4, r5, r6, pc} + timeOnAir = Radio.TimeOnAir( MODEM_FSK, bandwidth, phyDr * 1000, 0, 5, false, pktLen, true ); + 8012346: 4b0a ldr r3, [pc, #40] ; (8012370 <GetTimeOnAir+0x60>) + 8012348: 6a5d ldr r5, [r3, #36] ; 0x24 + 801234a: 2301 movs r3, #1 + 801234c: 9303 str r3, [sp, #12] + 801234e: b2e4 uxtb r4, r4 + 8012350: 9402 str r4, [sp, #8] + 8012352: 2000 movs r0, #0 + 8012354: 9001 str r0, [sp, #4] + 8012356: 2305 movs r3, #5 + 8012358: 9300 str r3, [sp, #0] + 801235a: 4603 mov r3, r0 + 801235c: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8012360: fb06 f202 mul.w r2, r6, r2 + 8012364: 47a8 blx r5 + 8012366: e7ec b.n 8012342 <GetTimeOnAir+0x32> + 8012368: 08018680 .word 0x08018680 + 801236c: 08018660 .word 0x08018660 + 8012370: 08018cb4 .word 0x08018cb4 + +08012374 <RegionAS923GetPhyParam>: +#endif /* REGION_AS923 */ + +PhyParam_t RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) +{ + 8012374: b500 push {lr} + 8012376: b087 sub sp, #28 + PhyParam_t phyParam = { 0 }; + 8012378: 2300 movs r3, #0 + 801237a: 9304 str r3, [sp, #16] + +#if defined( REGION_AS923 ) + switch( getPhy->Attribute ) + 801237c: 7803 ldrb r3, [r0, #0] + 801237e: 3b01 subs r3, #1 + 8012380: 2b38 cmp r3, #56 ; 0x38 + 8012382: d846 bhi.n 8012412 <RegionAS923GetPhyParam+0x9e> + 8012384: e8df f013 tbh [pc, r3, lsl #1] + 8012388: 003e0039 .word 0x003e0039 + 801238c: 00450045 .word 0x00450045 + 8012390: 00430045 .word 0x00430045 + 8012394: 00450045 .word 0x00450045 + 8012398: 00450045 .word 0x00450045 + 801239c: 00670064 .word 0x00670064 + 80123a0: 0078006a .word 0x0078006a + 80123a4: 00860045 .word 0x00860045 + 80123a8: 008e008a .word 0x008e008a + 80123ac: 00960092 .word 0x00960092 + 80123b0: 009e009a .word 0x009e009a + 80123b4: 00a70045 .word 0x00a70045 + 80123b8: 00ad00aa .word 0x00ad00aa + 80123bc: 00b900b3 .word 0x00b900b3 + 80123c0: 00c000bc .word 0x00c000bc + 80123c4: 00c600c3 .word 0x00c600c3 + 80123c8: 004a00ca .word 0x004a00ca + 80123cc: 00450045 .word 0x00450045 + 80123d0: 00450045 .word 0x00450045 + 80123d4: 00450045 .word 0x00450045 + 80123d8: 00450045 .word 0x00450045 + 80123dc: 00450045 .word 0x00450045 + 80123e0: 00450045 .word 0x00450045 + 80123e4: 00cd0045 .word 0x00cd0045 + 80123e8: 00d700d0 .word 0x00d700d0 + 80123ec: 00450045 .word 0x00450045 + 80123f0: 00dd00da .word 0x00dd00da + 80123f4: 00e00045 .word 0x00e00045 + 80123f8: 00e6 .short 0x00e6 + { + case PHY_MIN_RX_DR: + { + if( getPhy->DownlinkDwellTime == 0 ) + 80123fa: 78c3 ldrb r3, [r0, #3] + 80123fc: b14b cbz r3, 8012412 <RegionAS923GetPhyParam+0x9e> + { + phyParam.Value = AS923_RX_MIN_DATARATE; + } + else + { + phyParam.Value = AS923_DWELL_LIMIT_DATARATE; + 80123fe: 2302 movs r3, #2 + 8012400: 9304 str r3, [sp, #16] + 8012402: e006 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + } + break; + } + case PHY_MIN_TX_DR: + { + if( getPhy->UplinkDwellTime == 0 ) + 8012404: 7883 ldrb r3, [r0, #2] + 8012406: b123 cbz r3, 8012412 <RegionAS923GetPhyParam+0x9e> + { + phyParam.Value = AS923_TX_MIN_DATARATE; + } + else + { + phyParam.Value = AS923_DWELL_LIMIT_DATARATE; + 8012408: 2302 movs r3, #2 + 801240a: 9304 str r3, [sp, #16] + 801240c: e001 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + } + break; + } + case PHY_DEF_TX_DR: + { + phyParam.Value = AS923_DEFAULT_DATARATE; + 801240e: 2302 movs r3, #2 + 8012410: 9304 str r3, [sp, #16] + break; + } + } + +#endif /* REGION_AS923 */ + return phyParam; + 8012412: 9804 ldr r0, [sp, #16] + 8012414: 9005 str r0, [sp, #20] +} + 8012416: b007 add sp, #28 + 8012418: f85d fb04 ldr.w pc, [sp], #4 + .CurrentDr = getPhy->Datarate, + 801241c: f990 3001 ldrsb.w r3, [r0, #1] + RegionCommonGetNextLowerTxDrParams_t nextLowerTxDrParams = + 8012420: f88d 3004 strb.w r3, [sp, #4] + 8012424: 2307 movs r3, #7 + 8012426: f88d 3005 strb.w r3, [sp, #5] + .MinDr = ( int8_t )( ( getPhy->UplinkDwellTime == 0 ) ? AS923_TX_MIN_DATARATE : AS923_DWELL_LIMIT_DATARATE ), + 801242a: 7883 ldrb r3, [r0, #2] + 801242c: b103 cbz r3, 8012430 <RegionAS923GetPhyParam+0xbc> + 801242e: 2302 movs r3, #2 + RegionCommonGetNextLowerTxDrParams_t nextLowerTxDrParams = + 8012430: f88d 3006 strb.w r3, [sp, #6] + 8012434: 2310 movs r3, #16 + 8012436: f88d 3007 strb.w r3, [sp, #7] + .ChannelsMask = RegionNvmGroup2->ChannelsMask, + 801243a: 4b4a ldr r3, [pc, #296] ; (8012564 <RegionAS923GetPhyParam+0x1f0>) + 801243c: 681b ldr r3, [r3, #0] + 801243e: f503 6290 add.w r2, r3, #1152 ; 0x480 + RegionCommonGetNextLowerTxDrParams_t nextLowerTxDrParams = + 8012442: 9202 str r2, [sp, #8] + 8012444: 9303 str r3, [sp, #12] + phyParam.Value = RegionCommonGetNextLowerTxDr( &nextLowerTxDrParams ); + 8012446: a801 add r0, sp, #4 + 8012448: f001 f901 bl 801364e <RegionCommonGetNextLowerTxDr> + 801244c: 9004 str r0, [sp, #16] + break; + 801244e: e7e0 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = REGION_COMMON_DEFAULT_ADR_ACK_LIMIT; + 8012450: 2340 movs r3, #64 ; 0x40 + 8012452: 9304 str r3, [sp, #16] + break; + 8012454: e7dd b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = REGION_COMMON_DEFAULT_ADR_ACK_DELAY; + 8012456: 2320 movs r3, #32 + 8012458: 9304 str r3, [sp, #16] + break; + 801245a: e7da b.n 8012412 <RegionAS923GetPhyParam+0x9e> + if( getPhy->UplinkDwellTime == 0 ) + 801245c: 7883 ldrb r3, [r0, #2] + 801245e: b92b cbnz r3, 801246c <RegionAS923GetPhyParam+0xf8> + phyParam.Value = MaxPayloadOfDatarateDwell0AS923[getPhy->Datarate]; + 8012460: f990 3001 ldrsb.w r3, [r0, #1] + 8012464: 4a40 ldr r2, [pc, #256] ; (8012568 <RegionAS923GetPhyParam+0x1f4>) + 8012466: 5cd3 ldrb r3, [r2, r3] + 8012468: 9304 str r3, [sp, #16] + 801246a: e7d2 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = MaxPayloadOfDatarateDwell1AS923[getPhy->Datarate]; + 801246c: f990 3001 ldrsb.w r3, [r0, #1] + 8012470: 4a3e ldr r2, [pc, #248] ; (801256c <RegionAS923GetPhyParam+0x1f8>) + 8012472: 5cd3 ldrb r3, [r2, r3] + 8012474: 9304 str r3, [sp, #16] + 8012476: e7cc b.n 8012412 <RegionAS923GetPhyParam+0x9e> + if( getPhy->UplinkDwellTime == 0 ) + 8012478: 7883 ldrb r3, [r0, #2] + 801247a: b92b cbnz r3, 8012488 <RegionAS923GetPhyParam+0x114> + phyParam.Value = MaxPayloadOfDatarateRepeaterDwell0AS923[getPhy->Datarate]; + 801247c: f990 3001 ldrsb.w r3, [r0, #1] + 8012480: 4a3b ldr r2, [pc, #236] ; (8012570 <RegionAS923GetPhyParam+0x1fc>) + 8012482: 5cd3 ldrb r3, [r2, r3] + 8012484: 9304 str r3, [sp, #16] + 8012486: e7c4 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = MaxPayloadOfDatarateDwell1AS923[getPhy->Datarate]; + 8012488: f990 3001 ldrsb.w r3, [r0, #1] + 801248c: 4a37 ldr r2, [pc, #220] ; (801256c <RegionAS923GetPhyParam+0x1f8>) + 801248e: 5cd3 ldrb r3, [r2, r3] + 8012490: 9304 str r3, [sp, #16] + 8012492: e7be b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_MAX_RX_WINDOW; + 8012494: f640 33b8 movw r3, #3000 ; 0xbb8 + 8012498: 9304 str r3, [sp, #16] + break; + 801249a: e7ba b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = REGION_COMMON_DEFAULT_RECEIVE_DELAY1; + 801249c: f44f 737a mov.w r3, #1000 ; 0x3e8 + 80124a0: 9304 str r3, [sp, #16] + break; + 80124a2: e7b6 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = REGION_COMMON_DEFAULT_RECEIVE_DELAY2; + 80124a4: f44f 63fa mov.w r3, #2000 ; 0x7d0 + 80124a8: 9304 str r3, [sp, #16] + break; + 80124aa: e7b2 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = REGION_COMMON_DEFAULT_JOIN_ACCEPT_DELAY1; + 80124ac: f241 3388 movw r3, #5000 ; 0x1388 + 80124b0: 9304 str r3, [sp, #16] + break; + 80124b2: e7ae b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = REGION_COMMON_DEFAULT_JOIN_ACCEPT_DELAY2; + 80124b4: f241 7370 movw r3, #6000 ; 0x1770 + 80124b8: 9304 str r3, [sp, #16] + break; + 80124ba: e7aa b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = REGION_COMMON_DEFAULT_MAX_FCNT_GAP; + 80124bc: f44f 4380 mov.w r3, #16384 ; 0x4000 + 80124c0: 9304 str r3, [sp, #16] + break; + 80124c2: e7a6 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = ( REGION_COMMON_DEFAULT_ACK_TIMEOUT + randr( -REGION_COMMON_DEFAULT_ACK_TIMEOUT_RND, REGION_COMMON_DEFAULT_ACK_TIMEOUT_RND ) ); + 80124c4: f44f 717a mov.w r1, #1000 ; 0x3e8 + 80124c8: 482a ldr r0, [pc, #168] ; (8012574 <RegionAS923GetPhyParam+0x200>) + 80124ca: f002 f859 bl 8014580 <randr> + 80124ce: f500 60fa add.w r0, r0, #2000 ; 0x7d0 + 80124d2: 9004 str r0, [sp, #16] + break; + 80124d4: e79d b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_RX_WND_2_FREQ - REGION_AS923_FREQ_OFFSET; + 80124d6: 4b28 ldr r3, [pc, #160] ; (8012578 <RegionAS923GetPhyParam+0x204>) + 80124d8: 9304 str r3, [sp, #16] + break; + 80124da: e79a b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_RX_WND_2_DR; + 80124dc: 2302 movs r3, #2 + 80124de: 9304 str r3, [sp, #16] + break; + 80124e0: e797 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.ChannelsMask = RegionNvmGroup2->ChannelsMask; + 80124e2: 4b20 ldr r3, [pc, #128] ; (8012564 <RegionAS923GetPhyParam+0x1f0>) + 80124e4: 681b ldr r3, [r3, #0] + 80124e6: f503 6390 add.w r3, r3, #1152 ; 0x480 + 80124ea: 9304 str r3, [sp, #16] + break; + 80124ec: e791 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.ChannelsMask = RegionNvmGroup2->ChannelsDefaultMask; + 80124ee: 4b1d ldr r3, [pc, #116] ; (8012564 <RegionAS923GetPhyParam+0x1f0>) + 80124f0: 681b ldr r3, [r3, #0] + 80124f2: f203 438c addw r3, r3, #1164 ; 0x48c + 80124f6: 9304 str r3, [sp, #16] + break; + 80124f8: e78b b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_MAX_NB_CHANNELS; + 80124fa: 2310 movs r3, #16 + 80124fc: 9304 str r3, [sp, #16] + break; + 80124fe: e788 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Channels = RegionNvmGroup2->Channels; + 8012500: 4b18 ldr r3, [pc, #96] ; (8012564 <RegionAS923GetPhyParam+0x1f0>) + 8012502: 681b ldr r3, [r3, #0] + 8012504: 9304 str r3, [sp, #16] + break; + 8012506: e784 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_DEFAULT_UPLINK_DWELL_TIME; + 8012508: 2301 movs r3, #1 + 801250a: 9304 str r3, [sp, #16] + break; + 801250c: e781 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_DEFAULT_DOWNLINK_DWELL_TIME; + 801250e: 2301 movs r3, #1 + 8012510: 9304 str r3, [sp, #16] + break; + 8012512: e77e b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.fValue = AS923_DEFAULT_MAX_EIRP; + 8012514: f04f 4383 mov.w r3, #1098907648 ; 0x41800000 + 8012518: 9304 str r3, [sp, #16] + break; + 801251a: e77a b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.fValue = AS923_DEFAULT_ANTENNA_GAIN; + 801251c: 4b17 ldr r3, [pc, #92] ; (801257c <RegionAS923GetPhyParam+0x208>) + 801251e: 9304 str r3, [sp, #16] + break; + 8012520: e777 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_BEACON_CHANNEL_FREQ - REGION_AS923_FREQ_OFFSET; + 8012522: 4b17 ldr r3, [pc, #92] ; (8012580 <RegionAS923GetPhyParam+0x20c>) + 8012524: 9304 str r3, [sp, #16] + break; + 8012526: e774 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.BeaconFormat.BeaconSize = AS923_BEACON_SIZE; + 8012528: 2311 movs r3, #17 + 801252a: f88d 3010 strb.w r3, [sp, #16] + phyParam.BeaconFormat.Rfu1Size = AS923_RFU1_SIZE; + 801252e: 2302 movs r3, #2 + 8012530: f88d 3011 strb.w r3, [sp, #17] + break; + 8012534: e76d b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_BEACON_CHANNEL_DR; + 8012536: 2303 movs r3, #3 + 8012538: 9304 str r3, [sp, #16] + break; + 801253a: e76a b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_PING_SLOT_CHANNEL_FREQ; + 801253c: 4b10 ldr r3, [pc, #64] ; (8012580 <RegionAS923GetPhyParam+0x20c>) + 801253e: 9304 str r3, [sp, #16] + break; + 8012540: e767 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = AS923_PING_SLOT_CHANNEL_DR; + 8012542: 2303 movs r3, #3 + 8012544: 9304 str r3, [sp, #16] + break; + 8012546: e764 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = DataratesAS923[getPhy->Datarate]; + 8012548: f990 3001 ldrsb.w r3, [r0, #1] + 801254c: 4a0d ldr r2, [pc, #52] ; (8012584 <RegionAS923GetPhyParam+0x210>) + 801254e: 5cd3 ldrb r3, [r2, r3] + 8012550: 9304 str r3, [sp, #16] + break; + 8012552: e75e b.n 8012412 <RegionAS923GetPhyParam+0x9e> + phyParam.Value = RegionCommonGetBandwidth( getPhy->Datarate, BandwidthsAS923 ); + 8012554: 490c ldr r1, [pc, #48] ; (8012588 <RegionAS923GetPhyParam+0x214>) + 8012556: f990 0001 ldrsb.w r0, [r0, #1] + 801255a: f001 f89b bl 8013694 <RegionCommonGetBandwidth> + 801255e: 9004 str r0, [sp, #16] + break; + 8012560: e757 b.n 8012412 <RegionAS923GetPhyParam+0x9e> + 8012562: bf00 nop + 8012564: 2000262c .word 0x2000262c + 8012568: 08018690 .word 0x08018690 + 801256c: 08018698 .word 0x08018698 + 8012570: 080186a0 .word 0x080186a0 + 8012574: fffffc18 .word 0xfffffc18 + 8012578: 3706ea00 .word 0x3706ea00 + 801257c: 4009999a .word 0x4009999a + 8012580: 3709f740 .word 0x3709f740 + 8012584: 08018680 .word 0x08018680 + 8012588: 08018660 .word 0x08018660 + +0801258c <RegionAS923SetBandTxDone>: + +void RegionAS923SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + 801258c: b510 push {r4, lr} + 801258e: b082 sub sp, #8 +#if defined( REGION_AS923 ) +#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) + RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], + 8012590: 4b0b ldr r3, [pc, #44] ; (80125c0 <RegionAS923SetBandTxDone+0x34>) + 8012592: 681c ldr r4, [r3, #0] + 8012594: 4b0b ldr r3, [pc, #44] ; (80125c4 <RegionAS923SetBandTxDone+0x38>) + 8012596: 681a ldr r2, [r3, #0] + 8012598: 7803 ldrb r3, [r0, #0] + 801259a: eb03 0343 add.w r3, r3, r3, lsl #1 + 801259e: eb02 0383 add.w r3, r2, r3, lsl #2 + 80125a2: 7a5b ldrb r3, [r3, #9] + 80125a4: eb03 0c43 add.w ip, r3, r3, lsl #1 + 80125a8: 6903 ldr r3, [r0, #16] + 80125aa: 9300 str r3, [sp, #0] + 80125ac: 68c3 ldr r3, [r0, #12] + 80125ae: 7842 ldrb r2, [r0, #1] + 80125b0: 6881 ldr r1, [r0, #8] + 80125b2: eb04 00cc add.w r0, r4, ip, lsl #3 + 80125b6: f000 fe23 bl 8013200 <RegionCommonSetBandTxDone> +#elif (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010001 )) + RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); +#endif /* REGION_VERSION */ +#endif /* REGION_AS923 */ +} + 80125ba: b002 add sp, #8 + 80125bc: bd10 pop {r4, pc} + 80125be: bf00 nop + 80125c0: 20002628 .word 0x20002628 + 80125c4: 2000262c .word 0x2000262c + +080125c8 <RegionAS923InitDefaults>: + +void RegionAS923InitDefaults( InitDefaultsParams_t* params ) +{ + 80125c8: b510 push {r4, lr} + 80125ca: b086 sub sp, #24 +#if defined( REGION_AS923 ) + Band_t bands[AS923_MAX_NB_BANDS] = + 80125cc: 2364 movs r3, #100 ; 0x64 + 80125ce: f8ad 3000 strh.w r3, [sp] + 80125d2: 2300 movs r3, #0 + 80125d4: f88d 3002 strb.w r3, [sp, #2] + 80125d8: 9301 str r3, [sp, #4] + 80125da: 9302 str r3, [sp, #8] + 80125dc: 9303 str r3, [sp, #12] + 80125de: 9304 str r3, [sp, #16] + 80125e0: f88d 3014 strb.w r3, [sp, #20] + { + AS923_BAND0 + }; + + switch( params->Type ) + 80125e4: 7a03 ldrb r3, [r0, #8] + 80125e6: 2b01 cmp r3, #1 + 80125e8: d02b beq.n 8012642 <RegionAS923InitDefaults+0x7a> + 80125ea: 2b02 cmp r3, #2 + 80125ec: d036 beq.n 801265c <RegionAS923InitDefaults+0x94> + 80125ee: b10b cbz r3, 80125f4 <RegionAS923InitDefaults+0x2c> + { + break; + } + } +#endif /* REGION_AS923 */ +} + 80125f0: b006 add sp, #24 + 80125f2: bd10 pop {r4, pc} + if( ( params->NvmGroup1 == NULL ) || ( params->NvmGroup2 == NULL ) ) + 80125f4: 6803 ldr r3, [r0, #0] + 80125f6: 2b00 cmp r3, #0 + 80125f8: d0fa beq.n 80125f0 <RegionAS923InitDefaults+0x28> + 80125fa: 6842 ldr r2, [r0, #4] + 80125fc: 2a00 cmp r2, #0 + 80125fe: d0f7 beq.n 80125f0 <RegionAS923InitDefaults+0x28> + RegionNvmGroup1 = (RegionNvmDataGroup1_t*) params->NvmGroup1; + 8012600: 491b ldr r1, [pc, #108] ; (8012670 <RegionAS923InitDefaults+0xa8>) + 8012602: 600b str r3, [r1, #0] + RegionNvmGroup2 = (RegionNvmDataGroup2_t*) params->NvmGroup2; + 8012604: 4c1b ldr r4, [pc, #108] ; (8012674 <RegionAS923InitDefaults+0xac>) + 8012606: 6022 str r2, [r4, #0] + memcpy1( ( uint8_t* )RegionNvmGroup1->Bands, ( uint8_t* )bands, sizeof( Band_t ) * AS923_MAX_NB_BANDS ); + 8012608: 2218 movs r2, #24 + 801260a: 4669 mov r1, sp + 801260c: 4618 mov r0, r3 + 801260e: f001 ffc4 bl 801459a <memcpy1> + RegionNvmGroup2->Channels[0] = ( ChannelParams_t ) AS923_LC1; + 8012612: 6824 ldr r4, [r4, #0] + 8012614: 4b18 ldr r3, [pc, #96] ; (8012678 <RegionAS923InitDefaults+0xb0>) + 8012616: e893 0007 ldmia.w r3, {r0, r1, r2} + 801261a: e884 0007 stmia.w r4, {r0, r1, r2} + RegionNvmGroup2->Channels[1] = ( ChannelParams_t ) AS923_LC2; + 801261e: f104 0c0c add.w ip, r4, #12 + 8012622: 330c adds r3, #12 + 8012624: e893 0007 ldmia.w r3, {r0, r1, r2} + 8012628: e88c 0007 stmia.w ip, {r0, r1, r2} + RegionNvmGroup2->ChannelsDefaultMask[0] = LC( 1 ) + LC( 2 ); + 801262c: 2303 movs r3, #3 + 801262e: f8a4 348c strh.w r3, [r4, #1164] ; 0x48c + RegionCommonChanMaskCopy( RegionNvmGroup2->ChannelsMask, RegionNvmGroup2->ChannelsDefaultMask, CHANNELS_MASK_SIZE ); + 8012632: 2201 movs r2, #1 + 8012634: f204 418c addw r1, r4, #1164 ; 0x48c + 8012638: f504 6090 add.w r0, r4, #1152 ; 0x480 + 801263c: f000 fdd1 bl 80131e2 <RegionCommonChanMaskCopy> + break; + 8012640: e7d6 b.n 80125f0 <RegionAS923InitDefaults+0x28> + RegionNvmGroup2->Channels[0].Rx1Frequency = 0; + 8012642: 4b0c ldr r3, [pc, #48] ; (8012674 <RegionAS923InitDefaults+0xac>) + 8012644: 6818 ldr r0, [r3, #0] + 8012646: 2300 movs r3, #0 + 8012648: 6043 str r3, [r0, #4] + RegionNvmGroup2->Channels[1].Rx1Frequency = 0; + 801264a: 6103 str r3, [r0, #16] + RegionCommonChanMaskCopy( RegionNvmGroup2->ChannelsMask, RegionNvmGroup2->ChannelsDefaultMask, CHANNELS_MASK_SIZE ); + 801264c: 2201 movs r2, #1 + 801264e: f200 418c addw r1, r0, #1164 ; 0x48c + 8012652: f500 6090 add.w r0, r0, #1152 ; 0x480 + 8012656: f000 fdc4 bl 80131e2 <RegionCommonChanMaskCopy> + break; + 801265a: e7c9 b.n 80125f0 <RegionAS923InitDefaults+0x28> + RegionNvmGroup2->ChannelsMask[0] |= RegionNvmGroup2->ChannelsDefaultMask[0]; + 801265c: 4b05 ldr r3, [pc, #20] ; (8012674 <RegionAS923InitDefaults+0xac>) + 801265e: 681b ldr r3, [r3, #0] + 8012660: f8b3 248c ldrh.w r2, [r3, #1164] ; 0x48c + 8012664: f8b3 1480 ldrh.w r1, [r3, #1152] ; 0x480 + 8012668: 430a orrs r2, r1 + 801266a: f8a3 2480 strh.w r2, [r3, #1152] ; 0x480 + break; + 801266e: e7bf b.n 80125f0 <RegionAS923InitDefaults+0x28> + 8012670: 20002628 .word 0x20002628 + 8012674: 2000262c .word 0x2000262c + 8012678: 0801788c .word 0x0801788c + +0801267c <RegionAS923Verify>: + +bool RegionAS923Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + 801267c: b508 push {r3, lr} +#if defined( REGION_AS923 ) + switch( phyAttribute ) + 801267e: 290a cmp r1, #10 + 8012680: d84b bhi.n 801271a <RegionAS923Verify+0x9e> + 8012682: e8df f001 tbb [pc, r1] + 8012686: 4a06 .short 0x4a06 + 8012688: 0a4a4a4a .word 0x0a4a4a4a + 801268c: 404a2a20 .word 0x404a2a20 + 8012690: 40 .byte 0x40 + 8012691: 00 .byte 0x00 + { + case PHY_FREQUENCY: + { + return VerifyRfFreq( verify->Frequency ); + 8012692: 6800 ldr r0, [r0, #0] + 8012694: f7ff fe28 bl 80122e8 <VerifyRfFreq> + 8012698: e040 b.n 801271c <RegionAS923Verify+0xa0> + } + case PHY_TX_DR: + { + if( verify->DatarateParams.UplinkDwellTime == 0 ) + 801269a: 7883 ldrb r3, [r0, #2] + 801269c: b94b cbnz r3, 80126b2 <RegionAS923Verify+0x36> + { + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ); + 801269e: 2207 movs r2, #7 + 80126a0: 2100 movs r1, #0 + 80126a2: f990 0000 ldrsb.w r0, [r0] + 80126a6: f000 fd28 bl 80130fa <RegionCommonValueInRange> + 80126aa: 3800 subs r0, #0 + 80126ac: bf18 it ne + 80126ae: 2001 movne r0, #1 + 80126b0: e034 b.n 801271c <RegionAS923Verify+0xa0> + } + else + { + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AS923_DWELL_LIMIT_DATARATE, AS923_TX_MAX_DATARATE ); + 80126b2: 2207 movs r2, #7 + 80126b4: 2102 movs r1, #2 + 80126b6: f990 0000 ldrsb.w r0, [r0] + 80126ba: f000 fd1e bl 80130fa <RegionCommonValueInRange> + 80126be: 3800 subs r0, #0 + 80126c0: bf18 it ne + 80126c2: 2001 movne r0, #1 + 80126c4: e02a b.n 801271c <RegionAS923Verify+0xa0> + } + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); + 80126c6: 2205 movs r2, #5 + 80126c8: 2100 movs r1, #0 + 80126ca: f990 0000 ldrsb.w r0, [r0] + 80126ce: f000 fd14 bl 80130fa <RegionCommonValueInRange> + 80126d2: 3800 subs r0, #0 + 80126d4: bf18 it ne + 80126d6: 2001 movne r0, #1 + 80126d8: e020 b.n 801271c <RegionAS923Verify+0xa0> + } + case PHY_RX_DR: + { + if( verify->DatarateParams.DownlinkDwellTime == 0 ) + 80126da: 7843 ldrb r3, [r0, #1] + 80126dc: b94b cbnz r3, 80126f2 <RegionAS923Verify+0x76> + { + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AS923_RX_MIN_DATARATE, AS923_RX_MAX_DATARATE ); + 80126de: 2207 movs r2, #7 + 80126e0: 2100 movs r1, #0 + 80126e2: f990 0000 ldrsb.w r0, [r0] + 80126e6: f000 fd08 bl 80130fa <RegionCommonValueInRange> + 80126ea: 3800 subs r0, #0 + 80126ec: bf18 it ne + 80126ee: 2001 movne r0, #1 + 80126f0: e014 b.n 801271c <RegionAS923Verify+0xa0> + } + else + { + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AS923_DWELL_LIMIT_DATARATE, AS923_RX_MAX_DATARATE ); + 80126f2: 2207 movs r2, #7 + 80126f4: 2102 movs r1, #2 + 80126f6: f990 0000 ldrsb.w r0, [r0] + 80126fa: f000 fcfe bl 80130fa <RegionCommonValueInRange> + 80126fe: 3800 subs r0, #0 + 8012700: bf18 it ne + 8012702: 2001 movne r0, #1 + 8012704: e00a b.n 801271c <RegionAS923Verify+0xa0> + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, AS923_MAX_TX_POWER, AS923_MIN_TX_POWER ); + 8012706: 2207 movs r2, #7 + 8012708: 2100 movs r1, #0 + 801270a: f990 0000 ldrsb.w r0, [r0] + 801270e: f000 fcf4 bl 80130fa <RegionCommonValueInRange> + 8012712: 3800 subs r0, #0 + 8012714: bf18 it ne + 8012716: 2001 movne r0, #1 + 8012718: e000 b.n 801271c <RegionAS923Verify+0xa0> + switch( phyAttribute ) + 801271a: 2000 movs r0, #0 + return false; + } +#else + return false; +#endif /* REGION_AS923 */ +} + 801271c: bd08 pop {r3, pc} + ... + +08012720 <RegionAS923ChanMaskSet>: + } +#endif /* REGION_AS923 */ +} + +bool RegionAS923ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + 8012720: b508 push {r3, lr} +#if defined( REGION_AS923 ) + switch( chanMaskSet->ChannelsMaskType ) + 8012722: 7903 ldrb r3, [r0, #4] + 8012724: b11b cbz r3, 801272e <RegionAS923ChanMaskSet+0xe> + 8012726: 2b01 cmp r3, #1 + 8012728: d00b beq.n 8012742 <RegionAS923ChanMaskSet+0x22> + 801272a: 2000 movs r0, #0 + } + return true; +#else + return false; +#endif /* REGION_AS923 */ +} + 801272c: bd08 pop {r3, pc} + RegionCommonChanMaskCopy( RegionNvmGroup2->ChannelsMask, chanMaskSet->ChannelsMaskIn, 1 ); + 801272e: 4b0a ldr r3, [pc, #40] ; (8012758 <RegionAS923ChanMaskSet+0x38>) + 8012730: 681b ldr r3, [r3, #0] + 8012732: 2201 movs r2, #1 + 8012734: 6801 ldr r1, [r0, #0] + 8012736: f503 6090 add.w r0, r3, #1152 ; 0x480 + 801273a: f000 fd52 bl 80131e2 <RegionCommonChanMaskCopy> + return true; + 801273e: 2001 movs r0, #1 + break; + 8012740: e7f4 b.n 801272c <RegionAS923ChanMaskSet+0xc> + RegionCommonChanMaskCopy( RegionNvmGroup2->ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 1 ); + 8012742: 4b05 ldr r3, [pc, #20] ; (8012758 <RegionAS923ChanMaskSet+0x38>) + 8012744: 681b ldr r3, [r3, #0] + 8012746: 2201 movs r2, #1 + 8012748: 6801 ldr r1, [r0, #0] + 801274a: f203 408c addw r0, r3, #1164 ; 0x48c + 801274e: f000 fd48 bl 80131e2 <RegionCommonChanMaskCopy> + return true; + 8012752: 2001 movs r0, #1 + break; + 8012754: e7ea b.n 801272c <RegionAS923ChanMaskSet+0xc> + 8012756: bf00 nop + 8012758: 2000262c .word 0x2000262c + +0801275c <RegionAS923ComputeRxWindowParameters>: + +void RegionAS923ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + 801275c: b5f0 push {r4, r5, r6, r7, lr} + 801275e: b083 sub sp, #12 + 8012760: 460e mov r6, r1 + 8012762: 4617 mov r7, r2 + 8012764: 461c mov r4, r3 +#if defined( REGION_AS923 ) + uint32_t tSymbolInUs = 0; + + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, AS923_RX_MAX_DATARATE ); + 8012766: 2807 cmp r0, #7 + 8012768: bfa8 it ge + 801276a: 2007 movge r0, #7 + 801276c: 7058 strb r0, [r3, #1] + rxConfigParams->Bandwidth = RegionCommonGetBandwidth( rxConfigParams->Datarate, BandwidthsAS923 ); + 801276e: 4913 ldr r1, [pc, #76] ; (80127bc <RegionAS923ComputeRxWindowParameters+0x60>) + 8012770: f000 ff90 bl 8013694 <RegionCommonGetBandwidth> + 8012774: 70a0 strb r0, [r4, #2] + + if( rxConfigParams->Datarate == DR_7 ) + 8012776: f994 3001 ldrsb.w r3, [r4, #1] + 801277a: 2b07 cmp r3, #7 + 801277c: d017 beq.n 80127ae <RegionAS923ComputeRxWindowParameters+0x52> + { // FSK + tSymbolInUs = RegionCommonComputeSymbolTimeFsk( DataratesAS923[rxConfigParams->Datarate] ); + } + else + { // LoRa + tSymbolInUs = RegionCommonComputeSymbolTimeLoRa( DataratesAS923[rxConfigParams->Datarate], BandwidthsAS923[rxConfigParams->Datarate] ); + 801277e: 4a0f ldr r2, [pc, #60] ; (80127bc <RegionAS923ComputeRxWindowParameters+0x60>) + 8012780: f852 1023 ldr.w r1, [r2, r3, lsl #2] + 8012784: 4a0e ldr r2, [pc, #56] ; (80127c0 <RegionAS923ComputeRxWindowParameters+0x64>) + 8012786: 5cd0 ldrb r0, [r2, r3] + 8012788: f000 fe52 bl 8013430 <RegionCommonComputeSymbolTimeLoRa> + 801278c: 4605 mov r5, r0 + } + + RegionCommonComputeRxWindowParameters( tSymbolInUs, minRxSymbols, rxError, Radio.GetWakeupTime( ), &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); + 801278e: 4b0d ldr r3, [pc, #52] ; (80127c4 <RegionAS923ComputeRxWindowParameters+0x68>) + 8012790: 6ddb ldr r3, [r3, #92] ; 0x5c + 8012792: 4798 blx r3 + 8012794: 4603 mov r3, r0 + 8012796: f104 020c add.w r2, r4, #12 + 801279a: 9201 str r2, [sp, #4] + 801279c: 3408 adds r4, #8 + 801279e: 9400 str r4, [sp, #0] + 80127a0: 463a mov r2, r7 + 80127a2: 4631 mov r1, r6 + 80127a4: 4628 mov r0, r5 + 80127a6: f000 fe51 bl 801344c <RegionCommonComputeRxWindowParameters> +#endif /* REGION_AS923 */ +} + 80127aa: b003 add sp, #12 + 80127ac: bdf0 pop {r4, r5, r6, r7, pc} + tSymbolInUs = RegionCommonComputeSymbolTimeFsk( DataratesAS923[rxConfigParams->Datarate] ); + 80127ae: 4a04 ldr r2, [pc, #16] ; (80127c0 <RegionAS923ComputeRxWindowParameters+0x64>) + 80127b0: 5cd0 ldrb r0, [r2, r3] + 80127b2: f000 fe45 bl 8013440 <RegionCommonComputeSymbolTimeFsk> + 80127b6: 4605 mov r5, r0 + 80127b8: e7e9 b.n 801278e <RegionAS923ComputeRxWindowParameters+0x32> + 80127ba: bf00 nop + 80127bc: 08018660 .word 0x08018660 + 80127c0: 08018680 .word 0x08018680 + 80127c4: 08018cb4 .word 0x08018cb4 + +080127c8 <RegionAS923RxConfig>: + +bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + 80127c8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80127cc: b08a sub sp, #40 ; 0x28 + 80127ce: 4604 mov r4, r0 + 80127d0: 460f mov r7, r1 +#if defined( REGION_AS923 ) + RadioModems_t modem; + int8_t dr = rxConfig->Datarate; + 80127d2: f990 5001 ldrsb.w r5, [r0, #1] + uint8_t maxPayload = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + 80127d6: f8d0 8004 ldr.w r8, [r0, #4] + + if( Radio.GetStatus( ) != RF_IDLE ) + 80127da: 4b37 ldr r3, [pc, #220] ; (80128b8 <RegionAS923RxConfig+0xf0>) + 80127dc: 685b ldr r3, [r3, #4] + 80127de: 4798 blx r3 + 80127e0: 2800 cmp r0, #0 + 80127e2: d167 bne.n 80128b4 <RegionAS923RxConfig+0xec> + 80127e4: 4606 mov r6, r0 + { + return false; + } + + if( rxConfig->RxSlot == RX_SLOT_WIN_1 ) + 80127e6: 7ce3 ldrb r3, [r4, #19] + 80127e8: b983 cbnz r3, 801280c <RegionAS923RxConfig+0x44> + { + // Apply window 1 frequency + frequency = RegionNvmGroup2->Channels[rxConfig->Channel].Frequency; + 80127ea: 4b34 ldr r3, [pc, #208] ; (80128bc <RegionAS923RxConfig+0xf4>) + 80127ec: 681a ldr r2, [r3, #0] + 80127ee: 7823 ldrb r3, [r4, #0] + 80127f0: eb03 0143 add.w r1, r3, r3, lsl #1 + 80127f4: f852 1021 ldr.w r1, [r2, r1, lsl #2] + // Apply the alternative RX 1 window frequency, if it is available + if( RegionNvmGroup2->Channels[rxConfig->Channel].Rx1Frequency != 0 ) + 80127f8: eb03 0343 add.w r3, r3, r3, lsl #1 + 80127fc: eb02 0283 add.w r2, r2, r3, lsl #2 + 8012800: f8d2 8004 ldr.w r8, [r2, #4] + 8012804: f1b8 0f00 cmp.w r8, #0 + 8012808: d100 bne.n 801280c <RegionAS923RxConfig+0x44> + frequency = RegionNvmGroup2->Channels[rxConfig->Channel].Frequency; + 801280a: 4688 mov r8, r1 + frequency = RegionNvmGroup2->Channels[rxConfig->Channel].Rx1Frequency; + } + } + + // Read the physical datarate from the datarates table + phyDr = DataratesAS923[dr]; + 801280c: 4b2c ldr r3, [pc, #176] ; (80128c0 <RegionAS923RxConfig+0xf8>) + 801280e: f913 9005 ldrsb.w r9, [r3, r5] + + Radio.SetChannel( frequency ); + 8012812: 4b29 ldr r3, [pc, #164] ; (80128b8 <RegionAS923RxConfig+0xf0>) + 8012814: 68db ldr r3, [r3, #12] + 8012816: 4640 mov r0, r8 + 8012818: 4798 blx r3 + + // Radio configuration + if( dr == DR_7 ) + 801281a: 2d07 cmp r5, #7 + 801281c: d02b beq.n 8012876 <RegionAS923RxConfig+0xae> + Radio.SetRxConfig( modem, 50000, phyDr * 1000, 0, 83333, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + } + else + { + modem = MODEM_LORA; + Radio.SetRxConfig( modem, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + 801281e: 4b26 ldr r3, [pc, #152] ; (80128b8 <RegionAS923RxConfig+0xf0>) + 8012820: f8d3 a018 ldr.w sl, [r3, #24] + 8012824: 7ca3 ldrb r3, [r4, #18] + 8012826: 9309 str r3, [sp, #36] ; 0x24 + 8012828: 2601 movs r6, #1 + 801282a: 9608 str r6, [sp, #32] + 801282c: 2300 movs r3, #0 + 801282e: 9307 str r3, [sp, #28] + 8012830: 9306 str r3, [sp, #24] + 8012832: 9305 str r3, [sp, #20] + 8012834: 9304 str r3, [sp, #16] + 8012836: 9303 str r3, [sp, #12] + 8012838: 8922 ldrh r2, [r4, #8] + 801283a: 9202 str r2, [sp, #8] + 801283c: 2208 movs r2, #8 + 801283e: 9201 str r2, [sp, #4] + 8012840: 9300 str r3, [sp, #0] + 8012842: 4633 mov r3, r6 + 8012844: 464a mov r2, r9 + 8012846: 78a1 ldrb r1, [r4, #2] + 8012848: 4630 mov r0, r6 + 801284a: 47d0 blx sl + } + + if( rxConfig->RepeaterSupport == true ) + 801284c: 7c63 ldrb r3, [r4, #17] + 801284e: 2b00 cmp r3, #0 + 8012850: d02d beq.n 80128ae <RegionAS923RxConfig+0xe6> + { + maxPayload = MaxPayloadOfDatarateRepeaterDwell0AS923[dr]; + 8012852: 4b1c ldr r3, [pc, #112] ; (80128c4 <RegionAS923RxConfig+0xfc>) + 8012854: 5d59 ldrb r1, [r3, r5] + else + { + maxPayload = MaxPayloadOfDatarateDwell0AS923[dr]; + } + + Radio.SetMaxPayloadLength( modem, maxPayload + LORAMAC_FRAME_PAYLOAD_OVERHEAD_SIZE ); + 8012856: 4b18 ldr r3, [pc, #96] ; (80128b8 <RegionAS923RxConfig+0xf0>) + 8012858: 6d5b ldr r3, [r3, #84] ; 0x54 + 801285a: 310d adds r1, #13 + 801285c: b2c9 uxtb r1, r1 + 801285e: 4630 mov r0, r6 + 8012860: 4798 blx r3 + + RegionCommonRxConfigPrint(rxConfig->RxSlot, frequency, dr); + 8012862: 462a mov r2, r5 + 8012864: 4641 mov r1, r8 + 8012866: 7ce0 ldrb r0, [r4, #19] + 8012868: f000 ff26 bl 80136b8 <RegionCommonRxConfigPrint> + + *datarate = (uint8_t) dr; + 801286c: 703d strb r5, [r7, #0] + return true; + 801286e: 2001 movs r0, #1 +#else + return false; +#endif /* REGION_AS923 */ +} + 8012870: b00a add sp, #40 ; 0x28 + 8012872: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + Radio.SetRxConfig( modem, 50000, phyDr * 1000, 0, 83333, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + 8012876: 4b10 ldr r3, [pc, #64] ; (80128b8 <RegionAS923RxConfig+0xf0>) + 8012878: f8d3 a018 ldr.w sl, [r3, #24] + 801287c: 7ca3 ldrb r3, [r4, #18] + 801287e: 9309 str r3, [sp, #36] ; 0x24 + 8012880: 2000 movs r0, #0 + 8012882: 9008 str r0, [sp, #32] + 8012884: 9007 str r0, [sp, #28] + 8012886: 9006 str r0, [sp, #24] + 8012888: 2301 movs r3, #1 + 801288a: 9305 str r3, [sp, #20] + 801288c: 9004 str r0, [sp, #16] + 801288e: 9003 str r0, [sp, #12] + 8012890: 8923 ldrh r3, [r4, #8] + 8012892: 9302 str r3, [sp, #8] + 8012894: 2305 movs r3, #5 + 8012896: 9301 str r3, [sp, #4] + 8012898: 4b0b ldr r3, [pc, #44] ; (80128c8 <RegionAS923RxConfig+0x100>) + 801289a: 9300 str r3, [sp, #0] + 801289c: 4603 mov r3, r0 + 801289e: f44f 727a mov.w r2, #1000 ; 0x3e8 + 80128a2: fb02 f209 mul.w r2, r2, r9 + 80128a6: f24c 3150 movw r1, #50000 ; 0xc350 + 80128aa: 47d0 blx sl + 80128ac: e7ce b.n 801284c <RegionAS923RxConfig+0x84> + maxPayload = MaxPayloadOfDatarateDwell0AS923[dr]; + 80128ae: 4b07 ldr r3, [pc, #28] ; (80128cc <RegionAS923RxConfig+0x104>) + 80128b0: 5d59 ldrb r1, [r3, r5] + 80128b2: e7d0 b.n 8012856 <RegionAS923RxConfig+0x8e> + return false; + 80128b4: 2000 movs r0, #0 + 80128b6: e7db b.n 8012870 <RegionAS923RxConfig+0xa8> + 80128b8: 08018cb4 .word 0x08018cb4 + 80128bc: 2000262c .word 0x2000262c + 80128c0: 08018680 .word 0x08018680 + 80128c4: 080186a0 .word 0x080186a0 + 80128c8: 00014585 .word 0x00014585 + 80128cc: 08018690 .word 0x08018690 + +080128d0 <RegionAS923TxConfig>: + +bool RegionAS923TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + 80128d0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80128d4: b08d sub sp, #52 ; 0x34 + 80128d6: 4604 mov r4, r0 + 80128d8: 460f mov r7, r1 + 80128da: 4690 mov r8, r2 +#if defined( REGION_AS923 ) + RadioModems_t modem; + int8_t phyDr = DataratesAS923[txConfig->Datarate]; + 80128dc: f990 3001 ldrsb.w r3, [r0, #1] + 80128e0: 4a42 ldr r2, [pc, #264] ; (80129ec <RegionAS923TxConfig+0x11c>) + 80128e2: f912 a003 ldrsb.w sl, [r2, r3] +#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) + int8_t txPowerLimited = RegionCommonLimitTxPower( txConfig->TxPower, RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txConfig->Channel].Band].TxMaxPower ); + 80128e6: 4b42 ldr r3, [pc, #264] ; (80129f0 <RegionAS923TxConfig+0x120>) + 80128e8: 681a ldr r2, [r3, #0] + 80128ea: 4d42 ldr r5, [pc, #264] ; (80129f4 <RegionAS923TxConfig+0x124>) + 80128ec: 6829 ldr r1, [r5, #0] + 80128ee: 7803 ldrb r3, [r0, #0] + 80128f0: eb03 0343 add.w r3, r3, r3, lsl #1 + 80128f4: eb01 0183 add.w r1, r1, r3, lsl #2 + 80128f8: 7a4b ldrb r3, [r1, #9] + 80128fa: eb03 0343 add.w r3, r3, r3, lsl #1 + 80128fe: eb02 03c3 add.w r3, r2, r3, lsl #3 + 8012902: f993 1002 ldrsb.w r1, [r3, #2] + 8012906: f990 0002 ldrsb.w r0, [r0, #2] + 801290a: f000 febf bl 801368c <RegionCommonLimitTxPower> + 801290e: 4606 mov r6, r0 +#elif (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010001 )) + int8_t txPowerLimited = RegionCommonLimitTxPower( txConfig->TxPower, RegionBands[RegionNvmGroup2->Channels[txConfig->Channel].Band].TxMaxPower ); +#endif /* REGION_VERSION */ + uint32_t bandwidth = RegionCommonGetBandwidth( txConfig->Datarate, BandwidthsAS923 ); + 8012910: 4939 ldr r1, [pc, #228] ; (80129f8 <RegionAS923TxConfig+0x128>) + 8012912: f994 0001 ldrsb.w r0, [r4, #1] + 8012916: f000 febd bl 8013694 <RegionCommonGetBandwidth> + 801291a: 4681 mov r9, r0 + int8_t phyTxPower = 0; + + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGain ); + 801291c: 68a2 ldr r2, [r4, #8] + 801291e: 6861 ldr r1, [r4, #4] + 8012920: 4630 mov r0, r6 + 8012922: f000 fdcf bl 80134c4 <RegionCommonComputeTxPower> + 8012926: 900b str r0, [sp, #44] ; 0x2c + + // Setup the radio frequency + Radio.SetChannel( RegionNvmGroup2->Channels[txConfig->Channel].Frequency ); + 8012928: 4b34 ldr r3, [pc, #208] ; (80129fc <RegionAS923TxConfig+0x12c>) + 801292a: 68da ldr r2, [r3, #12] + 801292c: 6829 ldr r1, [r5, #0] + 801292e: 7823 ldrb r3, [r4, #0] + 8012930: eb03 0343 add.w r3, r3, r3, lsl #1 + 8012934: f851 0023 ldr.w r0, [r1, r3, lsl #2] + 8012938: 4790 blx r2 + + if( txConfig->Datarate == DR_7 ) + 801293a: f994 3001 ldrsb.w r3, [r4, #1] + 801293e: 2b07 cmp r3, #7 + 8012940: d031 beq.n 80129a6 <RegionAS923TxConfig+0xd6> + Radio.SetTxConfig( modem, phyTxPower, 25000, bandwidth, phyDr * 1000, 0, 5, false, true, 0, 0, false, 4000 ); + } + else + { + modem = MODEM_LORA; + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 4000 ); + 8012942: 4b2e ldr r3, [pc, #184] ; (80129fc <RegionAS923TxConfig+0x12c>) + 8012944: f8d3 b01c ldr.w fp, [r3, #28] + 8012948: f44f 637a mov.w r3, #4000 ; 0xfa0 + 801294c: 9308 str r3, [sp, #32] + 801294e: 2200 movs r2, #0 + 8012950: 9207 str r2, [sp, #28] + 8012952: 9206 str r2, [sp, #24] + 8012954: 9205 str r2, [sp, #20] + 8012956: 2501 movs r5, #1 + 8012958: 9504 str r5, [sp, #16] + 801295a: 9203 str r2, [sp, #12] + 801295c: 2308 movs r3, #8 + 801295e: 9302 str r3, [sp, #8] + 8012960: 9501 str r5, [sp, #4] + 8012962: f8cd a000 str.w sl, [sp] + 8012966: 464b mov r3, r9 + 8012968: 990b ldr r1, [sp, #44] ; 0x2c + 801296a: 4628 mov r0, r5 + 801296c: 47d8 blx fp + } + RegionCommonTxConfigPrint(RegionNvmGroup2->Channels[txConfig->Channel].Frequency, txConfig->Datarate); + 801296e: 4b21 ldr r3, [pc, #132] ; (80129f4 <RegionAS923TxConfig+0x124>) + 8012970: 681a ldr r2, [r3, #0] + 8012972: 7823 ldrb r3, [r4, #0] + 8012974: eb03 0343 add.w r3, r3, r3, lsl #1 + 8012978: f994 1001 ldrsb.w r1, [r4, #1] + 801297c: f852 0023 ldr.w r0, [r2, r3, lsl #2] + 8012980: f000 febc bl 80136fc <RegionCommonTxConfigPrint> + + // Update time-on-air + *txTimeOnAir = GetTimeOnAir( txConfig->Datarate, txConfig->PktLen ); + 8012984: 89a1 ldrh r1, [r4, #12] + 8012986: f994 0001 ldrsb.w r0, [r4, #1] + 801298a: f7ff fcc1 bl 8012310 <GetTimeOnAir> + 801298e: f8c8 0000 str.w r0, [r8] + + // Setup maximum payload length of the radio driver + Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); + 8012992: 4b1a ldr r3, [pc, #104] ; (80129fc <RegionAS923TxConfig+0x12c>) + 8012994: 6d5b ldr r3, [r3, #84] ; 0x54 + 8012996: 7b21 ldrb r1, [r4, #12] + 8012998: 4628 mov r0, r5 + 801299a: 4798 blx r3 + + *txPower = txPowerLimited; + 801299c: 703e strb r6, [r7, #0] + return true; +#else + return false; +#endif /* REGION_AS923 */ +} + 801299e: 2001 movs r0, #1 + 80129a0: b00d add sp, #52 ; 0x34 + 80129a2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + Radio.SetTxConfig( modem, phyTxPower, 25000, bandwidth, phyDr * 1000, 0, 5, false, true, 0, 0, false, 4000 ); + 80129a6: 4b15 ldr r3, [pc, #84] ; (80129fc <RegionAS923TxConfig+0x12c>) + 80129a8: 69dd ldr r5, [r3, #28] + 80129aa: f44f 737a mov.w r3, #1000 ; 0x3e8 + 80129ae: fb03 f30a mul.w r3, r3, sl + 80129b2: f44f 627a mov.w r2, #4000 ; 0xfa0 + 80129b6: 9208 str r2, [sp, #32] + 80129b8: f04f 0a00 mov.w sl, #0 + 80129bc: f8cd a01c str.w sl, [sp, #28] + 80129c0: f8cd a018 str.w sl, [sp, #24] + 80129c4: f8cd a014 str.w sl, [sp, #20] + 80129c8: 2201 movs r2, #1 + 80129ca: 9204 str r2, [sp, #16] + 80129cc: f8cd a00c str.w sl, [sp, #12] + 80129d0: 2205 movs r2, #5 + 80129d2: 9202 str r2, [sp, #8] + 80129d4: f8cd a004 str.w sl, [sp, #4] + 80129d8: 9300 str r3, [sp, #0] + 80129da: 464b mov r3, r9 + 80129dc: f246 12a8 movw r2, #25000 ; 0x61a8 + 80129e0: 990b ldr r1, [sp, #44] ; 0x2c + 80129e2: 4650 mov r0, sl + 80129e4: 47a8 blx r5 + modem = MODEM_FSK; + 80129e6: 4655 mov r5, sl + 80129e8: e7c1 b.n 801296e <RegionAS923TxConfig+0x9e> + 80129ea: bf00 nop + 80129ec: 08018680 .word 0x08018680 + 80129f0: 20002628 .word 0x20002628 + 80129f4: 2000262c .word 0x2000262c + 80129f8: 08018660 .word 0x08018660 + 80129fc: 08018cb4 .word 0x08018cb4 + +08012a00 <RegionAS923LinkAdrReq>: + +uint8_t RegionAS923LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + 8012a00: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8012a04: b08f sub sp, #60 ; 0x3c + 8012a06: 4605 mov r5, r0 + 8012a08: 4689 mov r9, r1 + 8012a0a: 4690 mov r8, r2 + 8012a0c: 461f mov r7, r3 + uint8_t status = 0x07; +#if defined( REGION_AS923 ) + RegionCommonLinkAdrParams_t linkAdrParams = { 0 }; + 8012a0e: 2400 movs r4, #0 + 8012a10: 940c str r4, [sp, #48] ; 0x30 + 8012a12: f8ad 4034 strh.w r4, [sp, #52] ; 0x34 + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t chMask = 0; + 8012a16: f8ad 402e strh.w r4, [sp, #46] ; 0x2e + uint8_t status = 0x07; + 8012a1a: 2607 movs r6, #7 + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; + + while( bytesProcessed < linkAdrReq->PayloadSize ) + 8012a1c: e030 b.n 8012a80 <RegionAS923LinkAdrReq+0x80> + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + for( uint8_t i = 0; i < AS923_MAX_NB_CHANNELS; i++ ) + 8012a1e: f04f 0c00 mov.w ip, #0 + status = 0x07; + 8012a22: 2607 movs r6, #7 + 8012a24: e012 b.n 8012a4c <RegionAS923LinkAdrReq+0x4c> + { + if( linkAdrParams.ChMaskCtrl == 6 ) + { + if( RegionNvmGroup2->Channels[i].Frequency != 0 ) + 8012a26: 4a58 ldr r2, [pc, #352] ; (8012b88 <RegionAS923LinkAdrReq+0x188>) + 8012a28: 6812 ldr r2, [r2, #0] + 8012a2a: eb0c 014c add.w r1, ip, ip, lsl #1 + 8012a2e: f852 2021 ldr.w r2, [r2, r1, lsl #2] + 8012a32: b13a cbz r2, 8012a44 <RegionAS923LinkAdrReq+0x44> + { + chMask |= 1 << i; + 8012a34: 2201 movs r2, #1 + 8012a36: fa02 f20c lsl.w r2, r2, ip + 8012a3a: f8bd 102e ldrh.w r1, [sp, #46] ; 0x2e + 8012a3e: 430a orrs r2, r1 + 8012a40: f8ad 202e strh.w r2, [sp, #46] ; 0x2e + for( uint8_t i = 0; i < AS923_MAX_NB_CHANNELS; i++ ) + 8012a44: f10c 0c01 add.w ip, ip, #1 + 8012a48: fa5f fc8c uxtb.w ip, ip + 8012a4c: f1bc 0f0f cmp.w ip, #15 + 8012a50: d816 bhi.n 8012a80 <RegionAS923LinkAdrReq+0x80> + if( linkAdrParams.ChMaskCtrl == 6 ) + 8012a52: 2b06 cmp r3, #6 + 8012a54: d0e7 beq.n 8012a26 <RegionAS923LinkAdrReq+0x26> + } + } + else + { + if( ( ( chMask & ( 1 << i ) ) != 0 ) && + 8012a56: f8bd e02e ldrh.w lr, [sp, #46] ; 0x2e + 8012a5a: fa4e fe0c asr.w lr, lr, ip + 8012a5e: f01e 0f01 tst.w lr, #1 + 8012a62: d0ef beq.n 8012a44 <RegionAS923LinkAdrReq+0x44> + ( RegionNvmGroup2->Channels[i].Frequency == 0 ) ) + 8012a64: 4a48 ldr r2, [pc, #288] ; (8012b88 <RegionAS923LinkAdrReq+0x188>) + 8012a66: 6812 ldr r2, [r2, #0] + 8012a68: eb0c 014c add.w r1, ip, ip, lsl #1 + 8012a6c: f852 2021 ldr.w r2, [r2, r1, lsl #2] + if( ( ( chMask & ( 1 << i ) ) != 0 ) && + 8012a70: 2a00 cmp r2, #0 + 8012a72: d1e7 bne.n 8012a44 <RegionAS923LinkAdrReq+0x44> + {// Trying to enable an undefined channel + status &= 0xFE; // Channel mask KO + 8012a74: f006 06fe and.w r6, r6, #254 ; 0xfe + 8012a78: e7e4 b.n 8012a44 <RegionAS923LinkAdrReq+0x44> + status &= 0xFE; // Channel mask KO + 8012a7a: 2606 movs r6, #6 + 8012a7c: e000 b.n 8012a80 <RegionAS923LinkAdrReq+0x80> + status &= 0xFE; // Channel mask KO + 8012a7e: 2606 movs r6, #6 + while( bytesProcessed < linkAdrReq->PayloadSize ) + 8012a80: 7a2b ldrb r3, [r5, #8] + 8012a82: 42a3 cmp r3, r4 + 8012a84: d919 bls.n 8012aba <RegionAS923LinkAdrReq+0xba> + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + 8012a86: 6868 ldr r0, [r5, #4] + 8012a88: a90c add r1, sp, #48 ; 0x30 + 8012a8a: 4420 add r0, r4 + 8012a8c: f000 fc5a bl 8013344 <RegionCommonParseLinkAdrReq> + if( nextIndex == 0 ) + 8012a90: 4603 mov r3, r0 + 8012a92: b190 cbz r0, 8012aba <RegionAS923LinkAdrReq+0xba> + bytesProcessed += nextIndex; + 8012a94: 4423 add r3, r4 + 8012a96: b2dc uxtb r4, r3 + chMask = linkAdrParams.ChMask; + 8012a98: f8bd 2034 ldrh.w r2, [sp, #52] ; 0x34 + 8012a9c: f8ad 202e strh.w r2, [sp, #46] ; 0x2e + if( ( linkAdrParams.ChMaskCtrl == 0 ) && ( chMask == 0 ) ) + 8012aa0: f89d 3033 ldrb.w r3, [sp, #51] ; 0x33 + 8012aa4: b90b cbnz r3, 8012aaa <RegionAS923LinkAdrReq+0xaa> + 8012aa6: 2a00 cmp r2, #0 + 8012aa8: d0e7 beq.n 8012a7a <RegionAS923LinkAdrReq+0x7a> + else if( ( ( linkAdrParams.ChMaskCtrl >= 1 ) && ( linkAdrParams.ChMaskCtrl <= 5 )) || + 8012aaa: 1e5a subs r2, r3, #1 + 8012aac: b2d2 uxtb r2, r2 + 8012aae: 2a04 cmp r2, #4 + 8012ab0: d9e5 bls.n 8012a7e <RegionAS923LinkAdrReq+0x7e> + 8012ab2: 2b06 cmp r3, #6 + 8012ab4: d9b3 bls.n 8012a1e <RegionAS923LinkAdrReq+0x1e> + status &= 0xFE; // Channel mask KO + 8012ab6: 2606 movs r6, #6 + 8012ab8: e7e2 b.n 8012a80 <RegionAS923LinkAdrReq+0x80> + } + } + } + + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + 8012aba: 2302 movs r3, #2 + 8012abc: f88d 3028 strb.w r3, [sp, #40] ; 0x28 + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + 8012ac0: 7a6b ldrb r3, [r5, #9] + 8012ac2: f88d 302a strb.w r3, [sp, #42] ; 0x2a + phyParam = RegionAS923GetPhyParam( &getPhy ); + 8012ac6: a80a add r0, sp, #40 ; 0x28 + 8012ac8: f7ff fc54 bl 8012374 <RegionAS923GetPhyParam> + 8012acc: 9009 str r0, [sp, #36] ; 0x24 + + linkAdrVerifyParams.Status = status; + 8012ace: f88d 6008 strb.w r6, [sp, #8] + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + 8012ad2: 7aab ldrb r3, [r5, #10] + 8012ad4: f88d 3009 strb.w r3, [sp, #9] + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + 8012ad8: f99d 3031 ldrsb.w r3, [sp, #49] ; 0x31 + 8012adc: f88d 300a strb.w r3, [sp, #10] + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + 8012ae0: f99d 3032 ldrsb.w r3, [sp, #50] ; 0x32 + 8012ae4: f88d 300b strb.w r3, [sp, #11] + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + 8012ae8: f89d 3030 ldrb.w r3, [sp, #48] ; 0x30 + 8012aec: f88d 300c strb.w r3, [sp, #12] + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + 8012af0: f995 300b ldrsb.w r3, [r5, #11] + 8012af4: f88d 300d strb.w r3, [sp, #13] + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + 8012af8: f995 300c ldrsb.w r3, [r5, #12] + 8012afc: f88d 300e strb.w r3, [sp, #14] + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + 8012b00: f995 300d ldrsb.w r3, [r5, #13] + 8012b04: f88d 300f strb.w r3, [sp, #15] + linkAdrVerifyParams.NbChannels = AS923_MAX_NB_CHANNELS; + 8012b08: 2310 movs r3, #16 + 8012b0a: f88d 3010 strb.w r3, [sp, #16] + linkAdrVerifyParams.ChannelsMask = &chMask; + 8012b0e: f10d 032e add.w r3, sp, #46 ; 0x2e + 8012b12: 9305 str r3, [sp, #20] + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + 8012b14: f88d 0018 strb.w r0, [sp, #24] + linkAdrVerifyParams.MaxDatarate = AS923_TX_MAX_DATARATE; + 8012b18: 2307 movs r3, #7 + 8012b1a: f88d 3019 strb.w r3, [sp, #25] + linkAdrVerifyParams.Channels = RegionNvmGroup2->Channels; + 8012b1e: 4a1a ldr r2, [pc, #104] ; (8012b88 <RegionAS923LinkAdrReq+0x188>) + 8012b20: 6812 ldr r2, [r2, #0] + 8012b22: 9207 str r2, [sp, #28] + linkAdrVerifyParams.MinTxPower = AS923_MIN_TX_POWER; + 8012b24: f88d 3020 strb.w r3, [sp, #32] + linkAdrVerifyParams.MaxTxPower = AS923_MAX_TX_POWER; + 8012b28: 2300 movs r3, #0 + 8012b2a: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + linkAdrVerifyParams.Version = linkAdrReq->Version; + 8012b2e: 682b ldr r3, [r5, #0] + 8012b30: 9301 str r3, [sp, #4] + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); + 8012b32: ab0c add r3, sp, #48 ; 0x30 + 8012b34: f10d 0232 add.w r2, sp, #50 ; 0x32 + 8012b38: f10d 0131 add.w r1, sp, #49 ; 0x31 + 8012b3c: a801 add r0, sp, #4 + 8012b3e: f000 fc1f bl 8013380 <RegionCommonLinkAdrReqVerifyParams> + 8012b42: 4605 mov r5, r0 + + // Update channelsMask if everything is correct + if( status == 0x07 ) + 8012b44: 2807 cmp r0, #7 + 8012b46: d010 beq.n 8012b6a <RegionAS923LinkAdrReq+0x16a> + // Update the channels mask + RegionNvmGroup2->ChannelsMask[0] = chMask; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + 8012b48: f99d 3031 ldrsb.w r3, [sp, #49] ; 0x31 + 8012b4c: f889 3000 strb.w r3, [r9] + *txPowOut = linkAdrParams.TxPower; + 8012b50: f99d 3032 ldrsb.w r3, [sp, #50] ; 0x32 + 8012b54: f888 3000 strb.w r3, [r8] + *nbRepOut = linkAdrParams.NbRep; + 8012b58: f89d 3030 ldrb.w r3, [sp, #48] ; 0x30 + 8012b5c: 703b strb r3, [r7, #0] + *nbBytesParsed = bytesProcessed; + 8012b5e: 9b16 ldr r3, [sp, #88] ; 0x58 + 8012b60: 701c strb r4, [r3, #0] + +#endif /* REGION_AS923 */ + return status; +} + 8012b62: 4628 mov r0, r5 + 8012b64: b00f add sp, #60 ; 0x3c + 8012b66: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + memset1( ( uint8_t* ) RegionNvmGroup2->ChannelsMask, 0, sizeof( RegionNvmGroup2->ChannelsMask ) ); + 8012b6a: 4e07 ldr r6, [pc, #28] ; (8012b88 <RegionAS923LinkAdrReq+0x188>) + 8012b6c: 6830 ldr r0, [r6, #0] + 8012b6e: 220c movs r2, #12 + 8012b70: 2100 movs r1, #0 + 8012b72: f500 6090 add.w r0, r0, #1152 ; 0x480 + 8012b76: f001 fd28 bl 80145ca <memset1> + RegionNvmGroup2->ChannelsMask[0] = chMask; + 8012b7a: 6833 ldr r3, [r6, #0] + 8012b7c: f8bd 202e ldrh.w r2, [sp, #46] ; 0x2e + 8012b80: f8a3 2480 strh.w r2, [r3, #1152] ; 0x480 + 8012b84: e7e0 b.n 8012b48 <RegionAS923LinkAdrReq+0x148> + 8012b86: bf00 nop + 8012b88: 2000262c .word 0x2000262c + +08012b8c <RegionAS923RxParamSetupReq>: + +uint8_t RegionAS923RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + 8012b8c: b538 push {r3, r4, r5, lr} + 8012b8e: 4604 mov r4, r0 + uint8_t status = 0x07; +#if defined( REGION_AS923 ) + + // Verify radio frequency + if( VerifyRfFreq( rxParamSetupReq->Frequency ) == false ) + 8012b90: 6840 ldr r0, [r0, #4] + 8012b92: f7ff fba9 bl 80122e8 <VerifyRfFreq> + 8012b96: b1a0 cbz r0, 8012bc2 <RegionAS923RxParamSetupReq+0x36> + uint8_t status = 0x07; + 8012b98: 2507 movs r5, #7 + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, AS923_RX_MIN_DATARATE, AS923_RX_MAX_DATARATE ) == false ) + 8012b9a: 2207 movs r2, #7 + 8012b9c: 2100 movs r1, #0 + 8012b9e: f994 0000 ldrsb.w r0, [r4] + 8012ba2: f000 faaa bl 80130fa <RegionCommonValueInRange> + 8012ba6: b908 cbnz r0, 8012bac <RegionAS923RxParamSetupReq+0x20> + { + status &= 0xFD; // Datarate KO + 8012ba8: f005 05fd and.w r5, r5, #253 ; 0xfd + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, AS923_MIN_RX1_DR_OFFSET, AS923_MAX_RX1_DR_OFFSET ) == false ) + 8012bac: 2207 movs r2, #7 + 8012bae: 2100 movs r1, #0 + 8012bb0: f994 0001 ldrsb.w r0, [r4, #1] + 8012bb4: f000 faa1 bl 80130fa <RegionCommonValueInRange> + 8012bb8: b908 cbnz r0, 8012bbe <RegionAS923RxParamSetupReq+0x32> + { + status &= 0xFB; // Rx1DrOffset range KO + 8012bba: f005 05fb and.w r5, r5, #251 ; 0xfb + } + +#endif /* REGION_AS923 */ + return status; +} + 8012bbe: 4628 mov r0, r5 + 8012bc0: bd38 pop {r3, r4, r5, pc} + status &= 0xFE; // Channel frequency KO + 8012bc2: 2506 movs r5, #6 + 8012bc4: e7e9 b.n 8012b9a <RegionAS923RxParamSetupReq+0xe> + +08012bc6 <RegionAS923TxParamSetupReq>: + +int8_t RegionAS923TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + // Accept the request + return 0; +} + 8012bc6: 2000 movs r0, #0 + 8012bc8: 4770 bx lr + ... + +08012bcc <RegionAS923DlChannelReq>: +int8_t RegionAS923DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + uint8_t status = 0x03; + +#if defined( REGION_AS923 ) + if( dlChannelReq->ChannelId >= ( CHANNELS_MASK_SIZE * 16 ) ) + 8012bcc: 7803 ldrb r3, [r0, #0] + 8012bce: 2b0f cmp r3, #15 + 8012bd0: d901 bls.n 8012bd6 <RegionAS923DlChannelReq+0xa> + { + return 0; + 8012bd2: 2000 movs r0, #0 + RegionNvmGroup2->Channels[dlChannelReq->ChannelId].Rx1Frequency = dlChannelReq->Rx1Frequency; + } + +#endif /* REGION_AS923 */ + return status; +} + 8012bd4: 4770 bx lr +{ + 8012bd6: b510 push {r4, lr} + 8012bd8: 4604 mov r4, r0 + if( VerifyRfFreq( dlChannelReq->Rx1Frequency ) == false ) + 8012bda: 6840 ldr r0, [r0, #4] + 8012bdc: f7ff fb84 bl 80122e8 <VerifyRfFreq> + 8012be0: b170 cbz r0, 8012c00 <RegionAS923DlChannelReq+0x34> + uint8_t status = 0x03; + 8012be2: 2003 movs r0, #3 + if( RegionNvmGroup2->Channels[dlChannelReq->ChannelId].Frequency == 0 ) + 8012be4: 4b0b ldr r3, [pc, #44] ; (8012c14 <RegionAS923DlChannelReq+0x48>) + 8012be6: 681a ldr r2, [r3, #0] + 8012be8: 7823 ldrb r3, [r4, #0] + 8012bea: eb03 0143 add.w r1, r3, r3, lsl #1 + 8012bee: f852 1021 ldr.w r1, [r2, r1, lsl #2] + 8012bf2: b909 cbnz r1, 8012bf8 <RegionAS923DlChannelReq+0x2c> + status &= 0xFD; + 8012bf4: f000 00fd and.w r0, r0, #253 ; 0xfd + if( status == 0x03 ) + 8012bf8: 2803 cmp r0, #3 + 8012bfa: d003 beq.n 8012c04 <RegionAS923DlChannelReq+0x38> + return status; + 8012bfc: b240 sxtb r0, r0 +} + 8012bfe: bd10 pop {r4, pc} + status &= 0xFE; + 8012c00: 2002 movs r0, #2 + 8012c02: e7ef b.n 8012be4 <RegionAS923DlChannelReq+0x18> + RegionNvmGroup2->Channels[dlChannelReq->ChannelId].Rx1Frequency = dlChannelReq->Rx1Frequency; + 8012c04: 6861 ldr r1, [r4, #4] + 8012c06: eb03 0343 add.w r3, r3, r3, lsl #1 + 8012c0a: eb02 0283 add.w r2, r2, r3, lsl #2 + 8012c0e: 6051 str r1, [r2, #4] + 8012c10: e7f4 b.n 8012bfc <RegionAS923DlChannelReq+0x30> + 8012c12: bf00 nop + 8012c14: 2000262c .word 0x2000262c + +08012c18 <RegionAS923AlternateDr>: + // Only AS923_DWELL_LIMIT_DATARATE is supported + return AS923_DWELL_LIMIT_DATARATE; +#else + return -1; +#endif /* REGION_AS923 */ +} + 8012c18: 2002 movs r0, #2 + 8012c1a: 4770 bx lr + +08012c1c <RegionAS923NextChannel>: + +LoRaMacStatus_t RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) +{ + 8012c1c: b5f0 push {r4, r5, r6, r7, lr} + 8012c1e: b097 sub sp, #92 ; 0x5c + 8012c20: 4604 mov r4, r0 + 8012c22: 460f mov r7, r1 + 8012c24: 4616 mov r6, r2 + 8012c26: 461d mov r5, r3 +#if defined( REGION_AS923 ) + uint8_t nbEnabledChannels = 0; + 8012c28: 2100 movs r1, #0 + 8012c2a: f88d 1057 strb.w r1, [sp, #87] ; 0x57 + uint8_t nbRestrictedChannels = 0; + 8012c2e: f88d 1056 strb.w r1, [sp, #86] ; 0x56 + uint8_t enabledChannels[AS923_MAX_NB_CHANNELS] = { 0 }; + 8012c32: 9111 str r1, [sp, #68] ; 0x44 + 8012c34: 9112 str r1, [sp, #72] ; 0x48 + 8012c36: 9113 str r1, [sp, #76] ; 0x4c + 8012c38: 9114 str r1, [sp, #80] ; 0x50 + RegionCommonIdentifyChannelsParam_t identifyChannelsParam; + RegionCommonCountNbOfEnabledChannelsParams_t countChannelsParams; + LoRaMacStatus_t status = LORAMAC_STATUS_NO_CHANNEL_FOUND; + uint16_t joinChannels = AS923_JOIN_CHANNELS; + 8012c3a: 2303 movs r3, #3 + 8012c3c: f8ad 300a strh.w r3, [sp, #10] + + if( RegionCommonCountChannels( RegionNvmGroup2->ChannelsMask, 0, 1 ) == 0 ) + 8012c40: 4b34 ldr r3, [pc, #208] ; (8012d14 <RegionAS923NextChannel+0xf8>) + 8012c42: 6818 ldr r0, [r3, #0] + 8012c44: 2201 movs r2, #1 + 8012c46: f500 6090 add.w r0, r0, #1152 ; 0x480 + 8012c4a: f000 fab4 bl 80131b6 <RegionCommonCountChannels> + 8012c4e: b938 cbnz r0, 8012c60 <RegionAS923NextChannel+0x44> + { // Reactivate default channels + RegionNvmGroup2->ChannelsMask[0] |= LC( 1 ) + LC( 2 ); + 8012c50: 4b30 ldr r3, [pc, #192] ; (8012d14 <RegionAS923NextChannel+0xf8>) + 8012c52: 681a ldr r2, [r3, #0] + 8012c54: f8b2 3480 ldrh.w r3, [r2, #1152] ; 0x480 + 8012c58: f043 0303 orr.w r3, r3, #3 + 8012c5c: f8a2 3480 strh.w r3, [r2, #1152] ; 0x480 + } + + // Search how many channels are enabled + countChannelsParams.Joined = nextChanParams->Joined; + 8012c60: 7a63 ldrb r3, [r4, #9] + 8012c62: f88d 300c strb.w r3, [sp, #12] + countChannelsParams.Datarate = nextChanParams->Datarate; + 8012c66: 7a23 ldrb r3, [r4, #8] + 8012c68: f88d 300d strb.w r3, [sp, #13] + countChannelsParams.ChannelsMask = RegionNvmGroup2->ChannelsMask; + 8012c6c: 4b29 ldr r3, [pc, #164] ; (8012d14 <RegionAS923NextChannel+0xf8>) + 8012c6e: 681b ldr r3, [r3, #0] + 8012c70: f503 6290 add.w r2, r3, #1152 ; 0x480 + 8012c74: 9204 str r2, [sp, #16] + countChannelsParams.Channels = RegionNvmGroup2->Channels; + 8012c76: 9305 str r3, [sp, #20] +#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) + countChannelsParams.Bands = RegionNvmGroup1->Bands; + 8012c78: 4b27 ldr r3, [pc, #156] ; (8012d18 <RegionAS923NextChannel+0xfc>) + 8012c7a: 681b ldr r3, [r3, #0] + 8012c7c: 9306 str r3, [sp, #24] +#elif (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010001 )) + countChannelsParams.Bands = RegionBands; +#endif /* REGION_VERSION */ + countChannelsParams.MaxNbChannels = AS923_MAX_NB_CHANNELS; + 8012c7e: 2310 movs r3, #16 + 8012c80: f8ad 301c strh.w r3, [sp, #28] + countChannelsParams.JoinChannels = &joinChannels; + 8012c84: f10d 030a add.w r3, sp, #10 + 8012c88: 9308 str r3, [sp, #32] + + identifyChannelsParam.AggrTimeOff = nextChanParams->AggrTimeOff; + 8012c8a: 6823 ldr r3, [r4, #0] + 8012c8c: 9309 str r3, [sp, #36] ; 0x24 + identifyChannelsParam.LastAggrTx = nextChanParams->LastAggrTx; + 8012c8e: 6863 ldr r3, [r4, #4] + 8012c90: 930a str r3, [sp, #40] ; 0x28 + identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; + 8012c92: 7aa3 ldrb r3, [r4, #10] + 8012c94: f88d 302c strb.w r3, [sp, #44] ; 0x2c + identifyChannelsParam.MaxBands = AS923_MAX_NB_BANDS; + 8012c98: 2301 movs r3, #1 + 8012c9a: f88d 302d strb.w r3, [sp, #45] ; 0x2d + + identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + 8012c9e: ab0c add r3, sp, #48 ; 0x30 + 8012ca0: f104 020c add.w r2, r4, #12 + 8012ca4: e892 0003 ldmia.w r2, {r0, r1} + 8012ca8: e883 0003 stmia.w r3, {r0, r1} + identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; + 8012cac: 7d23 ldrb r3, [r4, #20] + 8012cae: f88d 3038 strb.w r3, [sp, #56] ; 0x38 + identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); + 8012cb2: 8ae1 ldrh r1, [r4, #22] + 8012cb4: f994 0008 ldrsb.w r0, [r4, #8] + 8012cb8: f7ff fb2a bl 8012310 <GetTimeOnAir> + 8012cbc: 900f str r0, [sp, #60] ; 0x3c + + identifyChannelsParam.CountNbOfEnabledChannelsParam = &countChannelsParams; + 8012cbe: ab03 add r3, sp, #12 + 8012cc0: 9310 str r3, [sp, #64] ; 0x40 + + status = RegionCommonIdentifyChannels( &identifyChannelsParam, aggregatedTimeOff, enabledChannels, + 8012cc2: 9601 str r6, [sp, #4] + 8012cc4: f10d 0356 add.w r3, sp, #86 ; 0x56 + 8012cc8: 9300 str r3, [sp, #0] + 8012cca: f10d 0357 add.w r3, sp, #87 ; 0x57 + 8012cce: aa11 add r2, sp, #68 ; 0x44 + 8012cd0: 4629 mov r1, r5 + 8012cd2: a809 add r0, sp, #36 ; 0x24 + 8012cd4: f000 fc71 bl 80135ba <RegionCommonIdentifyChannels> + &nbEnabledChannels, &nbRestrictedChannels, time ); + + if( status == LORAMAC_STATUS_OK ) + 8012cd8: 4604 mov r4, r0 + 8012cda: b120 cbz r0, 8012ce6 <RegionAS923NextChannel+0xca> +#else + // We found a valid channel + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; +#endif + } + else if( status == LORAMAC_STATUS_NO_CHANNEL_FOUND ) + 8012cdc: 280c cmp r0, #12 + 8012cde: d00f beq.n 8012d00 <RegionAS923NextChannel+0xe4> + } + return status; +#else + return LORAMAC_STATUS_NO_CHANNEL_FOUND; +#endif /* REGION_AS923 */ +} + 8012ce0: 4620 mov r0, r4 + 8012ce2: b017 add sp, #92 ; 0x5c + 8012ce4: bdf0 pop {r4, r5, r6, r7, pc} + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; + 8012ce6: f89d 1057 ldrb.w r1, [sp, #87] ; 0x57 + 8012cea: 3901 subs r1, #1 + 8012cec: f001 fc48 bl 8014580 <randr> + 8012cf0: f100 0358 add.w r3, r0, #88 ; 0x58 + 8012cf4: eb0d 0003 add.w r0, sp, r3 + 8012cf8: f810 3c14 ldrb.w r3, [r0, #-20] + 8012cfc: 703b strb r3, [r7, #0] + 8012cfe: e7ef b.n 8012ce0 <RegionAS923NextChannel+0xc4> + RegionNvmGroup2->ChannelsMask[0] |= LC( 1 ) + LC( 2 ); + 8012d00: 4b04 ldr r3, [pc, #16] ; (8012d14 <RegionAS923NextChannel+0xf8>) + 8012d02: 681a ldr r2, [r3, #0] + 8012d04: f8b2 3480 ldrh.w r3, [r2, #1152] ; 0x480 + 8012d08: f043 0303 orr.w r3, r3, #3 + 8012d0c: f8a2 3480 strh.w r3, [r2, #1152] ; 0x480 + 8012d10: e7e6 b.n 8012ce0 <RegionAS923NextChannel+0xc4> + 8012d12: bf00 nop + 8012d14: 2000262c .word 0x2000262c + 8012d18: 20002628 .word 0x20002628 + +08012d1c <RegionAS923ChannelAdd>: + +LoRaMacStatus_t RegionAS923ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + 8012d1c: b5f8 push {r3, r4, r5, r6, r7, lr} +#if defined( REGION_AS923 ) + bool drInvalid = false; + bool freqInvalid = false; + uint8_t id = channelAdd->ChannelId; + 8012d1e: 7905 ldrb r5, [r0, #4] + + if( id < AS923_NUMB_DEFAULT_CHANNELS ) + 8012d20: 2d01 cmp r5, #1 + 8012d22: d94a bls.n 8012dba <RegionAS923ChannelAdd+0x9e> + 8012d24: 4604 mov r4, r0 + { + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + } + + if( id >= AS923_MAX_NB_CHANNELS ) + 8012d26: 2d0f cmp r5, #15 + 8012d28: d849 bhi.n 8012dbe <RegionAS923ChannelAdd+0xa2> + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + // Validate the datarate range + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Min, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ) == false ) + 8012d2a: 6803 ldr r3, [r0, #0] + 8012d2c: 7a18 ldrb r0, [r3, #8] + 8012d2e: f340 0003 sbfx r0, r0, #0, #4 + 8012d32: 2207 movs r2, #7 + 8012d34: 2100 movs r1, #0 + 8012d36: b240 sxtb r0, r0 + 8012d38: f000 f9df bl 80130fa <RegionCommonValueInRange> + 8012d3c: 2800 cmp r0, #0 + 8012d3e: d038 beq.n 8012db2 <RegionAS923ChannelAdd+0x96> + bool drInvalid = false; + 8012d40: 2600 movs r6, #0 + { + drInvalid = true; + } + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ) == false ) + 8012d42: 6823 ldr r3, [r4, #0] + 8012d44: 7a18 ldrb r0, [r3, #8] + 8012d46: f340 1003 sbfx r0, r0, #4, #4 + 8012d4a: 2207 movs r2, #7 + 8012d4c: 2100 movs r1, #0 + 8012d4e: b240 sxtb r0, r0 + 8012d50: f000 f9d3 bl 80130fa <RegionCommonValueInRange> + 8012d54: b900 cbnz r0, 8012d58 <RegionAS923ChannelAdd+0x3c> + { + drInvalid = true; + 8012d56: 2601 movs r6, #1 + } + if( channelAdd->NewChannel->DrRange.Fields.Min > channelAdd->NewChannel->DrRange.Fields.Max ) + 8012d58: 6821 ldr r1, [r4, #0] + 8012d5a: 7a0b ldrb r3, [r1, #8] + 8012d5c: f343 0203 sbfx r2, r3, #0, #4 + 8012d60: b252 sxtb r2, r2 + 8012d62: f343 1303 sbfx r3, r3, #4, #4 + 8012d66: b25b sxtb r3, r3 + 8012d68: 429a cmp r2, r3 + 8012d6a: dd00 ble.n 8012d6e <RegionAS923ChannelAdd+0x52> + { + drInvalid = true; + 8012d6c: 2601 movs r6, #1 + } + + // Check frequency + if( freqInvalid == false ) + { + if( VerifyRfFreq( channelAdd->NewChannel->Frequency ) == false ) + 8012d6e: 6808 ldr r0, [r1, #0] + 8012d70: f7ff faba bl 80122e8 <VerifyRfFreq> + 8012d74: b1f8 cbz r0, 8012db6 <RegionAS923ChannelAdd+0x9a> + bool freqInvalid = false; + 8012d76: 2300 movs r3, #0 + freqInvalid = true; + } + } + + // Check status + if( ( drInvalid == true ) && ( freqInvalid == true ) ) + 8012d78: b106 cbz r6, 8012d7c <RegionAS923ChannelAdd+0x60> + 8012d7a: bb13 cbnz r3, 8012dc2 <RegionAS923ChannelAdd+0xa6> + { + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + } + if( drInvalid == true ) + 8012d7c: bb1e cbnz r6, 8012dc6 <RegionAS923ChannelAdd+0xaa> + { + return LORAMAC_STATUS_DATARATE_INVALID; + } + if( freqInvalid == true ) + 8012d7e: bb23 cbnz r3, 8012dca <RegionAS923ChannelAdd+0xae> + { + return LORAMAC_STATUS_FREQUENCY_INVALID; + } + + memcpy1( ( uint8_t* ) &(RegionNvmGroup2->Channels[id]), ( uint8_t* ) channelAdd->NewChannel, sizeof( RegionNvmGroup2->Channels[id] ) ); + 8012d80: 4f13 ldr r7, [pc, #76] ; (8012dd0 <RegionAS923ChannelAdd+0xb4>) + 8012d82: 683b ldr r3, [r7, #0] + 8012d84: 006e lsls r6, r5, #1 + 8012d86: eb05 0045 add.w r0, r5, r5, lsl #1 + 8012d8a: 220c movs r2, #12 + 8012d8c: 6821 ldr r1, [r4, #0] + 8012d8e: eb03 0080 add.w r0, r3, r0, lsl #2 + 8012d92: f001 fc02 bl 801459a <memcpy1> + RegionNvmGroup2->Channels[id].Band = 0; + 8012d96: 683a ldr r2, [r7, #0] + 8012d98: 442e add r6, r5 + 8012d9a: eb02 0686 add.w r6, r2, r6, lsl #2 + 8012d9e: 2000 movs r0, #0 + 8012da0: 7270 strb r0, [r6, #9] + RegionNvmGroup2->ChannelsMask[0] |= ( 1 << id ); + 8012da2: 2301 movs r3, #1 + 8012da4: 40ab lsls r3, r5 + 8012da6: f8b2 1480 ldrh.w r1, [r2, #1152] ; 0x480 + 8012daa: 430b orrs r3, r1 + 8012dac: f8a2 3480 strh.w r3, [r2, #1152] ; 0x480 + return LORAMAC_STATUS_OK; + 8012db0: e006 b.n 8012dc0 <RegionAS923ChannelAdd+0xa4> + drInvalid = true; + 8012db2: 2601 movs r6, #1 + 8012db4: e7c5 b.n 8012d42 <RegionAS923ChannelAdd+0x26> + freqInvalid = true; + 8012db6: 2301 movs r3, #1 + 8012db8: e7de b.n 8012d78 <RegionAS923ChannelAdd+0x5c> + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + 8012dba: 2006 movs r0, #6 + 8012dbc: e000 b.n 8012dc0 <RegionAS923ChannelAdd+0xa4> + return LORAMAC_STATUS_PARAMETER_INVALID; + 8012dbe: 2003 movs r0, #3 +#else + return LORAMAC_STATUS_NO_CHANNEL_FOUND; +#endif /* REGION_AS923 */ +} + 8012dc0: bdf8 pop {r3, r4, r5, r6, r7, pc} + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + 8012dc2: 2006 movs r0, #6 + 8012dc4: e7fc b.n 8012dc0 <RegionAS923ChannelAdd+0xa4> + return LORAMAC_STATUS_DATARATE_INVALID; + 8012dc6: 2005 movs r0, #5 + 8012dc8: e7fa b.n 8012dc0 <RegionAS923ChannelAdd+0xa4> + return LORAMAC_STATUS_FREQUENCY_INVALID; + 8012dca: 2004 movs r0, #4 + 8012dcc: e7f8 b.n 8012dc0 <RegionAS923ChannelAdd+0xa4> + 8012dce: bf00 nop + 8012dd0: 2000262c .word 0x2000262c + +08012dd4 <RegionAS923ChannelsRemove>: + +bool RegionAS923ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ +#if defined( REGION_AS923 ) + uint8_t id = channelRemove->ChannelId; + 8012dd4: 7801 ldrb r1, [r0, #0] + + if( id < AS923_NUMB_DEFAULT_CHANNELS ) + 8012dd6: 2901 cmp r1, #1 + 8012dd8: d913 bls.n 8012e02 <RegionAS923ChannelsRemove+0x2e> +{ + 8012dda: b508 push {r3, lr} + { + return false; + } + + // Remove the channel from the list of channels + RegionNvmGroup2->Channels[id] = ( ChannelParams_t ){ 0, 0, { 0 }, 0 }; + 8012ddc: 4b0a ldr r3, [pc, #40] ; (8012e08 <RegionAS923ChannelsRemove+0x34>) + 8012dde: 6818 ldr r0, [r3, #0] + 8012de0: eb01 0341 add.w r3, r1, r1, lsl #1 + 8012de4: ea4f 0c83 mov.w ip, r3, lsl #2 + 8012de8: eb00 0383 add.w r3, r0, r3, lsl #2 + 8012dec: 2200 movs r2, #0 + 8012dee: f840 200c str.w r2, [r0, ip] + 8012df2: 605a str r2, [r3, #4] + 8012df4: 609a str r2, [r3, #8] + + return RegionCommonChanDisable( RegionNvmGroup2->ChannelsMask, id, AS923_MAX_NB_CHANNELS ); + 8012df6: 2210 movs r2, #16 + 8012df8: f500 6090 add.w r0, r0, #1152 ; 0x480 + 8012dfc: f000 f9bf bl 801317e <RegionCommonChanDisable> +#else + return false; +#endif /* REGION_AS923 */ +} + 8012e00: bd08 pop {r3, pc} + return false; + 8012e02: 2000 movs r0, #0 +} + 8012e04: 4770 bx lr + 8012e06: bf00 nop + 8012e08: 2000262c .word 0x2000262c + +08012e0c <RegionAS923ApplyCFList>: +{ + 8012e0c: b570 push {r4, r5, r6, lr} + 8012e0e: b086 sub sp, #24 + newChannel.DrRange.Value = ( DR_5 << 4 ) | DR_0; + 8012e10: 2350 movs r3, #80 ; 0x50 + 8012e12: f88d 3014 strb.w r3, [sp, #20] + if( applyCFList->Size != 16 ) + 8012e16: 7903 ldrb r3, [r0, #4] + 8012e18: 2b10 cmp r3, #16 + 8012e1a: d136 bne.n 8012e8a <RegionAS923ApplyCFList+0x7e> + 8012e1c: 4606 mov r6, r0 + if( applyCFList->Payload[15] != 0 ) + 8012e1e: 6803 ldr r3, [r0, #0] + 8012e20: 7bdd ldrb r5, [r3, #15] + 8012e22: 2d00 cmp r5, #0 + 8012e24: d131 bne.n 8012e8a <RegionAS923ApplyCFList+0x7e> + for( uint8_t i = 0, chanIdx = AS923_NUMB_DEFAULT_CHANNELS; chanIdx < AS923_MAX_NB_CHANNELS; i+=3, chanIdx++ ) + 8012e26: 2402 movs r4, #2 + 8012e28: e01b b.n 8012e62 <RegionAS923ApplyCFList+0x56> + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + 8012e2a: 6832 ldr r2, [r6, #0] + 8012e2c: 5d53 ldrb r3, [r2, r5] + 8012e2e: 9303 str r3, [sp, #12] + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + 8012e30: 442a add r2, r5 + 8012e32: 7851 ldrb r1, [r2, #1] + 8012e34: ea43 2301 orr.w r3, r3, r1, lsl #8 + 8012e38: 9303 str r3, [sp, #12] + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + 8012e3a: 7892 ldrb r2, [r2, #2] + 8012e3c: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8012e40: 9303 str r3, [sp, #12] + newChannel.Frequency *= 100; + 8012e42: 2264 movs r2, #100 ; 0x64 + 8012e44: fb02 f303 mul.w r3, r2, r3 + 8012e48: 9303 str r3, [sp, #12] + newChannel.Rx1Frequency = 0; + 8012e4a: 2300 movs r3, #0 + 8012e4c: 9304 str r3, [sp, #16] + 8012e4e: e011 b.n 8012e74 <RegionAS923ApplyCFList+0x68> + channelRemove.ChannelId = chanIdx; + 8012e50: f88d 4000 strb.w r4, [sp] + RegionAS923ChannelsRemove( &channelRemove ); + 8012e54: 4668 mov r0, sp + 8012e56: f7ff ffbd bl 8012dd4 <RegionAS923ChannelsRemove> + for( uint8_t i = 0, chanIdx = AS923_NUMB_DEFAULT_CHANNELS; chanIdx < AS923_MAX_NB_CHANNELS; i+=3, chanIdx++ ) + 8012e5a: 3503 adds r5, #3 + 8012e5c: b2ed uxtb r5, r5 + 8012e5e: 3401 adds r4, #1 + 8012e60: b2e4 uxtb r4, r4 + 8012e62: 2c0f cmp r4, #15 + 8012e64: d811 bhi.n 8012e8a <RegionAS923ApplyCFList+0x7e> + if( chanIdx < ( AS923_NUMB_CHANNELS_CF_LIST + AS923_NUMB_DEFAULT_CHANNELS ) ) + 8012e66: 2c06 cmp r4, #6 + 8012e68: d9df bls.n 8012e2a <RegionAS923ApplyCFList+0x1e> + newChannel.Frequency = 0; + 8012e6a: 2300 movs r3, #0 + 8012e6c: 9303 str r3, [sp, #12] + newChannel.DrRange.Value = 0; + 8012e6e: f88d 3014 strb.w r3, [sp, #20] + newChannel.Rx1Frequency = 0; + 8012e72: 9304 str r3, [sp, #16] + if( newChannel.Frequency != 0 ) + 8012e74: 9b03 ldr r3, [sp, #12] + 8012e76: 2b00 cmp r3, #0 + 8012e78: d0ea beq.n 8012e50 <RegionAS923ApplyCFList+0x44> + channelAdd.NewChannel = &newChannel; + 8012e7a: ab03 add r3, sp, #12 + 8012e7c: 9301 str r3, [sp, #4] + channelAdd.ChannelId = chanIdx; + 8012e7e: f88d 4008 strb.w r4, [sp, #8] + RegionAS923ChannelAdd( &channelAdd ); + 8012e82: a801 add r0, sp, #4 + 8012e84: f7ff ff4a bl 8012d1c <RegionAS923ChannelAdd> + 8012e88: e7e7 b.n 8012e5a <RegionAS923ApplyCFList+0x4e> +} + 8012e8a: b006 add sp, #24 + 8012e8c: bd70 pop {r4, r5, r6, pc} + +08012e8e <RegionAS923NewChannelReq>: +{ + 8012e8e: b500 push {lr} + 8012e90: b085 sub sp, #20 + if( newChannelReq->NewChannel->Frequency == 0 ) + 8012e92: 6803 ldr r3, [r0, #0] + 8012e94: 681a ldr r2, [r3, #0] + 8012e96: b952 cbnz r2, 8012eae <RegionAS923NewChannelReq+0x20> + channelRemove.ChannelId = newChannelReq->ChannelId; + 8012e98: 7903 ldrb r3, [r0, #4] + 8012e9a: f88d 3004 strb.w r3, [sp, #4] + if( RegionAS923ChannelsRemove( &channelRemove ) == false ) + 8012e9e: a801 add r0, sp, #4 + 8012ea0: f7ff ff98 bl 8012dd4 <RegionAS923ChannelsRemove> + 8012ea4: b1d0 cbz r0, 8012edc <RegionAS923NewChannelReq+0x4e> + uint8_t status = 0x03; + 8012ea6: 2003 movs r0, #3 +} + 8012ea8: b005 add sp, #20 + 8012eaa: f85d fb04 ldr.w pc, [sp], #4 + channelAdd.NewChannel = newChannelReq->NewChannel; + 8012eae: 9302 str r3, [sp, #8] + channelAdd.ChannelId = newChannelReq->ChannelId; + 8012eb0: 7903 ldrb r3, [r0, #4] + 8012eb2: f88d 300c strb.w r3, [sp, #12] + switch( RegionAS923ChannelAdd( &channelAdd ) ) + 8012eb6: a802 add r0, sp, #8 + 8012eb8: f7ff ff30 bl 8012d1c <RegionAS923ChannelAdd> + 8012ebc: 2806 cmp r0, #6 + 8012ebe: d80b bhi.n 8012ed8 <RegionAS923NewChannelReq+0x4a> + 8012ec0: e8df f000 tbb [pc, r0] + 8012ec4: 0a0a0a04 .word 0x0a0a0a04 + 8012ec8: 060e .short 0x060e + 8012eca: 08 .byte 0x08 + 8012ecb: 00 .byte 0x00 + 8012ecc: 2003 movs r0, #3 + 8012ece: e7eb b.n 8012ea8 <RegionAS923NewChannelReq+0x1a> + status &= 0xFD; + 8012ed0: 2001 movs r0, #1 + break; + 8012ed2: e7e9 b.n 8012ea8 <RegionAS923NewChannelReq+0x1a> + status &= 0xFC; + 8012ed4: 2000 movs r0, #0 + break; + 8012ed6: e7e7 b.n 8012ea8 <RegionAS923NewChannelReq+0x1a> + status &= 0xFC; + 8012ed8: 2000 movs r0, #0 + break; + 8012eda: e7e5 b.n 8012ea8 <RegionAS923NewChannelReq+0x1a> + status &= 0xFC; + 8012edc: 2000 movs r0, #0 + 8012ede: e7e3 b.n 8012ea8 <RegionAS923NewChannelReq+0x1a> + status &= 0xFE; + 8012ee0: 2002 movs r0, #2 + 8012ee2: e7e1 b.n 8012ea8 <RegionAS923NewChannelReq+0x1a> + +08012ee4 <RegionAS923SetContinuousWave>: + +#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) +void RegionAS923SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + 8012ee4: b538 push {r3, r4, r5, lr} + 8012ee6: 4604 mov r4, r0 +#if defined( REGION_AS923 ) + int8_t txPowerLimited = RegionCommonLimitTxPower( continuousWave->TxPower, RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[continuousWave->Channel].Band].TxMaxPower ); + 8012ee8: 4b12 ldr r3, [pc, #72] ; (8012f34 <RegionAS923SetContinuousWave+0x50>) + 8012eea: 681a ldr r2, [r3, #0] + 8012eec: 4d12 ldr r5, [pc, #72] ; (8012f38 <RegionAS923SetContinuousWave+0x54>) + 8012eee: 6829 ldr r1, [r5, #0] + 8012ef0: 7803 ldrb r3, [r0, #0] + 8012ef2: eb03 0343 add.w r3, r3, r3, lsl #1 + 8012ef6: eb01 0183 add.w r1, r1, r3, lsl #2 + 8012efa: 7a4b ldrb r3, [r1, #9] + 8012efc: eb03 0343 add.w r3, r3, r3, lsl #1 + 8012f00: eb02 03c3 add.w r3, r2, r3, lsl #3 + 8012f04: f993 1002 ldrsb.w r1, [r3, #2] + 8012f08: f990 0002 ldrsb.w r0, [r0, #2] + 8012f0c: f000 fbbe bl 801368c <RegionCommonLimitTxPower> + int8_t phyTxPower = 0; + uint32_t frequency = RegionNvmGroup2->Channels[continuousWave->Channel].Frequency; + 8012f10: 682a ldr r2, [r5, #0] + 8012f12: 7823 ldrb r3, [r4, #0] + 8012f14: eb03 0343 add.w r3, r3, r3, lsl #1 + 8012f18: f852 5023 ldr.w r5, [r2, r3, lsl #2] + + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); + 8012f1c: 68a2 ldr r2, [r4, #8] + 8012f1e: 6861 ldr r1, [r4, #4] + 8012f20: f000 fad0 bl 80134c4 <RegionCommonComputeTxPower> + 8012f24: 4601 mov r1, r0 + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); + 8012f26: 4b05 ldr r3, [pc, #20] ; (8012f3c <RegionAS923SetContinuousWave+0x58>) + 8012f28: 6bdb ldr r3, [r3, #60] ; 0x3c + 8012f2a: 89a2 ldrh r2, [r4, #12] + 8012f2c: 4628 mov r0, r5 + 8012f2e: 4798 blx r3 +#endif /* REGION_AS923 */ +} + 8012f30: bd38 pop {r3, r4, r5, pc} + 8012f32: bf00 nop + 8012f34: 20002628 .word 0x20002628 + 8012f38: 2000262c .word 0x2000262c + 8012f3c: 08018cb4 .word 0x08018cb4 + +08012f40 <RegionAS923ApplyDrOffset>: +#if defined( REGION_AS923 ) + // Initialize minDr for a downlink dwell time configuration of 0 + int8_t minDr = DR_0; + + // Update the minDR for a downlink dwell time configuration of 1 + if( downlinkDwellTime == 1 ) + 8012f40: 2801 cmp r0, #1 + 8012f42: d00b beq.n 8012f5c <RegionAS923ApplyDrOffset+0x1c> + int8_t minDr = DR_0; + 8012f44: 2000 movs r0, #0 + { + minDr = AS923_DWELL_LIMIT_DATARATE; + } + + // Apply offset formula + return MIN( DR_5, MAX( minDr, dr - EffectiveRx1DrOffsetAS923[drOffset] ) ); + 8012f46: 4b06 ldr r3, [pc, #24] ; (8012f60 <RegionAS923ApplyDrOffset+0x20>) + 8012f48: 569b ldrsb r3, [r3, r2] + 8012f4a: 1ac9 subs r1, r1, r3 + 8012f4c: 4288 cmp r0, r1 + 8012f4e: bfb8 it lt + 8012f50: 4608 movlt r0, r1 + 8012f52: 2805 cmp r0, #5 + 8012f54: bfa8 it ge + 8012f56: 2005 movge r0, #5 +#else + return 0; +#endif /* REGION_AS923 */ + +} + 8012f58: b2c0 uxtb r0, r0 + 8012f5a: 4770 bx lr + minDr = AS923_DWELL_LIMIT_DATARATE; + 8012f5c: 2002 movs r0, #2 + 8012f5e: e7f2 b.n 8012f46 <RegionAS923ApplyDrOffset+0x6> + 8012f60: 08018688 .word 0x08018688 + +08012f64 <GetDutyCycle>: +#ifdef MW_LOG_ENABLED +static const char *EventRXSlotStrings[] = { "1", "2", "C", "Multi_C", "P", "Multi_P" }; +#endif + +static uint16_t GetDutyCycle( Band_t* band, bool joined, SysTime_t elapsedTimeSinceStartup ) +{ + 8012f64: b082 sub sp, #8 + 8012f66: f10d 0c08 add.w ip, sp, #8 + 8012f6a: e90c 000c stmdb ip, {r2, r3} + uint16_t dutyCycle = band->DCycle; + 8012f6e: 8800 ldrh r0, [r0, #0] + + if( joined == false ) + 8012f70: b971 cbnz r1, 8012f90 <GetDutyCycle+0x2c> + { + uint16_t joinDutyCycle = BACKOFF_DC_24_HOURS; + + if( elapsedTimeSinceStartup.Seconds < BACKOFF_DUTY_CYCLE_1_HOUR_IN_S ) + 8012f72: 4613 mov r3, r2 + 8012f74: f5b2 6f61 cmp.w r2, #3600 ; 0xe10 + 8012f78: d306 bcc.n 8012f88 <GetDutyCycle+0x24> + { + joinDutyCycle = BACKOFF_DC_1_HOUR; + } + else if( elapsedTimeSinceStartup.Seconds < BACKOFF_DUTY_CYCLE_10_HOURS_IN_S ) + 8012f7a: f649 22af movw r2, #39599 ; 0x9aaf + 8012f7e: 4293 cmp r3, r2 + 8012f80: d80a bhi.n 8012f98 <GetDutyCycle+0x34> + { + joinDutyCycle = BACKOFF_DC_10_HOURS; + 8012f82: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8012f86: e000 b.n 8012f8a <GetDutyCycle+0x26> + joinDutyCycle = BACKOFF_DC_1_HOUR; + 8012f88: 2364 movs r3, #100 ; 0x64 + else + { + joinDutyCycle = BACKOFF_DC_24_HOURS; + } + // Take the most restrictive duty cycle + dutyCycle = MAX( dutyCycle, joinDutyCycle ); + 8012f8a: 4298 cmp r0, r3 + 8012f8c: bf38 it cc + 8012f8e: 4618 movcc r0, r3 + } + + // Prevent value of 0 + if( dutyCycle == 0 ) + 8012f90: b900 cbnz r0, 8012f94 <GetDutyCycle+0x30> + { + dutyCycle = 1; + 8012f92: 2001 movs r0, #1 + } + + return dutyCycle; +} + 8012f94: b002 add sp, #8 + 8012f96: 4770 bx lr + joinDutyCycle = BACKOFF_DC_24_HOURS; + 8012f98: f242 7310 movw r3, #10000 ; 0x2710 + 8012f9c: e7f5 b.n 8012f8a <GetDutyCycle+0x26> + +08012f9e <CountChannels>: + + return dutyCycle; +} + +static uint8_t CountChannels( uint16_t mask, uint8_t nbBits ) +{ + 8012f9e: 4684 mov ip, r0 + uint8_t nbActiveBits = 0; + + for( uint8_t j = 0; j < nbBits; j++ ) + 8012fa0: 2300 movs r3, #0 + uint8_t nbActiveBits = 0; + 8012fa2: 4618 mov r0, r3 + for( uint8_t j = 0; j < nbBits; j++ ) + 8012fa4: e001 b.n 8012faa <CountChannels+0xc> + 8012fa6: 3301 adds r3, #1 + 8012fa8: b2db uxtb r3, r3 + 8012faa: 428b cmp r3, r1 + 8012fac: d207 bcs.n 8012fbe <CountChannels+0x20> + { + if( ( mask & ( 1 << j ) ) == ( 1 << j ) ) + 8012fae: 2201 movs r2, #1 + 8012fb0: 409a lsls r2, r3 + 8012fb2: ea32 020c bics.w r2, r2, ip + 8012fb6: d1f6 bne.n 8012fa6 <CountChannels+0x8> + { + nbActiveBits++; + 8012fb8: 3001 adds r0, #1 + 8012fba: b2c0 uxtb r0, r0 + 8012fbc: e7f3 b.n 8012fa6 <CountChannels+0x8> + } + } + return nbActiveBits; +} + 8012fbe: 4770 bx lr + +08012fc0 <SetMaxTimeCredits>: +{ + 8012fc0: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8012fc4: b089 sub sp, #36 ; 0x24 + 8012fc6: 4604 mov r4, r0 + 8012fc8: 460e mov r6, r1 + 8012fca: ad02 add r5, sp, #8 + 8012fcc: e885 000c stmia.w r5, {r2, r3} + 8012fd0: f89d 8040 ldrb.w r8, [sp, #64] ; 0x40 + 8012fd4: f89d 9044 ldrb.w r9, [sp, #68] ; 0x44 + TimerTime_t elapsedTime = SysTimeToMs( elapsedTimeSinceStartup ); + 8012fd8: e895 0003 ldmia.w r5, {r0, r1} + 8012fdc: f004 f848 bl 8017070 <SysTimeToMs> + 8012fe0: 4607 mov r7, r0 + SysTime_t timeDiff = { 0 }; + 8012fe2: 2300 movs r3, #0 + 8012fe4: 9304 str r3, [sp, #16] + 8012fe6: 9305 str r3, [sp, #20] + dutyCycle = GetDutyCycle( band, joined, elapsedTimeSinceStartup ); + 8012fe8: e895 000c ldmia.w r5, {r2, r3} + 8012fec: 4631 mov r1, r6 + 8012fee: 4620 mov r0, r4 + 8012ff0: f7ff ffb8 bl 8012f64 <GetDutyCycle> + 8012ff4: 4605 mov r5, r0 + if( joined == false ) + 8012ff6: 2e00 cmp r6, #0 + 8012ff8: d14c bne.n 8013094 <SetMaxTimeCredits+0xd4> + if( dutyCycle == BACKOFF_DC_1_HOUR ) + 8012ffa: 2864 cmp r0, #100 ; 0x64 + 8012ffc: d025 beq.n 801304a <SetMaxTimeCredits+0x8a> + else if( dutyCycle == BACKOFF_DC_10_HOURS ) + 8012ffe: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8 + 8013002: d025 beq.n 8013050 <SetMaxTimeCredits+0x90> + maxCredits = DUTY_CYCLE_TIME_PERIOD * 24; + 8013004: 4e27 ldr r6, [pc, #156] ; (80130a4 <SetMaxTimeCredits+0xe4>) + timeDiff = SysTimeSub( elapsedTimeSinceStartup, SysTimeFromMs( band->LastMaxCreditAssignTime ) ); + 8013006: 68a1 ldr r1, [r4, #8] + 8013008: a806 add r0, sp, #24 + 801300a: f004 f851 bl 80170b0 <SysTimeFromMs> + 801300e: 9b07 ldr r3, [sp, #28] + 8013010: 9300 str r3, [sp, #0] + 8013012: 9b06 ldr r3, [sp, #24] + 8013014: aa02 add r2, sp, #8 + 8013016: ca06 ldmia r2, {r1, r2} + 8013018: a804 add r0, sp, #16 + 801301a: f003 ffb0 bl 8016f7e <SysTimeSub> + if( ( ( dutyCycleEnabled == false ) && ( lastTxIsJoinRequest == false ) ) || + 801301e: f1b8 0f00 cmp.w r8, #0 + 8013022: d102 bne.n 801302a <SetMaxTimeCredits+0x6a> + 8013024: f1b9 0f00 cmp.w r9, #0 + 8013028: d002 beq.n 8013030 <SetMaxTimeCredits+0x70> + ( band->MaxTimeCredits != maxCredits ) || + 801302a: 6923 ldr r3, [r4, #16] + if( ( ( dutyCycleEnabled == false ) && ( lastTxIsJoinRequest == false ) ) || + 801302c: 42b3 cmp r3, r6 + 801302e: d012 beq.n 8013056 <SetMaxTimeCredits+0x96> + band->TimeCredits = maxCredits; + 8013030: 60e6 str r6, [r4, #12] + if( elapsedTimeSinceStartup.Seconds >= BACKOFF_DUTY_CYCLE_24_HOURS_IN_S ) + 8013032: 9b02 ldr r3, [sp, #8] + 8013034: 4a1c ldr r2, [pc, #112] ; (80130a8 <SetMaxTimeCredits+0xe8>) + 8013036: 4293 cmp r3, r2 + 8013038: d812 bhi.n 8013060 <SetMaxTimeCredits+0xa0> + if( band->LastBandUpdateTime == 0 ) + 801303a: 6863 ldr r3, [r4, #4] + 801303c: b903 cbnz r3, 8013040 <SetMaxTimeCredits+0x80> + band->TimeCredits = maxCredits; + 801303e: 60e6 str r6, [r4, #12] + band->MaxTimeCredits = maxCredits; + 8013040: 6126 str r6, [r4, #16] +} + 8013042: 4628 mov r0, r5 + 8013044: b009 add sp, #36 ; 0x24 + 8013046: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + band->LastMaxCreditAssignTime = elapsedTime; + 801304a: 60a7 str r7, [r4, #8] + maxCredits = DUTY_CYCLE_TIME_PERIOD; + 801304c: 4e17 ldr r6, [pc, #92] ; (80130ac <SetMaxTimeCredits+0xec>) + 801304e: e7da b.n 8013006 <SetMaxTimeCredits+0x46> + band->LastMaxCreditAssignTime = elapsedTime; + 8013050: 60a7 str r7, [r4, #8] + maxCredits = DUTY_CYCLE_TIME_PERIOD * 10; + 8013052: 4e17 ldr r6, [pc, #92] ; (80130b0 <SetMaxTimeCredits+0xf0>) + 8013054: e7d7 b.n 8013006 <SetMaxTimeCredits+0x46> + ( band->MaxTimeCredits != maxCredits ) || + 8013056: 9a04 ldr r2, [sp, #16] + 8013058: 4b16 ldr r3, [pc, #88] ; (80130b4 <SetMaxTimeCredits+0xf4>) + 801305a: 429a cmp r2, r3 + 801305c: d9ed bls.n 801303a <SetMaxTimeCredits+0x7a> + 801305e: e7e7 b.n 8013030 <SetMaxTimeCredits+0x70> + timeDiff.Seconds = ( elapsedTimeSinceStartup.Seconds - BACKOFF_DUTY_CYCLE_24_HOURS_IN_S ) / BACKOFF_24_HOURS_IN_S; + 8013060: f5a3 33f6 sub.w r3, r3, #125952 ; 0x1ec00 + 8013064: 3b30 subs r3, #48 ; 0x30 + 8013066: 4a14 ldr r2, [pc, #80] ; (80130b8 <SetMaxTimeCredits+0xf8>) + 8013068: fba2 2303 umull r2, r3, r2, r3 + 801306c: 0c1b lsrs r3, r3, #16 + 801306e: 9304 str r3, [sp, #16] + timeDiff.Seconds *= BACKOFF_24_HOURS_IN_S; + 8013070: 4a12 ldr r2, [pc, #72] ; (80130bc <SetMaxTimeCredits+0xfc>) + 8013072: fb02 f303 mul.w r3, r2, r3 + 8013076: 9304 str r3, [sp, #16] + timeDiff.Seconds += BACKOFF_DUTY_CYCLE_24_HOURS_IN_S; + 8013078: f503 33f6 add.w r3, r3, #125952 ; 0x1ec00 + 801307c: 3330 adds r3, #48 ; 0x30 + 801307e: 9304 str r3, [sp, #16] + timeDiff.SubSeconds = 0; + 8013080: 2300 movs r3, #0 + 8013082: f8ad 3014 strh.w r3, [sp, #20] + band->LastMaxCreditAssignTime = SysTimeToMs( timeDiff ); + 8013086: ab04 add r3, sp, #16 + 8013088: e893 0003 ldmia.w r3, {r0, r1} + 801308c: f003 fff0 bl 8017070 <SysTimeToMs> + 8013090: 60a0 str r0, [r4, #8] + 8013092: e7d2 b.n 801303a <SetMaxTimeCredits+0x7a> + if( dutyCycleEnabled == false ) + 8013094: f1b8 0f00 cmp.w r8, #0 + 8013098: d102 bne.n 80130a0 <SetMaxTimeCredits+0xe0> + band->TimeCredits = maxCredits; + 801309a: 4e04 ldr r6, [pc, #16] ; (80130ac <SetMaxTimeCredits+0xec>) + 801309c: 60e6 str r6, [r4, #12] + 801309e: e7cc b.n 801303a <SetMaxTimeCredits+0x7a> + TimerTime_t maxCredits = DUTY_CYCLE_TIME_PERIOD; + 80130a0: 4e02 ldr r6, [pc, #8] ; (80130ac <SetMaxTimeCredits+0xec>) + 80130a2: e7ca b.n 801303a <SetMaxTimeCredits+0x7a> + 80130a4: 02932e00 .word 0x02932e00 + 80130a8: 0001ec2f .word 0x0001ec2f + 80130ac: 001b7740 .word 0x001b7740 + 80130b0: 0112a880 .word 0x0112a880 + 80130b4: 0001517f .word 0x0001517f + 80130b8: c22e4507 .word 0xc22e4507 + 80130bc: 00015180 .word 0x00015180 + +080130c0 <UpdateTimeCredits>: +{ + 80130c0: b570 push {r4, r5, r6, lr} + 80130c2: b082 sub sp, #8 + 80130c4: 4604 mov r4, r0 + 80130c6: 460e mov r6, r1 + uint16_t dutyCycle = SetMaxTimeCredits( band, joined, elapsedTimeSinceStartup, + 80130c8: 9301 str r3, [sp, #4] + 80130ca: 9200 str r2, [sp, #0] + 80130cc: ab06 add r3, sp, #24 + 80130ce: cb0c ldmia r3, {r2, r3} + 80130d0: f7ff ff76 bl 8012fc0 <SetMaxTimeCredits> + 80130d4: 4605 mov r5, r0 + if( joined == true ) + 80130d6: b94e cbnz r6, 80130ec <UpdateTimeCredits+0x2c> + if( band->TimeCredits > band->MaxTimeCredits ) + 80130d8: 68e2 ldr r2, [r4, #12] + 80130da: 6923 ldr r3, [r4, #16] + 80130dc: 429a cmp r2, r3 + 80130de: d900 bls.n 80130e2 <UpdateTimeCredits+0x22> + band->TimeCredits = band->MaxTimeCredits; + 80130e0: 60e3 str r3, [r4, #12] + band->LastBandUpdateTime = currentTime; + 80130e2: 9b08 ldr r3, [sp, #32] + 80130e4: 6063 str r3, [r4, #4] +} + 80130e6: 4628 mov r0, r5 + 80130e8: b002 add sp, #8 + 80130ea: bd70 pop {r4, r5, r6, pc} + band->TimeCredits += TimerGetElapsedTime( band->LastBandUpdateTime ); + 80130ec: 6860 ldr r0, [r4, #4] + 80130ee: f004 f83f bl 8017170 <UTIL_TIMER_GetElapsedTime> + 80130f2: 68e3 ldr r3, [r4, #12] + 80130f4: 4403 add r3, r0 + 80130f6: 60e3 str r3, [r4, #12] + 80130f8: e7ee b.n 80130d8 <UpdateTimeCredits+0x18> + +080130fa <RegionCommonValueInRange>: + return false; +} + +uint8_t RegionCommonValueInRange( int8_t value, int8_t min, int8_t max ) +{ + if( ( value >= min ) && ( value <= max ) ) + 80130fa: 4288 cmp r0, r1 + 80130fc: db03 blt.n 8013106 <RegionCommonValueInRange+0xc> + 80130fe: 4290 cmp r0, r2 + 8013100: dd03 ble.n 801310a <RegionCommonValueInRange+0x10> + { + return 1; + } + return 0; + 8013102: 2000 movs r0, #0 + 8013104: 4770 bx lr + 8013106: 2000 movs r0, #0 + 8013108: 4770 bx lr + return 1; + 801310a: 2001 movs r0, #1 +} + 801310c: 4770 bx lr + +0801310e <RegionCommonChanVerifyDr>: +{ + 801310e: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8013112: 4682 mov sl, r0 + 8013114: 460e mov r6, r1 + 8013116: 4690 mov r8, r2 + 8013118: f8dd 9024 ldr.w r9, [sp, #36] ; 0x24 + if( RegionCommonValueInRange( dr, minDr, maxDr ) == 0 ) + 801311c: f99d 2020 ldrsb.w r2, [sp, #32] + 8013120: 4619 mov r1, r3 + 8013122: 4640 mov r0, r8 + 8013124: f7ff ffe9 bl 80130fa <RegionCommonValueInRange> + 8013128: b338 cbz r0, 801317a <RegionCommonChanVerifyDr+0x6c> + for( uint8_t i = 0, k = 0; i < nbChannels; i += 16, k++ ) + 801312a: 2500 movs r5, #0 + 801312c: 462f mov r7, r5 + 801312e: e01e b.n 801316e <RegionCommonChanVerifyDr+0x60> + for( uint8_t j = 0; j < 16; j++ ) + 8013130: 3401 adds r4, #1 + 8013132: b2e4 uxtb r4, r4 + 8013134: 2c0f cmp r4, #15 + 8013136: d816 bhi.n 8013166 <RegionCommonChanVerifyDr+0x58> + if( ( ( channelsMask[k] & ( 1 << j ) ) != 0 ) ) + 8013138: f836 3015 ldrh.w r3, [r6, r5, lsl #1] + 801313c: 4123 asrs r3, r4 + 801313e: f013 0f01 tst.w r3, #1 + 8013142: d0f5 beq.n 8013130 <RegionCommonChanVerifyDr+0x22> + if( RegionCommonValueInRange( dr, ( channels[i + j].DrRange.Fields.Min & 0x0F ), + 8013144: 193b adds r3, r7, r4 + 8013146: eb03 0343 add.w r3, r3, r3, lsl #1 + 801314a: eb09 0383 add.w r3, r9, r3, lsl #2 + 801314e: 7a19 ldrb r1, [r3, #8] + 8013150: 090a lsrs r2, r1, #4 + 8013152: f001 010f and.w r1, r1, #15 + 8013156: 4640 mov r0, r8 + 8013158: f7ff ffcf bl 80130fa <RegionCommonValueInRange> + 801315c: 2801 cmp r0, #1 + 801315e: d1e7 bne.n 8013130 <RegionCommonChanVerifyDr+0x22> + return true; + 8013160: 2001 movs r0, #1 +} + 8013162: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + for( uint8_t i = 0, k = 0; i < nbChannels; i += 16, k++ ) + 8013166: 3710 adds r7, #16 + 8013168: b2ff uxtb r7, r7 + 801316a: 3501 adds r5, #1 + 801316c: b2ed uxtb r5, r5 + 801316e: 4557 cmp r7, sl + 8013170: d201 bcs.n 8013176 <RegionCommonChanVerifyDr+0x68> + for( uint8_t j = 0; j < 16; j++ ) + 8013172: 2400 movs r4, #0 + 8013174: e7de b.n 8013134 <RegionCommonChanVerifyDr+0x26> + return false; + 8013176: 2000 movs r0, #0 + 8013178: e7f3 b.n 8013162 <RegionCommonChanVerifyDr+0x54> + return false; + 801317a: 2000 movs r0, #0 + 801317c: e7f1 b.n 8013162 <RegionCommonChanVerifyDr+0x54> + +0801317e <RegionCommonChanDisable>: + +bool RegionCommonChanDisable( uint16_t* channelsMask, uint8_t id, uint8_t maxChannels ) +{ + uint8_t index = id / 16; + + if( ( index > ( maxChannels / 16 ) ) || ( id >= maxChannels ) ) + 801317e: 0913 lsrs r3, r2, #4 + 8013180: ebb3 1f11 cmp.w r3, r1, lsr #4 + 8013184: d313 bcc.n 80131ae <RegionCommonChanDisable+0x30> +{ + 8013186: b500 push {lr} + 8013188: 4684 mov ip, r0 + 801318a: ea4f 1e11 mov.w lr, r1, lsr #4 + if( ( index > ( maxChannels / 16 ) ) || ( id >= maxChannels ) ) + 801318e: 4291 cmp r1, r2 + 8013190: d20f bcs.n 80131b2 <RegionCommonChanDisable+0x34> + { + return false; + } + + // Deactivate channel + channelsMask[index] &= ~( 1 << ( id % 16 ) ); + 8013192: f001 030f and.w r3, r1, #15 + 8013196: 2001 movs r0, #1 + 8013198: fa00 f303 lsl.w r3, r0, r3 + 801319c: 43db mvns r3, r3 + 801319e: b21b sxth r3, r3 + 80131a0: f83c 201e ldrh.w r2, [ip, lr, lsl #1] + 80131a4: 4013 ands r3, r2 + 80131a6: f82c 301e strh.w r3, [ip, lr, lsl #1] + + return true; +} + 80131aa: f85d fb04 ldr.w pc, [sp], #4 + return false; + 80131ae: 2000 movs r0, #0 +} + 80131b0: 4770 bx lr + return false; + 80131b2: 2000 movs r0, #0 + 80131b4: e7f9 b.n 80131aa <RegionCommonChanDisable+0x2c> + +080131b6 <RegionCommonCountChannels>: + +uint8_t RegionCommonCountChannels( uint16_t* channelsMask, uint8_t startIdx, uint8_t stopIdx ) +{ + 80131b6: b5f8 push {r3, r4, r5, r6, r7, lr} + uint8_t nbChannels = 0; + + if( channelsMask == NULL ) + 80131b8: b188 cbz r0, 80131de <RegionCommonCountChannels+0x28> + 80131ba: 460c mov r4, r1 + 80131bc: 4616 mov r6, r2 + 80131be: 4607 mov r7, r0 + uint8_t nbChannels = 0; + 80131c0: 2500 movs r5, #0 + 80131c2: e008 b.n 80131d6 <RegionCommonCountChannels+0x20> + return 0; + } + + for( uint8_t i = startIdx; i < stopIdx; i++ ) + { + nbChannels += CountChannels( channelsMask[i], 16 ); + 80131c4: 2110 movs r1, #16 + 80131c6: f837 0014 ldrh.w r0, [r7, r4, lsl #1] + 80131ca: f7ff fee8 bl 8012f9e <CountChannels> + 80131ce: 4405 add r5, r0 + 80131d0: b2ed uxtb r5, r5 + for( uint8_t i = startIdx; i < stopIdx; i++ ) + 80131d2: 3401 adds r4, #1 + 80131d4: b2e4 uxtb r4, r4 + 80131d6: 42b4 cmp r4, r6 + 80131d8: d3f4 bcc.n 80131c4 <RegionCommonCountChannels+0xe> + } + + return nbChannels; +} + 80131da: 4628 mov r0, r5 + 80131dc: bdf8 pop {r3, r4, r5, r6, r7, pc} + return 0; + 80131de: 2500 movs r5, #0 + 80131e0: e7fb b.n 80131da <RegionCommonCountChannels+0x24> + +080131e2 <RegionCommonChanMaskCopy>: + +void RegionCommonChanMaskCopy( uint16_t* channelsMaskDest, uint16_t* channelsMaskSrc, uint8_t len ) +{ + if( ( channelsMaskDest != NULL ) && ( channelsMaskSrc != NULL ) ) + 80131e2: 4684 mov ip, r0 + 80131e4: b158 cbz r0, 80131fe <RegionCommonChanMaskCopy+0x1c> + 80131e6: b109 cbz r1, 80131ec <RegionCommonChanMaskCopy+0xa> + { + for( uint8_t i = 0; i < len; i++ ) + 80131e8: 2300 movs r3, #0 + 80131ea: e006 b.n 80131fa <RegionCommonChanMaskCopy+0x18> + 80131ec: 4770 bx lr + { + channelsMaskDest[i] = channelsMaskSrc[i]; + 80131ee: f831 0013 ldrh.w r0, [r1, r3, lsl #1] + 80131f2: f82c 0013 strh.w r0, [ip, r3, lsl #1] + for( uint8_t i = 0; i < len; i++ ) + 80131f6: 3301 adds r3, #1 + 80131f8: b2db uxtb r3, r3 + 80131fa: 4293 cmp r3, r2 + 80131fc: d3f7 bcc.n 80131ee <RegionCommonChanMaskCopy+0xc> + } + } +} + 80131fe: 4770 bx lr + +08013200 <RegionCommonSetBandTxDone>: + +void RegionCommonSetBandTxDone( Band_t* band, TimerTime_t lastTxAirTime, bool joined, SysTime_t elapsedTimeSinceStartup ) +{ + 8013200: b082 sub sp, #8 + 8013202: b538 push {r3, r4, r5, lr} + 8013204: 4604 mov r4, r0 + 8013206: 460d mov r5, r1 + 8013208: 4611 mov r1, r2 + 801320a: aa04 add r2, sp, #16 + 801320c: f842 3f04 str.w r3, [r2, #4]! + // Get the band duty cycle. If not joined, the function either returns the join duty cycle + // or the band duty cycle, whichever is more restrictive. + uint16_t dutyCycle = GetDutyCycle( band, joined, elapsedTimeSinceStartup ); + 8013210: ca0c ldmia r2, {r2, r3} + 8013212: f7ff fea7 bl 8012f64 <GetDutyCycle> + + // Reduce with transmission time + if( band->TimeCredits > ( lastTxAirTime * dutyCycle ) ) + 8013216: 68e3 ldr r3, [r4, #12] + 8013218: fb05 f100 mul.w r1, r5, r0 + 801321c: 428b cmp r3, r1 + 801321e: d905 bls.n 801322c <RegionCommonSetBandTxDone+0x2c> + { + // Reduce time credits by the time of air + band->TimeCredits -= ( lastTxAirTime * dutyCycle ); + 8013220: 1a5b subs r3, r3, r1 + 8013222: 60e3 str r3, [r4, #12] + } + else + { + band->TimeCredits = 0; + } +} + 8013224: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 8013228: b002 add sp, #8 + 801322a: 4770 bx lr + band->TimeCredits = 0; + 801322c: 2300 movs r3, #0 + 801322e: 60e3 str r3, [r4, #12] +} + 8013230: e7f8 b.n 8013224 <RegionCommonSetBandTxDone+0x24> + ... + +08013234 <RegionCommonUpdateBandTimeOff>: + +TimerTime_t RegionCommonUpdateBandTimeOff( bool joined, Band_t* bands, + uint8_t nbBands, bool dutyCycleEnabled, + bool lastTxIsJoinRequest, SysTime_t elapsedTimeSinceStartup, + TimerTime_t expectedTimeOnAir ) +{ + 8013234: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8013238: b089 sub sp, #36 ; 0x24 + 801323a: 4607 mov r7, r0 + 801323c: 468b mov fp, r1 + 801323e: 4691 mov r9, r2 + 8013240: 4698 mov r8, r3 + 8013242: f89d a048 ldrb.w sl, [sp, #72] ; 0x48 + TimerTime_t minTimeToWait = TIMERTIME_T_MAX; + TimerTime_t currentTime = TimerGetCurrentTime( ); + 8013246: f003 ff89 bl 801715c <UTIL_TIMER_GetCurrentTime> + 801324a: 9004 str r0, [sp, #16] + TimerTime_t creditCosts = 0; + uint16_t dutyCycle = 1; + uint8_t validBands = 0; + + for( uint8_t i = 0; i < nbBands; i++ ) + 801324c: 2400 movs r4, #0 + uint8_t validBands = 0; + 801324e: 4626 mov r6, r4 + TimerTime_t minTimeToWait = TIMERTIME_T_MAX; + 8013250: f04f 33ff mov.w r3, #4294967295 + 8013254: 9305 str r3, [sp, #20] + for( uint8_t i = 0; i < nbBands; i++ ) + 8013256: e005 b.n 8013264 <RegionCommonUpdateBandTimeOff+0x30> + // when the duty cycle is off, or the TimeCredits of the band + // is higher than the credit costs for the transmission. + if( ( bands[i].TimeCredits >= creditCosts ) || + ( ( dutyCycleEnabled == false ) && ( joined == true ) ) ) + { + bands[i].ReadyForTransmission = true; + 8013258: 2301 movs r3, #1 + 801325a: 752b strb r3, [r5, #20] + // This band is a potential candidate for an + // upcoming transmission, so increase the counter. + validBands++; + 801325c: 441e add r6, r3 + 801325e: b2f6 uxtb r6, r6 + for( uint8_t i = 0; i < nbBands; i++ ) + 8013260: 3401 adds r4, #1 + 8013262: b2e4 uxtb r4, r4 + 8013264: 454c cmp r4, r9 + 8013266: d25d bcs.n 8013324 <RegionCommonUpdateBandTimeOff+0xf0> + dutyCycle = UpdateTimeCredits( &bands[i], joined, dutyCycleEnabled, + 8013268: eb04 0544 add.w r5, r4, r4, lsl #1 + 801326c: eb0b 05c5 add.w r5, fp, r5, lsl #3 + 8013270: 9b04 ldr r3, [sp, #16] + 8013272: 9302 str r3, [sp, #8] + 8013274: ab13 add r3, sp, #76 ; 0x4c + 8013276: e893 0003 ldmia.w r3, {r0, r1} + 801327a: e88d 0003 stmia.w sp, {r0, r1} + 801327e: 4653 mov r3, sl + 8013280: 4642 mov r2, r8 + 8013282: 4639 mov r1, r7 + 8013284: 4628 mov r0, r5 + 8013286: f7ff ff1b bl 80130c0 <UpdateTimeCredits> + creditCosts = expectedTimeOnAir * dutyCycle; + 801328a: 9b15 ldr r3, [sp, #84] ; 0x54 + 801328c: fb03 f300 mul.w r3, r3, r0 + if( ( bands[i].TimeCredits >= creditCosts ) || + 8013290: 68ea ldr r2, [r5, #12] + 8013292: 429a cmp r2, r3 + 8013294: d2e0 bcs.n 8013258 <RegionCommonUpdateBandTimeOff+0x24> + 8013296: f1b8 0f00 cmp.w r8, #0 + 801329a: d101 bne.n 80132a0 <RegionCommonUpdateBandTimeOff+0x6c> + ( ( dutyCycleEnabled == false ) && ( joined == true ) ) ) + 801329c: 2f00 cmp r7, #0 + 801329e: d1db bne.n 8013258 <RegionCommonUpdateBandTimeOff+0x24> + } + else + { + // In this case, the band has not enough credits + // for the next transmission. + bands[i].ReadyForTransmission = false; + 80132a0: 2100 movs r1, #0 + 80132a2: 7529 strb r1, [r5, #20] + + if( bands[i].MaxTimeCredits >= creditCosts ) + 80132a4: 6929 ldr r1, [r5, #16] + 80132a6: 4299 cmp r1, r3 + 80132a8: d307 bcc.n 80132ba <RegionCommonUpdateBandTimeOff+0x86> + // The band can only be taken into account, if the maximum credits + // of the band are higher than the credit costs. + // We calculate the minTimeToWait among the bands which are not + // ready for transmission and which are potentially available + // for a transmission in the future. + minTimeToWait = MIN( minTimeToWait, ( creditCosts - bands[i].TimeCredits ) ); + 80132aa: 1a9b subs r3, r3, r2 + 80132ac: 9a05 ldr r2, [sp, #20] + 80132ae: 429a cmp r2, r3 + 80132b0: bf28 it cs + 80132b2: 461a movcs r2, r3 + 80132b4: 9205 str r2, [sp, #20] + // This band is a potential candidate for an + // upcoming transmission (even if its time credits are not enough + // at the moment), so increase the counter. + validBands++; + 80132b6: 3601 adds r6, #1 + 80132b8: b2f6 uxtb r6, r6 + } + + // Apply a special calculation if the device is not joined. + if( joined == false ) + 80132ba: 2f00 cmp r7, #0 + 80132bc: d1d0 bne.n 8013260 <RegionCommonUpdateBandTimeOff+0x2c> + { + SysTime_t backoffTimeRange = { + 80132be: 2300 movs r3, #0 + 80132c0: 9306 str r3, [sp, #24] + 80132c2: f8ad 301c strh.w r3, [sp, #28] + .Seconds = 0, + .SubSeconds = 0, + }; + // Get the backoff time range based on the duty cycle definition + if( dutyCycle == BACKOFF_DC_1_HOUR ) + 80132c6: 2864 cmp r0, #100 ; 0x64 + 80132c8: d024 beq.n 8013314 <RegionCommonUpdateBandTimeOff+0xe0> + { + backoffTimeRange.Seconds = BACKOFF_DUTY_CYCLE_1_HOUR_IN_S; + } + else if( dutyCycle == BACKOFF_DC_10_HOURS ) + 80132ca: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8 + 80132ce: d025 beq.n 801331c <RegionCommonUpdateBandTimeOff+0xe8> + { + backoffTimeRange.Seconds = BACKOFF_DUTY_CYCLE_10_HOURS_IN_S; + } + else + { + backoffTimeRange.Seconds = BACKOFF_DUTY_CYCLE_24_HOURS_IN_S; + 80132d0: 4b19 ldr r3, [pc, #100] ; (8013338 <RegionCommonUpdateBandTimeOff+0x104>) + 80132d2: 9306 str r3, [sp, #24] + } + // Calculate the time to wait. + if( elapsedTimeSinceStartup.Seconds > BACKOFF_DUTY_CYCLE_24_HOURS_IN_S ) + 80132d4: 9b13 ldr r3, [sp, #76] ; 0x4c + 80132d6: 4a18 ldr r2, [pc, #96] ; (8013338 <RegionCommonUpdateBandTimeOff+0x104>) + 80132d8: 4293 cmp r3, r2 + 80132da: d90c bls.n 80132f6 <RegionCommonUpdateBandTimeOff+0xc2> + { + backoffTimeRange.Seconds += BACKOFF_24_HOURS_IN_S * ( ( ( elapsedTimeSinceStartup.Seconds - BACKOFF_DUTY_CYCLE_24_HOURS_IN_S ) / BACKOFF_24_HOURS_IN_S ) + 1 ); + 80132dc: f5a3 33f6 sub.w r3, r3, #125952 ; 0x1ec00 + 80132e0: 3b30 subs r3, #48 ; 0x30 + 80132e2: 4a16 ldr r2, [pc, #88] ; (801333c <RegionCommonUpdateBandTimeOff+0x108>) + 80132e4: fba2 2303 umull r2, r3, r2, r3 + 80132e8: 0c1b lsrs r3, r3, #16 + 80132ea: 4a15 ldr r2, [pc, #84] ; (8013340 <RegionCommonUpdateBandTimeOff+0x10c>) + 80132ec: fb03 2202 mla r2, r3, r2, r2 + 80132f0: 9b06 ldr r3, [sp, #24] + 80132f2: 4413 add r3, r2 + 80132f4: 9306 str r3, [sp, #24] + } + // Calculate the time difference between now and the next range + backoffTimeRange = SysTimeSub( backoffTimeRange, elapsedTimeSinceStartup ); + 80132f6: ad06 add r5, sp, #24 + 80132f8: 9b14 ldr r3, [sp, #80] ; 0x50 + 80132fa: 9300 str r3, [sp, #0] + 80132fc: 9b13 ldr r3, [sp, #76] ; 0x4c + 80132fe: e895 0006 ldmia.w r5, {r1, r2} + 8013302: 4628 mov r0, r5 + 8013304: f003 fe3b bl 8016f7e <SysTimeSub> + minTimeToWait = SysTimeToMs( backoffTimeRange ); + 8013308: e895 0003 ldmia.w r5, {r0, r1} + 801330c: f003 feb0 bl 8017070 <SysTimeToMs> + 8013310: 9005 str r0, [sp, #20] + 8013312: e7a5 b.n 8013260 <RegionCommonUpdateBandTimeOff+0x2c> + backoffTimeRange.Seconds = BACKOFF_DUTY_CYCLE_1_HOUR_IN_S; + 8013314: f44f 6361 mov.w r3, #3600 ; 0xe10 + 8013318: 9306 str r3, [sp, #24] + 801331a: e7db b.n 80132d4 <RegionCommonUpdateBandTimeOff+0xa0> + backoffTimeRange.Seconds = BACKOFF_DUTY_CYCLE_10_HOURS_IN_S; + 801331c: f649 23b0 movw r3, #39600 ; 0x9ab0 + 8013320: 9306 str r3, [sp, #24] + 8013322: e7d7 b.n 80132d4 <RegionCommonUpdateBandTimeOff+0xa0> + } + } + } + + if( validBands == 0 ) + 8013324: b11e cbz r6, 801332e <RegionCommonUpdateBandTimeOff+0xfa> + // There is no valid band available to handle a transmission + // in the given DUTY_CYCLE_TIME_PERIOD. + return TIMERTIME_T_MAX; + } + return minTimeToWait; +} + 8013326: 9805 ldr r0, [sp, #20] + 8013328: b009 add sp, #36 ; 0x24 + 801332a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + return TIMERTIME_T_MAX; + 801332e: f04f 33ff mov.w r3, #4294967295 + 8013332: 9305 str r3, [sp, #20] + 8013334: e7f7 b.n 8013326 <RegionCommonUpdateBandTimeOff+0xf2> + 8013336: bf00 nop + 8013338: 0001ec30 .word 0x0001ec30 + 801333c: c22e4507 .word 0xc22e4507 + 8013340: 00015180 .word 0x00015180 + +08013344 <RegionCommonParseLinkAdrReq>: + +uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, RegionCommonLinkAdrParams_t* linkAdrParams ) +{ + uint8_t retIndex = 0; + + if( payload[0] == SRV_MAC_LINK_ADR_REQ ) + 8013344: 7803 ldrb r3, [r0, #0] + 8013346: 2b03 cmp r3, #3 + 8013348: d001 beq.n 801334e <RegionCommonParseLinkAdrReq+0xa> + uint8_t retIndex = 0; + 801334a: 2000 movs r0, #0 + + // LinkAdrReq has 4 bytes length + 1 byte CMD + retIndex = 5; + } + return retIndex; +} + 801334c: 4770 bx lr + linkAdrParams->Datarate = payload[1]; + 801334e: 7842 ldrb r2, [r0, #1] + 8013350: f990 3001 ldrsb.w r3, [r0, #1] + 8013354: 704b strb r3, [r1, #1] + linkAdrParams->TxPower = linkAdrParams->Datarate & 0x0F; + 8013356: f003 030f and.w r3, r3, #15 + 801335a: 708b strb r3, [r1, #2] + linkAdrParams->Datarate = ( linkAdrParams->Datarate >> 4 ) & 0x0F; + 801335c: 0913 lsrs r3, r2, #4 + 801335e: 704b strb r3, [r1, #1] + linkAdrParams->ChMask = ( uint16_t )payload[2]; + 8013360: 7883 ldrb r3, [r0, #2] + 8013362: 808b strh r3, [r1, #4] + linkAdrParams->ChMask |= ( uint16_t )payload[3] << 8; + 8013364: 78c2 ldrb r2, [r0, #3] + 8013366: ea43 2302 orr.w r3, r3, r2, lsl #8 + 801336a: 808b strh r3, [r1, #4] + linkAdrParams->NbRep = payload[4]; + 801336c: 7903 ldrb r3, [r0, #4] + 801336e: 700b strb r3, [r1, #0] + linkAdrParams->ChMaskCtrl = ( linkAdrParams->NbRep >> 4 ) & 0x07; + 8013370: f3c3 1202 ubfx r2, r3, #4, #3 + 8013374: 70ca strb r2, [r1, #3] + linkAdrParams->NbRep &= 0x0F; + 8013376: f003 030f and.w r3, r3, #15 + 801337a: 700b strb r3, [r1, #0] + retIndex = 5; + 801337c: 2005 movs r0, #5 + 801337e: 4770 bx lr + +08013380 <RegionCommonLinkAdrReqVerifyParams>: + +uint8_t RegionCommonLinkAdrReqVerifyParams( RegionCommonLinkAdrReqVerifyParams_t* verifyParams, int8_t* dr, int8_t* txPow, uint8_t* nbRep ) +{ + 8013380: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8013384: b085 sub sp, #20 + 8013386: 4604 mov r4, r0 + 8013388: 4688 mov r8, r1 + 801338a: 4617 mov r7, r2 + 801338c: 461e mov r6, r3 + uint8_t status = verifyParams->Status; + 801338e: 7905 ldrb r5, [r0, #4] + int8_t datarate = verifyParams->Datarate; + 8013390: f990 a006 ldrsb.w sl, [r0, #6] + int8_t txPower = verifyParams->TxPower; + 8013394: f990 9007 ldrsb.w r9, [r0, #7] + int8_t nbRepetitions = verifyParams->NbRep; + 8013398: f990 b008 ldrsb.w fp, [r0, #8] + + // Handle the case when ADR is off. + if( verifyParams->AdrEnabled == false ) + 801339c: 7943 ldrb r3, [r0, #5] + 801339e: b92b cbnz r3, 80133ac <RegionCommonLinkAdrReqVerifyParams+0x2c> + { + // When ADR is off, we are allowed to change the channels mask + nbRepetitions = verifyParams->CurrentNbRep; + 80133a0: f990 b00b ldrsb.w fp, [r0, #11] + datarate = verifyParams->CurrentDatarate; + 80133a4: f990 a009 ldrsb.w sl, [r0, #9] + txPower = verifyParams->CurrentTxPower; + 80133a8: f990 900a ldrsb.w r9, [r0, #10] + } + + if( status != 0 ) + 80133ac: b355 cbz r5, 8013404 <RegionCommonLinkAdrReqVerifyParams+0x84> + { + // Verify datarate. The variable phyParam. Value contains the minimum allowed datarate. + if( datarate == 0x0F ) + 80133ae: f1ba 0f0f cmp.w sl, #15 + 80133b2: d114 bne.n 80133de <RegionCommonLinkAdrReqVerifyParams+0x5e> + { // 0xF means that the device MUST ignore that field, and keep the current parameter value. + datarate = verifyParams->CurrentDatarate; + 80133b4: f994 a009 ldrsb.w sl, [r4, #9] + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( txPower == 0x0F ) + 80133b8: f1b9 0f0f cmp.w r9, #15 + 80133bc: d020 beq.n 8013400 <RegionCommonLinkAdrReqVerifyParams+0x80> + { // 0xF means that the device MUST ignore that field, and keep the current parameter value. + txPower = verifyParams->CurrentTxPower; + } + else if( RegionCommonValueInRange( txPower, verifyParams->MaxTxPower, verifyParams->MinTxPower ) == 0 ) + 80133be: f994 301d ldrsb.w r3, [r4, #29] + 80133c2: 9303 str r3, [sp, #12] + 80133c4: f994 201c ldrsb.w r2, [r4, #28] + 80133c8: 461c mov r4, r3 + 80133ca: 4619 mov r1, r3 + 80133cc: 4648 mov r0, r9 + 80133ce: f7ff fe94 bl 80130fa <RegionCommonValueInRange> + 80133d2: b9b8 cbnz r0, 8013404 <RegionCommonLinkAdrReqVerifyParams+0x84> + { + // Verify if the maximum TX power is exceeded + if( verifyParams->MaxTxPower > txPower ) + 80133d4: 454c cmp r4, r9 + 80133d6: dc21 bgt.n 801341c <RegionCommonLinkAdrReqVerifyParams+0x9c> + { // Apply maximum TX power. Accept TX power. + txPower = verifyParams->MaxTxPower; + } + else + { + status &= 0xFB; // TxPower KO + 80133d8: f005 05fb and.w r5, r5, #251 ; 0xfb + 80133dc: e012 b.n 8013404 <RegionCommonLinkAdrReqVerifyParams+0x84> + else if( RegionCommonChanVerifyDr( verifyParams->NbChannels, verifyParams->ChannelsMask, datarate, + 80133de: 69a3 ldr r3, [r4, #24] + 80133e0: 9301 str r3, [sp, #4] + 80133e2: f994 3015 ldrsb.w r3, [r4, #21] + 80133e6: 9300 str r3, [sp, #0] + 80133e8: f994 3014 ldrsb.w r3, [r4, #20] + 80133ec: 4652 mov r2, sl + 80133ee: 6921 ldr r1, [r4, #16] + 80133f0: 7b20 ldrb r0, [r4, #12] + 80133f2: f7ff fe8c bl 801310e <RegionCommonChanVerifyDr> + 80133f6: 2800 cmp r0, #0 + 80133f8: d1de bne.n 80133b8 <RegionCommonLinkAdrReqVerifyParams+0x38> + status &= 0xFD; // Datarate KO + 80133fa: f005 05fd and.w r5, r5, #253 ; 0xfd + 80133fe: e7db b.n 80133b8 <RegionCommonLinkAdrReqVerifyParams+0x38> + txPower = verifyParams->CurrentTxPower; + 8013400: f994 900a ldrsb.w r9, [r4, #10] + } + } + } + + // If the status is ok, verify the NbRep + if( status == 0x07 ) + 8013404: 2d07 cmp r5, #7 + 8013406: d00c beq.n 8013422 <RegionCommonLinkAdrReqVerifyParams+0xa2> + nbRepetitions = 1; + } + } + + // Apply changes + *dr = datarate; + 8013408: f888 a000 strb.w sl, [r8] + *txPow = txPower; + 801340c: f887 9000 strb.w r9, [r7] + *nbRep = nbRepetitions; + 8013410: f886 b000 strb.w fp, [r6] + + return status; +} + 8013414: 4628 mov r0, r5 + 8013416: b005 add sp, #20 + 8013418: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + txPower = verifyParams->MaxTxPower; + 801341c: f8dd 900c ldr.w r9, [sp, #12] + 8013420: e7f0 b.n 8013404 <RegionCommonLinkAdrReqVerifyParams+0x84> + if( nbRepetitions == 0 ) + 8013422: f1bb 0f00 cmp.w fp, #0 + 8013426: d1ef bne.n 8013408 <RegionCommonLinkAdrReqVerifyParams+0x88> + nbRepetitions = 1; + 8013428: f04f 0b01 mov.w fp, #1 + 801342c: e7ec b.n 8013408 <RegionCommonLinkAdrReqVerifyParams+0x88> + ... + +08013430 <RegionCommonComputeSymbolTimeLoRa>: + +uint32_t RegionCommonComputeSymbolTimeLoRa( uint8_t phyDr, uint32_t bandwidthInHz ) +{ + return ( 1 << phyDr ) * 1000000 / bandwidthInHz; + 8013430: 4b02 ldr r3, [pc, #8] ; (801343c <RegionCommonComputeSymbolTimeLoRa+0xc>) + 8013432: fa03 f000 lsl.w r0, r3, r0 +} + 8013436: fbb0 f0f1 udiv r0, r0, r1 + 801343a: 4770 bx lr + 801343c: 000f4240 .word 0x000f4240 + +08013440 <RegionCommonComputeSymbolTimeFsk>: + +uint32_t RegionCommonComputeSymbolTimeFsk( uint8_t phyDrInKbps ) +{ + return 8000 / ( uint32_t )phyDrInKbps; // 1 symbol equals 1 byte +} + 8013440: f44f 53fa mov.w r3, #8000 ; 0x1f40 + 8013444: fbb3 f0f0 udiv r0, r3, r0 + 8013448: 4770 bx lr + ... + +0801344c <RegionCommonComputeRxWindowParameters>: + +void RegionCommonComputeRxWindowParameters( uint32_t tSymbolInUs, uint8_t minRxSymbols, uint32_t rxErrorInMs, uint32_t wakeUpTimeInMs, uint32_t* windowTimeoutInSymbols, int32_t* windowOffsetInMs ) +{ + 801344c: b500 push {lr} + *windowTimeoutInSymbols = MAX( DIV_CEIL( ( ( 2 * minRxSymbols - 8 ) * tSymbolInUs + 2 * ( rxErrorInMs * 1000 ) ), tSymbolInUs ), minRxSymbols ); // Computed number of symbols + 801344e: f1a1 0c04 sub.w ip, r1, #4 + 8013452: f44f 7e7a mov.w lr, #1000 ; 0x3e8 + 8013456: fb0e f202 mul.w r2, lr, r2 + 801345a: fb00 220c mla r2, r0, ip, r2 + 801345e: 0052 lsls r2, r2, #1 + 8013460: d021 beq.n 80134a6 <RegionCommonComputeRxWindowParameters+0x5a> + 8013462: 4402 add r2, r0 + 8013464: 3a01 subs r2, #1 + 8013466: fbb2 f2f0 udiv r2, r2, r0 + 801346a: 4291 cmp r1, r2 + 801346c: bf38 it cc + 801346e: 4611 movcc r1, r2 + 8013470: 9a01 ldr r2, [sp, #4] + 8013472: 6011 str r1, [r2, #0] + *windowOffsetInMs = ( int32_t )DIV_CEIL( ( int32_t )( 4 * tSymbolInUs ) - + 8013474: 0082 lsls r2, r0, #2 + 8013476: fb01 f000 mul.w r0, r1, r0 + 801347a: b1b8 cbz r0, 80134ac <RegionCommonComputeRxWindowParameters+0x60> + 801347c: 3001 adds r0, #1 + 801347e: 0840 lsrs r0, r0, #1 + 8013480: 1a12 subs r2, r2, r0 + 8013482: f44f 717a mov.w r1, #1000 ; 0x3e8 + 8013486: fb01 2313 mls r3, r1, r3, r2 + 801348a: 2b00 cmp r3, #0 + 801348c: dd10 ble.n 80134b0 <RegionCommonComputeRxWindowParameters+0x64> + 801348e: f203 33e7 addw r3, r3, #999 ; 0x3e7 + 8013492: 4a0b ldr r2, [pc, #44] ; (80134c0 <RegionCommonComputeRxWindowParameters+0x74>) + 8013494: fb82 1203 smull r1, r2, r2, r3 + 8013498: 17db asrs r3, r3, #31 + 801349a: ebc3 13a2 rsb r3, r3, r2, asr #6 + 801349e: 9a02 ldr r2, [sp, #8] + 80134a0: 6013 str r3, [r2, #0] + ( int32_t )DIV_CEIL( ( *windowTimeoutInSymbols * tSymbolInUs ), 2 ) - + ( int32_t )( wakeUpTimeInMs * 1000 ), 1000 ); +} + 80134a2: f85d fb04 ldr.w pc, [sp], #4 + *windowTimeoutInSymbols = MAX( DIV_CEIL( ( ( 2 * minRxSymbols - 8 ) * tSymbolInUs + 2 * ( rxErrorInMs * 1000 ) ), tSymbolInUs ), minRxSymbols ); // Computed number of symbols + 80134a6: fbb2 f2f0 udiv r2, r2, r0 + 80134aa: e7de b.n 801346a <RegionCommonComputeRxWindowParameters+0x1e> + *windowOffsetInMs = ( int32_t )DIV_CEIL( ( int32_t )( 4 * tSymbolInUs ) - + 80134ac: 0840 lsrs r0, r0, #1 + 80134ae: e7e7 b.n 8013480 <RegionCommonComputeRxWindowParameters+0x34> + 80134b0: 4a03 ldr r2, [pc, #12] ; (80134c0 <RegionCommonComputeRxWindowParameters+0x74>) + 80134b2: fb82 1203 smull r1, r2, r2, r3 + 80134b6: 17db asrs r3, r3, #31 + 80134b8: ebc3 13a2 rsb r3, r3, r2, asr #6 + 80134bc: e7ef b.n 801349e <RegionCommonComputeRxWindowParameters+0x52> + 80134be: bf00 nop + 80134c0: 10624dd3 .word 0x10624dd3 + +080134c4 <RegionCommonComputeTxPower>: + +int8_t RegionCommonComputeTxPower( int8_t txPowerIndex, float maxEirp, float antennaGain ) +{ + 80134c4: b538 push {r3, r4, r5, lr} + 80134c6: 460d mov r5, r1 + 80134c8: 4614 mov r4, r2 + int8_t phyTxPower = 0; + + phyTxPower = ( int8_t )floor( ( maxEirp - ( txPowerIndex * 2U ) ) - antennaGain ); + 80134ca: 0040 lsls r0, r0, #1 + 80134cc: f7ee faa2 bl 8001a14 <__aeabi_ui2f> + 80134d0: 4601 mov r1, r0 + 80134d2: 4628 mov r0, r5 + 80134d4: f7ee f9ec bl 80018b0 <__aeabi_fsub> + 80134d8: 4621 mov r1, r4 + 80134da: f7ee f9e9 bl 80018b0 <__aeabi_fsub> + 80134de: f7ee f8db bl 8001698 <__aeabi_f2d> + 80134e2: f004 f939 bl 8017758 <floor> + 80134e6: f7ee f9b7 bl 8001858 <__aeabi_d2iz> + + return phyTxPower; +} + 80134ea: b240 sxtb r0, r0 + 80134ec: bd38 pop {r3, r4, r5, pc} + +080134ee <RegionCommonCountNbOfEnabledChannels>: + MW_LOG(TS_ON, VLEVEL_M, "RX_BC on freq %d Hz at DR %d\r\n", rxBeaconSetupParams->Frequency, rxBeaconSetupParams->BeaconDatarate ); +} + +void RegionCommonCountNbOfEnabledChannels( RegionCommonCountNbOfEnabledChannelsParams_t* countNbOfEnabledChannelsParams, + uint8_t* enabledChannels, uint8_t* nbEnabledChannels, uint8_t* nbRestrictedChannels ) +{ + 80134ee: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80134f2: b083 sub sp, #12 + 80134f4: 4605 mov r5, r0 + 80134f6: 468b mov fp, r1 + 80134f8: 9200 str r2, [sp, #0] + 80134fa: 9301 str r3, [sp, #4] + uint8_t nbChannelCount = 0; + uint8_t nbRestrictedChannelsCount = 0; + + for( uint8_t i = 0, k = 0; i < countNbOfEnabledChannelsParams->MaxNbChannels; i += 16, k++ ) + 80134fc: 2600 movs r6, #0 + 80134fe: 46b0 mov r8, r6 + uint8_t nbRestrictedChannelsCount = 0; + 8013500: 46b2 mov sl, r6 + uint8_t nbChannelCount = 0; + 8013502: 46b1 mov r9, r6 + for( uint8_t i = 0, k = 0; i < countNbOfEnabledChannelsParams->MaxNbChannels; i += 16, k++ ) + 8013504: e049 b.n 801359a <RegionCommonCountNbOfEnabledChannels+0xac> + { + continue; + } + } + if( RegionCommonValueInRange( countNbOfEnabledChannelsParams->Datarate, + countNbOfEnabledChannelsParams->Channels[i + j].DrRange.Fields.Min, + 8013506: 7a3a ldrb r2, [r7, #8] + 8013508: f342 0103 sbfx r1, r2, #0, #4 + countNbOfEnabledChannelsParams->Channels[i + j].DrRange.Fields.Max ) == false ) + 801350c: f342 1203 sbfx r2, r2, #4, #4 + if( RegionCommonValueInRange( countNbOfEnabledChannelsParams->Datarate, + 8013510: b252 sxtb r2, r2 + 8013512: b249 sxtb r1, r1 + 8013514: f995 0001 ldrsb.w r0, [r5, #1] + 8013518: f7ff fdef bl 80130fa <RegionCommonValueInRange> + 801351c: b178 cbz r0, 801353e <RegionCommonCountNbOfEnabledChannels+0x50> + { // Check if the current channel selection supports the given datarate + continue; + } + if( countNbOfEnabledChannelsParams->Bands[countNbOfEnabledChannelsParams->Channels[i + j].Band].ReadyForTransmission == false ) + 801351e: 68ea ldr r2, [r5, #12] + 8013520: 7a7b ldrb r3, [r7, #9] + 8013522: eb03 0343 add.w r3, r3, r3, lsl #1 + 8013526: eb02 02c3 add.w r2, r2, r3, lsl #3 + 801352a: 7d13 ldrb r3, [r2, #20] + 801352c: b353 cbz r3, 8013584 <RegionCommonCountNbOfEnabledChannels+0x96> + { // Check if the band is available for transmission + nbRestrictedChannelsCount++; + continue; + } + enabledChannels[nbChannelCount++] = i + j; + 801352e: f109 0301 add.w r3, r9, #1 + 8013532: eb08 0204 add.w r2, r8, r4 + 8013536: f80b 2009 strb.w r2, [fp, r9] + 801353a: fa5f f983 uxtb.w r9, r3 + for( uint8_t j = 0; j < 16; j++ ) + 801353e: 3401 adds r4, #1 + 8013540: b2e4 uxtb r4, r4 + 8013542: 2c0f cmp r4, #15 + 8013544: d823 bhi.n 801358e <RegionCommonCountNbOfEnabledChannels+0xa0> + if( ( countNbOfEnabledChannelsParams->ChannelsMask[k] & ( 1 << j ) ) != 0 ) + 8013546: 686b ldr r3, [r5, #4] + 8013548: 0072 lsls r2, r6, #1 + 801354a: f833 3016 ldrh.w r3, [r3, r6, lsl #1] + 801354e: 4123 asrs r3, r4 + 8013550: f013 0f01 tst.w r3, #1 + 8013554: d0f3 beq.n 801353e <RegionCommonCountNbOfEnabledChannels+0x50> + if( countNbOfEnabledChannelsParams->Channels[i + j].Frequency == 0 ) + 8013556: 68a8 ldr r0, [r5, #8] + 8013558: eb08 0304 add.w r3, r8, r4 + 801355c: eb03 0343 add.w r3, r3, r3, lsl #1 + 8013560: eb00 0783 add.w r7, r0, r3, lsl #2 + 8013564: f850 3023 ldr.w r3, [r0, r3, lsl #2] + 8013568: 2b00 cmp r3, #0 + 801356a: d0e8 beq.n 801353e <RegionCommonCountNbOfEnabledChannels+0x50> + if( ( countNbOfEnabledChannelsParams->Joined == false ) && + 801356c: 782b ldrb r3, [r5, #0] + 801356e: 2b00 cmp r3, #0 + 8013570: d1c9 bne.n 8013506 <RegionCommonCountNbOfEnabledChannels+0x18> + ( countNbOfEnabledChannelsParams->JoinChannels != NULL ) ) + 8013572: 696b ldr r3, [r5, #20] + if( ( countNbOfEnabledChannelsParams->Joined == false ) && + 8013574: 2b00 cmp r3, #0 + 8013576: d0c6 beq.n 8013506 <RegionCommonCountNbOfEnabledChannels+0x18> + if( ( countNbOfEnabledChannelsParams->JoinChannels[k] & ( 1 << j ) ) == 0 ) + 8013578: 5a9b ldrh r3, [r3, r2] + 801357a: 4123 asrs r3, r4 + 801357c: f013 0f01 tst.w r3, #1 + 8013580: d1c1 bne.n 8013506 <RegionCommonCountNbOfEnabledChannels+0x18> + 8013582: e7dc b.n 801353e <RegionCommonCountNbOfEnabledChannels+0x50> + nbRestrictedChannelsCount++; + 8013584: f10a 0a01 add.w sl, sl, #1 + 8013588: fa5f fa8a uxtb.w sl, sl + continue; + 801358c: e7d7 b.n 801353e <RegionCommonCountNbOfEnabledChannels+0x50> + for( uint8_t i = 0, k = 0; i < countNbOfEnabledChannelsParams->MaxNbChannels; i += 16, k++ ) + 801358e: f108 0810 add.w r8, r8, #16 + 8013592: fa5f f888 uxtb.w r8, r8 + 8013596: 3601 adds r6, #1 + 8013598: b2f6 uxtb r6, r6 + 801359a: 8a2b ldrh r3, [r5, #16] + 801359c: fa1f f288 uxth.w r2, r8 + 80135a0: 429a cmp r2, r3 + 80135a2: d201 bcs.n 80135a8 <RegionCommonCountNbOfEnabledChannels+0xba> + for( uint8_t j = 0; j < 16; j++ ) + 80135a4: 2400 movs r4, #0 + 80135a6: e7cc b.n 8013542 <RegionCommonCountNbOfEnabledChannels+0x54> + } + } + } + *nbEnabledChannels = nbChannelCount; + 80135a8: 9b00 ldr r3, [sp, #0] + 80135aa: f883 9000 strb.w r9, [r3] + *nbRestrictedChannels = nbRestrictedChannelsCount; + 80135ae: 9b01 ldr r3, [sp, #4] + 80135b0: f883 a000 strb.w sl, [r3] +} + 80135b4: b003 add sp, #12 + 80135b6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + +080135ba <RegionCommonIdentifyChannels>: + +LoRaMacStatus_t RegionCommonIdentifyChannels( RegionCommonIdentifyChannelsParam_t* identifyChannelsParam, + TimerTime_t* aggregatedTimeOff, uint8_t* enabledChannels, + uint8_t* nbEnabledChannels, uint8_t* nbRestrictedChannels, + TimerTime_t* nextTxDelay ) +{ + 80135ba: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 80135be: b085 sub sp, #20 + 80135c0: 4604 mov r4, r0 + 80135c2: 460f mov r7, r1 + 80135c4: 4616 mov r6, r2 + 80135c6: 461d mov r5, r3 + 80135c8: f8dd 8030 ldr.w r8, [sp, #48] ; 0x30 + 80135cc: f8dd 9034 ldr.w r9, [sp, #52] ; 0x34 + TimerTime_t elapsed = TimerGetElapsedTime( identifyChannelsParam->LastAggrTx ); + 80135d0: 6840 ldr r0, [r0, #4] + 80135d2: f003 fdcd bl 8017170 <UTIL_TIMER_GetElapsedTime> + *nextTxDelay = identifyChannelsParam->AggrTimeOff - elapsed; + 80135d6: 6823 ldr r3, [r4, #0] + 80135d8: 1a1b subs r3, r3, r0 + 80135da: f8c9 3000 str.w r3, [r9] + *nbRestrictedChannels = 1; + 80135de: 2301 movs r3, #1 + 80135e0: f888 3000 strb.w r3, [r8] + *nbEnabledChannels = 0; + 80135e4: 2300 movs r3, #0 + 80135e6: 702b strb r3, [r5, #0] + + if( ( identifyChannelsParam->LastAggrTx == 0 ) || + 80135e8: 6863 ldr r3, [r4, #4] + 80135ea: b113 cbz r3, 80135f2 <RegionCommonIdentifyChannels+0x38> + ( identifyChannelsParam->AggrTimeOff <= elapsed ) ) + 80135ec: 6823 ldr r3, [r4, #0] + if( ( identifyChannelsParam->LastAggrTx == 0 ) || + 80135ee: 4283 cmp r3, r0 + 80135f0: d81e bhi.n 8013630 <RegionCommonIdentifyChannels+0x76> + { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + 80135f2: 2300 movs r3, #0 + 80135f4: 603b str r3, [r7, #0] + + // Update bands Time OFF + *nextTxDelay = RegionCommonUpdateBandTimeOff( identifyChannelsParam->CountNbOfEnabledChannelsParam->Joined, + 80135f6: 69e3 ldr r3, [r4, #28] + 80135f8: f8d3 c00c ldr.w ip, [r3, #12] + 80135fc: 781f ldrb r7, [r3, #0] + 80135fe: 69a3 ldr r3, [r4, #24] + 8013600: 9303 str r3, [sp, #12] + 8013602: ab01 add r3, sp, #4 + 8013604: f104 020c add.w r2, r4, #12 + 8013608: e892 0003 ldmia.w r2, {r0, r1} + 801360c: e883 0003 stmia.w r3, {r0, r1} + 8013610: 7d23 ldrb r3, [r4, #20] + 8013612: 9300 str r3, [sp, #0] + 8013614: 7a23 ldrb r3, [r4, #8] + 8013616: 7a62 ldrb r2, [r4, #9] + 8013618: 4661 mov r1, ip + 801361a: 4638 mov r0, r7 + 801361c: f7ff fe0a bl 8013234 <RegionCommonUpdateBandTimeOff> + 8013620: f8c9 0000 str.w r0, [r9] + identifyChannelsParam->DutyCycleEnabled, + identifyChannelsParam->LastTxIsJoinRequest, + identifyChannelsParam->ElapsedTimeSinceStartUp, + identifyChannelsParam->ExpectedTimeOnAir ); + + RegionCommonCountNbOfEnabledChannels( identifyChannelsParam->CountNbOfEnabledChannelsParam, enabledChannels, + 8013624: 4643 mov r3, r8 + 8013626: 462a mov r2, r5 + 8013628: 4631 mov r1, r6 + 801362a: 69e0 ldr r0, [r4, #28] + 801362c: f7ff ff5f bl 80134ee <RegionCommonCountNbOfEnabledChannels> + nbEnabledChannels, nbRestrictedChannels ); + } + + if( *nbEnabledChannels > 0 ) + 8013630: 782b ldrb r3, [r5, #0] + 8013632: b923 cbnz r3, 801363e <RegionCommonIdentifyChannels+0x84> + { + *nextTxDelay = 0; + return LORAMAC_STATUS_OK; + } + else if( *nbRestrictedChannels > 0 ) + 8013634: f898 3000 ldrb.w r3, [r8] + 8013638: b13b cbz r3, 801364a <RegionCommonIdentifyChannels+0x90> + { + return LORAMAC_STATUS_DUTYCYCLE_RESTRICTED; + 801363a: 200b movs r0, #11 + 801363c: e002 b.n 8013644 <RegionCommonIdentifyChannels+0x8a> + *nextTxDelay = 0; + 801363e: 2000 movs r0, #0 + 8013640: f8c9 0000 str.w r0, [r9] + } + else + { + return LORAMAC_STATUS_NO_CHANNEL_FOUND; + } +} + 8013644: b005 add sp, #20 + 8013646: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + return LORAMAC_STATUS_NO_CHANNEL_FOUND; + 801364a: 200c movs r0, #12 + 801364c: e7fa b.n 8013644 <RegionCommonIdentifyChannels+0x8a> + +0801364e <RegionCommonGetNextLowerTxDr>: + +int8_t RegionCommonGetNextLowerTxDr( RegionCommonGetNextLowerTxDrParams_t *params ) +{ + 801364e: b570 push {r4, r5, r6, lr} + 8013650: b082 sub sp, #8 + 8013652: 4605 mov r5, r0 + int8_t drLocal = params->CurrentDr; + 8013654: f990 4000 ldrsb.w r4, [r0] + + if( params->CurrentDr == params->MinDr ) + 8013658: f990 6002 ldrsb.w r6, [r0, #2] + 801365c: 42a6 cmp r6, r4 + 801365e: d011 beq.n 8013684 <RegionCommonGetNextLowerTxDr+0x36> + } + else + { + do + { + drLocal = ( drLocal - 1 ); + 8013660: 3c01 subs r4, #1 + 8013662: b264 sxtb r4, r4 + } while( ( drLocal != params->MinDr ) && + 8013664: 42a6 cmp r6, r4 + 8013666: d00e beq.n 8013686 <RegionCommonGetNextLowerTxDr+0x38> + ( RegionCommonChanVerifyDr( params->NbChannels, params->ChannelsMask, drLocal, params->MinDr, params->MaxDr, params->Channels ) == false ) ); + 8013668: 68ab ldr r3, [r5, #8] + 801366a: 9301 str r3, [sp, #4] + 801366c: f995 3001 ldrsb.w r3, [r5, #1] + 8013670: 9300 str r3, [sp, #0] + 8013672: 4633 mov r3, r6 + 8013674: 4622 mov r2, r4 + 8013676: 6869 ldr r1, [r5, #4] + 8013678: 78e8 ldrb r0, [r5, #3] + 801367a: f7ff fd48 bl 801310e <RegionCommonChanVerifyDr> + } while( ( drLocal != params->MinDr ) && + 801367e: 2800 cmp r0, #0 + 8013680: d0ee beq.n 8013660 <RegionCommonGetNextLowerTxDr+0x12> + 8013682: e000 b.n 8013686 <RegionCommonGetNextLowerTxDr+0x38> + return params->MinDr; + 8013684: 4634 mov r4, r6 + + return drLocal; + } +} + 8013686: 4620 mov r0, r4 + 8013688: b002 add sp, #8 + 801368a: bd70 pop {r4, r5, r6, pc} + +0801368c <RegionCommonLimitTxPower>: + +int8_t RegionCommonLimitTxPower( int8_t txPower, int8_t maxBandTxPower ) +{ + // Limit tx power to the band max + return MAX( txPower, maxBandTxPower ); +} + 801368c: 4288 cmp r0, r1 + 801368e: bfb8 it lt + 8013690: 4608 movlt r0, r1 + 8013692: 4770 bx lr + +08013694 <RegionCommonGetBandwidth>: + +uint32_t RegionCommonGetBandwidth( uint32_t drIndex, const uint32_t* bandwidths ) +{ + switch( bandwidths[drIndex] ) + 8013694: f851 3020 ldr.w r3, [r1, r0, lsl #2] + 8013698: 4a05 ldr r2, [pc, #20] ; (80136b0 <RegionCommonGetBandwidth+0x1c>) + 801369a: 4293 cmp r3, r2 + 801369c: d004 beq.n 80136a8 <RegionCommonGetBandwidth+0x14> + 801369e: 4a05 ldr r2, [pc, #20] ; (80136b4 <RegionCommonGetBandwidth+0x20>) + 80136a0: 4293 cmp r3, r2 + 80136a2: d103 bne.n 80136ac <RegionCommonGetBandwidth+0x18> + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; + 80136a4: 2002 movs r0, #2 + 80136a6: 4770 bx lr + return 1; + 80136a8: 2001 movs r0, #1 + 80136aa: 4770 bx lr + switch( bandwidths[drIndex] ) + 80136ac: 2000 movs r0, #0 + } +} + 80136ae: 4770 bx lr + 80136b0: 0003d090 .word 0x0003d090 + 80136b4: 0007a120 .word 0x0007a120 + +080136b8 <RegionCommonRxConfigPrint>: + +void RegionCommonRxConfigPrint(LoRaMacRxSlot_t rxSlot, uint32_t frequency, int8_t dr) +{ + 80136b8: b500 push {lr} + 80136ba: b085 sub sp, #20 + if ( rxSlot < RX_SLOT_NONE ) + 80136bc: 2805 cmp r0, #5 + 80136be: d80e bhi.n 80136de <RegionCommonRxConfigPrint+0x26> + { + MW_LOG(TS_ON, VLEVEL_M, "RX_%s on freq %d Hz at DR %d\r\n", EventRXSlotStrings[rxSlot], frequency, dr ); + 80136c0: 9202 str r2, [sp, #8] + 80136c2: 9101 str r1, [sp, #4] + 80136c4: 4b0a ldr r3, [pc, #40] ; (80136f0 <RegionCommonRxConfigPrint+0x38>) + 80136c6: f853 3020 ldr.w r3, [r3, r0, lsl #2] + 80136ca: 9300 str r3, [sp, #0] + 80136cc: 4b09 ldr r3, [pc, #36] ; (80136f4 <RegionCommonRxConfigPrint+0x3c>) + 80136ce: 2201 movs r2, #1 + 80136d0: 2100 movs r1, #0 + 80136d2: 2002 movs r0, #2 + 80136d4: f003 fa30 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + } + else + { + MW_LOG(TS_ON, VLEVEL_M, "RX on freq %d Hz at DR %d\r\n", frequency, dr ); + } +} + 80136d8: b005 add sp, #20 + 80136da: f85d fb04 ldr.w pc, [sp], #4 + MW_LOG(TS_ON, VLEVEL_M, "RX on freq %d Hz at DR %d\r\n", frequency, dr ); + 80136de: 9201 str r2, [sp, #4] + 80136e0: 9100 str r1, [sp, #0] + 80136e2: 4b05 ldr r3, [pc, #20] ; (80136f8 <RegionCommonRxConfigPrint+0x40>) + 80136e4: 2201 movs r2, #1 + 80136e6: 2100 movs r1, #0 + 80136e8: 2002 movs r0, #2 + 80136ea: f003 fa25 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 80136ee: e7f3 b.n 80136d8 <RegionCommonRxConfigPrint+0x20> + 80136f0: 08018710 .word 0x08018710 + 80136f4: 080186a8 .word 0x080186a8 + 80136f8: 080186c8 .word 0x080186c8 + +080136fc <RegionCommonTxConfigPrint>: + +void RegionCommonTxConfigPrint(uint32_t frequency, int8_t dr) +{ + 80136fc: b500 push {lr} + 80136fe: b083 sub sp, #12 + MW_LOG(TS_ON, VLEVEL_M, "TX on freq %d Hz at DR %d\r\n", frequency, dr ); + 8013700: 9101 str r1, [sp, #4] + 8013702: 9000 str r0, [sp, #0] + 8013704: 4b04 ldr r3, [pc, #16] ; (8013718 <RegionCommonTxConfigPrint+0x1c>) + 8013706: 2201 movs r2, #1 + 8013708: 2100 movs r1, #0 + 801370a: 2002 movs r0, #2 + 801370c: f003 fa14 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8013710: b003 add sp, #12 + 8013712: f85d fb04 ldr.w pc, [sp], #4 + 8013716: bf00 nop + 8013718: 080186e4 .word 0x080186e4 + +0801371c <AES_CMAC_Init>: + ( r )[i] = ( r )[i] ^ ( v )[i]; \ + } \ + } while( 0 ) + +void AES_CMAC_Init( AES_CMAC_CTX* ctx ) +{ + 801371c: b510 push {r4, lr} + 801371e: 4604 mov r4, r0 + memset1( ctx->X, 0, sizeof ctx->X ); + 8013720: 2210 movs r2, #16 + 8013722: 2100 movs r1, #0 + 8013724: 30f1 adds r0, #241 ; 0xf1 + 8013726: f000 ff50 bl 80145ca <memset1> + ctx->M_n = 0; + 801372a: 2100 movs r1, #0 + 801372c: f8c4 1114 str.w r1, [r4, #276] ; 0x114 + memset1( ctx->rijndael.ksch, '\0', 240 ); + 8013730: 22f0 movs r2, #240 ; 0xf0 + 8013732: 4620 mov r0, r4 + 8013734: f000 ff49 bl 80145ca <memset1> +} + 8013738: bd10 pop {r4, pc} + +0801373a <AES_CMAC_SetKey>: + +void AES_CMAC_SetKey( AES_CMAC_CTX* ctx, const uint8_t key[AES_CMAC_KEY_LENGTH] ) +{ + 801373a: b508 push {r3, lr} + 801373c: 4602 mov r2, r0 + 801373e: 4608 mov r0, r1 + lorawan_aes_set_key( key, AES_CMAC_KEY_LENGTH, &ctx->rijndael ); + 8013740: 2110 movs r1, #16 + 8013742: f000 fb3b bl 8013dbc <lorawan_aes_set_key> +} + 8013746: bd08 pop {r3, pc} + +08013748 <AES_CMAC_Update>: + +void AES_CMAC_Update( AES_CMAC_CTX* ctx, const uint8_t* data, uint32_t len ) +{ + 8013748: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 801374c: b084 sub sp, #16 + 801374e: 4604 mov r4, r0 + 8013750: 460d mov r5, r1 + 8013752: 4616 mov r6, r2 + uint32_t mlen; + uint8_t in[16]; + + if( ctx->M_n > 0 ) + 8013754: f8d0 3114 ldr.w r3, [r0, #276] ; 0x114 + 8013758: 2b00 cmp r3, #0 + 801375a: d054 beq.n 8013806 <AES_CMAC_Update+0xbe> + { + mlen = MIN( 16 - ctx->M_n, len ); + 801375c: f1c3 0810 rsb r8, r3, #16 + 8013760: 4647 mov r7, r8 + 8013762: 4590 cmp r8, r2 + 8013764: bf28 it cs + 8013766: 4617 movcs r7, r2 + memcpy1( ctx->M_last + ctx->M_n, data, mlen ); + 8013768: f200 1001 addw r0, r0, #257 ; 0x101 + 801376c: b2ba uxth r2, r7 + 801376e: 4418 add r0, r3 + 8013770: f000 ff13 bl 801459a <memcpy1> + ctx->M_n += mlen; + 8013774: f8d4 3114 ldr.w r3, [r4, #276] ; 0x114 + 8013778: 443b add r3, r7 + 801377a: f8c4 3114 str.w r3, [r4, #276] ; 0x114 + if( ctx->M_n < 16 || len == mlen ) + 801377e: 2b0f cmp r3, #15 + 8013780: d94d bls.n 801381e <AES_CMAC_Update+0xd6> + 8013782: 45b0 cmp r8, r6 + 8013784: d24b bcs.n 801381e <AES_CMAC_Update+0xd6> + return; + XOR( ctx->M_last, ctx->X ); + 8013786: 2300 movs r3, #0 + 8013788: e008 b.n 801379c <AES_CMAC_Update+0x54> + 801378a: 18e2 adds r2, r4, r3 + 801378c: f892 10f1 ldrb.w r1, [r2, #241] ; 0xf1 + 8013790: f892 0101 ldrb.w r0, [r2, #257] ; 0x101 + 8013794: 4041 eors r1, r0 + 8013796: f882 10f1 strb.w r1, [r2, #241] ; 0xf1 + 801379a: 3301 adds r3, #1 + 801379c: 2b0f cmp r3, #15 + 801379e: ddf4 ble.n 801378a <AES_CMAC_Update+0x42> + + memcpy1( in, &ctx->X[0], 16 ); // Otherwise it does not look good + 80137a0: f104 08f1 add.w r8, r4, #241 ; 0xf1 + 80137a4: 2210 movs r2, #16 + 80137a6: 4641 mov r1, r8 + 80137a8: 4668 mov r0, sp + 80137aa: f000 fef6 bl 801459a <memcpy1> + lorawan_aes_encrypt( in, in, &ctx->rijndael ); + 80137ae: 4622 mov r2, r4 + 80137b0: 4669 mov r1, sp + 80137b2: 4668 mov r0, sp + 80137b4: f000 fb86 bl 8013ec4 <lorawan_aes_encrypt> + memcpy1( &ctx->X[0], in, 16 ); + 80137b8: 2210 movs r2, #16 + 80137ba: 4669 mov r1, sp + 80137bc: 4640 mov r0, r8 + 80137be: f000 feec bl 801459a <memcpy1> + + data += mlen; + 80137c2: 443d add r5, r7 + len -= mlen; + 80137c4: 1bf6 subs r6, r6, r7 + 80137c6: e01e b.n 8013806 <AES_CMAC_Update+0xbe> + } + while( len > 16 ) + { /* not last block */ + + XOR( data, ctx->X ); + 80137c8: eb04 0e03 add.w lr, r4, r3 + 80137cc: f89e c0f1 ldrb.w ip, [lr, #241] ; 0xf1 + 80137d0: 5cea ldrb r2, [r5, r3] + 80137d2: ea8c 0c02 eor.w ip, ip, r2 + 80137d6: f88e c0f1 strb.w ip, [lr, #241] ; 0xf1 + 80137da: 3301 adds r3, #1 + 80137dc: 2b0f cmp r3, #15 + 80137de: ddf3 ble.n 80137c8 <AES_CMAC_Update+0x80> + + memcpy1( in, &ctx->X[0], 16 ); // Otherwise it does not look good + 80137e0: f104 07f1 add.w r7, r4, #241 ; 0xf1 + 80137e4: 2210 movs r2, #16 + 80137e6: 4639 mov r1, r7 + 80137e8: 4668 mov r0, sp + 80137ea: f000 fed6 bl 801459a <memcpy1> + lorawan_aes_encrypt( in, in, &ctx->rijndael ); + 80137ee: 4622 mov r2, r4 + 80137f0: 4669 mov r1, sp + 80137f2: 4668 mov r0, sp + 80137f4: f000 fb66 bl 8013ec4 <lorawan_aes_encrypt> + memcpy1( &ctx->X[0], in, 16 ); + 80137f8: 2210 movs r2, #16 + 80137fa: 4669 mov r1, sp + 80137fc: 4638 mov r0, r7 + 80137fe: f000 fecc bl 801459a <memcpy1> + + data += 16; + 8013802: 3510 adds r5, #16 + len -= 16; + 8013804: 3e10 subs r6, #16 + while( len > 16 ) + 8013806: 2e10 cmp r6, #16 + 8013808: d901 bls.n 801380e <AES_CMAC_Update+0xc6> + XOR( data, ctx->X ); + 801380a: 2300 movs r3, #0 + 801380c: e7e6 b.n 80137dc <AES_CMAC_Update+0x94> + } + /* potential last block, save it */ + memcpy1( ctx->M_last, data, len ); + 801380e: b2b2 uxth r2, r6 + 8013810: 4629 mov r1, r5 + 8013812: f204 1001 addw r0, r4, #257 ; 0x101 + 8013816: f000 fec0 bl 801459a <memcpy1> + ctx->M_n = len; + 801381a: f8c4 6114 str.w r6, [r4, #276] ; 0x114 +} + 801381e: b004 add sp, #16 + 8013820: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +08013824 <AES_CMAC_Final>: + +void AES_CMAC_Final( uint8_t digest[AES_CMAC_DIGEST_LENGTH], AES_CMAC_CTX* ctx ) +{ + 8013824: b530 push {r4, r5, lr} + 8013826: b089 sub sp, #36 ; 0x24 + 8013828: 4605 mov r5, r0 + 801382a: 460c mov r4, r1 + uint8_t K[16]; + uint8_t in[16]; + /* generate subkey K1 */ + memset1( K, '\0', 16 ); + 801382c: 2210 movs r2, #16 + 801382e: 2100 movs r1, #0 + 8013830: eb0d 0002 add.w r0, sp, r2 + 8013834: f000 fec9 bl 80145ca <memset1> + + lorawan_aes_encrypt( K, K, &ctx->rijndael ); + 8013838: 4622 mov r2, r4 + 801383a: a904 add r1, sp, #16 + 801383c: 4608 mov r0, r1 + 801383e: f000 fb41 bl 8013ec4 <lorawan_aes_encrypt> + + if( K[0] & 0x80 ) + 8013842: f99d 3010 ldrsb.w r3, [sp, #16] + 8013846: 2b00 cmp r3, #0 + 8013848: db01 blt.n 801384e <AES_CMAC_Final+0x2a> + { + LSHIFT( K, K ); + K[15] ^= 0x87; + } + else + LSHIFT( K, K ); + 801384a: 2300 movs r3, #0 + 801384c: e030 b.n 80138b0 <AES_CMAC_Final+0x8c> + LSHIFT( K, K ); + 801384e: 2300 movs r3, #0 + 8013850: 2b0e cmp r3, #14 + 8013852: dc11 bgt.n 8013878 <AES_CMAC_Final+0x54> + 8013854: f103 0220 add.w r2, r3, #32 + 8013858: eb0d 0102 add.w r1, sp, r2 + 801385c: f811 0c10 ldrb.w r0, [r1, #-16] + 8013860: 3301 adds r3, #1 + 8013862: f103 0220 add.w r2, r3, #32 + 8013866: 446a add r2, sp + 8013868: f812 2c10 ldrb.w r2, [r2, #-16] + 801386c: 09d2 lsrs r2, r2, #7 + 801386e: ea42 0240 orr.w r2, r2, r0, lsl #1 + 8013872: f801 2c10 strb.w r2, [r1, #-16] + 8013876: e7eb b.n 8013850 <AES_CMAC_Final+0x2c> + 8013878: f89d 301f ldrb.w r3, [sp, #31] + 801387c: 005b lsls r3, r3, #1 + 801387e: b2db uxtb r3, r3 + 8013880: f88d 301f strb.w r3, [sp, #31] + K[15] ^= 0x87; + 8013884: f083 0387 eor.w r3, r3, #135 ; 0x87 + 8013888: f88d 301f strb.w r3, [sp, #31] + 801388c: e017 b.n 80138be <AES_CMAC_Final+0x9a> + LSHIFT( K, K ); + 801388e: f103 0220 add.w r2, r3, #32 + 8013892: eb0d 0102 add.w r1, sp, r2 + 8013896: f811 0c10 ldrb.w r0, [r1, #-16] + 801389a: 3301 adds r3, #1 + 801389c: f103 0220 add.w r2, r3, #32 + 80138a0: 446a add r2, sp + 80138a2: f812 2c10 ldrb.w r2, [r2, #-16] + 80138a6: 09d2 lsrs r2, r2, #7 + 80138a8: ea42 0240 orr.w r2, r2, r0, lsl #1 + 80138ac: f801 2c10 strb.w r2, [r1, #-16] + 80138b0: 2b0e cmp r3, #14 + 80138b2: ddec ble.n 801388e <AES_CMAC_Final+0x6a> + 80138b4: f89d 301f ldrb.w r3, [sp, #31] + 80138b8: 005b lsls r3, r3, #1 + 80138ba: f88d 301f strb.w r3, [sp, #31] + + if( ctx->M_n == 16 ) + 80138be: f8d4 0114 ldr.w r0, [r4, #276] ; 0x114 + 80138c2: 2810 cmp r0, #16 + 80138c4: d014 beq.n 80138f0 <AES_CMAC_Final+0xcc> + XOR( K, ctx->M_last ); + } + else + { + /* generate subkey K2 */ + if( K[0] & 0x80 ) + 80138c6: f99d 3010 ldrsb.w r3, [sp, #16] + 80138ca: 2b00 cmp r3, #0 + 80138cc: db30 blt.n 8013930 <AES_CMAC_Final+0x10c> + { + LSHIFT( K, K ); + K[15] ^= 0x87; + } + else + LSHIFT( K, K ); + 80138ce: 2300 movs r3, #0 + 80138d0: e041 b.n 8013956 <AES_CMAC_Final+0x132> + XOR( K, ctx->M_last ); + 80138d2: 18e1 adds r1, r4, r3 + 80138d4: f891 2101 ldrb.w r2, [r1, #257] ; 0x101 + 80138d8: f103 0020 add.w r0, r3, #32 + 80138dc: 4468 add r0, sp + 80138de: f810 0c10 ldrb.w r0, [r0, #-16] + 80138e2: 4042 eors r2, r0 + 80138e4: f881 2101 strb.w r2, [r1, #257] ; 0x101 + 80138e8: 3301 adds r3, #1 + 80138ea: 2b0f cmp r3, #15 + 80138ec: ddf1 ble.n 80138d2 <AES_CMAC_Final+0xae> + 80138ee: e059 b.n 80139a4 <AES_CMAC_Final+0x180> + 80138f0: 2300 movs r3, #0 + 80138f2: e7fa b.n 80138ea <AES_CMAC_Final+0xc6> + LSHIFT( K, K ); + 80138f4: f103 0220 add.w r2, r3, #32 + 80138f8: eb0d 0102 add.w r1, sp, r2 + 80138fc: f811 cc10 ldrb.w ip, [r1, #-16] + 8013900: 3301 adds r3, #1 + 8013902: f103 0220 add.w r2, r3, #32 + 8013906: 446a add r2, sp + 8013908: f812 2c10 ldrb.w r2, [r2, #-16] + 801390c: 09d2 lsrs r2, r2, #7 + 801390e: ea42 024c orr.w r2, r2, ip, lsl #1 + 8013912: f801 2c10 strb.w r2, [r1, #-16] + 8013916: 2b0e cmp r3, #14 + 8013918: ddec ble.n 80138f4 <AES_CMAC_Final+0xd0> + 801391a: f89d 301f ldrb.w r3, [sp, #31] + 801391e: 005b lsls r3, r3, #1 + 8013920: b2db uxtb r3, r3 + 8013922: f88d 301f strb.w r3, [sp, #31] + K[15] ^= 0x87; + 8013926: f083 0387 eor.w r3, r3, #135 ; 0x87 + 801392a: f88d 301f strb.w r3, [sp, #31] + 801392e: e019 b.n 8013964 <AES_CMAC_Final+0x140> + LSHIFT( K, K ); + 8013930: 2300 movs r3, #0 + 8013932: e7f0 b.n 8013916 <AES_CMAC_Final+0xf2> + LSHIFT( K, K ); + 8013934: f103 0220 add.w r2, r3, #32 + 8013938: eb0d 0102 add.w r1, sp, r2 + 801393c: f811 cc10 ldrb.w ip, [r1, #-16] + 8013940: 3301 adds r3, #1 + 8013942: f103 0220 add.w r2, r3, #32 + 8013946: 446a add r2, sp + 8013948: f812 2c10 ldrb.w r2, [r2, #-16] + 801394c: 09d2 lsrs r2, r2, #7 + 801394e: ea42 024c orr.w r2, r2, ip, lsl #1 + 8013952: f801 2c10 strb.w r2, [r1, #-16] + 8013956: 2b0e cmp r3, #14 + 8013958: ddec ble.n 8013934 <AES_CMAC_Final+0x110> + 801395a: f89d 301f ldrb.w r3, [sp, #31] + 801395e: 005b lsls r3, r3, #1 + 8013960: f88d 301f strb.w r3, [sp, #31] + + /* padding(M_last) */ + ctx->M_last[ctx->M_n] = 0x80; + 8013964: 4420 add r0, r4 + 8013966: 2380 movs r3, #128 ; 0x80 + 8013968: f880 3101 strb.w r3, [r0, #257] ; 0x101 + while( ++ctx->M_n < 16 ) + 801396c: e003 b.n 8013976 <AES_CMAC_Final+0x152> + ctx->M_last[ctx->M_n] = 0; + 801396e: 4423 add r3, r4 + 8013970: 2200 movs r2, #0 + 8013972: f883 2101 strb.w r2, [r3, #257] ; 0x101 + while( ++ctx->M_n < 16 ) + 8013976: f8d4 3114 ldr.w r3, [r4, #276] ; 0x114 + 801397a: 3301 adds r3, #1 + 801397c: f8c4 3114 str.w r3, [r4, #276] ; 0x114 + 8013980: 2b0f cmp r3, #15 + 8013982: d9f4 bls.n 801396e <AES_CMAC_Final+0x14a> + + XOR( K, ctx->M_last ); + 8013984: 2300 movs r3, #0 + 8013986: e00b b.n 80139a0 <AES_CMAC_Final+0x17c> + 8013988: 18e1 adds r1, r4, r3 + 801398a: f891 2101 ldrb.w r2, [r1, #257] ; 0x101 + 801398e: f103 0020 add.w r0, r3, #32 + 8013992: 4468 add r0, sp + 8013994: f810 0c10 ldrb.w r0, [r0, #-16] + 8013998: 4042 eors r2, r0 + 801399a: f881 2101 strb.w r2, [r1, #257] ; 0x101 + 801399e: 3301 adds r3, #1 + 80139a0: 2b0f cmp r3, #15 + 80139a2: ddf1 ble.n 8013988 <AES_CMAC_Final+0x164> + 80139a4: 2300 movs r3, #0 + 80139a6: e009 b.n 80139bc <AES_CMAC_Final+0x198> + } + XOR( ctx->M_last, ctx->X ); + 80139a8: 18e2 adds r2, r4, r3 + 80139aa: f892 c0f1 ldrb.w ip, [r2, #241] ; 0xf1 + 80139ae: f892 1101 ldrb.w r1, [r2, #257] ; 0x101 + 80139b2: ea8c 0c01 eor.w ip, ip, r1 + 80139b6: f882 c0f1 strb.w ip, [r2, #241] ; 0xf1 + 80139ba: 3301 adds r3, #1 + 80139bc: 2b0f cmp r3, #15 + 80139be: ddf3 ble.n 80139a8 <AES_CMAC_Final+0x184> + + memcpy1( in, &ctx->X[0], 16 ); // Otherwise it does not look good + 80139c0: 2210 movs r2, #16 + 80139c2: f104 01f1 add.w r1, r4, #241 ; 0xf1 + 80139c6: 4668 mov r0, sp + 80139c8: f000 fde7 bl 801459a <memcpy1> + lorawan_aes_encrypt( in, digest, &ctx->rijndael ); + 80139cc: 4622 mov r2, r4 + 80139ce: 4629 mov r1, r5 + 80139d0: 4668 mov r0, sp + 80139d2: f000 fa77 bl 8013ec4 <lorawan_aes_encrypt> + memset1( K, 0, sizeof K ); + 80139d6: 2210 movs r2, #16 + 80139d8: 2100 movs r1, #0 + 80139da: eb0d 0002 add.w r0, sp, r2 + 80139de: f000 fdf4 bl 80145ca <memset1> +} + 80139e2: b009 add sp, #36 ; 0x24 + 80139e4: bd30 pop {r4, r5, pc} + +080139e6 <copy_block>: + ((uint32_t*)d)[ 0] = ((uint32_t*)s)[ 0]; + ((uint32_t*)d)[ 1] = ((uint32_t*)s)[ 1]; + ((uint32_t*)d)[ 2] = ((uint32_t*)s)[ 2]; + ((uint32_t*)d)[ 3] = ((uint32_t*)s)[ 3]; +#else + ((uint8_t*)d)[ 0] = ((uint8_t*)s)[ 0]; + 80139e6: 780b ldrb r3, [r1, #0] + 80139e8: 7003 strb r3, [r0, #0] + ((uint8_t*)d)[ 1] = ((uint8_t*)s)[ 1]; + 80139ea: 784b ldrb r3, [r1, #1] + 80139ec: 7043 strb r3, [r0, #1] + ((uint8_t*)d)[ 2] = ((uint8_t*)s)[ 2]; + 80139ee: 788b ldrb r3, [r1, #2] + 80139f0: 7083 strb r3, [r0, #2] + ((uint8_t*)d)[ 3] = ((uint8_t*)s)[ 3]; + 80139f2: 78cb ldrb r3, [r1, #3] + 80139f4: 70c3 strb r3, [r0, #3] + ((uint8_t*)d)[ 4] = ((uint8_t*)s)[ 4]; + 80139f6: 790b ldrb r3, [r1, #4] + 80139f8: 7103 strb r3, [r0, #4] + ((uint8_t*)d)[ 5] = ((uint8_t*)s)[ 5]; + 80139fa: 794b ldrb r3, [r1, #5] + 80139fc: 7143 strb r3, [r0, #5] + ((uint8_t*)d)[ 6] = ((uint8_t*)s)[ 6]; + 80139fe: 798b ldrb r3, [r1, #6] + 8013a00: 7183 strb r3, [r0, #6] + ((uint8_t*)d)[ 7] = ((uint8_t*)s)[ 7]; + 8013a02: 79cb ldrb r3, [r1, #7] + 8013a04: 71c3 strb r3, [r0, #7] + ((uint8_t*)d)[ 8] = ((uint8_t*)s)[ 8]; + 8013a06: 7a0b ldrb r3, [r1, #8] + 8013a08: 7203 strb r3, [r0, #8] + ((uint8_t*)d)[ 9] = ((uint8_t*)s)[ 9]; + 8013a0a: 7a4b ldrb r3, [r1, #9] + 8013a0c: 7243 strb r3, [r0, #9] + ((uint8_t*)d)[10] = ((uint8_t*)s)[10]; + 8013a0e: 7a8b ldrb r3, [r1, #10] + 8013a10: 7283 strb r3, [r0, #10] + ((uint8_t*)d)[11] = ((uint8_t*)s)[11]; + 8013a12: 7acb ldrb r3, [r1, #11] + 8013a14: 72c3 strb r3, [r0, #11] + ((uint8_t*)d)[12] = ((uint8_t*)s)[12]; + 8013a16: 7b0b ldrb r3, [r1, #12] + 8013a18: 7303 strb r3, [r0, #12] + ((uint8_t*)d)[13] = ((uint8_t*)s)[13]; + 8013a1a: 7b4b ldrb r3, [r1, #13] + 8013a1c: 7343 strb r3, [r0, #13] + ((uint8_t*)d)[14] = ((uint8_t*)s)[14]; + 8013a1e: 7b8b ldrb r3, [r1, #14] + 8013a20: 7383 strb r3, [r0, #14] + ((uint8_t*)d)[15] = ((uint8_t*)s)[15]; + 8013a22: 7bcb ldrb r3, [r1, #15] + 8013a24: 73c3 strb r3, [r0, #15] +#endif +} + 8013a26: 4770 bx lr + +08013a28 <copy_block_nn>: + +static void copy_block_nn( uint8_t * d, const uint8_t *s, uint8_t nn ) +{ + while( nn-- ) + 8013a28: e004 b.n 8013a34 <copy_block_nn+0xc> + //*((uint8_t*)d)++ = *((uint8_t*)s)++; + *d++ = *s++; + 8013a2a: f811 2b01 ldrb.w r2, [r1], #1 + 8013a2e: f800 2b01 strb.w r2, [r0], #1 + while( nn-- ) + 8013a32: 461a mov r2, r3 + 8013a34: 1e53 subs r3, r2, #1 + 8013a36: b2db uxtb r3, r3 + 8013a38: 2a00 cmp r2, #0 + 8013a3a: d1f6 bne.n 8013a2a <copy_block_nn+0x2> +} + 8013a3c: 4770 bx lr + +08013a3e <xor_block>: + ((uint32_t*)d)[ 0] ^= ((uint32_t*)s)[ 0]; + ((uint32_t*)d)[ 1] ^= ((uint32_t*)s)[ 1]; + ((uint32_t*)d)[ 2] ^= ((uint32_t*)s)[ 2]; + ((uint32_t*)d)[ 3] ^= ((uint32_t*)s)[ 3]; +#else + ((uint8_t*)d)[ 0] ^= ((uint8_t*)s)[ 0]; + 8013a3e: 780b ldrb r3, [r1, #0] + 8013a40: 7802 ldrb r2, [r0, #0] + 8013a42: 4053 eors r3, r2 + 8013a44: 7003 strb r3, [r0, #0] + ((uint8_t*)d)[ 1] ^= ((uint8_t*)s)[ 1]; + 8013a46: 784b ldrb r3, [r1, #1] + 8013a48: 7842 ldrb r2, [r0, #1] + 8013a4a: 4053 eors r3, r2 + 8013a4c: 7043 strb r3, [r0, #1] + ((uint8_t*)d)[ 2] ^= ((uint8_t*)s)[ 2]; + 8013a4e: 788b ldrb r3, [r1, #2] + 8013a50: 7882 ldrb r2, [r0, #2] + 8013a52: 4053 eors r3, r2 + 8013a54: 7083 strb r3, [r0, #2] + ((uint8_t*)d)[ 3] ^= ((uint8_t*)s)[ 3]; + 8013a56: 78cb ldrb r3, [r1, #3] + 8013a58: 78c2 ldrb r2, [r0, #3] + 8013a5a: 4053 eors r3, r2 + 8013a5c: 70c3 strb r3, [r0, #3] + ((uint8_t*)d)[ 4] ^= ((uint8_t*)s)[ 4]; + 8013a5e: 790b ldrb r3, [r1, #4] + 8013a60: 7902 ldrb r2, [r0, #4] + 8013a62: 4053 eors r3, r2 + 8013a64: 7103 strb r3, [r0, #4] + ((uint8_t*)d)[ 5] ^= ((uint8_t*)s)[ 5]; + 8013a66: 794b ldrb r3, [r1, #5] + 8013a68: 7942 ldrb r2, [r0, #5] + 8013a6a: 4053 eors r3, r2 + 8013a6c: 7143 strb r3, [r0, #5] + ((uint8_t*)d)[ 6] ^= ((uint8_t*)s)[ 6]; + 8013a6e: 798b ldrb r3, [r1, #6] + 8013a70: 7982 ldrb r2, [r0, #6] + 8013a72: 4053 eors r3, r2 + 8013a74: 7183 strb r3, [r0, #6] + ((uint8_t*)d)[ 7] ^= ((uint8_t*)s)[ 7]; + 8013a76: 79cb ldrb r3, [r1, #7] + 8013a78: 79c2 ldrb r2, [r0, #7] + 8013a7a: 4053 eors r3, r2 + 8013a7c: 71c3 strb r3, [r0, #7] + ((uint8_t*)d)[ 8] ^= ((uint8_t*)s)[ 8]; + 8013a7e: 7a0b ldrb r3, [r1, #8] + 8013a80: 7a02 ldrb r2, [r0, #8] + 8013a82: 4053 eors r3, r2 + 8013a84: 7203 strb r3, [r0, #8] + ((uint8_t*)d)[ 9] ^= ((uint8_t*)s)[ 9]; + 8013a86: 7a4b ldrb r3, [r1, #9] + 8013a88: 7a42 ldrb r2, [r0, #9] + 8013a8a: 4053 eors r3, r2 + 8013a8c: 7243 strb r3, [r0, #9] + ((uint8_t*)d)[10] ^= ((uint8_t*)s)[10]; + 8013a8e: 7a8b ldrb r3, [r1, #10] + 8013a90: 7a82 ldrb r2, [r0, #10] + 8013a92: 4053 eors r3, r2 + 8013a94: 7283 strb r3, [r0, #10] + ((uint8_t*)d)[11] ^= ((uint8_t*)s)[11]; + 8013a96: 7acb ldrb r3, [r1, #11] + 8013a98: 7ac2 ldrb r2, [r0, #11] + 8013a9a: 4053 eors r3, r2 + 8013a9c: 72c3 strb r3, [r0, #11] + ((uint8_t*)d)[12] ^= ((uint8_t*)s)[12]; + 8013a9e: 7b0b ldrb r3, [r1, #12] + 8013aa0: 7b02 ldrb r2, [r0, #12] + 8013aa2: 4053 eors r3, r2 + 8013aa4: 7303 strb r3, [r0, #12] + ((uint8_t*)d)[13] ^= ((uint8_t*)s)[13]; + 8013aa6: 7b4b ldrb r3, [r1, #13] + 8013aa8: 7b42 ldrb r2, [r0, #13] + 8013aaa: 4053 eors r3, r2 + 8013aac: 7343 strb r3, [r0, #13] + ((uint8_t*)d)[14] ^= ((uint8_t*)s)[14]; + 8013aae: 7b8b ldrb r3, [r1, #14] + 8013ab0: 7b82 ldrb r2, [r0, #14] + 8013ab2: 4053 eors r3, r2 + 8013ab4: 7383 strb r3, [r0, #14] + ((uint8_t*)d)[15] ^= ((uint8_t*)s)[15]; + 8013ab6: 7bcb ldrb r3, [r1, #15] + 8013ab8: 7bc2 ldrb r2, [r0, #15] + 8013aba: 4053 eors r3, r2 + 8013abc: 73c3 strb r3, [r0, #15] +#endif +} + 8013abe: 4770 bx lr + +08013ac0 <copy_and_key>: + ((uint32_t*)d)[ 0] = ((uint32_t*)s)[ 0] ^ ((uint32_t*)k)[ 0]; + ((uint32_t*)d)[ 1] = ((uint32_t*)s)[ 1] ^ ((uint32_t*)k)[ 1]; + ((uint32_t*)d)[ 2] = ((uint32_t*)s)[ 2] ^ ((uint32_t*)k)[ 2]; + ((uint32_t*)d)[ 3] = ((uint32_t*)s)[ 3] ^ ((uint32_t*)k)[ 3]; +#elif 1 + ((uint8_t*)d)[ 0] = ((uint8_t*)s)[ 0] ^ ((uint8_t*)k)[ 0]; + 8013ac0: 780b ldrb r3, [r1, #0] + 8013ac2: f892 c000 ldrb.w ip, [r2] + 8013ac6: ea83 030c eor.w r3, r3, ip + 8013aca: 7003 strb r3, [r0, #0] + ((uint8_t*)d)[ 1] = ((uint8_t*)s)[ 1] ^ ((uint8_t*)k)[ 1]; + 8013acc: 784b ldrb r3, [r1, #1] + 8013ace: f892 c001 ldrb.w ip, [r2, #1] + 8013ad2: ea83 030c eor.w r3, r3, ip + 8013ad6: 7043 strb r3, [r0, #1] + ((uint8_t*)d)[ 2] = ((uint8_t*)s)[ 2] ^ ((uint8_t*)k)[ 2]; + 8013ad8: 788b ldrb r3, [r1, #2] + 8013ada: f892 c002 ldrb.w ip, [r2, #2] + 8013ade: ea83 030c eor.w r3, r3, ip + 8013ae2: 7083 strb r3, [r0, #2] + ((uint8_t*)d)[ 3] = ((uint8_t*)s)[ 3] ^ ((uint8_t*)k)[ 3]; + 8013ae4: 78cb ldrb r3, [r1, #3] + 8013ae6: f892 c003 ldrb.w ip, [r2, #3] + 8013aea: ea83 030c eor.w r3, r3, ip + 8013aee: 70c3 strb r3, [r0, #3] + ((uint8_t*)d)[ 4] = ((uint8_t*)s)[ 4] ^ ((uint8_t*)k)[ 4]; + 8013af0: 790b ldrb r3, [r1, #4] + 8013af2: f892 c004 ldrb.w ip, [r2, #4] + 8013af6: ea83 030c eor.w r3, r3, ip + 8013afa: 7103 strb r3, [r0, #4] + ((uint8_t*)d)[ 5] = ((uint8_t*)s)[ 5] ^ ((uint8_t*)k)[ 5]; + 8013afc: 794b ldrb r3, [r1, #5] + 8013afe: f892 c005 ldrb.w ip, [r2, #5] + 8013b02: ea83 030c eor.w r3, r3, ip + 8013b06: 7143 strb r3, [r0, #5] + ((uint8_t*)d)[ 6] = ((uint8_t*)s)[ 6] ^ ((uint8_t*)k)[ 6]; + 8013b08: 798b ldrb r3, [r1, #6] + 8013b0a: f892 c006 ldrb.w ip, [r2, #6] + 8013b0e: ea83 030c eor.w r3, r3, ip + 8013b12: 7183 strb r3, [r0, #6] + ((uint8_t*)d)[ 7] = ((uint8_t*)s)[ 7] ^ ((uint8_t*)k)[ 7]; + 8013b14: 79cb ldrb r3, [r1, #7] + 8013b16: f892 c007 ldrb.w ip, [r2, #7] + 8013b1a: ea83 030c eor.w r3, r3, ip + 8013b1e: 71c3 strb r3, [r0, #7] + ((uint8_t*)d)[ 8] = ((uint8_t*)s)[ 8] ^ ((uint8_t*)k)[ 8]; + 8013b20: 7a0b ldrb r3, [r1, #8] + 8013b22: f892 c008 ldrb.w ip, [r2, #8] + 8013b26: ea83 030c eor.w r3, r3, ip + 8013b2a: 7203 strb r3, [r0, #8] + ((uint8_t*)d)[ 9] = ((uint8_t*)s)[ 9] ^ ((uint8_t*)k)[ 9]; + 8013b2c: 7a4b ldrb r3, [r1, #9] + 8013b2e: f892 c009 ldrb.w ip, [r2, #9] + 8013b32: ea83 030c eor.w r3, r3, ip + 8013b36: 7243 strb r3, [r0, #9] + ((uint8_t*)d)[10] = ((uint8_t*)s)[10] ^ ((uint8_t*)k)[10]; + 8013b38: 7a8b ldrb r3, [r1, #10] + 8013b3a: f892 c00a ldrb.w ip, [r2, #10] + 8013b3e: ea83 030c eor.w r3, r3, ip + 8013b42: 7283 strb r3, [r0, #10] + ((uint8_t*)d)[11] = ((uint8_t*)s)[11] ^ ((uint8_t*)k)[11]; + 8013b44: 7acb ldrb r3, [r1, #11] + 8013b46: f892 c00b ldrb.w ip, [r2, #11] + 8013b4a: ea83 030c eor.w r3, r3, ip + 8013b4e: 72c3 strb r3, [r0, #11] + ((uint8_t*)d)[12] = ((uint8_t*)s)[12] ^ ((uint8_t*)k)[12]; + 8013b50: 7b0b ldrb r3, [r1, #12] + 8013b52: f892 c00c ldrb.w ip, [r2, #12] + 8013b56: ea83 030c eor.w r3, r3, ip + 8013b5a: 7303 strb r3, [r0, #12] + ((uint8_t*)d)[13] = ((uint8_t*)s)[13] ^ ((uint8_t*)k)[13]; + 8013b5c: 7b4b ldrb r3, [r1, #13] + 8013b5e: f892 c00d ldrb.w ip, [r2, #13] + 8013b62: ea83 030c eor.w r3, r3, ip + 8013b66: 7343 strb r3, [r0, #13] + ((uint8_t*)d)[14] = ((uint8_t*)s)[14] ^ ((uint8_t*)k)[14]; + 8013b68: 7b8b ldrb r3, [r1, #14] + 8013b6a: f892 c00e ldrb.w ip, [r2, #14] + 8013b6e: ea83 030c eor.w r3, r3, ip + 8013b72: 7383 strb r3, [r0, #14] + ((uint8_t*)d)[15] = ((uint8_t*)s)[15] ^ ((uint8_t*)k)[15]; + 8013b74: 7bcb ldrb r3, [r1, #15] + 8013b76: 7bd2 ldrb r2, [r2, #15] + 8013b78: 4053 eors r3, r2 + 8013b7a: 73c3 strb r3, [r0, #15] +#else + block_copy(d, s); + xor_block(d, k); +#endif +} + 8013b7c: 4770 bx lr + +08013b7e <add_round_key>: + +static void add_round_key( uint8_t d[N_BLOCK], const uint8_t k[N_BLOCK] ) +{ + 8013b7e: b508 push {r3, lr} + xor_block(d, k); + 8013b80: f7ff ff5d bl 8013a3e <xor_block> +} + 8013b84: bd08 pop {r3, pc} + ... + +08013b88 <shift_sub_rows>: + +static void shift_sub_rows( uint8_t st[N_BLOCK] ) +{ uint8_t tt; + + st[ 0] = s_box(st[ 0]); st[ 4] = s_box(st[ 4]); + 8013b88: 7802 ldrb r2, [r0, #0] + 8013b8a: 4b18 ldr r3, [pc, #96] ; (8013bec <shift_sub_rows+0x64>) + 8013b8c: 5c9a ldrb r2, [r3, r2] + 8013b8e: 7002 strb r2, [r0, #0] + 8013b90: 7902 ldrb r2, [r0, #4] + 8013b92: 5c9a ldrb r2, [r3, r2] + 8013b94: 7102 strb r2, [r0, #4] + st[ 8] = s_box(st[ 8]); st[12] = s_box(st[12]); + 8013b96: 7a02 ldrb r2, [r0, #8] + 8013b98: 5c9a ldrb r2, [r3, r2] + 8013b9a: 7202 strb r2, [r0, #8] + 8013b9c: 7b02 ldrb r2, [r0, #12] + 8013b9e: 5c9a ldrb r2, [r3, r2] + 8013ba0: 7302 strb r2, [r0, #12] + + tt = st[1]; st[ 1] = s_box(st[ 5]); st[ 5] = s_box(st[ 9]); + 8013ba2: 7842 ldrb r2, [r0, #1] + 8013ba4: 7941 ldrb r1, [r0, #5] + 8013ba6: 5c59 ldrb r1, [r3, r1] + 8013ba8: 7041 strb r1, [r0, #1] + 8013baa: 7a41 ldrb r1, [r0, #9] + 8013bac: 5c59 ldrb r1, [r3, r1] + 8013bae: 7141 strb r1, [r0, #5] + st[ 9] = s_box(st[13]); st[13] = s_box( tt ); + 8013bb0: 7b41 ldrb r1, [r0, #13] + 8013bb2: 5c59 ldrb r1, [r3, r1] + 8013bb4: 7241 strb r1, [r0, #9] + 8013bb6: 5c9a ldrb r2, [r3, r2] + 8013bb8: 7342 strb r2, [r0, #13] + + tt = st[2]; st[ 2] = s_box(st[10]); st[10] = s_box( tt ); + 8013bba: 7882 ldrb r2, [r0, #2] + 8013bbc: 7a81 ldrb r1, [r0, #10] + 8013bbe: 5c59 ldrb r1, [r3, r1] + 8013bc0: 7081 strb r1, [r0, #2] + 8013bc2: 5c9a ldrb r2, [r3, r2] + 8013bc4: 7282 strb r2, [r0, #10] + tt = st[6]; st[ 6] = s_box(st[14]); st[14] = s_box( tt ); + 8013bc6: 7982 ldrb r2, [r0, #6] + 8013bc8: 7b81 ldrb r1, [r0, #14] + 8013bca: 5c59 ldrb r1, [r3, r1] + 8013bcc: 7181 strb r1, [r0, #6] + 8013bce: 5c9a ldrb r2, [r3, r2] + 8013bd0: 7382 strb r2, [r0, #14] + + tt = st[15]; st[15] = s_box(st[11]); st[11] = s_box(st[ 7]); + 8013bd2: 7bc2 ldrb r2, [r0, #15] + 8013bd4: 7ac1 ldrb r1, [r0, #11] + 8013bd6: 5c59 ldrb r1, [r3, r1] + 8013bd8: 73c1 strb r1, [r0, #15] + 8013bda: 79c1 ldrb r1, [r0, #7] + 8013bdc: 5c59 ldrb r1, [r3, r1] + 8013bde: 72c1 strb r1, [r0, #11] + st[ 7] = s_box(st[ 3]); st[ 3] = s_box( tt ); + 8013be0: 78c1 ldrb r1, [r0, #3] + 8013be2: 5c59 ldrb r1, [r3, r1] + 8013be4: 71c1 strb r1, [r0, #7] + 8013be6: 5c9b ldrb r3, [r3, r2] + 8013be8: 70c3 strb r3, [r0, #3] +} + 8013bea: 4770 bx lr + 8013bec: 08018928 .word 0x08018928 + +08013bf0 <mix_sub_columns>: + +#endif + +#if defined( VERSION_1 ) + static void mix_sub_columns( uint8_t dt[N_BLOCK] ) + { uint8_t st[N_BLOCK]; + 8013bf0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8013bf4: b084 sub sp, #16 + 8013bf6: 4604 mov r4, r0 + block_copy(st, dt); + 8013bf8: 4601 mov r1, r0 + 8013bfa: 4668 mov r0, sp + 8013bfc: f7ff fef3 bl 80139e6 <copy_block> +#else + static void mix_sub_columns( uint8_t dt[N_BLOCK], uint8_t st[N_BLOCK] ) + { +#endif + dt[ 0] = gfm2_sb(st[0]) ^ gfm3_sb(st[5]) ^ s_box(st[10]) ^ s_box(st[15]); + 8013c00: f89d c000 ldrb.w ip, [sp] + 8013c04: 4b6a ldr r3, [pc, #424] ; (8013db0 <mix_sub_columns+0x1c0>) + 8013c06: f813 000c ldrb.w r0, [r3, ip] + 8013c0a: f89d 8005 ldrb.w r8, [sp, #5] + 8013c0e: 4a69 ldr r2, [pc, #420] ; (8013db4 <mix_sub_columns+0x1c4>) + 8013c10: f812 9008 ldrb.w r9, [r2, r8] + 8013c14: f89d e00a ldrb.w lr, [sp, #10] + 8013c18: 4967 ldr r1, [pc, #412] ; (8013db8 <mix_sub_columns+0x1c8>) + 8013c1a: f811 500e ldrb.w r5, [r1, lr] + 8013c1e: f89d 700f ldrb.w r7, [sp, #15] + 8013c22: 5dce ldrb r6, [r1, r7] + 8013c24: ea80 0009 eor.w r0, r0, r9 + 8013c28: 4068 eors r0, r5 + 8013c2a: 4070 eors r0, r6 + 8013c2c: 7020 strb r0, [r4, #0] + dt[ 1] = s_box(st[0]) ^ gfm2_sb(st[5]) ^ gfm3_sb(st[10]) ^ s_box(st[15]); + 8013c2e: f811 000c ldrb.w r0, [r1, ip] + 8013c32: f813 a008 ldrb.w sl, [r3, r8] + 8013c36: f812 900e ldrb.w r9, [r2, lr] + 8013c3a: ea80 0a0a eor.w sl, r0, sl + 8013c3e: ea89 090a eor.w r9, r9, sl + 8013c42: ea86 0609 eor.w r6, r6, r9 + 8013c46: 7066 strb r6, [r4, #1] + dt[ 2] = s_box(st[0]) ^ s_box(st[5]) ^ gfm2_sb(st[10]) ^ gfm3_sb(st[15]); + 8013c48: f811 8008 ldrb.w r8, [r1, r8] + 8013c4c: f813 e00e ldrb.w lr, [r3, lr] + 8013c50: 5dd6 ldrb r6, [r2, r7] + 8013c52: ea80 0008 eor.w r0, r0, r8 + 8013c56: ea8e 0000 eor.w r0, lr, r0 + 8013c5a: 4070 eors r0, r6 + 8013c5c: 70a0 strb r0, [r4, #2] + dt[ 3] = gfm3_sb(st[0]) ^ s_box(st[5]) ^ s_box(st[10]) ^ gfm2_sb(st[15]); + 8013c5e: f812 600c ldrb.w r6, [r2, ip] + 8013c62: 5dd8 ldrb r0, [r3, r7] + 8013c64: ea86 0608 eor.w r6, r6, r8 + 8013c68: 4075 eors r5, r6 + 8013c6a: 4068 eors r0, r5 + 8013c6c: 70e0 strb r0, [r4, #3] + + dt[ 4] = gfm2_sb(st[4]) ^ gfm3_sb(st[9]) ^ s_box(st[14]) ^ s_box(st[3]); + 8013c6e: f89d c004 ldrb.w ip, [sp, #4] + 8013c72: f813 000c ldrb.w r0, [r3, ip] + 8013c76: f89d 8009 ldrb.w r8, [sp, #9] + 8013c7a: f812 9008 ldrb.w r9, [r2, r8] + 8013c7e: f89d e00e ldrb.w lr, [sp, #14] + 8013c82: f811 500e ldrb.w r5, [r1, lr] + 8013c86: f89d 7003 ldrb.w r7, [sp, #3] + 8013c8a: 5dce ldrb r6, [r1, r7] + 8013c8c: ea80 0009 eor.w r0, r0, r9 + 8013c90: 4068 eors r0, r5 + 8013c92: 4070 eors r0, r6 + 8013c94: 7120 strb r0, [r4, #4] + dt[ 5] = s_box(st[4]) ^ gfm2_sb(st[9]) ^ gfm3_sb(st[14]) ^ s_box(st[3]); + 8013c96: f811 000c ldrb.w r0, [r1, ip] + 8013c9a: f813 a008 ldrb.w sl, [r3, r8] + 8013c9e: f812 900e ldrb.w r9, [r2, lr] + 8013ca2: ea80 0a0a eor.w sl, r0, sl + 8013ca6: ea89 090a eor.w r9, r9, sl + 8013caa: ea86 0609 eor.w r6, r6, r9 + 8013cae: 7166 strb r6, [r4, #5] + dt[ 6] = s_box(st[4]) ^ s_box(st[9]) ^ gfm2_sb(st[14]) ^ gfm3_sb(st[3]); + 8013cb0: f811 8008 ldrb.w r8, [r1, r8] + 8013cb4: f813 e00e ldrb.w lr, [r3, lr] + 8013cb8: 5dd6 ldrb r6, [r2, r7] + 8013cba: ea80 0008 eor.w r0, r0, r8 + 8013cbe: ea8e 0000 eor.w r0, lr, r0 + 8013cc2: 4070 eors r0, r6 + 8013cc4: 71a0 strb r0, [r4, #6] + dt[ 7] = gfm3_sb(st[4]) ^ s_box(st[9]) ^ s_box(st[14]) ^ gfm2_sb(st[3]); + 8013cc6: f812 600c ldrb.w r6, [r2, ip] + 8013cca: 5dd8 ldrb r0, [r3, r7] + 8013ccc: ea86 0608 eor.w r6, r6, r8 + 8013cd0: 4075 eors r5, r6 + 8013cd2: 4068 eors r0, r5 + 8013cd4: 71e0 strb r0, [r4, #7] + + dt[ 8] = gfm2_sb(st[8]) ^ gfm3_sb(st[13]) ^ s_box(st[2]) ^ s_box(st[7]); + 8013cd6: f89d c008 ldrb.w ip, [sp, #8] + 8013cda: f813 000c ldrb.w r0, [r3, ip] + 8013cde: f89d 800d ldrb.w r8, [sp, #13] + 8013ce2: f812 9008 ldrb.w r9, [r2, r8] + 8013ce6: f89d e002 ldrb.w lr, [sp, #2] + 8013cea: f811 500e ldrb.w r5, [r1, lr] + 8013cee: f89d 7007 ldrb.w r7, [sp, #7] + 8013cf2: 5dce ldrb r6, [r1, r7] + 8013cf4: ea80 0009 eor.w r0, r0, r9 + 8013cf8: 4068 eors r0, r5 + 8013cfa: 4070 eors r0, r6 + 8013cfc: 7220 strb r0, [r4, #8] + dt[ 9] = s_box(st[8]) ^ gfm2_sb(st[13]) ^ gfm3_sb(st[2]) ^ s_box(st[7]); + 8013cfe: f811 000c ldrb.w r0, [r1, ip] + 8013d02: f813 a008 ldrb.w sl, [r3, r8] + 8013d06: f812 900e ldrb.w r9, [r2, lr] + 8013d0a: ea80 0a0a eor.w sl, r0, sl + 8013d0e: ea89 090a eor.w r9, r9, sl + 8013d12: ea86 0609 eor.w r6, r6, r9 + 8013d16: 7266 strb r6, [r4, #9] + dt[10] = s_box(st[8]) ^ s_box(st[13]) ^ gfm2_sb(st[2]) ^ gfm3_sb(st[7]); + 8013d18: f811 8008 ldrb.w r8, [r1, r8] + 8013d1c: f813 e00e ldrb.w lr, [r3, lr] + 8013d20: 5dd6 ldrb r6, [r2, r7] + 8013d22: ea80 0008 eor.w r0, r0, r8 + 8013d26: ea8e 0000 eor.w r0, lr, r0 + 8013d2a: 4070 eors r0, r6 + 8013d2c: 72a0 strb r0, [r4, #10] + dt[11] = gfm3_sb(st[8]) ^ s_box(st[13]) ^ s_box(st[2]) ^ gfm2_sb(st[7]); + 8013d2e: f812 600c ldrb.w r6, [r2, ip] + 8013d32: 5dd8 ldrb r0, [r3, r7] + 8013d34: ea86 0608 eor.w r6, r6, r8 + 8013d38: 4075 eors r5, r6 + 8013d3a: 4068 eors r0, r5 + 8013d3c: 72e0 strb r0, [r4, #11] + + dt[12] = gfm2_sb(st[12]) ^ gfm3_sb(st[1]) ^ s_box(st[6]) ^ s_box(st[11]); + 8013d3e: f89d 600c ldrb.w r6, [sp, #12] + 8013d42: 5d98 ldrb r0, [r3, r6] + 8013d44: f89d 8001 ldrb.w r8, [sp, #1] + 8013d48: f812 9008 ldrb.w r9, [r2, r8] + 8013d4c: f89d 7006 ldrb.w r7, [sp, #6] + 8013d50: f811 c007 ldrb.w ip, [r1, r7] + 8013d54: f89d 500b ldrb.w r5, [sp, #11] + 8013d58: f811 e005 ldrb.w lr, [r1, r5] + 8013d5c: ea80 0009 eor.w r0, r0, r9 + 8013d60: ea8c 0000 eor.w r0, ip, r0 + 8013d64: ea8e 0000 eor.w r0, lr, r0 + 8013d68: 7320 strb r0, [r4, #12] + dt[13] = s_box(st[12]) ^ gfm2_sb(st[1]) ^ gfm3_sb(st[6]) ^ s_box(st[11]); + 8013d6a: 5d88 ldrb r0, [r1, r6] + 8013d6c: f813 a008 ldrb.w sl, [r3, r8] + 8013d70: f812 9007 ldrb.w r9, [r2, r7] + 8013d74: ea80 0a0a eor.w sl, r0, sl + 8013d78: ea89 090a eor.w r9, r9, sl + 8013d7c: ea8e 0e09 eor.w lr, lr, r9 + 8013d80: f884 e00d strb.w lr, [r4, #13] + dt[14] = s_box(st[12]) ^ s_box(st[1]) ^ gfm2_sb(st[6]) ^ gfm3_sb(st[11]); + 8013d84: f811 1008 ldrb.w r1, [r1, r8] + 8013d88: f813 e007 ldrb.w lr, [r3, r7] + 8013d8c: 5d57 ldrb r7, [r2, r5] + 8013d8e: 4048 eors r0, r1 + 8013d90: ea8e 0000 eor.w r0, lr, r0 + 8013d94: 4078 eors r0, r7 + 8013d96: 73a0 strb r0, [r4, #14] + dt[15] = gfm3_sb(st[12]) ^ s_box(st[1]) ^ s_box(st[6]) ^ gfm2_sb(st[11]); + 8013d98: 5d92 ldrb r2, [r2, r6] + 8013d9a: 5d5b ldrb r3, [r3, r5] + 8013d9c: 4051 eors r1, r2 + 8013d9e: ea8c 0c01 eor.w ip, ip, r1 + 8013da2: ea83 030c eor.w r3, r3, ip + 8013da6: 73e3 strb r3, [r4, #15] + } + 8013da8: b004 add sp, #16 + 8013daa: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8013dae: bf00 nop + 8013db0: 08018728 .word 0x08018728 + 8013db4: 08018828 .word 0x08018828 + 8013db8: 08018928 .word 0x08018928 + +08013dbc <lorawan_aes_set_key>: +#if defined( AES_ENC_PREKEYED ) || defined( AES_DEC_PREKEYED ) + +/* Set the cipher key for the pre-keyed version */ + +return_type lorawan_aes_set_key( const uint8_t key[], length_type keylen, lorawan_aes_context ctx[1] ) +{ + 8013dbc: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8013dc0: 4614 mov r4, r2 + uint8_t cc, rc, hi; + + switch( keylen ) + 8013dc2: f1a1 0310 sub.w r3, r1, #16 + 8013dc6: b2db uxtb r3, r3 + 8013dc8: 2b10 cmp r3, #16 + 8013dca: d806 bhi.n 8013dda <lorawan_aes_set_key+0x1e> + 8013dcc: 460d mov r5, r1 + 8013dce: 4a3b ldr r2, [pc, #236] ; (8013ebc <lorawan_aes_set_key+0x100>) + 8013dd0: fa22 f303 lsr.w r3, r2, r3 + 8013dd4: f013 0f01 tst.w r3, #1 + 8013dd8: d105 bne.n 8013de6 <lorawan_aes_set_key+0x2a> + case 16: + case 24: + case 32: + break; + default: + ctx->rnd = 0; + 8013dda: 2300 movs r3, #0 + 8013ddc: f884 30f0 strb.w r3, [r4, #240] ; 0xf0 + return ( uint8_t )-1; + 8013de0: 20ff movs r0, #255 ; 0xff + ctx->ksch[cc + 1] = ctx->ksch[tt + 1] ^ t1; + ctx->ksch[cc + 2] = ctx->ksch[tt + 2] ^ t2; + ctx->ksch[cc + 3] = ctx->ksch[tt + 3] ^ t3; + } + return 0; +} + 8013de2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + block_copy_nn(ctx->ksch, key, keylen); + 8013de6: 460a mov r2, r1 + 8013de8: 4601 mov r1, r0 + 8013dea: 4620 mov r0, r4 + 8013dec: f7ff fe1c bl 8013a28 <copy_block_nn> + hi = (keylen + 28) << 2; + 8013df0: f105 031c add.w r3, r5, #28 + 8013df4: b2db uxtb r3, r3 + 8013df6: 009b lsls r3, r3, #2 + 8013df8: fa5f fe83 uxtb.w lr, r3 + ctx->rnd = (hi >> 4) - 1; + 8013dfc: f3c3 1303 ubfx r3, r3, #4, #4 + 8013e00: 3b01 subs r3, #1 + 8013e02: f884 30f0 strb.w r3, [r4, #240] ; 0xf0 + for( cc = keylen, rc = 1; cc < hi; cc += 4 ) + 8013e06: 462b mov r3, r5 + 8013e08: f04f 0c01 mov.w ip, #1 + 8013e0c: e023 b.n 8013e56 <lorawan_aes_set_key+0x9a> + else if( keylen > 24 && cc % keylen == 16 ) + 8013e0e: 2d18 cmp r5, #24 + 8013e10: d901 bls.n 8013e16 <lorawan_aes_set_key+0x5a> + 8013e12: 2a10 cmp r2, #16 + 8013e14: d048 beq.n 8013ea8 <lorawan_aes_set_key+0xec> + tt = cc - keylen; + 8013e16: 1b5a subs r2, r3, r5 + 8013e18: b2d2 uxtb r2, r2 + ctx->ksch[cc + 0] = ctx->ksch[tt + 0] ^ t0; + 8013e1a: f814 9002 ldrb.w r9, [r4, r2] + 8013e1e: ea89 0808 eor.w r8, r9, r8 + 8013e22: f804 8000 strb.w r8, [r4, r0] + ctx->ksch[cc + 1] = ctx->ksch[tt + 1] ^ t1; + 8013e26: f102 0801 add.w r8, r2, #1 + 8013e2a: f814 8008 ldrb.w r8, [r4, r8] + 8013e2e: f100 0901 add.w r9, r0, #1 + 8013e32: ea88 0707 eor.w r7, r8, r7 + 8013e36: f804 7009 strb.w r7, [r4, r9] + ctx->ksch[cc + 2] = ctx->ksch[tt + 2] ^ t2; + 8013e3a: 1c97 adds r7, r2, #2 + 8013e3c: 5de7 ldrb r7, [r4, r7] + 8013e3e: f100 0802 add.w r8, r0, #2 + 8013e42: 407e eors r6, r7 + 8013e44: f804 6008 strb.w r6, [r4, r8] + ctx->ksch[cc + 3] = ctx->ksch[tt + 3] ^ t3; + 8013e48: 3203 adds r2, #3 + 8013e4a: 5ca6 ldrb r6, [r4, r2] + 8013e4c: 1cc2 adds r2, r0, #3 + 8013e4e: 4071 eors r1, r6 + 8013e50: 54a1 strb r1, [r4, r2] + for( cc = keylen, rc = 1; cc < hi; cc += 4 ) + 8013e52: 3304 adds r3, #4 + 8013e54: b2db uxtb r3, r3 + 8013e56: 4573 cmp r3, lr + 8013e58: d22d bcs.n 8013eb6 <lorawan_aes_set_key+0xfa> + t0 = ctx->ksch[cc - 4]; + 8013e5a: 4618 mov r0, r3 + 8013e5c: 1f1a subs r2, r3, #4 + 8013e5e: f814 8002 ldrb.w r8, [r4, r2] + t1 = ctx->ksch[cc - 3]; + 8013e62: 1eda subs r2, r3, #3 + 8013e64: 5ca7 ldrb r7, [r4, r2] + t2 = ctx->ksch[cc - 2]; + 8013e66: 1e9a subs r2, r3, #2 + 8013e68: 5ca6 ldrb r6, [r4, r2] + t3 = ctx->ksch[cc - 1]; + 8013e6a: 1e5a subs r2, r3, #1 + 8013e6c: 5ca1 ldrb r1, [r4, r2] + if( cc % keylen == 0 ) + 8013e6e: fbb3 f2f5 udiv r2, r3, r5 + 8013e72: fb05 3212 mls r2, r5, r2, r3 + 8013e76: f012 02ff ands.w r2, r2, #255 ; 0xff + 8013e7a: d1c8 bne.n 8013e0e <lorawan_aes_set_key+0x52> + t0 = s_box(t1) ^ rc; + 8013e7c: 4a10 ldr r2, [pc, #64] ; (8013ec0 <lorawan_aes_set_key+0x104>) + 8013e7e: f812 9007 ldrb.w r9, [r2, r7] + 8013e82: ea89 090c eor.w r9, r9, ip + t1 = s_box(t2); + 8013e86: 5d97 ldrb r7, [r2, r6] + t2 = s_box(t3); + 8013e88: 5c56 ldrb r6, [r2, r1] + t3 = s_box(tt); + 8013e8a: f812 1008 ldrb.w r1, [r2, r8] + rc = f2(rc); + 8013e8e: ea4f 12dc mov.w r2, ip, lsr #7 + 8013e92: eb02 0242 add.w r2, r2, r2, lsl #1 + 8013e96: eb02 02c2 add.w r2, r2, r2, lsl #3 + 8013e9a: b2d2 uxtb r2, r2 + 8013e9c: ea82 024c eor.w r2, r2, ip, lsl #1 + 8013ea0: fa5f fc82 uxtb.w ip, r2 + t0 = s_box(t1) ^ rc; + 8013ea4: 46c8 mov r8, r9 + 8013ea6: e7b6 b.n 8013e16 <lorawan_aes_set_key+0x5a> + t0 = s_box(t0); + 8013ea8: 4a05 ldr r2, [pc, #20] ; (8013ec0 <lorawan_aes_set_key+0x104>) + 8013eaa: f812 8008 ldrb.w r8, [r2, r8] + t1 = s_box(t1); + 8013eae: 5dd7 ldrb r7, [r2, r7] + t2 = s_box(t2); + 8013eb0: 5d96 ldrb r6, [r2, r6] + t3 = s_box(t3); + 8013eb2: 5c51 ldrb r1, [r2, r1] + 8013eb4: e7af b.n 8013e16 <lorawan_aes_set_key+0x5a> + return 0; + 8013eb6: 2000 movs r0, #0 + 8013eb8: e793 b.n 8013de2 <lorawan_aes_set_key+0x26> + 8013eba: bf00 nop + 8013ebc: 00010101 .word 0x00010101 + 8013ec0: 08018928 .word 0x08018928 + +08013ec4 <lorawan_aes_encrypt>: + +/* Encrypt a single block of 16 bytes */ + +return_type lorawan_aes_encrypt( const uint8_t in[N_BLOCK], uint8_t out[N_BLOCK], const lorawan_aes_context ctx[1] ) +{ + if( ctx->rnd ) + 8013ec4: f892 30f0 ldrb.w r3, [r2, #240] ; 0xf0 + 8013ec8: b31b cbz r3, 8013f12 <lorawan_aes_encrypt+0x4e> +{ + 8013eca: b570 push {r4, r5, r6, lr} + 8013ecc: b084 sub sp, #16 + 8013ece: 460e mov r6, r1 + 8013ed0: 4615 mov r5, r2 + { + uint8_t s1[N_BLOCK], r; + copy_and_key( s1, in, ctx->ksch ); + 8013ed2: 4601 mov r1, r0 + 8013ed4: 4668 mov r0, sp + 8013ed6: f7ff fdf3 bl 8013ac0 <copy_and_key> + + for( r = 1 ; r < ctx->rnd ; ++r ) + 8013eda: 2401 movs r4, #1 + 8013edc: e009 b.n 8013ef2 <lorawan_aes_encrypt+0x2e> +#if defined( VERSION_1 ) + { + mix_sub_columns( s1 ); + 8013ede: 4668 mov r0, sp + 8013ee0: f7ff fe86 bl 8013bf0 <mix_sub_columns> + add_round_key( s1, ctx->ksch + r * N_BLOCK); + 8013ee4: eb05 1104 add.w r1, r5, r4, lsl #4 + 8013ee8: 4668 mov r0, sp + 8013eea: f7ff fe48 bl 8013b7e <add_round_key> + for( r = 1 ; r < ctx->rnd ; ++r ) + 8013eee: 3401 adds r4, #1 + 8013ef0: b2e4 uxtb r4, r4 + 8013ef2: f895 30f0 ldrb.w r3, [r5, #240] ; 0xf0 + 8013ef6: 42a3 cmp r3, r4 + 8013ef8: d8f1 bhi.n 8013ede <lorawan_aes_encrypt+0x1a> + { uint8_t s2[N_BLOCK]; + mix_sub_columns( s2, s1 ); + copy_and_key( s1, s2, ctx->ksch + r * N_BLOCK); + } +#endif + shift_sub_rows( s1 ); + 8013efa: 4668 mov r0, sp + 8013efc: f7ff fe44 bl 8013b88 <shift_sub_rows> + copy_and_key( out, s1, ctx->ksch + r * N_BLOCK ); + 8013f00: eb05 1204 add.w r2, r5, r4, lsl #4 + 8013f04: 4669 mov r1, sp + 8013f06: 4630 mov r0, r6 + 8013f08: f7ff fdda bl 8013ac0 <copy_and_key> + } + else + return ( uint8_t )-1; + return 0; + 8013f0c: 2000 movs r0, #0 +} + 8013f0e: b004 add sp, #16 + 8013f10: bd70 pop {r4, r5, r6, pc} + return ( uint8_t )-1; + 8013f12: 20ff movs r0, #255 ; 0xff +} + 8013f14: 4770 bx lr + ... + +08013f18 <GetKeyByID>: +} + +#if (LORAWAN_KMS == 0) +static SecureElementStatus_t GetKeyByID( KeyIdentifier_t keyID, Key_t **keyItem ) +{ + for( uint8_t i = 0; i < NUM_OF_KEYS; i++ ) + 8013f18: 2300 movs r3, #0 + 8013f1a: 2b0a cmp r3, #10 + 8013f1c: d817 bhi.n 8013f4e <GetKeyByID+0x36> +{ + 8013f1e: b410 push {r4} + { + if( SeNvm->KeyList[i].KeyID == keyID ) + 8013f20: 4a0c ldr r2, [pc, #48] ; (8013f54 <GetKeyByID+0x3c>) + 8013f22: 6814 ldr r4, [r2, #0] + 8013f24: eb03 1203 add.w r2, r3, r3, lsl #4 + 8013f28: 4422 add r2, r4 + 8013f2a: 7e12 ldrb r2, [r2, #24] + 8013f2c: 4282 cmp r2, r0 + 8013f2e: d006 beq.n 8013f3e <GetKeyByID+0x26> + for( uint8_t i = 0; i < NUM_OF_KEYS; i++ ) + 8013f30: 3301 adds r3, #1 + 8013f32: b2db uxtb r3, r3 + 8013f34: 2b0a cmp r3, #10 + 8013f36: d9f3 bls.n 8013f20 <GetKeyByID+0x8> + { + *keyItem = &( SeNvm->KeyList[i] ); + return SECURE_ELEMENT_SUCCESS; + } + } + return SECURE_ELEMENT_ERROR_INVALID_KEY_ID; + 8013f38: 2003 movs r0, #3 +} + 8013f3a: bc10 pop {r4} + 8013f3c: 4770 bx lr + *keyItem = &( SeNvm->KeyList[i] ); + 8013f3e: eb03 1c03 add.w ip, r3, r3, lsl #4 + 8013f42: f10c 0c18 add.w ip, ip, #24 + 8013f46: 4464 add r4, ip + 8013f48: 600c str r4, [r1, #0] + return SECURE_ELEMENT_SUCCESS; + 8013f4a: 2000 movs r0, #0 + 8013f4c: e7f5 b.n 8013f3a <GetKeyByID+0x22> + return SECURE_ELEMENT_ERROR_INVALID_KEY_ID; + 8013f4e: 2003 movs r0, #3 +} + 8013f50: 4770 bx lr + 8013f52: bf00 nop + 8013f54: 20002630 .word 0x20002630 + +08013f58 <ComputeCmac>: +} +#endif /* LORAWAN_KMS */ + +static SecureElementStatus_t ComputeCmac( uint8_t *micBxBuffer, uint8_t *buffer, uint32_t size, KeyIdentifier_t keyID, + uint32_t *cmac ) +{ + 8013f58: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8013f5c: b0cc sub sp, #304 ; 0x130 + 8013f5e: 9d52 ldr r5, [sp, #328] ; 0x148 + if( ( buffer == NULL ) || ( cmac == NULL ) ) + 8013f60: b3a9 cbz r1, 8013fce <ComputeCmac+0x76> + 8013f62: 4607 mov r7, r0 + 8013f64: 4616 mov r6, r2 + 8013f66: 461c mov r4, r3 + 8013f68: 4688 mov r8, r1 + 8013f6a: b395 cbz r5, 8013fd2 <ComputeCmac+0x7a> + +#if (LORAWAN_KMS == 0) + uint8_t Cmac[16]; + AES_CMAC_CTX aesCmacCtx[1]; + + AES_CMAC_Init( aesCmacCtx ); + 8013f6c: a802 add r0, sp, #8 + 8013f6e: f7ff fbd5 bl 801371c <AES_CMAC_Init> + + Key_t *keyItem; + SecureElementStatus_t retval = GetKeyByID( keyID, &keyItem ); + 8013f72: a901 add r1, sp, #4 + 8013f74: 4620 mov r0, r4 + 8013f76: f7ff ffcf bl 8013f18 <GetKeyByID> + + if( retval == SECURE_ELEMENT_SUCCESS ) + 8013f7a: 4604 mov r4, r0 + 8013f7c: b118 cbz r0, 8013f86 <ComputeCmac+0x2e> + { + retval = SECURE_ELEMENT_ERROR; + } +#endif /* LORAWAN_KMS */ + return retval; +} + 8013f7e: 4620 mov r0, r4 + 8013f80: b04c add sp, #304 ; 0x130 + 8013f82: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + AES_CMAC_SetKey( aesCmacCtx, keyItem->KeyValue ); + 8013f86: 9901 ldr r1, [sp, #4] + 8013f88: 3101 adds r1, #1 + 8013f8a: a802 add r0, sp, #8 + 8013f8c: f7ff fbd5 bl 801373a <AES_CMAC_SetKey> + if( micBxBuffer != NULL ) + 8013f90: b127 cbz r7, 8013f9c <ComputeCmac+0x44> + AES_CMAC_Update( aesCmacCtx, micBxBuffer, MIC_BLOCK_BX_SIZE ); + 8013f92: 2210 movs r2, #16 + 8013f94: 4639 mov r1, r7 + 8013f96: a802 add r0, sp, #8 + 8013f98: f7ff fbd6 bl 8013748 <AES_CMAC_Update> + AES_CMAC_Update( aesCmacCtx, buffer, size ); + 8013f9c: 4632 mov r2, r6 + 8013f9e: 4641 mov r1, r8 + 8013fa0: a802 add r0, sp, #8 + 8013fa2: f7ff fbd1 bl 8013748 <AES_CMAC_Update> + AES_CMAC_Final( Cmac, aesCmacCtx ); + 8013fa6: a902 add r1, sp, #8 + 8013fa8: a848 add r0, sp, #288 ; 0x120 + 8013faa: f7ff fc3b bl 8013824 <AES_CMAC_Final> + *cmac = GET_UINT32_LE( Cmac, 0 ); + 8013fae: f89d 3120 ldrb.w r3, [sp, #288] ; 0x120 + 8013fb2: f89d 2121 ldrb.w r2, [sp, #289] ; 0x121 + 8013fb6: ea43 2302 orr.w r3, r3, r2, lsl #8 + 8013fba: f89d 2122 ldrb.w r2, [sp, #290] ; 0x122 + 8013fbe: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8013fc2: f89d 2123 ldrb.w r2, [sp, #291] ; 0x123 + 8013fc6: ea43 6302 orr.w r3, r3, r2, lsl #24 + 8013fca: 602b str r3, [r5, #0] + 8013fcc: e7d7 b.n 8013f7e <ComputeCmac+0x26> + return SECURE_ELEMENT_ERROR_NPE; + 8013fce: 2402 movs r4, #2 + 8013fd0: e7d5 b.n 8013f7e <ComputeCmac+0x26> + 8013fd2: 2402 movs r4, #2 + 8013fd4: e7d3 b.n 8013f7e <ComputeCmac+0x26> + ... + +08013fd8 <SecureElementInit>: +/* + * API functions + */ +SecureElementStatus_t SecureElementInit( SecureElementNvmData_t *nvm ) +{ + if( nvm == NULL ) + 8013fd8: b140 cbz r0, 8013fec <SecureElementInit+0x14> +{ + 8013fda: b508 push {r3, lr} + { + return SECURE_ELEMENT_ERROR_NPE; + } + + /* Initialize nvm pointer */ + SeNvm = nvm; + 8013fdc: 4a04 ldr r2, [pc, #16] ; (8013ff0 <SecureElementInit+0x18>) + 8013fde: 6010 str r0, [r2, #0] + +#if (LORAWAN_KMS == 0) + /* Initialize data */ + memcpy1( ( uint8_t * )SeNvm, ( uint8_t * )&seNvmInit, sizeof( seNvmInit ) ); + 8013fe0: 22d8 movs r2, #216 ; 0xd8 + 8013fe2: 4904 ldr r1, [pc, #16] ; (8013ff4 <SecureElementInit+0x1c>) + 8013fe4: f000 fad9 bl 801459a <memcpy1> + ( void )C_CloseSession( session ); + } + +#endif /* LORAWAN_KMS */ + + return SECURE_ELEMENT_SUCCESS; + 8013fe8: 2000 movs r0, #0 +} + 8013fea: bd08 pop {r3, pc} + return SECURE_ELEMENT_ERROR_NPE; + 8013fec: 2002 movs r0, #2 +} + 8013fee: 4770 bx lr + 8013ff0: 20002630 .word 0x20002630 + 8013ff4: 08018e58 .word 0x08018e58 + +08013ff8 <SecureElementGetKeyByID>: + +#if (LORAWAN_KMS == 0) +SecureElementStatus_t SecureElementGetKeyByID( KeyIdentifier_t keyID, Key_t **keyItem ) +{ +#if (KEY_EXTRACTABLE == 1) + for( uint8_t i = 0; i < NUM_OF_KEYS; i++ ) + 8013ff8: 2300 movs r3, #0 + 8013ffa: 2b0a cmp r3, #10 + 8013ffc: d817 bhi.n 801402e <SecureElementGetKeyByID+0x36> +{ + 8013ffe: b410 push {r4} + { + if( SeNvm->KeyList[i].KeyID == keyID ) + 8014000: 4a0c ldr r2, [pc, #48] ; (8014034 <SecureElementGetKeyByID+0x3c>) + 8014002: 6814 ldr r4, [r2, #0] + 8014004: eb03 1203 add.w r2, r3, r3, lsl #4 + 8014008: 4422 add r2, r4 + 801400a: 7e12 ldrb r2, [r2, #24] + 801400c: 4282 cmp r2, r0 + 801400e: d006 beq.n 801401e <SecureElementGetKeyByID+0x26> + for( uint8_t i = 0; i < NUM_OF_KEYS; i++ ) + 8014010: 3301 adds r3, #1 + 8014012: b2db uxtb r3, r3 + 8014014: 2b0a cmp r3, #10 + 8014016: d9f3 bls.n 8014000 <SecureElementGetKeyByID+0x8> + *keyItem = &( SeNvm->KeyList[i] ); + return SECURE_ELEMENT_SUCCESS; + } + } +#endif /* KEY_EXTRACTABLE */ + return SECURE_ELEMENT_ERROR_INVALID_KEY_ID; + 8014018: 2003 movs r0, #3 +} + 801401a: bc10 pop {r4} + 801401c: 4770 bx lr + *keyItem = &( SeNvm->KeyList[i] ); + 801401e: eb03 1c03 add.w ip, r3, r3, lsl #4 + 8014022: f10c 0c18 add.w ip, ip, #24 + 8014026: 4464 add r4, ip + 8014028: 600c str r4, [r1, #0] + return SECURE_ELEMENT_SUCCESS; + 801402a: 2000 movs r0, #0 + 801402c: e7f5 b.n 801401a <SecureElementGetKeyByID+0x22> + return SECURE_ELEMENT_ERROR_INVALID_KEY_ID; + 801402e: 2003 movs r0, #3 +} + 8014030: 4770 bx lr + 8014032: bf00 nop + 8014034: 20002630 .word 0x20002630 + +08014038 <PrintKey>: +{ + 8014038: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 801403c: b099 sub sp, #100 ; 0x64 + 801403e: 4604 mov r4, r0 + if( SECURE_ELEMENT_SUCCESS == SecureElementGetKeyByID( keyID, &keyItem ) ) + 8014040: a917 add r1, sp, #92 ; 0x5c + 8014042: f7ff ffd9 bl 8013ff8 <SecureElementGetKeyByID> + 8014046: 4603 mov r3, r0 + 8014048: 2800 cmp r0, #0 + 801404a: d042 beq.n 80140d2 <PrintKey+0x9a> +} + 801404c: b019 add sp, #100 ; 0x64 + 801404e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + MW_LOG( TS_OFF, VLEVEL_M, + 8014052: eb03 0043 add.w r0, r3, r3, lsl #1 + 8014056: eb01 0380 add.w r3, r1, r0, lsl #2 + 801405a: 689b ldr r3, [r3, #8] + 801405c: 9313 str r3, [sp, #76] ; 0x4c + 801405e: 9b17 ldr r3, [sp, #92] ; 0x5c + 8014060: 785a ldrb r2, [r3, #1] + 8014062: 9214 str r2, [sp, #80] ; 0x50 + 8014064: 7899 ldrb r1, [r3, #2] + 8014066: 9115 str r1, [sp, #84] ; 0x54 + 8014068: 78da ldrb r2, [r3, #3] + 801406a: 7919 ldrb r1, [r3, #4] + 801406c: 7958 ldrb r0, [r3, #5] + 801406e: 799c ldrb r4, [r3, #6] + 8014070: 79dd ldrb r5, [r3, #7] + 8014072: 7a1e ldrb r6, [r3, #8] + 8014074: 7a5f ldrb r7, [r3, #9] + 8014076: f893 c00a ldrb.w ip, [r3, #10] + 801407a: f893 e00b ldrb.w lr, [r3, #11] + 801407e: f893 800c ldrb.w r8, [r3, #12] + 8014082: f893 900d ldrb.w r9, [r3, #13] + 8014086: f893 a00e ldrb.w sl, [r3, #14] + 801408a: f893 b00f ldrb.w fp, [r3, #15] + 801408e: 7c1b ldrb r3, [r3, #16] + 8014090: 9310 str r3, [sp, #64] ; 0x40 + 8014092: f8cd b03c str.w fp, [sp, #60] ; 0x3c + 8014096: f8cd a038 str.w sl, [sp, #56] ; 0x38 + 801409a: f8cd 9034 str.w r9, [sp, #52] ; 0x34 + 801409e: f8cd 8030 str.w r8, [sp, #48] ; 0x30 + 80140a2: f8cd e02c str.w lr, [sp, #44] ; 0x2c + 80140a6: f8cd c028 str.w ip, [sp, #40] ; 0x28 + 80140aa: 9709 str r7, [sp, #36] ; 0x24 + 80140ac: 9608 str r6, [sp, #32] + 80140ae: 9507 str r5, [sp, #28] + 80140b0: 9406 str r4, [sp, #24] + 80140b2: 9005 str r0, [sp, #20] + 80140b4: 9104 str r1, [sp, #16] + 80140b6: 9203 str r2, [sp, #12] + 80140b8: 9915 ldr r1, [sp, #84] ; 0x54 + 80140ba: 9102 str r1, [sp, #8] + 80140bc: 9a14 ldr r2, [sp, #80] ; 0x50 + 80140be: 9201 str r2, [sp, #4] + 80140c0: 9b13 ldr r3, [sp, #76] ; 0x4c + 80140c2: 9300 str r3, [sp, #0] + 80140c4: 4b09 ldr r3, [pc, #36] ; (80140ec <PrintKey+0xb4>) + 80140c6: 2200 movs r2, #0 + 80140c8: 4611 mov r1, r2 + 80140ca: 2002 movs r0, #2 + 80140cc: f002 fd34 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + return; + 80140d0: e7bc b.n 801404c <PrintKey+0x14> + for( uint8_t i = 0; i < NUM_OF_KEYS; i++ ) + 80140d2: 2b0a cmp r3, #10 + 80140d4: d8ba bhi.n 801404c <PrintKey+0x14> + if( KeyLabel[i].keyID == keyID ) + 80140d6: eb03 0243 add.w r2, r3, r3, lsl #1 + 80140da: 4905 ldr r1, [pc, #20] ; (80140f0 <PrintKey+0xb8>) + 80140dc: f811 2022 ldrb.w r2, [r1, r2, lsl #2] + 80140e0: 42a2 cmp r2, r4 + 80140e2: d0b6 beq.n 8014052 <PrintKey+0x1a> + for( uint8_t i = 0; i < NUM_OF_KEYS; i++ ) + 80140e4: 3301 adds r3, #1 + 80140e6: b2db uxtb r3, r3 + 80140e8: e7f3 b.n 80140d2 <PrintKey+0x9a> + 80140ea: bf00 nop + 80140ec: 08018a28 .word 0x08018a28 + 80140f0: 08018bc0 .word 0x08018bc0 + +080140f4 <SecureElementComputeAesCmac>: +} + +SecureElementStatus_t SecureElementComputeAesCmac( uint8_t *micBxBuffer, uint8_t *buffer, uint32_t size, + KeyIdentifier_t keyID, uint32_t *cmac ) +{ + if( keyID >= MC_KE_KEY ) + 80140f4: 2b0b cmp r3, #11 + 80140f6: d80a bhi.n 801410e <SecureElementComputeAesCmac+0x1a> +{ + 80140f8: b500 push {lr} + 80140fa: b083 sub sp, #12 + { + /* Never accept multicast key identifier for cmac computation */ + return SECURE_ELEMENT_ERROR_INVALID_KEY_ID; + } + + return ComputeCmac( micBxBuffer, buffer, size, keyID, cmac ); + 80140fc: f8dd c010 ldr.w ip, [sp, #16] + 8014100: f8cd c000 str.w ip, [sp] + 8014104: f7ff ff28 bl 8013f58 <ComputeCmac> +} + 8014108: b003 add sp, #12 + 801410a: f85d fb04 ldr.w pc, [sp], #4 + return SECURE_ELEMENT_ERROR_INVALID_KEY_ID; + 801410e: 2003 movs r0, #3 +} + 8014110: 4770 bx lr + +08014112 <SecureElementVerifyAesCmac>: + +SecureElementStatus_t SecureElementVerifyAesCmac( uint8_t *buffer, uint32_t size, uint32_t expectedCmac, + KeyIdentifier_t keyID ) +{ + if( buffer == NULL ) + 8014112: b190 cbz r0, 801413a <SecureElementVerifyAesCmac+0x28> +{ + 8014114: b510 push {r4, lr} + 8014116: b084 sub sp, #16 + 8014118: 468c mov ip, r1 + 801411a: 4614 mov r4, r2 + 801411c: 4601 mov r1, r0 + return SECURE_ELEMENT_ERROR_NPE; + } + + SecureElementStatus_t retval = SECURE_ELEMENT_ERROR; +#if (LORAWAN_KMS == 0) + uint32_t compCmac = 0; + 801411e: 2000 movs r0, #0 + 8014120: 9003 str r0, [sp, #12] + retval = ComputeCmac( NULL, buffer, size, keyID, &compCmac ); + 8014122: aa03 add r2, sp, #12 + 8014124: 9200 str r2, [sp, #0] + 8014126: 4662 mov r2, ip + 8014128: f7ff ff16 bl 8013f58 <ComputeCmac> + if( retval != SECURE_ELEMENT_SUCCESS ) + 801412c: b918 cbnz r0, 8014136 <SecureElementVerifyAesCmac+0x24> + { + return retval; + } + + if( expectedCmac != compCmac ) + 801412e: 9b03 ldr r3, [sp, #12] + 8014130: 42a3 cmp r3, r4 + 8014132: d000 beq.n 8014136 <SecureElementVerifyAesCmac+0x24> + { + retval = SECURE_ELEMENT_FAIL_CMAC; + 8014134: 2001 movs r0, #1 + } + +#endif /* LORAWAN_KMS */ + + return retval; +} + 8014136: b004 add sp, #16 + 8014138: bd10 pop {r4, pc} + return SECURE_ELEMENT_ERROR_NPE; + 801413a: 2002 movs r0, #2 +} + 801413c: 4770 bx lr + +0801413e <SecureElementAesEncrypt>: + +SecureElementStatus_t SecureElementAesEncrypt( uint8_t *buffer, uint32_t size, KeyIdentifier_t keyID, + uint8_t *encBuffer ) +{ + 801413e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8014142: b0be sub sp, #248 ; 0xf8 + if( ( buffer == NULL ) || ( encBuffer == NULL ) ) + 8014144: b348 cbz r0, 801419a <SecureElementAesEncrypt+0x5c> + 8014146: 460d mov r5, r1 + 8014148: 4614 mov r4, r2 + 801414a: 461e mov r6, r3 + 801414c: 4607 mov r7, r0 + 801414e: b33b cbz r3, 80141a0 <SecureElementAesEncrypt+0x62> + { + return SECURE_ELEMENT_ERROR_NPE; + } + + /* Check if the size is divisible by 16 */ + if( ( size % 16 ) != 0 ) + 8014150: f011 0f0f tst.w r1, #15 + 8014154: d127 bne.n 80141a6 <SecureElementAesEncrypt+0x68> + return SECURE_ELEMENT_ERROR_BUF_SIZE; + } + +#if (LORAWAN_KMS == 0) + lorawan_aes_context aesContext; + memset1( aesContext.ksch, '\0', 240 ); + 8014156: 22f0 movs r2, #240 ; 0xf0 + 8014158: 2100 movs r1, #0 + 801415a: a801 add r0, sp, #4 + 801415c: f000 fa35 bl 80145ca <memset1> + + Key_t *pItem; + SecureElementStatus_t retval = GetKeyByID( keyID, &pItem ); + 8014160: 4669 mov r1, sp + 8014162: 4620 mov r0, r4 + 8014164: f7ff fed8 bl 8013f18 <GetKeyByID> + + if( retval == SECURE_ELEMENT_SUCCESS ) + 8014168: 4680 mov r8, r0 + 801416a: b118 cbz r0, 8014174 <SecureElementAesEncrypt+0x36> + retval = SECURE_ELEMENT_ERROR; + } +#endif /* LORAWAN_KMS */ + + return retval; +} + 801416c: 4640 mov r0, r8 + 801416e: b03e add sp, #248 ; 0xf8 + 8014170: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + lorawan_aes_set_key( pItem->KeyValue, SE_KEY_SIZE, &aesContext ); + 8014174: aa01 add r2, sp, #4 + 8014176: 2110 movs r1, #16 + 8014178: 9800 ldr r0, [sp, #0] + 801417a: 3001 adds r0, #1 + 801417c: f7ff fe1e bl 8013dbc <lorawan_aes_set_key> + uint8_t block = 0; + 8014180: 4644 mov r4, r8 + while( size != 0 ) + 8014182: e007 b.n 8014194 <SecureElementAesEncrypt+0x56> + lorawan_aes_encrypt( &buffer[block], &encBuffer[block], &aesContext ); + 8014184: aa01 add r2, sp, #4 + 8014186: 1931 adds r1, r6, r4 + 8014188: 1938 adds r0, r7, r4 + 801418a: f7ff fe9b bl 8013ec4 <lorawan_aes_encrypt> + block = block + 16; + 801418e: 3410 adds r4, #16 + 8014190: b2e4 uxtb r4, r4 + size = size - 16; + 8014192: 3d10 subs r5, #16 + while( size != 0 ) + 8014194: 2d00 cmp r5, #0 + 8014196: d1f5 bne.n 8014184 <SecureElementAesEncrypt+0x46> + 8014198: e7e8 b.n 801416c <SecureElementAesEncrypt+0x2e> + return SECURE_ELEMENT_ERROR_NPE; + 801419a: f04f 0802 mov.w r8, #2 + 801419e: e7e5 b.n 801416c <SecureElementAesEncrypt+0x2e> + 80141a0: f04f 0802 mov.w r8, #2 + 80141a4: e7e2 b.n 801416c <SecureElementAesEncrypt+0x2e> + return SECURE_ELEMENT_ERROR_BUF_SIZE; + 80141a6: f04f 0805 mov.w r8, #5 + 80141aa: e7df b.n 801416c <SecureElementAesEncrypt+0x2e> + +080141ac <SecureElementSetKey>: +{ + 80141ac: b530 push {r4, r5, lr} + 80141ae: b085 sub sp, #20 + if( key == NULL ) + 80141b0: 2900 cmp r1, #0 + 80141b2: d038 beq.n 8014226 <SecureElementSetKey+0x7a> + 80141b4: 468c mov ip, r1 + for( uint8_t i = 0; i < NUM_OF_KEYS; i++ ) + 80141b6: 2300 movs r3, #0 + 80141b8: 2b0a cmp r3, #10 + 80141ba: d830 bhi.n 801421e <SecureElementSetKey+0x72> + if( SeNvm->KeyList[i].KeyID == keyID ) + 80141bc: 4a1b ldr r2, [pc, #108] ; (801422c <SecureElementSetKey+0x80>) + 80141be: 6811 ldr r1, [r2, #0] + 80141c0: 461c mov r4, r3 + 80141c2: eb03 1203 add.w r2, r3, r3, lsl #4 + 80141c6: 440a add r2, r1 + 80141c8: 7e12 ldrb r2, [r2, #24] + 80141ca: 4282 cmp r2, r0 + 80141cc: d002 beq.n 80141d4 <SecureElementSetKey+0x28> + for( uint8_t i = 0; i < NUM_OF_KEYS; i++ ) + 80141ce: 3301 adds r3, #1 + 80141d0: b2db uxtb r3, r3 + 80141d2: e7f1 b.n 80141b8 <SecureElementSetKey+0xc> + if( keyID == MC_KEY_0 ) + 80141d4: 280d cmp r0, #13 + 80141d6: d00a beq.n 80141ee <SecureElementSetKey+0x42> + memcpy1( SeNvm->KeyList[i].KeyValue, key, SE_KEY_SIZE ); + 80141d8: eb03 1403 add.w r4, r3, r3, lsl #4 + 80141dc: 3418 adds r4, #24 + 80141de: 1908 adds r0, r1, r4 + 80141e0: 2210 movs r2, #16 + 80141e2: 4661 mov r1, ip + 80141e4: 3001 adds r0, #1 + 80141e6: f000 f9d8 bl 801459a <memcpy1> + return SECURE_ELEMENT_SUCCESS; + 80141ea: 2500 movs r5, #0 + 80141ec: e018 b.n 8014220 <SecureElementSetKey+0x74> + uint8_t decryptedKey[SE_KEY_SIZE] = { 0 }; + 80141ee: 2300 movs r3, #0 + 80141f0: 9300 str r3, [sp, #0] + 80141f2: 9301 str r3, [sp, #4] + 80141f4: 9302 str r3, [sp, #8] + 80141f6: 9303 str r3, [sp, #12] + retval = SecureElementAesEncrypt( key, SE_KEY_SIZE, MC_KE_KEY, decryptedKey ); + 80141f8: 466b mov r3, sp + 80141fa: 220c movs r2, #12 + 80141fc: 2110 movs r1, #16 + 80141fe: 4660 mov r0, ip + 8014200: f7ff ff9d bl 801413e <SecureElementAesEncrypt> + 8014204: 4605 mov r5, r0 + memcpy1( SeNvm->KeyList[i].KeyValue, decryptedKey, SE_KEY_SIZE ); + 8014206: 4b09 ldr r3, [pc, #36] ; (801422c <SecureElementSetKey+0x80>) + 8014208: 6818 ldr r0, [r3, #0] + 801420a: eb04 1404 add.w r4, r4, r4, lsl #4 + 801420e: 3418 adds r4, #24 + 8014210: 4420 add r0, r4 + 8014212: 2210 movs r2, #16 + 8014214: 4669 mov r1, sp + 8014216: 3001 adds r0, #1 + 8014218: f000 f9bf bl 801459a <memcpy1> + return retval; + 801421c: e000 b.n 8014220 <SecureElementSetKey+0x74> + return SECURE_ELEMENT_ERROR_INVALID_KEY_ID; + 801421e: 2503 movs r5, #3 +} + 8014220: 4628 mov r0, r5 + 8014222: b005 add sp, #20 + 8014224: bd30 pop {r4, r5, pc} + return SECURE_ELEMENT_ERROR_NPE; + 8014226: 2502 movs r5, #2 + 8014228: e7fa b.n 8014220 <SecureElementSetKey+0x74> + 801422a: bf00 nop + 801422c: 20002630 .word 0x20002630 + +08014230 <SecureElementDeriveAndStoreKey>: + +SecureElementStatus_t SecureElementDeriveAndStoreKey( uint8_t *input, KeyIdentifier_t rootKeyID, + KeyIdentifier_t targetKeyID ) +{ + if( input == NULL ) + 8014230: b1d0 cbz r0, 8014268 <SecureElementDeriveAndStoreKey+0x38> +{ + 8014232: b510 push {r4, lr} + 8014234: b084 sub sp, #16 + 8014236: 4614 mov r4, r2 + 8014238: 4684 mov ip, r0 + } + + SecureElementStatus_t retval = SECURE_ELEMENT_ERROR; + + /* In case of MC_KE_KEY, only McRootKey can be used as root key */ + if( targetKeyID == MC_KE_KEY ) + 801423a: 2a0c cmp r2, #12 + 801423c: d101 bne.n 8014242 <SecureElementDeriveAndStoreKey+0x12> + { + if( rootKeyID != MC_ROOT_KEY ) + 801423e: 290b cmp r1, #11 + 8014240: d114 bne.n 801426c <SecureElementDeriveAndStoreKey+0x3c> + return SECURE_ELEMENT_ERROR_INVALID_KEY_ID; + } + } + +#if (LORAWAN_KMS == 0) + uint8_t key[SE_KEY_SIZE] = { 0 }; + 8014242: 2300 movs r3, #0 + 8014244: 9300 str r3, [sp, #0] + 8014246: 9301 str r3, [sp, #4] + 8014248: 9302 str r3, [sp, #8] + 801424a: 9303 str r3, [sp, #12] + /* Derive key */ + retval = SecureElementAesEncrypt( input, SE_KEY_SIZE, rootKeyID, key ); + 801424c: 466b mov r3, sp + 801424e: 460a mov r2, r1 + 8014250: 2110 movs r1, #16 + 8014252: 4660 mov r0, ip + 8014254: f7ff ff73 bl 801413e <SecureElementAesEncrypt> + if( retval != SECURE_ELEMENT_SUCCESS ) + 8014258: b108 cbz r0, 801425e <SecureElementDeriveAndStoreKey+0x2e> + { + retval = SECURE_ELEMENT_ERROR; + } + return retval; +#endif /* LORAWAN_KMS */ +} + 801425a: b004 add sp, #16 + 801425c: bd10 pop {r4, pc} + retval = SecureElementSetKey( targetKeyID, key ); + 801425e: 4669 mov r1, sp + 8014260: 4620 mov r0, r4 + 8014262: f7ff ffa3 bl 80141ac <SecureElementSetKey> + if( retval != SECURE_ELEMENT_SUCCESS ) + 8014266: e7f8 b.n 801425a <SecureElementDeriveAndStoreKey+0x2a> + return SECURE_ELEMENT_ERROR_NPE; + 8014268: 2002 movs r0, #2 +} + 801426a: 4770 bx lr + return SECURE_ELEMENT_ERROR_INVALID_KEY_ID; + 801426c: 2003 movs r0, #3 + 801426e: e7f4 b.n 801425a <SecureElementDeriveAndStoreKey+0x2a> + +08014270 <SecureElementProcessJoinAccept>: + +SecureElementStatus_t SecureElementProcessJoinAccept( JoinReqIdentifier_t joinReqType, uint8_t *joinEui, + uint16_t devNonce, uint8_t *encJoinAccept, + uint8_t encJoinAcceptSize, uint8_t *decJoinAccept, + uint8_t *versionMinor ) +{ + 8014270: b5f8 push {r3, r4, r5, r6, r7, lr} + 8014272: f89d 5018 ldrb.w r5, [sp, #24] + 8014276: 9c07 ldr r4, [sp, #28] + 8014278: 9e08 ldr r6, [sp, #32] + if( ( encJoinAccept == NULL ) || ( decJoinAccept == NULL ) || ( versionMinor == NULL ) ) + 801427a: b35b cbz r3, 80142d4 <SecureElementProcessJoinAccept+0x64> + 801427c: 461f mov r7, r3 + 801427e: b35c cbz r4, 80142d8 <SecureElementProcessJoinAccept+0x68> + 8014280: b366 cbz r6, 80142dc <SecureElementProcessJoinAccept+0x6c> + { + return SECURE_ELEMENT_ERROR_NPE; + } + + /* Check that frame size isn't bigger than a JoinAccept with CFList size */ + if( encJoinAcceptSize > LORAMAC_JOIN_ACCEPT_FRAME_MAX_SIZE ) + 8014282: 2d21 cmp r5, #33 ; 0x21 + 8014284: d82c bhi.n 80142e0 <SecureElementProcessJoinAccept+0x70> + { + encKeyID = J_S_ENC_KEY; + } +#endif /* LORAMAC_VERSION */ + + memcpy1( decJoinAccept, encJoinAccept, encJoinAcceptSize ); + 8014286: 462a mov r2, r5 + 8014288: 4619 mov r1, r3 + 801428a: 4620 mov r0, r4 + 801428c: f000 f985 bl 801459a <memcpy1> + + /* Decrypt JoinAccept, skip MHDR */ + if( SecureElementAesEncrypt( encJoinAccept + LORAMAC_MHDR_FIELD_SIZE, encJoinAcceptSize - LORAMAC_MHDR_FIELD_SIZE, + 8014290: 1c63 adds r3, r4, #1 + 8014292: 2201 movs r2, #1 + 8014294: 1e69 subs r1, r5, #1 + 8014296: 18b8 adds r0, r7, r2 + 8014298: f7ff ff51 bl 801413e <SecureElementAesEncrypt> + 801429c: bb10 cbnz r0, 80142e4 <SecureElementProcessJoinAccept+0x74> + encKeyID, decJoinAccept + LORAMAC_MHDR_FIELD_SIZE ) != SECURE_ELEMENT_SUCCESS ) + { + return SECURE_ELEMENT_FAIL_ENCRYPT; + } + + *versionMinor = ( ( decJoinAccept[11] & 0x80 ) == 0x80 ) ? 1 : 0; + 801429e: 7ae3 ldrb r3, [r4, #11] + 80142a0: 09db lsrs r3, r3, #7 + 80142a2: 7033 strb r3, [r6, #0] + + uint32_t mic = GET_UINT32_LE( decJoinAccept, encJoinAcceptSize - LORAMAC_MIC_FIELD_SIZE ); + 80142a4: 1961 adds r1, r4, r5 + 80142a6: f811 2c04 ldrb.w r2, [r1, #-4] + 80142aa: f811 0c03 ldrb.w r0, [r1, #-3] + 80142ae: ea42 2200 orr.w r2, r2, r0, lsl #8 + 80142b2: f811 0c02 ldrb.w r0, [r1, #-2] + 80142b6: ea42 4200 orr.w r2, r2, r0, lsl #16 + 80142ba: f811 1c01 ldrb.w r1, [r1, #-1] + 80142be: ea42 6201 orr.w r2, r2, r1, lsl #24 + * - LoRaWAN 1.0.x : micHeader = [MHDR(1)] + * - LoRaWAN 1.1.x : micHeader = [JoinReqType(1), JoinEUI(8), DevNonce(2), MHDR(1)] + */ + + /* Verify mic */ + if( *versionMinor == 0 ) + 80142c2: b98b cbnz r3, 80142e8 <SecureElementProcessJoinAccept+0x78> + { + /* For LoRaWAN 1.0.x + * cmac = aes128_cmac(NwkKey, MHDR | JoinNonce | NetID | DevAddr | DLSettings | RxDelay | CFList | + * CFListType) + */ + if( SecureElementVerifyAesCmac( decJoinAccept, ( encJoinAcceptSize - LORAMAC_MIC_FIELD_SIZE ), mic, NWK_KEY ) != + 80142c4: 2301 movs r3, #1 + 80142c6: 1f29 subs r1, r5, #4 + 80142c8: 4620 mov r0, r4 + 80142ca: f7ff ff22 bl 8014112 <SecureElementVerifyAesCmac> + 80142ce: b140 cbz r0, 80142e2 <SecureElementProcessJoinAccept+0x72> + SECURE_ELEMENT_SUCCESS ) + { + return SECURE_ELEMENT_FAIL_CMAC; + 80142d0: 2001 movs r0, #1 + 80142d2: e006 b.n 80142e2 <SecureElementProcessJoinAccept+0x72> + return SECURE_ELEMENT_ERROR_NPE; + 80142d4: 2002 movs r0, #2 + 80142d6: e004 b.n 80142e2 <SecureElementProcessJoinAccept+0x72> + 80142d8: 2002 movs r0, #2 + 80142da: e002 b.n 80142e2 <SecureElementProcessJoinAccept+0x72> + 80142dc: 2002 movs r0, #2 + 80142de: e000 b.n 80142e2 <SecureElementProcessJoinAccept+0x72> + return SECURE_ELEMENT_ERROR_BUF_SIZE; + 80142e0: 2005 movs r0, #5 + { + return SECURE_ELEMENT_ERROR_INVALID_LORAWAM_SPEC_VERSION; + } + + return SECURE_ELEMENT_SUCCESS; +} + 80142e2: bdf8 pop {r3, r4, r5, r6, r7, pc} + return SECURE_ELEMENT_FAIL_ENCRYPT; + 80142e4: 2007 movs r0, #7 + 80142e6: e7fc b.n 80142e2 <SecureElementProcessJoinAccept+0x72> + return SECURE_ELEMENT_ERROR_INVALID_LORAWAM_SPEC_VERSION; + 80142e8: 2004 movs r0, #4 + 80142ea: e7fa b.n 80142e2 <SecureElementProcessJoinAccept+0x72> + +080142ec <SecureElementRandomNumber>: + +#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) +SecureElementStatus_t SecureElementRandomNumber( uint32_t *randomNum ) +{ + if( randomNum == NULL ) + 80142ec: b138 cbz r0, 80142fe <SecureElementRandomNumber+0x12> +{ + 80142ee: b510 push {r4, lr} + 80142f0: 4604 mov r4, r0 + { + return SECURE_ELEMENT_ERROR_NPE; + } + *randomNum = Radio.Random(); + 80142f2: 4b04 ldr r3, [pc, #16] ; (8014304 <SecureElementRandomNumber+0x18>) + 80142f4: 695b ldr r3, [r3, #20] + 80142f6: 4798 blx r3 + 80142f8: 6020 str r0, [r4, #0] + return SECURE_ELEMENT_SUCCESS; + 80142fa: 2000 movs r0, #0 +} + 80142fc: bd10 pop {r4, pc} + return SECURE_ELEMENT_ERROR_NPE; + 80142fe: 2002 movs r0, #2 +} + 8014300: 4770 bx lr + 8014302: bf00 nop + 8014304: 08018cb4 .word 0x08018cb4 + +08014308 <SecureElementSetDevEui>: +#endif /* LORAMAC_VERSION */ + +SecureElementStatus_t SecureElementSetDevEui( uint8_t *devEui ) +{ + if( devEui == NULL ) + 8014308: b140 cbz r0, 801431c <SecureElementSetDevEui+0x14> +{ + 801430a: b508 push {r3, lr} + 801430c: 4601 mov r1, r0 + { + return SECURE_ELEMENT_ERROR_NPE; + } + +#if (LORAWAN_KMS == 0) + memcpy1( SeNvm->SeNvmDevJoinKey.DevEui, devEui, SE_EUI_SIZE ); + 801430e: 2208 movs r2, #8 + 8014310: 4b03 ldr r3, [pc, #12] ; (8014320 <SecureElementSetDevEui+0x18>) + 8014312: 6818 ldr r0, [r3, #0] + 8014314: f000 f941 bl 801459a <memcpy1> + return SECURE_ELEMENT_SUCCESS; + 8014318: 2000 movs r0, #0 + memcpy1( KMSKeyBlob.DevEui, devEui, SE_EUI_SIZE ); + status = SecureElementSetID( &KMSKeyBlob ); + } + return status; +#endif /* LORAWAN_KMS */ +} + 801431a: bd08 pop {r3, pc} + return SECURE_ELEMENT_ERROR_NPE; + 801431c: 2002 movs r0, #2 +} + 801431e: 4770 bx lr + 8014320: 20002630 .word 0x20002630 + +08014324 <SecureElementGetDevEui>: + +SecureElementStatus_t SecureElementGetDevEui( uint8_t *devEui ) +{ + if( devEui == NULL ) + 8014324: b138 cbz r0, 8014336 <SecureElementGetDevEui+0x12> +{ + 8014326: b508 push {r3, lr} + { + return SECURE_ELEMENT_ERROR_NPE; + } + +#if (LORAWAN_KMS == 0) + memcpy1( devEui, SeNvm->SeNvmDevJoinKey.DevEui, SE_EUI_SIZE ); + 8014328: 2208 movs r2, #8 + 801432a: 4904 ldr r1, [pc, #16] ; (801433c <SecureElementGetDevEui+0x18>) + 801432c: 6809 ldr r1, [r1, #0] + 801432e: f000 f934 bl 801459a <memcpy1> + return SECURE_ELEMENT_SUCCESS; + 8014332: 2000 movs r0, #0 + /* get DevEui field in KMSKeyBlob handle */ + memcpy1( devEui, KMSKeyBlob.DevEui, SE_EUI_SIZE ); + } + return status; +#endif /* LORAWAN_KMS */ +} + 8014334: bd08 pop {r3, pc} + return SECURE_ELEMENT_ERROR_NPE; + 8014336: 2002 movs r0, #2 +} + 8014338: 4770 bx lr + 801433a: bf00 nop + 801433c: 20002630 .word 0x20002630 + +08014340 <SecureElementSetJoinEui>: + +SecureElementStatus_t SecureElementSetJoinEui( uint8_t *joinEui ) +{ + if( joinEui == NULL ) + 8014340: b148 cbz r0, 8014356 <SecureElementSetJoinEui+0x16> +{ + 8014342: b508 push {r3, lr} + 8014344: 4601 mov r1, r0 + { + return SECURE_ELEMENT_ERROR_NPE; + } + +#if (LORAWAN_KMS == 0) + memcpy1( SeNvm->SeNvmDevJoinKey.JoinEui, joinEui, SE_EUI_SIZE ); + 8014346: 4b05 ldr r3, [pc, #20] ; (801435c <SecureElementSetJoinEui+0x1c>) + 8014348: 6818 ldr r0, [r3, #0] + 801434a: 2208 movs r2, #8 + 801434c: 4410 add r0, r2 + 801434e: f000 f924 bl 801459a <memcpy1> + return SECURE_ELEMENT_SUCCESS; + 8014352: 2000 movs r0, #0 + memcpy1( KMSKeyBlob.JoinEui, joinEui, SE_EUI_SIZE ); + status = SecureElementSetID( &KMSKeyBlob ); + } + return status; +#endif /* LORAWAN_KMS */ +} + 8014354: bd08 pop {r3, pc} + return SECURE_ELEMENT_ERROR_NPE; + 8014356: 2002 movs r0, #2 +} + 8014358: 4770 bx lr + 801435a: bf00 nop + 801435c: 20002630 .word 0x20002630 + +08014360 <SecureElementGetJoinEui>: + +SecureElementStatus_t SecureElementGetJoinEui( uint8_t *joinEui ) +{ + if( joinEui == NULL ) + 8014360: b140 cbz r0, 8014374 <SecureElementGetJoinEui+0x14> +{ + 8014362: b508 push {r3, lr} + { + return SECURE_ELEMENT_ERROR_NPE; + } + +#if (LORAWAN_KMS == 0) + memcpy1( joinEui, SeNvm->SeNvmDevJoinKey.JoinEui, SE_EUI_SIZE ); + 8014364: 4a04 ldr r2, [pc, #16] ; (8014378 <SecureElementGetJoinEui+0x18>) + 8014366: 6811 ldr r1, [r2, #0] + 8014368: 2208 movs r2, #8 + 801436a: 4411 add r1, r2 + 801436c: f000 f915 bl 801459a <memcpy1> + return SECURE_ELEMENT_SUCCESS; + 8014370: 2000 movs r0, #0 + /* get JoinEui field from KMSKeyBlob handle */ + memcpy1( joinEui, KMSKeyBlob.JoinEui, SE_EUI_SIZE ); + } + return status; +#endif /* LORAWAN_KMS */ +} + 8014372: bd08 pop {r3, pc} + return SECURE_ELEMENT_ERROR_NPE; + 8014374: 2002 movs r0, #2 +} + 8014376: 4770 bx lr + 8014378: 20002630 .word 0x20002630 + +0801437c <SecureElementSetDevAddr>: + +SecureElementStatus_t SecureElementSetDevAddr( ActivationType_t mode, uint32_t devAddr ) +{ +#if (LORAWAN_KMS == 0) + if( mode == ACTIVATION_TYPE_OTAA ) + 801437c: 2802 cmp r0, #2 + 801437e: d004 beq.n 801438a <SecureElementSetDevAddr+0xe> + { + SeNvm->SeNvmDevJoinKey.DevAddrOTAA = devAddr; + } + else + { + SeNvm->SeNvmDevJoinKey.DevAddrABP = devAddr; + 8014380: 4b04 ldr r3, [pc, #16] ; (8014394 <SecureElementSetDevAddr+0x18>) + 8014382: 681b ldr r3, [r3, #0] + 8014384: 6159 str r1, [r3, #20] + } + } + + return status; +#endif /* LORAWAN_KMS */ +} + 8014386: 2000 movs r0, #0 + 8014388: 4770 bx lr + SeNvm->SeNvmDevJoinKey.DevAddrOTAA = devAddr; + 801438a: 4b02 ldr r3, [pc, #8] ; (8014394 <SecureElementSetDevAddr+0x18>) + 801438c: 681b ldr r3, [r3, #0] + 801438e: 6119 str r1, [r3, #16] + 8014390: e7f9 b.n 8014386 <SecureElementSetDevAddr+0xa> + 8014392: bf00 nop + 8014394: 20002630 .word 0x20002630 + +08014398 <SecureElementGetDevAddr>: + +SecureElementStatus_t SecureElementGetDevAddr( ActivationType_t mode, uint32_t *devAddr ) +{ + if( devAddr == NULL ) + 8014398: b169 cbz r1, 80143b6 <SecureElementGetDevAddr+0x1e> + { + return SECURE_ELEMENT_ERROR_NPE; + } +#if (LORAWAN_KMS == 0) + /* Recover DevAddrABP or DevAddrOTAA depending on mode */ + if( mode == ACTIVATION_TYPE_OTAA ) + 801439a: 2802 cmp r0, #2 + 801439c: d005 beq.n 80143aa <SecureElementGetDevAddr+0x12> + { + *devAddr = SeNvm->SeNvmDevJoinKey.DevAddrOTAA; + } + else + { + *devAddr = SeNvm->SeNvmDevJoinKey.DevAddrABP; + 801439e: 4a07 ldr r2, [pc, #28] ; (80143bc <SecureElementGetDevAddr+0x24>) + 80143a0: 6812 ldr r2, [r2, #0] + 80143a2: 6952 ldr r2, [r2, #20] + 80143a4: 600a str r2, [r1, #0] + } + return SECURE_ELEMENT_SUCCESS; + 80143a6: 2000 movs r0, #0 + 80143a8: 4770 bx lr + *devAddr = SeNvm->SeNvmDevJoinKey.DevAddrOTAA; + 80143aa: 4a04 ldr r2, [pc, #16] ; (80143bc <SecureElementGetDevAddr+0x24>) + 80143ac: 6812 ldr r2, [r2, #0] + 80143ae: 6912 ldr r2, [r2, #16] + 80143b0: 600a str r2, [r1, #0] + return SECURE_ELEMENT_SUCCESS; + 80143b2: 2000 movs r0, #0 + 80143b4: 4770 bx lr + return SECURE_ELEMENT_ERROR_NPE; + 80143b6: 2002 movs r0, #2 + } + } + + return status; +#endif /* LORAWAN_KMS */ +} + 80143b8: 4770 bx lr + 80143ba: bf00 nop + 80143bc: 20002630 .word 0x20002630 + +080143c0 <SecureElementInitMcuID>: +{ + 80143c0: b530 push {r4, r5, lr} + 80143c2: b085 sub sp, #20 + 80143c4: 4605 mov r5, r0 + 80143c6: 460c mov r4, r1 + uint32_t devAddrABP = 0; + 80143c8: 2300 movs r3, #0 + 80143ca: 9301 str r3, [sp, #4] + SecureElementGetDevEui( devEui ); + 80143cc: a802 add r0, sp, #8 + 80143ce: f7ff ffa9 bl 8014324 <SecureElementGetDevEui> + SecureElementGetDevAddr( ACTIVATION_TYPE_ABP, &devAddrABP ); + 80143d2: a901 add r1, sp, #4 + 80143d4: 2001 movs r0, #1 + 80143d6: f7ff ffdf bl 8014398 <SecureElementGetDevAddr> + if( seGetUniqueId != NULL ) + 80143da: b195 cbz r5, 8014402 <SecureElementInitMcuID+0x42> + for( uint8_t index = 0; index < SE_EUI_SIZE; index++ ) + 80143dc: 2300 movs r3, #0 + 80143de: 2b07 cmp r3, #7 + 80143e0: d808 bhi.n 80143f4 <SecureElementInitMcuID+0x34> + if( devEui[index] != 0 ) + 80143e2: f103 0210 add.w r2, r3, #16 + 80143e6: 446a add r2, sp + 80143e8: f812 2c08 ldrb.w r2, [r2, #-8] + 80143ec: b9aa cbnz r2, 801441a <SecureElementInitMcuID+0x5a> + for( uint8_t index = 0; index < SE_EUI_SIZE; index++ ) + 80143ee: 3301 adds r3, #1 + 80143f0: b2db uxtb r3, r3 + 80143f2: e7f4 b.n 80143de <SecureElementInitMcuID+0x1e> + bool id_init = false; + 80143f4: 2300 movs r3, #0 + if( id_init == false ) + 80143f6: b923 cbnz r3, 8014402 <SecureElementInitMcuID+0x42> + seGetUniqueId( devEui ); + 80143f8: a802 add r0, sp, #8 + 80143fa: 47a8 blx r5 + SecureElementSetDevEui( devEui ); + 80143fc: a802 add r0, sp, #8 + 80143fe: f7ff ff83 bl 8014308 <SecureElementSetDevEui> + if( ( seGetDevAddr != NULL ) && ( devAddrABP == 0 ) ) + 8014402: b13c cbz r4, 8014414 <SecureElementInitMcuID+0x54> + 8014404: 9b01 ldr r3, [sp, #4] + 8014406: b92b cbnz r3, 8014414 <SecureElementInitMcuID+0x54> + seGetDevAddr( &devAddrABP ); + 8014408: a801 add r0, sp, #4 + 801440a: 47a0 blx r4 + SecureElementSetDevAddr( ACTIVATION_TYPE_ABP, devAddrABP ); + 801440c: 9901 ldr r1, [sp, #4] + 801440e: 2001 movs r0, #1 + 8014410: f7ff ffb4 bl 801437c <SecureElementSetDevAddr> +} + 8014414: 2000 movs r0, #0 + 8014416: b005 add sp, #20 + 8014418: bd30 pop {r4, r5, pc} + id_init = true; + 801441a: 2301 movs r3, #1 + 801441c: e7eb b.n 80143f6 <SecureElementInitMcuID+0x36> + ... + +08014420 <PrintIds>: +{ + 8014420: b5f0 push {r4, r5, r6, r7, lr} + 8014422: b08f sub sp, #60 ; 0x3c + 8014424: 4605 mov r5, r0 + uint32_t devAddr = 0; + 8014426: 2400 movs r4, #0 + 8014428: 9409 str r4, [sp, #36] ; 0x24 + SecureElementGetDevEui( devEui ); + 801442a: a80a add r0, sp, #40 ; 0x28 + 801442c: f7ff ff7a bl 8014324 <SecureElementGetDevEui> + MW_LOG( TS_OFF, VLEVEL_M, "###### DevEUI: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X\r\n", HEX8( devEui ) ); + 8014430: f89d 3028 ldrb.w r3, [sp, #40] ; 0x28 + 8014434: f89d 2029 ldrb.w r2, [sp, #41] ; 0x29 + 8014438: f89d 102a ldrb.w r1, [sp, #42] ; 0x2a + 801443c: f89d 002b ldrb.w r0, [sp, #43] ; 0x2b + 8014440: f89d 602c ldrb.w r6, [sp, #44] ; 0x2c + 8014444: f89d 702d ldrb.w r7, [sp, #45] ; 0x2d + 8014448: f89d c02e ldrb.w ip, [sp, #46] ; 0x2e + 801444c: f89d e02f ldrb.w lr, [sp, #47] ; 0x2f + 8014450: f8cd e01c str.w lr, [sp, #28] + 8014454: f8cd c018 str.w ip, [sp, #24] + 8014458: 9705 str r7, [sp, #20] + 801445a: 9604 str r6, [sp, #16] + 801445c: 9003 str r0, [sp, #12] + 801445e: 9102 str r1, [sp, #8] + 8014460: 9201 str r2, [sp, #4] + 8014462: 9300 str r3, [sp, #0] + 8014464: 4b20 ldr r3, [pc, #128] ; (80144e8 <PrintIds+0xc8>) + 8014466: 4622 mov r2, r4 + 8014468: 4621 mov r1, r4 + 801446a: 2002 movs r0, #2 + 801446c: f002 fb64 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + SecureElementGetJoinEui( joinEui ); + 8014470: a80c add r0, sp, #48 ; 0x30 + 8014472: f7ff ff75 bl 8014360 <SecureElementGetJoinEui> + MW_LOG( TS_OFF, VLEVEL_M, "###### AppEUI: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X\r\n", HEX8( joinEui ) ); + 8014476: f89d 3030 ldrb.w r3, [sp, #48] ; 0x30 + 801447a: f89d 2031 ldrb.w r2, [sp, #49] ; 0x31 + 801447e: f89d 1032 ldrb.w r1, [sp, #50] ; 0x32 + 8014482: f89d 0033 ldrb.w r0, [sp, #51] ; 0x33 + 8014486: f89d 6034 ldrb.w r6, [sp, #52] ; 0x34 + 801448a: f89d 7035 ldrb.w r7, [sp, #53] ; 0x35 + 801448e: f89d c036 ldrb.w ip, [sp, #54] ; 0x36 + 8014492: f89d e037 ldrb.w lr, [sp, #55] ; 0x37 + 8014496: f8cd e01c str.w lr, [sp, #28] + 801449a: f8cd c018 str.w ip, [sp, #24] + 801449e: 9705 str r7, [sp, #20] + 80144a0: 9604 str r6, [sp, #16] + 80144a2: 9003 str r0, [sp, #12] + 80144a4: 9102 str r1, [sp, #8] + 80144a6: 9201 str r2, [sp, #4] + 80144a8: 9300 str r3, [sp, #0] + 80144aa: 4b10 ldr r3, [pc, #64] ; (80144ec <PrintIds+0xcc>) + 80144ac: 4622 mov r2, r4 + 80144ae: 4621 mov r1, r4 + 80144b0: 2002 movs r0, #2 + 80144b2: f002 fb41 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + SecureElementGetDevAddr( mode, &devAddr ); + 80144b6: a909 add r1, sp, #36 ; 0x24 + 80144b8: 4628 mov r0, r5 + 80144ba: f7ff ff6d bl 8014398 <SecureElementGetDevAddr> + MW_LOG( TS_OFF, VLEVEL_M, "###### DevAddr: %02X:%02X:%02X:%02X\r\n", + 80144be: f89d 3027 ldrb.w r3, [sp, #39] ; 0x27 + 80144c2: f89d 2026 ldrb.w r2, [sp, #38] ; 0x26 + 80144c6: f89d 1025 ldrb.w r1, [sp, #37] ; 0x25 + 80144ca: f89d 0024 ldrb.w r0, [sp, #36] ; 0x24 + 80144ce: 9003 str r0, [sp, #12] + 80144d0: 9102 str r1, [sp, #8] + 80144d2: 9201 str r2, [sp, #4] + 80144d4: 9300 str r3, [sp, #0] + 80144d6: 4b06 ldr r3, [pc, #24] ; (80144f0 <PrintIds+0xd0>) + 80144d8: 4622 mov r2, r4 + 80144da: 4621 mov r1, r4 + 80144dc: 2002 movs r0, #2 + 80144de: f002 fb2b bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 80144e2: b00f add sp, #60 ; 0x3c + 80144e4: bdf0 pop {r4, r5, r6, r7, pc} + 80144e6: bf00 nop + 80144e8: 08018a84 .word 0x08018a84 + 80144ec: 08018ac4 .word 0x08018ac4 + 80144f0: 08018b04 .word 0x08018b04 + +080144f4 <SecureElementPrintKeys>: +{ + 80144f4: b508 push {r3, lr} + PrintKey( APP_KEY ); + 80144f6: 2000 movs r0, #0 + 80144f8: f7ff fd9e bl 8014038 <PrintKey> + PrintKey( NWK_KEY ); + 80144fc: 2001 movs r0, #1 + 80144fe: f7ff fd9b bl 8014038 <PrintKey> + PrintKey( APP_S_KEY ); + 8014502: 2009 movs r0, #9 + 8014504: f7ff fd98 bl 8014038 <PrintKey> + PrintKey( NWK_S_KEY ); + 8014508: 2008 movs r0, #8 + 801450a: f7ff fd95 bl 8014038 <PrintKey> + PrintIds( ACTIVATION_TYPE_NONE ); + 801450e: 2000 movs r0, #0 + 8014510: f7ff ff86 bl 8014420 <PrintIds> +} + 8014514: 2000 movs r0, #0 + 8014516: bd08 pop {r3, pc} + +08014518 <SecureElementPrintSessionKeys>: +{ + 8014518: b510 push {r4, lr} + 801451a: 4604 mov r4, r0 + PrintKey( MC_ROOT_KEY ); + 801451c: 200b movs r0, #11 + 801451e: f7ff fd8b bl 8014038 <PrintKey> + PrintKey( MC_KE_KEY ); + 8014522: 200c movs r0, #12 + 8014524: f7ff fd88 bl 8014038 <PrintKey> + PrintKey( APP_S_KEY ); + 8014528: 2009 movs r0, #9 + 801452a: f7ff fd85 bl 8014038 <PrintKey> + PrintKey( NWK_S_KEY ); + 801452e: 2008 movs r0, #8 + 8014530: f7ff fd82 bl 8014038 <PrintKey> + PrintKey( DATABLOCK_INT_KEY ); + 8014534: 200a movs r0, #10 + 8014536: f7ff fd7f bl 8014038 <PrintKey> + PrintIds( mode ); + 801453a: 4620 mov r0, r4 + 801453c: f7ff ff70 bl 8014420 <PrintIds> +} + 8014540: 2000 movs r0, #0 + 8014542: bd10 pop {r4, pc} + +08014544 <rand1>: + +static int32_t rand1( void ); + +static int32_t rand1( void ) +{ + return ( ( next = next * 1103515245L + 12345L ) % RAND_LOCAL_MAX ); + 8014544: 4b09 ldr r3, [pc, #36] ; (801456c <rand1+0x28>) + 8014546: 681a ldr r2, [r3, #0] + 8014548: 4909 ldr r1, [pc, #36] ; (8014570 <rand1+0x2c>) + 801454a: f243 0039 movw r0, #12345 ; 0x3039 + 801454e: fb01 0002 mla r0, r1, r2, r0 + 8014552: 6018 str r0, [r3, #0] + 8014554: 2303 movs r3, #3 + 8014556: fba3 2300 umull r2, r3, r3, r0 + 801455a: 1ac2 subs r2, r0, r3 + 801455c: eb03 0352 add.w r3, r3, r2, lsr #1 + 8014560: 0f9b lsrs r3, r3, #30 + 8014562: ebc3 73c3 rsb r3, r3, r3, lsl #31 +} + 8014566: 1ac0 subs r0, r0, r3 + 8014568: 4770 bx lr + 801456a: bf00 nop + 801456c: 200008bc .word 0x200008bc + 8014570: 41c64e6d .word 0x41c64e6d + +08014574 <srand1>: + +void srand1( uint32_t seed ) +{ + next = seed; + 8014574: 4b01 ldr r3, [pc, #4] ; (801457c <srand1+0x8>) + 8014576: 6018 str r0, [r3, #0] +} + 8014578: 4770 bx lr + 801457a: bf00 nop + 801457c: 200008bc .word 0x200008bc + +08014580 <randr>: +// Standard random functions redefinition end + +int32_t randr( int32_t min, int32_t max ) +{ + 8014580: b538 push {r3, r4, r5, lr} + 8014582: 4605 mov r5, r0 + 8014584: 460c mov r4, r1 + return ( int32_t )rand1( ) % ( max - min + 1 ) + min; + 8014586: f7ff ffdd bl 8014544 <rand1> + 801458a: 1b61 subs r1, r4, r5 + 801458c: 3101 adds r1, #1 + 801458e: fb90 f3f1 sdiv r3, r0, r1 + 8014592: fb01 0013 mls r0, r1, r3, r0 +} + 8014596: 4428 add r0, r5 + 8014598: bd38 pop {r3, r4, r5, pc} + +0801459a <memcpy1>: + +void memcpy1( uint8_t *dst, const uint8_t *src, uint16_t size ) +{ + while( size-- ) + 801459a: e004 b.n 80145a6 <memcpy1+0xc> + { + *dst++ = *src++; + 801459c: f811 2b01 ldrb.w r2, [r1], #1 + 80145a0: f800 2b01 strb.w r2, [r0], #1 + while( size-- ) + 80145a4: 461a mov r2, r3 + 80145a6: 1e53 subs r3, r2, #1 + 80145a8: b29b uxth r3, r3 + 80145aa: 2a00 cmp r2, #0 + 80145ac: d1f6 bne.n 801459c <memcpy1+0x2> + } +} + 80145ae: 4770 bx lr + +080145b0 <memcpyr>: + +void memcpyr( uint8_t *dst, const uint8_t *src, uint16_t size ) +{ + dst = dst + ( size - 1 ); + 80145b0: 1e53 subs r3, r2, #1 + 80145b2: 4418 add r0, r3 + while( size-- ) + 80145b4: e004 b.n 80145c0 <memcpyr+0x10> + { + *dst-- = *src++; + 80145b6: f811 2b01 ldrb.w r2, [r1], #1 + 80145ba: f800 2901 strb.w r2, [r0], #-1 + while( size-- ) + 80145be: 461a mov r2, r3 + 80145c0: 1e53 subs r3, r2, #1 + 80145c2: b29b uxth r3, r3 + 80145c4: 2a00 cmp r2, #0 + 80145c6: d1f6 bne.n 80145b6 <memcpyr+0x6> + } +} + 80145c8: 4770 bx lr + +080145ca <memset1>: + +void memset1( uint8_t *dst, uint8_t value, uint16_t size ) +{ + while( size-- ) + 80145ca: e002 b.n 80145d2 <memset1+0x8> + { + *dst++ = value; + 80145cc: f800 1b01 strb.w r1, [r0], #1 + while( size-- ) + 80145d0: 461a mov r2, r3 + 80145d2: 1e53 subs r3, r2, #1 + 80145d4: b29b uxth r3, r3 + 80145d6: 2a00 cmp r2, #0 + 80145d8: d1f8 bne.n 80145cc <memset1+0x2> + } +} + 80145da: 4770 bx lr + +080145dc <Crc32>: +uint32_t Crc32( uint8_t *buffer, uint16_t length ) +{ + // CRC initial value + uint32_t crc = 0xFFFFFFFF; + + if( buffer == NULL ) + 80145dc: b1f0 cbz r0, 801461c <Crc32+0x40> +{ + 80145de: b510 push {r4, lr} + 80145e0: 4604 mov r4, r0 + { + return 0; + } + + for( uint16_t i = 0; i < length; ++i ) + 80145e2: f04f 0e00 mov.w lr, #0 + uint32_t crc = 0xFFFFFFFF; + 80145e6: f04f 30ff mov.w r0, #4294967295 + 80145ea: e00e b.n 801460a <Crc32+0x2e> + { + crc ^= ( uint32_t )buffer[i]; + for( uint16_t i = 0; i < 8; i++ ) + { + crc = ( crc >> 1 ) ^ ( reversedPolynom & ~( ( crc & 0x01 ) - 1 ) ); + 80145ec: f340 0c00 sbfx ip, r0, #0, #1 + 80145f0: 4a0b ldr r2, [pc, #44] ; (8014620 <Crc32+0x44>) + 80145f2: ea0c 0202 and.w r2, ip, r2 + 80145f6: ea82 0050 eor.w r0, r2, r0, lsr #1 + for( uint16_t i = 0; i < 8; i++ ) + 80145fa: 3301 adds r3, #1 + 80145fc: b29b uxth r3, r3 + 80145fe: 2b07 cmp r3, #7 + 8014600: d9f4 bls.n 80145ec <Crc32+0x10> + for( uint16_t i = 0; i < length; ++i ) + 8014602: f10e 0e01 add.w lr, lr, #1 + 8014606: fa1f fe8e uxth.w lr, lr + 801460a: 458e cmp lr, r1 + 801460c: d204 bcs.n 8014618 <Crc32+0x3c> + crc ^= ( uint32_t )buffer[i]; + 801460e: f814 300e ldrb.w r3, [r4, lr] + 8014612: 4058 eors r0, r3 + for( uint16_t i = 0; i < 8; i++ ) + 8014614: 2300 movs r3, #0 + 8014616: e7f2 b.n 80145fe <Crc32+0x22> + } + } + + return ~crc; + 8014618: 43c0 mvns r0, r0 +} + 801461a: bd10 pop {r4, pc} + return 0; + 801461c: 2000 movs r0, #0 +} + 801461e: 4770 bx lr + 8014620: edb88320 .word 0xedb88320 + +08014624 <RadioCheckRfFrequency>: +} + +static bool RadioCheckRfFrequency( uint32_t frequency ) +{ + return true; +} + 8014624: 2001 movs r0, #1 + 8014626: 4770 bx lr + +08014628 <RadioGetLoRaBandwidthInHz>: + +static uint32_t RadioGetLoRaBandwidthInHz( RadioLoRaBandwidths_t bw ) +{ + uint32_t bandwidthInHz = 0; + + switch( bw ) + 8014628: 280a cmp r0, #10 + 801462a: d807 bhi.n 801463c <RadioGetLoRaBandwidthInHz+0x14> + 801462c: e8df f000 tbb [pc, r0] + 8014630: 17110b20 .word 0x17110b20 + 8014634: 061e1c1a .word 0x061e1c1a + 8014638: 0e08 .short 0x0e08 + 801463a: 14 .byte 0x14 + 801463b: 00 .byte 0x00 + 801463c: 2000 movs r0, #0 + 801463e: 4770 bx lr + { + case LORA_BW_007: + bandwidthInHz = 7812UL; + break; + case LORA_BW_010: + bandwidthInHz = 10417UL; + 8014640: f642 00b1 movw r0, #10417 ; 0x28b1 + break; + 8014644: 4770 bx lr + case LORA_BW_015: + bandwidthInHz = 15625UL; + 8014646: f643 5009 movw r0, #15625 ; 0x3d09 + break; + 801464a: 4770 bx lr + case LORA_BW_020: + bandwidthInHz = 20833UL; + 801464c: f245 1061 movw r0, #20833 ; 0x5161 + break; + 8014650: 4770 bx lr + case LORA_BW_031: + bandwidthInHz = 31250UL; + 8014652: f647 2012 movw r0, #31250 ; 0x7a12 + break; + 8014656: 4770 bx lr + case LORA_BW_041: + bandwidthInHz = 41667UL; + 8014658: f24a 20c3 movw r0, #41667 ; 0xa2c3 + break; + 801465c: 4770 bx lr + case LORA_BW_062: + bandwidthInHz = 62500UL; + 801465e: f24f 4024 movw r0, #62500 ; 0xf424 + break; + 8014662: 4770 bx lr + case LORA_BW_125: + bandwidthInHz = 125000UL; + 8014664: 4804 ldr r0, [pc, #16] ; (8014678 <RadioGetLoRaBandwidthInHz+0x50>) + break; + 8014666: 4770 bx lr + case LORA_BW_250: + bandwidthInHz = 250000UL; + 8014668: 4804 ldr r0, [pc, #16] ; (801467c <RadioGetLoRaBandwidthInHz+0x54>) + break; + 801466a: 4770 bx lr + case LORA_BW_500: + bandwidthInHz = 500000UL; + 801466c: 4804 ldr r0, [pc, #16] ; (8014680 <RadioGetLoRaBandwidthInHz+0x58>) + break; + 801466e: 4770 bx lr + bandwidthInHz = 7812UL; + 8014670: f641 6084 movw r0, #7812 ; 0x1e84 + } + + return bandwidthInHz; +} + 8014674: 4770 bx lr + 8014676: bf00 nop + 8014678: 0001e848 .word 0x0001e848 + 801467c: 0003d090 .word 0x0003d090 + 8014680: 0007a120 .word 0x0007a120 + +08014684 <RadioGetGfskTimeOnAirNumerator>: + +static uint32_t RadioGetGfskTimeOnAirNumerator( uint32_t datarate, uint8_t coderate, + uint16_t preambleLen, bool fixLen, uint8_t payloadLen, + bool crcOn ) +{ + 8014684: f89d 1004 ldrb.w r1, [sp, #4] + return ( preambleLen << 3 ) + + 8014688: 00d2 lsls r2, r2, #3 + ( ( fixLen == false ) ? 8 : 0 ) + 24 + + 801468a: b953 cbnz r3, 80146a2 <RadioGetGfskTimeOnAirNumerator+0x1e> + 801468c: 2308 movs r3, #8 + return ( preambleLen << 3 ) + + 801468e: 441a add r2, r3 + ( ( fixLen == false ) ? 8 : 0 ) + 24 + + 8014690: 3218 adds r2, #24 + ( ( payloadLen + ( ( crcOn == true ) ? 2 : 0 ) ) << 3 ); + 8014692: b141 cbz r1, 80146a6 <RadioGetGfskTimeOnAirNumerator+0x22> + 8014694: 2302 movs r3, #2 + 8014696: f89d 0000 ldrb.w r0, [sp] + 801469a: 4418 add r0, r3 +} + 801469c: eb02 00c0 add.w r0, r2, r0, lsl #3 + 80146a0: 4770 bx lr + ( ( fixLen == false ) ? 8 : 0 ) + 24 + + 80146a2: 2300 movs r3, #0 + 80146a4: e7f3 b.n 801468e <RadioGetGfskTimeOnAirNumerator+0xa> + ( ( payloadLen + ( ( crcOn == true ) ? 2 : 0 ) ) << 3 ); + 80146a6: 2300 movs r3, #0 + 80146a8: e7f5 b.n 8014696 <RadioGetGfskTimeOnAirNumerator+0x12> + +080146aa <RadioGetLoRaTimeOnAirNumerator>: + +static uint32_t RadioGetLoRaTimeOnAirNumerator( uint32_t bandwidth, + uint32_t datarate, uint8_t coderate, + uint16_t preambleLen, bool fixLen, uint8_t payloadLen, + bool crcOn ) +{ + 80146aa: b570 push {r4, r5, r6, lr} + 80146ac: f89d 4010 ldrb.w r4, [sp, #16] + 80146b0: f89d 5018 ldrb.w r5, [sp, #24] + int32_t crDenom = coderate + 4; + 80146b4: 3204 adds r2, #4 + bool lowDatareOptimize = false; + + // Ensure that the preamble length is at least 12 symbols when using SF5 or SF6 + if( ( datarate == 5 ) || ( datarate == 6 ) ) + 80146b6: f1a1 0c05 sub.w ip, r1, #5 + 80146ba: f1bc 0f01 cmp.w ip, #1 + 80146be: d931 bls.n 8014724 <RadioGetLoRaTimeOnAirNumerator+0x7a> + { + preambleLen = 12; + } + } + + if( ( ( bandwidth == 0 ) && ( ( datarate == 11 ) || ( datarate == 12 ) ) ) || + 80146c0: b918 cbnz r0, 80146ca <RadioGetLoRaTimeOnAirNumerator+0x20> + 80146c2: f1a1 060b sub.w r6, r1, #11 + 80146c6: 2e01 cmp r6, #1 + 80146c8: d934 bls.n 8014734 <RadioGetLoRaTimeOnAirNumerator+0x8a> + 80146ca: 2801 cmp r0, #1 + 80146cc: d02e beq.n 801472c <RadioGetLoRaTimeOnAirNumerator+0x82> + bool lowDatareOptimize = false; + 80146ce: 2600 movs r6, #0 + { + lowDatareOptimize = true; + } + + int32_t ceilDenominator; + int32_t ceilNumerator = ( payloadLen << 3 ) + + 80146d0: f89d c014 ldrb.w ip, [sp, #20] + 80146d4: ea4f 0ccc mov.w ip, ip, lsl #3 + ( crcOn ? 16 : 0 ) - + 80146d8: b385 cbz r5, 801473c <RadioGetLoRaTimeOnAirNumerator+0x92> + 80146da: 2010 movs r0, #16 + int32_t ceilNumerator = ( payloadLen << 3 ) + + 80146dc: 4484 add ip, r0 + ( 4 * datarate ) + + 80146de: 0088 lsls r0, r1, #2 + ( crcOn ? 16 : 0 ) - + 80146e0: ebac 0c81 sub.w ip, ip, r1, lsl #2 + ( fixLen ? 0 : 20 ); + 80146e4: b364 cbz r4, 8014740 <RadioGetLoRaTimeOnAirNumerator+0x96> + 80146e6: f04f 0e00 mov.w lr, #0 + ( 4 * datarate ) + + 80146ea: 44f4 add ip, lr + + if( datarate <= 6 ) + 80146ec: 2906 cmp r1, #6 + 80146ee: d904 bls.n 80146fa <RadioGetLoRaTimeOnAirNumerator+0x50> + { + ceilDenominator = 4 * datarate; + } + else + { + ceilNumerator += 8; + 80146f0: f10c 0c08 add.w ip, ip, #8 + + if( lowDatareOptimize == true ) + 80146f4: b10e cbz r6, 80146fa <RadioGetLoRaTimeOnAirNumerator+0x50> + { + ceilDenominator = 4 * ( datarate - 2 ); + 80146f6: 1e88 subs r0, r1, #2 + 80146f8: 0080 lsls r0, r0, #2 + { + ceilDenominator = 4 * datarate; + } + } + + if( ceilNumerator < 0 ) + 80146fa: f1bc 0f00 cmp.w ip, #0 + 80146fe: db22 blt.n 8014746 <RadioGetLoRaTimeOnAirNumerator+0x9c> + ceilNumerator = 0; + } + + // Perform integral ceil() + int32_t intermediate = + ( ( ceilNumerator + ceilDenominator - 1 ) / ceilDenominator ) * crDenom + preambleLen + 12; + 8014700: 4484 add ip, r0 + 8014702: f10c 3cff add.w ip, ip, #4294967295 + 8014706: fb9c fcf0 sdiv ip, ip, r0 + 801470a: fb02 330c mla r3, r2, ip, r3 + int32_t intermediate = + 801470e: f103 000c add.w r0, r3, #12 + + if( datarate <= 6 ) + 8014712: 2906 cmp r1, #6 + 8014714: d801 bhi.n 801471a <RadioGetLoRaTimeOnAirNumerator+0x70> + { + intermediate += 2; + 8014716: f103 000e add.w r0, r3, #14 + } + + return ( uint32_t )( ( 4 * intermediate + 1 ) * ( 1 << ( datarate - 2 ) ) ); + 801471a: 0080 lsls r0, r0, #2 + 801471c: 3001 adds r0, #1 + 801471e: 3902 subs r1, #2 +} + 8014720: 4088 lsls r0, r1 + 8014722: bd70 pop {r4, r5, r6, pc} + if( preambleLen < 12 ) + 8014724: 2b0b cmp r3, #11 + 8014726: d8cb bhi.n 80146c0 <RadioGetLoRaTimeOnAirNumerator+0x16> + preambleLen = 12; + 8014728: 230c movs r3, #12 + 801472a: e7c9 b.n 80146c0 <RadioGetLoRaTimeOnAirNumerator+0x16> + ( ( bandwidth == 1 ) && ( datarate == 12 ) ) ) + 801472c: 290c cmp r1, #12 + 801472e: d003 beq.n 8014738 <RadioGetLoRaTimeOnAirNumerator+0x8e> + bool lowDatareOptimize = false; + 8014730: 2600 movs r6, #0 + 8014732: e7cd b.n 80146d0 <RadioGetLoRaTimeOnAirNumerator+0x26> + lowDatareOptimize = true; + 8014734: 2601 movs r6, #1 + 8014736: e7cb b.n 80146d0 <RadioGetLoRaTimeOnAirNumerator+0x26> + 8014738: 2601 movs r6, #1 + 801473a: e7c9 b.n 80146d0 <RadioGetLoRaTimeOnAirNumerator+0x26> + ( crcOn ? 16 : 0 ) - + 801473c: 2000 movs r0, #0 + 801473e: e7cd b.n 80146dc <RadioGetLoRaTimeOnAirNumerator+0x32> + ( fixLen ? 0 : 20 ); + 8014740: f04f 0e14 mov.w lr, #20 + 8014744: e7d1 b.n 80146ea <RadioGetLoRaTimeOnAirNumerator+0x40> + ceilNumerator = 0; + 8014746: f04f 0c00 mov.w ip, #0 + 801474a: e7d9 b.n 8014700 <RadioGetLoRaTimeOnAirNumerator+0x56> + +0801474c <RadioTimeOnAir>: + +static uint32_t RadioTimeOnAir( RadioModems_t modem, uint32_t bandwidth, + uint32_t datarate, uint8_t coderate, + uint16_t preambleLen, bool fixLen, uint8_t payloadLen, + bool crcOn ) +{ + 801474c: b5f0 push {r4, r5, r6, r7, lr} + 801474e: b085 sub sp, #20 + 8014750: 460e mov r6, r1 + 8014752: 4615 mov r5, r2 + 8014754: 4619 mov r1, r3 + 8014756: f8bd 2028 ldrh.w r2, [sp, #40] ; 0x28 + 801475a: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 801475e: f89d 7030 ldrb.w r7, [sp, #48] ; 0x30 + 8014762: f89d c034 ldrb.w ip, [sp, #52] ; 0x34 + uint32_t numerator = 0; + uint32_t denominator = 1; + + switch( modem ) + 8014766: b148 cbz r0, 801477c <RadioTimeOnAir+0x30> + 8014768: 2801 cmp r0, #1 + 801476a: d012 beq.n 8014792 <RadioTimeOnAir+0x46> + 801476c: 2501 movs r5, #1 + 801476e: 2400 movs r4, #0 + break; + default: + break; + } + // Perform integral ceil() + return DIVC( numerator, denominator ); + 8014770: 442c add r4, r5 + 8014772: 1e60 subs r0, r4, #1 +} + 8014774: fbb0 f0f5 udiv r0, r0, r5 + 8014778: b005 add sp, #20 + 801477a: bdf0 pop {r4, r5, r6, r7, pc} + numerator = 1000U * RadioGetGfskTimeOnAirNumerator( datarate, coderate, + 801477c: f8cd c004 str.w ip, [sp, #4] + 8014780: 9700 str r7, [sp, #0] + 8014782: 4628 mov r0, r5 + 8014784: f7ff ff7e bl 8014684 <RadioGetGfskTimeOnAirNumerator> + 8014788: f44f 737a mov.w r3, #1000 ; 0x3e8 + 801478c: fb03 f400 mul.w r4, r3, r0 + break; + 8014790: e7ee b.n 8014770 <RadioTimeOnAir+0x24> + numerator = 1000U * RadioGetLoRaTimeOnAirNumerator( bandwidth, datarate, + 8014792: f8cd c008 str.w ip, [sp, #8] + 8014796: 9701 str r7, [sp, #4] + 8014798: 9300 str r3, [sp, #0] + 801479a: 4613 mov r3, r2 + 801479c: 460a mov r2, r1 + 801479e: 4629 mov r1, r5 + 80147a0: 4630 mov r0, r6 + 80147a2: f7ff ff82 bl 80146aa <RadioGetLoRaTimeOnAirNumerator> + 80147a6: f44f 737a mov.w r3, #1000 ; 0x3e8 + 80147aa: fb03 f400 mul.w r4, r3, r0 + denominator = RadioGetLoRaBandwidthInHz( Bandwidths[bandwidth] ); + 80147ae: 4b03 ldr r3, [pc, #12] ; (80147bc <RadioTimeOnAir+0x70>) + 80147b0: 5d98 ldrb r0, [r3, r6] + 80147b2: f7ff ff39 bl 8014628 <RadioGetLoRaBandwidthInHz> + 80147b6: 4605 mov r5, r0 + break; + 80147b8: e7da b.n 8014770 <RadioTimeOnAir+0x24> + 80147ba: bf00 nop + 80147bc: 08018cb0 .word 0x08018cb0 + +080147c0 <RadioOnTxTimeoutProcess>: +{ + RADIO_RX_TIMEOUT_PROCESS(); +} + +static void RadioOnTxTimeoutProcess( void ) +{ + 80147c0: b508 push {r3, lr} + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BRR, PinMask); + 80147c2: 4b05 ldr r3, [pc, #20] ; (80147d8 <RadioOnTxTimeoutProcess+0x18>) + 80147c4: f44f 5200 mov.w r2, #8192 ; 0x2000 + 80147c8: 629a str r2, [r3, #40] ; 0x28 + DBG_GPIO_RADIO_TX( RST ); + + if( ( RadioEvents != NULL ) && ( RadioEvents->TxTimeout != NULL ) ) + 80147ca: 4b04 ldr r3, [pc, #16] ; (80147dc <RadioOnTxTimeoutProcess+0x1c>) + 80147cc: 681b ldr r3, [r3, #0] + 80147ce: b113 cbz r3, 80147d6 <RadioOnTxTimeoutProcess+0x16> + 80147d0: 685b ldr r3, [r3, #4] + 80147d2: b103 cbz r3, 80147d6 <RadioOnTxTimeoutProcess+0x16> + { + RadioEvents->TxTimeout( ); + 80147d4: 4798 blx r3 + } +} + 80147d6: bd08 pop {r3, pc} + 80147d8: 48000400 .word 0x48000400 + 80147dc: 20002734 .word 0x20002734 + +080147e0 <RadioOnTxTimeoutIrq>: +{ + 80147e0: b508 push {r3, lr} + RADIO_TX_TIMEOUT_PROCESS(); + 80147e2: f7ff ffed bl 80147c0 <RadioOnTxTimeoutProcess> +} + 80147e6: bd08 pop {r3, pc} + +080147e8 <RadioOnRxTimeoutProcess>: + +static void RadioOnRxTimeoutProcess( void ) +{ + 80147e8: b508 push {r3, lr} + 80147ea: 4b05 ldr r3, [pc, #20] ; (8014800 <RadioOnRxTimeoutProcess+0x18>) + 80147ec: f44f 5280 mov.w r2, #4096 ; 0x1000 + 80147f0: 629a str r2, [r3, #40] ; 0x28 + DBG_GPIO_RADIO_RX( RST ); + + if( ( RadioEvents != NULL ) && ( RadioEvents->RxTimeout != NULL ) ) + 80147f2: 4b04 ldr r3, [pc, #16] ; (8014804 <RadioOnRxTimeoutProcess+0x1c>) + 80147f4: 681b ldr r3, [r3, #0] + 80147f6: b113 cbz r3, 80147fe <RadioOnRxTimeoutProcess+0x16> + 80147f8: 68db ldr r3, [r3, #12] + 80147fa: b103 cbz r3, 80147fe <RadioOnRxTimeoutProcess+0x16> + { + RadioEvents->RxTimeout( ); + 80147fc: 4798 blx r3 + } +} + 80147fe: bd08 pop {r3, pc} + 8014800: 48000400 .word 0x48000400 + 8014804: 20002734 .word 0x20002734 + +08014808 <RadioOnRxTimeoutIrq>: +{ + 8014808: b508 push {r3, lr} + RADIO_RX_TIMEOUT_PROCESS(); + 801480a: f7ff ffed bl 80147e8 <RadioOnRxTimeoutProcess> +} + 801480e: bd08 pop {r3, pc} + +08014810 <payload_integration>: + SUBGRF_SetTxContinuousWave( ); +} + +#if (RADIO_SIGFOX_ENABLE == 1) +static void payload_integration( uint8_t *outBuffer, uint8_t *inBuffer, uint8_t size ) +{ + 8014810: b570 push {r4, r5, r6, lr} + uint8_t index_byte; + uint8_t index_bit_out; + uint8_t index_byte_out; + int32_t i = 0; + + for( i = 0; i < size; i++ ) + 8014812: 2300 movs r3, #0 + 8014814: e005 b.n 8014822 <payload_integration+0x12> + { + /* reverse all inputs */ + inBuffer[i] = ~inBuffer[i]; + 8014816: 5ccc ldrb r4, [r1, r3] + 8014818: 43e4 mvns r4, r4 + 801481a: 54cc strb r4, [r1, r3] + /* init outBuffer */ + outBuffer[i] = 0; + 801481c: 2400 movs r4, #0 + 801481e: 54c4 strb r4, [r0, r3] + for( i = 0; i < size; i++ ) + 8014820: 3301 adds r3, #1 + 8014822: 429a cmp r2, r3 + 8014824: dcf7 bgt.n 8014816 <payload_integration+0x6> + } + + for( i = 0; i < ( size * 8 ); i++ ) + 8014826: 2300 movs r3, #0 + uint8_t prevInt = 0; + 8014828: 461c mov r4, r3 + 801482a: e011 b.n 8014850 <payload_integration+0x40> + { + /* index to take bit in inBuffer */ + index_bit = 7 - ( i % 8 ); + index_byte = i / 8; + 801482c: f103 0c07 add.w ip, r3, #7 + 8014830: e022 b.n 8014878 <payload_integration+0x68> + /* index to place bit in outBuffer is shifted 1 bit right */ + index_bit_out = 7 - ( ( i + 1 ) % 8 ); + index_byte_out = ( i + 1 ) / 8; + /* extract current bit from input */ + currBit = ( inBuffer[index_byte] >> index_bit ) & 0x01; + 8014832: b2ed uxtb r5, r5 + 8014834: 5d4d ldrb r5, [r1, r5] + 8014836: fa45 f50e asr.w r5, r5, lr + 801483a: f005 0501 and.w r5, r5, #1 + /* integration */ + prevInt ^= currBit; + 801483e: 406c eors r4, r5 + /* write result integration in output */ + outBuffer[index_byte_out] |= ( prevInt << index_bit_out ); + 8014840: f3c6 05c7 ubfx r5, r6, #3, #8 + 8014844: fa04 fc0c lsl.w ip, r4, ip + 8014848: 5d46 ldrb r6, [r0, r5] + 801484a: ea46 060c orr.w r6, r6, ip + 801484e: 5546 strb r6, [r0, r5] + for( i = 0; i < ( size * 8 ); i++ ) + 8014850: ebb3 0fc2 cmp.w r3, r2, lsl #3 + 8014854: da26 bge.n 80148a4 <payload_integration+0x94> + index_bit = 7 - ( i % 8 ); + 8014856: 425d negs r5, r3 + 8014858: f003 0c07 and.w ip, r3, #7 + 801485c: f005 0507 and.w r5, r5, #7 + 8014860: bf58 it pl + 8014862: f1c5 0c00 rsbpl ip, r5, #0 + 8014866: fa5f fe8c uxtb.w lr, ip + 801486a: f1ce 0e07 rsb lr, lr, #7 + 801486e: fa5f fe8e uxtb.w lr, lr + index_byte = i / 8; + 8014872: 469c mov ip, r3 + 8014874: 2b00 cmp r3, #0 + 8014876: dbd9 blt.n 801482c <payload_integration+0x1c> + 8014878: ea4f 05ec mov.w r5, ip, asr #3 + index_bit_out = 7 - ( ( i + 1 ) % 8 ); + 801487c: 3301 adds r3, #1 + 801487e: 425e negs r6, r3 + 8014880: f003 0c07 and.w ip, r3, #7 + 8014884: f006 0607 and.w r6, r6, #7 + 8014888: bf58 it pl + 801488a: f1c6 0c00 rsbpl ip, r6, #0 + 801488e: fa5f fc8c uxtb.w ip, ip + 8014892: f1cc 0c07 rsb ip, ip, #7 + 8014896: fa5f fc8c uxtb.w ip, ip + index_byte_out = ( i + 1 ) / 8; + 801489a: 461e mov r6, r3 + 801489c: 2b00 cmp r3, #0 + 801489e: dac8 bge.n 8014832 <payload_integration+0x22> + 80148a0: 1dde adds r6, r3, #7 + 80148a2: e7c6 b.n 8014832 <payload_integration+0x22> + } + + outBuffer[size] = ( prevInt << 7 ) | ( prevInt << 6 ) | ( ( ( !prevInt ) & 0x01 ) << 5 ) ; + 80148a4: 01a3 lsls r3, r4, #6 + 80148a6: ea43 13c4 orr.w r3, r3, r4, lsl #7 + 80148aa: b25b sxtb r3, r3 + 80148ac: b91c cbnz r4, 80148b6 <payload_integration+0xa6> + 80148ae: 2120 movs r1, #32 + 80148b0: 430b orrs r3, r1 + 80148b2: 5483 strb r3, [r0, r2] +} + 80148b4: bd70 pop {r4, r5, r6, pc} + outBuffer[size] = ( prevInt << 7 ) | ( prevInt << 6 ) | ( ( ( !prevInt ) & 0x01 ) << 5 ) ; + 80148b6: 2100 movs r1, #0 + 80148b8: e7fa b.n 80148b0 <payload_integration+0xa0> + +080148ba <RadioLrFhssSetCfg>: + return status; + } + SubgRf.lr_fhss.is_lr_fhss_on = true; +#endif /* RADIO_LR_FHSS_IS_ON == 1 */ + return status; +} + 80148ba: 2001 movs r0, #1 + 80148bc: 4770 bx lr + +080148be <RadioLrFhssGetTimeOnAirInMs>: + + return RADIO_STATUS_OK; +#else + return RADIO_STATUS_UNSUPPORTED_FEATURE; +#endif /* RADIO_LR_FHSS_IS_ON */ + 80148be: 2001 movs r0, #1 + 80148c0: 4770 bx lr + ... + +080148c4 <RadioSetMaxPayloadLength>: +{ + 80148c4: b508 push {r3, lr} + if( modem == MODEM_LORA ) + 80148c6: 2801 cmp r0, #1 + 80148c8: d004 beq.n 80148d4 <RadioSetMaxPayloadLength+0x10> + if( SubgRf.PacketParams.Params.Gfsk.HeaderType == RADIO_PACKET_VARIABLE_LENGTH ) + 80148ca: 4b0a ldr r3, [pc, #40] ; (80148f4 <RadioSetMaxPayloadLength+0x30>) + 80148cc: 7d5b ldrb r3, [r3, #21] + 80148ce: 2b01 cmp r3, #1 + 80148d0: d008 beq.n 80148e4 <RadioSetMaxPayloadLength+0x20> +} + 80148d2: bd08 pop {r3, pc} + SubgRf.PacketParams.Params.LoRa.PayloadLength = MaxPayloadLength = max; + 80148d4: 4b08 ldr r3, [pc, #32] ; (80148f8 <RadioSetMaxPayloadLength+0x34>) + 80148d6: 7019 strb r1, [r3, #0] + 80148d8: 4806 ldr r0, [pc, #24] ; (80148f4 <RadioSetMaxPayloadLength+0x30>) + 80148da: 77c1 strb r1, [r0, #31] + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 80148dc: 300e adds r0, #14 + 80148de: f001 fe3d bl 801655c <SUBGRF_SetPacketParams> + 80148e2: e7f6 b.n 80148d2 <RadioSetMaxPayloadLength+0xe> + SubgRf.PacketParams.Params.Gfsk.PayloadLength = MaxPayloadLength = max; + 80148e4: 4b04 ldr r3, [pc, #16] ; (80148f8 <RadioSetMaxPayloadLength+0x34>) + 80148e6: 7019 strb r1, [r3, #0] + 80148e8: 4802 ldr r0, [pc, #8] ; (80148f4 <RadioSetMaxPayloadLength+0x30>) + 80148ea: 7581 strb r1, [r0, #22] + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 80148ec: 300e adds r0, #14 + 80148ee: f001 fe35 bl 801655c <SUBGRF_SetPacketParams> +} + 80148f2: e7ee b.n 80148d2 <RadioSetMaxPayloadLength+0xe> + 80148f4: 20002750 .word 0x20002750 + 80148f8: 200008c0 .word 0x200008c0 + +080148fc <RadioRead>: +{ + 80148fc: b508 push {r3, lr} + return SUBGRF_ReadRegister( addr ); + 80148fe: f001 f9c9 bl 8015c94 <SUBGRF_ReadRegister> +} + 8014902: bd08 pop {r3, pc} + +08014904 <RadioWrite>: +{ + 8014904: b508 push {r3, lr} + SUBGRF_WriteRegister( addr, data ); + 8014906: f001 f9b5 bl 8015c74 <SUBGRF_WriteRegister> +} + 801490a: bd08 pop {r3, pc} + +0801490c <RadioTxCw>: +{ + 801490c: b510 push {r4, lr} + uint8_t paselect = SUBGRF_SetRfTxPower( power ); + 801490e: f001 ff4f bl 80167b0 <SUBGRF_SetRfTxPower> + 8014912: 4604 mov r4, r0 + SUBGRF_WriteRegister(REG_DRV_CTRL, 0x7 << 1); + 8014914: 210e movs r1, #14 + 8014916: f640 101f movw r0, #2335 ; 0x91f + 801491a: f001 f9ab bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_SetSwitch( paselect, RFSWITCH_TX ); + 801491e: 2101 movs r1, #1 + 8014920: 4620 mov r0, r4 + 8014922: f001 ff31 bl 8016788 <SUBGRF_SetSwitch> + SUBGRF_SetTxContinuousWave( ); + 8014926: f001 fb75 bl 8016014 <SUBGRF_SetTxContinuousWave> +} + 801492a: bd10 pop {r4, pc} + +0801492c <RadioTxPrbs>: +{ + 801492c: b508 push {r3, lr} + SUBGRF_SetSwitch( SubgRf.AntSwitchPaSelect, RFSWITCH_TX ); + 801492e: 2101 movs r1, #1 + 8014930: 4b07 ldr r3, [pc, #28] ; (8014950 <RadioTxPrbs+0x24>) + 8014932: f893 0056 ldrb.w r0, [r3, #86] ; 0x56 + 8014936: f001 ff27 bl 8016788 <SUBGRF_SetSwitch> + Radio.Write( SUBGHZ_GPKTCTL1AR, 0x2d ); // sel mode prbs9 instead of preamble + 801493a: 212d movs r1, #45 ; 0x2d + 801493c: f44f 60d7 mov.w r0, #1720 ; 0x6b8 + 8014940: f7ff ffe0 bl 8014904 <RadioWrite> + SUBGRF_SetTxInfinitePreamble( ); + 8014944: f001 fb6d bl 8016022 <SUBGRF_SetTxInfinitePreamble> + SUBGRF_SetTx( 0x0fffff ); + 8014948: 4802 ldr r0, [pc, #8] ; (8014954 <RadioTxPrbs+0x28>) + 801494a: f001 faa3 bl 8015e94 <SUBGRF_SetTx> +} + 801494e: bd08 pop {r3, pc} + 8014950: 20002750 .word 0x20002750 + 8014954: 000fffff .word 0x000fffff + +08014958 <RadioSetRxDutyCycle>: +{ + 8014958: b570 push {r4, r5, r6, lr} + 801495a: 4604 mov r4, r0 + 801495c: 460d mov r5, r1 + SubgRf.RxDcPreambleDetectTimeout = 2 * rxTime + sleepTime; + 801495e: eb01 0340 add.w r3, r1, r0, lsl #1 + 8014962: 4e09 ldr r6, [pc, #36] ; (8014988 <RadioSetRxDutyCycle+0x30>) + 8014964: 65b3 str r3, [r6, #88] ; 0x58 + SUBGRF_SetDioIrqParams( IRQ_RADIO_ALL, IRQ_RADIO_ALL, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); + 8014966: 2300 movs r3, #0 + 8014968: 461a mov r2, r3 + 801496a: f64f 71ff movw r1, #65535 ; 0xffff + 801496e: 4608 mov r0, r1 + 8014970: f001 fc23 bl 80161ba <SUBGRF_SetDioIrqParams> + SUBGRF_SetSwitch( SubgRf.AntSwitchPaSelect, RFSWITCH_RX ); + 8014974: 2100 movs r1, #0 + 8014976: f896 0056 ldrb.w r0, [r6, #86] ; 0x56 + 801497a: f001 ff05 bl 8016788 <SUBGRF_SetSwitch> + SUBGRF_SetRxDutyCycle( rxTime, sleepTime ); + 801497e: 4629 mov r1, r5 + 8014980: 4620 mov r0, r4 + 8014982: f001 fb17 bl 8015fb4 <SUBGRF_SetRxDutyCycle> +} + 8014986: bd70 pop {r4, r5, r6, pc} + 8014988: 20002750 .word 0x20002750 + +0801498c <RadioRxBoosted>: +{ + 801498c: b538 push {r3, r4, r5, lr} + 801498e: 4604 mov r4, r0 + if( 1UL == RFW_Is_Init() ) + 8014990: f001 ffec bl 801696c <RFW_Is_Init> + 8014994: 2801 cmp r0, #1 + 8014996: d019 beq.n 80149cc <RadioRxBoosted+0x40> + SUBGRF_SetDioIrqParams( IRQ_RX_DONE | IRQ_RX_TX_TIMEOUT | IRQ_CRC_ERROR | IRQ_HEADER_ERROR | IRQ_RX_DBG, + 8014998: 2300 movs r3, #0 + 801499a: 461a mov r2, r3 + 801499c: f240 2162 movw r1, #610 ; 0x262 + 80149a0: 4608 mov r0, r1 + 80149a2: f001 fc0a bl 80161ba <SUBGRF_SetDioIrqParams> + if( timeout != 0 ) + 80149a6: b9a4 cbnz r4, 80149d2 <RadioRxBoosted+0x46> + SubgRf.RxDcPreambleDetectTimeout = 0; + 80149a8: 4c11 ldr r4, [pc, #68] ; (80149f0 <RadioRxBoosted+0x64>) + 80149aa: 2100 movs r1, #0 + 80149ac: 65a1 str r1, [r4, #88] ; 0x58 + WRITE_REG(GPIOx->BSRR, PinMask); + 80149ae: 4b11 ldr r3, [pc, #68] ; (80149f4 <RadioRxBoosted+0x68>) + 80149b0: f44f 5280 mov.w r2, #4096 ; 0x1000 + 80149b4: 619a str r2, [r3, #24] + SUBGRF_SetSwitch( SubgRf.AntSwitchPaSelect, RFSWITCH_RX ); + 80149b6: f894 0056 ldrb.w r0, [r4, #86] ; 0x56 + 80149ba: f001 fee5 bl 8016788 <SUBGRF_SetSwitch> + if( SubgRf.RxContinuous == true ) + 80149be: 7863 ldrb r3, [r4, #1] + 80149c0: b183 cbz r3, 80149e4 <RadioRxBoosted+0x58> + SUBGRF_SetRxBoosted( 0xFFFFFF ); // Rx Continuous + 80149c2: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 80149c6: f001 fad7 bl 8015f78 <SUBGRF_SetRxBoosted> +} + 80149ca: bd38 pop {r3, r4, r5, pc} + RFW_ReceiveInit(); + 80149cc: f001 ffd6 bl 801697c <RFW_ReceiveInit> + 80149d0: e7e9 b.n 80149a6 <RadioRxBoosted+0x1a> + TimerSetValue( &RxTimeoutTimer, timeout ); + 80149d2: 4d09 ldr r5, [pc, #36] ; (80149f8 <RadioRxBoosted+0x6c>) + 80149d4: 4621 mov r1, r4 + 80149d6: 4628 mov r0, r5 + 80149d8: f002 fca0 bl 801731c <UTIL_TIMER_SetPeriod> + TimerStart( &RxTimeoutTimer ); + 80149dc: 4628 mov r0, r5 + 80149de: f002 fc57 bl 8017290 <UTIL_TIMER_Start> + 80149e2: e7e1 b.n 80149a8 <RadioRxBoosted+0x1c> + SUBGRF_SetRxBoosted( SubgRf.RxTimeout << 6 ); + 80149e4: 4b02 ldr r3, [pc, #8] ; (80149f0 <RadioRxBoosted+0x64>) + 80149e6: 6898 ldr r0, [r3, #8] + 80149e8: 0180 lsls r0, r0, #6 + 80149ea: f001 fac5 bl 8015f78 <SUBGRF_SetRxBoosted> +} + 80149ee: e7ec b.n 80149ca <RadioRxBoosted+0x3e> + 80149f0: 20002750 .word 0x20002750 + 80149f4: 48000400 .word 0x48000400 + 80149f8: 20002738 .word 0x20002738 + +080149fc <RadioStandby>: +{ + 80149fc: b508 push {r3, lr} + SUBGRF_SetStandby( STDBY_RC ); + 80149fe: 2000 movs r0, #0 + 8014a00: f001 fa2e bl 8015e60 <SUBGRF_SetStandby> +} + 8014a04: bd08 pop {r3, pc} + +08014a06 <RadioGetStatus>: +{ + 8014a06: b508 push {r3, lr} + switch( SUBGRF_GetOperatingMode( ) ) + 8014a08: f001 f928 bl 8015c5c <SUBGRF_GetOperatingMode> + 8014a0c: 2805 cmp r0, #5 + 8014a0e: d007 beq.n 8014a20 <RadioGetStatus+0x1a> + 8014a10: 2807 cmp r0, #7 + 8014a12: d007 beq.n 8014a24 <RadioGetStatus+0x1e> + 8014a14: 2804 cmp r0, #4 + 8014a16: d001 beq.n 8014a1c <RadioGetStatus+0x16> + return RF_IDLE; + 8014a18: 2000 movs r0, #0 +} + 8014a1a: bd08 pop {r3, pc} + switch( SUBGRF_GetOperatingMode( ) ) + 8014a1c: 2002 movs r0, #2 + 8014a1e: e7fc b.n 8014a1a <RadioGetStatus+0x14> + return RF_RX_RUNNING; + 8014a20: 2001 movs r0, #1 + 8014a22: e7fa b.n 8014a1a <RadioGetStatus+0x14> + return RF_CAD; + 8014a24: 2003 movs r0, #3 + 8014a26: e7f8 b.n 8014a1a <RadioGetStatus+0x14> + +08014a28 <RadioIrqProcess>: +{ + 8014a28: b530 push {r4, r5, lr} + 8014a2a: b083 sub sp, #12 + uint8_t size = 0; + 8014a2c: 2300 movs r3, #0 + 8014a2e: f88d 3007 strb.w r3, [sp, #7] + int32_t cfo = 0; + 8014a32: 9300 str r3, [sp, #0] + switch( SubgRf.RadioIrq ) + 8014a34: 4ba5 ldr r3, [pc, #660] ; (8014ccc <RadioIrqProcess+0x2a4>) + 8014a36: f8b3 3054 ldrh.w r3, [r3, #84] ; 0x54 + 8014a3a: 2b20 cmp r3, #32 + 8014a3c: d829 bhi.n 8014a92 <RadioIrqProcess+0x6a> + 8014a3e: b21a sxth r2, r3 + 8014a40: 2a00 cmp r2, #0 + 8014a42: f000 8140 beq.w 8014cc6 <RadioIrqProcess+0x29e> + 8014a46: 3b01 subs r3, #1 + 8014a48: 2b1f cmp r3, #31 + 8014a4a: f200 813c bhi.w 8014cc6 <RadioIrqProcess+0x29e> + 8014a4e: e8df f013 tbh [pc, r3, lsl #1] + 8014a52: 0063 .short 0x0063 + 8014a54: 013a007f .word 0x013a007f + 8014a58: 013a00f7 .word 0x013a00f7 + 8014a5c: 013a013a .word 0x013a013a + 8014a60: 013a0127 .word 0x013a0127 + 8014a64: 013a013a .word 0x013a013a + 8014a68: 013a013a .word 0x013a013a + 8014a6c: 013a013a .word 0x013a013a + 8014a70: 013a0134 .word 0x013a0134 + 8014a74: 013a013a .word 0x013a013a + 8014a78: 013a013a .word 0x013a013a + 8014a7c: 013a013a .word 0x013a013a + 8014a80: 013a013a .word 0x013a013a + 8014a84: 013a013a .word 0x013a013a + 8014a88: 013a013a .word 0x013a013a + 8014a8c: 013a013a .word 0x013a013a + 8014a90: 0155 .short 0x0155 + 8014a92: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8014a96: f000 80b3 beq.w 8014c00 <RadioIrqProcess+0x1d8> + 8014a9a: d928 bls.n 8014aee <RadioIrqProcess+0xc6> + 8014a9c: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 8014aa0: f040 8111 bne.w 8014cc6 <RadioIrqProcess+0x29e> + MW_LOG( TS_ON, VLEVEL_M, "IRQ_RX_TX_TIMEOUT\r\n" ); + 8014aa4: 4b8a ldr r3, [pc, #552] ; (8014cd0 <RadioIrqProcess+0x2a8>) + 8014aa6: 2201 movs r2, #1 + 8014aa8: 2100 movs r1, #0 + 8014aaa: 2002 movs r0, #2 + 8014aac: f002 f844 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + if( SUBGRF_GetOperatingMode( ) == MODE_TX ) + 8014ab0: f001 f8d4 bl 8015c5c <SUBGRF_GetOperatingMode> + 8014ab4: 2804 cmp r0, #4 + 8014ab6: f000 80b0 beq.w 8014c1a <RadioIrqProcess+0x1f2> + else if( SUBGRF_GetOperatingMode( ) == MODE_RX ) + 8014aba: f001 f8cf bl 8015c5c <SUBGRF_GetOperatingMode> + 8014abe: 2805 cmp r0, #5 + 8014ac0: f040 8101 bne.w 8014cc6 <RadioIrqProcess+0x29e> + WRITE_REG(GPIOx->BRR, PinMask); + 8014ac4: 4b83 ldr r3, [pc, #524] ; (8014cd4 <RadioIrqProcess+0x2ac>) + 8014ac6: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8014aca: 629a str r2, [r3, #40] ; 0x28 + TimerStop( &RxTimeoutTimer ); + 8014acc: 4882 ldr r0, [pc, #520] ; (8014cd8 <RadioIrqProcess+0x2b0>) + 8014ace: f002 fb85 bl 80171dc <UTIL_TIMER_Stop> + SUBGRF_SetStandby( STDBY_RC ); + 8014ad2: 2000 movs r0, #0 + 8014ad4: f001 f9c4 bl 8015e60 <SUBGRF_SetStandby> + if( ( RadioEvents != NULL ) && ( RadioEvents->RxTimeout != NULL ) ) + 8014ad8: 4b80 ldr r3, [pc, #512] ; (8014cdc <RadioIrqProcess+0x2b4>) + 8014ada: 681b ldr r3, [r3, #0] + 8014adc: 2b00 cmp r3, #0 + 8014ade: f000 80f2 beq.w 8014cc6 <RadioIrqProcess+0x29e> + 8014ae2: 68db ldr r3, [r3, #12] + 8014ae4: 2b00 cmp r3, #0 + 8014ae6: f000 80ee beq.w 8014cc6 <RadioIrqProcess+0x29e> + RadioEvents->RxTimeout( ); + 8014aea: 4798 blx r3 + 8014aec: e0eb b.n 8014cc6 <RadioIrqProcess+0x29e> + switch( SubgRf.RadioIrq ) + 8014aee: 2b40 cmp r3, #64 ; 0x40 + 8014af0: f000 811d beq.w 8014d2e <RadioIrqProcess+0x306> + 8014af4: 2b80 cmp r3, #128 ; 0x80 + 8014af6: f040 80e6 bne.w 8014cc6 <RadioIrqProcess+0x29e> + SUBGRF_SetStandby( STDBY_RC ); + 8014afa: 2000 movs r0, #0 + 8014afc: f001 f9b0 bl 8015e60 <SUBGRF_SetStandby> + if( ( RadioEvents != NULL ) && ( RadioEvents->CadDone != NULL ) ) + 8014b00: 4b76 ldr r3, [pc, #472] ; (8014cdc <RadioIrqProcess+0x2b4>) + 8014b02: 681b ldr r3, [r3, #0] + 8014b04: 2b00 cmp r3, #0 + 8014b06: f000 80de beq.w 8014cc6 <RadioIrqProcess+0x29e> + 8014b0a: 699b ldr r3, [r3, #24] + 8014b0c: 2b00 cmp r3, #0 + 8014b0e: f000 80da beq.w 8014cc6 <RadioIrqProcess+0x29e> + RadioEvents->CadDone( false ); + 8014b12: 2000 movs r0, #0 + 8014b14: 4798 blx r3 + 8014b16: e0d6 b.n 8014cc6 <RadioIrqProcess+0x29e> + 8014b18: 4b6e ldr r3, [pc, #440] ; (8014cd4 <RadioIrqProcess+0x2ac>) + 8014b1a: f44f 5200 mov.w r2, #8192 ; 0x2000 + 8014b1e: 629a str r2, [r3, #40] ; 0x28 + TimerStop( &TxTimeoutTimer ); + 8014b20: 486f ldr r0, [pc, #444] ; (8014ce0 <RadioIrqProcess+0x2b8>) + 8014b22: f002 fb5b bl 80171dc <UTIL_TIMER_Stop> + SUBGRF_SetStandby( STDBY_RC ); + 8014b26: 2000 movs r0, #0 + 8014b28: f001 f99a bl 8015e60 <SUBGRF_SetStandby> + if( RFW_Is_LongPacketModeEnabled() == 1 ) + 8014b2c: f001 ff20 bl 8016970 <RFW_Is_LongPacketModeEnabled> + 8014b30: 2801 cmp r0, #1 + 8014b32: d00a beq.n 8014b4a <RadioIrqProcess+0x122> + if( ( RadioEvents != NULL ) && ( RadioEvents->TxDone != NULL ) ) + 8014b34: 4b69 ldr r3, [pc, #420] ; (8014cdc <RadioIrqProcess+0x2b4>) + 8014b36: 681b ldr r3, [r3, #0] + 8014b38: 2b00 cmp r3, #0 + 8014b3a: f000 80c4 beq.w 8014cc6 <RadioIrqProcess+0x29e> + 8014b3e: 681b ldr r3, [r3, #0] + 8014b40: 2b00 cmp r3, #0 + 8014b42: f000 80c0 beq.w 8014cc6 <RadioIrqProcess+0x29e> + RadioEvents->TxDone( ); + 8014b46: 4798 blx r3 + 8014b48: e0bd b.n 8014cc6 <RadioIrqProcess+0x29e> + RFW_DeInit_TxLongPacket( ); + 8014b4a: f001 ff1a bl 8016982 <RFW_DeInit_TxLongPacket> + 8014b4e: e7f1 b.n 8014b34 <RadioIrqProcess+0x10c> + 8014b50: 4b60 ldr r3, [pc, #384] ; (8014cd4 <RadioIrqProcess+0x2ac>) + 8014b52: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8014b56: 629a str r2, [r3, #40] ; 0x28 + TimerStop( &RxTimeoutTimer ); + 8014b58: 485f ldr r0, [pc, #380] ; (8014cd8 <RadioIrqProcess+0x2b0>) + 8014b5a: f002 fb3f bl 80171dc <UTIL_TIMER_Stop> + if( SubgRf.RxContinuous == false ) + 8014b5e: 4b5b ldr r3, [pc, #364] ; (8014ccc <RadioIrqProcess+0x2a4>) + 8014b60: 785b ldrb r3, [r3, #1] + 8014b62: b303 cbz r3, 8014ba6 <RadioIrqProcess+0x17e> + SUBGRF_GetPayload( RadioBuffer, &size, 255 ); + 8014b64: 22ff movs r2, #255 ; 0xff + 8014b66: f10d 0107 add.w r1, sp, #7 + 8014b6a: 485e ldr r0, [pc, #376] ; (8014ce4 <RadioIrqProcess+0x2bc>) + 8014b6c: f001 fdb6 bl 80166dc <SUBGRF_GetPayload> + SUBGRF_GetPacketStatus( &( SubgRf.PacketStatus ) ); + 8014b70: 485d ldr r0, [pc, #372] ; (8014ce8 <RadioIrqProcess+0x2c0>) + 8014b72: f001 fdcd bl 8016710 <SUBGRF_GetPacketStatus> + if( ( RadioEvents != NULL ) && ( RadioEvents->RxDone != NULL ) ) + 8014b76: 4b59 ldr r3, [pc, #356] ; (8014cdc <RadioIrqProcess+0x2b4>) + 8014b78: 681b ldr r3, [r3, #0] + 8014b7a: 2b00 cmp r3, #0 + 8014b7c: f000 80a3 beq.w 8014cc6 <RadioIrqProcess+0x29e> + 8014b80: 689c ldr r4, [r3, #8] + 8014b82: 2c00 cmp r4, #0 + 8014b84: f000 809f beq.w 8014cc6 <RadioIrqProcess+0x29e> + switch( SubgRf.PacketStatus.packetType ) + 8014b88: 4b50 ldr r3, [pc, #320] ; (8014ccc <RadioIrqProcess+0x2a4>) + 8014b8a: f893 3024 ldrb.w r3, [r3, #36] ; 0x24 + 8014b8e: 2b01 cmp r3, #1 + 8014b90: d11d bne.n 8014bce <RadioIrqProcess+0x1a6> + RadioEvents->RxDone( RadioBuffer, size, SubgRf.PacketStatus.Params.LoRa.RssiPkt, + 8014b92: 4a4e ldr r2, [pc, #312] ; (8014ccc <RadioIrqProcess+0x2a4>) + 8014b94: f992 3031 ldrsb.w r3, [r2, #49] ; 0x31 + 8014b98: f992 2030 ldrsb.w r2, [r2, #48] ; 0x30 + 8014b9c: f89d 1007 ldrb.w r1, [sp, #7] + 8014ba0: 4850 ldr r0, [pc, #320] ; (8014ce4 <RadioIrqProcess+0x2bc>) + 8014ba2: 47a0 blx r4 + break; + 8014ba4: e08f b.n 8014cc6 <RadioIrqProcess+0x29e> + SUBGRF_SetStandby( STDBY_RC ); + 8014ba6: 2000 movs r0, #0 + 8014ba8: f001 f95a bl 8015e60 <SUBGRF_SetStandby> + SUBGRF_WriteRegister( SUBGHZ_RTCCTLR, 0x00 ); + 8014bac: 2100 movs r1, #0 + 8014bae: f640 1002 movw r0, #2306 ; 0x902 + 8014bb2: f001 f85f bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_WriteRegister( SUBGHZ_EVENTMASKR, SUBGRF_ReadRegister( SUBGHZ_EVENTMASKR ) | ( 1 << 1 ) ); + 8014bb6: f640 1044 movw r0, #2372 ; 0x944 + 8014bba: f001 f86b bl 8015c94 <SUBGRF_ReadRegister> + 8014bbe: f040 0102 orr.w r1, r0, #2 + 8014bc2: b2c9 uxtb r1, r1 + 8014bc4: f640 1044 movw r0, #2372 ; 0x944 + 8014bc8: f001 f854 bl 8015c74 <SUBGRF_WriteRegister> + 8014bcc: e7ca b.n 8014b64 <RadioIrqProcess+0x13c> + SUBGRF_GetCFO( SubgRf.ModulationParams.Params.Gfsk.BitRate, &cfo ); + 8014bce: 4c3f ldr r4, [pc, #252] ; (8014ccc <RadioIrqProcess+0x2a4>) + 8014bd0: 4669 mov r1, sp + 8014bd2: 6be0 ldr r0, [r4, #60] ; 0x3c + 8014bd4: f001 fe7c bl 80168d0 <SUBGRF_GetCFO> + RadioEvents->RxDone( RadioBuffer, size, SubgRf.PacketStatus.Params.Gfsk.RssiAvg, ( int8_t ) DIVR( cfo, 1000 ) ); + 8014bd8: 4b40 ldr r3, [pc, #256] ; (8014cdc <RadioIrqProcess+0x2b4>) + 8014bda: 681b ldr r3, [r3, #0] + 8014bdc: 689d ldr r5, [r3, #8] + 8014bde: 9b00 ldr r3, [sp, #0] + 8014be0: f503 73fa add.w r3, r3, #500 ; 0x1f4 + 8014be4: 4a41 ldr r2, [pc, #260] ; (8014cec <RadioIrqProcess+0x2c4>) + 8014be6: fb82 1203 smull r1, r2, r2, r3 + 8014bea: 17db asrs r3, r3, #31 + 8014bec: ebc3 13a2 rsb r3, r3, r2, asr #6 + 8014bf0: b25b sxtb r3, r3 + 8014bf2: f994 2029 ldrsb.w r2, [r4, #41] ; 0x29 + 8014bf6: f89d 1007 ldrb.w r1, [sp, #7] + 8014bfa: 483a ldr r0, [pc, #232] ; (8014ce4 <RadioIrqProcess+0x2bc>) + 8014bfc: 47a8 blx r5 + break; + 8014bfe: e062 b.n 8014cc6 <RadioIrqProcess+0x29e> + SUBGRF_SetStandby( STDBY_RC ); + 8014c00: 2000 movs r0, #0 + 8014c02: f001 f92d bl 8015e60 <SUBGRF_SetStandby> + if( ( RadioEvents != NULL ) && ( RadioEvents->CadDone != NULL ) ) + 8014c06: 4b35 ldr r3, [pc, #212] ; (8014cdc <RadioIrqProcess+0x2b4>) + 8014c08: 681b ldr r3, [r3, #0] + 8014c0a: 2b00 cmp r3, #0 + 8014c0c: d05b beq.n 8014cc6 <RadioIrqProcess+0x29e> + 8014c0e: 699b ldr r3, [r3, #24] + 8014c10: 2b00 cmp r3, #0 + 8014c12: d058 beq.n 8014cc6 <RadioIrqProcess+0x29e> + RadioEvents->CadDone( true ); + 8014c14: 2001 movs r0, #1 + 8014c16: 4798 blx r3 + 8014c18: e055 b.n 8014cc6 <RadioIrqProcess+0x29e> + 8014c1a: 4b2e ldr r3, [pc, #184] ; (8014cd4 <RadioIrqProcess+0x2ac>) + 8014c1c: f44f 5200 mov.w r2, #8192 ; 0x2000 + 8014c20: 629a str r2, [r3, #40] ; 0x28 + TimerStop( &TxTimeoutTimer ); + 8014c22: 482f ldr r0, [pc, #188] ; (8014ce0 <RadioIrqProcess+0x2b8>) + 8014c24: f002 fada bl 80171dc <UTIL_TIMER_Stop> + SUBGRF_SetStandby( STDBY_RC ); + 8014c28: 2000 movs r0, #0 + 8014c2a: f001 f919 bl 8015e60 <SUBGRF_SetStandby> + if( ( RadioEvents != NULL ) && ( RadioEvents->TxTimeout != NULL ) ) + 8014c2e: 4b2b ldr r3, [pc, #172] ; (8014cdc <RadioIrqProcess+0x2b4>) + 8014c30: 681b ldr r3, [r3, #0] + 8014c32: 2b00 cmp r3, #0 + 8014c34: d047 beq.n 8014cc6 <RadioIrqProcess+0x29e> + 8014c36: 685b ldr r3, [r3, #4] + 8014c38: 2b00 cmp r3, #0 + 8014c3a: d044 beq.n 8014cc6 <RadioIrqProcess+0x29e> + RadioEvents->TxTimeout( ); + 8014c3c: 4798 blx r3 + 8014c3e: e042 b.n 8014cc6 <RadioIrqProcess+0x29e> + MW_LOG( TS_ON, VLEVEL_M, "PRE OK\r\n" ); + 8014c40: 4b2b ldr r3, [pc, #172] ; (8014cf0 <RadioIrqProcess+0x2c8>) + 8014c42: 2201 movs r2, #1 + 8014c44: 2100 movs r1, #0 + 8014c46: 2002 movs r0, #2 + 8014c48: f001 ff76 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + if( SubgRf.RxDcPreambleDetectTimeout != 0 ) + 8014c4c: 4b1f ldr r3, [pc, #124] ; (8014ccc <RadioIrqProcess+0x2a4>) + 8014c4e: 6d99 ldr r1, [r3, #88] ; 0x58 + 8014c50: b3c9 cbz r1, 8014cc6 <RadioIrqProcess+0x29e> + Radio.Write( SUBGHZ_RTCPRDR2, ( SubgRf.RxDcPreambleDetectTimeout >> 16 ) & 0xFF ); /*Update Radio RTC Period MSB*/ + 8014c52: f3c1 4107 ubfx r1, r1, #16, #8 + 8014c56: f640 1003 movw r0, #2307 ; 0x903 + 8014c5a: f7ff fe53 bl 8014904 <RadioWrite> + Radio.Write( SUBGHZ_RTCPRDR1, ( SubgRf.RxDcPreambleDetectTimeout >> 8 ) & 0xFF ); /*Update Radio RTC Period MidByte*/ + 8014c5e: 4c1b ldr r4, [pc, #108] ; (8014ccc <RadioIrqProcess+0x2a4>) + 8014c60: f894 1059 ldrb.w r1, [r4, #89] ; 0x59 + 8014c64: f640 1004 movw r0, #2308 ; 0x904 + 8014c68: f7ff fe4c bl 8014904 <RadioWrite> + Radio.Write( SUBGHZ_RTCPRDR0, ( SubgRf.RxDcPreambleDetectTimeout ) & 0xFF ); /*Update Radio RTC Period lsb*/ + 8014c6c: f894 1058 ldrb.w r1, [r4, #88] ; 0x58 + 8014c70: f640 1005 movw r0, #2309 ; 0x905 + 8014c74: f7ff fe46 bl 8014904 <RadioWrite> + Radio.Write( SUBGHZ_RTCCTLR, Radio.Read( SUBGHZ_RTCCTLR ) | 0x1 ); /*restart Radio RTC*/ + 8014c78: f640 1002 movw r0, #2306 ; 0x902 + 8014c7c: f7ff fe3e bl 80148fc <RadioRead> + 8014c80: f040 0101 orr.w r1, r0, #1 + 8014c84: b2c9 uxtb r1, r1 + 8014c86: f640 1002 movw r0, #2306 ; 0x902 + 8014c8a: f7ff fe3b bl 8014904 <RadioWrite> + SubgRf.RxDcPreambleDetectTimeout = 0; + 8014c8e: 2200 movs r2, #0 + 8014c90: 65a2 str r2, [r4, #88] ; 0x58 + SUBGRF_SetDioIrqParams( IRQ_RX_DONE | IRQ_RX_TX_TIMEOUT | IRQ_CRC_ERROR | IRQ_HEADER_ERROR | IRQ_RX_DBG, + 8014c92: 4613 mov r3, r2 + 8014c94: f240 2162 movw r1, #610 ; 0x262 + 8014c98: 4608 mov r0, r1 + 8014c9a: f001 fa8e bl 80161ba <SUBGRF_SetDioIrqParams> + 8014c9e: e012 b.n 8014cc6 <RadioIrqProcess+0x29e> + MW_LOG( TS_ON, VLEVEL_M, "SYNC OK\r\n" ); + 8014ca0: 4b14 ldr r3, [pc, #80] ; (8014cf4 <RadioIrqProcess+0x2cc>) + 8014ca2: 2201 movs r2, #1 + 8014ca4: 2100 movs r1, #0 + 8014ca6: 2002 movs r0, #2 + 8014ca8: f001 ff46 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + if( 1UL == RFW_Is_Init( ) ) + 8014cac: f001 fe5e bl 801696c <RFW_Is_Init> + 8014cb0: 2801 cmp r0, #1 + 8014cb2: d108 bne.n 8014cc6 <RadioIrqProcess+0x29e> + RFW_ReceivePayload( ); + 8014cb4: f001 fe66 bl 8016984 <RFW_ReceivePayload> + 8014cb8: e005 b.n 8014cc6 <RadioIrqProcess+0x29e> + MW_LOG( TS_ON, VLEVEL_M, "HDR OK\r\n" ); + 8014cba: 4b0f ldr r3, [pc, #60] ; (8014cf8 <RadioIrqProcess+0x2d0>) + 8014cbc: 2201 movs r2, #1 + 8014cbe: 2100 movs r1, #0 + 8014cc0: 2002 movs r0, #2 + 8014cc2: f001 ff39 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> +} + 8014cc6: b003 add sp, #12 + 8014cc8: bd30 pop {r4, r5, pc} + 8014cca: bf00 nop + 8014ccc: 20002750 .word 0x20002750 + 8014cd0: 08018c44 .word 0x08018c44 + 8014cd4: 48000400 .word 0x48000400 + 8014cd8: 20002738 .word 0x20002738 + 8014cdc: 20002734 .word 0x20002734 + 8014ce0: 200027ac .word 0x200027ac + 8014ce4: 20002634 .word 0x20002634 + 8014ce8: 20002774 .word 0x20002774 + 8014cec: 10624dd3 .word 0x10624dd3 + 8014cf0: 08018c58 .word 0x08018c58 + 8014cf4: 08018c64 .word 0x08018c64 + 8014cf8: 08018c70 .word 0x08018c70 + TimerStop( &RxTimeoutTimer ); + 8014cfc: 4817 ldr r0, [pc, #92] ; (8014d5c <RadioIrqProcess+0x334>) + 8014cfe: f002 fa6d bl 80171dc <UTIL_TIMER_Stop> + if( SubgRf.RxContinuous == false ) + 8014d02: 4b17 ldr r3, [pc, #92] ; (8014d60 <RadioIrqProcess+0x338>) + 8014d04: 785b ldrb r3, [r3, #1] + 8014d06: b173 cbz r3, 8014d26 <RadioIrqProcess+0x2fe> + if( ( RadioEvents != NULL ) && ( RadioEvents->RxTimeout != NULL ) ) + 8014d08: 4b16 ldr r3, [pc, #88] ; (8014d64 <RadioIrqProcess+0x33c>) + 8014d0a: 681b ldr r3, [r3, #0] + 8014d0c: 2b00 cmp r3, #0 + 8014d0e: d0da beq.n 8014cc6 <RadioIrqProcess+0x29e> + 8014d10: 68db ldr r3, [r3, #12] + 8014d12: 2b00 cmp r3, #0 + 8014d14: d0d7 beq.n 8014cc6 <RadioIrqProcess+0x29e> + RadioEvents->RxTimeout( ); + 8014d16: 4798 blx r3 + MW_LOG( TS_ON, VLEVEL_M, "HDR KO\r\n" ); + 8014d18: 4b13 ldr r3, [pc, #76] ; (8014d68 <RadioIrqProcess+0x340>) + 8014d1a: 2201 movs r2, #1 + 8014d1c: 2100 movs r1, #0 + 8014d1e: 2002 movs r0, #2 + 8014d20: f001 ff0a bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + 8014d24: e7cf b.n 8014cc6 <RadioIrqProcess+0x29e> + SUBGRF_SetStandby( STDBY_RC ); + 8014d26: 2000 movs r0, #0 + 8014d28: f001 f89a bl 8015e60 <SUBGRF_SetStandby> + 8014d2c: e7ec b.n 8014d08 <RadioIrqProcess+0x2e0> + MW_LOG( TS_ON, VLEVEL_M, "IRQ_CRC_ERROR\r\n" ); + 8014d2e: 4b0f ldr r3, [pc, #60] ; (8014d6c <RadioIrqProcess+0x344>) + 8014d30: 2201 movs r2, #1 + 8014d32: 2100 movs r1, #0 + 8014d34: 2002 movs r0, #2 + 8014d36: f001 feff bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + if( SubgRf.RxContinuous == false ) + 8014d3a: 4b09 ldr r3, [pc, #36] ; (8014d60 <RadioIrqProcess+0x338>) + 8014d3c: 785b ldrb r3, [r3, #1] + 8014d3e: b143 cbz r3, 8014d52 <RadioIrqProcess+0x32a> + if( ( RadioEvents != NULL ) && ( RadioEvents->RxError ) ) + 8014d40: 4b08 ldr r3, [pc, #32] ; (8014d64 <RadioIrqProcess+0x33c>) + 8014d42: 681b ldr r3, [r3, #0] + 8014d44: 2b00 cmp r3, #0 + 8014d46: d0be beq.n 8014cc6 <RadioIrqProcess+0x29e> + 8014d48: 691b ldr r3, [r3, #16] + 8014d4a: 2b00 cmp r3, #0 + 8014d4c: d0bb beq.n 8014cc6 <RadioIrqProcess+0x29e> + RadioEvents->RxError( ); + 8014d4e: 4798 blx r3 +} + 8014d50: e7b9 b.n 8014cc6 <RadioIrqProcess+0x29e> + SUBGRF_SetStandby( STDBY_RC ); + 8014d52: 2000 movs r0, #0 + 8014d54: f001 f884 bl 8015e60 <SUBGRF_SetStandby> + 8014d58: e7f2 b.n 8014d40 <RadioIrqProcess+0x318> + 8014d5a: bf00 nop + 8014d5c: 20002738 .word 0x20002738 + 8014d60: 20002750 .word 0x20002750 + 8014d64: 20002734 .word 0x20002734 + 8014d68: 08018c7c .word 0x08018c7c + 8014d6c: 08018c88 .word 0x08018c88 + +08014d70 <RadioOnDioIrq>: +{ + 8014d70: b508 push {r3, lr} + SubgRf.RadioIrq = radioIrq; + 8014d72: 4b03 ldr r3, [pc, #12] ; (8014d80 <RadioOnDioIrq+0x10>) + 8014d74: f8a3 0054 strh.w r0, [r3, #84] ; 0x54 + RADIO_IRQ_PROCESS(); + 8014d78: f7ff fe56 bl 8014a28 <RadioIrqProcess> +} + 8014d7c: bd08 pop {r3, pc} + 8014d7e: bf00 nop + 8014d80: 20002750 .word 0x20002750 + +08014d84 <RadioGetWakeupTime>: +{ + 8014d84: b508 push {r3, lr} + return SUBGRF_GetRadioWakeUpTime() + RADIO_WAKEUP_TIME; + 8014d86: f001 fd2a bl 80167de <SUBGRF_GetRadioWakeUpTime> +} + 8014d8a: 3003 adds r0, #3 + 8014d8c: bd08 pop {r3, pc} + +08014d8e <RadioReadRegisters>: +{ + 8014d8e: b508 push {r3, lr} + SUBGRF_ReadRegisters( addr, buffer, size ); + 8014d90: f000 fffe bl 8015d90 <SUBGRF_ReadRegisters> +} + 8014d94: bd08 pop {r3, pc} + +08014d96 <RadioWriteRegisters>: +{ + 8014d96: b508 push {r3, lr} + SUBGRF_WriteRegisters( addr, buffer, size ); + 8014d98: f000 ffb8 bl 8015d0c <SUBGRF_WriteRegisters> +} + 8014d9c: bd08 pop {r3, pc} + +08014d9e <RadioRssi>: +{ + 8014d9e: b508 push {r3, lr} + return SUBGRF_GetRssiInst( ); + 8014da0: f001 fc6c bl 801667c <SUBGRF_GetRssiInst> +} + 8014da4: b200 sxth r0, r0 + 8014da6: bd08 pop {r3, pc} + +08014da8 <RadioSetTxContinuousWave>: +{ + 8014da8: b538 push {r3, r4, r5, lr} + 8014daa: 460d mov r5, r1 + uint32_t timeout = ( uint32_t )time * 1000; + 8014dac: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8014db0: fb03 f402 mul.w r4, r3, r2 + SUBGRF_SetRfFrequency( freq ); + 8014db4: f001 fa76 bl 80162a4 <SUBGRF_SetRfFrequency> + antswitchpow = SUBGRF_SetRfTxPower( power ); + 8014db8: 4628 mov r0, r5 + 8014dba: f001 fcf9 bl 80167b0 <SUBGRF_SetRfTxPower> + 8014dbe: 4605 mov r5, r0 + SUBGRF_WriteRegister(REG_DRV_CTRL, 0x7 << 1); + 8014dc0: 210e movs r1, #14 + 8014dc2: f640 101f movw r0, #2335 ; 0x91f + 8014dc6: f000 ff55 bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_SetSwitch( antswitchpow, RFSWITCH_TX ); + 8014dca: 2101 movs r1, #1 + 8014dcc: 4628 mov r0, r5 + 8014dce: f001 fcdb bl 8016788 <SUBGRF_SetSwitch> + SUBGRF_SetTxContinuousWave( ); + 8014dd2: f001 f91f bl 8016014 <SUBGRF_SetTxContinuousWave> + TimerSetValue( &TxTimeoutTimer, timeout ); + 8014dd6: 4d04 ldr r5, [pc, #16] ; (8014de8 <RadioSetTxContinuousWave+0x40>) + 8014dd8: 4621 mov r1, r4 + 8014dda: 4628 mov r0, r5 + 8014ddc: f002 fa9e bl 801731c <UTIL_TIMER_SetPeriod> + TimerStart( &TxTimeoutTimer ); + 8014de0: 4628 mov r0, r5 + 8014de2: f002 fa55 bl 8017290 <UTIL_TIMER_Start> +} + 8014de6: bd38 pop {r3, r4, r5, pc} + 8014de8: 200027ac .word 0x200027ac + +08014dec <RadioSetChannel>: +{ + 8014dec: b508 push {r3, lr} + SUBGRF_SetRfFrequency( freq ); + 8014dee: f001 fa59 bl 80162a4 <SUBGRF_SetRfFrequency> +} + 8014df2: bd08 pop {r3, pc} + +08014df4 <RadioStartCad>: +{ + 8014df4: b508 push {r3, lr} + SUBGRF_SetSwitch( SubgRf.AntSwitchPaSelect, RFSWITCH_RX ); + 8014df6: 2100 movs r1, #0 + 8014df8: 4b07 ldr r3, [pc, #28] ; (8014e18 <RadioStartCad+0x24>) + 8014dfa: f893 0056 ldrb.w r0, [r3, #86] ; 0x56 + 8014dfe: f001 fcc3 bl 8016788 <SUBGRF_SetSwitch> + SUBGRF_SetDioIrqParams( IRQ_CAD_CLEAR | IRQ_CAD_DETECTED, + 8014e02: 2300 movs r3, #0 + 8014e04: 461a mov r2, r3 + 8014e06: f44f 71c0 mov.w r1, #384 ; 0x180 + 8014e0a: 4608 mov r0, r1 + 8014e0c: f001 f9d5 bl 80161ba <SUBGRF_SetDioIrqParams> + SUBGRF_SetCad( ); + 8014e10: f001 f8f4 bl 8015ffc <SUBGRF_SetCad> +} + 8014e14: bd08 pop {r3, pc} + 8014e16: bf00 nop + 8014e18: 20002750 .word 0x20002750 + +08014e1c <RadioRx>: +{ + 8014e1c: b538 push {r3, r4, r5, lr} + 8014e1e: 4604 mov r4, r0 + if( 1UL == RFW_Is_Init( ) ) + 8014e20: f001 fda4 bl 801696c <RFW_Is_Init> + 8014e24: 2801 cmp r0, #1 + 8014e26: d019 beq.n 8014e5c <RadioRx+0x40> + SUBGRF_SetDioIrqParams( IRQ_RX_DONE | IRQ_RX_TX_TIMEOUT | IRQ_CRC_ERROR | IRQ_HEADER_ERROR | IRQ_RX_DBG, + 8014e28: 2300 movs r3, #0 + 8014e2a: 461a mov r2, r3 + 8014e2c: f240 2162 movw r1, #610 ; 0x262 + 8014e30: 4608 mov r0, r1 + 8014e32: f001 f9c2 bl 80161ba <SUBGRF_SetDioIrqParams> + if( timeout != 0 ) + 8014e36: b9a4 cbnz r4, 8014e62 <RadioRx+0x46> + SubgRf.RxDcPreambleDetectTimeout = 0; + 8014e38: 4c11 ldr r4, [pc, #68] ; (8014e80 <RadioRx+0x64>) + 8014e3a: 2100 movs r1, #0 + 8014e3c: 65a1 str r1, [r4, #88] ; 0x58 + WRITE_REG(GPIOx->BSRR, PinMask); + 8014e3e: 4b11 ldr r3, [pc, #68] ; (8014e84 <RadioRx+0x68>) + 8014e40: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8014e44: 619a str r2, [r3, #24] + SUBGRF_SetSwitch( SubgRf.AntSwitchPaSelect, RFSWITCH_RX ); + 8014e46: f894 0056 ldrb.w r0, [r4, #86] ; 0x56 + 8014e4a: f001 fc9d bl 8016788 <SUBGRF_SetSwitch> + if( SubgRf.RxContinuous == true ) + 8014e4e: 7863 ldrb r3, [r4, #1] + 8014e50: b183 cbz r3, 8014e74 <RadioRx+0x58> + SUBGRF_SetRx( 0xFFFFFF ); // Rx Continuous + 8014e52: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 8014e56: f001 f83f bl 8015ed8 <SUBGRF_SetRx> +} + 8014e5a: bd38 pop {r3, r4, r5, pc} + RFW_ReceiveInit( ); + 8014e5c: f001 fd8e bl 801697c <RFW_ReceiveInit> + 8014e60: e7e9 b.n 8014e36 <RadioRx+0x1a> + TimerSetValue( &RxTimeoutTimer, timeout ); + 8014e62: 4d09 ldr r5, [pc, #36] ; (8014e88 <RadioRx+0x6c>) + 8014e64: 4621 mov r1, r4 + 8014e66: 4628 mov r0, r5 + 8014e68: f002 fa58 bl 801731c <UTIL_TIMER_SetPeriod> + TimerStart( &RxTimeoutTimer ); + 8014e6c: 4628 mov r0, r5 + 8014e6e: f002 fa0f bl 8017290 <UTIL_TIMER_Start> + 8014e72: e7e1 b.n 8014e38 <RadioRx+0x1c> + SUBGRF_SetRx( SubgRf.RxTimeout << 6 ); + 8014e74: 4b02 ldr r3, [pc, #8] ; (8014e80 <RadioRx+0x64>) + 8014e76: 6898 ldr r0, [r3, #8] + 8014e78: 0180 lsls r0, r0, #6 + 8014e7a: f001 f82d bl 8015ed8 <SUBGRF_SetRx> +} + 8014e7e: e7ec b.n 8014e5a <RadioRx+0x3e> + 8014e80: 20002750 .word 0x20002750 + 8014e84: 48000400 .word 0x48000400 + 8014e88: 20002738 .word 0x20002738 + +08014e8c <RadioSleep>: +{ + 8014e8c: b508 push {r3, lr} + SUBGRF_SetSleep( params ); + 8014e8e: f04f 0004 mov.w r0, #4 + 8014e92: f000 ffc5 bl 8015e20 <SUBGRF_SetSleep> + RADIO_DELAY_MS( 2 ); + 8014e96: 2002 movs r0, #2 + 8014e98: f7ed ff0a bl 8002cb0 <HAL_Delay> +} + 8014e9c: bd08 pop {r3, pc} + ... + +08014ea0 <RadioSend>: +{ + 8014ea0: b570 push {r4, r5, r6, lr} + 8014ea2: b082 sub sp, #8 + 8014ea4: 4605 mov r5, r0 + 8014ea6: 460c mov r4, r1 + SUBGRF_SetDioIrqParams( IRQ_TX_DONE | IRQ_RX_TX_TIMEOUT | IRQ_TX_DBG, + 8014ea8: 2300 movs r3, #0 + 8014eaa: 461a mov r2, r3 + 8014eac: f240 2101 movw r1, #513 ; 0x201 + 8014eb0: 4608 mov r0, r1 + 8014eb2: f001 f982 bl 80161ba <SUBGRF_SetDioIrqParams> + 8014eb6: 4b5e ldr r3, [pc, #376] ; (8015030 <RadioSend+0x190>) + 8014eb8: f44f 5200 mov.w r2, #8192 ; 0x2000 + 8014ebc: 619a str r2, [r3, #24] + SUBGRF_SetSwitch( SubgRf.AntSwitchPaSelect, RFSWITCH_TX ); + 8014ebe: 4e5d ldr r6, [pc, #372] ; (8015034 <RadioSend+0x194>) + 8014ec0: 2101 movs r1, #1 + 8014ec2: f896 0056 ldrb.w r0, [r6, #86] ; 0x56 + 8014ec6: f001 fc5f bl 8016788 <SUBGRF_SetSwitch> + if( ( SubgRf.Modem == MODEM_LORA ) && ( SubgRf.ModulationParams.Params.LoRa.Bandwidth == LORA_BW_500 ) ) + 8014eca: 7833 ldrb r3, [r6, #0] + 8014ecc: 2b01 cmp r3, #1 + 8014ece: d103 bne.n 8014ed8 <RadioSend+0x38> + 8014ed0: f896 3051 ldrb.w r3, [r6, #81] ; 0x51 + 8014ed4: 2b06 cmp r3, #6 + 8014ed6: d013 beq.n 8014f00 <RadioSend+0x60> + SUBGRF_WriteRegister( SUBGHZ_SDCFG0R, SUBGRF_ReadRegister( SUBGHZ_SDCFG0R ) | ( 1 << 2 ) ); + 8014ed8: f640 0089 movw r0, #2185 ; 0x889 + 8014edc: f000 feda bl 8015c94 <SUBGRF_ReadRegister> + 8014ee0: f040 0104 orr.w r1, r0, #4 + 8014ee4: b2c9 uxtb r1, r1 + 8014ee6: f640 0089 movw r0, #2185 ; 0x889 + 8014eea: f000 fec3 bl 8015c74 <SUBGRF_WriteRegister> + switch( SubgRf.Modem ) + 8014eee: 4b51 ldr r3, [pc, #324] ; (8015034 <RadioSend+0x194>) + 8014ef0: 781b ldrb r3, [r3, #0] + 8014ef2: 2b04 cmp r3, #4 + 8014ef4: d819 bhi.n 8014f2a <RadioSend+0x8a> + 8014ef6: e8df f003 tbb [pc, r3] + 8014efa: 0e24 .short 0x0e24 + 8014efc: 5024 .short 0x5024 + 8014efe: 5d .byte 0x5d + 8014eff: 00 .byte 0x00 + SUBGRF_WriteRegister( SUBGHZ_SDCFG0R, SUBGRF_ReadRegister( SUBGHZ_SDCFG0R ) & ~( 1 << 2 ) ); + 8014f00: f640 0089 movw r0, #2185 ; 0x889 + 8014f04: f000 fec6 bl 8015c94 <SUBGRF_ReadRegister> + 8014f08: f000 01fb and.w r1, r0, #251 ; 0xfb + 8014f0c: f640 0089 movw r0, #2185 ; 0x889 + 8014f10: f000 feb0 bl 8015c74 <SUBGRF_WriteRegister> + 8014f14: e7eb b.n 8014eee <RadioSend+0x4e> + SubgRf.PacketParams.Params.LoRa.PayloadLength = size; + 8014f16: 4847 ldr r0, [pc, #284] ; (8015034 <RadioSend+0x194>) + 8014f18: 77c4 strb r4, [r0, #31] + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8014f1a: 300e adds r0, #14 + 8014f1c: f001 fb1e bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SendPayload( buffer, size, 0 ); + 8014f20: 2200 movs r2, #0 + 8014f22: 4621 mov r1, r4 + 8014f24: 4628 mov r0, r5 + 8014f26: f000 ffcf bl 8015ec8 <SUBGRF_SendPayload> + TimerSetValue( &TxTimeoutTimer, SubgRf.TxTimeout ); + 8014f2a: 4c43 ldr r4, [pc, #268] ; (8015038 <RadioSend+0x198>) + 8014f2c: 4b41 ldr r3, [pc, #260] ; (8015034 <RadioSend+0x194>) + 8014f2e: 6859 ldr r1, [r3, #4] + 8014f30: 4620 mov r0, r4 + 8014f32: f002 f9f3 bl 801731c <UTIL_TIMER_SetPeriod> + TimerStart( &TxTimeoutTimer ); + 8014f36: 4620 mov r0, r4 + 8014f38: f002 f9aa bl 8017290 <UTIL_TIMER_Start> + return RADIO_STATUS_OK; + 8014f3c: 2000 movs r0, #0 +} + 8014f3e: b002 add sp, #8 + 8014f40: bd70 pop {r4, r5, r6, pc} + if ( 1UL == RFW_Is_Init( ) ) + 8014f42: f001 fd13 bl 801696c <RFW_Is_Init> + 8014f46: 2801 cmp r0, #1 + 8014f48: d00a beq.n 8014f60 <RadioSend+0xc0> + SubgRf.PacketParams.Params.Gfsk.PayloadLength = size; + 8014f4a: 483a ldr r0, [pc, #232] ; (8015034 <RadioSend+0x194>) + 8014f4c: 7584 strb r4, [r0, #22] + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8014f4e: 300e adds r0, #14 + 8014f50: f001 fb04 bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SendPayload( buffer, size, 0 ); + 8014f54: 2200 movs r2, #0 + 8014f56: 4621 mov r1, r4 + 8014f58: 4628 mov r0, r5 + 8014f5a: f000 ffb5 bl 8015ec8 <SUBGRF_SendPayload> + 8014f5e: e7e4 b.n 8014f2a <RadioSend+0x8a> + if ( 0UL == RFW_TransmitInit( buffer,size, &outsize ) ) + 8014f60: f10d 0207 add.w r2, sp, #7 + 8014f64: 4621 mov r1, r4 + 8014f66: 4628 mov r0, r5 + 8014f68: f001 fd05 bl 8016976 <RFW_TransmitInit> + 8014f6c: b968 cbnz r0, 8014f8a <RadioSend+0xea> + SubgRf.PacketParams.Params.Gfsk.PayloadLength = outsize; + 8014f6e: 4831 ldr r0, [pc, #196] ; (8015034 <RadioSend+0x194>) + 8014f70: f89d 3007 ldrb.w r3, [sp, #7] + 8014f74: 7583 strb r3, [r0, #22] + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8014f76: 300e adds r0, #14 + 8014f78: f001 faf0 bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SendPayload( buffer, outsize, 0 ); + 8014f7c: 2200 movs r2, #0 + 8014f7e: f89d 1007 ldrb.w r1, [sp, #7] + 8014f82: 4628 mov r0, r5 + 8014f84: f000 ffa0 bl 8015ec8 <SUBGRF_SendPayload> + 8014f88: e7cf b.n 8014f2a <RadioSend+0x8a> + MW_LOG( TS_ON, VLEVEL_M, "RadioSend Oversize\r\n" ); + 8014f8a: 4b2c ldr r3, [pc, #176] ; (801503c <RadioSend+0x19c>) + 8014f8c: 2201 movs r2, #1 + 8014f8e: 2100 movs r1, #0 + 8014f90: 2002 movs r0, #2 + 8014f92: f001 fdd1 bl 8016b38 <UTIL_ADV_TRACE_COND_FSend> + return RADIO_STATUS_ERROR; + 8014f96: 2003 movs r0, #3 + 8014f98: e7d1 b.n 8014f3e <RadioSend+0x9e> + SubgRf.PacketParams.PacketType = PACKET_TYPE_BPSK; + 8014f9a: 4826 ldr r0, [pc, #152] ; (8015034 <RadioSend+0x194>) + 8014f9c: 2302 movs r3, #2 + 8014f9e: 7383 strb r3, [r0, #14] + SubgRf.PacketParams.Params.Bpsk.PayloadLength = size; + 8014fa0: 7684 strb r4, [r0, #26] + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8014fa2: 300e adds r0, #14 + 8014fa4: f001 fada bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SendPayload( buffer, size, 0 ); + 8014fa8: 2200 movs r2, #0 + 8014faa: 4621 mov r1, r4 + 8014fac: 4628 mov r0, r5 + 8014fae: f000 ff8b bl 8015ec8 <SUBGRF_SendPayload> + break; + 8014fb2: e7ba b.n 8014f2a <RadioSend+0x8a> + payload_integration( RadioBuffer, buffer, size ); + 8014fb4: 4622 mov r2, r4 + 8014fb6: 4629 mov r1, r5 + 8014fb8: 4821 ldr r0, [pc, #132] ; (8015040 <RadioSend+0x1a0>) + 8014fba: f7ff fc29 bl 8014810 <payload_integration> + SubgRf.PacketParams.PacketType = PACKET_TYPE_BPSK; + 8014fbe: 4e1d ldr r6, [pc, #116] ; (8015034 <RadioSend+0x194>) + 8014fc0: 2302 movs r3, #2 + 8014fc2: 73b3 strb r3, [r6, #14] + SubgRf.PacketParams.Params.Bpsk.PayloadLength = size + 1; + 8014fc4: 1c65 adds r5, r4, #1 + 8014fc6: b2ed uxtb r5, r5 + 8014fc8: 76b5 strb r5, [r6, #26] + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8014fca: f106 000e add.w r0, r6, #14 + 8014fce: f001 fac5 bl 801655c <SUBGRF_SetPacketParams> + RadioWrite( SUBGHZ_RAM_RAMPUPL, 0 ); // clean start-up LSB + 8014fd2: 2100 movs r1, #0 + 8014fd4: 20f1 movs r0, #241 ; 0xf1 + 8014fd6: f7ff fc95 bl 8014904 <RadioWrite> + RadioWrite( SUBGHZ_RAM_RAMPUPH, 0 ); // clean start-up MSB + 8014fda: 2100 movs r1, #0 + 8014fdc: 20f0 movs r0, #240 ; 0xf0 + 8014fde: f7ff fc91 bl 8014904 <RadioWrite> + if( SubgRf.ModulationParams.Params.Bpsk.BitRate == 100 ) + 8014fe2: 6cb3 ldr r3, [r6, #72] ; 0x48 + 8014fe4: 2b64 cmp r3, #100 ; 0x64 + 8014fe6: d019 beq.n 801501c <RadioSend+0x17c> + RadioWrite( SUBGHZ_RAM_RAMPDNL, 0xE1 ); // clean end of frame LSB + 8014fe8: 21e1 movs r1, #225 ; 0xe1 + 8014fea: 20f3 movs r0, #243 ; 0xf3 + 8014fec: f7ff fc8a bl 8014904 <RadioWrite> + RadioWrite( SUBGHZ_RAM_RAMPDNH, 0x04 ); // clean end of frame MSB + 8014ff0: 2104 movs r1, #4 + 8014ff2: 20f2 movs r0, #242 ; 0xf2 + 8014ff4: f7ff fc86 bl 8014904 <RadioWrite> + uint16_t bitNum = ( size * 8 ) + 2; + 8014ff8: 00e1 lsls r1, r4, #3 + 8014ffa: 1c8c adds r4, r1, #2 + RadioWrite( SUBGHZ_RAM_FRAMELIMH, ( bitNum >> 8 ) & 0x00FF ); // limit frame + 8014ffc: 0a09 lsrs r1, r1, #8 + 8014ffe: 20f4 movs r0, #244 ; 0xf4 + 8015000: f7ff fc80 bl 8014904 <RadioWrite> + RadioWrite( SUBGHZ_RAM_FRAMELIML, bitNum & 0x00FF ); // limit frame + 8015004: f004 01fe and.w r1, r4, #254 ; 0xfe + 8015008: 20f5 movs r0, #245 ; 0xf5 + 801500a: f7ff fc7b bl 8014904 <RadioWrite> + SUBGRF_SendPayload( RadioBuffer, size + 1, 0xFFFFFF ); + 801500e: f06f 427f mvn.w r2, #4278190080 ; 0xff000000 + 8015012: 4629 mov r1, r5 + 8015014: 480a ldr r0, [pc, #40] ; (8015040 <RadioSend+0x1a0>) + 8015016: f000 ff57 bl 8015ec8 <SUBGRF_SendPayload> + break; + 801501a: e786 b.n 8014f2a <RadioSend+0x8a> + RadioWrite( SUBGHZ_RAM_RAMPDNL, 0x70 ); // clean end of frame LSB + 801501c: 2170 movs r1, #112 ; 0x70 + 801501e: 20f3 movs r0, #243 ; 0xf3 + 8015020: f7ff fc70 bl 8014904 <RadioWrite> + RadioWrite( SUBGHZ_RAM_RAMPDNH, 0x1D ); // clean end of frame MSB + 8015024: 211d movs r1, #29 + 8015026: 20f2 movs r0, #242 ; 0xf2 + 8015028: f7ff fc6c bl 8014904 <RadioWrite> + 801502c: e7e4 b.n 8014ff8 <RadioSend+0x158> + 801502e: bf00 nop + 8015030: 48000400 .word 0x48000400 + 8015034: 20002750 .word 0x20002750 + 8015038: 200027ac .word 0x200027ac + 801503c: 08018c98 .word 0x08018c98 + 8015040: 20002634 .word 0x20002634 + +08015044 <RadioRandom>: +{ + 8015044: b508 push {r3, lr} + SUBGRF_SetDioIrqParams( IRQ_RADIO_NONE, IRQ_RADIO_NONE, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); + 8015046: 2300 movs r3, #0 + 8015048: 461a mov r2, r3 + 801504a: 4619 mov r1, r3 + 801504c: 4618 mov r0, r3 + 801504e: f001 f8b4 bl 80161ba <SUBGRF_SetDioIrqParams> + rnd = SUBGRF_GetRandom(); + 8015052: f000 ff5b bl 8015f0c <SUBGRF_GetRandom> +} + 8015056: bd08 pop {r3, pc} + +08015058 <RadioSetModem>: +{ + 8015058: b510 push {r4, lr} + 801505a: 4604 mov r4, r0 + SubgRf.Modem = modem; + 801505c: 4b1c ldr r3, [pc, #112] ; (80150d0 <RadioSetModem+0x78>) + 801505e: 7018 strb r0, [r3, #0] + RFW_SetRadioModem( modem ); + 8015060: f001 fc91 bl 8016986 <RFW_SetRadioModem> + switch( modem ) + 8015064: 2c05 cmp r4, #5 + 8015066: d804 bhi.n 8015072 <RadioSetModem+0x1a> + 8015068: e8df f004 tbb [pc, r4] + 801506c: 1d03110a .word 0x1d03110a + 8015070: 2b24 .short 0x2b24 + SUBGRF_SetPacketType( PACKET_TYPE_GMSK ); + 8015072: 2003 movs r0, #3 + 8015074: f001 f942 bl 80162fc <SUBGRF_SetPacketType> + SubgRf.PublicNetwork.Current = false; + 8015078: 4b15 ldr r3, [pc, #84] ; (80150d0 <RadioSetModem+0x78>) + 801507a: 2200 movs r2, #0 + 801507c: 735a strb r2, [r3, #13] +} + 801507e: bd10 pop {r4, pc} + SUBGRF_SetPacketType( PACKET_TYPE_GFSK ); + 8015080: 2000 movs r0, #0 + 8015082: f001 f93b bl 80162fc <SUBGRF_SetPacketType> + SubgRf.PublicNetwork.Current = false; + 8015086: 4b12 ldr r3, [pc, #72] ; (80150d0 <RadioSetModem+0x78>) + 8015088: 2200 movs r2, #0 + 801508a: 735a strb r2, [r3, #13] + break; + 801508c: e7f7 b.n 801507e <RadioSetModem+0x26> + SUBGRF_SetPacketType( PACKET_TYPE_LORA ); + 801508e: 2001 movs r0, #1 + 8015090: f001 f934 bl 80162fc <SUBGRF_SetPacketType> + if( SubgRf.PublicNetwork.Current != SubgRf.PublicNetwork.Previous ) + 8015094: 4b0e ldr r3, [pc, #56] ; (80150d0 <RadioSetModem+0x78>) + 8015096: 7b5a ldrb r2, [r3, #13] + 8015098: 7b18 ldrb r0, [r3, #12] + 801509a: 4282 cmp r2, r0 + 801509c: d0ef beq.n 801507e <RadioSetModem+0x26> + SubgRf.PublicNetwork.Current = SubgRf.PublicNetwork.Previous; + 801509e: 7358 strb r0, [r3, #13] + RadioSetPublicNetwork( SubgRf.PublicNetwork.Current ); + 80150a0: f000 fade bl 8015660 <RadioSetPublicNetwork> + 80150a4: e7eb b.n 801507e <RadioSetModem+0x26> + SUBGRF_SetPacketType( PACKET_TYPE_BPSK ); + 80150a6: 2002 movs r0, #2 + 80150a8: f001 f928 bl 80162fc <SUBGRF_SetPacketType> + SubgRf.PublicNetwork.Current = false; + 80150ac: 4b08 ldr r3, [pc, #32] ; (80150d0 <RadioSetModem+0x78>) + 80150ae: 2200 movs r2, #0 + 80150b0: 735a strb r2, [r3, #13] + break; + 80150b2: e7e4 b.n 801507e <RadioSetModem+0x26> + SUBGRF_SetPacketType( PACKET_TYPE_BPSK ); + 80150b4: 2002 movs r0, #2 + 80150b6: f001 f921 bl 80162fc <SUBGRF_SetPacketType> + SubgRf.PublicNetwork.Current = false; + 80150ba: 4b05 ldr r3, [pc, #20] ; (80150d0 <RadioSetModem+0x78>) + 80150bc: 2200 movs r2, #0 + 80150be: 735a strb r2, [r3, #13] + break; + 80150c0: e7dd b.n 801507e <RadioSetModem+0x26> + SUBGRF_SetPacketType( PACKET_TYPE_GFSK ); + 80150c2: 2000 movs r0, #0 + 80150c4: f001 f91a bl 80162fc <SUBGRF_SetPacketType> + SubgRf.PublicNetwork.Current = false; + 80150c8: 4b01 ldr r3, [pc, #4] ; (80150d0 <RadioSetModem+0x78>) + 80150ca: 2200 movs r2, #0 + 80150cc: 735a strb r2, [r3, #13] +} + 80150ce: e7d6 b.n 801507e <RadioSetModem+0x26> + 80150d0: 20002750 .word 0x20002750 + +080150d4 <RadioSetTxGenericConfig>: +{ + 80150d4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80150d8: b086 sub sp, #24 + 80150da: 4605 mov r5, r0 + 80150dc: 460c mov r4, r1 + 80150de: 4617 mov r7, r2 + 80150e0: 461e mov r6, r3 + uint8_t syncword[8] = {0}; + 80150e2: 2100 movs r1, #0 + 80150e4: 9104 str r1, [sp, #16] + 80150e6: 9105 str r1, [sp, #20] + RFW_DeInit( ); /* switch Off FwPacketDecoding by default */ + 80150e8: f001 fc3f bl 801696a <RFW_DeInit> + switch( modem ) + 80150ec: 2d03 cmp r5, #3 + 80150ee: f200 8156 bhi.w 801539e <RadioSetTxGenericConfig+0x2ca> + 80150f2: e8df f015 tbh [pc, r5, lsl #1] + 80150f6: 007a .short 0x007a + 80150f8: 014000dd .word 0x014000dd + 80150fc: 0004 .short 0x0004 + if( config->msk.SyncWordLength > 8 ) + 80150fe: 7ca2 ldrb r2, [r4, #18] + 8015100: 2a08 cmp r2, #8 + 8015102: f200 8159 bhi.w 80153b8 <RadioSetTxGenericConfig+0x2e4> + RADIO_MEMCPY8( syncword, config->msk.SyncWord, config->msk.SyncWordLength ); + 8015106: 68a1 ldr r1, [r4, #8] + 8015108: a804 add r0, sp, #16 + 801510a: f001 fe2b bl 8016d64 <UTIL_MEM_cpy_8> + if( ( config->msk.BitRate == 0 ) ) + 801510e: 6823 ldr r3, [r4, #0] + 8015110: 2b00 cmp r3, #0 + 8015112: f000 8154 beq.w 80153be <RadioSetTxGenericConfig+0x2ea> + else if( config->msk.BitRate <= 10000 ) + 8015116: f242 7210 movw r2, #10000 ; 0x2710 + 801511a: 4293 cmp r3, r2 + 801511c: d823 bhi.n 8015166 <RadioSetTxGenericConfig+0x92> + SubgRf.PacketParams.PacketType = PACKET_TYPE_GMSK; + 801511e: 4bae ldr r3, [pc, #696] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 8015120: 2203 movs r2, #3 + 8015122: 739a strb r2, [r3, #14] + SubgRf.ModulationParams.PacketType = PACKET_TYPE_GMSK; + 8015124: f883 2038 strb.w r2, [r3, #56] ; 0x38 + SubgRf.ModulationParams.Params.Gfsk.BitRate = config->msk.BitRate; + 8015128: 6822 ldr r2, [r4, #0] + 801512a: 63da str r2, [r3, #60] ; 0x3c + SubgRf.ModulationParams.Params.Gfsk.ModulationShaping = ( RadioModShapings_t ) config->msk.ModulationShaping; + 801512c: 7ce2 ldrb r2, [r4, #19] + 801512e: f883 2044 strb.w r2, [r3, #68] ; 0x44 + radio_modem = MODEM_MSK; + 8015132: 2502 movs r5, #2 + SubgRf.PacketParams.Params.Gfsk.PreambleLength = ( config->msk.PreambleLen ) << 3; // convert byte into bit + 8015134: 6863 ldr r3, [r4, #4] + 8015136: 00da lsls r2, r3, #3 + 8015138: 4ba7 ldr r3, [pc, #668] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 801513a: 821a strh r2, [r3, #16] + SubgRf.PacketParams.Params.Gfsk.PreambleMinDetect = RADIO_PREAMBLE_DETECTOR_08_BITS; // don't care in tx + 801513c: 2204 movs r2, #4 + 801513e: 749a strb r2, [r3, #18] + SubgRf.PacketParams.Params.Gfsk.SyncWordLength = ( config->msk.SyncWordLength ) << 3; // convert byte into bit + 8015140: 7ca2 ldrb r2, [r4, #18] + 8015142: 00d2 lsls r2, r2, #3 + 8015144: 74da strb r2, [r3, #19] + SubgRf.PacketParams.Params.Gfsk.AddrComp = RADIO_ADDRESSCOMP_FILT_OFF; // don't care in tx + 8015146: 2200 movs r2, #0 + 8015148: 751a strb r2, [r3, #20] + if( ( config->msk.Whitening == RADIO_FSK_DC_IBM_WHITENING ) + 801514a: 7da3 ldrb r3, [r4, #22] + 801514c: 2b02 cmp r3, #2 + 801514e: d018 beq.n 8015182 <RadioSetTxGenericConfig+0xae> + || ( config->msk.HeaderType == RADIO_FSK_PACKET_2BYTES_LENGTH ) ) + 8015150: 7d23 ldrb r3, [r4, #20] + 8015152: 2b02 cmp r3, #2 + 8015154: d015 beq.n 8015182 <RadioSetTxGenericConfig+0xae> + SubgRf.PacketParams.Params.Gfsk.CrcLength = ( RadioCrcTypes_t ) config->msk.CrcLength; + 8015156: 7d62 ldrb r2, [r4, #21] + 8015158: 4b9f ldr r3, [pc, #636] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 801515a: 75da strb r2, [r3, #23] + SubgRf.PacketParams.Params.Gfsk.DcFree = ( RadioDcFree_t ) config->msk.Whitening; + 801515c: 7da2 ldrb r2, [r4, #22] + 801515e: 761a strb r2, [r3, #24] + SubgRf.PacketParams.Params.Gfsk.HeaderType = ( RadioPacketLengthModes_t ) config->msk.HeaderType; + 8015160: 7d22 ldrb r2, [r4, #20] + 8015162: 755a strb r2, [r3, #21] + 8015164: e026 b.n 80151b4 <RadioSetTxGenericConfig+0xe0> + SubgRf.PacketParams.PacketType = PACKET_TYPE_GFSK; + 8015166: 4b9c ldr r3, [pc, #624] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 8015168: 2500 movs r5, #0 + 801516a: 739d strb r5, [r3, #14] + SubgRf.ModulationParams.PacketType = PACKET_TYPE_GFSK; + 801516c: f883 5038 strb.w r5, [r3, #56] ; 0x38 + SubgRf.ModulationParams.Params.Gfsk.BitRate = config->msk.BitRate; + 8015170: 6822 ldr r2, [r4, #0] + 8015172: 63da str r2, [r3, #60] ; 0x3c + SubgRf.ModulationParams.Params.Gfsk.ModulationShaping = ( RadioModShapings_t ) config->msk.ModulationShaping; + 8015174: 7ce2 ldrb r2, [r4, #19] + 8015176: f883 2044 strb.w r2, [r3, #68] ; 0x44 + SubgRf.ModulationParams.Params.Gfsk.Fdev = config->msk.BitRate / 4; + 801517a: 6822 ldr r2, [r4, #0] + 801517c: 0892 lsrs r2, r2, #2 + 801517e: 641a str r2, [r3, #64] ; 0x40 + 8015180: e7d8 b.n 8015134 <RadioSetTxGenericConfig+0x60> + if( ( config->msk.CrcLength != RADIO_FSK_CRC_2_BYTES_IBM ) && ( config->msk.CrcLength != RADIO_FSK_CRC_2_BYTES_CCIT ) + 8015182: 7d62 ldrb r2, [r4, #21] + 8015184: f102 030f add.w r3, r2, #15 + 8015188: b2db uxtb r3, r3 + 801518a: 2b01 cmp r3, #1 + 801518c: d901 bls.n 8015192 <RadioSetTxGenericConfig+0xbe> + && ( config->msk.CrcLength != RADIO_FSK_CRC_OFF ) ) + 801518e: 2a01 cmp r2, #1 + 8015190: d128 bne.n 80151e4 <RadioSetTxGenericConfig+0x110> + ConfigGeneric.TxConfig = config; + 8015192: 9401 str r4, [sp, #4] + ConfigGeneric.rtx = CONFIG_TX; + 8015194: 2301 movs r3, #1 + 8015196: f88d 300c strb.w r3, [sp, #12] + if( 0UL != RFW_Init( &ConfigGeneric, RadioEvents, &TxTimeoutTimer ) ) + 801519a: 4a90 ldr r2, [pc, #576] ; (80153dc <RadioSetTxGenericConfig+0x308>) + 801519c: 4b90 ldr r3, [pc, #576] ; (80153e0 <RadioSetTxGenericConfig+0x30c>) + 801519e: 6819 ldr r1, [r3, #0] + 80151a0: a801 add r0, sp, #4 + 80151a2: f001 fbdf bl 8016964 <RFW_Init> + 80151a6: b9e8 cbnz r0, 80151e4 <RadioSetTxGenericConfig+0x110> + SubgRf.PacketParams.Params.Gfsk.DcFree = ( RadioDcFree_t ) RADIO_FSK_DC_FREE_OFF; + 80151a8: 4b8b ldr r3, [pc, #556] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 80151aa: 2200 movs r2, #0 + 80151ac: 761a strb r2, [r3, #24] + SubgRf.PacketParams.Params.Gfsk.CrcLength = ( RadioCrcTypes_t ) RADIO_CRC_OFF; + 80151ae: 2101 movs r1, #1 + 80151b0: 75d9 strb r1, [r3, #23] + SubgRf.PacketParams.Params.Gfsk.HeaderType = ( RadioPacketLengthModes_t ) RADIO_PACKET_FIXED_LENGTH; + 80151b2: 755a strb r2, [r3, #21] + RadioStandby( ); + 80151b4: f7ff fc22 bl 80149fc <RadioStandby> + RadioSetModem( radio_modem ); + 80151b8: 4628 mov r0, r5 + 80151ba: f7ff ff4d bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 80151be: 4d86 ldr r5, [pc, #536] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 80151c0: f105 0038 add.w r0, r5, #56 ; 0x38 + 80151c4: f001 f942 bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 80151c8: f105 000e add.w r0, r5, #14 + 80151cc: f001 f9c6 bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SetSyncWord( syncword ); + 80151d0: a804 add r0, sp, #16 + 80151d2: f000 fdab bl 8015d2c <SUBGRF_SetSyncWord> + SUBGRF_SetWhiteningSeed( config->msk.whiteSeed ); + 80151d6: 8a20 ldrh r0, [r4, #16] + 80151d8: f000 fd7f bl 8015cda <SUBGRF_SetWhiteningSeed> + SUBGRF_SetCrcPolynomial( config->msk.CrcPolynomial ); + 80151dc: 89a0 ldrh r0, [r4, #12] + 80151de: f000 fdc2 bl 8015d66 <SUBGRF_SetCrcPolynomial> + break; + 80151e2: e0dc b.n 801539e <RadioSetTxGenericConfig+0x2ca> + return -1; + 80151e4: f04f 30ff mov.w r0, #4294967295 + 80151e8: e0e3 b.n 80153b2 <RadioSetTxGenericConfig+0x2de> + if( config->fsk.BitRate == 0 ) + 80151ea: 6823 ldr r3, [r4, #0] + 80151ec: 2b00 cmp r3, #0 + 80151ee: f000 80e9 beq.w 80153c4 <RadioSetTxGenericConfig+0x2f0> + if( config->fsk.SyncWordLength > 8 ) + 80151f2: 7ca2 ldrb r2, [r4, #18] + 80151f4: 2a08 cmp r2, #8 + 80151f6: f200 80e8 bhi.w 80153ca <RadioSetTxGenericConfig+0x2f6> + RADIO_MEMCPY8( syncword, config->fsk.SyncWord, config->fsk.SyncWordLength ); + 80151fa: 68a1 ldr r1, [r4, #8] + 80151fc: a804 add r0, sp, #16 + 80151fe: f001 fdb1 bl 8016d64 <UTIL_MEM_cpy_8> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_GFSK; + 8015202: 4b75 ldr r3, [pc, #468] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 8015204: 2200 movs r2, #0 + 8015206: f883 2038 strb.w r2, [r3, #56] ; 0x38 + SubgRf.ModulationParams.Params.Gfsk.BitRate = config->fsk.BitRate; + 801520a: 6821 ldr r1, [r4, #0] + 801520c: 63d9 str r1, [r3, #60] ; 0x3c + SubgRf.ModulationParams.Params.Gfsk.ModulationShaping = ( RadioModShapings_t ) config->fsk.ModulationShaping; + 801520e: 7ce1 ldrb r1, [r4, #19] + 8015210: f883 1044 strb.w r1, [r3, #68] ; 0x44 + SubgRf.ModulationParams.Params.Gfsk.Fdev = config->fsk.FrequencyDeviation; + 8015214: 69a1 ldr r1, [r4, #24] + 8015216: 6419 str r1, [r3, #64] ; 0x40 + SubgRf.PacketParams.PacketType = PACKET_TYPE_GFSK; + 8015218: 739a strb r2, [r3, #14] + SubgRf.PacketParams.Params.Gfsk.PreambleLength = ( config->fsk.PreambleLen ) << 3; // convert byte into bit + 801521a: 6861 ldr r1, [r4, #4] + 801521c: 00c9 lsls r1, r1, #3 + 801521e: 8219 strh r1, [r3, #16] + SubgRf.PacketParams.Params.Gfsk.PreambleMinDetect = RADIO_PREAMBLE_DETECTOR_08_BITS; // don't care in tx + 8015220: 2104 movs r1, #4 + 8015222: 7499 strb r1, [r3, #18] + SubgRf.PacketParams.Params.Gfsk.SyncWordLength = ( config->fsk.SyncWordLength ) << 3; // convert byte into bit + 8015224: 7ca1 ldrb r1, [r4, #18] + 8015226: 00c9 lsls r1, r1, #3 + 8015228: 74d9 strb r1, [r3, #19] + SubgRf.PacketParams.Params.Gfsk.AddrComp = RADIO_ADDRESSCOMP_FILT_OFF; // don't care in tx + 801522a: 751a strb r2, [r3, #20] + if( ( config->fsk.Whitening == RADIO_FSK_DC_IBM_WHITENING ) + 801522c: 7da3 ldrb r3, [r4, #22] + 801522e: 2b02 cmp r3, #2 + 8015230: d00a beq.n 8015248 <RadioSetTxGenericConfig+0x174> + || ( config->fsk.HeaderType == RADIO_FSK_PACKET_2BYTES_LENGTH ) ) + 8015232: 7d23 ldrb r3, [r4, #20] + 8015234: 2b02 cmp r3, #2 + 8015236: d007 beq.n 8015248 <RadioSetTxGenericConfig+0x174> + SubgRf.PacketParams.Params.Gfsk.CrcLength = ( RadioCrcTypes_t ) config->fsk.CrcLength; + 8015238: 7d62 ldrb r2, [r4, #21] + 801523a: 4b67 ldr r3, [pc, #412] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 801523c: 75da strb r2, [r3, #23] + SubgRf.PacketParams.Params.Gfsk.DcFree = ( RadioDcFree_t ) config->fsk.Whitening; + 801523e: 7da2 ldrb r2, [r4, #22] + 8015240: 761a strb r2, [r3, #24] + SubgRf.PacketParams.Params.Gfsk.HeaderType = ( RadioPacketLengthModes_t ) config->fsk.HeaderType; + 8015242: 7d22 ldrb r2, [r4, #20] + 8015244: 755a strb r2, [r3, #21] + 8015246: e018 b.n 801527a <RadioSetTxGenericConfig+0x1a6> + if( ( config->fsk.CrcLength != RADIO_FSK_CRC_2_BYTES_IBM ) && ( config->fsk.CrcLength != RADIO_FSK_CRC_2_BYTES_CCIT ) + 8015248: 7d62 ldrb r2, [r4, #21] + 801524a: f102 030f add.w r3, r2, #15 + 801524e: b2db uxtb r3, r3 + 8015250: 2b01 cmp r3, #1 + 8015252: d901 bls.n 8015258 <RadioSetTxGenericConfig+0x184> + && ( config->fsk.CrcLength != RADIO_FSK_CRC_OFF ) ) + 8015254: 2a01 cmp r2, #1 + 8015256: d128 bne.n 80152aa <RadioSetTxGenericConfig+0x1d6> + ConfigGeneric.rtx = CONFIG_TX; + 8015258: 2301 movs r3, #1 + 801525a: f88d 300c strb.w r3, [sp, #12] + ConfigGeneric.TxConfig = config; + 801525e: 9401 str r4, [sp, #4] + if( 0UL != RFW_Init( &ConfigGeneric, RadioEvents, &TxTimeoutTimer ) ) + 8015260: 4a5e ldr r2, [pc, #376] ; (80153dc <RadioSetTxGenericConfig+0x308>) + 8015262: 4b5f ldr r3, [pc, #380] ; (80153e0 <RadioSetTxGenericConfig+0x30c>) + 8015264: 6819 ldr r1, [r3, #0] + 8015266: a801 add r0, sp, #4 + 8015268: f001 fb7c bl 8016964 <RFW_Init> + 801526c: b9e8 cbnz r0, 80152aa <RadioSetTxGenericConfig+0x1d6> + SubgRf.PacketParams.Params.Gfsk.DcFree = ( RadioDcFree_t ) RADIO_FSK_DC_FREE_OFF; + 801526e: 4b5a ldr r3, [pc, #360] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 8015270: 2200 movs r2, #0 + 8015272: 761a strb r2, [r3, #24] + SubgRf.PacketParams.Params.Gfsk.CrcLength = ( RadioCrcTypes_t ) RADIO_CRC_OFF; + 8015274: 2101 movs r1, #1 + 8015276: 75d9 strb r1, [r3, #23] + SubgRf.PacketParams.Params.Gfsk.HeaderType = ( RadioPacketLengthModes_t ) RADIO_PACKET_FIXED_LENGTH; + 8015278: 755a strb r2, [r3, #21] + RadioStandby( ); + 801527a: f7ff fbbf bl 80149fc <RadioStandby> + RadioSetModem( MODEM_FSK ); + 801527e: 2000 movs r0, #0 + 8015280: f7ff feea bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 8015284: 4d54 ldr r5, [pc, #336] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 8015286: f105 0038 add.w r0, r5, #56 ; 0x38 + 801528a: f001 f8df bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 801528e: f105 000e add.w r0, r5, #14 + 8015292: f001 f963 bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SetSyncWord( syncword ); + 8015296: a804 add r0, sp, #16 + 8015298: f000 fd48 bl 8015d2c <SUBGRF_SetSyncWord> + SUBGRF_SetWhiteningSeed( config->fsk.whiteSeed ); + 801529c: 8a20 ldrh r0, [r4, #16] + 801529e: f000 fd1c bl 8015cda <SUBGRF_SetWhiteningSeed> + SUBGRF_SetCrcPolynomial( config->fsk.CrcPolynomial ); + 80152a2: 89a0 ldrh r0, [r4, #12] + 80152a4: f000 fd5f bl 8015d66 <SUBGRF_SetCrcPolynomial> + break; + 80152a8: e079 b.n 801539e <RadioSetTxGenericConfig+0x2ca> + return -1; + 80152aa: f04f 30ff mov.w r0, #4294967295 + 80152ae: e080 b.n 80153b2 <RadioSetTxGenericConfig+0x2de> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_LORA; + 80152b0: 4b49 ldr r3, [pc, #292] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 80152b2: 2201 movs r2, #1 + 80152b4: f883 2038 strb.w r2, [r3, #56] ; 0x38 + SubgRf.ModulationParams.Params.LoRa.SpreadingFactor = ( RadioLoRaSpreadingFactors_t ) config->lora.SpreadingFactor; + 80152b8: 7822 ldrb r2, [r4, #0] + 80152ba: f883 2050 strb.w r2, [r3, #80] ; 0x50 + SubgRf.ModulationParams.Params.LoRa.Bandwidth = ( RadioLoRaBandwidths_t ) config->lora.Bandwidth; + 80152be: 7862 ldrb r2, [r4, #1] + 80152c0: f883 2051 strb.w r2, [r3, #81] ; 0x51 + SubgRf.ModulationParams.Params.LoRa.CodingRate = ( RadioLoRaCodingRates_t ) config->lora.Coderate; + 80152c4: 78a2 ldrb r2, [r4, #2] + 80152c6: f883 2052 strb.w r2, [r3, #82] ; 0x52 + switch( config->lora.LowDatarateOptimize ) + 80152ca: 78e3 ldrb r3, [r4, #3] + 80152cc: 2b01 cmp r3, #1 + 80152ce: d033 beq.n 8015338 <RadioSetTxGenericConfig+0x264> + 80152d0: 2b02 cmp r3, #2 + 80152d2: d036 beq.n 8015342 <RadioSetTxGenericConfig+0x26e> + 80152d4: b35b cbz r3, 801532e <RadioSetTxGenericConfig+0x25a> + SubgRf.PacketParams.PacketType = PACKET_TYPE_LORA; + 80152d6: 4d40 ldr r5, [pc, #256] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 80152d8: f04f 0801 mov.w r8, #1 + 80152dc: f885 800e strb.w r8, [r5, #14] + SubgRf.PacketParams.Params.LoRa.PreambleLength = config->lora.PreambleLen; + 80152e0: 88a3 ldrh r3, [r4, #4] + 80152e2: 83ab strh r3, [r5, #28] + SubgRf.PacketParams.Params.LoRa.HeaderType = ( RadioLoRaPacketLengthsMode_t ) config->lora.LengthMode; + 80152e4: 79a3 ldrb r3, [r4, #6] + 80152e6: 77ab strb r3, [r5, #30] + SubgRf.PacketParams.Params.LoRa.CrcMode = ( RadioLoRaCrcModes_t ) config->lora.CrcMode; + 80152e8: 79e3 ldrb r3, [r4, #7] + 80152ea: f885 3020 strb.w r3, [r5, #32] + SubgRf.PacketParams.Params.LoRa.InvertIQ = ( RadioLoRaIQModes_t ) config->lora.IqInverted; + 80152ee: 7a23 ldrb r3, [r4, #8] + 80152f0: f885 3021 strb.w r3, [r5, #33] ; 0x21 + RadioStandby( ); + 80152f4: f7ff fb82 bl 80149fc <RadioStandby> + RadioSetModem( MODEM_LORA ); + 80152f8: 4640 mov r0, r8 + 80152fa: f7ff fead bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 80152fe: f105 0038 add.w r0, r5, #56 ; 0x38 + 8015302: f001 f8a3 bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8015306: f105 000e add.w r0, r5, #14 + 801530a: f001 f927 bl 801655c <SUBGRF_SetPacketParams> + if( SubgRf.ModulationParams.Params.LoRa.Bandwidth == LORA_BW_500 ) + 801530e: f895 3051 ldrb.w r3, [r5, #81] ; 0x51 + 8015312: 2b06 cmp r3, #6 + 8015314: d024 beq.n 8015360 <RadioSetTxGenericConfig+0x28c> + SUBGRF_WriteRegister( SUBGHZ_SDCFG0R, SUBGRF_ReadRegister( SUBGHZ_SDCFG0R ) | ( 1 << 2 ) ); + 8015316: f640 0089 movw r0, #2185 ; 0x889 + 801531a: f000 fcbb bl 8015c94 <SUBGRF_ReadRegister> + 801531e: f040 0104 orr.w r1, r0, #4 + 8015322: b2c9 uxtb r1, r1 + 8015324: f640 0089 movw r0, #2185 ; 0x889 + 8015328: f000 fca4 bl 8015c74 <SUBGRF_WriteRegister> + 801532c: e037 b.n 801539e <RadioSetTxGenericConfig+0x2ca> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 0; + 801532e: 4b2a ldr r3, [pc, #168] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 8015330: 2200 movs r2, #0 + 8015332: f883 2053 strb.w r2, [r3, #83] ; 0x53 + break; + 8015336: e7ce b.n 80152d6 <RadioSetTxGenericConfig+0x202> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 1; + 8015338: 4b27 ldr r3, [pc, #156] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 801533a: 2201 movs r2, #1 + 801533c: f883 2053 strb.w r2, [r3, #83] ; 0x53 + break; + 8015340: e7c9 b.n 80152d6 <RadioSetTxGenericConfig+0x202> + if( ( config->lora.SpreadingFactor == RADIO_LORA_SF11 ) || ( config->lora.SpreadingFactor == RADIO_LORA_SF12 ) ) + 8015342: 7823 ldrb r3, [r4, #0] + 8015344: 3b0b subs r3, #11 + 8015346: b2db uxtb r3, r3 + 8015348: 2b01 cmp r3, #1 + 801534a: d904 bls.n 8015356 <RadioSetTxGenericConfig+0x282> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 0; + 801534c: 4b22 ldr r3, [pc, #136] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 801534e: 2200 movs r2, #0 + 8015350: f883 2053 strb.w r2, [r3, #83] ; 0x53 + 8015354: e7bf b.n 80152d6 <RadioSetTxGenericConfig+0x202> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 1; + 8015356: 4b20 ldr r3, [pc, #128] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 8015358: 2201 movs r2, #1 + 801535a: f883 2053 strb.w r2, [r3, #83] ; 0x53 + 801535e: e7ba b.n 80152d6 <RadioSetTxGenericConfig+0x202> + SUBGRF_WriteRegister( SUBGHZ_SDCFG0R, SUBGRF_ReadRegister( SUBGHZ_SDCFG0R ) & ~( 1 << 2 ) ); + 8015360: f640 0089 movw r0, #2185 ; 0x889 + 8015364: f000 fc96 bl 8015c94 <SUBGRF_ReadRegister> + 8015368: f000 01fb and.w r1, r0, #251 ; 0xfb + 801536c: f640 0089 movw r0, #2185 ; 0x889 + 8015370: f000 fc80 bl 8015c74 <SUBGRF_WriteRegister> + 8015374: e013 b.n 801539e <RadioSetTxGenericConfig+0x2ca> + if( ( config->bpsk.BitRate == 0 ) || ( config->bpsk.BitRate > 1000 ) ) + 8015376: 6823 ldr r3, [r4, #0] + 8015378: 3b01 subs r3, #1 + 801537a: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 801537e: d227 bcs.n 80153d0 <RadioSetTxGenericConfig+0x2fc> + RadioSetModem( MODEM_BPSK ); + 8015380: 2003 movs r0, #3 + 8015382: f7ff fe69 bl 8015058 <RadioSetModem> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_BPSK; + 8015386: 4814 ldr r0, [pc, #80] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 8015388: 2302 movs r3, #2 + 801538a: f880 3038 strb.w r3, [r0, #56] ; 0x38 + SubgRf.ModulationParams.Params.Bpsk.BitRate = config->bpsk.BitRate; + 801538e: 6823 ldr r3, [r4, #0] + 8015390: 6483 str r3, [r0, #72] ; 0x48 + SubgRf.ModulationParams.Params.Bpsk.ModulationShaping = MOD_SHAPING_DBPSK; + 8015392: 2316 movs r3, #22 + 8015394: f880 304c strb.w r3, [r0, #76] ; 0x4c + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 8015398: 3038 adds r0, #56 ; 0x38 + 801539a: f001 f857 bl 801644c <SUBGRF_SetModulationParams> + SubgRf.AntSwitchPaSelect = SUBGRF_SetRfTxPower( power ); + 801539e: 4638 mov r0, r7 + 80153a0: f001 fa06 bl 80167b0 <SUBGRF_SetRfTxPower> + 80153a4: 4c0c ldr r4, [pc, #48] ; (80153d8 <RadioSetTxGenericConfig+0x304>) + 80153a6: f884 0056 strb.w r0, [r4, #86] ; 0x56 + RFW_SetAntSwitch( SubgRf.AntSwitchPaSelect ); + 80153aa: f001 fae3 bl 8016974 <RFW_SetAntSwitch> + SubgRf.TxTimeout = timeout; + 80153ae: 6066 str r6, [r4, #4] + return 0; + 80153b0: 2000 movs r0, #0 +} + 80153b2: b006 add sp, #24 + 80153b4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + return -1; + 80153b8: f04f 30ff mov.w r0, #4294967295 + 80153bc: e7f9 b.n 80153b2 <RadioSetTxGenericConfig+0x2de> + return -1; + 80153be: f04f 30ff mov.w r0, #4294967295 + 80153c2: e7f6 b.n 80153b2 <RadioSetTxGenericConfig+0x2de> + return -1; + 80153c4: f04f 30ff mov.w r0, #4294967295 + 80153c8: e7f3 b.n 80153b2 <RadioSetTxGenericConfig+0x2de> + return -1; + 80153ca: f04f 30ff mov.w r0, #4294967295 + 80153ce: e7f0 b.n 80153b2 <RadioSetTxGenericConfig+0x2de> + return -1; + 80153d0: f04f 30ff mov.w r0, #4294967295 + 80153d4: e7ed b.n 80153b2 <RadioSetTxGenericConfig+0x2de> + 80153d6: bf00 nop + 80153d8: 20002750 .word 0x20002750 + 80153dc: 200027ac .word 0x200027ac + 80153e0: 20002734 .word 0x20002734 + +080153e4 <RadioSetRxGenericConfig>: +{ + 80153e4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80153e8: b086 sub sp, #24 + 80153ea: 4606 mov r6, r0 + 80153ec: 460c mov r4, r1 + 80153ee: 4615 mov r5, r2 + 80153f0: 461f mov r7, r3 + uint8_t syncword[8] = {0}; + 80153f2: 2300 movs r3, #0 + 80153f4: 9304 str r3, [sp, #16] + 80153f6: 9305 str r3, [sp, #20] + RFW_DeInit( ); /* switch Off FwPacketDecoding by default */ + 80153f8: f001 fab7 bl 801696a <RFW_DeInit> + if( rxContinuous != 0 ) + 80153fc: b105 cbz r5, 8015400 <RadioSetRxGenericConfig+0x1c> + symbTimeout = 0; + 80153fe: 2700 movs r7, #0 + SubgRf.RxContinuous = ( rxContinuous == 0 ) ? false : true; + 8015400: 3d00 subs r5, #0 + 8015402: bf18 it ne + 8015404: 2501 movne r5, #1 + 8015406: 4b93 ldr r3, [pc, #588] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 8015408: 705d strb r5, [r3, #1] + switch( modem ) + 801540a: b136 cbz r6, 801541a <RadioSetRxGenericConfig+0x36> + 801540c: 2e01 cmp r6, #1 + 801540e: f000 808f beq.w 8015530 <RadioSetRxGenericConfig+0x14c> + 8015412: 2000 movs r0, #0 +} + 8015414: b006 add sp, #24 + 8015416: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + if( ( config->fsk.BitRate == 0 ) || ( config->fsk.PreambleLen == 0 ) ) + 801541a: 68a3 ldr r3, [r4, #8] + 801541c: 2b00 cmp r3, #0 + 801541e: f000 810d beq.w 801563c <RadioSetRxGenericConfig+0x258> + 8015422: 68e3 ldr r3, [r4, #12] + 8015424: 2b00 cmp r3, #0 + 8015426: f000 810c beq.w 8015642 <RadioSetRxGenericConfig+0x25e> + if( config->fsk.SyncWordLength > 8 ) + 801542a: 7fa2 ldrb r2, [r4, #30] + 801542c: 2a08 cmp r2, #8 + 801542e: f200 810b bhi.w 8015648 <RadioSetRxGenericConfig+0x264> + RADIO_MEMCPY8( syncword, config->fsk.SyncWord, config->fsk.SyncWordLength ); + 8015432: 6921 ldr r1, [r4, #16] + 8015434: a804 add r0, sp, #16 + 8015436: f001 fc95 bl 8016d64 <UTIL_MEM_cpy_8> + SUBGRF_SetStopRxTimerOnPreambleDetect( ( config->fsk.StopTimerOnPreambleDetect == 0 ) ? false : true ); + 801543a: 6820 ldr r0, [r4, #0] + 801543c: 3800 subs r0, #0 + 801543e: bf18 it ne + 8015440: 2001 movne r0, #1 + 8015442: f000 fdf5 bl 8016030 <SUBGRF_SetStopRxTimerOnPreambleDetect> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_GFSK; + 8015446: 4d83 ldr r5, [pc, #524] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 8015448: 2600 movs r6, #0 + 801544a: f885 6038 strb.w r6, [r5, #56] ; 0x38 + SubgRf.ModulationParams.Params.Gfsk.BitRate = config->fsk.BitRate; + 801544e: 68a3 ldr r3, [r4, #8] + 8015450: 63eb str r3, [r5, #60] ; 0x3c + SubgRf.ModulationParams.Params.Gfsk.ModulationShaping = ( RadioModShapings_t ) config->fsk.ModulationShaping; + 8015452: f894 3020 ldrb.w r3, [r4, #32] + 8015456: f885 3044 strb.w r3, [r5, #68] ; 0x44 + SubgRf.ModulationParams.Params.Gfsk.Bandwidth = SUBGRF_GetFskBandwidthRegValue( config->fsk.Bandwidth ); + 801545a: 6860 ldr r0, [r4, #4] + 801545c: f001 fa20 bl 80168a0 <SUBGRF_GetFskBandwidthRegValue> + 8015460: f885 0045 strb.w r0, [r5, #69] ; 0x45 + SubgRf.PacketParams.PacketType = PACKET_TYPE_GFSK; + 8015464: 73ae strb r6, [r5, #14] + SubgRf.PacketParams.Params.Gfsk.PreambleLength = ( config->fsk.PreambleLen ) << 3 ; // convert byte into bit + 8015466: 68e3 ldr r3, [r4, #12] + 8015468: 00db lsls r3, r3, #3 + 801546a: 822b strh r3, [r5, #16] + SubgRf.PacketParams.Params.Gfsk.PreambleMinDetect = ( RadioPreambleDetection_t ) config->fsk.PreambleMinDetect; + 801546c: 7fe3 ldrb r3, [r4, #31] + 801546e: 74ab strb r3, [r5, #18] + SubgRf.PacketParams.Params.Gfsk.SyncWordLength = ( config->fsk.SyncWordLength ) << 3; // convert byte into bit + 8015470: 7fa3 ldrb r3, [r4, #30] + 8015472: 00db lsls r3, r3, #3 + 8015474: 74eb strb r3, [r5, #19] + SubgRf.PacketParams.Params.Gfsk.AddrComp = ( RadioAddressComp_t ) config->fsk.AddrComp; + 8015476: f894 3021 ldrb.w r3, [r4, #33] ; 0x21 + 801547a: 752b strb r3, [r5, #20] + if( config->fsk.LengthMode == RADIO_FSK_PACKET_FIXED_LENGTH ) + 801547c: f894 3022 ldrb.w r3, [r4, #34] ; 0x22 + 8015480: b973 cbnz r3, 80154a0 <RadioSetRxGenericConfig+0xbc> + SubgRf.PacketParams.Params.Gfsk.PayloadLength = config->fsk.MaxPayloadLength; + 8015482: 6961 ldr r1, [r4, #20] + 8015484: 75a9 strb r1, [r5, #22] + if( ( config->fsk.Whitening == RADIO_FSK_DC_IBM_WHITENING ) + 8015486: f894 2024 ldrb.w r2, [r4, #36] ; 0x24 + 801548a: 2a02 cmp r2, #2 + 801548c: d012 beq.n 80154b4 <RadioSetRxGenericConfig+0xd0> + || ( config->fsk.LengthMode == RADIO_FSK_PACKET_2BYTES_LENGTH ) ) + 801548e: 2b02 cmp r3, #2 + 8015490: d010 beq.n 80154b4 <RadioSetRxGenericConfig+0xd0> + SubgRf.PacketParams.Params.Gfsk.CrcLength = ( RadioCrcTypes_t ) config->fsk.CrcLength; + 8015492: f894 0023 ldrb.w r0, [r4, #35] ; 0x23 + 8015496: 496f ldr r1, [pc, #444] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 8015498: 75c8 strb r0, [r1, #23] + SubgRf.PacketParams.Params.Gfsk.DcFree = ( RadioDcFree_t ) config->fsk.Whitening; + 801549a: 760a strb r2, [r1, #24] + SubgRf.PacketParams.Params.Gfsk.HeaderType = ( RadioPacketLengthModes_t ) config->fsk.LengthMode; + 801549c: 754b strb r3, [r1, #21] + 801549e: e023 b.n 80154e8 <RadioSetRxGenericConfig+0x104> + else if( config->fsk.LengthMode == RADIO_FSK_PACKET_2BYTES_LENGTH ) + 80154a0: 2b02 cmp r3, #2 + 80154a2: d003 beq.n 80154ac <RadioSetRxGenericConfig+0xc8> + SubgRf.PacketParams.Params.Gfsk.PayloadLength = 0xFF; + 80154a4: 4a6b ldr r2, [pc, #428] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 80154a6: 21ff movs r1, #255 ; 0xff + 80154a8: 7591 strb r1, [r2, #22] + 80154aa: e7ec b.n 8015486 <RadioSetRxGenericConfig+0xa2> + SubgRf.PacketParams.Params.Gfsk.PayloadLength = 0xFF; + 80154ac: 4a69 ldr r2, [pc, #420] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 80154ae: 21ff movs r1, #255 ; 0xff + 80154b0: 7591 strb r1, [r2, #22] + 80154b2: e7e8 b.n 8015486 <RadioSetRxGenericConfig+0xa2> + if( ( config->fsk.CrcLength != RADIO_FSK_CRC_2_BYTES_IBM ) && ( config->fsk.CrcLength != RADIO_FSK_CRC_2_BYTES_CCIT ) + 80154b4: f894 2023 ldrb.w r2, [r4, #35] ; 0x23 + 80154b8: f102 030f add.w r3, r2, #15 + 80154bc: b2db uxtb r3, r3 + 80154be: 2b01 cmp r3, #1 + 80154c0: d901 bls.n 80154c6 <RadioSetRxGenericConfig+0xe2> + && ( config->fsk.CrcLength != RADIO_FSK_CRC_OFF ) ) + 80154c2: 2a01 cmp r2, #1 + 80154c4: d131 bne.n 801552a <RadioSetRxGenericConfig+0x146> + ConfigGeneric.rtx = CONFIG_RX; + 80154c6: 2300 movs r3, #0 + 80154c8: f88d 300c strb.w r3, [sp, #12] + ConfigGeneric.RxConfig = config; + 80154cc: 9402 str r4, [sp, #8] + if( 0UL != RFW_Init( &ConfigGeneric, RadioEvents, &RxTimeoutTimer ) ) + 80154ce: 4a62 ldr r2, [pc, #392] ; (8015658 <RadioSetRxGenericConfig+0x274>) + 80154d0: 4b62 ldr r3, [pc, #392] ; (801565c <RadioSetRxGenericConfig+0x278>) + 80154d2: 6819 ldr r1, [r3, #0] + 80154d4: a801 add r0, sp, #4 + 80154d6: f001 fa45 bl 8016964 <RFW_Init> + 80154da: bb30 cbnz r0, 801552a <RadioSetRxGenericConfig+0x146> + SubgRf.PacketParams.Params.Gfsk.DcFree = ( RadioDcFree_t ) RADIO_FSK_DC_FREE_OFF; + 80154dc: 4b5d ldr r3, [pc, #372] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 80154de: 2200 movs r2, #0 + 80154e0: 761a strb r2, [r3, #24] + SubgRf.PacketParams.Params.Gfsk.CrcLength = ( RadioCrcTypes_t ) RADIO_CRC_OFF; + 80154e2: 2101 movs r1, #1 + 80154e4: 75d9 strb r1, [r3, #23] + SubgRf.PacketParams.Params.Gfsk.HeaderType = ( RadioPacketLengthModes_t ) RADIO_PACKET_FIXED_LENGTH; + 80154e6: 755a strb r2, [r3, #21] + RadioStandby( ); + 80154e8: f7ff fa88 bl 80149fc <RadioStandby> + RadioSetModem( MODEM_FSK ); + 80154ec: 2000 movs r0, #0 + 80154ee: f7ff fdb3 bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 80154f2: 4d58 ldr r5, [pc, #352] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 80154f4: f105 0038 add.w r0, r5, #56 ; 0x38 + 80154f8: f000 ffa8 bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 80154fc: f105 000e add.w r0, r5, #14 + 8015500: f001 f82c bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SetSyncWord( syncword ); + 8015504: a804 add r0, sp, #16 + 8015506: f000 fc11 bl 8015d2c <SUBGRF_SetSyncWord> + SUBGRF_SetWhiteningSeed( config->fsk.whiteSeed ); + 801550a: 8ba0 ldrh r0, [r4, #28] + 801550c: f000 fbe5 bl 8015cda <SUBGRF_SetWhiteningSeed> + SUBGRF_SetCrcPolynomial( config->fsk.CrcPolynomial ); + 8015510: 8b20 ldrh r0, [r4, #24] + 8015512: f000 fc28 bl 8015d66 <SUBGRF_SetCrcPolynomial> + SubgRf.RxTimeout = ( uint32_t )( ( symbTimeout * 1000 * 8 ) / config->fsk.BitRate ); + 8015516: f44f 53fa mov.w r3, #8000 ; 0x1f40 + 801551a: fb07 f303 mul.w r3, r7, r3 + 801551e: 68a2 ldr r2, [r4, #8] + 8015520: fbb3 f3f2 udiv r3, r3, r2 + 8015524: 60ab str r3, [r5, #8] + return status; + 8015526: 2000 movs r0, #0 + break; + 8015528: e774 b.n 8015414 <RadioSetRxGenericConfig+0x30> + return -1; + 801552a: f04f 30ff mov.w r0, #4294967295 + 801552e: e771 b.n 8015414 <RadioSetRxGenericConfig+0x30> + if( config->lora.PreambleLen == 0 ) + 8015530: 8e23 ldrh r3, [r4, #48] ; 0x30 + 8015532: 2b00 cmp r3, #0 + 8015534: f000 808b beq.w 801564e <RadioSetRxGenericConfig+0x26a> + if( config->lora.LengthMode == RADIO_LORA_PACKET_FIXED_LENGTH ) + 8015538: f894 3032 ldrb.w r3, [r4, #50] ; 0x32 + 801553c: 2b01 cmp r3, #1 + 801553e: d055 beq.n 80155ec <RadioSetRxGenericConfig+0x208> + MaxPayloadLength = 0xFF; + 8015540: f04f 08ff mov.w r8, #255 ; 0xff + SUBGRF_SetStopRxTimerOnPreambleDetect( ( config->lora.StopTimerOnPreambleDetect == 0 ) ? false : true ); + 8015544: 6aa0 ldr r0, [r4, #40] ; 0x28 + 8015546: 3800 subs r0, #0 + 8015548: bf18 it ne + 801554a: 2001 movne r0, #1 + 801554c: f000 fd70 bl 8016030 <SUBGRF_SetStopRxTimerOnPreambleDetect> + SUBGRF_SetLoRaSymbNumTimeout( symbTimeout ); + 8015550: b2f8 uxtb r0, r7 + 8015552: f000 fd7a bl 801604a <SUBGRF_SetLoRaSymbNumTimeout> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_LORA; + 8015556: 4b3f ldr r3, [pc, #252] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 8015558: 2201 movs r2, #1 + 801555a: f883 2038 strb.w r2, [r3, #56] ; 0x38 + SubgRf.ModulationParams.Params.LoRa.SpreadingFactor = ( RadioLoRaSpreadingFactors_t ) config->lora.SpreadingFactor; + 801555e: f894 202c ldrb.w r2, [r4, #44] ; 0x2c + 8015562: f883 2050 strb.w r2, [r3, #80] ; 0x50 + SubgRf.ModulationParams.Params.LoRa.Bandwidth = ( RadioLoRaBandwidths_t ) config->lora.Bandwidth; + 8015566: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 801556a: f883 2051 strb.w r2, [r3, #81] ; 0x51 + SubgRf.ModulationParams.Params.LoRa.CodingRate = ( RadioLoRaCodingRates_t ) config->lora.Coderate; + 801556e: f894 202e ldrb.w r2, [r4, #46] ; 0x2e + 8015572: f883 2052 strb.w r2, [r3, #82] ; 0x52 + switch( config->lora.LowDatarateOptimize ) + 8015576: f894 302f ldrb.w r3, [r4, #47] ; 0x2f + 801557a: 2b01 cmp r3, #1 + 801557c: d03e beq.n 80155fc <RadioSetRxGenericConfig+0x218> + 801557e: 2b02 cmp r3, #2 + 8015580: d041 beq.n 8015606 <RadioSetRxGenericConfig+0x222> + 8015582: b3b3 cbz r3, 80155f2 <RadioSetRxGenericConfig+0x20e> + SubgRf.PacketParams.PacketType = PACKET_TYPE_LORA; + 8015584: 4d33 ldr r5, [pc, #204] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 8015586: 2601 movs r6, #1 + 8015588: 73ae strb r6, [r5, #14] + SubgRf.PacketParams.Params.LoRa.PreambleLength = config->lora.PreambleLen; + 801558a: 8e23 ldrh r3, [r4, #48] ; 0x30 + 801558c: 83ab strh r3, [r5, #28] + SubgRf.PacketParams.Params.LoRa.HeaderType = ( RadioLoRaPacketLengthsMode_t ) config->lora.LengthMode; + 801558e: f894 3032 ldrb.w r3, [r4, #50] ; 0x32 + 8015592: 77ab strb r3, [r5, #30] + SubgRf.PacketParams.Params.LoRa.PayloadLength = MaxPayloadLength; + 8015594: f885 801f strb.w r8, [r5, #31] + SubgRf.PacketParams.Params.LoRa.CrcMode = ( RadioLoRaCrcModes_t ) config->lora.CrcMode; + 8015598: f894 3034 ldrb.w r3, [r4, #52] ; 0x34 + 801559c: f885 3020 strb.w r3, [r5, #32] + SubgRf.PacketParams.Params.LoRa.InvertIQ = ( RadioLoRaIQModes_t ) config->lora.IqInverted; + 80155a0: f894 3035 ldrb.w r3, [r4, #53] ; 0x35 + 80155a4: f885 3021 strb.w r3, [r5, #33] ; 0x21 + RadioStandby( ); + 80155a8: f7ff fa28 bl 80149fc <RadioStandby> + RadioSetModem( MODEM_LORA ); + 80155ac: 4630 mov r0, r6 + 80155ae: f7ff fd53 bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 80155b2: f105 0038 add.w r0, r5, #56 ; 0x38 + 80155b6: f000 ff49 bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 80155ba: f105 000e add.w r0, r5, #14 + 80155be: f000 ffcd bl 801655c <SUBGRF_SetPacketParams> + if( SubgRf.PacketParams.Params.LoRa.InvertIQ == LORA_IQ_INVERTED ) + 80155c2: f895 3021 ldrb.w r3, [r5, #33] ; 0x21 + 80155c6: 42b3 cmp r3, r6 + 80155c8: d02d beq.n 8015626 <RadioSetRxGenericConfig+0x242> + SUBGRF_WriteRegister( SUBGHZ_LIQPOLR, SUBGRF_ReadRegister( SUBGHZ_LIQPOLR ) | ( 1 << 2 ) ); + 80155ca: f240 7036 movw r0, #1846 ; 0x736 + 80155ce: f000 fb61 bl 8015c94 <SUBGRF_ReadRegister> + 80155d2: f040 0104 orr.w r1, r0, #4 + 80155d6: b2c9 uxtb r1, r1 + 80155d8: f240 7036 movw r0, #1846 ; 0x736 + 80155dc: f000 fb4a bl 8015c74 <SUBGRF_WriteRegister> + SubgRf.RxTimeout = 0xFFFF; + 80155e0: 4b1c ldr r3, [pc, #112] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 80155e2: f64f 72ff movw r2, #65535 ; 0xffff + 80155e6: 609a str r2, [r3, #8] + return status; + 80155e8: 2000 movs r0, #0 + break; + 80155ea: e713 b.n 8015414 <RadioSetRxGenericConfig+0x30> + MaxPayloadLength = config->fsk.MaxPayloadLength; + 80155ec: f894 8014 ldrb.w r8, [r4, #20] + 80155f0: e7a8 b.n 8015544 <RadioSetRxGenericConfig+0x160> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 0; + 80155f2: 4b18 ldr r3, [pc, #96] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 80155f4: 2200 movs r2, #0 + 80155f6: f883 2053 strb.w r2, [r3, #83] ; 0x53 + break; + 80155fa: e7c3 b.n 8015584 <RadioSetRxGenericConfig+0x1a0> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 1; + 80155fc: 4b15 ldr r3, [pc, #84] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 80155fe: 2201 movs r2, #1 + 8015600: f883 2053 strb.w r2, [r3, #83] ; 0x53 + break; + 8015604: e7be b.n 8015584 <RadioSetRxGenericConfig+0x1a0> + if( ( config->lora.SpreadingFactor == RADIO_LORA_SF11 ) || ( config->lora.SpreadingFactor == RADIO_LORA_SF12 ) ) + 8015606: f894 302c ldrb.w r3, [r4, #44] ; 0x2c + 801560a: 3b0b subs r3, #11 + 801560c: b2db uxtb r3, r3 + 801560e: 2b01 cmp r3, #1 + 8015610: d904 bls.n 801561c <RadioSetRxGenericConfig+0x238> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 0; + 8015612: 4b10 ldr r3, [pc, #64] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 8015614: 2200 movs r2, #0 + 8015616: f883 2053 strb.w r2, [r3, #83] ; 0x53 + 801561a: e7b3 b.n 8015584 <RadioSetRxGenericConfig+0x1a0> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 1; + 801561c: 4b0d ldr r3, [pc, #52] ; (8015654 <RadioSetRxGenericConfig+0x270>) + 801561e: 2201 movs r2, #1 + 8015620: f883 2053 strb.w r2, [r3, #83] ; 0x53 + 8015624: e7ae b.n 8015584 <RadioSetRxGenericConfig+0x1a0> + SUBGRF_WriteRegister( SUBGHZ_LIQPOLR, SUBGRF_ReadRegister( SUBGHZ_LIQPOLR ) & ~( 1 << 2 ) ); + 8015626: f240 7036 movw r0, #1846 ; 0x736 + 801562a: f000 fb33 bl 8015c94 <SUBGRF_ReadRegister> + 801562e: f000 01fb and.w r1, r0, #251 ; 0xfb + 8015632: f240 7036 movw r0, #1846 ; 0x736 + 8015636: f000 fb1d bl 8015c74 <SUBGRF_WriteRegister> + 801563a: e7d1 b.n 80155e0 <RadioSetRxGenericConfig+0x1fc> + return -1; + 801563c: f04f 30ff mov.w r0, #4294967295 + 8015640: e6e8 b.n 8015414 <RadioSetRxGenericConfig+0x30> + 8015642: f04f 30ff mov.w r0, #4294967295 + 8015646: e6e5 b.n 8015414 <RadioSetRxGenericConfig+0x30> + return -1; + 8015648: f04f 30ff mov.w r0, #4294967295 + 801564c: e6e2 b.n 8015414 <RadioSetRxGenericConfig+0x30> + return -1; + 801564e: f04f 30ff mov.w r0, #4294967295 + 8015652: e6df b.n 8015414 <RadioSetRxGenericConfig+0x30> + 8015654: 20002750 .word 0x20002750 + 8015658: 20002738 .word 0x20002738 + 801565c: 20002734 .word 0x20002734 + +08015660 <RadioSetPublicNetwork>: +{ + 8015660: b510 push {r4, lr} + 8015662: 4604 mov r4, r0 + SubgRf.PublicNetwork.Current = SubgRf.PublicNetwork.Previous = enable; + 8015664: 4b0e ldr r3, [pc, #56] ; (80156a0 <RadioSetPublicNetwork+0x40>) + 8015666: 7318 strb r0, [r3, #12] + 8015668: 7358 strb r0, [r3, #13] + RadioSetModem( MODEM_LORA ); + 801566a: 2001 movs r0, #1 + 801566c: f7ff fcf4 bl 8015058 <RadioSetModem> + if( enable == true ) + 8015670: b154 cbz r4, 8015688 <RadioSetPublicNetwork+0x28> + SUBGRF_WriteRegister( REG_LR_SYNCWORD, ( LORA_MAC_PUBLIC_SYNCWORD >> 8 ) & 0xFF ); + 8015672: 2134 movs r1, #52 ; 0x34 + 8015674: f44f 60e8 mov.w r0, #1856 ; 0x740 + 8015678: f000 fafc bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_WriteRegister( REG_LR_SYNCWORD + 1, LORA_MAC_PUBLIC_SYNCWORD & 0xFF ); + 801567c: 2144 movs r1, #68 ; 0x44 + 801567e: f240 7041 movw r0, #1857 ; 0x741 + 8015682: f000 faf7 bl 8015c74 <SUBGRF_WriteRegister> +} + 8015686: bd10 pop {r4, pc} + SUBGRF_WriteRegister( REG_LR_SYNCWORD, ( LORA_MAC_PRIVATE_SYNCWORD >> 8 ) & 0xFF ); + 8015688: 2114 movs r1, #20 + 801568a: f44f 60e8 mov.w r0, #1856 ; 0x740 + 801568e: f000 faf1 bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_WriteRegister( REG_LR_SYNCWORD + 1, LORA_MAC_PRIVATE_SYNCWORD & 0xFF ); + 8015692: 2124 movs r1, #36 ; 0x24 + 8015694: f240 7041 movw r0, #1857 ; 0x741 + 8015698: f000 faec bl 8015c74 <SUBGRF_WriteRegister> +} + 801569c: e7f3 b.n 8015686 <RadioSetPublicNetwork+0x26> + 801569e: bf00 nop + 80156a0: 20002750 .word 0x20002750 + +080156a4 <RadioSetTxConfig>: +{ + 80156a4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80156a8: b083 sub sp, #12 + 80156aa: 4604 mov r4, r0 + 80156ac: 460d mov r5, r1 + 80156ae: 4691 mov r9, r2 + 80156b0: 461f mov r7, r3 + 80156b2: f8bd 6038 ldrh.w r6, [sp, #56] ; 0x38 + 80156b6: f89d 803c ldrb.w r8, [sp, #60] ; 0x3c + 80156ba: f89d a040 ldrb.w sl, [sp, #64] ; 0x40 + RFW_DeInit(); + 80156be: f001 f954 bl 801696a <RFW_DeInit> + switch( modem ) + 80156c2: 2c01 cmp r4, #1 + 80156c4: d05d beq.n 8015782 <RadioSetTxConfig+0xde> + 80156c6: 2c04 cmp r4, #4 + 80156c8: f000 80aa beq.w 8015820 <RadioSetTxConfig+0x17c> + 80156cc: b19c cbz r4, 80156f6 <RadioSetTxConfig+0x52> + SubgRf.AntSwitchPaSelect = SUBGRF_SetRfTxPower( power ); + 80156ce: 4628 mov r0, r5 + 80156d0: f001 f86e bl 80167b0 <SUBGRF_SetRfTxPower> + 80156d4: 4c5a ldr r4, [pc, #360] ; (8015840 <RadioSetTxConfig+0x19c>) + 80156d6: f884 0056 strb.w r0, [r4, #86] ; 0x56 + SUBGRF_WriteRegister(REG_DRV_CTRL, 0x7 << 1); + 80156da: 210e movs r1, #14 + 80156dc: f640 101f movw r0, #2335 ; 0x91f + 80156e0: f000 fac8 bl 8015c74 <SUBGRF_WriteRegister> + RFW_SetAntSwitch( SubgRf.AntSwitchPaSelect ); + 80156e4: f894 0056 ldrb.w r0, [r4, #86] ; 0x56 + 80156e8: f001 f944 bl 8016974 <RFW_SetAntSwitch> + SubgRf.TxTimeout = timeout; + 80156ec: 9b14 ldr r3, [sp, #80] ; 0x50 + 80156ee: 6063 str r3, [r4, #4] +} + 80156f0: b003 add sp, #12 + 80156f2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + SubgRf.ModulationParams.PacketType = PACKET_TYPE_GFSK; + 80156f6: 4c52 ldr r4, [pc, #328] ; (8015840 <RadioSetTxConfig+0x19c>) + 80156f8: f04f 0b00 mov.w fp, #0 + 80156fc: f884 b038 strb.w fp, [r4, #56] ; 0x38 + SubgRf.ModulationParams.Params.Gfsk.BitRate = datarate; + 8015700: 9b0c ldr r3, [sp, #48] ; 0x30 + 8015702: 63e3 str r3, [r4, #60] ; 0x3c + SubgRf.ModulationParams.Params.Gfsk.ModulationShaping = MOD_SHAPING_G_BT_1; + 8015704: 230b movs r3, #11 + 8015706: f884 3044 strb.w r3, [r4, #68] ; 0x44 + SubgRf.ModulationParams.Params.Gfsk.Bandwidth = SUBGRF_GetFskBandwidthRegValue( bandwidth ); + 801570a: 4638 mov r0, r7 + 801570c: f001 f8c8 bl 80168a0 <SUBGRF_GetFskBandwidthRegValue> + 8015710: f884 0045 strb.w r0, [r4, #69] ; 0x45 + SubgRf.ModulationParams.Params.Gfsk.Fdev = fdev; + 8015714: f8c4 9040 str.w r9, [r4, #64] ; 0x40 + SubgRf.PacketParams.PacketType = PACKET_TYPE_GFSK; + 8015718: f884 b00e strb.w fp, [r4, #14] + SubgRf.PacketParams.Params.Gfsk.PreambleLength = ( preambleLen << 3 ); // convert byte into bit + 801571c: 00f6 lsls r6, r6, #3 + 801571e: 8226 strh r6, [r4, #16] + SubgRf.PacketParams.Params.Gfsk.PreambleMinDetect = RADIO_PREAMBLE_DETECTOR_08_BITS; + 8015720: 2304 movs r3, #4 + 8015722: 74a3 strb r3, [r4, #18] + SubgRf.PacketParams.Params.Gfsk.SyncWordLength = 3 << 3 ; // convert byte into bit + 8015724: 2318 movs r3, #24 + 8015726: 74e3 strb r3, [r4, #19] + SubgRf.PacketParams.Params.Gfsk.AddrComp = RADIO_ADDRESSCOMP_FILT_OFF; + 8015728: f884 b014 strb.w fp, [r4, #20] + SubgRf.PacketParams.Params.Gfsk.HeaderType = ( fixLen == true ) ? RADIO_PACKET_FIXED_LENGTH : RADIO_PACKET_VARIABLE_LENGTH; + 801572c: f088 0801 eor.w r8, r8, #1 + 8015730: f884 8015 strb.w r8, [r4, #21] + if( crcOn == true ) + 8015734: f1ba 0f00 cmp.w sl, #0 + 8015738: d01f beq.n 801577a <RadioSetTxConfig+0xd6> + SubgRf.PacketParams.Params.Gfsk.CrcLength = RADIO_CRC_2_BYTES_CCIT; + 801573a: 22f2 movs r2, #242 ; 0xf2 + 801573c: 75e2 strb r2, [r4, #23] + SubgRf.PacketParams.Params.Gfsk.DcFree = RADIO_DC_FREEWHITENING; + 801573e: 4c40 ldr r4, [pc, #256] ; (8015840 <RadioSetTxConfig+0x19c>) + 8015740: 2301 movs r3, #1 + 8015742: 7623 strb r3, [r4, #24] + RadioStandby( ); + 8015744: f7ff f95a bl 80149fc <RadioStandby> + RadioSetModem( MODEM_FSK ); + 8015748: 2000 movs r0, #0 + 801574a: f7ff fc85 bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 801574e: f104 0038 add.w r0, r4, #56 ; 0x38 + 8015752: f000 fe7b bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8015756: f104 000e add.w r0, r4, #14 + 801575a: f000 feff bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SetSyncWord( ( uint8_t[] ){ 0xC1, 0x94, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00 } ); + 801575e: 4a39 ldr r2, [pc, #228] ; (8015844 <RadioSetTxConfig+0x1a0>) + 8015760: 466b mov r3, sp + 8015762: e892 0003 ldmia.w r2, {r0, r1} + 8015766: e883 0003 stmia.w r3, {r0, r1} + 801576a: 4618 mov r0, r3 + 801576c: f000 fade bl 8015d2c <SUBGRF_SetSyncWord> + SUBGRF_SetWhiteningSeed( 0x01FF ); + 8015770: f240 10ff movw r0, #511 ; 0x1ff + 8015774: f000 fab1 bl 8015cda <SUBGRF_SetWhiteningSeed> + break; + 8015778: e7a9 b.n 80156ce <RadioSetTxConfig+0x2a> + SubgRf.PacketParams.Params.Gfsk.CrcLength = RADIO_CRC_OFF; + 801577a: 4b31 ldr r3, [pc, #196] ; (8015840 <RadioSetTxConfig+0x19c>) + 801577c: 2201 movs r2, #1 + 801577e: 75da strb r2, [r3, #23] + 8015780: e7dd b.n 801573e <RadioSetTxConfig+0x9a> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_LORA; + 8015782: 4a2f ldr r2, [pc, #188] ; (8015840 <RadioSetTxConfig+0x19c>) + 8015784: 2301 movs r3, #1 + 8015786: f882 3038 strb.w r3, [r2, #56] ; 0x38 + SubgRf.ModulationParams.Params.LoRa.SpreadingFactor = ( RadioLoRaSpreadingFactors_t ) datarate; + 801578a: 9b0c ldr r3, [sp, #48] ; 0x30 + 801578c: b2db uxtb r3, r3 + 801578e: f882 3050 strb.w r3, [r2, #80] ; 0x50 + SubgRf.ModulationParams.Params.LoRa.Bandwidth = Bandwidths[bandwidth]; + 8015792: 492d ldr r1, [pc, #180] ; (8015848 <RadioSetTxConfig+0x1a4>) + 8015794: 5dc9 ldrb r1, [r1, r7] + 8015796: f882 1051 strb.w r1, [r2, #81] ; 0x51 + SubgRf.ModulationParams.Params.LoRa.CodingRate= ( RadioLoRaCodingRates_t )coderate; + 801579a: f89d 1034 ldrb.w r1, [sp, #52] ; 0x34 + 801579e: f882 1052 strb.w r1, [r2, #82] ; 0x52 + if( ( ( bandwidth == 0 ) && ( ( datarate == 11 ) || ( datarate == 12 ) ) ) || + 80157a2: b91f cbnz r7, 80157ac <RadioSetTxConfig+0x108> + 80157a4: 9a0c ldr r2, [sp, #48] ; 0x30 + 80157a6: 3a0b subs r2, #11 + 80157a8: 2a01 cmp r2, #1 + 80157aa: d92b bls.n 8015804 <RadioSetTxConfig+0x160> + 80157ac: 2f01 cmp r7, #1 + 80157ae: d026 beq.n 80157fe <RadioSetTxConfig+0x15a> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 0x00; + 80157b0: 4a23 ldr r2, [pc, #140] ; (8015840 <RadioSetTxConfig+0x19c>) + 80157b2: 2100 movs r1, #0 + 80157b4: f882 1053 strb.w r1, [r2, #83] ; 0x53 + SubgRf.PacketParams.PacketType = PACKET_TYPE_LORA; + 80157b8: 4a21 ldr r2, [pc, #132] ; (8015840 <RadioSetTxConfig+0x19c>) + 80157ba: 2101 movs r1, #1 + 80157bc: 7391 strb r1, [r2, #14] + if( ( SubgRf.ModulationParams.Params.LoRa.SpreadingFactor == LORA_SF5 ) || + 80157be: 3b05 subs r3, #5 + 80157c0: b2db uxtb r3, r3 + 80157c2: 428b cmp r3, r1 + 80157c4: d923 bls.n 801580e <RadioSetTxConfig+0x16a> + SubgRf.PacketParams.Params.LoRa.PreambleLength = preambleLen; + 80157c6: 4b1e ldr r3, [pc, #120] ; (8015840 <RadioSetTxConfig+0x19c>) + 80157c8: 839e strh r6, [r3, #28] + SubgRf.PacketParams.Params.LoRa.HeaderType = ( RadioLoRaPacketLengthsMode_t )fixLen; + 80157ca: 4c1d ldr r4, [pc, #116] ; (8015840 <RadioSetTxConfig+0x19c>) + 80157cc: f884 801e strb.w r8, [r4, #30] + SubgRf.PacketParams.Params.LoRa.PayloadLength = MaxPayloadLength; + 80157d0: 4b1e ldr r3, [pc, #120] ; (801584c <RadioSetTxConfig+0x1a8>) + 80157d2: 781b ldrb r3, [r3, #0] + 80157d4: 77e3 strb r3, [r4, #31] + SubgRf.PacketParams.Params.LoRa.CrcMode = ( RadioLoRaCrcModes_t )crcOn; + 80157d6: f884 a020 strb.w sl, [r4, #32] + SubgRf.PacketParams.Params.LoRa.InvertIQ = ( RadioLoRaIQModes_t )iqInverted; + 80157da: f89d 304c ldrb.w r3, [sp, #76] ; 0x4c + 80157de: f884 3021 strb.w r3, [r4, #33] ; 0x21 + RadioStandby( ); + 80157e2: f7ff f90b bl 80149fc <RadioStandby> + RadioSetModem( MODEM_LORA ); + 80157e6: 2001 movs r0, #1 + 80157e8: f7ff fc36 bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 80157ec: f104 0038 add.w r0, r4, #56 ; 0x38 + 80157f0: f000 fe2c bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 80157f4: f104 000e add.w r0, r4, #14 + 80157f8: f000 feb0 bl 801655c <SUBGRF_SetPacketParams> + break; + 80157fc: e767 b.n 80156ce <RadioSetTxConfig+0x2a> + ( ( bandwidth == 1 ) && ( datarate == 12 ) ) ) + 80157fe: 9a0c ldr r2, [sp, #48] ; 0x30 + 8015800: 2a0c cmp r2, #12 + 8015802: d1d5 bne.n 80157b0 <RadioSetTxConfig+0x10c> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 0x01; + 8015804: 4a0e ldr r2, [pc, #56] ; (8015840 <RadioSetTxConfig+0x19c>) + 8015806: 2101 movs r1, #1 + 8015808: f882 1053 strb.w r1, [r2, #83] ; 0x53 + 801580c: e7d4 b.n 80157b8 <RadioSetTxConfig+0x114> + if( preambleLen < 12 ) + 801580e: 2e0b cmp r6, #11 + 8015810: d803 bhi.n 801581a <RadioSetTxConfig+0x176> + SubgRf.PacketParams.Params.LoRa.PreambleLength = 12; + 8015812: 4613 mov r3, r2 + 8015814: 220c movs r2, #12 + 8015816: 839a strh r2, [r3, #28] + 8015818: e7d7 b.n 80157ca <RadioSetTxConfig+0x126> + SubgRf.PacketParams.Params.LoRa.PreambleLength = preambleLen; + 801581a: 4b09 ldr r3, [pc, #36] ; (8015840 <RadioSetTxConfig+0x19c>) + 801581c: 839e strh r6, [r3, #28] + 801581e: e7d4 b.n 80157ca <RadioSetTxConfig+0x126> + RadioSetModem(MODEM_SIGFOX_TX); + 8015820: 2004 movs r0, #4 + 8015822: f7ff fc19 bl 8015058 <RadioSetModem> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_BPSK; + 8015826: 4806 ldr r0, [pc, #24] ; (8015840 <RadioSetTxConfig+0x19c>) + 8015828: 2302 movs r3, #2 + 801582a: f880 3038 strb.w r3, [r0, #56] ; 0x38 + SubgRf.ModulationParams.Params.Bpsk.BitRate = datarate; + 801582e: 9b0c ldr r3, [sp, #48] ; 0x30 + 8015830: 6483 str r3, [r0, #72] ; 0x48 + SubgRf.ModulationParams.Params.Bpsk.ModulationShaping = MOD_SHAPING_DBPSK; + 8015832: 2316 movs r3, #22 + 8015834: f880 304c strb.w r3, [r0, #76] ; 0x4c + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 8015838: 3038 adds r0, #56 ; 0x38 + 801583a: f000 fe07 bl 801644c <SUBGRF_SetModulationParams> + break; + 801583e: e746 b.n 80156ce <RadioSetTxConfig+0x2a> + 8015840: 20002750 .word 0x20002750 + 8015844: 080178a4 .word 0x080178a4 + 8015848: 08018cb0 .word 0x08018cb0 + 801584c: 200008c0 .word 0x200008c0 + +08015850 <RadioSetRxConfig>: +{ + 8015850: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8015854: b087 sub sp, #28 + 8015856: 4604 mov r4, r0 + 8015858: 460e mov r6, r1 + 801585a: 4615 mov r5, r2 + 801585c: 9301 str r3, [sp, #4] + 801585e: f8bd 9044 ldrh.w r9, [sp, #68] ; 0x44 + 8015862: f8bd a048 ldrh.w sl, [sp, #72] ; 0x48 + 8015866: f89d 704c ldrb.w r7, [sp, #76] ; 0x4c + 801586a: f89d b054 ldrb.w fp, [sp, #84] ; 0x54 + 801586e: f89d 8064 ldrb.w r8, [sp, #100] ; 0x64 + SubgRf.RxContinuous = rxContinuous; + 8015872: 4bb0 ldr r3, [pc, #704] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015874: f883 8001 strb.w r8, [r3, #1] + RFW_DeInit(); + 8015878: f001 f877 bl 801696a <RFW_DeInit> + if( rxContinuous == true ) + 801587c: f1b8 0f00 cmp.w r8, #0 + 8015880: d001 beq.n 8015886 <RadioSetRxConfig+0x36> + symbTimeout = 0; + 8015882: f04f 0a00 mov.w sl, #0 + if( fixLen == true ) + 8015886: b16f cbz r7, 80158a4 <RadioSetRxConfig+0x54> + MaxPayloadLength = payloadLen; + 8015888: f89d 2050 ldrb.w r2, [sp, #80] ; 0x50 + 801588c: 4baa ldr r3, [pc, #680] ; (8015b38 <RadioSetRxConfig+0x2e8>) + 801588e: 701a strb r2, [r3, #0] + switch( modem ) + 8015890: 2c01 cmp r4, #1 + 8015892: f000 80d2 beq.w 8015a3a <RadioSetRxConfig+0x1ea> + 8015896: 2c05 cmp r4, #5 + 8015898: d008 beq.n 80158ac <RadioSetRxConfig+0x5c> + 801589a: 2c00 cmp r4, #0 + 801589c: d07c beq.n 8015998 <RadioSetRxConfig+0x148> +} + 801589e: b007 add sp, #28 + 80158a0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + MaxPayloadLength = 0xFF; + 80158a4: 4ba4 ldr r3, [pc, #656] ; (8015b38 <RadioSetRxConfig+0x2e8>) + 80158a6: 22ff movs r2, #255 ; 0xff + 80158a8: 701a strb r2, [r3, #0] + 80158aa: e7f1 b.n 8015890 <RadioSetRxConfig+0x40> + SUBGRF_SetStopRxTimerOnPreambleDetect( true ); + 80158ac: 2001 movs r0, #1 + 80158ae: f000 fbbf bl 8016030 <SUBGRF_SetStopRxTimerOnPreambleDetect> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_GFSK; + 80158b2: 4ca0 ldr r4, [pc, #640] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 80158b4: 2700 movs r7, #0 + 80158b6: f884 7038 strb.w r7, [r4, #56] ; 0x38 + SubgRf.ModulationParams.Params.Gfsk.BitRate = datarate; + 80158ba: 63e5 str r5, [r4, #60] ; 0x3c + SubgRf.ModulationParams.Params.Gfsk.ModulationShaping = MOD_SHAPING_G_BT_05; + 80158bc: 2309 movs r3, #9 + 80158be: f884 3044 strb.w r3, [r4, #68] ; 0x44 + SubgRf.ModulationParams.Params.Gfsk.Fdev = 800; + 80158c2: f44f 7348 mov.w r3, #800 ; 0x320 + 80158c6: 6423 str r3, [r4, #64] ; 0x40 + SubgRf.ModulationParams.Params.Gfsk.Bandwidth = SUBGRF_GetFskBandwidthRegValue( bandwidth ); + 80158c8: 4630 mov r0, r6 + 80158ca: f000 ffe9 bl 80168a0 <SUBGRF_GetFskBandwidthRegValue> + 80158ce: f884 0045 strb.w r0, [r4, #69] ; 0x45 + SubgRf.PacketParams.PacketType = PACKET_TYPE_GFSK; + 80158d2: 73a7 strb r7, [r4, #14] + SubgRf.PacketParams.Params.Gfsk.PreambleLength = ( preambleLen << 3 ); // convert byte into bit + 80158d4: ea4f 09c9 mov.w r9, r9, lsl #3 + 80158d8: f8a4 9010 strh.w r9, [r4, #16] + SubgRf.PacketParams.Params.Gfsk.PreambleMinDetect = RADIO_PREAMBLE_DETECTOR_OFF; + 80158dc: 74a7 strb r7, [r4, #18] + SubgRf.PacketParams.Params.Gfsk.SyncWordLength = 2 << 3; // convert byte into bit + 80158de: 2310 movs r3, #16 + 80158e0: 74e3 strb r3, [r4, #19] + SubgRf.PacketParams.Params.Gfsk.AddrComp = RADIO_ADDRESSCOMP_FILT_OFF; + 80158e2: 7527 strb r7, [r4, #20] + SubgRf.PacketParams.Params.Gfsk.HeaderType = RADIO_PACKET_FIXED_LENGTH; + 80158e4: 7567 strb r7, [r4, #21] + SubgRf.PacketParams.Params.Gfsk.PayloadLength = MaxPayloadLength; + 80158e6: 4b94 ldr r3, [pc, #592] ; (8015b38 <RadioSetRxConfig+0x2e8>) + 80158e8: 781b ldrb r3, [r3, #0] + 80158ea: 75a3 strb r3, [r4, #22] + SubgRf.PacketParams.Params.Gfsk.CrcLength = RADIO_CRC_OFF; + 80158ec: 2301 movs r3, #1 + 80158ee: 75e3 strb r3, [r4, #23] + SubgRf.PacketParams.Params.Gfsk.DcFree = RADIO_DC_FREE_OFF; + 80158f0: 7627 strb r7, [r4, #24] + RadioSetModem( MODEM_SIGFOX_RX ); + 80158f2: 2005 movs r0, #5 + 80158f4: f7ff fbb0 bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 80158f8: f104 0038 add.w r0, r4, #56 ; 0x38 + 80158fc: f000 fda6 bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8015900: f104 000e add.w r0, r4, #14 + 8015904: f000 fe2a bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SetSyncWord( ( uint8_t[] ){0xB2, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } ); + 8015908: ab02 add r3, sp, #8 + 801590a: 4a8c ldr r2, [pc, #560] ; (8015b3c <RadioSetRxConfig+0x2ec>) + 801590c: e892 0003 ldmia.w r2, {r0, r1} + 8015910: e883 0003 stmia.w r3, {r0, r1} + 8015914: 4618 mov r0, r3 + 8015916: f000 fa09 bl 8015d2c <SUBGRF_SetSyncWord> + SUBGRF_SetWhiteningSeed( 0x01FF ); + 801591a: f240 10ff movw r0, #511 ; 0x1ff + 801591e: f000 f9dc bl 8015cda <SUBGRF_SetWhiteningSeed> + modReg= RadioRead(SUBGHZ_AGCGFORSTCFGR); + 8015922: f640 00b8 movw r0, #2232 ; 0x8b8 + 8015926: f7fe ffe9 bl 80148fc <RadioRead> + RadioWrite(SUBGHZ_AGCGFORSTCFGR, modReg); + 801592a: f000 01ef and.w r1, r0, #239 ; 0xef + 801592e: f640 00b8 movw r0, #2232 ; 0x8b8 + 8015932: f7fe ffe7 bl 8014904 <RadioWrite> + RadioWrite(SUBGHZ_AGCGFORSTPOWTHR, 0x4 ); + 8015936: 2104 movs r1, #4 + 8015938: f640 00b9 movw r0, #2233 ; 0x8b9 + 801593c: f7fe ffe2 bl 8014904 <RadioWrite> + modReg= RadioRead(SUBGHZ_AGCRSSICTL0R); + 8015940: f640 009b movw r0, #2203 ; 0x89b + 8015944: f7fe ffda bl 80148fc <RadioRead> + modReg&=( RADIO_BIT_MASK(2) & RADIO_BIT_MASK(3) & RADIO_BIT_MASK(4) ); + 8015948: f000 01e3 and.w r1, r0, #227 ; 0xe3 + RadioWrite(SUBGHZ_AGCRSSICTL0R, (modReg| (0x1<<3) ) ); + 801594c: f041 0108 orr.w r1, r1, #8 + 8015950: f640 009b movw r0, #2203 ; 0x89b + 8015954: f7fe ffd6 bl 8014904 <RadioWrite> + modReg= RadioRead(SUBGHZ_GAFCR); + 8015958: f240 60d1 movw r0, #1745 ; 0x6d1 + 801595c: f7fe ffce bl 80148fc <RadioRead> + modReg&=( RADIO_BIT_MASK(3) & RADIO_BIT_MASK(4) ); + 8015960: f000 01e7 and.w r1, r0, #231 ; 0xe7 + RadioWrite(SUBGHZ_GAFCR, (modReg| (0x3<<3) )); + 8015964: f041 0118 orr.w r1, r1, #24 + 8015968: f240 60d1 movw r0, #1745 ; 0x6d1 + 801596c: f7fe ffca bl 8014904 <RadioWrite> + modReg= RadioRead(SUBGHZ_GBSYNCR); + 8015970: f240 60ac movw r0, #1708 ; 0x6ac + 8015974: f7fe ffc2 bl 80148fc <RadioRead> + modReg&=( RADIO_BIT_MASK(4) & RADIO_BIT_MASK(5) & RADIO_BIT_MASK(6) ); + 8015978: f000 018f and.w r1, r0, #143 ; 0x8f + RadioWrite(SUBGHZ_GBSYNCR, (modReg| (0x5<<4) )); + 801597c: f041 0150 orr.w r1, r1, #80 ; 0x50 + 8015980: f240 60ac movw r0, #1708 ; 0x6ac + 8015984: f7fe ffbe bl 8014904 <RadioWrite> + SubgRf.RxTimeout = ( uint32_t )(( symbTimeout * 8 * 1000 ) /datarate); + 8015988: f44f 53fa mov.w r3, #8000 ; 0x1f40 + 801598c: fb03 f30a mul.w r3, r3, sl + 8015990: fbb3 f3f5 udiv r3, r3, r5 + 8015994: 60a3 str r3, [r4, #8] + break; + 8015996: e782 b.n 801589e <RadioSetRxConfig+0x4e> + SUBGRF_SetStopRxTimerOnPreambleDetect( false ); + 8015998: 2000 movs r0, #0 + 801599a: f000 fb49 bl 8016030 <SUBGRF_SetStopRxTimerOnPreambleDetect> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_GFSK; + 801599e: 4c65 ldr r4, [pc, #404] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 80159a0: f04f 0800 mov.w r8, #0 + 80159a4: f884 8038 strb.w r8, [r4, #56] ; 0x38 + SubgRf.ModulationParams.Params.Gfsk.BitRate = datarate; + 80159a8: 63e5 str r5, [r4, #60] ; 0x3c + SubgRf.ModulationParams.Params.Gfsk.ModulationShaping = MOD_SHAPING_G_BT_1; + 80159aa: 230b movs r3, #11 + 80159ac: f884 3044 strb.w r3, [r4, #68] ; 0x44 + SubgRf.ModulationParams.Params.Gfsk.Bandwidth = SUBGRF_GetFskBandwidthRegValue( bandwidth ); + 80159b0: 4630 mov r0, r6 + 80159b2: f000 ff75 bl 80168a0 <SUBGRF_GetFskBandwidthRegValue> + 80159b6: f884 0045 strb.w r0, [r4, #69] ; 0x45 + SubgRf.PacketParams.PacketType = PACKET_TYPE_GFSK; + 80159ba: f884 800e strb.w r8, [r4, #14] + SubgRf.PacketParams.Params.Gfsk.PreambleLength = ( preambleLen << 3 ); // convert byte into bit + 80159be: ea4f 09c9 mov.w r9, r9, lsl #3 + 80159c2: f8a4 9010 strh.w r9, [r4, #16] + SubgRf.PacketParams.Params.Gfsk.PreambleMinDetect = RADIO_PREAMBLE_DETECTOR_08_BITS; + 80159c6: 2304 movs r3, #4 + 80159c8: 74a3 strb r3, [r4, #18] + SubgRf.PacketParams.Params.Gfsk.SyncWordLength = 3 << 3; // convert byte into bit + 80159ca: 2318 movs r3, #24 + 80159cc: 74e3 strb r3, [r4, #19] + SubgRf.PacketParams.Params.Gfsk.AddrComp = RADIO_ADDRESSCOMP_FILT_OFF; + 80159ce: f884 8014 strb.w r8, [r4, #20] + SubgRf.PacketParams.Params.Gfsk.HeaderType = ( fixLen == true ) ? RADIO_PACKET_FIXED_LENGTH : RADIO_PACKET_VARIABLE_LENGTH; + 80159d2: f087 0701 eor.w r7, r7, #1 + 80159d6: 7567 strb r7, [r4, #21] + SubgRf.PacketParams.Params.Gfsk.PayloadLength = MaxPayloadLength; + 80159d8: 4b57 ldr r3, [pc, #348] ; (8015b38 <RadioSetRxConfig+0x2e8>) + 80159da: 781b ldrb r3, [r3, #0] + 80159dc: 75a3 strb r3, [r4, #22] + if( crcOn == true ) + 80159de: f1bb 0f00 cmp.w fp, #0 + 80159e2: d026 beq.n 8015a32 <RadioSetRxConfig+0x1e2> + SubgRf.PacketParams.Params.Gfsk.CrcLength = RADIO_CRC_2_BYTES_CCIT; + 80159e4: 22f2 movs r2, #242 ; 0xf2 + 80159e6: 75e2 strb r2, [r4, #23] + SubgRf.PacketParams.Params.Gfsk.DcFree = RADIO_DC_FREEWHITENING; + 80159e8: 4c52 ldr r4, [pc, #328] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 80159ea: 2301 movs r3, #1 + 80159ec: 7623 strb r3, [r4, #24] + RadioStandby( ); + 80159ee: f7ff f805 bl 80149fc <RadioStandby> + RadioSetModem( MODEM_FSK ); + 80159f2: 2000 movs r0, #0 + 80159f4: f7ff fb30 bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 80159f8: f104 0038 add.w r0, r4, #56 ; 0x38 + 80159fc: f000 fd26 bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8015a00: f104 000e add.w r0, r4, #14 + 8015a04: f000 fdaa bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SetSyncWord( ( uint8_t[] ){ 0xC1, 0x94, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00 } ); + 8015a08: 4a4d ldr r2, [pc, #308] ; (8015b40 <RadioSetRxConfig+0x2f0>) + 8015a0a: ab04 add r3, sp, #16 + 8015a0c: e892 0003 ldmia.w r2, {r0, r1} + 8015a10: e883 0003 stmia.w r3, {r0, r1} + 8015a14: 4618 mov r0, r3 + 8015a16: f000 f989 bl 8015d2c <SUBGRF_SetSyncWord> + SUBGRF_SetWhiteningSeed( 0x01FF ); + 8015a1a: f240 10ff movw r0, #511 ; 0x1ff + 8015a1e: f000 f95c bl 8015cda <SUBGRF_SetWhiteningSeed> + SubgRf.RxTimeout = ( uint32_t )(( symbTimeout * 8 * 1000 ) /datarate); + 8015a22: f44f 53fa mov.w r3, #8000 ; 0x1f40 + 8015a26: fb03 f30a mul.w r3, r3, sl + 8015a2a: fbb3 f3f5 udiv r3, r3, r5 + 8015a2e: 60a3 str r3, [r4, #8] + break; + 8015a30: e735 b.n 801589e <RadioSetRxConfig+0x4e> + SubgRf.PacketParams.Params.Gfsk.CrcLength = RADIO_CRC_OFF; + 8015a32: 4b40 ldr r3, [pc, #256] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015a34: 2201 movs r2, #1 + 8015a36: 75da strb r2, [r3, #23] + 8015a38: e7d6 b.n 80159e8 <RadioSetRxConfig+0x198> + SUBGRF_SetStopRxTimerOnPreambleDetect( false ); + 8015a3a: 2000 movs r0, #0 + 8015a3c: f000 faf8 bl 8016030 <SUBGRF_SetStopRxTimerOnPreambleDetect> + SubgRf.ModulationParams.PacketType = PACKET_TYPE_LORA; + 8015a40: 4a3c ldr r2, [pc, #240] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015a42: 2301 movs r3, #1 + 8015a44: f882 3038 strb.w r3, [r2, #56] ; 0x38 + SubgRf.ModulationParams.Params.LoRa.SpreadingFactor = ( RadioLoRaSpreadingFactors_t )datarate; + 8015a48: b2eb uxtb r3, r5 + 8015a4a: f882 3050 strb.w r3, [r2, #80] ; 0x50 + SubgRf.ModulationParams.Params.LoRa.Bandwidth = Bandwidths[bandwidth]; + 8015a4e: 493d ldr r1, [pc, #244] ; (8015b44 <RadioSetRxConfig+0x2f4>) + 8015a50: 5d89 ldrb r1, [r1, r6] + 8015a52: f882 1051 strb.w r1, [r2, #81] ; 0x51 + SubgRf.ModulationParams.Params.LoRa.CodingRate = ( RadioLoRaCodingRates_t )coderate; + 8015a56: 9901 ldr r1, [sp, #4] + 8015a58: f882 1052 strb.w r1, [r2, #82] ; 0x52 + if( ( ( bandwidth == 0 ) && ( ( datarate == 11 ) || ( datarate == 12 ) ) ) || + 8015a5c: b91e cbnz r6, 8015a66 <RadioSetRxConfig+0x216> + 8015a5e: f1a5 020b sub.w r2, r5, #11 + 8015a62: 2a01 cmp r2, #1 + 8015a64: d94b bls.n 8015afe <RadioSetRxConfig+0x2ae> + 8015a66: 2e01 cmp r6, #1 + 8015a68: d047 beq.n 8015afa <RadioSetRxConfig+0x2aa> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 0x00; + 8015a6a: 4a32 ldr r2, [pc, #200] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015a6c: 2100 movs r1, #0 + 8015a6e: f882 1053 strb.w r1, [r2, #83] ; 0x53 + SubgRf.PacketParams.PacketType = PACKET_TYPE_LORA; + 8015a72: 4a30 ldr r2, [pc, #192] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015a74: 2101 movs r1, #1 + 8015a76: 7391 strb r1, [r2, #14] + if( ( SubgRf.ModulationParams.Params.LoRa.SpreadingFactor == LORA_SF5 ) || + 8015a78: 3b05 subs r3, #5 + 8015a7a: b2db uxtb r3, r3 + 8015a7c: 428b cmp r3, r1 + 8015a7e: d943 bls.n 8015b08 <RadioSetRxConfig+0x2b8> + SubgRf.PacketParams.Params.LoRa.PreambleLength = preambleLen; + 8015a80: 4b2c ldr r3, [pc, #176] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015a82: f8a3 901c strh.w r9, [r3, #28] + SubgRf.PacketParams.Params.LoRa.HeaderType = ( RadioLoRaPacketLengthsMode_t )fixLen; + 8015a86: 4c2b ldr r4, [pc, #172] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015a88: 77a7 strb r7, [r4, #30] + SubgRf.PacketParams.Params.LoRa.PayloadLength = MaxPayloadLength; + 8015a8a: 4b2b ldr r3, [pc, #172] ; (8015b38 <RadioSetRxConfig+0x2e8>) + 8015a8c: 781b ldrb r3, [r3, #0] + 8015a8e: 77e3 strb r3, [r4, #31] + SubgRf.PacketParams.Params.LoRa.CrcMode = ( RadioLoRaCrcModes_t )crcOn; + 8015a90: f884 b020 strb.w fp, [r4, #32] + SubgRf.PacketParams.Params.LoRa.InvertIQ = ( RadioLoRaIQModes_t )iqInverted; + 8015a94: f89d 3060 ldrb.w r3, [sp, #96] ; 0x60 + 8015a98: f884 3021 strb.w r3, [r4, #33] ; 0x21 + RadioStandby( ); + 8015a9c: f7fe ffae bl 80149fc <RadioStandby> + RadioSetModem( MODEM_LORA ); + 8015aa0: 2001 movs r0, #1 + 8015aa2: f7ff fad9 bl 8015058 <RadioSetModem> + SUBGRF_SetModulationParams( &SubgRf.ModulationParams ); + 8015aa6: f104 0038 add.w r0, r4, #56 ; 0x38 + 8015aaa: f000 fccf bl 801644c <SUBGRF_SetModulationParams> + SUBGRF_SetPacketParams( &SubgRf.PacketParams ); + 8015aae: f104 000e add.w r0, r4, #14 + 8015ab2: f000 fd53 bl 801655c <SUBGRF_SetPacketParams> + SUBGRF_SetLoRaSymbNumTimeout( symbTimeout ); + 8015ab6: fa5f f08a uxtb.w r0, sl + 8015aba: f000 fac6 bl 801604a <SUBGRF_SetLoRaSymbNumTimeout> + SUBGRF_WriteRegister(SUBGHZ_AGCCFG,SUBGRF_ReadRegister(SUBGHZ_AGCCFG)&0x1); + 8015abe: f640 00a3 movw r0, #2211 ; 0x8a3 + 8015ac2: f000 f8e7 bl 8015c94 <SUBGRF_ReadRegister> + 8015ac6: f000 0101 and.w r1, r0, #1 + 8015aca: f640 00a3 movw r0, #2211 ; 0x8a3 + 8015ace: f000 f8d1 bl 8015c74 <SUBGRF_WriteRegister> + if( SubgRf.PacketParams.Params.LoRa.InvertIQ == LORA_IQ_INVERTED ) + 8015ad2: f894 3021 ldrb.w r3, [r4, #33] ; 0x21 + 8015ad6: 2b01 cmp r3, #1 + 8015ad8: d021 beq.n 8015b1e <RadioSetRxConfig+0x2ce> + SUBGRF_WriteRegister( SUBGHZ_LIQPOLR, SUBGRF_ReadRegister( SUBGHZ_LIQPOLR ) | ( 1 << 2 ) ); + 8015ada: f240 7036 movw r0, #1846 ; 0x736 + 8015ade: f000 f8d9 bl 8015c94 <SUBGRF_ReadRegister> + 8015ae2: f040 0104 orr.w r1, r0, #4 + 8015ae6: b2c9 uxtb r1, r1 + 8015ae8: f240 7036 movw r0, #1846 ; 0x736 + 8015aec: f000 f8c2 bl 8015c74 <SUBGRF_WriteRegister> + SubgRf.RxTimeout = 0xFFFF; + 8015af0: 4b10 ldr r3, [pc, #64] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015af2: f64f 72ff movw r2, #65535 ; 0xffff + 8015af6: 609a str r2, [r3, #8] +} + 8015af8: e6d1 b.n 801589e <RadioSetRxConfig+0x4e> + ( ( bandwidth == 1 ) && ( datarate == 12 ) ) ) + 8015afa: 2d0c cmp r5, #12 + 8015afc: d1b5 bne.n 8015a6a <RadioSetRxConfig+0x21a> + SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 0x01; + 8015afe: 4a0d ldr r2, [pc, #52] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015b00: 2101 movs r1, #1 + 8015b02: f882 1053 strb.w r1, [r2, #83] ; 0x53 + 8015b06: e7b4 b.n 8015a72 <RadioSetRxConfig+0x222> + if( preambleLen < 12 ) + 8015b08: f1b9 0f0b cmp.w r9, #11 + 8015b0c: d803 bhi.n 8015b16 <RadioSetRxConfig+0x2c6> + SubgRf.PacketParams.Params.LoRa.PreambleLength = 12; + 8015b0e: 4613 mov r3, r2 + 8015b10: 220c movs r2, #12 + 8015b12: 839a strh r2, [r3, #28] + 8015b14: e7b7 b.n 8015a86 <RadioSetRxConfig+0x236> + SubgRf.PacketParams.Params.LoRa.PreambleLength = preambleLen; + 8015b16: 4b07 ldr r3, [pc, #28] ; (8015b34 <RadioSetRxConfig+0x2e4>) + 8015b18: f8a3 901c strh.w r9, [r3, #28] + 8015b1c: e7b3 b.n 8015a86 <RadioSetRxConfig+0x236> + SUBGRF_WriteRegister( SUBGHZ_LIQPOLR, SUBGRF_ReadRegister( SUBGHZ_LIQPOLR ) & ~( 1 << 2 ) ); + 8015b1e: f240 7036 movw r0, #1846 ; 0x736 + 8015b22: f000 f8b7 bl 8015c94 <SUBGRF_ReadRegister> + 8015b26: f000 01fb and.w r1, r0, #251 ; 0xfb + 8015b2a: f240 7036 movw r0, #1846 ; 0x736 + 8015b2e: f000 f8a1 bl 8015c74 <SUBGRF_WriteRegister> + 8015b32: e7dd b.n 8015af0 <RadioSetRxConfig+0x2a0> + 8015b34: 20002750 .word 0x20002750 + 8015b38: 200008c0 .word 0x200008c0 + 8015b3c: 080178ac .word 0x080178ac + 8015b40: 080178a4 .word 0x080178a4 + 8015b44: 08018cb0 .word 0x08018cb0 + +08015b48 <RadioIsChannelFree>: +{ + 8015b48: b5f0 push {r4, r5, r6, r7, lr} + 8015b4a: b08b sub sp, #44 ; 0x2c + 8015b4c: 4604 mov r4, r0 + 8015b4e: 460f mov r7, r1 + 8015b50: 4616 mov r6, r2 + 8015b52: 461d mov r5, r3 + RadioStandby( ); + 8015b54: f7fe ff52 bl 80149fc <RadioStandby> + RadioSetModem( MODEM_FSK ); + 8015b58: 2000 movs r0, #0 + 8015b5a: f7ff fa7d bl 8015058 <RadioSetModem> + RadioSetChannel( freq ); + 8015b5e: 4620 mov r0, r4 + 8015b60: f7ff f944 bl 8014dec <RadioSetChannel> + RadioSetRxConfig( MODEM_FSK, rxBandwidth, 600, 0, rxBandwidth, 3, 0, false, + 8015b64: 2301 movs r3, #1 + 8015b66: 9309 str r3, [sp, #36] ; 0x24 + 8015b68: 2400 movs r4, #0 + 8015b6a: 9408 str r4, [sp, #32] + 8015b6c: 9407 str r4, [sp, #28] + 8015b6e: 9406 str r4, [sp, #24] + 8015b70: 9405 str r4, [sp, #20] + 8015b72: 9404 str r4, [sp, #16] + 8015b74: 9403 str r4, [sp, #12] + 8015b76: 9402 str r4, [sp, #8] + 8015b78: 2303 movs r3, #3 + 8015b7a: 9301 str r3, [sp, #4] + 8015b7c: 9700 str r7, [sp, #0] + 8015b7e: 4623 mov r3, r4 + 8015b80: f44f 7216 mov.w r2, #600 ; 0x258 + 8015b84: 4639 mov r1, r7 + 8015b86: 4620 mov r0, r4 + 8015b88: f7ff fe62 bl 8015850 <RadioSetRxConfig> + RadioRx( 0 ); + 8015b8c: 4620 mov r0, r4 + 8015b8e: f7ff f945 bl 8014e1c <RadioRx> + RADIO_DELAY_MS( RadioGetWakeupTime( ) ); + 8015b92: f7ff f8f7 bl 8014d84 <RadioGetWakeupTime> + 8015b96: f7ed f88b bl 8002cb0 <HAL_Delay> + carrierSenseTime = TimerGetCurrentTime( ); + 8015b9a: f001 fadf bl 801715c <UTIL_TIMER_GetCurrentTime> + 8015b9e: 4604 mov r4, r0 + while( TimerGetElapsedTime( carrierSenseTime ) < maxCarrierSenseTime ) + 8015ba0: 4620 mov r0, r4 + 8015ba2: f001 fae5 bl 8017170 <UTIL_TIMER_GetElapsedTime> + 8015ba6: 42a8 cmp r0, r5 + 8015ba8: d206 bcs.n 8015bb8 <RadioIsChannelFree+0x70> + rssi = RadioRssi( MODEM_FSK ); + 8015baa: 2000 movs r0, #0 + 8015bac: f7ff f8f7 bl 8014d9e <RadioRssi> + if( rssi > rssiThresh ) + 8015bb0: 42b0 cmp r0, r6 + 8015bb2: ddf5 ble.n 8015ba0 <RadioIsChannelFree+0x58> + status = false; + 8015bb4: 2400 movs r4, #0 + 8015bb6: e000 b.n 8015bba <RadioIsChannelFree+0x72> + bool status = true; + 8015bb8: 2401 movs r4, #1 + RadioStandby( ); + 8015bba: f7fe ff1f bl 80149fc <RadioStandby> +} + 8015bbe: 4620 mov r0, r4 + 8015bc0: b00b add sp, #44 ; 0x2c + 8015bc2: bdf0 pop {r4, r5, r6, r7, pc} + +08015bc4 <RadioInit>: +{ + 8015bc4: b570 push {r4, r5, r6, lr} + 8015bc6: b082 sub sp, #8 + RadioEvents = events; + 8015bc8: 4b1d ldr r3, [pc, #116] ; (8015c40 <RadioInit+0x7c>) + 8015bca: 6018 str r0, [r3, #0] + SubgRf.RxContinuous = false; + 8015bcc: 4d1d ldr r5, [pc, #116] ; (8015c44 <RadioInit+0x80>) + 8015bce: 2400 movs r4, #0 + 8015bd0: 706c strb r4, [r5, #1] + SubgRf.TxTimeout = 0; + 8015bd2: 606c str r4, [r5, #4] + SubgRf.RxTimeout = 0; + 8015bd4: 60ac str r4, [r5, #8] + SubgRf.RxDcPreambleDetectTimeout = 0; + 8015bd6: 65ac str r4, [r5, #88] ; 0x58 + SUBGRF_Init( RadioOnDioIrq ); + 8015bd8: 481b ldr r0, [pc, #108] ; (8015c48 <RadioInit+0x84>) + 8015bda: f000 fb27 bl 801622c <SUBGRF_Init> + SubgRf.PublicNetwork.Current = false; + 8015bde: 736c strb r4, [r5, #13] + SubgRf.PublicNetwork.Previous = false; + 8015be0: 732c strb r4, [r5, #12] + SUBGRF_SetRegulatorMode( ); + 8015be2: f000 fa53 bl 801608c <SUBGRF_SetRegulatorMode> + SUBGRF_SetBufferBaseAddress( 0x00, 0x00 ); + 8015be6: 4621 mov r1, r4 + 8015be8: 4620 mov r0, r4 + 8015bea: f000 fd29 bl 8016640 <SUBGRF_SetBufferBaseAddress> + SUBGRF_SetTxParams( RFO_LP, 0, RADIO_RAMP_200_US ); + 8015bee: 2204 movs r2, #4 + 8015bf0: 4621 mov r1, r4 + 8015bf2: 2001 movs r0, #1 + 8015bf4: f000 fb9c bl 8016330 <SUBGRF_SetTxParams> + SUBGRF_SetDioIrqParams( IRQ_RADIO_ALL, IRQ_RADIO_ALL, IRQ_RADIO_NONE, IRQ_RADIO_NONE ); + 8015bf8: 4623 mov r3, r4 + 8015bfa: 4622 mov r2, r4 + 8015bfc: f64f 71ff movw r1, #65535 ; 0xffff + 8015c00: 4608 mov r0, r1 + 8015c02: f000 fada bl 80161ba <SUBGRF_SetDioIrqParams> + RadioSleep(); + 8015c06: f7ff f941 bl 8014e8c <RadioSleep> + TimerInit( &TxTimeoutTimer, RadioOnTxTimeoutIrq ); + 8015c0a: 4e10 ldr r6, [pc, #64] ; (8015c4c <RadioInit+0x88>) + 8015c0c: 9400 str r4, [sp, #0] + 8015c0e: 4b10 ldr r3, [pc, #64] ; (8015c50 <RadioInit+0x8c>) + 8015c10: 4622 mov r2, r4 + 8015c12: f04f 31ff mov.w r1, #4294967295 + 8015c16: 4630 mov r0, r6 + 8015c18: f001 fa82 bl 8017120 <UTIL_TIMER_Create> + TimerInit( &RxTimeoutTimer, RadioOnRxTimeoutIrq ); + 8015c1c: 4d0d ldr r5, [pc, #52] ; (8015c54 <RadioInit+0x90>) + 8015c1e: 9400 str r4, [sp, #0] + 8015c20: 4b0d ldr r3, [pc, #52] ; (8015c58 <RadioInit+0x94>) + 8015c22: 4622 mov r2, r4 + 8015c24: f04f 31ff mov.w r1, #4294967295 + 8015c28: 4628 mov r0, r5 + 8015c2a: f001 fa79 bl 8017120 <UTIL_TIMER_Create> + TimerStop( &TxTimeoutTimer ); + 8015c2e: 4630 mov r0, r6 + 8015c30: f001 fad4 bl 80171dc <UTIL_TIMER_Stop> + TimerStop( &RxTimeoutTimer ); + 8015c34: 4628 mov r0, r5 + 8015c36: f001 fad1 bl 80171dc <UTIL_TIMER_Stop> +} + 8015c3a: b002 add sp, #8 + 8015c3c: bd70 pop {r4, r5, r6, pc} + 8015c3e: bf00 nop + 8015c40: 20002734 .word 0x20002734 + 8015c44: 20002750 .word 0x20002750 + 8015c48: 08014d71 .word 0x08014d71 + 8015c4c: 200027ac .word 0x200027ac + 8015c50: 080147e1 .word 0x080147e1 + 8015c54: 20002738 .word 0x20002738 + 8015c58: 08014809 .word 0x08014809 + +08015c5c <SUBGRF_GetOperatingMode>: +} + +RadioOperatingModes_t SUBGRF_GetOperatingMode( void ) +{ + return OperatingMode; +} + 8015c5c: 4b01 ldr r3, [pc, #4] ; (8015c64 <SUBGRF_GetOperatingMode+0x8>) + 8015c5e: 7818 ldrb r0, [r3, #0] + 8015c60: 4770 bx lr + 8015c62: bf00 nop + 8015c64: 200027ca .word 0x200027ca + +08015c68 <SUBGRF_GetPacketType>: +} + +RadioPacketTypes_t SUBGRF_GetPacketType( void ) +{ + return PacketType; +} + 8015c68: 4b01 ldr r3, [pc, #4] ; (8015c70 <SUBGRF_GetPacketType+0x8>) + 8015c6a: 7818 ldrb r0, [r3, #0] + 8015c6c: 4770 bx lr + 8015c6e: bf00 nop + 8015c70: 200027cb .word 0x200027cb + +08015c74 <SUBGRF_WriteRegister>: + buf[1] = ( uint8_t )( ( uint16_t )irq & 0x00FF ); + SUBGRF_WriteCommand( RADIO_CLR_IRQSTATUS, buf, 2 ); +} + +void SUBGRF_WriteRegister( uint16_t addr, uint8_t data ) +{ + 8015c74: b500 push {lr} + 8015c76: b083 sub sp, #12 + 8015c78: f88d 1007 strb.w r1, [sp, #7] + HAL_SUBGHZ_WriteRegisters( &hsubghz, addr, (uint8_t*)&data, 1 ); + 8015c7c: 2301 movs r3, #1 + 8015c7e: f10d 0207 add.w r2, sp, #7 + 8015c82: 4601 mov r1, r0 + 8015c84: 4802 ldr r0, [pc, #8] ; (8015c90 <SUBGRF_WriteRegister+0x1c>) + 8015c86: f7f5 fbf7 bl 800b478 <HAL_SUBGHZ_WriteRegisters> +} + 8015c8a: b003 add sp, #12 + 8015c8c: f85d fb04 ldr.w pc, [sp], #4 + 8015c90: 20000acc .word 0x20000acc + +08015c94 <SUBGRF_ReadRegister>: + +uint8_t SUBGRF_ReadRegister( uint16_t addr ) +{ + 8015c94: b500 push {lr} + 8015c96: b083 sub sp, #12 + 8015c98: 4601 mov r1, r0 + uint8_t data; + HAL_SUBGHZ_ReadRegisters( &hsubghz, addr, &data, 1 ); + 8015c9a: 2301 movs r3, #1 + 8015c9c: f10d 0207 add.w r2, sp, #7 + 8015ca0: 4803 ldr r0, [pc, #12] ; (8015cb0 <SUBGRF_ReadRegister+0x1c>) + 8015ca2: f7f5 fc39 bl 800b518 <HAL_SUBGHZ_ReadRegisters> + return data; +} + 8015ca6: f89d 0007 ldrb.w r0, [sp, #7] + 8015caa: b003 add sp, #12 + 8015cac: f85d fb04 ldr.w pc, [sp], #4 + 8015cb0: 20000acc .word 0x20000acc + +08015cb4 <Radio_SMPS_Set>: +{ + RadioOnDioIrqCb( IRQ_LR_FHSS_HOP ); +} + +static void Radio_SMPS_Set(uint8_t level) +{ + 8015cb4: b510 push {r4, lr} + 8015cb6: 4604 mov r4, r0 + if ( 1U == RBI_IsDCDC() ) + 8015cb8: f7ef f804 bl 8004cc4 <RBI_IsDCDC> + 8015cbc: 2801 cmp r0, #1 + 8015cbe: d000 beq.n 8015cc2 <Radio_SMPS_Set+0xe> + uint8_t modReg; + modReg= SUBGRF_ReadRegister(SUBGHZ_SMPSC2R); + modReg&= (~SMPS_DRV_MASK); + SUBGRF_WriteRegister(SUBGHZ_SMPSC2R, modReg | level); + } +} + 8015cc0: bd10 pop {r4, pc} + modReg= SUBGRF_ReadRegister(SUBGHZ_SMPSC2R); + 8015cc2: f640 1023 movw r0, #2339 ; 0x923 + 8015cc6: f7ff ffe5 bl 8015c94 <SUBGRF_ReadRegister> + modReg&= (~SMPS_DRV_MASK); + 8015cca: f000 01f9 and.w r1, r0, #249 ; 0xf9 + SUBGRF_WriteRegister(SUBGHZ_SMPSC2R, modReg | level); + 8015cce: 4321 orrs r1, r4 + 8015cd0: f640 1023 movw r0, #2339 ; 0x923 + 8015cd4: f7ff ffce bl 8015c74 <SUBGRF_WriteRegister> +} + 8015cd8: e7f2 b.n 8015cc0 <Radio_SMPS_Set+0xc> + +08015cda <SUBGRF_SetWhiteningSeed>: +{ + 8015cda: b510 push {r4, lr} + 8015cdc: 4604 mov r4, r0 + switch( SUBGRF_GetPacketType( ) ) + 8015cde: f7ff ffc3 bl 8015c68 <SUBGRF_GetPacketType> + 8015ce2: b100 cbz r0, 8015ce6 <SUBGRF_SetWhiteningSeed+0xc> +} + 8015ce4: bd10 pop {r4, pc} + regValue = SUBGRF_ReadRegister( REG_LR_WHITSEEDBASEADDR_MSB ) & 0xFE; + 8015ce6: f44f 60d7 mov.w r0, #1720 ; 0x6b8 + 8015cea: f7ff ffd3 bl 8015c94 <SUBGRF_ReadRegister> + 8015cee: f000 00fe and.w r0, r0, #254 ; 0xfe + regValue = ( ( seed >> 8 ) & 0x01 ) | regValue; + 8015cf2: f3c4 2100 ubfx r1, r4, #8, #1 + SUBGRF_WriteRegister( REG_LR_WHITSEEDBASEADDR_MSB, regValue ); // only 1 bit. + 8015cf6: 4301 orrs r1, r0 + 8015cf8: f44f 60d7 mov.w r0, #1720 ; 0x6b8 + 8015cfc: f7ff ffba bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_WriteRegister( REG_LR_WHITSEEDBASEADDR_LSB, (uint8_t)seed ); + 8015d00: b2e1 uxtb r1, r4 + 8015d02: f240 60b9 movw r0, #1721 ; 0x6b9 + 8015d06: f7ff ffb5 bl 8015c74 <SUBGRF_WriteRegister> +} + 8015d0a: e7eb b.n 8015ce4 <SUBGRF_SetWhiteningSeed+0xa> + +08015d0c <SUBGRF_WriteRegisters>: +{ + 8015d0c: b510 push {r4, lr} + 8015d0e: 4613 mov r3, r2 + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8015d10: f3ef 8410 mrs r4, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8015d14: b672 cpsid i + HAL_SUBGHZ_WriteRegisters( &hsubghz, address, buffer, size ); + 8015d16: 460a mov r2, r1 + 8015d18: 4601 mov r1, r0 + 8015d1a: 4803 ldr r0, [pc, #12] ; (8015d28 <SUBGRF_WriteRegisters+0x1c>) + 8015d1c: f7f5 fbac bl 800b478 <HAL_SUBGHZ_WriteRegisters> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8015d20: f384 8810 msr PRIMASK, r4 +} + 8015d24: bd10 pop {r4, pc} + 8015d26: bf00 nop + 8015d28: 20000acc .word 0x20000acc + +08015d2c <SUBGRF_SetSyncWord>: +{ + 8015d2c: b508 push {r3, lr} + 8015d2e: 4601 mov r1, r0 + SUBGRF_WriteRegisters( REG_LR_SYNCWORDBASEADDRESS, syncWord, 8 ); + 8015d30: 2208 movs r2, #8 + 8015d32: f44f 60d8 mov.w r0, #1728 ; 0x6c0 + 8015d36: f7ff ffe9 bl 8015d0c <SUBGRF_WriteRegisters> +} + 8015d3a: 2000 movs r0, #0 + 8015d3c: bd08 pop {r3, pc} + +08015d3e <SUBGRF_SetCrcSeed>: +{ + 8015d3e: b500 push {lr} + 8015d40: b083 sub sp, #12 + buf[0] = ( uint8_t )( ( seed >> 8 ) & 0xFF ); + 8015d42: 0a03 lsrs r3, r0, #8 + 8015d44: f88d 3004 strb.w r3, [sp, #4] + buf[1] = ( uint8_t )( seed & 0xFF ); + 8015d48: f88d 0005 strb.w r0, [sp, #5] + switch( SUBGRF_GetPacketType( ) ) + 8015d4c: f7ff ff8c bl 8015c68 <SUBGRF_GetPacketType> + 8015d50: b110 cbz r0, 8015d58 <SUBGRF_SetCrcSeed+0x1a> +} + 8015d52: b003 add sp, #12 + 8015d54: f85d fb04 ldr.w pc, [sp], #4 + SUBGRF_WriteRegisters( REG_LR_CRCSEEDBASEADDR, buf, 2 ); + 8015d58: 2202 movs r2, #2 + 8015d5a: a901 add r1, sp, #4 + 8015d5c: f240 60bc movw r0, #1724 ; 0x6bc + 8015d60: f7ff ffd4 bl 8015d0c <SUBGRF_WriteRegisters> +} + 8015d64: e7f5 b.n 8015d52 <SUBGRF_SetCrcSeed+0x14> + +08015d66 <SUBGRF_SetCrcPolynomial>: +{ + 8015d66: b500 push {lr} + 8015d68: b083 sub sp, #12 + buf[0] = ( uint8_t )( ( polynomial >> 8 ) & 0xFF ); + 8015d6a: 0a03 lsrs r3, r0, #8 + 8015d6c: f88d 3004 strb.w r3, [sp, #4] + buf[1] = ( uint8_t )( polynomial & 0xFF ); + 8015d70: f88d 0005 strb.w r0, [sp, #5] + switch( SUBGRF_GetPacketType( ) ) + 8015d74: f7ff ff78 bl 8015c68 <SUBGRF_GetPacketType> + 8015d78: b110 cbz r0, 8015d80 <SUBGRF_SetCrcPolynomial+0x1a> +} + 8015d7a: b003 add sp, #12 + 8015d7c: f85d fb04 ldr.w pc, [sp], #4 + SUBGRF_WriteRegisters( REG_LR_CRCPOLYBASEADDR, buf, 2 ); + 8015d80: 2202 movs r2, #2 + 8015d82: a901 add r1, sp, #4 + 8015d84: f240 60be movw r0, #1726 ; 0x6be + 8015d88: f7ff ffc0 bl 8015d0c <SUBGRF_WriteRegisters> +} + 8015d8c: e7f5 b.n 8015d7a <SUBGRF_SetCrcPolynomial+0x14> + ... + +08015d90 <SUBGRF_ReadRegisters>: +{ + 8015d90: b510 push {r4, lr} + 8015d92: 4613 mov r3, r2 + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8015d94: f3ef 8410 mrs r4, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8015d98: b672 cpsid i + HAL_SUBGHZ_ReadRegisters( &hsubghz, address, buffer, size ); + 8015d9a: 460a mov r2, r1 + 8015d9c: 4601 mov r1, r0 + 8015d9e: 4803 ldr r0, [pc, #12] ; (8015dac <SUBGRF_ReadRegisters+0x1c>) + 8015da0: f7f5 fbba bl 800b518 <HAL_SUBGHZ_ReadRegisters> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8015da4: f384 8810 msr PRIMASK, r4 +} + 8015da8: bd10 pop {r4, pc} + 8015daa: bf00 nop + 8015dac: 20000acc .word 0x20000acc + +08015db0 <SUBGRF_WriteBuffer>: +{ + 8015db0: b510 push {r4, lr} + 8015db2: 4613 mov r3, r2 + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8015db4: f3ef 8410 mrs r4, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8015db8: b672 cpsid i + HAL_SUBGHZ_WriteBuffer( &hsubghz, offset, buffer, size ); + 8015dba: 460a mov r2, r1 + 8015dbc: 4601 mov r1, r0 + 8015dbe: 4803 ldr r0, [pc, #12] ; (8015dcc <SUBGRF_WriteBuffer+0x1c>) + 8015dc0: f7f5 fd08 bl 800b7d4 <HAL_SUBGHZ_WriteBuffer> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8015dc4: f384 8810 msr PRIMASK, r4 +} + 8015dc8: bd10 pop {r4, pc} + 8015dca: bf00 nop + 8015dcc: 20000acc .word 0x20000acc + +08015dd0 <SUBGRF_SetPayload>: +{ + 8015dd0: b508 push {r3, lr} + 8015dd2: 460a mov r2, r1 + SUBGRF_WriteBuffer( 0x00, payload, size ); + 8015dd4: 4601 mov r1, r0 + 8015dd6: 2000 movs r0, #0 + 8015dd8: f7ff ffea bl 8015db0 <SUBGRF_WriteBuffer> +} + 8015ddc: bd08 pop {r3, pc} + ... + +08015de0 <SUBGRF_ReadBuffer>: +{ + 8015de0: b510 push {r4, lr} + 8015de2: 4613 mov r3, r2 + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8015de4: f3ef 8410 mrs r4, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8015de8: b672 cpsid i + HAL_SUBGHZ_ReadBuffer( &hsubghz, offset, buffer, size ); + 8015dea: 460a mov r2, r1 + 8015dec: 4601 mov r1, r0 + 8015dee: 4803 ldr r0, [pc, #12] ; (8015dfc <SUBGRF_ReadBuffer+0x1c>) + 8015df0: f7f5 fd3a bl 800b868 <HAL_SUBGHZ_ReadBuffer> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8015df4: f384 8810 msr PRIMASK, r4 +} + 8015df8: bd10 pop {r4, pc} + 8015dfa: bf00 nop + 8015dfc: 20000acc .word 0x20000acc + +08015e00 <SUBGRF_WriteCommand>: +{ + 8015e00: b510 push {r4, lr} + 8015e02: 4613 mov r3, r2 + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8015e04: f3ef 8410 mrs r4, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8015e08: b672 cpsid i + HAL_SUBGHZ_ExecSetCmd( &hsubghz, Command, pBuffer, Size ); + 8015e0a: 460a mov r2, r1 + 8015e0c: 4601 mov r1, r0 + 8015e0e: 4803 ldr r0, [pc, #12] ; (8015e1c <SUBGRF_WriteCommand+0x1c>) + 8015e10: f7f5 fbd6 bl 800b5c0 <HAL_SUBGHZ_ExecSetCmd> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8015e14: f384 8810 msr PRIMASK, r4 +} + 8015e18: bd10 pop {r4, pc} + 8015e1a: bf00 nop + 8015e1c: 20000acc .word 0x20000acc + +08015e20 <SUBGRF_SetSleep>: +{ + 8015e20: b510 push {r4, lr} + 8015e22: b082 sub sp, #8 + 8015e24: 4604 mov r4, r0 + RBI_ConfigRFSwitch(RBI_SWITCH_OFF); + 8015e26: 2000 movs r0, #0 + 8015e28: f7ee ff08 bl 8004c3c <RBI_ConfigRFSwitch> + Radio_SMPS_Set(SMPS_DRIVE_SETTING_DEFAULT); + 8015e2c: 2002 movs r0, #2 + 8015e2e: f7ff ff41 bl 8015cb4 <Radio_SMPS_Set> + uint8_t value = ( ( ( uint8_t )sleepConfig.Fields.WarmStart << 2 ) | + 8015e32: f004 0304 and.w r3, r4, #4 + ( ( uint8_t )sleepConfig.Fields.Reset << 1 ) | + 8015e36: f004 0202 and.w r2, r4, #2 + uint8_t value = ( ( ( uint8_t )sleepConfig.Fields.WarmStart << 2 ) | + 8015e3a: 4313 orrs r3, r2 + ( ( uint8_t )sleepConfig.Fields.WakeUpRTC ) ); + 8015e3c: f004 0401 and.w r4, r4, #1 + ( ( uint8_t )sleepConfig.Fields.Reset << 1 ) | + 8015e40: 4323 orrs r3, r4 + uint8_t value = ( ( ( uint8_t )sleepConfig.Fields.WarmStart << 2 ) | + 8015e42: f88d 3007 strb.w r3, [sp, #7] + SUBGRF_WriteCommand( RADIO_SET_SLEEP, &value, 1 ); + 8015e46: 2201 movs r2, #1 + 8015e48: f10d 0107 add.w r1, sp, #7 + 8015e4c: 2084 movs r0, #132 ; 0x84 + 8015e4e: f7ff ffd7 bl 8015e00 <SUBGRF_WriteCommand> + OperatingMode = MODE_SLEEP; + 8015e52: 4b02 ldr r3, [pc, #8] ; (8015e5c <SUBGRF_SetSleep+0x3c>) + 8015e54: 2200 movs r2, #0 + 8015e56: 701a strb r2, [r3, #0] +} + 8015e58: b002 add sp, #8 + 8015e5a: bd10 pop {r4, pc} + 8015e5c: 200027ca .word 0x200027ca + +08015e60 <SUBGRF_SetStandby>: +{ + 8015e60: b500 push {lr} + 8015e62: b083 sub sp, #12 + 8015e64: f88d 0007 strb.w r0, [sp, #7] + SUBGRF_WriteCommand( RADIO_SET_STANDBY, ( uint8_t* )&standbyConfig, 1 ); + 8015e68: 2201 movs r2, #1 + 8015e6a: f10d 0107 add.w r1, sp, #7 + 8015e6e: 2080 movs r0, #128 ; 0x80 + 8015e70: f7ff ffc6 bl 8015e00 <SUBGRF_WriteCommand> + if( standbyConfig == STDBY_RC ) + 8015e74: f89d 3007 ldrb.w r3, [sp, #7] + 8015e78: b92b cbnz r3, 8015e86 <SUBGRF_SetStandby+0x26> + OperatingMode = MODE_STDBY_RC; + 8015e7a: 4b05 ldr r3, [pc, #20] ; (8015e90 <SUBGRF_SetStandby+0x30>) + 8015e7c: 2201 movs r2, #1 + 8015e7e: 701a strb r2, [r3, #0] +} + 8015e80: b003 add sp, #12 + 8015e82: f85d fb04 ldr.w pc, [sp], #4 + OperatingMode = MODE_STDBY_XOSC; + 8015e86: 4b02 ldr r3, [pc, #8] ; (8015e90 <SUBGRF_SetStandby+0x30>) + 8015e88: 2202 movs r2, #2 + 8015e8a: 701a strb r2, [r3, #0] +} + 8015e8c: e7f8 b.n 8015e80 <SUBGRF_SetStandby+0x20> + 8015e8e: bf00 nop + 8015e90: 200027ca .word 0x200027ca + +08015e94 <SUBGRF_SetTx>: +{ + 8015e94: b500 push {lr} + 8015e96: b083 sub sp, #12 + OperatingMode = MODE_TX; + 8015e98: 4b0a ldr r3, [pc, #40] ; (8015ec4 <SUBGRF_SetTx+0x30>) + 8015e9a: 2204 movs r2, #4 + 8015e9c: 701a strb r2, [r3, #0] + buf[0] = ( uint8_t )( ( timeout >> 16 ) & 0xFF ); + 8015e9e: f3c0 4307 ubfx r3, r0, #16, #8 + 8015ea2: f88d 3004 strb.w r3, [sp, #4] + buf[1] = ( uint8_t )( ( timeout >> 8 ) & 0xFF ); + 8015ea6: f3c0 2307 ubfx r3, r0, #8, #8 + 8015eaa: f88d 3005 strb.w r3, [sp, #5] + buf[2] = ( uint8_t )( timeout & 0xFF ); + 8015eae: f88d 0006 strb.w r0, [sp, #6] + SUBGRF_WriteCommand( RADIO_SET_TX, buf, 3 ); + 8015eb2: 2203 movs r2, #3 + 8015eb4: a901 add r1, sp, #4 + 8015eb6: 2083 movs r0, #131 ; 0x83 + 8015eb8: f7ff ffa2 bl 8015e00 <SUBGRF_WriteCommand> +} + 8015ebc: b003 add sp, #12 + 8015ebe: f85d fb04 ldr.w pc, [sp], #4 + 8015ec2: bf00 nop + 8015ec4: 200027ca .word 0x200027ca + +08015ec8 <SUBGRF_SendPayload>: +{ + 8015ec8: b510 push {r4, lr} + 8015eca: 4614 mov r4, r2 + SUBGRF_SetPayload( payload, size ); + 8015ecc: f7ff ff80 bl 8015dd0 <SUBGRF_SetPayload> + SUBGRF_SetTx( timeout ); + 8015ed0: 4620 mov r0, r4 + 8015ed2: f7ff ffdf bl 8015e94 <SUBGRF_SetTx> +} + 8015ed6: bd10 pop {r4, pc} + +08015ed8 <SUBGRF_SetRx>: +{ + 8015ed8: b500 push {lr} + 8015eda: b083 sub sp, #12 + OperatingMode = MODE_RX; + 8015edc: 4b0a ldr r3, [pc, #40] ; (8015f08 <SUBGRF_SetRx+0x30>) + 8015ede: 2205 movs r2, #5 + 8015ee0: 701a strb r2, [r3, #0] + buf[0] = ( uint8_t )( ( timeout >> 16 ) & 0xFF ); + 8015ee2: f3c0 4307 ubfx r3, r0, #16, #8 + 8015ee6: f88d 3004 strb.w r3, [sp, #4] + buf[1] = ( uint8_t )( ( timeout >> 8 ) & 0xFF ); + 8015eea: f3c0 2307 ubfx r3, r0, #8, #8 + 8015eee: f88d 3005 strb.w r3, [sp, #5] + buf[2] = ( uint8_t )( timeout & 0xFF ); + 8015ef2: f88d 0006 strb.w r0, [sp, #6] + SUBGRF_WriteCommand( RADIO_SET_RX, buf, 3 ); + 8015ef6: 2203 movs r2, #3 + 8015ef8: a901 add r1, sp, #4 + 8015efa: 2082 movs r0, #130 ; 0x82 + 8015efc: f7ff ff80 bl 8015e00 <SUBGRF_WriteCommand> +} + 8015f00: b003 add sp, #12 + 8015f02: f85d fb04 ldr.w pc, [sp], #4 + 8015f06: bf00 nop + 8015f08: 200027ca .word 0x200027ca + +08015f0c <SUBGRF_GetRandom>: +{ + 8015f0c: b570 push {r4, r5, r6, lr} + 8015f0e: b082 sub sp, #8 + uint32_t number = 0; + 8015f10: 2600 movs r6, #0 + 8015f12: 9601 str r6, [sp, #4] + regAnaLna = SUBGRF_ReadRegister( REG_ANA_LNA ); + 8015f14: f640 00e2 movw r0, #2274 ; 0x8e2 + 8015f18: f7ff febc bl 8015c94 <SUBGRF_ReadRegister> + 8015f1c: 4605 mov r5, r0 + SUBGRF_WriteRegister( REG_ANA_LNA, regAnaLna & ~( 1 << 0 ) ); + 8015f1e: f000 01fe and.w r1, r0, #254 ; 0xfe + 8015f22: f640 00e2 movw r0, #2274 ; 0x8e2 + 8015f26: f7ff fea5 bl 8015c74 <SUBGRF_WriteRegister> + regAnaMixer = SUBGRF_ReadRegister( REG_ANA_MIXER ); + 8015f2a: f640 00e5 movw r0, #2277 ; 0x8e5 + 8015f2e: f7ff feb1 bl 8015c94 <SUBGRF_ReadRegister> + 8015f32: 4604 mov r4, r0 + SUBGRF_WriteRegister( REG_ANA_MIXER, regAnaMixer & ~( 1 << 7 ) ); + 8015f34: f000 017f and.w r1, r0, #127 ; 0x7f + 8015f38: f640 00e5 movw r0, #2277 ; 0x8e5 + 8015f3c: f7ff fe9a bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_SetRx( 0xFFFFFF ); // Rx Continuous + 8015f40: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 8015f44: f7ff ffc8 bl 8015ed8 <SUBGRF_SetRx> + SUBGRF_ReadRegisters( RANDOM_NUMBER_GENERATORBASEADDR, ( uint8_t* )&number, 4 ); + 8015f48: 2204 movs r2, #4 + 8015f4a: eb0d 0102 add.w r1, sp, r2 + 8015f4e: f640 0019 movw r0, #2073 ; 0x819 + 8015f52: f7ff ff1d bl 8015d90 <SUBGRF_ReadRegisters> + SUBGRF_SetStandby( STDBY_RC ); + 8015f56: 4630 mov r0, r6 + 8015f58: f7ff ff82 bl 8015e60 <SUBGRF_SetStandby> + SUBGRF_WriteRegister( REG_ANA_LNA, regAnaLna ); + 8015f5c: 4629 mov r1, r5 + 8015f5e: f640 00e2 movw r0, #2274 ; 0x8e2 + 8015f62: f7ff fe87 bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_WriteRegister( REG_ANA_MIXER, regAnaMixer ); + 8015f66: 4621 mov r1, r4 + 8015f68: f640 00e5 movw r0, #2277 ; 0x8e5 + 8015f6c: f7ff fe82 bl 8015c74 <SUBGRF_WriteRegister> +} + 8015f70: 9801 ldr r0, [sp, #4] + 8015f72: b002 add sp, #8 + 8015f74: bd70 pop {r4, r5, r6, pc} + ... + +08015f78 <SUBGRF_SetRxBoosted>: +{ + 8015f78: b510 push {r4, lr} + 8015f7a: b082 sub sp, #8 + 8015f7c: 4604 mov r4, r0 + OperatingMode = MODE_RX; + 8015f7e: 4b0c ldr r3, [pc, #48] ; (8015fb0 <SUBGRF_SetRxBoosted+0x38>) + 8015f80: 2205 movs r2, #5 + 8015f82: 701a strb r2, [r3, #0] + SUBGRF_WriteRegister( REG_RX_GAIN, 0x97 ); // max LNA gain, increase current by ~2mA for around ~3dB in sensitivity + 8015f84: 2197 movs r1, #151 ; 0x97 + 8015f86: f640 00ac movw r0, #2220 ; 0x8ac + 8015f8a: f7ff fe73 bl 8015c74 <SUBGRF_WriteRegister> + buf[0] = ( uint8_t )( ( timeout >> 16 ) & 0xFF ); + 8015f8e: f3c4 4307 ubfx r3, r4, #16, #8 + 8015f92: f88d 3004 strb.w r3, [sp, #4] + buf[1] = ( uint8_t )( ( timeout >> 8 ) & 0xFF ); + 8015f96: f3c4 2307 ubfx r3, r4, #8, #8 + 8015f9a: f88d 3005 strb.w r3, [sp, #5] + buf[2] = ( uint8_t )( timeout & 0xFF ); + 8015f9e: f88d 4006 strb.w r4, [sp, #6] + SUBGRF_WriteCommand( RADIO_SET_RX, buf, 3 ); + 8015fa2: 2203 movs r2, #3 + 8015fa4: a901 add r1, sp, #4 + 8015fa6: 2082 movs r0, #130 ; 0x82 + 8015fa8: f7ff ff2a bl 8015e00 <SUBGRF_WriteCommand> +} + 8015fac: b002 add sp, #8 + 8015fae: bd10 pop {r4, pc} + 8015fb0: 200027ca .word 0x200027ca + +08015fb4 <SUBGRF_SetRxDutyCycle>: +{ + 8015fb4: b500 push {lr} + 8015fb6: b083 sub sp, #12 + buf[0] = ( uint8_t )( ( rxTime >> 16 ) & 0xFF ); + 8015fb8: f3c0 4307 ubfx r3, r0, #16, #8 + 8015fbc: f88d 3000 strb.w r3, [sp] + buf[1] = ( uint8_t )( ( rxTime >> 8 ) & 0xFF ); + 8015fc0: f3c0 2307 ubfx r3, r0, #8, #8 + 8015fc4: f88d 3001 strb.w r3, [sp, #1] + buf[2] = ( uint8_t )( rxTime & 0xFF ); + 8015fc8: f88d 0002 strb.w r0, [sp, #2] + buf[3] = ( uint8_t )( ( sleepTime >> 16 ) & 0xFF ); + 8015fcc: f3c1 4307 ubfx r3, r1, #16, #8 + 8015fd0: f88d 3003 strb.w r3, [sp, #3] + buf[4] = ( uint8_t )( ( sleepTime >> 8 ) & 0xFF ); + 8015fd4: f3c1 2307 ubfx r3, r1, #8, #8 + 8015fd8: f88d 3004 strb.w r3, [sp, #4] + buf[5] = ( uint8_t )( sleepTime & 0xFF ); + 8015fdc: f88d 1005 strb.w r1, [sp, #5] + SUBGRF_WriteCommand( RADIO_SET_RXDUTYCYCLE, buf, 6 ); + 8015fe0: 2206 movs r2, #6 + 8015fe2: 4669 mov r1, sp + 8015fe4: 2094 movs r0, #148 ; 0x94 + 8015fe6: f7ff ff0b bl 8015e00 <SUBGRF_WriteCommand> + OperatingMode = MODE_RX_DC; + 8015fea: 4b03 ldr r3, [pc, #12] ; (8015ff8 <SUBGRF_SetRxDutyCycle+0x44>) + 8015fec: 2206 movs r2, #6 + 8015fee: 701a strb r2, [r3, #0] +} + 8015ff0: b003 add sp, #12 + 8015ff2: f85d fb04 ldr.w pc, [sp], #4 + 8015ff6: bf00 nop + 8015ff8: 200027ca .word 0x200027ca + +08015ffc <SUBGRF_SetCad>: +{ + 8015ffc: b508 push {r3, lr} + SUBGRF_WriteCommand( RADIO_SET_CAD, 0, 0 ); + 8015ffe: 2200 movs r2, #0 + 8016000: 4611 mov r1, r2 + 8016002: 20c5 movs r0, #197 ; 0xc5 + 8016004: f7ff fefc bl 8015e00 <SUBGRF_WriteCommand> + OperatingMode = MODE_CAD; + 8016008: 4b01 ldr r3, [pc, #4] ; (8016010 <SUBGRF_SetCad+0x14>) + 801600a: 2207 movs r2, #7 + 801600c: 701a strb r2, [r3, #0] +} + 801600e: bd08 pop {r3, pc} + 8016010: 200027ca .word 0x200027ca + +08016014 <SUBGRF_SetTxContinuousWave>: +{ + 8016014: b508 push {r3, lr} + SUBGRF_WriteCommand( RADIO_SET_TXCONTINUOUSWAVE, 0, 0 ); + 8016016: 2200 movs r2, #0 + 8016018: 4611 mov r1, r2 + 801601a: 20d1 movs r0, #209 ; 0xd1 + 801601c: f7ff fef0 bl 8015e00 <SUBGRF_WriteCommand> +} + 8016020: bd08 pop {r3, pc} + +08016022 <SUBGRF_SetTxInfinitePreamble>: +{ + 8016022: b508 push {r3, lr} + SUBGRF_WriteCommand( RADIO_SET_TXCONTINUOUSPREAMBLE, 0, 0 ); + 8016024: 2200 movs r2, #0 + 8016026: 4611 mov r1, r2 + 8016028: 20d2 movs r0, #210 ; 0xd2 + 801602a: f7ff fee9 bl 8015e00 <SUBGRF_WriteCommand> +} + 801602e: bd08 pop {r3, pc} + +08016030 <SUBGRF_SetStopRxTimerOnPreambleDetect>: +{ + 8016030: b500 push {lr} + 8016032: b083 sub sp, #12 + 8016034: f88d 0007 strb.w r0, [sp, #7] + SUBGRF_WriteCommand( RADIO_SET_STOPRXTIMERONPREAMBLE, ( uint8_t* )&enable, 1 ); + 8016038: 2201 movs r2, #1 + 801603a: f10d 0107 add.w r1, sp, #7 + 801603e: 209f movs r0, #159 ; 0x9f + 8016040: f7ff fede bl 8015e00 <SUBGRF_WriteCommand> +} + 8016044: b003 add sp, #12 + 8016046: f85d fb04 ldr.w pc, [sp], #4 + +0801604a <SUBGRF_SetLoRaSymbNumTimeout>: +{ + 801604a: b500 push {lr} + 801604c: b083 sub sp, #12 + 801604e: f88d 0007 strb.w r0, [sp, #7] + SUBGRF_WriteCommand( RADIO_SET_LORASYMBTIMEOUT, &symbNum, 1 ); + 8016052: 2201 movs r2, #1 + 8016054: f10d 0107 add.w r1, sp, #7 + 8016058: 20a0 movs r0, #160 ; 0xa0 + 801605a: f7ff fed1 bl 8015e00 <SUBGRF_WriteCommand> + if( symbNum >= 64 ) + 801605e: f89d 3007 ldrb.w r3, [sp, #7] + 8016062: 2b3f cmp r3, #63 ; 0x3f + 8016064: d90f bls.n 8016086 <SUBGRF_SetLoRaSymbNumTimeout+0x3c> + uint8_t mant = symbNum >> 1; + 8016066: 085b lsrs r3, r3, #1 + uint8_t exp = 0; + 8016068: 2200 movs r2, #0 + while( mant > 31 ) + 801606a: e002 b.n 8016072 <SUBGRF_SetLoRaSymbNumTimeout+0x28> + mant >>= 2; + 801606c: 089b lsrs r3, r3, #2 + exp++; + 801606e: 3201 adds r2, #1 + 8016070: b2d2 uxtb r2, r2 + while( mant > 31 ) + 8016072: 2b1f cmp r3, #31 + 8016074: d8fa bhi.n 801606c <SUBGRF_SetLoRaSymbNumTimeout+0x22> + reg = exp + ( mant << 3 ); + 8016076: 00d9 lsls r1, r3, #3 + 8016078: b2c9 uxtb r1, r1 + 801607a: 4411 add r1, r2 + SUBGRF_WriteRegister( REG_LR_SYNCH_TIMEOUT, reg ); + 801607c: b2c9 uxtb r1, r1 + 801607e: f240 7006 movw r0, #1798 ; 0x706 + 8016082: f7ff fdf7 bl 8015c74 <SUBGRF_WriteRegister> +} + 8016086: b003 add sp, #12 + 8016088: f85d fb04 ldr.w pc, [sp], #4 + +0801608c <SUBGRF_SetRegulatorMode>: +{ + 801608c: b500 push {lr} + 801608e: b083 sub sp, #12 + if ( ( 1UL == RBI_IsDCDC() ) && ( 1UL == DCDC_ENABLE ) ) + 8016090: f7ee fe18 bl 8004cc4 <RBI_IsDCDC> + 8016094: 2801 cmp r0, #1 + 8016096: d00b beq.n 80160b0 <SUBGRF_SetRegulatorMode+0x24> + mode = USE_LDO ; + 8016098: 2300 movs r3, #0 + 801609a: f88d 3007 strb.w r3, [sp, #7] + SUBGRF_WriteCommand( RADIO_SET_REGULATORMODE, ( uint8_t* )&mode, 1 ); + 801609e: 2201 movs r2, #1 + 80160a0: f10d 0107 add.w r1, sp, #7 + 80160a4: 2096 movs r0, #150 ; 0x96 + 80160a6: f7ff feab bl 8015e00 <SUBGRF_WriteCommand> +} + 80160aa: b003 add sp, #12 + 80160ac: f85d fb04 ldr.w pc, [sp], #4 + mode = USE_DCDC ; + 80160b0: 2301 movs r3, #1 + 80160b2: f88d 3007 strb.w r3, [sp, #7] + 80160b6: e7f2 b.n 801609e <SUBGRF_SetRegulatorMode+0x12> + +080160b8 <SUBGRF_Calibrate>: +{ + 80160b8: b500 push {lr} + 80160ba: b083 sub sp, #12 + uint8_t value = ( ( ( uint8_t )calibParam.Fields.ImgEnable << 6 ) | + 80160bc: f000 0340 and.w r3, r0, #64 ; 0x40 + ( ( uint8_t )calibParam.Fields.ADCBulkPEnable << 5 ) | + 80160c0: f000 0220 and.w r2, r0, #32 + uint8_t value = ( ( ( uint8_t )calibParam.Fields.ImgEnable << 6 ) | + 80160c4: 4313 orrs r3, r2 + ( ( uint8_t )calibParam.Fields.ADCBulkNEnable << 4 ) | + 80160c6: f000 0210 and.w r2, r0, #16 + ( ( uint8_t )calibParam.Fields.ADCBulkPEnable << 5 ) | + 80160ca: 4313 orrs r3, r2 + ( ( uint8_t )calibParam.Fields.ADCPulseEnable << 3 ) | + 80160cc: f000 0208 and.w r2, r0, #8 + ( ( uint8_t )calibParam.Fields.ADCBulkNEnable << 4 ) | + 80160d0: 4313 orrs r3, r2 + ( ( uint8_t )calibParam.Fields.PLLEnable << 2 ) | + 80160d2: f000 0204 and.w r2, r0, #4 + ( ( uint8_t )calibParam.Fields.ADCPulseEnable << 3 ) | + 80160d6: 4313 orrs r3, r2 + ( ( uint8_t )calibParam.Fields.RC13MEnable << 1 ) | + 80160d8: f000 0202 and.w r2, r0, #2 + ( ( uint8_t )calibParam.Fields.PLLEnable << 2 ) | + 80160dc: 4313 orrs r3, r2 + ( ( uint8_t )calibParam.Fields.RC64KEnable ) ); + 80160de: f000 0001 and.w r0, r0, #1 + ( ( uint8_t )calibParam.Fields.RC13MEnable << 1 ) | + 80160e2: 4303 orrs r3, r0 + uint8_t value = ( ( ( uint8_t )calibParam.Fields.ImgEnable << 6 ) | + 80160e4: f88d 3007 strb.w r3, [sp, #7] + SUBGRF_WriteCommand( RADIO_CALIBRATE, &value, 1 ); + 80160e8: 2201 movs r2, #1 + 80160ea: f10d 0107 add.w r1, sp, #7 + 80160ee: 2089 movs r0, #137 ; 0x89 + 80160f0: f7ff fe86 bl 8015e00 <SUBGRF_WriteCommand> +} + 80160f4: b003 add sp, #12 + 80160f6: f85d fb04 ldr.w pc, [sp], #4 + ... + +080160fc <SUBGRF_CalibrateImage>: +{ + 80160fc: b500 push {lr} + 80160fe: b083 sub sp, #12 + if( freq > 900000000 ) + 8016100: 4b1f ldr r3, [pc, #124] ; (8016180 <SUBGRF_CalibrateImage+0x84>) + 8016102: 4298 cmp r0, r3 + 8016104: d90d bls.n 8016122 <SUBGRF_CalibrateImage+0x26> + calFreq[0] = 0xE1; + 8016106: 23e1 movs r3, #225 ; 0xe1 + 8016108: f88d 3004 strb.w r3, [sp, #4] + calFreq[1] = 0xE9; + 801610c: 23e9 movs r3, #233 ; 0xe9 + 801610e: f88d 3005 strb.w r3, [sp, #5] + SUBGRF_WriteCommand( RADIO_CALIBRATEIMAGE, calFreq, 2 ); + 8016112: 2202 movs r2, #2 + 8016114: a901 add r1, sp, #4 + 8016116: 2098 movs r0, #152 ; 0x98 + 8016118: f7ff fe72 bl 8015e00 <SUBGRF_WriteCommand> +} + 801611c: b003 add sp, #12 + 801611e: f85d fb04 ldr.w pc, [sp], #4 + else if( freq > 850000000 ) + 8016122: 4b18 ldr r3, [pc, #96] ; (8016184 <SUBGRF_CalibrateImage+0x88>) + 8016124: 4298 cmp r0, r3 + 8016126: d906 bls.n 8016136 <SUBGRF_CalibrateImage+0x3a> + calFreq[0] = 0xD7; + 8016128: 23d7 movs r3, #215 ; 0xd7 + 801612a: f88d 3004 strb.w r3, [sp, #4] + calFreq[1] = 0xDB; + 801612e: 23db movs r3, #219 ; 0xdb + 8016130: f88d 3005 strb.w r3, [sp, #5] + 8016134: e7ed b.n 8016112 <SUBGRF_CalibrateImage+0x16> + else if( freq > 770000000 ) + 8016136: 4b14 ldr r3, [pc, #80] ; (8016188 <SUBGRF_CalibrateImage+0x8c>) + 8016138: 4298 cmp r0, r3 + 801613a: d906 bls.n 801614a <SUBGRF_CalibrateImage+0x4e> + calFreq[0] = 0xC1; + 801613c: 23c1 movs r3, #193 ; 0xc1 + 801613e: f88d 3004 strb.w r3, [sp, #4] + calFreq[1] = 0xC5; + 8016142: 23c5 movs r3, #197 ; 0xc5 + 8016144: f88d 3005 strb.w r3, [sp, #5] + 8016148: e7e3 b.n 8016112 <SUBGRF_CalibrateImage+0x16> + else if( freq > 460000000 ) + 801614a: 4b10 ldr r3, [pc, #64] ; (801618c <SUBGRF_CalibrateImage+0x90>) + 801614c: 4298 cmp r0, r3 + 801614e: d906 bls.n 801615e <SUBGRF_CalibrateImage+0x62> + calFreq[0] = 0x75; + 8016150: 2375 movs r3, #117 ; 0x75 + 8016152: f88d 3004 strb.w r3, [sp, #4] + calFreq[1] = 0x81; + 8016156: 2381 movs r3, #129 ; 0x81 + 8016158: f88d 3005 strb.w r3, [sp, #5] + 801615c: e7d9 b.n 8016112 <SUBGRF_CalibrateImage+0x16> + else if( freq > 425000000 ) + 801615e: 4b0c ldr r3, [pc, #48] ; (8016190 <SUBGRF_CalibrateImage+0x94>) + 8016160: 4298 cmp r0, r3 + 8016162: d906 bls.n 8016172 <SUBGRF_CalibrateImage+0x76> + calFreq[0] = 0x6B; + 8016164: 236b movs r3, #107 ; 0x6b + 8016166: f88d 3004 strb.w r3, [sp, #4] + calFreq[1] = 0x6F; + 801616a: 236f movs r3, #111 ; 0x6f + 801616c: f88d 3005 strb.w r3, [sp, #5] + 8016170: e7cf b.n 8016112 <SUBGRF_CalibrateImage+0x16> + calFreq[0] = 0x29; + 8016172: 2329 movs r3, #41 ; 0x29 + 8016174: f88d 3004 strb.w r3, [sp, #4] + calFreq[1] = 0x2B ; + 8016178: 232b movs r3, #43 ; 0x2b + 801617a: f88d 3005 strb.w r3, [sp, #5] + 801617e: e7c8 b.n 8016112 <SUBGRF_CalibrateImage+0x16> + 8016180: 35a4e900 .word 0x35a4e900 + 8016184: 32a9f880 .word 0x32a9f880 + 8016188: 2de54480 .word 0x2de54480 + 801618c: 1b6b0b00 .word 0x1b6b0b00 + 8016190: 1954fc40 .word 0x1954fc40 + +08016194 <SUBGRF_SetPaConfig>: +{ + 8016194: b500 push {lr} + 8016196: b083 sub sp, #12 + buf[0] = paDutyCycle; + 8016198: f88d 0004 strb.w r0, [sp, #4] + buf[1] = hpMax; + 801619c: f88d 1005 strb.w r1, [sp, #5] + buf[2] = deviceSel; + 80161a0: f88d 2006 strb.w r2, [sp, #6] + buf[3] = paLut; + 80161a4: f88d 3007 strb.w r3, [sp, #7] + SUBGRF_WriteCommand( RADIO_SET_PACONFIG, buf, 4 ); + 80161a8: 2204 movs r2, #4 + 80161aa: eb0d 0102 add.w r1, sp, r2 + 80161ae: 2095 movs r0, #149 ; 0x95 + 80161b0: f7ff fe26 bl 8015e00 <SUBGRF_WriteCommand> +} + 80161b4: b003 add sp, #12 + 80161b6: f85d fb04 ldr.w pc, [sp], #4 + +080161ba <SUBGRF_SetDioIrqParams>: +{ + 80161ba: b500 push {lr} + 80161bc: b083 sub sp, #12 + buf[0] = ( uint8_t )( ( irqMask >> 8 ) & 0x00FF ); + 80161be: ea4f 2c10 mov.w ip, r0, lsr #8 + 80161c2: f88d c000 strb.w ip, [sp] + buf[1] = ( uint8_t )( irqMask & 0x00FF ); + 80161c6: f88d 0001 strb.w r0, [sp, #1] + buf[2] = ( uint8_t )( ( dio1Mask >> 8 ) & 0x00FF ); + 80161ca: 0a08 lsrs r0, r1, #8 + 80161cc: f88d 0002 strb.w r0, [sp, #2] + buf[3] = ( uint8_t )( dio1Mask & 0x00FF ); + 80161d0: f88d 1003 strb.w r1, [sp, #3] + buf[4] = ( uint8_t )( ( dio2Mask >> 8 ) & 0x00FF ); + 80161d4: 0a11 lsrs r1, r2, #8 + 80161d6: f88d 1004 strb.w r1, [sp, #4] + buf[5] = ( uint8_t )( dio2Mask & 0x00FF ); + 80161da: f88d 2005 strb.w r2, [sp, #5] + buf[6] = ( uint8_t )( ( dio3Mask >> 8 ) & 0x00FF ); + 80161de: 0a1a lsrs r2, r3, #8 + 80161e0: f88d 2006 strb.w r2, [sp, #6] + buf[7] = ( uint8_t )( dio3Mask & 0x00FF ); + 80161e4: f88d 3007 strb.w r3, [sp, #7] + SUBGRF_WriteCommand( RADIO_CFG_DIOIRQ, buf, 8 ); + 80161e8: 2208 movs r2, #8 + 80161ea: 4669 mov r1, sp + 80161ec: 4610 mov r0, r2 + 80161ee: f7ff fe07 bl 8015e00 <SUBGRF_WriteCommand> +} + 80161f2: b003 add sp, #12 + 80161f4: f85d fb04 ldr.w pc, [sp], #4 + +080161f8 <SUBGRF_SetTcxoMode>: +{ + 80161f8: b500 push {lr} + 80161fa: b083 sub sp, #12 + buf[0] = tcxoVoltage & 0x07; + 80161fc: f000 0007 and.w r0, r0, #7 + 8016200: f88d 0004 strb.w r0, [sp, #4] + buf[1] = ( uint8_t )( ( timeout >> 16 ) & 0xFF ); + 8016204: f3c1 4307 ubfx r3, r1, #16, #8 + 8016208: f88d 3005 strb.w r3, [sp, #5] + buf[2] = ( uint8_t )( ( timeout >> 8 ) & 0xFF ); + 801620c: f3c1 2307 ubfx r3, r1, #8, #8 + 8016210: f88d 3006 strb.w r3, [sp, #6] + buf[3] = ( uint8_t )( timeout & 0xFF ); + 8016214: f88d 1007 strb.w r1, [sp, #7] + SUBGRF_WriteCommand( RADIO_SET_TCXOMODE, buf, 4 ); + 8016218: 2204 movs r2, #4 + 801621a: eb0d 0102 add.w r1, sp, r2 + 801621e: 2097 movs r0, #151 ; 0x97 + 8016220: f7ff fdee bl 8015e00 <SUBGRF_WriteCommand> +} + 8016224: b003 add sp, #12 + 8016226: f85d fb04 ldr.w pc, [sp], #4 + ... + +0801622c <SUBGRF_Init>: +{ + 801622c: b508 push {r3, lr} + if ( dioIrq != NULL) + 801622e: b108 cbz r0, 8016234 <SUBGRF_Init+0x8> + RadioOnDioIrqCb = dioIrq; + 8016230: 4a19 ldr r2, [pc, #100] ; (8016298 <SUBGRF_Init+0x6c>) + 8016232: 6010 str r0, [r2, #0] + RADIO_INIT(); + 8016234: f7ec fc30 bl 8002a98 <MX_SUBGHZ_Init> + Radio_SMPS_Set(SMPS_DRIVE_SETTING_DEFAULT); + 8016238: 2002 movs r0, #2 + 801623a: f7ff fd3b bl 8015cb4 <Radio_SMPS_Set> + ImageCalibrated = false; + 801623e: 2000 movs r0, #0 + 8016240: 4b16 ldr r3, [pc, #88] ; (801629c <SUBGRF_Init+0x70>) + 8016242: 7018 strb r0, [r3, #0] + SUBGRF_SetStandby( STDBY_RC ); + 8016244: f7ff fe0c bl 8015e60 <SUBGRF_SetStandby> + if (1U == RBI_IsTCXO() ) + 8016248: f7ee fd3a bl 8004cc0 <RBI_IsTCXO> + 801624c: 2801 cmp r0, #1 + 801624e: d014 beq.n 801627a <SUBGRF_Init+0x4e> + SUBGRF_WriteRegister( REG_XTA_TRIM, XTAL_DEFAULT_CAP_VALUE ); + 8016250: 2110 movs r1, #16 + 8016252: f640 1011 movw r0, #2321 ; 0x911 + 8016256: f7ff fd0d bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_WriteRegister( REG_XTB_TRIM, XTAL_DEFAULT_CAP_VALUE ); + 801625a: 2110 movs r1, #16 + 801625c: f640 1012 movw r0, #2322 ; 0x912 + 8016260: f7ff fd08 bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_WriteRegister(REG_DRV_CTRL, 0x7 << 1); + 8016264: 210e movs r1, #14 + 8016266: f640 101f movw r0, #2335 ; 0x91f + 801626a: f7ff fd03 bl 8015c74 <SUBGRF_WriteRegister> + RBI_Init(); + 801626e: f7ee fca1 bl 8004bb4 <RBI_Init> + OperatingMode = MODE_STDBY_RC; + 8016272: 4b0b ldr r3, [pc, #44] ; (80162a0 <SUBGRF_Init+0x74>) + 8016274: 2201 movs r2, #1 + 8016276: 701a strb r2, [r3, #0] +} + 8016278: bd08 pop {r3, pc} + SUBGRF_SetTcxoMode( TCXO_CTRL_VOLTAGE, RF_WAKEUP_TIME << 6 );// 100 ms + 801627a: f44f 7120 mov.w r1, #640 ; 0x280 + 801627e: f7ff ffbb bl 80161f8 <SUBGRF_SetTcxoMode> + SUBGRF_WriteRegister( REG_XTA_TRIM, 0x00 ); + 8016282: 2100 movs r1, #0 + 8016284: f640 1011 movw r0, #2321 ; 0x911 + 8016288: f7ff fcf4 bl 8015c74 <SUBGRF_WriteRegister> + SUBGRF_Calibrate( calibParam ); + 801628c: f04f 007f mov.w r0, #127 ; 0x7f + 8016290: f7ff ff12 bl 80160b8 <SUBGRF_Calibrate> + 8016294: e7e6 b.n 8016264 <SUBGRF_Init+0x38> + 8016296: bf00 nop + 8016298: 200027cc .word 0x200027cc + 801629c: 200027c8 .word 0x200027c8 + 80162a0: 200027ca .word 0x200027ca + +080162a4 <SUBGRF_SetRfFrequency>: +{ + 80162a4: b510 push {r4, lr} + 80162a6: b082 sub sp, #8 + 80162a8: 4604 mov r4, r0 + if( ImageCalibrated == false ) + 80162aa: 4b12 ldr r3, [pc, #72] ; (80162f4 <SUBGRF_SetRfFrequency+0x50>) + 80162ac: 781b ldrb r3, [r3, #0] + 80162ae: b1d3 cbz r3, 80162e6 <SUBGRF_SetRfFrequency+0x42> + SX_FREQ_TO_CHANNEL(chan, frequency); + 80162b0: 4a11 ldr r2, [pc, #68] ; (80162f8 <SUBGRF_SetRfFrequency+0x54>) + 80162b2: 2300 movs r3, #0 + 80162b4: 0660 lsls r0, r4, #25 + 80162b6: 09e1 lsrs r1, r4, #7 + 80162b8: f7eb fc2a bl 8001b10 <__aeabi_uldivmod> + buf[0] = ( uint8_t )( ( chan >> 24 ) & 0xFF ); + 80162bc: 0e03 lsrs r3, r0, #24 + 80162be: f88d 3004 strb.w r3, [sp, #4] + buf[1] = ( uint8_t )( ( chan >> 16 ) & 0xFF ); + 80162c2: f3c0 4307 ubfx r3, r0, #16, #8 + 80162c6: f88d 3005 strb.w r3, [sp, #5] + buf[2] = ( uint8_t )( ( chan >> 8 ) & 0xFF ); + 80162ca: f3c0 2307 ubfx r3, r0, #8, #8 + 80162ce: f88d 3006 strb.w r3, [sp, #6] + buf[3] = ( uint8_t )( chan & 0xFF ); + 80162d2: f88d 0007 strb.w r0, [sp, #7] + SUBGRF_WriteCommand( RADIO_SET_RFFREQUENCY, buf, 4 ); + 80162d6: 2204 movs r2, #4 + 80162d8: eb0d 0102 add.w r1, sp, r2 + 80162dc: 2086 movs r0, #134 ; 0x86 + 80162de: f7ff fd8f bl 8015e00 <SUBGRF_WriteCommand> +} + 80162e2: b002 add sp, #8 + 80162e4: bd10 pop {r4, pc} + SUBGRF_CalibrateImage( frequency ); + 80162e6: f7ff ff09 bl 80160fc <SUBGRF_CalibrateImage> + ImageCalibrated = true; + 80162ea: 4b02 ldr r3, [pc, #8] ; (80162f4 <SUBGRF_SetRfFrequency+0x50>) + 80162ec: 2201 movs r2, #1 + 80162ee: 701a strb r2, [r3, #0] + 80162f0: e7de b.n 80162b0 <SUBGRF_SetRfFrequency+0xc> + 80162f2: bf00 nop + 80162f4: 200027c8 .word 0x200027c8 + 80162f8: 01e84800 .word 0x01e84800 + +080162fc <SUBGRF_SetPacketType>: +{ + 80162fc: b500 push {lr} + 80162fe: b083 sub sp, #12 + 8016300: f88d 0007 strb.w r0, [sp, #7] + PacketType = packetType; + 8016304: b2c3 uxtb r3, r0 + 8016306: 4a09 ldr r2, [pc, #36] ; (801632c <SUBGRF_SetPacketType+0x30>) + 8016308: 7013 strb r3, [r2, #0] + if( packetType == PACKET_TYPE_GFSK ) + 801630a: b143 cbz r3, 801631e <SUBGRF_SetPacketType+0x22> + SUBGRF_WriteCommand( RADIO_SET_PACKETTYPE, ( uint8_t* )&packetType, 1 ); + 801630c: 2201 movs r2, #1 + 801630e: f10d 0107 add.w r1, sp, #7 + 8016312: 208a movs r0, #138 ; 0x8a + 8016314: f7ff fd74 bl 8015e00 <SUBGRF_WriteCommand> +} + 8016318: b003 add sp, #12 + 801631a: f85d fb04 ldr.w pc, [sp], #4 + SUBGRF_WriteRegister( REG_BIT_SYNC, 0x00 ); + 801631e: 2100 movs r1, #0 + 8016320: f240 60ac movw r0, #1708 ; 0x6ac + 8016324: f7ff fca6 bl 8015c74 <SUBGRF_WriteRegister> + 8016328: e7f0 b.n 801630c <SUBGRF_SetPacketType+0x10> + 801632a: bf00 nop + 801632c: 200027cb .word 0x200027cb + +08016330 <SUBGRF_SetTxParams>: +{ + 8016330: b570 push {r4, r5, r6, lr} + 8016332: b082 sub sp, #8 + 8016334: 460c mov r4, r1 + 8016336: 4616 mov r6, r2 + if (paSelect == RFO_LP) + 8016338: 2801 cmp r0, #1 + 801633a: d035 beq.n 80163a8 <SUBGRF_SetTxParams+0x78> + SUBGRF_WriteRegister(REG_TX_CLAMP, SUBGRF_ReadRegister(REG_TX_CLAMP) | (0x0F << 1)); + 801633c: f640 00d8 movw r0, #2264 ; 0x8d8 + 8016340: f7ff fca8 bl 8015c94 <SUBGRF_ReadRegister> + 8016344: f040 011e orr.w r1, r0, #30 + 8016348: b2c9 uxtb r1, r1 + 801634a: f640 00d8 movw r0, #2264 ; 0x8d8 + 801634e: f7ff fc91 bl 8015c74 <SUBGRF_WriteRegister> + max_power = RBI_GetRFOMaxPowerConfig(RBI_RFO_HP_MAXPOWER); + 8016352: 2001 movs r0, #1 + 8016354: f7ee fcb8 bl 8004cc8 <RBI_GetRFOMaxPowerConfig> + 8016358: 4605 mov r5, r0 + if (power > max_power) + 801635a: 4284 cmp r4, r0 + 801635c: dd00 ble.n 8016360 <SUBGRF_SetTxParams+0x30> + power = max_power; + 801635e: b244 sxtb r4, r0 + if (max_power == 20) + 8016360: 2d14 cmp r5, #20 + 8016362: d054 beq.n 801640e <SUBGRF_SetTxParams+0xde> + else if (max_power == 17) + 8016364: 2d11 cmp r5, #17 + 8016366: d05c beq.n 8016422 <SUBGRF_SetTxParams+0xf2> + else if (max_power == 14) + 8016368: 2d0e cmp r5, #14 + 801636a: d064 beq.n 8016436 <SUBGRF_SetTxParams+0x106> + SUBGRF_SetPaConfig(0x04, 0x07, 0x00, 0x01); + 801636c: 2301 movs r3, #1 + 801636e: 2200 movs r2, #0 + 8016370: 2107 movs r1, #7 + 8016372: 2004 movs r0, #4 + 8016374: f7ff ff0e bl 8016194 <SUBGRF_SetPaConfig> + power = 0x16 - (max_power - power); + 8016378: 1b64 subs r4, r4, r5 + 801637a: 3416 adds r4, #22 + 801637c: b265 sxtb r5, r4 + if (power < -9) + 801637e: f115 0f09 cmn.w r5, #9 + 8016382: da01 bge.n 8016388 <SUBGRF_SetTxParams+0x58> + power = -9; + 8016384: f06f 0508 mvn.w r5, #8 + SUBGRF_WriteRegister(REG_OCP, 0x38); /*current max 160mA for the whole device*/ + 8016388: 2138 movs r1, #56 ; 0x38 + 801638a: f640 00e7 movw r0, #2279 ; 0x8e7 + 801638e: f7ff fc71 bl 8015c74 <SUBGRF_WriteRegister> + buf[0] = power; + 8016392: f88d 5004 strb.w r5, [sp, #4] + buf[1] = (uint8_t)rampTime; + 8016396: f88d 6005 strb.w r6, [sp, #5] + SUBGRF_WriteCommand(RADIO_SET_TXPARAMS, buf, 2); + 801639a: 2202 movs r2, #2 + 801639c: a901 add r1, sp, #4 + 801639e: 208e movs r0, #142 ; 0x8e + 80163a0: f7ff fd2e bl 8015e00 <SUBGRF_WriteCommand> +} + 80163a4: b002 add sp, #8 + 80163a6: bd70 pop {r4, r5, r6, pc} + max_power = RBI_GetRFOMaxPowerConfig(RBI_RFO_LP_MAXPOWER); + 80163a8: 2000 movs r0, #0 + 80163aa: f7ee fc8d bl 8004cc8 <RBI_GetRFOMaxPowerConfig> + 80163ae: 4605 mov r5, r0 + if (power > max_power) + 80163b0: 4284 cmp r4, r0 + 80163b2: dd00 ble.n 80163b6 <SUBGRF_SetTxParams+0x86> + power = max_power; + 80163b4: b244 sxtb r4, r0 + if (max_power == 14) + 80163b6: 2d0e cmp r5, #14 + 80163b8: d015 beq.n 80163e6 <SUBGRF_SetTxParams+0xb6> + else if (max_power == 10) + 80163ba: 2d0a cmp r5, #10 + 80163bc: d01d beq.n 80163fa <SUBGRF_SetTxParams+0xca> + SUBGRF_SetPaConfig(0x07, 0x00, 0x01, 0x01); + 80163be: 2301 movs r3, #1 + 80163c0: 461a mov r2, r3 + 80163c2: 2100 movs r1, #0 + 80163c4: 2007 movs r0, #7 + 80163c6: f7ff fee5 bl 8016194 <SUBGRF_SetPaConfig> + power = 0x0E - (max_power - power); + 80163ca: 1b65 subs r5, r4, r5 + 80163cc: 350e adds r5, #14 + 80163ce: b26d sxtb r5, r5 + if (power < -17) + 80163d0: f115 0f11 cmn.w r5, #17 + 80163d4: da01 bge.n 80163da <SUBGRF_SetTxParams+0xaa> + power = -17; + 80163d6: f06f 0510 mvn.w r5, #16 + SUBGRF_WriteRegister(REG_OCP, 0x18); /* current max is 80 mA for the whole device*/ + 80163da: 2118 movs r1, #24 + 80163dc: f640 00e7 movw r0, #2279 ; 0x8e7 + 80163e0: f7ff fc48 bl 8015c74 <SUBGRF_WriteRegister> + 80163e4: e7d5 b.n 8016392 <SUBGRF_SetTxParams+0x62> + SUBGRF_SetPaConfig(0x04, 0x00, 0x01, 0x01); + 80163e6: 2301 movs r3, #1 + 80163e8: 461a mov r2, r3 + 80163ea: 2100 movs r1, #0 + 80163ec: 2004 movs r0, #4 + 80163ee: f7ff fed1 bl 8016194 <SUBGRF_SetPaConfig> + power = 0x0E - (max_power - power); + 80163f2: 1b65 subs r5, r4, r5 + 80163f4: 350e adds r5, #14 + 80163f6: b26d sxtb r5, r5 + 80163f8: e7ea b.n 80163d0 <SUBGRF_SetTxParams+0xa0> + SUBGRF_SetPaConfig(0x01, 0x00, 0x01, 0x01); + 80163fa: 2301 movs r3, #1 + 80163fc: 461a mov r2, r3 + 80163fe: 2100 movs r1, #0 + 8016400: 4618 mov r0, r3 + 8016402: f7ff fec7 bl 8016194 <SUBGRF_SetPaConfig> + power = 0x0D - (max_power - power); + 8016406: 1b65 subs r5, r4, r5 + 8016408: 350d adds r5, #13 + 801640a: b26d sxtb r5, r5 + 801640c: e7e0 b.n 80163d0 <SUBGRF_SetTxParams+0xa0> + SUBGRF_SetPaConfig(0x03, 0x05, 0x00, 0x01); + 801640e: 2301 movs r3, #1 + 8016410: 2200 movs r2, #0 + 8016412: 2105 movs r1, #5 + 8016414: 2003 movs r0, #3 + 8016416: f7ff febd bl 8016194 <SUBGRF_SetPaConfig> + power = 0x16 - (max_power - power); + 801641a: 1b65 subs r5, r4, r5 + 801641c: 3516 adds r5, #22 + 801641e: b26d sxtb r5, r5 + 8016420: e7ad b.n 801637e <SUBGRF_SetTxParams+0x4e> + SUBGRF_SetPaConfig(0x02, 0x03, 0x00, 0x01); + 8016422: 2301 movs r3, #1 + 8016424: 2200 movs r2, #0 + 8016426: 2103 movs r1, #3 + 8016428: 2002 movs r0, #2 + 801642a: f7ff feb3 bl 8016194 <SUBGRF_SetPaConfig> + power = 0x16 - (max_power - power); + 801642e: 1b65 subs r5, r4, r5 + 8016430: 3516 adds r5, #22 + 8016432: b26d sxtb r5, r5 + 8016434: e7a3 b.n 801637e <SUBGRF_SetTxParams+0x4e> + SUBGRF_SetPaConfig(0x02, 0x02, 0x00, 0x01); + 8016436: 2301 movs r3, #1 + 8016438: 2200 movs r2, #0 + 801643a: 2102 movs r1, #2 + 801643c: 4608 mov r0, r1 + 801643e: f7ff fea9 bl 8016194 <SUBGRF_SetPaConfig> + power = 0x0E - (max_power - power); + 8016442: 1b65 subs r5, r4, r5 + 8016444: 350e adds r5, #14 + 8016446: b26d sxtb r5, r5 + 8016448: e799 b.n 801637e <SUBGRF_SetTxParams+0x4e> + ... + +0801644c <SUBGRF_SetModulationParams>: +{ + 801644c: b510 push {r4, lr} + 801644e: b082 sub sp, #8 + 8016450: 4604 mov r4, r0 + uint8_t buf[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + 8016452: 4b3e ldr r3, [pc, #248] ; (801654c <SUBGRF_SetModulationParams+0x100>) + 8016454: e893 0003 ldmia.w r3, {r0, r1} + 8016458: ab02 add r3, sp, #8 + 801645a: e903 0003 stmdb r3, {r0, r1} + if( PacketType != modulationParams->PacketType ) + 801645e: 7820 ldrb r0, [r4, #0] + 8016460: 4b3b ldr r3, [pc, #236] ; (8016550 <SUBGRF_SetModulationParams+0x104>) + 8016462: 781b ldrb r3, [r3, #0] + 8016464: 4298 cmp r0, r3 + 8016466: d106 bne.n 8016476 <SUBGRF_SetModulationParams+0x2a> + switch( modulationParams->PacketType ) + 8016468: 7823 ldrb r3, [r4, #0] + 801646a: 2b03 cmp r3, #3 + 801646c: d82c bhi.n 80164c8 <SUBGRF_SetModulationParams+0x7c> + 801646e: e8df f003 tbb [pc, r3] + 8016472: 4205 .short 0x4205 + 8016474: 542d .short 0x542d + SUBGRF_SetPacketType( modulationParams->PacketType ); + 8016476: f7ff ff41 bl 80162fc <SUBGRF_SetPacketType> + 801647a: e7f5 b.n 8016468 <SUBGRF_SetModulationParams+0x1c> + tempVal = ( uint32_t )(( 32 * XTAL_FREQ ) / modulationParams->Params.Gfsk.BitRate ); + 801647c: 6862 ldr r2, [r4, #4] + 801647e: 4b35 ldr r3, [pc, #212] ; (8016554 <SUBGRF_SetModulationParams+0x108>) + 8016480: fbb3 f3f2 udiv r3, r3, r2 + buf[0] = ( tempVal >> 16 ) & 0xFF; + 8016484: 0c1a lsrs r2, r3, #16 + 8016486: f88d 2000 strb.w r2, [sp] + buf[1] = ( tempVal >> 8 ) & 0xFF; + 801648a: 0a1a lsrs r2, r3, #8 + 801648c: f88d 2001 strb.w r2, [sp, #1] + buf[2] = tempVal & 0xFF; + 8016490: f88d 3002 strb.w r3, [sp, #2] + buf[3] = modulationParams->Params.Gfsk.ModulationShaping; + 8016494: 7b23 ldrb r3, [r4, #12] + 8016496: f88d 3003 strb.w r3, [sp, #3] + buf[4] = modulationParams->Params.Gfsk.Bandwidth; + 801649a: 7b63 ldrb r3, [r4, #13] + 801649c: f88d 3004 strb.w r3, [sp, #4] + SX_FREQ_TO_CHANNEL(tempVal, modulationParams->Params.Gfsk.Fdev); + 80164a0: 68a1 ldr r1, [r4, #8] + 80164a2: 4a2d ldr r2, [pc, #180] ; (8016558 <SUBGRF_SetModulationParams+0x10c>) + 80164a4: 2300 movs r3, #0 + 80164a6: 0648 lsls r0, r1, #25 + 80164a8: 09c9 lsrs r1, r1, #7 + 80164aa: f7eb fb31 bl 8001b10 <__aeabi_uldivmod> + buf[5] = ( tempVal >> 16 ) & 0xFF; + 80164ae: 0c03 lsrs r3, r0, #16 + 80164b0: f88d 3005 strb.w r3, [sp, #5] + buf[6] = ( tempVal >> 8 ) & 0xFF; + 80164b4: 0a03 lsrs r3, r0, #8 + 80164b6: f88d 3006 strb.w r3, [sp, #6] + buf[7] = ( tempVal& 0xFF ); + 80164ba: f88d 0007 strb.w r0, [sp, #7] + SUBGRF_WriteCommand( RADIO_SET_MODULATIONPARAMS, buf, n ); + 80164be: 2208 movs r2, #8 + 80164c0: 4669 mov r1, sp + 80164c2: 208b movs r0, #139 ; 0x8b + 80164c4: f7ff fc9c bl 8015e00 <SUBGRF_WriteCommand> +} + 80164c8: b002 add sp, #8 + 80164ca: bd10 pop {r4, pc} + tempVal = ( uint32_t ) (( 32 * XTAL_FREQ) / modulationParams->Params.Bpsk.BitRate ); + 80164cc: 6922 ldr r2, [r4, #16] + 80164ce: 4b21 ldr r3, [pc, #132] ; (8016554 <SUBGRF_SetModulationParams+0x108>) + 80164d0: fbb3 f3f2 udiv r3, r3, r2 + buf[0] = ( tempVal >> 16 ) & 0xFF; + 80164d4: 0c1a lsrs r2, r3, #16 + 80164d6: f88d 2000 strb.w r2, [sp] + buf[1] = ( tempVal >> 8 ) & 0xFF; + 80164da: 0a1a lsrs r2, r3, #8 + 80164dc: f88d 2001 strb.w r2, [sp, #1] + buf[2] = tempVal & 0xFF; + 80164e0: f88d 3002 strb.w r3, [sp, #2] + buf[3] = modulationParams->Params.Bpsk.ModulationShaping; + 80164e4: 7d23 ldrb r3, [r4, #20] + 80164e6: f88d 3003 strb.w r3, [sp, #3] + SUBGRF_WriteCommand( RADIO_SET_MODULATIONPARAMS, buf, n ); + 80164ea: 2204 movs r2, #4 + 80164ec: 4669 mov r1, sp + 80164ee: 208b movs r0, #139 ; 0x8b + 80164f0: f7ff fc86 bl 8015e00 <SUBGRF_WriteCommand> + break; + 80164f4: e7e8 b.n 80164c8 <SUBGRF_SetModulationParams+0x7c> + buf[0] = modulationParams->Params.LoRa.SpreadingFactor; + 80164f6: 7e23 ldrb r3, [r4, #24] + 80164f8: f88d 3000 strb.w r3, [sp] + buf[1] = modulationParams->Params.LoRa.Bandwidth; + 80164fc: 7e63 ldrb r3, [r4, #25] + 80164fe: f88d 3001 strb.w r3, [sp, #1] + buf[2] = modulationParams->Params.LoRa.CodingRate; + 8016502: 7ea3 ldrb r3, [r4, #26] + 8016504: f88d 3002 strb.w r3, [sp, #2] + buf[3] = modulationParams->Params.LoRa.LowDatarateOptimize; + 8016508: 7ee3 ldrb r3, [r4, #27] + 801650a: f88d 3003 strb.w r3, [sp, #3] + SUBGRF_WriteCommand( RADIO_SET_MODULATIONPARAMS, buf, n ); + 801650e: 2204 movs r2, #4 + 8016510: 4669 mov r1, sp + 8016512: 208b movs r0, #139 ; 0x8b + 8016514: f7ff fc74 bl 8015e00 <SUBGRF_WriteCommand> + break; + 8016518: e7d6 b.n 80164c8 <SUBGRF_SetModulationParams+0x7c> + tempVal = ( uint32_t )(( 32 *XTAL_FREQ) / modulationParams->Params.Gfsk.BitRate ); + 801651a: 6862 ldr r2, [r4, #4] + 801651c: 4b0d ldr r3, [pc, #52] ; (8016554 <SUBGRF_SetModulationParams+0x108>) + 801651e: fbb3 f3f2 udiv r3, r3, r2 + buf[0] = ( tempVal >> 16 ) & 0xFF; + 8016522: 0c1a lsrs r2, r3, #16 + 8016524: f88d 2000 strb.w r2, [sp] + buf[1] = ( tempVal >> 8 ) & 0xFF; + 8016528: 0a1a lsrs r2, r3, #8 + 801652a: f88d 2001 strb.w r2, [sp, #1] + buf[2] = tempVal & 0xFF; + 801652e: f88d 3002 strb.w r3, [sp, #2] + buf[3] = modulationParams->Params.Gfsk.ModulationShaping; + 8016532: 7b23 ldrb r3, [r4, #12] + 8016534: f88d 3003 strb.w r3, [sp, #3] + buf[4] = modulationParams->Params.Gfsk.Bandwidth; + 8016538: 7b63 ldrb r3, [r4, #13] + 801653a: f88d 3004 strb.w r3, [sp, #4] + SUBGRF_WriteCommand( RADIO_SET_MODULATIONPARAMS, buf, n ); + 801653e: 2205 movs r2, #5 + 8016540: 4669 mov r1, sp + 8016542: 208b movs r0, #139 ; 0x8b + 8016544: f7ff fc5c bl 8015e00 <SUBGRF_WriteCommand> +} + 8016548: e7be b.n 80164c8 <SUBGRF_SetModulationParams+0x7c> + 801654a: bf00 nop + 801654c: 080178b4 .word 0x080178b4 + 8016550: 200027cb .word 0x200027cb + 8016554: 3d090000 .word 0x3d090000 + 8016558: 01e84800 .word 0x01e84800 + +0801655c <SUBGRF_SetPacketParams>: +{ + 801655c: b510 push {r4, lr} + 801655e: b084 sub sp, #16 + 8016560: 4604 mov r4, r0 + uint8_t buf[9] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + 8016562: ab01 add r3, sp, #4 + 8016564: 4a33 ldr r2, [pc, #204] ; (8016634 <SUBGRF_SetPacketParams+0xd8>) + 8016566: ca07 ldmia r2, {r0, r1, r2} + 8016568: c303 stmia r3!, {r0, r1} + 801656a: 701a strb r2, [r3, #0] + if( PacketType != packetParams->PacketType ) + 801656c: 7820 ldrb r0, [r4, #0] + 801656e: 4b32 ldr r3, [pc, #200] ; (8016638 <SUBGRF_SetPacketParams+0xdc>) + 8016570: 781b ldrb r3, [r3, #0] + 8016572: 4298 cmp r0, r3 + 8016574: d106 bne.n 8016584 <SUBGRF_SetPacketParams+0x28> + switch( packetParams->PacketType ) + 8016576: 7823 ldrb r3, [r4, #0] + 8016578: 2b03 cmp r3, #3 + 801657a: d82a bhi.n 80165d2 <SUBGRF_SetPacketParams+0x76> + 801657c: e8df f003 tbb [pc, r3] + 8016580: 053f4405 .word 0x053f4405 + SUBGRF_SetPacketType( packetParams->PacketType ); + 8016584: f7ff feba bl 80162fc <SUBGRF_SetPacketType> + 8016588: e7f5 b.n 8016576 <SUBGRF_SetPacketParams+0x1a> + if( packetParams->Params.Gfsk.CrcLength == RADIO_CRC_2_BYTES_IBM ) + 801658a: 7a63 ldrb r3, [r4, #9] + 801658c: 2bf1 cmp r3, #241 ; 0xf1 + 801658e: d022 beq.n 80165d6 <SUBGRF_SetPacketParams+0x7a> + else if( packetParams->Params.Gfsk.CrcLength == RADIO_CRC_2_BYTES_CCIT ) + 8016590: 2bf2 cmp r3, #242 ; 0xf2 + 8016592: d02a beq.n 80165ea <SUBGRF_SetPacketParams+0x8e> + buf[0] = ( packetParams->Params.Gfsk.PreambleLength >> 8 ) & 0xFF; + 8016594: 8862 ldrh r2, [r4, #2] + 8016596: 0a11 lsrs r1, r2, #8 + 8016598: f88d 1004 strb.w r1, [sp, #4] + buf[1] = packetParams->Params.Gfsk.PreambleLength; + 801659c: f88d 2005 strb.w r2, [sp, #5] + buf[2] = packetParams->Params.Gfsk.PreambleMinDetect; + 80165a0: 7922 ldrb r2, [r4, #4] + 80165a2: f88d 2006 strb.w r2, [sp, #6] + buf[3] = ( packetParams->Params.Gfsk.SyncWordLength /*<< 3*/ ); // convert from byte to bit + 80165a6: 7962 ldrb r2, [r4, #5] + 80165a8: f88d 2007 strb.w r2, [sp, #7] + buf[4] = packetParams->Params.Gfsk.AddrComp; + 80165ac: 79a2 ldrb r2, [r4, #6] + 80165ae: f88d 2008 strb.w r2, [sp, #8] + buf[5] = packetParams->Params.Gfsk.HeaderType; + 80165b2: 79e2 ldrb r2, [r4, #7] + 80165b4: f88d 2009 strb.w r2, [sp, #9] + buf[6] = packetParams->Params.Gfsk.PayloadLength; + 80165b8: 7a22 ldrb r2, [r4, #8] + 80165ba: f88d 200a strb.w r2, [sp, #10] + buf[7] = crcVal; + 80165be: f88d 300b strb.w r3, [sp, #11] + buf[8] = packetParams->Params.Gfsk.DcFree; + 80165c2: 7aa3 ldrb r3, [r4, #10] + 80165c4: f88d 300c strb.w r3, [sp, #12] + n = 9; + 80165c8: 2209 movs r2, #9 + SUBGRF_WriteCommand( RADIO_SET_PACKETPARAMS, buf, n ); + 80165ca: a901 add r1, sp, #4 + 80165cc: 208c movs r0, #140 ; 0x8c + 80165ce: f7ff fc17 bl 8015e00 <SUBGRF_WriteCommand> +} + 80165d2: b004 add sp, #16 + 80165d4: bd10 pop {r4, pc} + SUBGRF_SetCrcSeed( CRC_IBM_SEED ); + 80165d6: f64f 70ff movw r0, #65535 ; 0xffff + 80165da: f7ff fbb0 bl 8015d3e <SUBGRF_SetCrcSeed> + SUBGRF_SetCrcPolynomial( CRC_POLYNOMIAL_IBM ); + 80165de: f248 0005 movw r0, #32773 ; 0x8005 + 80165e2: f7ff fbc0 bl 8015d66 <SUBGRF_SetCrcPolynomial> + crcVal = RADIO_CRC_2_BYTES; + 80165e6: 2302 movs r3, #2 + 80165e8: e7d4 b.n 8016594 <SUBGRF_SetPacketParams+0x38> + SUBGRF_SetCrcSeed( CRC_CCITT_SEED ); + 80165ea: f641 500f movw r0, #7439 ; 0x1d0f + 80165ee: f7ff fba6 bl 8015d3e <SUBGRF_SetCrcSeed> + SUBGRF_SetCrcPolynomial( CRC_POLYNOMIAL_CCITT ); + 80165f2: f241 0021 movw r0, #4129 ; 0x1021 + 80165f6: f7ff fbb6 bl 8015d66 <SUBGRF_SetCrcPolynomial> + crcVal = RADIO_CRC_2_BYTES_INV; + 80165fa: 2306 movs r3, #6 + 80165fc: e7ca b.n 8016594 <SUBGRF_SetPacketParams+0x38> + buf[0] = packetParams->Params.Bpsk.PayloadLength; + 80165fe: 7b23 ldrb r3, [r4, #12] + 8016600: f88d 3004 strb.w r3, [sp, #4] + n = 1; + 8016604: 2201 movs r2, #1 + break; + 8016606: e7e0 b.n 80165ca <SUBGRF_SetPacketParams+0x6e> + buf[0] = ( packetParams->Params.LoRa.PreambleLength >> 8 ) & 0xFF; + 8016608: 89e3 ldrh r3, [r4, #14] + 801660a: 0a1a lsrs r2, r3, #8 + 801660c: f88d 2004 strb.w r2, [sp, #4] + buf[1] = packetParams->Params.LoRa.PreambleLength; + 8016610: f88d 3005 strb.w r3, [sp, #5] + buf[2] = LoRaHeaderType = packetParams->Params.LoRa.HeaderType; + 8016614: 7c23 ldrb r3, [r4, #16] + 8016616: 4a09 ldr r2, [pc, #36] ; (801663c <SUBGRF_SetPacketParams+0xe0>) + 8016618: 7013 strb r3, [r2, #0] + 801661a: f88d 3006 strb.w r3, [sp, #6] + buf[3] = packetParams->Params.LoRa.PayloadLength; + 801661e: 7c63 ldrb r3, [r4, #17] + 8016620: f88d 3007 strb.w r3, [sp, #7] + buf[4] = packetParams->Params.LoRa.CrcMode; + 8016624: 7ca3 ldrb r3, [r4, #18] + 8016626: f88d 3008 strb.w r3, [sp, #8] + buf[5] = packetParams->Params.LoRa.InvertIQ; + 801662a: 7ce3 ldrb r3, [r4, #19] + 801662c: f88d 3009 strb.w r3, [sp, #9] + n = 6; + 8016630: 2206 movs r2, #6 + break; + 8016632: e7ca b.n 80165ca <SUBGRF_SetPacketParams+0x6e> + 8016634: 080178bc .word 0x080178bc + 8016638: 200027cb .word 0x200027cb + 801663c: 200027c9 .word 0x200027c9 + +08016640 <SUBGRF_SetBufferBaseAddress>: +{ + 8016640: b500 push {lr} + 8016642: b083 sub sp, #12 + buf[0] = txBaseAddress; + 8016644: f88d 0004 strb.w r0, [sp, #4] + buf[1] = rxBaseAddress; + 8016648: f88d 1005 strb.w r1, [sp, #5] + SUBGRF_WriteCommand( RADIO_SET_BUFFERBASEADDRESS, buf, 2 ); + 801664c: 2202 movs r2, #2 + 801664e: a901 add r1, sp, #4 + 8016650: 208f movs r0, #143 ; 0x8f + 8016652: f7ff fbd5 bl 8015e00 <SUBGRF_WriteCommand> +} + 8016656: b003 add sp, #12 + 8016658: f85d fb04 ldr.w pc, [sp], #4 + +0801665c <SUBGRF_ReadCommand>: +{ + 801665c: b510 push {r4, lr} + 801665e: 4613 mov r3, r2 + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016660: f3ef 8410 mrs r4, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016664: b672 cpsid i + HAL_SUBGHZ_ExecGetCmd( &hsubghz, Command, pBuffer, Size ); + 8016666: 460a mov r2, r1 + 8016668: 4601 mov r1, r0 + 801666a: 4803 ldr r0, [pc, #12] ; (8016678 <SUBGRF_ReadCommand+0x1c>) + 801666c: f7f4 fffe bl 800b66c <HAL_SUBGHZ_ExecGetCmd> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016670: f384 8810 msr PRIMASK, r4 +} + 8016674: bd10 pop {r4, pc} + 8016676: bf00 nop + 8016678: 20000acc .word 0x20000acc + +0801667c <SUBGRF_GetRssiInst>: +{ + 801667c: b500 push {lr} + 801667e: b083 sub sp, #12 + SUBGRF_ReadCommand( RADIO_GET_RSSIINST, buf, 1 ); + 8016680: 2201 movs r2, #1 + 8016682: a901 add r1, sp, #4 + 8016684: 2015 movs r0, #21 + 8016686: f7ff ffe9 bl 801665c <SUBGRF_ReadCommand> + rssi = -buf[0] >> 1; + 801668a: f89d 0004 ldrb.w r0, [sp, #4] + 801668e: 4240 negs r0, r0 +} + 8016690: 1040 asrs r0, r0, #1 + 8016692: b003 add sp, #12 + 8016694: f85d fb04 ldr.w pc, [sp], #4 + +08016698 <SUBGRF_GetRxBufferStatus>: +{ + 8016698: b530 push {r4, r5, lr} + 801669a: b083 sub sp, #12 + 801669c: 4605 mov r5, r0 + 801669e: 460c mov r4, r1 + SUBGRF_ReadCommand( RADIO_GET_RXBUFFERSTATUS, status, 2 ); + 80166a0: 2202 movs r2, #2 + 80166a2: a901 add r1, sp, #4 + 80166a4: 2013 movs r0, #19 + 80166a6: f7ff ffd9 bl 801665c <SUBGRF_ReadCommand> + if( ( SUBGRF_GetPacketType( ) == PACKET_TYPE_LORA ) && ( LoRaHeaderType == LORA_PACKET_FIXED_LENGTH ) ) + 80166aa: f7ff fadd bl 8015c68 <SUBGRF_GetPacketType> + 80166ae: 2801 cmp r0, #1 + 80166b0: d007 beq.n 80166c2 <SUBGRF_GetRxBufferStatus+0x2a> + *payloadLength = status[0]; + 80166b2: f89d 3004 ldrb.w r3, [sp, #4] + 80166b6: 702b strb r3, [r5, #0] + *rxStartBufferPointer = status[1]; + 80166b8: f89d 3005 ldrb.w r3, [sp, #5] + 80166bc: 7023 strb r3, [r4, #0] +} + 80166be: b003 add sp, #12 + 80166c0: bd30 pop {r4, r5, pc} + if( ( SUBGRF_GetPacketType( ) == PACKET_TYPE_LORA ) && ( LoRaHeaderType == LORA_PACKET_FIXED_LENGTH ) ) + 80166c2: 4b05 ldr r3, [pc, #20] ; (80166d8 <SUBGRF_GetRxBufferStatus+0x40>) + 80166c4: 781b ldrb r3, [r3, #0] + 80166c6: b2db uxtb r3, r3 + 80166c8: 2b01 cmp r3, #1 + 80166ca: d1f2 bne.n 80166b2 <SUBGRF_GetRxBufferStatus+0x1a> + *payloadLength = SUBGRF_ReadRegister( REG_LR_PAYLOADLENGTH ); + 80166cc: f240 7002 movw r0, #1794 ; 0x702 + 80166d0: f7ff fae0 bl 8015c94 <SUBGRF_ReadRegister> + 80166d4: 7028 strb r0, [r5, #0] + 80166d6: e7ef b.n 80166b8 <SUBGRF_GetRxBufferStatus+0x20> + 80166d8: 200027c9 .word 0x200027c9 + +080166dc <SUBGRF_GetPayload>: +{ + 80166dc: b570 push {r4, r5, r6, lr} + 80166de: b082 sub sp, #8 + 80166e0: 4606 mov r6, r0 + 80166e2: 460c mov r4, r1 + 80166e4: 4615 mov r5, r2 + uint8_t offset = 0; + 80166e6: 2300 movs r3, #0 + 80166e8: f88d 3007 strb.w r3, [sp, #7] + SUBGRF_GetRxBufferStatus( size, &offset ); + 80166ec: f10d 0107 add.w r1, sp, #7 + 80166f0: 4620 mov r0, r4 + 80166f2: f7ff ffd1 bl 8016698 <SUBGRF_GetRxBufferStatus> + if( *size > maxSize ) + 80166f6: 7822 ldrb r2, [r4, #0] + 80166f8: 42aa cmp r2, r5 + 80166fa: d902 bls.n 8016702 <SUBGRF_GetPayload+0x26> + return 1; + 80166fc: 2001 movs r0, #1 +} + 80166fe: b002 add sp, #8 + 8016700: bd70 pop {r4, r5, r6, pc} + SUBGRF_ReadBuffer( offset, buffer, *size ); + 8016702: 4631 mov r1, r6 + 8016704: f89d 0007 ldrb.w r0, [sp, #7] + 8016708: f7ff fb6a bl 8015de0 <SUBGRF_ReadBuffer> + return 0; + 801670c: 2000 movs r0, #0 + 801670e: e7f6 b.n 80166fe <SUBGRF_GetPayload+0x22> + +08016710 <SUBGRF_GetPacketStatus>: +{ + 8016710: b510 push {r4, lr} + 8016712: b082 sub sp, #8 + 8016714: 4604 mov r4, r0 + SUBGRF_ReadCommand( RADIO_GET_PACKETSTATUS, status, 3 ); + 8016716: 2203 movs r2, #3 + 8016718: a901 add r1, sp, #4 + 801671a: 2014 movs r0, #20 + 801671c: f7ff ff9e bl 801665c <SUBGRF_ReadCommand> + pktStatus->packetType = SUBGRF_GetPacketType( ); + 8016720: f7ff faa2 bl 8015c68 <SUBGRF_GetPacketType> + 8016724: 7020 strb r0, [r4, #0] + switch( pktStatus->packetType ) + 8016726: b148 cbz r0, 801673c <SUBGRF_GetPacketStatus+0x2c> + 8016728: 2801 cmp r0, #1 + 801672a: d018 beq.n 801675e <SUBGRF_GetPacketStatus+0x4e> + RADIO_MEMSET8( pktStatus, 0, sizeof( PacketStatus_t ) ); + 801672c: 2214 movs r2, #20 + 801672e: 2100 movs r1, #0 + 8016730: 4620 mov r0, r4 + 8016732: f000 fb22 bl 8016d7a <UTIL_MEM_set_8> + pktStatus->packetType = PACKET_TYPE_NONE; + 8016736: 230f movs r3, #15 + 8016738: 7023 strb r3, [r4, #0] +} + 801673a: e00e b.n 801675a <SUBGRF_GetPacketStatus+0x4a> + pktStatus->Params.Gfsk.RxStatus = status[0]; + 801673c: f89d 3004 ldrb.w r3, [sp, #4] + 8016740: 7123 strb r3, [r4, #4] + pktStatus->Params.Gfsk.RssiSync = -status[1] >> 1; + 8016742: f89d 3005 ldrb.w r3, [sp, #5] + 8016746: 425b negs r3, r3 + 8016748: 105b asrs r3, r3, #1 + 801674a: 71a3 strb r3, [r4, #6] + pktStatus->Params.Gfsk.RssiAvg = -status[2] >> 1; + 801674c: f89d 3006 ldrb.w r3, [sp, #6] + 8016750: 425b negs r3, r3 + 8016752: 105b asrs r3, r3, #1 + 8016754: 7163 strb r3, [r4, #5] + pktStatus->Params.Gfsk.FreqError = 0; + 8016756: 2300 movs r3, #0 + 8016758: 60a3 str r3, [r4, #8] +} + 801675a: b002 add sp, #8 + 801675c: bd10 pop {r4, pc} + pktStatus->Params.LoRa.RssiPkt = -status[0] >> 1; + 801675e: f89d 3004 ldrb.w r3, [sp, #4] + 8016762: 425b negs r3, r3 + 8016764: 105b asrs r3, r3, #1 + 8016766: 7323 strb r3, [r4, #12] + pktStatus->Params.LoRa.SnrPkt = ( ( ( int8_t )status[1] ) + 2 ) >> 2; + 8016768: f99d 3005 ldrsb.w r3, [sp, #5] + 801676c: 3302 adds r3, #2 + 801676e: 109b asrs r3, r3, #2 + 8016770: 7363 strb r3, [r4, #13] + pktStatus->Params.LoRa.SignalRssiPkt = -status[2] >> 1; + 8016772: f89d 3006 ldrb.w r3, [sp, #6] + 8016776: 425b negs r3, r3 + 8016778: 105b asrs r3, r3, #1 + 801677a: 73a3 strb r3, [r4, #14] + pktStatus->Params.LoRa.FreqError = FrequencyError; + 801677c: 4b01 ldr r3, [pc, #4] ; (8016784 <SUBGRF_GetPacketStatus+0x74>) + 801677e: 681b ldr r3, [r3, #0] + 8016780: 6123 str r3, [r4, #16] + break; + 8016782: e7ea b.n 801675a <SUBGRF_GetPacketStatus+0x4a> + 8016784: 200027c4 .word 0x200027c4 + +08016788 <SUBGRF_SetSwitch>: +{ + 8016788: b510 push {r4, lr} + if (rxtx == RFSWITCH_TX) + 801678a: 2901 cmp r1, #1 + 801678c: d003 beq.n 8016796 <SUBGRF_SetSwitch+0xe> + RBI_Switch_TypeDef state = RBI_SWITCH_RX; + 801678e: 2001 movs r0, #1 + RBI_ConfigRFSwitch(state); + 8016790: f7ee fa54 bl 8004c3c <RBI_ConfigRFSwitch> +} + 8016794: bd10 pop {r4, pc} + 8016796: 4604 mov r4, r0 + 8016798: 4608 mov r0, r1 + if (paSelect == RFO_LP) + 801679a: 2c01 cmp r4, #1 + 801679c: d003 beq.n 80167a6 <SUBGRF_SetSwitch+0x1e> + if (paSelect == RFO_HP) + 801679e: 2c02 cmp r4, #2 + 80167a0: d1f6 bne.n 8016790 <SUBGRF_SetSwitch+0x8> + state = RBI_SWITCH_RFO_HP; + 80167a2: 2003 movs r0, #3 + 80167a4: e7f4 b.n 8016790 <SUBGRF_SetSwitch+0x8> + Radio_SMPS_Set(SMPS_DRIVE_SETTING_MAX); + 80167a6: 2004 movs r0, #4 + 80167a8: f7ff fa84 bl 8015cb4 <Radio_SMPS_Set> + state = RBI_SWITCH_RFO_LP; + 80167ac: 2002 movs r0, #2 + 80167ae: e7f6 b.n 801679e <SUBGRF_SetSwitch+0x16> + +080167b0 <SUBGRF_SetRfTxPower>: +{ + 80167b0: b538 push {r3, r4, r5, lr} + 80167b2: 4604 mov r4, r0 + int32_t TxConfig = RBI_GetTxConfig(); + 80167b4: f7ee fa82 bl 8004cbc <RBI_GetTxConfig> + switch (TxConfig) + 80167b8: b148 cbz r0, 80167ce <SUBGRF_SetRfTxPower+0x1e> + 80167ba: 2802 cmp r0, #2 + 80167bc: d10d bne.n 80167da <SUBGRF_SetRfTxPower+0x2a> + paSelect = RFO_HP; + 80167be: 2502 movs r5, #2 + SUBGRF_SetTxParams( paSelect, power, RADIO_RAMP_40_US ); + 80167c0: 2202 movs r2, #2 + 80167c2: 4621 mov r1, r4 + 80167c4: 4628 mov r0, r5 + 80167c6: f7ff fdb3 bl 8016330 <SUBGRF_SetTxParams> +} + 80167ca: 4628 mov r0, r5 + 80167cc: bd38 pop {r3, r4, r5, pc} + if (power > 15) + 80167ce: 2c0f cmp r4, #15 + 80167d0: dc01 bgt.n 80167d6 <SUBGRF_SetRfTxPower+0x26> + paSelect = RFO_LP; + 80167d2: 2501 movs r5, #1 + 80167d4: e7f4 b.n 80167c0 <SUBGRF_SetRfTxPower+0x10> + paSelect = RFO_HP; + 80167d6: 2502 movs r5, #2 + 80167d8: e7f2 b.n 80167c0 <SUBGRF_SetRfTxPower+0x10> + switch (TxConfig) + 80167da: 2501 movs r5, #1 + 80167dc: e7f0 b.n 80167c0 <SUBGRF_SetRfTxPower+0x10> + +080167de <SUBGRF_GetRadioWakeUpTime>: +} + 80167de: 200a movs r0, #10 + 80167e0: 4770 bx lr + ... + +080167e4 <HAL_SUBGHZ_TxCpltCallback>: +{ + 80167e4: b508 push {r3, lr} + RadioOnDioIrqCb( IRQ_TX_DONE ); + 80167e6: 4b02 ldr r3, [pc, #8] ; (80167f0 <HAL_SUBGHZ_TxCpltCallback+0xc>) + 80167e8: 681b ldr r3, [r3, #0] + 80167ea: 2001 movs r0, #1 + 80167ec: 4798 blx r3 +} + 80167ee: bd08 pop {r3, pc} + 80167f0: 200027cc .word 0x200027cc + +080167f4 <HAL_SUBGHZ_RxCpltCallback>: +{ + 80167f4: b508 push {r3, lr} + RadioOnDioIrqCb( IRQ_RX_DONE ); + 80167f6: 4b02 ldr r3, [pc, #8] ; (8016800 <HAL_SUBGHZ_RxCpltCallback+0xc>) + 80167f8: 681b ldr r3, [r3, #0] + 80167fa: 2002 movs r0, #2 + 80167fc: 4798 blx r3 +} + 80167fe: bd08 pop {r3, pc} + 8016800: 200027cc .word 0x200027cc + +08016804 <HAL_SUBGHZ_CRCErrorCallback>: +{ + 8016804: b508 push {r3, lr} + RadioOnDioIrqCb( IRQ_CRC_ERROR); + 8016806: 4b02 ldr r3, [pc, #8] ; (8016810 <HAL_SUBGHZ_CRCErrorCallback+0xc>) + 8016808: 681b ldr r3, [r3, #0] + 801680a: 2040 movs r0, #64 ; 0x40 + 801680c: 4798 blx r3 +} + 801680e: bd08 pop {r3, pc} + 8016810: 200027cc .word 0x200027cc + +08016814 <HAL_SUBGHZ_CADStatusCallback>: +{ + 8016814: b508 push {r3, lr} + switch (cadstatus) + 8016816: b111 cbz r1, 801681e <HAL_SUBGHZ_CADStatusCallback+0xa> + 8016818: 2901 cmp r1, #1 + 801681a: d005 beq.n 8016828 <HAL_SUBGHZ_CADStatusCallback+0x14> +} + 801681c: bd08 pop {r3, pc} + RadioOnDioIrqCb( IRQ_CAD_CLEAR); + 801681e: 4b05 ldr r3, [pc, #20] ; (8016834 <HAL_SUBGHZ_CADStatusCallback+0x20>) + 8016820: 681b ldr r3, [r3, #0] + 8016822: 2080 movs r0, #128 ; 0x80 + 8016824: 4798 blx r3 + break; + 8016826: e7f9 b.n 801681c <HAL_SUBGHZ_CADStatusCallback+0x8> + RadioOnDioIrqCb( IRQ_CAD_DETECTED); + 8016828: 4b02 ldr r3, [pc, #8] ; (8016834 <HAL_SUBGHZ_CADStatusCallback+0x20>) + 801682a: 681b ldr r3, [r3, #0] + 801682c: f44f 7080 mov.w r0, #256 ; 0x100 + 8016830: 4798 blx r3 +} + 8016832: e7f3 b.n 801681c <HAL_SUBGHZ_CADStatusCallback+0x8> + 8016834: 200027cc .word 0x200027cc + +08016838 <HAL_SUBGHZ_RxTxTimeoutCallback>: +{ + 8016838: b508 push {r3, lr} + RadioOnDioIrqCb( IRQ_RX_TX_TIMEOUT ); + 801683a: 4b03 ldr r3, [pc, #12] ; (8016848 <HAL_SUBGHZ_RxTxTimeoutCallback+0x10>) + 801683c: 681b ldr r3, [r3, #0] + 801683e: f44f 7000 mov.w r0, #512 ; 0x200 + 8016842: 4798 blx r3 +} + 8016844: bd08 pop {r3, pc} + 8016846: bf00 nop + 8016848: 200027cc .word 0x200027cc + +0801684c <HAL_SUBGHZ_HeaderErrorCallback>: +{ + 801684c: b508 push {r3, lr} + RadioOnDioIrqCb( IRQ_HEADER_ERROR ); + 801684e: 4b02 ldr r3, [pc, #8] ; (8016858 <HAL_SUBGHZ_HeaderErrorCallback+0xc>) + 8016850: 681b ldr r3, [r3, #0] + 8016852: 2020 movs r0, #32 + 8016854: 4798 blx r3 +} + 8016856: bd08 pop {r3, pc} + 8016858: 200027cc .word 0x200027cc + +0801685c <HAL_SUBGHZ_PreambleDetectedCallback>: +{ + 801685c: b508 push {r3, lr} + RadioOnDioIrqCb( IRQ_PREAMBLE_DETECTED ); + 801685e: 4b02 ldr r3, [pc, #8] ; (8016868 <HAL_SUBGHZ_PreambleDetectedCallback+0xc>) + 8016860: 681b ldr r3, [r3, #0] + 8016862: 2004 movs r0, #4 + 8016864: 4798 blx r3 +} + 8016866: bd08 pop {r3, pc} + 8016868: 200027cc .word 0x200027cc + +0801686c <HAL_SUBGHZ_SyncWordValidCallback>: +{ + 801686c: b508 push {r3, lr} + RadioOnDioIrqCb( IRQ_SYNCWORD_VALID ); + 801686e: 4b02 ldr r3, [pc, #8] ; (8016878 <HAL_SUBGHZ_SyncWordValidCallback+0xc>) + 8016870: 681b ldr r3, [r3, #0] + 8016872: 2008 movs r0, #8 + 8016874: 4798 blx r3 +} + 8016876: bd08 pop {r3, pc} + 8016878: 200027cc .word 0x200027cc + +0801687c <HAL_SUBGHZ_HeaderValidCallback>: +{ + 801687c: b508 push {r3, lr} + RadioOnDioIrqCb( IRQ_HEADER_VALID ); + 801687e: 4b02 ldr r3, [pc, #8] ; (8016888 <HAL_SUBGHZ_HeaderValidCallback+0xc>) + 8016880: 681b ldr r3, [r3, #0] + 8016882: 2010 movs r0, #16 + 8016884: 4798 blx r3 +} + 8016886: bd08 pop {r3, pc} + 8016888: 200027cc .word 0x200027cc + +0801688c <HAL_SUBGHZ_LrFhssHopCallback>: +{ + 801688c: b508 push {r3, lr} + RadioOnDioIrqCb( IRQ_LR_FHSS_HOP ); + 801688e: 4b03 ldr r3, [pc, #12] ; (801689c <HAL_SUBGHZ_LrFhssHopCallback+0x10>) + 8016890: 681b ldr r3, [r3, #0] + 8016892: f44f 4080 mov.w r0, #16384 ; 0x4000 + 8016896: 4798 blx r3 +} + 8016898: bd08 pop {r3, pc} + 801689a: bf00 nop + 801689c: 200027cc .word 0x200027cc + +080168a0 <SUBGRF_GetFskBandwidthRegValue>: + +uint8_t SUBGRF_GetFskBandwidthRegValue( uint32_t bandwidth ) +{ + uint8_t i; + + if( bandwidth == 0 ) + 80168a0: 4601 mov r1, r0 + 80168a2: b188 cbz r0, 80168c8 <SUBGRF_GetFskBandwidthRegValue+0x28> + { + return( 0x1F ); + } + + for( i = 0; i < ( sizeof( FskBandwidths ) / sizeof( FskBandwidth_t ) ); i++ ) + 80168a4: 2300 movs r3, #0 + 80168a6: 2b15 cmp r3, #21 + 80168a8: d80d bhi.n 80168c6 <SUBGRF_GetFskBandwidthRegValue+0x26> + { + if ( bandwidth < FskBandwidths[i].bandwidth ) + 80168aa: 4618 mov r0, r3 + 80168ac: 4a07 ldr r2, [pc, #28] ; (80168cc <SUBGRF_GetFskBandwidthRegValue+0x2c>) + 80168ae: f852 2033 ldr.w r2, [r2, r3, lsl #3] + 80168b2: 428a cmp r2, r1 + 80168b4: d802 bhi.n 80168bc <SUBGRF_GetFskBandwidthRegValue+0x1c> + for( i = 0; i < ( sizeof( FskBandwidths ) / sizeof( FskBandwidth_t ) ); i++ ) + 80168b6: 3301 adds r3, #1 + 80168b8: b2db uxtb r3, r3 + 80168ba: e7f4 b.n 80168a6 <SUBGRF_GetFskBandwidthRegValue+0x6> + { + return FskBandwidths[i].RegValue; + 80168bc: 4b03 ldr r3, [pc, #12] ; (80168cc <SUBGRF_GetFskBandwidthRegValue+0x2c>) + 80168be: eb03 03c0 add.w r3, r3, r0, lsl #3 + 80168c2: 7918 ldrb r0, [r3, #4] + 80168c4: 4770 bx lr + } + } + // ERROR: Value not found + while( 1 ); + 80168c6: e7fe b.n 80168c6 <SUBGRF_GetFskBandwidthRegValue+0x26> + return( 0x1F ); + 80168c8: 201f movs r0, #31 +} + 80168ca: 4770 bx lr + 80168cc: 08018d40 .word 0x08018d40 + +080168d0 <SUBGRF_GetCFO>: +void SUBGRF_GetCFO( uint32_t bitRate, int32_t *cfo) +{ + 80168d0: b570 push {r4, r5, r6, lr} + 80168d2: b082 sub sp, #8 + 80168d4: 4605 mov r5, r0 + 80168d6: 460c mov r4, r1 + uint8_t BwMant[] = {4, 8, 10, 12}; + 80168d8: 4b1d ldr r3, [pc, #116] ; (8016950 <SUBGRF_GetCFO+0x80>) + 80168da: 9301 str r3, [sp, #4] + /* read demod bandwidth: mant bit4:3, exp bits 2:0 */ + uint8_t reg = (SUBGRF_ReadRegister( SUBGHZ_BWSELR )); + 80168dc: f640 0007 movw r0, #2055 ; 0x807 + 80168e0: f7ff f9d8 bl 8015c94 <SUBGRF_ReadRegister> + uint8_t bandwidth_mant = BwMant[( reg >> 3 ) & 0x3]; + 80168e4: f3c0 03c1 ubfx r3, r0, #3, #2 + 80168e8: 3308 adds r3, #8 + 80168ea: 446b add r3, sp + 80168ec: f813 2c04 ldrb.w r2, [r3, #-4] + uint8_t bandwidth_exp = reg & 0x7; + 80168f0: f000 0307 and.w r3, r0, #7 + uint32_t cf_fs = XTAL_FREQ / ( bandwidth_mant * ( 1 << ( bandwidth_exp + 1 ))); + 80168f4: 3301 adds r3, #1 + 80168f6: fa02 f303 lsl.w r3, r2, r3 + 80168fa: 4a16 ldr r2, [pc, #88] ; (8016954 <SUBGRF_GetCFO+0x84>) + 80168fc: fbb2 f2f3 udiv r2, r2, r3 + uint32_t cf_osr = cf_fs / bitRate; + 8016900: fbb2 f0f5 udiv r0, r2, r5 + uint8_t interp = 1; + /* calculate demod interpolation factor */ + if (cf_osr * interp < 8) + 8016904: 2807 cmp r0, #7 + 8016906: d921 bls.n 801694c <SUBGRF_GetCFO+0x7c> + uint8_t interp = 1; + 8016908: 2301 movs r3, #1 + { + interp = 2; + } + if (cf_osr * interp < 4) + 801690a: fb03 f000 mul.w r0, r3, r0 + 801690e: 2803 cmp r0, #3 + 8016910: d800 bhi.n 8016914 <SUBGRF_GetCFO+0x44> + { + interp = 4; + 8016912: 2304 movs r3, #4 + } + /* calculate demod sampling frequency */ + uint32_t fs = cf_fs* interp; + 8016914: fb02 f503 mul.w r5, r2, r3 + /* get the cfo registers */ + int32_t cfo_bin = ( SUBGRF_ReadRegister( SUBGHZ_GCFORH ) & 0xF ) << 8; + 8016918: f44f 60d6 mov.w r0, #1712 ; 0x6b0 + 801691c: f7ff f9ba bl 8015c94 <SUBGRF_ReadRegister> + 8016920: 0206 lsls r6, r0, #8 + 8016922: f406 6670 and.w r6, r6, #3840 ; 0xf00 + cfo_bin |= SUBGRF_ReadRegister( SUBGHZ_GCFORL ); + 8016926: f240 60b1 movw r0, #1713 ; 0x6b1 + 801692a: f7ff f9b3 bl 8015c94 <SUBGRF_ReadRegister> + 801692e: 4330 orrs r0, r6 + /* negate if 12 bits sign bit is 1 */ + if (( cfo_bin & 0x800 ) == 0x800 ) + 8016930: f410 6f00 tst.w r0, #2048 ; 0x800 + 8016934: d003 beq.n 801693e <SUBGRF_GetCFO+0x6e> + { + cfo_bin |= 0xFFFFF000; + 8016936: ea6f 5000 mvn.w r0, r0, lsl #20 + 801693a: ea6f 5010 mvn.w r0, r0, lsr #20 + } + /* calculate cfo in Hz */ + /* shift by 5 first to not saturate, cfo_bin on 12bits */ + *cfo = ((int32_t)( cfo_bin * ( fs >> 5 ))) >> ( 12 - 5 ); + 801693e: 096b lsrs r3, r5, #5 + 8016940: fb03 f000 mul.w r0, r3, r0 + 8016944: 11c0 asrs r0, r0, #7 + 8016946: 6020 str r0, [r4, #0] +} + 8016948: b002 add sp, #8 + 801694a: bd70 pop {r4, r5, r6, pc} + interp = 2; + 801694c: 2302 movs r3, #2 + 801694e: e7dc b.n 801690a <SUBGRF_GetCFO+0x3a> + 8016950: 0c0a0804 .word 0x0c0a0804 + 8016954: 01e84800 .word 0x01e84800 + +08016958 <RFW_TransmitLongPacket>: + } +#else + status = -1; +#endif /* RFW_LONGPACKET_ENABLE == 1 */ + return status; +} + 8016958: f04f 30ff mov.w r0, #4294967295 + 801695c: 4770 bx lr + +0801695e <RFW_ReceiveLongPacket>: + } +#else + status = -1; +#endif /* RFW_LONGPACKET_ENABLE == 1 */ + return status; +} + 801695e: f04f 30ff mov.w r0, #4294967295 + 8016962: 4770 bx lr + +08016964 <RFW_Init>: + TimerInit( &RFWPacket.Timer, RFW_GetPayloadTimerEvent ); + return 0; +#else + return -1; +#endif /* RFW_ENABLE == 1 */ +} + 8016964: f04f 30ff mov.w r0, #4294967295 + 8016968: 4770 bx lr + +0801696a <RFW_DeInit>: +void RFW_DeInit( void ) +{ +#if (RFW_ENABLE == 1 ) + RFWPacket.Init.Enable = 0; /*Disable the RFWPacket decoding*/ +#endif /* RFW_ENABLE == 1 */ +} + 801696a: 4770 bx lr + +0801696c <RFW_Is_Init>: +#if (RFW_ENABLE == 1 ) + return RFWPacket.Init.Enable; +#else + return 0; +#endif /* RFW_ENABLE == 1 */ +} + 801696c: 2000 movs r0, #0 + 801696e: 4770 bx lr + +08016970 <RFW_Is_LongPacketModeEnabled>: +#if (RFW_ENABLE == 1 ) + return RFWPacket.LongPacketModeEnable; +#else + return 0; +#endif /* RFW_ENABLE == 1 */ +} + 8016970: 2000 movs r0, #0 + 8016972: 4770 bx lr + +08016974 <RFW_SetAntSwitch>: +void RFW_SetAntSwitch( uint8_t AntSwitch ) +{ +#if (RFW_ENABLE == 1 ) + RFWPacket.AntSwitchPaSelect = AntSwitch; +#endif /* RFW_ENABLE == 1 */ +} + 8016974: 4770 bx lr + +08016976 <RFW_TransmitInit>: + + status = 0; + } +#endif /* RFW_ENABLE == 1 */ + return status; +} + 8016976: f04f 30ff mov.w r0, #4294967295 + 801697a: 4770 bx lr + +0801697c <RFW_ReceiveInit>: + RFWPacket.LongPacketModeEnable = 0; + return 0; +#else + return -1; +#endif /* RFW_ENABLE == 1 */ +} + 801697c: f04f 30ff mov.w r0, #4294967295 + 8016980: 4770 bx lr + +08016982 <RFW_DeInit_TxLongPacket>: + /*long packet WA*/ + uint8_t reg = SUBGRF_ReadRegister( SUBGHZ_GPKTCTL1AR ); + SUBGRF_WriteRegister( SUBGHZ_GPKTCTL1AR, reg & ~0x02 ); /* clear infinite_sequence bit */ + SUBGRF_WriteRegister( SUBGHZ_GRTXPLDLEN, 0xFF ); /* RxTxPldLen: reset to 0xFF */ +#endif /* RFW_LONGPACKET_ENABLE == 1 */ +} + 8016982: 4770 bx lr + +08016984 <RFW_ReceivePayload>: + /*timeout*/ + SUBGRF_SetStandby( STDBY_RC ); + RFWPacket.Init.RadioEvents->RxTimeout( ); + } +#endif /* RFW_ENABLE == 1 */ +} + 8016984: 4770 bx lr + +08016986 <RFW_SetRadioModem>: +void RFW_SetRadioModem( RadioModems_t Modem ) +{ +#if (RFW_ENABLE == 1 ) + RFWPacket.Init.Modem = Modem; +#endif /* RFW_ENABLE == 1 */ +} + 8016986: 4770 bx lr + +08016988 <TRACE_AllocateBufer>: + * @param Size to allocate within fifo + * @param Pos position within the fifo + * @retval write position inside the buffer is -1 no space available. + */ +static int16_t TRACE_AllocateBufer(uint16_t Size, uint16_t *Pos) +{ + 8016988: b510 push {r4, lr} + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 801698a: f3ef 8c10 mrs ip, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 801698e: b672 cpsid i + uint16_t freesize; + int16_t ret = -1; + + UTIL_ADV_TRACE_ENTER_CRITICAL_SECTION(); + + if(ADV_TRACE_Ctx.TraceWrPtr == ADV_TRACE_Ctx.TraceRdPtr) + 8016990: 4b1e ldr r3, [pc, #120] ; (8016a0c <TRACE_AllocateBufer+0x84>) + 8016992: f8b3 e012 ldrh.w lr, [r3, #18] + 8016996: 8a1a ldrh r2, [r3, #16] + 8016998: 4596 cmp lr, r2 + 801699a: d011 beq.n 80169c0 <TRACE_AllocateBufer+0x38> +#endif + } + else + { +#ifdef UTIL_ADV_TRACE_UNCHUNK_MODE + if (ADV_TRACE_Ctx.TraceWrPtr > ADV_TRACE_Ctx.TraceRdPtr) + 801699c: 4596 cmp lr, r2 + 801699e: d921 bls.n 80169e4 <TRACE_AllocateBufer+0x5c> + { + freesize = (uint16_t)(UTIL_ADV_TRACE_FIFO_SIZE - ADV_TRACE_Ctx.TraceWrPtr); + 80169a0: f5ce 6380 rsb r3, lr, #1024 ; 0x400 + 80169a4: b29b uxth r3, r3 + if((Size >= freesize) && (ADV_TRACE_Ctx.TraceRdPtr > Size)) + 80169a6: 4283 cmp r3, r0 + 80169a8: d81f bhi.n 80169ea <TRACE_AllocateBufer+0x62> + 80169aa: 4282 cmp r2, r0 + 80169ac: d91d bls.n 80169ea <TRACE_AllocateBufer+0x62> + { + ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_DETECTED; + 80169ae: 4b17 ldr r3, [pc, #92] ; (8016a0c <TRACE_AllocateBufer+0x84>) + 80169b0: 2401 movs r4, #1 + 80169b2: 709c strb r4, [r3, #2] + ADV_TRACE_Ctx.unchunk_enabled = ADV_TRACE_Ctx.TraceWrPtr; + 80169b4: f8a3 e000 strh.w lr, [r3] + freesize = ADV_TRACE_Ctx.TraceRdPtr; + ADV_TRACE_Ctx.TraceWrPtr = 0; + 80169b8: 2400 movs r4, #0 + 80169ba: 825c strh r4, [r3, #18] + freesize = ADV_TRACE_Ctx.TraceRdPtr; + 80169bc: 4613 mov r3, r2 + 80169be: e014 b.n 80169ea <TRACE_AllocateBufer+0x62> + freesize = (uint16_t)(UTIL_ADV_TRACE_FIFO_SIZE - ADV_TRACE_Ctx.TraceWrPtr); + 80169c0: f5ce 6380 rsb r3, lr, #1024 ; 0x400 + 80169c4: b29b uxth r3, r3 + if((Size >= freesize) && (ADV_TRACE_Ctx.TraceRdPtr > Size)) + 80169c6: 4298 cmp r0, r3 + 80169c8: d30f bcc.n 80169ea <TRACE_AllocateBufer+0x62> + 80169ca: 4282 cmp r2, r0 + 80169cc: d90d bls.n 80169ea <TRACE_AllocateBufer+0x62> + ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_DETECTED; + 80169ce: 4b0f ldr r3, [pc, #60] ; (8016a0c <TRACE_AllocateBufer+0x84>) + 80169d0: 2401 movs r4, #1 + 80169d2: 709c strb r4, [r3, #2] + ADV_TRACE_Ctx.unchunk_enabled = ADV_TRACE_Ctx.TraceWrPtr; + 80169d4: f8a3 e000 strh.w lr, [r3] + ADV_TRACE_Ctx.TraceWrPtr = 0; + 80169d8: f04f 0e00 mov.w lr, #0 + 80169dc: f8a3 e012 strh.w lr, [r3, #18] + freesize = ADV_TRACE_Ctx.TraceRdPtr; + 80169e0: 4613 mov r3, r2 + 80169e2: e002 b.n 80169ea <TRACE_AllocateBufer+0x62> + } + } + else + { + freesize = (uint16_t)(ADV_TRACE_Ctx.TraceRdPtr - ADV_TRACE_Ctx.TraceWrPtr); + 80169e4: eba2 020e sub.w r2, r2, lr + 80169e8: b293 uxth r3, r2 + freesize = ADV_TRACE_Ctx.TraceRdPtr - ADV_TRACE_Ctx.TraceWrPtr; + } +#endif + } + + if(freesize > Size) + 80169ea: 4283 cmp r3, r0 + 80169ec: d90a bls.n 8016a04 <TRACE_AllocateBufer+0x7c> + { + *Pos = ADV_TRACE_Ctx.TraceWrPtr; + 80169ee: 4a07 ldr r2, [pc, #28] ; (8016a0c <TRACE_AllocateBufer+0x84>) + 80169f0: 8a53 ldrh r3, [r2, #18] + 80169f2: 800b strh r3, [r1, #0] + ADV_TRACE_Ctx.TraceWrPtr = (ADV_TRACE_Ctx.TraceWrPtr + Size) % UTIL_ADV_TRACE_FIFO_SIZE; + 80169f4: 4403 add r3, r0 + 80169f6: f3c3 0309 ubfx r3, r3, #0, #10 + 80169fa: 8253 strh r3, [r2, #18] + ret = 0; + 80169fc: 2000 movs r0, #0 + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 80169fe: f38c 8810 msr PRIMASK, ip + } +#endif + + UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); + return ret; +} + 8016a02: bd10 pop {r4, pc} + int16_t ret = -1; + 8016a04: f04f 30ff mov.w r0, #4294967295 + 8016a08: e7f9 b.n 80169fe <TRACE_AllocateBufer+0x76> + 8016a0a: bf00 nop + 8016a0c: 20002bd0 .word 0x20002bd0 + +08016a10 <TRACE_Lock>: + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016a10: f3ef 8110 mrs r1, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016a14: b672 cpsid i + * @retval None. + */ +static void TRACE_Lock(void) +{ + UTIL_ADV_TRACE_ENTER_CRITICAL_SECTION(); + ADV_TRACE_Ctx.TraceLock++; + 8016a16: 4a03 ldr r2, [pc, #12] ; (8016a24 <TRACE_Lock+0x14>) + 8016a18: 8ad3 ldrh r3, [r2, #22] + 8016a1a: 3301 adds r3, #1 + 8016a1c: 82d3 strh r3, [r2, #22] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016a1e: f381 8810 msr PRIMASK, r1 + UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); +} + 8016a22: 4770 bx lr + 8016a24: 20002bd0 .word 0x20002bd0 + +08016a28 <TRACE_UnLock>: + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016a28: f3ef 8110 mrs r1, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016a2c: b672 cpsid i + * @retval None. + */ +static void TRACE_UnLock(void) +{ + UTIL_ADV_TRACE_ENTER_CRITICAL_SECTION(); + ADV_TRACE_Ctx.TraceLock--; + 8016a2e: 4a03 ldr r2, [pc, #12] ; (8016a3c <TRACE_UnLock+0x14>) + 8016a30: 8ad3 ldrh r3, [r2, #22] + 8016a32: 3b01 subs r3, #1 + 8016a34: 82d3 strh r3, [r2, #22] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016a36: f381 8810 msr PRIMASK, r1 + UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); +} + 8016a3a: 4770 bx lr + 8016a3c: 20002bd0 .word 0x20002bd0 + +08016a40 <TRACE_IsLocked>: + * @brief UnLock the trace buffer. + * @retval None. + */ +static uint32_t TRACE_IsLocked(void) +{ + return (ADV_TRACE_Ctx.TraceLock == 0u? 0u: 1u); + 8016a40: 4b02 ldr r3, [pc, #8] ; (8016a4c <TRACE_IsLocked+0xc>) + 8016a42: 8ad8 ldrh r0, [r3, #22] +} + 8016a44: 3800 subs r0, #0 + 8016a46: bf18 it ne + 8016a48: 2001 movne r0, #1 + 8016a4a: 4770 bx lr + 8016a4c: 20002bd0 .word 0x20002bd0 + +08016a50 <UTIL_ADV_TRACE_Init>: +{ + 8016a50: b508 push {r3, lr} + (void)UTIL_ADV_TRACE_MEMSET8(&ADV_TRACE_Ctx, 0x0, sizeof(ADV_TRACE_Context)); + 8016a52: 2218 movs r2, #24 + 8016a54: 2100 movs r1, #0 + 8016a56: 4807 ldr r0, [pc, #28] ; (8016a74 <UTIL_ADV_TRACE_Init+0x24>) + 8016a58: f000 f98f bl 8016d7a <UTIL_MEM_set_8> + (void)UTIL_ADV_TRACE_MEMSET8(&ADV_TRACE_Buffer, 0x0, sizeof(ADV_TRACE_Buffer)); + 8016a5c: f44f 6280 mov.w r2, #1024 ; 0x400 + 8016a60: 2100 movs r1, #0 + 8016a62: 4805 ldr r0, [pc, #20] ; (8016a78 <UTIL_ADV_TRACE_Init+0x28>) + 8016a64: f000 f989 bl 8016d7a <UTIL_MEM_set_8> + return UTIL_TraceDriver.Init(TRACE_TxCpltCallback); + 8016a68: 4b04 ldr r3, [pc, #16] ; (8016a7c <UTIL_ADV_TRACE_Init+0x2c>) + 8016a6a: 681b ldr r3, [r3, #0] + 8016a6c: 4804 ldr r0, [pc, #16] ; (8016a80 <UTIL_ADV_TRACE_Init+0x30>) + 8016a6e: 4798 blx r3 +} + 8016a70: bd08 pop {r3, pc} + 8016a72: bf00 nop + 8016a74: 20002bd0 .word 0x20002bd0 + 8016a78: 200027d0 .word 0x200027d0 + 8016a7c: 08017990 .word 0x08017990 + 8016a80: 08016c01 .word 0x08016c01 + +08016a84 <UTIL_ADV_TRACE_RegisterTimeStampFunction>: + ADV_TRACE_Ctx.timestamp_func = *cb; + 8016a84: 4b01 ldr r3, [pc, #4] ; (8016a8c <UTIL_ADV_TRACE_RegisterTimeStampFunction+0x8>) + 8016a86: 6058 str r0, [r3, #4] +} + 8016a88: 4770 bx lr + 8016a8a: bf00 nop + 8016a8c: 20002bd0 .word 0x20002bd0 + +08016a90 <UTIL_ADV_TRACE_SetVerboseLevel>: + ADV_TRACE_Ctx.CurrentVerboseLevel = Level; + 8016a90: 4b01 ldr r3, [pc, #4] ; (8016a98 <UTIL_ADV_TRACE_SetVerboseLevel+0x8>) + 8016a92: 7218 strb r0, [r3, #8] +} + 8016a94: 4770 bx lr + 8016a96: bf00 nop + 8016a98: 20002bd0 .word 0x20002bd0 + +08016a9c <TRACE_Send>: +{ + 8016a9c: b570 push {r4, r5, r6, lr} + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016a9e: f3ef 8310 mrs r3, PRIMASK + 8016aa2: 461c mov r4, r3 + __ASM volatile ("cpsid i" : : : "memory"); + 8016aa4: b672 cpsid i + if(TRACE_IsLocked() == 0u) + 8016aa6: f7ff ffcb bl 8016a40 <TRACE_IsLocked> + 8016aaa: b118 cbz r0, 8016ab4 <TRACE_Send+0x18> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016aac: f384 8810 msr PRIMASK, r4 + UTIL_ADV_TRACE_Status_t ret = UTIL_ADV_TRACE_OK; + 8016ab0: 2000 movs r0, #0 +} + 8016ab2: bd70 pop {r4, r5, r6, pc} + TRACE_Lock(); + 8016ab4: f7ff ffac bl 8016a10 <TRACE_Lock> + if(ADV_TRACE_Ctx.TraceRdPtr != ADV_TRACE_Ctx.TraceWrPtr) + 8016ab8: 4b1c ldr r3, [pc, #112] ; (8016b2c <TRACE_Send+0x90>) + 8016aba: 8a1a ldrh r2, [r3, #16] + 8016abc: 8a5b ldrh r3, [r3, #18] + 8016abe: 429a cmp r2, r3 + 8016ac0: d02e beq.n 8016b20 <TRACE_Send+0x84> + if(TRACE_UNCHUNK_DETECTED == ADV_TRACE_Ctx.unchunk_status) + 8016ac2: 491a ldr r1, [pc, #104] ; (8016b2c <TRACE_Send+0x90>) + 8016ac4: 7889 ldrb r1, [r1, #2] + 8016ac6: 2901 cmp r1, #1 + 8016ac8: d017 beq.n 8016afa <TRACE_Send+0x5e> + if(TRACE_UNCHUNK_NONE == ADV_TRACE_Ctx.unchunk_status) + 8016aca: 4a18 ldr r2, [pc, #96] ; (8016b2c <TRACE_Send+0x90>) + 8016acc: 7892 ldrb r2, [r2, #2] + 8016ace: b932 cbnz r2, 8016ade <TRACE_Send+0x42> + if(ADV_TRACE_Ctx.TraceWrPtr > ADV_TRACE_Ctx.TraceRdPtr) + 8016ad0: 4a16 ldr r2, [pc, #88] ; (8016b2c <TRACE_Send+0x90>) + 8016ad2: 8a12 ldrh r2, [r2, #16] + 8016ad4: 4293 cmp r3, r2 + 8016ad6: d91e bls.n 8016b16 <TRACE_Send+0x7a> + ADV_TRACE_Ctx.TraceSentSize = ADV_TRACE_Ctx.TraceWrPtr - ADV_TRACE_Ctx.TraceRdPtr; + 8016ad8: 1a9b subs r3, r3, r2 + 8016ada: 4a14 ldr r2, [pc, #80] ; (8016b2c <TRACE_Send+0x90>) + 8016adc: 8293 strh r3, [r2, #20] + ptr = &ADV_TRACE_Buffer[ADV_TRACE_Ctx.TraceRdPtr]; + 8016ade: 4e13 ldr r6, [pc, #76] ; (8016b2c <TRACE_Send+0x90>) + 8016ae0: 8a33 ldrh r3, [r6, #16] + 8016ae2: 4d13 ldr r5, [pc, #76] ; (8016b30 <TRACE_Send+0x94>) + 8016ae4: 441d add r5, r3 + 8016ae6: f384 8810 msr PRIMASK, r4 + UTIL_ADV_TRACE_PreSendHook(); + 8016aea: f7ec f8c7 bl 8002c7c <UTIL_ADV_TRACE_PreSendHook> + ret = UTIL_TraceDriver.Send(ptr, ADV_TRACE_Ctx.TraceSentSize); + 8016aee: 4b11 ldr r3, [pc, #68] ; (8016b34 <TRACE_Send+0x98>) + 8016af0: 68db ldr r3, [r3, #12] + 8016af2: 8ab1 ldrh r1, [r6, #20] + 8016af4: 4628 mov r0, r5 + 8016af6: 4798 blx r3 + 8016af8: e7db b.n 8016ab2 <TRACE_Send+0x16> + ADV_TRACE_Ctx.TraceSentSize = (uint16_t) (ADV_TRACE_Ctx.unchunk_enabled - ADV_TRACE_Ctx.TraceRdPtr); + 8016afa: 480c ldr r0, [pc, #48] ; (8016b2c <TRACE_Send+0x90>) + 8016afc: 8801 ldrh r1, [r0, #0] + 8016afe: 1a8a subs r2, r1, r2 + 8016b00: b292 uxth r2, r2 + 8016b02: 8282 strh r2, [r0, #20] + ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_TRANSFER; + 8016b04: 2102 movs r1, #2 + 8016b06: 7081 strb r1, [r0, #2] + ADV_TRACE_Ctx.unchunk_enabled = 0; + 8016b08: 2100 movs r1, #0 + 8016b0a: 8001 strh r1, [r0, #0] + if(0u == ADV_TRACE_Ctx.TraceSentSize) + 8016b0c: 2a00 cmp r2, #0 + 8016b0e: d1dc bne.n 8016aca <TRACE_Send+0x2e> + ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_NONE; + 8016b10: 7081 strb r1, [r0, #2] + ADV_TRACE_Ctx.TraceRdPtr = 0; + 8016b12: 8201 strh r1, [r0, #16] + 8016b14: e7d9 b.n 8016aca <TRACE_Send+0x2e> + ADV_TRACE_Ctx.TraceSentSize = UTIL_ADV_TRACE_FIFO_SIZE - ADV_TRACE_Ctx.TraceRdPtr; + 8016b16: f5c2 6280 rsb r2, r2, #1024 ; 0x400 + 8016b1a: 4b04 ldr r3, [pc, #16] ; (8016b2c <TRACE_Send+0x90>) + 8016b1c: 829a strh r2, [r3, #20] + 8016b1e: e7de b.n 8016ade <TRACE_Send+0x42> + TRACE_UnLock(); + 8016b20: f7ff ff82 bl 8016a28 <TRACE_UnLock> + 8016b24: f384 8810 msr PRIMASK, r4 + UTIL_ADV_TRACE_Status_t ret = UTIL_ADV_TRACE_OK; + 8016b28: 2000 movs r0, #0 +} + 8016b2a: e7c2 b.n 8016ab2 <TRACE_Send+0x16> + 8016b2c: 20002bd0 .word 0x20002bd0 + 8016b30: 200027d0 .word 0x200027d0 + 8016b34: 08017990 .word 0x08017990 + +08016b38 <UTIL_ADV_TRACE_COND_FSend>: +{ + 8016b38: b408 push {r3} + 8016b3a: b530 push {r4, r5, lr} + 8016b3c: b086 sub sp, #24 + 8016b3e: 9c09 ldr r4, [sp, #36] ; 0x24 + uint16_t timestamp_size = 0u; + 8016b40: 2300 movs r3, #0 + 8016b42: f8ad 3002 strh.w r3, [sp, #2] + if(!(ADV_TRACE_Ctx.CurrentVerboseLevel >= VerboseLevel)) + 8016b46: 4b2b ldr r3, [pc, #172] ; (8016bf4 <UTIL_ADV_TRACE_COND_FSend+0xbc>) + 8016b48: 7a1b ldrb r3, [r3, #8] + 8016b4a: 4283 cmp r3, r0 + 8016b4c: d34c bcc.n 8016be8 <UTIL_ADV_TRACE_COND_FSend+0xb0> + if((Region & ADV_TRACE_Ctx.RegionMask) != Region) + 8016b4e: 4b29 ldr r3, [pc, #164] ; (8016bf4 <UTIL_ADV_TRACE_COND_FSend+0xbc>) + 8016b50: 68db ldr r3, [r3, #12] + 8016b52: 4399 bics r1, r3 + 8016b54: d14b bne.n 8016bee <UTIL_ADV_TRACE_COND_FSend+0xb6> + if((ADV_TRACE_Ctx.timestamp_func != NULL) && (TimeStampState != 0u)) + 8016b56: 4b27 ldr r3, [pc, #156] ; (8016bf4 <UTIL_ADV_TRACE_COND_FSend+0xbc>) + 8016b58: 685b ldr r3, [r3, #4] + 8016b5a: b123 cbz r3, 8016b66 <UTIL_ADV_TRACE_COND_FSend+0x2e> + 8016b5c: b11a cbz r2, 8016b66 <UTIL_ADV_TRACE_COND_FSend+0x2e> + ADV_TRACE_Ctx.timestamp_func(buf,×tamp_size); + 8016b5e: f10d 0102 add.w r1, sp, #2 + 8016b62: a801 add r0, sp, #4 + 8016b64: 4798 blx r3 + va_start( vaArgs, strFormat); + 8016b66: ab0a add r3, sp, #40 ; 0x28 + 8016b68: 9305 str r3, [sp, #20] + buff_size =(uint16_t)UTIL_ADV_TRACE_VSNPRINTF((char *)sztmp,UTIL_ADV_TRACE_TMP_BUF_SIZE, strFormat, vaArgs); + 8016b6a: 4622 mov r2, r4 + 8016b6c: f44f 7100 mov.w r1, #512 ; 0x200 + 8016b70: 4821 ldr r0, [pc, #132] ; (8016bf8 <UTIL_ADV_TRACE_COND_FSend+0xc0>) + 8016b72: f000 fcd1 bl 8017518 <tiny_vsnprintf_like> + 8016b76: b285 uxth r5, r0 + TRACE_Lock(); + 8016b78: f7ff ff4a bl 8016a10 <TRACE_Lock> + if (TRACE_AllocateBufer((buff_size+timestamp_size),&writepos) != -1) + 8016b7c: f8bd 3002 ldrh.w r3, [sp, #2] + 8016b80: 18e8 adds r0, r5, r3 + 8016b82: 4669 mov r1, sp + 8016b84: b280 uxth r0, r0 + 8016b86: f7ff feff bl 8016988 <TRACE_AllocateBufer> + 8016b8a: f1b0 3fff cmp.w r0, #4294967295 + 8016b8e: d026 beq.n 8016bde <UTIL_ADV_TRACE_COND_FSend+0xa6> + for (idx = 0u; idx < timestamp_size; idx++) + 8016b90: 2300 movs r3, #0 + 8016b92: e00d b.n 8016bb0 <UTIL_ADV_TRACE_COND_FSend+0x78> + ADV_TRACE_Buffer[writepos] = buf[idx]; + 8016b94: f8bd 2000 ldrh.w r2, [sp] + 8016b98: f103 0118 add.w r1, r3, #24 + 8016b9c: 4469 add r1, sp + 8016b9e: f811 0c14 ldrb.w r0, [r1, #-20] + 8016ba2: 4916 ldr r1, [pc, #88] ; (8016bfc <UTIL_ADV_TRACE_COND_FSend+0xc4>) + 8016ba4: 5488 strb r0, [r1, r2] + writepos = writepos + 1u; + 8016ba6: 3201 adds r2, #1 + 8016ba8: f8ad 2000 strh.w r2, [sp] + for (idx = 0u; idx < timestamp_size; idx++) + 8016bac: 3301 adds r3, #1 + 8016bae: b29b uxth r3, r3 + 8016bb0: f8bd 2002 ldrh.w r2, [sp, #2] + 8016bb4: 429a cmp r2, r3 + 8016bb6: d8ed bhi.n 8016b94 <UTIL_ADV_TRACE_COND_FSend+0x5c> + (void)UTIL_ADV_TRACE_VSNPRINTF((char *)(&ADV_TRACE_Buffer[writepos]), UTIL_ADV_TRACE_TMP_BUF_SIZE, strFormat, vaArgs); + 8016bb8: f8bd 0000 ldrh.w r0, [sp] + 8016bbc: 9b05 ldr r3, [sp, #20] + 8016bbe: 4622 mov r2, r4 + 8016bc0: f44f 7100 mov.w r1, #512 ; 0x200 + 8016bc4: 4c0d ldr r4, [pc, #52] ; (8016bfc <UTIL_ADV_TRACE_COND_FSend+0xc4>) + 8016bc6: 4420 add r0, r4 + 8016bc8: f000 fca6 bl 8017518 <tiny_vsnprintf_like> + TRACE_UnLock(); + 8016bcc: f7ff ff2c bl 8016a28 <TRACE_UnLock> + return TRACE_Send(); + 8016bd0: f7ff ff64 bl 8016a9c <TRACE_Send> +} + 8016bd4: b006 add sp, #24 + 8016bd6: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 8016bda: b001 add sp, #4 + 8016bdc: 4770 bx lr + TRACE_UnLock(); + 8016bde: f7ff ff23 bl 8016a28 <TRACE_UnLock> + return UTIL_ADV_TRACE_MEM_FULL; + 8016be2: f06f 0002 mvn.w r0, #2 + 8016be6: e7f5 b.n 8016bd4 <UTIL_ADV_TRACE_COND_FSend+0x9c> + return UTIL_ADV_TRACE_GIVEUP; + 8016be8: f06f 0004 mvn.w r0, #4 + 8016bec: e7f2 b.n 8016bd4 <UTIL_ADV_TRACE_COND_FSend+0x9c> + return UTIL_ADV_TRACE_REGIONMASKED; + 8016bee: f06f 0005 mvn.w r0, #5 + 8016bf2: e7ef b.n 8016bd4 <UTIL_ADV_TRACE_COND_FSend+0x9c> + 8016bf4: 20002bd0 .word 0x20002bd0 + 8016bf8: 20002be8 .word 0x20002be8 + 8016bfc: 200027d0 .word 0x200027d0 + +08016c00 <TRACE_TxCpltCallback>: +{ + 8016c00: b510 push {r4, lr} + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016c02: f3ef 8310 mrs r3, PRIMASK + 8016c06: 4619 mov r1, r3 + __ASM volatile ("cpsid i" : : : "memory"); + 8016c08: b672 cpsid i + if(TRACE_UNCHUNK_TRANSFER == ADV_TRACE_Ctx.unchunk_status) + 8016c0a: 4b26 ldr r3, [pc, #152] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c0c: 789b ldrb r3, [r3, #2] + 8016c0e: 2b02 cmp r3, #2 + 8016c10: d016 beq.n 8016c40 <TRACE_TxCpltCallback+0x40> + ADV_TRACE_Ctx.TraceRdPtr = (ADV_TRACE_Ctx.TraceRdPtr + ADV_TRACE_Ctx.TraceSentSize) % UTIL_ADV_TRACE_FIFO_SIZE; + 8016c12: 4a24 ldr r2, [pc, #144] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c14: 8a13 ldrh r3, [r2, #16] + 8016c16: 8a90 ldrh r0, [r2, #20] + 8016c18: 4403 add r3, r0 + 8016c1a: f3c3 0309 ubfx r3, r3, #0, #10 + 8016c1e: 8213 strh r3, [r2, #16] + if((ADV_TRACE_Ctx.TraceRdPtr != ADV_TRACE_Ctx.TraceWrPtr) && (1u == ADV_TRACE_Ctx.TraceLock)) + 8016c20: 4b20 ldr r3, [pc, #128] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c22: 8a1a ldrh r2, [r3, #16] + 8016c24: 8a5b ldrh r3, [r3, #18] + 8016c26: 429a cmp r2, r3 + 8016c28: d003 beq.n 8016c32 <TRACE_TxCpltCallback+0x32> + 8016c2a: 481e ldr r0, [pc, #120] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c2c: 8ac0 ldrh r0, [r0, #22] + 8016c2e: 2801 cmp r0, #1 + 8016c30: d00b beq.n 8016c4a <TRACE_TxCpltCallback+0x4a> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016c32: f381 8810 msr PRIMASK, r1 + UTIL_ADV_TRACE_PostSendHook(); + 8016c36: f7ec f827 bl 8002c88 <UTIL_ADV_TRACE_PostSendHook> + TRACE_UnLock(); + 8016c3a: f7ff fef5 bl 8016a28 <TRACE_UnLock> +} + 8016c3e: bd10 pop {r4, pc} + ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_NONE; + 8016c40: 4b18 ldr r3, [pc, #96] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c42: 2200 movs r2, #0 + 8016c44: 709a strb r2, [r3, #2] + ADV_TRACE_Ctx.TraceRdPtr = 0; + 8016c46: 821a strh r2, [r3, #16] + UTIL_ADV_TRACE_DEBUG("\nTRACE_TxCpltCallback::unchunk complete\n"); + 8016c48: e7ea b.n 8016c20 <TRACE_TxCpltCallback+0x20> + if(TRACE_UNCHUNK_DETECTED == ADV_TRACE_Ctx.unchunk_status) + 8016c4a: 4816 ldr r0, [pc, #88] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c4c: 7880 ldrb r0, [r0, #2] + 8016c4e: 2801 cmp r0, #1 + 8016c50: d014 beq.n 8016c7c <TRACE_TxCpltCallback+0x7c> + if(TRACE_UNCHUNK_NONE == ADV_TRACE_Ctx.unchunk_status) + 8016c52: 4a14 ldr r2, [pc, #80] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c54: 7892 ldrb r2, [r2, #2] + 8016c56: b932 cbnz r2, 8016c66 <TRACE_TxCpltCallback+0x66> + if(ADV_TRACE_Ctx.TraceWrPtr > ADV_TRACE_Ctx.TraceRdPtr) + 8016c58: 4a12 ldr r2, [pc, #72] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c5a: 8a12 ldrh r2, [r2, #16] + 8016c5c: 4293 cmp r3, r2 + 8016c5e: d91b bls.n 8016c98 <TRACE_TxCpltCallback+0x98> + ADV_TRACE_Ctx.TraceSentSize = ADV_TRACE_Ctx.TraceWrPtr - ADV_TRACE_Ctx.TraceRdPtr; + 8016c60: 1a9b subs r3, r3, r2 + 8016c62: 4a10 ldr r2, [pc, #64] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c64: 8293 strh r3, [r2, #20] + ptr = &ADV_TRACE_Buffer[ADV_TRACE_Ctx.TraceRdPtr]; + 8016c66: 4b0f ldr r3, [pc, #60] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c68: 8a1a ldrh r2, [r3, #16] + 8016c6a: 480f ldr r0, [pc, #60] ; (8016ca8 <TRACE_TxCpltCallback+0xa8>) + 8016c6c: 4410 add r0, r2 + 8016c6e: f381 8810 msr PRIMASK, r1 + UTIL_TraceDriver.Send(ptr, ADV_TRACE_Ctx.TraceSentSize); + 8016c72: 4a0e ldr r2, [pc, #56] ; (8016cac <TRACE_TxCpltCallback+0xac>) + 8016c74: 68d2 ldr r2, [r2, #12] + 8016c76: 8a99 ldrh r1, [r3, #20] + 8016c78: 4790 blx r2 + 8016c7a: e7e0 b.n 8016c3e <TRACE_TxCpltCallback+0x3e> + ADV_TRACE_Ctx.TraceSentSize = ADV_TRACE_Ctx.unchunk_enabled - ADV_TRACE_Ctx.TraceRdPtr; + 8016c7c: 4c09 ldr r4, [pc, #36] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c7e: 8820 ldrh r0, [r4, #0] + 8016c80: 1a82 subs r2, r0, r2 + 8016c82: b292 uxth r2, r2 + 8016c84: 82a2 strh r2, [r4, #20] + ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_TRANSFER; + 8016c86: 2002 movs r0, #2 + 8016c88: 70a0 strb r0, [r4, #2] + ADV_TRACE_Ctx.unchunk_enabled = 0; + 8016c8a: 2000 movs r0, #0 + 8016c8c: 8020 strh r0, [r4, #0] + if(0u == ADV_TRACE_Ctx.TraceSentSize) + 8016c8e: 2a00 cmp r2, #0 + 8016c90: d1df bne.n 8016c52 <TRACE_TxCpltCallback+0x52> + ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_NONE; + 8016c92: 70a0 strb r0, [r4, #2] + ADV_TRACE_Ctx.TraceRdPtr = 0; + 8016c94: 8220 strh r0, [r4, #16] + 8016c96: e7dc b.n 8016c52 <TRACE_TxCpltCallback+0x52> + ADV_TRACE_Ctx.TraceSentSize = UTIL_ADV_TRACE_FIFO_SIZE - ADV_TRACE_Ctx.TraceRdPtr; + 8016c98: f5c2 6280 rsb r2, r2, #1024 ; 0x400 + 8016c9c: 4b01 ldr r3, [pc, #4] ; (8016ca4 <TRACE_TxCpltCallback+0xa4>) + 8016c9e: 829a strh r2, [r3, #20] + 8016ca0: e7e1 b.n 8016c66 <TRACE_TxCpltCallback+0x66> + 8016ca2: bf00 nop + 8016ca4: 20002bd0 .word 0x20002bd0 + 8016ca8: 200027d0 .word 0x200027d0 + 8016cac: 08017990 .word 0x08017990 + +08016cb0 <UTIL_LPM_Init>: +/** @addtogroup TINY_LPM_Exported_function + * @{ + */ +void UTIL_LPM_Init( void ) +{ + StopModeDisable = UTIL_LPM_NO_BIT_SET; + 8016cb0: 2300 movs r3, #0 + 8016cb2: 4a02 ldr r2, [pc, #8] ; (8016cbc <UTIL_LPM_Init+0xc>) + 8016cb4: 6013 str r3, [r2, #0] + OffModeDisable = UTIL_LPM_NO_BIT_SET; + 8016cb6: 4a02 ldr r2, [pc, #8] ; (8016cc0 <UTIL_LPM_Init+0x10>) + 8016cb8: 6013 str r3, [r2, #0] + UTIL_LPM_INIT_CRITICAL_SECTION( ); +} + 8016cba: 4770 bx lr + 8016cbc: 20002dec .word 0x20002dec + 8016cc0: 20002de8 .word 0x20002de8 + +08016cc4 <UTIL_LPM_SetStopMode>: + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016cc4: f3ef 8310 mrs r3, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016cc8: b672 cpsid i + +void UTIL_LPM_SetStopMode( UTIL_LPM_bm_t lpm_id_bm, UTIL_LPM_State_t state ) +{ + UTIL_LPM_ENTER_CRITICAL_SECTION( ); + + switch( state ) + 8016cca: b141 cbz r1, 8016cde <UTIL_LPM_SetStopMode+0x1a> + 8016ccc: 2901 cmp r1, #1 + 8016cce: d103 bne.n 8016cd8 <UTIL_LPM_SetStopMode+0x14> + { + case UTIL_LPM_DISABLE: + { + StopModeDisable |= lpm_id_bm; + 8016cd0: 4906 ldr r1, [pc, #24] ; (8016cec <UTIL_LPM_SetStopMode+0x28>) + 8016cd2: 680a ldr r2, [r1, #0] + 8016cd4: 4302 orrs r2, r0 + 8016cd6: 600a str r2, [r1, #0] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016cd8: f383 8810 msr PRIMASK, r3 + break; + } + } + + UTIL_LPM_EXIT_CRITICAL_SECTION( ); +} + 8016cdc: 4770 bx lr + StopModeDisable &= ( ~lpm_id_bm ); + 8016cde: 4903 ldr r1, [pc, #12] ; (8016cec <UTIL_LPM_SetStopMode+0x28>) + 8016ce0: 680a ldr r2, [r1, #0] + 8016ce2: ea22 0200 bic.w r2, r2, r0 + 8016ce6: 600a str r2, [r1, #0] + break; + 8016ce8: e7f6 b.n 8016cd8 <UTIL_LPM_SetStopMode+0x14> + 8016cea: bf00 nop + 8016cec: 20002dec .word 0x20002dec + +08016cf0 <UTIL_LPM_SetOffMode>: + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016cf0: f3ef 8310 mrs r3, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016cf4: b672 cpsid i + +void UTIL_LPM_SetOffMode( UTIL_LPM_bm_t lpm_id_bm, UTIL_LPM_State_t state ) +{ + UTIL_LPM_ENTER_CRITICAL_SECTION( ); + + switch(state) + 8016cf6: b141 cbz r1, 8016d0a <UTIL_LPM_SetOffMode+0x1a> + 8016cf8: 2901 cmp r1, #1 + 8016cfa: d103 bne.n 8016d04 <UTIL_LPM_SetOffMode+0x14> + { + case UTIL_LPM_DISABLE: + { + OffModeDisable |= lpm_id_bm; + 8016cfc: 4906 ldr r1, [pc, #24] ; (8016d18 <UTIL_LPM_SetOffMode+0x28>) + 8016cfe: 680a ldr r2, [r1, #0] + 8016d00: 4302 orrs r2, r0 + 8016d02: 600a str r2, [r1, #0] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016d04: f383 8810 msr PRIMASK, r3 + break; + } + } + + UTIL_LPM_EXIT_CRITICAL_SECTION( ); +} + 8016d08: 4770 bx lr + OffModeDisable &= ( ~lpm_id_bm ); + 8016d0a: 4903 ldr r1, [pc, #12] ; (8016d18 <UTIL_LPM_SetOffMode+0x28>) + 8016d0c: 680a ldr r2, [r1, #0] + 8016d0e: ea22 0200 bic.w r2, r2, r0 + 8016d12: 600a str r2, [r1, #0] + break; + 8016d14: e7f6 b.n 8016d04 <UTIL_LPM_SetOffMode+0x14> + 8016d16: bf00 nop + 8016d18: 20002de8 .word 0x20002de8 + +08016d1c <UTIL_LPM_EnterLowPower>: + + return mode_selected; +} + +void UTIL_LPM_EnterLowPower( void ) +{ + 8016d1c: b538 push {r3, r4, r5, lr} + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016d1e: f3ef 8410 mrs r4, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016d22: b672 cpsid i + UTIL_LPM_ENTER_CRITICAL_SECTION_ELP( ); + + if( StopModeDisable != UTIL_LPM_NO_BIT_SET ) + 8016d24: 4b0c ldr r3, [pc, #48] ; (8016d58 <UTIL_LPM_EnterLowPower+0x3c>) + 8016d26: 681b ldr r3, [r3, #0] + 8016d28: b13b cbz r3, 8016d3a <UTIL_LPM_EnterLowPower+0x1e> + { + /** + * At least one user disallows Stop Mode + * SLEEP mode is required + */ + UTIL_PowerDriver.EnterSleepMode( ); + 8016d2a: 4d0c ldr r5, [pc, #48] ; (8016d5c <UTIL_LPM_EnterLowPower+0x40>) + 8016d2c: 682b ldr r3, [r5, #0] + 8016d2e: 4798 blx r3 + UTIL_PowerDriver.ExitSleepMode( ); + 8016d30: 686b ldr r3, [r5, #4] + 8016d32: 4798 blx r3 + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016d34: f384 8810 msr PRIMASK, r4 + UTIL_PowerDriver.ExitOffMode( ); + } + } + + UTIL_LPM_EXIT_CRITICAL_SECTION_ELP( ); +} + 8016d38: bd38 pop {r3, r4, r5, pc} + if( OffModeDisable != UTIL_LPM_NO_BIT_SET ) + 8016d3a: 4b09 ldr r3, [pc, #36] ; (8016d60 <UTIL_LPM_EnterLowPower+0x44>) + 8016d3c: 681b ldr r3, [r3, #0] + 8016d3e: b12b cbz r3, 8016d4c <UTIL_LPM_EnterLowPower+0x30> + UTIL_PowerDriver.EnterStopMode( ); + 8016d40: 4d06 ldr r5, [pc, #24] ; (8016d5c <UTIL_LPM_EnterLowPower+0x40>) + 8016d42: 68ab ldr r3, [r5, #8] + 8016d44: 4798 blx r3 + UTIL_PowerDriver.ExitStopMode( ); + 8016d46: 68eb ldr r3, [r5, #12] + 8016d48: 4798 blx r3 + 8016d4a: e7f3 b.n 8016d34 <UTIL_LPM_EnterLowPower+0x18> + UTIL_PowerDriver.EnterOffMode( ); + 8016d4c: 4d03 ldr r5, [pc, #12] ; (8016d5c <UTIL_LPM_EnterLowPower+0x40>) + 8016d4e: 692b ldr r3, [r5, #16] + 8016d50: 4798 blx r3 + UTIL_PowerDriver.ExitOffMode( ); + 8016d52: 696b ldr r3, [r5, #20] + 8016d54: 4798 blx r3 + 8016d56: e7ed b.n 8016d34 <UTIL_LPM_EnterLowPower+0x18> + 8016d58: 20002dec .word 0x20002dec + 8016d5c: 080178e0 .word 0x080178e0 + 8016d60: 20002de8 .word 0x20002de8 + +08016d64 <UTIL_MEM_cpy_8>: +void UTIL_MEM_cpy_8( void *dst, const void *src, uint16_t size ) +{ + uint8_t* dst8= (uint8_t *) dst; + uint8_t* src8= (uint8_t *) src; + + while( size-- ) + 8016d64: e004 b.n 8016d70 <UTIL_MEM_cpy_8+0xc> + { + *dst8++ = *src8++; + 8016d66: f811 2b01 ldrb.w r2, [r1], #1 + 8016d6a: f800 2b01 strb.w r2, [r0], #1 + while( size-- ) + 8016d6e: 461a mov r2, r3 + 8016d70: 1e53 subs r3, r2, #1 + 8016d72: b29b uxth r3, r3 + 8016d74: 2a00 cmp r2, #0 + 8016d76: d1f6 bne.n 8016d66 <UTIL_MEM_cpy_8+0x2> + } +} + 8016d78: 4770 bx lr + +08016d7a <UTIL_MEM_set_8>: +} + +void UTIL_MEM_set_8( void *dst, uint8_t value, uint16_t size ) +{ + uint8_t* dst8= (uint8_t *) dst; + while( size-- ) + 8016d7a: e002 b.n 8016d82 <UTIL_MEM_set_8+0x8> + { + *dst8++ = value; + 8016d7c: f800 1b01 strb.w r1, [r0], #1 + while( size-- ) + 8016d80: 461a mov r2, r3 + 8016d82: 1e53 subs r3, r2, #1 + 8016d84: b29b uxth r3, r3 + 8016d86: 2a00 cmp r2, #0 + 8016d88: d1f8 bne.n 8016d7c <UTIL_MEM_set_8+0x2> + } +} + 8016d8a: 4770 bx lr + +08016d8c <UTIL_SEQ_SetTask>: + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016d8c: f3ef 8c10 mrs ip, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016d90: b672 cpsid i + +void UTIL_SEQ_SetTask( UTIL_SEQ_bm_t TaskId_bm , uint32_t Task_Prio ) +{ + UTIL_SEQ_ENTER_CRITICAL_SECTION( ); + + TaskSet |= TaskId_bm; + 8016d92: 4a06 ldr r2, [pc, #24] ; (8016dac <UTIL_SEQ_SetTask+0x20>) + 8016d94: 6813 ldr r3, [r2, #0] + 8016d96: 4303 orrs r3, r0 + 8016d98: 6013 str r3, [r2, #0] + TaskPrio[Task_Prio].priority |= TaskId_bm; + 8016d9a: 4a05 ldr r2, [pc, #20] ; (8016db0 <UTIL_SEQ_SetTask+0x24>) + 8016d9c: f852 3031 ldr.w r3, [r2, r1, lsl #3] + 8016da0: 4303 orrs r3, r0 + 8016da2: f842 3031 str.w r3, [r2, r1, lsl #3] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016da6: f38c 8810 msr PRIMASK, ip + + UTIL_SEQ_EXIT_CRITICAL_SECTION( ); + + return; +} + 8016daa: 4770 bx lr + 8016dac: 20002e3c .word 0x20002e3c + 8016db0: 20002e34 .word 0x20002e34 + +08016db4 <UTIL_SEQ_PreIdle>: +{ + /* + * Unless specified by the application, there is nothing to be done + */ + return; +} + 8016db4: 4770 bx lr + +08016db6 <UTIL_SEQ_PostIdle>: +{ + /* + * Unless specified by the application, there is nothing to be done + */ + return; +} + 8016db6: 4770 bx lr + +08016db8 <SEQ_BitPosition>: +uint8_t SEQ_BitPosition(uint32_t Value) +{ +uint8_t n = 0U; +uint32_t lvalue = Value; + + if ((lvalue & 0xFFFF0000U) == 0U) { n = 16U; lvalue <<= 16U; } + 8016db8: 0c03 lsrs r3, r0, #16 + 8016dba: 041b lsls r3, r3, #16 + 8016dbc: b9b3 cbnz r3, 8016dec <SEQ_BitPosition+0x34> + 8016dbe: 0400 lsls r0, r0, #16 + 8016dc0: 2310 movs r3, #16 + if ((lvalue & 0xFF000000U) == 0U) { n += 8U; lvalue <<= 8U; } + 8016dc2: f010 4f7f tst.w r0, #4278190080 ; 0xff000000 + 8016dc6: d102 bne.n 8016dce <SEQ_BitPosition+0x16> + 8016dc8: 3308 adds r3, #8 + 8016dca: b2db uxtb r3, r3 + 8016dcc: 0200 lsls r0, r0, #8 + if ((lvalue & 0xF0000000U) == 0U) { n += 4U; lvalue <<= 4U; } + 8016dce: f010 4f70 tst.w r0, #4026531840 ; 0xf0000000 + 8016dd2: d102 bne.n 8016dda <SEQ_BitPosition+0x22> + 8016dd4: 3304 adds r3, #4 + 8016dd6: b2db uxtb r3, r3 + 8016dd8: 0100 lsls r0, r0, #4 + + n += SEQ_clz_table_4bit[lvalue >> (32-4)]; + 8016dda: 0f00 lsrs r0, r0, #28 + 8016ddc: 4a04 ldr r2, [pc, #16] ; (8016df0 <SEQ_BitPosition+0x38>) + 8016dde: 5c10 ldrb r0, [r2, r0] + 8016de0: 4418 add r0, r3 + 8016de2: b2c0 uxtb r0, r0 + + return (uint8_t)(31U-n); + 8016de4: f1c0 001f rsb r0, r0, #31 +} + 8016de8: b2c0 uxtb r0, r0 + 8016dea: 4770 bx lr +uint8_t n = 0U; + 8016dec: 2300 movs r3, #0 + 8016dee: e7e8 b.n 8016dc2 <SEQ_BitPosition+0xa> + 8016df0: 08018df0 .word 0x08018df0 + +08016df4 <UTIL_SEQ_Run>: +{ + 8016df4: b570 push {r4, r5, r6, lr} + super_mask_backup = SuperMask; + 8016df6: 4b42 ldr r3, [pc, #264] ; (8016f00 <UTIL_SEQ_Run+0x10c>) + 8016df8: 681c ldr r4, [r3, #0] + SuperMask &= Mask_bm; + 8016dfa: 4020 ands r0, r4 + 8016dfc: 6018 str r0, [r3, #0] + local_taskset = TaskSet; + 8016dfe: 4b41 ldr r3, [pc, #260] ; (8016f04 <UTIL_SEQ_Run+0x110>) + 8016e00: 681a ldr r2, [r3, #0] + local_evtset = EvtSet; + 8016e02: 4b41 ldr r3, [pc, #260] ; (8016f08 <UTIL_SEQ_Run+0x114>) + 8016e04: 681b ldr r3, [r3, #0] + local_taskmask = TaskMask; + 8016e06: 4941 ldr r1, [pc, #260] ; (8016f0c <UTIL_SEQ_Run+0x118>) + 8016e08: 6808 ldr r0, [r1, #0] + local_evtwaited = EvtWaited; + 8016e0a: 4941 ldr r1, [pc, #260] ; (8016f10 <UTIL_SEQ_Run+0x11c>) + 8016e0c: 6809 ldr r1, [r1, #0] + while(((local_taskset & local_taskmask & SuperMask) != 0U) && ((local_evtset & local_evtwaited)==0U)) + 8016e0e: e02f b.n 8016e70 <UTIL_SEQ_Run+0x7c> + counter++; + 8016e10: 3301 adds r3, #1 + 8016e12: e034 b.n 8016e7e <UTIL_SEQ_Run+0x8a> + CurrentTaskIdx = (SEQ_BitPosition(current_task_set & TaskPrio[counter].round_robin)); + 8016e14: 4d3f ldr r5, [pc, #252] ; (8016f14 <UTIL_SEQ_Run+0x120>) + 8016e16: eb05 05c3 add.w r5, r5, r3, lsl #3 + 8016e1a: 6868 ldr r0, [r5, #4] + 8016e1c: 4010 ands r0, r2 + 8016e1e: f7ff ffcb bl 8016db8 <SEQ_BitPosition> + 8016e22: 4e3d ldr r6, [pc, #244] ; (8016f18 <UTIL_SEQ_Run+0x124>) + 8016e24: 6030 str r0, [r6, #0] + TaskPrio[counter].round_robin &= ~(1U << CurrentTaskIdx); + 8016e26: 686a ldr r2, [r5, #4] + 8016e28: 2301 movs r3, #1 + 8016e2a: fa03 f000 lsl.w r0, r3, r0 + 8016e2e: ea22 0200 bic.w r2, r2, r0 + 8016e32: 606a str r2, [r5, #4] + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016e34: f3ef 8110 mrs r1, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016e38: b672 cpsid i + TaskSet &= ~(1U << CurrentTaskIdx); + 8016e3a: 6832 ldr r2, [r6, #0] + 8016e3c: fa03 f202 lsl.w r2, r3, r2 + 8016e40: 43d6 mvns r6, r2 + 8016e42: 4d30 ldr r5, [pc, #192] ; (8016f04 <UTIL_SEQ_Run+0x110>) + 8016e44: 6828 ldr r0, [r5, #0] + 8016e46: ea20 0202 bic.w r2, r0, r2 + 8016e4a: 602a str r2, [r5, #0] + for (counter = UTIL_SEQ_CONF_PRIO_NBR; counter != 0U; counter--) + 8016e4c: 2b00 cmp r3, #0 + 8016e4e: d12d bne.n 8016eac <UTIL_SEQ_Run+0xb8> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016e50: f381 8810 msr PRIMASK, r1 + TaskCb[CurrentTaskIdx]( ); + 8016e54: 4b30 ldr r3, [pc, #192] ; (8016f18 <UTIL_SEQ_Run+0x124>) + 8016e56: 681a ldr r2, [r3, #0] + 8016e58: 4b30 ldr r3, [pc, #192] ; (8016f1c <UTIL_SEQ_Run+0x128>) + 8016e5a: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8016e5e: 4798 blx r3 + local_taskset = TaskSet; + 8016e60: 4b28 ldr r3, [pc, #160] ; (8016f04 <UTIL_SEQ_Run+0x110>) + 8016e62: 681a ldr r2, [r3, #0] + local_evtset = EvtSet; + 8016e64: 4b28 ldr r3, [pc, #160] ; (8016f08 <UTIL_SEQ_Run+0x114>) + 8016e66: 681b ldr r3, [r3, #0] + local_taskmask = TaskMask; + 8016e68: 4928 ldr r1, [pc, #160] ; (8016f0c <UTIL_SEQ_Run+0x118>) + 8016e6a: 6808 ldr r0, [r1, #0] + local_evtwaited = EvtWaited; + 8016e6c: 4928 ldr r1, [pc, #160] ; (8016f10 <UTIL_SEQ_Run+0x11c>) + 8016e6e: 6809 ldr r1, [r1, #0] + while(((local_taskset & local_taskmask & SuperMask) != 0U) && ((local_evtset & local_evtwaited)==0U)) + 8016e70: 4002 ands r2, r0 + 8016e72: 4d23 ldr r5, [pc, #140] ; (8016f00 <UTIL_SEQ_Run+0x10c>) + 8016e74: 682d ldr r5, [r5, #0] + 8016e76: 422a tst r2, r5 + 8016e78: d020 beq.n 8016ebc <UTIL_SEQ_Run+0xc8> + 8016e7a: 400b ands r3, r1 + 8016e7c: d11e bne.n 8016ebc <UTIL_SEQ_Run+0xc8> + while((TaskPrio[counter].priority & local_taskmask & SuperMask)== 0U) + 8016e7e: 4a25 ldr r2, [pc, #148] ; (8016f14 <UTIL_SEQ_Run+0x120>) + 8016e80: f852 2033 ldr.w r2, [r2, r3, lsl #3] + 8016e84: 4002 ands r2, r0 + 8016e86: 422a tst r2, r5 + 8016e88: d0c2 beq.n 8016e10 <UTIL_SEQ_Run+0x1c> + current_task_set = TaskPrio[counter].priority & local_taskmask & SuperMask; + 8016e8a: 4922 ldr r1, [pc, #136] ; (8016f14 <UTIL_SEQ_Run+0x120>) + 8016e8c: f851 2033 ldr.w r2, [r1, r3, lsl #3] + 8016e90: 4002 ands r2, r0 + 8016e92: 402a ands r2, r5 + if ((TaskPrio[counter].round_robin & current_task_set) == 0U) + 8016e94: eb01 01c3 add.w r1, r1, r3, lsl #3 + 8016e98: 6849 ldr r1, [r1, #4] + 8016e9a: 4211 tst r1, r2 + 8016e9c: d1ba bne.n 8016e14 <UTIL_SEQ_Run+0x20> + TaskPrio[counter].round_robin = UTIL_SEQ_ALL_BIT_SET; + 8016e9e: 491d ldr r1, [pc, #116] ; (8016f14 <UTIL_SEQ_Run+0x120>) + 8016ea0: eb01 01c3 add.w r1, r1, r3, lsl #3 + 8016ea4: f04f 30ff mov.w r0, #4294967295 + 8016ea8: 6048 str r0, [r1, #4] + 8016eaa: e7b3 b.n 8016e14 <UTIL_SEQ_Run+0x20> + TaskPrio[counter - 1U].priority &= ~(1U << CurrentTaskIdx); + 8016eac: 3b01 subs r3, #1 + 8016eae: 4819 ldr r0, [pc, #100] ; (8016f14 <UTIL_SEQ_Run+0x120>) + 8016eb0: f850 2033 ldr.w r2, [r0, r3, lsl #3] + 8016eb4: 4032 ands r2, r6 + 8016eb6: f840 2033 str.w r2, [r0, r3, lsl #3] + for (counter = UTIL_SEQ_CONF_PRIO_NBR; counter != 0U; counter--) + 8016eba: e7c7 b.n 8016e4c <UTIL_SEQ_Run+0x58> + CurrentTaskIdx = UTIL_SEQ_NOTASKRUNNING; + 8016ebc: 4b16 ldr r3, [pc, #88] ; (8016f18 <UTIL_SEQ_Run+0x124>) + 8016ebe: f04f 32ff mov.w r2, #4294967295 + 8016ec2: 601a str r2, [r3, #0] + UTIL_SEQ_PreIdle( ); + 8016ec4: f7ff ff76 bl 8016db4 <UTIL_SEQ_PreIdle> + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016ec8: f3ef 8510 mrs r5, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016ecc: b672 cpsid i + local_taskset = TaskSet; + 8016ece: 4b0d ldr r3, [pc, #52] ; (8016f04 <UTIL_SEQ_Run+0x110>) + 8016ed0: 681b ldr r3, [r3, #0] + local_evtset = EvtSet; + 8016ed2: 4a0d ldr r2, [pc, #52] ; (8016f08 <UTIL_SEQ_Run+0x114>) + 8016ed4: 6811 ldr r1, [r2, #0] + local_taskmask = TaskMask; + 8016ed6: 4a0d ldr r2, [pc, #52] ; (8016f0c <UTIL_SEQ_Run+0x118>) + 8016ed8: 6812 ldr r2, [r2, #0] + if ((local_taskset & local_taskmask & SuperMask) == 0U) + 8016eda: 4013 ands r3, r2 + 8016edc: 4a08 ldr r2, [pc, #32] ; (8016f00 <UTIL_SEQ_Run+0x10c>) + 8016ede: 6812 ldr r2, [r2, #0] + 8016ee0: 4213 tst r3, r2 + 8016ee2: d103 bne.n 8016eec <UTIL_SEQ_Run+0xf8> + if ((local_evtset & EvtWaited)== 0U) + 8016ee4: 4b0a ldr r3, [pc, #40] ; (8016f10 <UTIL_SEQ_Run+0x11c>) + 8016ee6: 681b ldr r3, [r3, #0] + 8016ee8: 420b tst r3, r1 + 8016eea: d006 beq.n 8016efa <UTIL_SEQ_Run+0x106> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016eec: f385 8810 msr PRIMASK, r5 + UTIL_SEQ_PostIdle( ); + 8016ef0: f7ff ff61 bl 8016db6 <UTIL_SEQ_PostIdle> + SuperMask = super_mask_backup; + 8016ef4: 4b02 ldr r3, [pc, #8] ; (8016f00 <UTIL_SEQ_Run+0x10c>) + 8016ef6: 601c str r4, [r3, #0] +} + 8016ef8: bd70 pop {r4, r5, r6, pc} + UTIL_SEQ_Idle( ); + 8016efa: f7eb fe45 bl 8002b88 <UTIL_SEQ_Idle> + 8016efe: e7f5 b.n 8016eec <UTIL_SEQ_Run+0xf8> + 8016f00: 200008c4 .word 0x200008c4 + 8016f04: 20002e3c .word 0x20002e3c + 8016f08: 20002df4 .word 0x20002df4 + 8016f0c: 200008c8 .word 0x200008c8 + 8016f10: 20002df8 .word 0x20002df8 + 8016f14: 20002e34 .word 0x20002e34 + 8016f18: 20002df0 .word 0x20002df0 + 8016f1c: 20002dfc .word 0x20002dfc + +08016f20 <UTIL_SEQ_RegTask>: +{ + 8016f20: b538 push {r3, r4, r5, lr} + 8016f22: 4614 mov r4, r2 + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8016f24: f3ef 8510 mrs r5, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8016f28: b672 cpsid i + TaskCb[SEQ_BitPosition(TaskId_bm)] = Task; + 8016f2a: f7ff ff45 bl 8016db8 <SEQ_BitPosition> + 8016f2e: 4b03 ldr r3, [pc, #12] ; (8016f3c <UTIL_SEQ_RegTask+0x1c>) + 8016f30: f843 4020 str.w r4, [r3, r0, lsl #2] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8016f34: f385 8810 msr PRIMASK, r5 +} + 8016f38: bd38 pop {r3, r4, r5, pc} + 8016f3a: bf00 nop + 8016f3c: 20002dfc .word 0x20002dfc + +08016f40 <SysTimeAdd>: + * @addtogroup SYSTIME_exported_function + * @{ + */ + +SysTime_t SysTimeAdd( SysTime_t a, SysTime_t b ) +{ + 8016f40: b082 sub sp, #8 + 8016f42: b082 sub sp, #8 + 8016f44: f10d 0c08 add.w ip, sp, #8 + 8016f48: e90c 0006 stmdb ip, {r1, r2} + 8016f4c: 9303 str r3, [sp, #12] + SysTime_t c = { .Seconds = 0, .SubSeconds = 0 }; + 8016f4e: 2200 movs r2, #0 + 8016f50: 6002 str r2, [r0, #0] + 8016f52: 8082 strh r2, [r0, #4] + + c.Seconds = a.Seconds + b.Seconds; + 8016f54: 440b add r3, r1 + 8016f56: 6003 str r3, [r0, #0] + c.SubSeconds = a.SubSeconds + b.SubSeconds; + 8016f58: f8bd 2004 ldrh.w r2, [sp, #4] + 8016f5c: f8bd 1010 ldrh.w r1, [sp, #16] + 8016f60: 440a add r2, r1 + 8016f62: b291 uxth r1, r2 + 8016f64: b212 sxth r2, r2 + 8016f66: 8082 strh r2, [r0, #4] + if( c.SubSeconds >= 1000 ) + 8016f68: f5b2 7f7a cmp.w r2, #1000 ; 0x3e8 + 8016f6c: db04 blt.n 8016f78 <SysTimeAdd+0x38> + { + c.Seconds++; + 8016f6e: 3301 adds r3, #1 + 8016f70: 6003 str r3, [r0, #0] + c.SubSeconds -= 1000; + 8016f72: f5a1 717a sub.w r1, r1, #1000 ; 0x3e8 + 8016f76: 8081 strh r1, [r0, #4] + } + return c; +} + 8016f78: b002 add sp, #8 + 8016f7a: b002 add sp, #8 + 8016f7c: 4770 bx lr + +08016f7e <SysTimeSub>: + +SysTime_t SysTimeSub( SysTime_t a, SysTime_t b ) +{ + 8016f7e: b082 sub sp, #8 + 8016f80: b082 sub sp, #8 + 8016f82: f10d 0c08 add.w ip, sp, #8 + 8016f86: e90c 0006 stmdb ip, {r1, r2} + 8016f8a: 9303 str r3, [sp, #12] + SysTime_t c = { .Seconds = 0, .SubSeconds = 0 }; + 8016f8c: 2200 movs r2, #0 + 8016f8e: 6002 str r2, [r0, #0] + 8016f90: 8082 strh r2, [r0, #4] + + c.Seconds = a.Seconds - b.Seconds; + 8016f92: 1acb subs r3, r1, r3 + 8016f94: 6003 str r3, [r0, #0] + c.SubSeconds = a.SubSeconds - b.SubSeconds; + 8016f96: f8bd 2004 ldrh.w r2, [sp, #4] + 8016f9a: f8bd 1010 ldrh.w r1, [sp, #16] + 8016f9e: 1a52 subs r2, r2, r1 + 8016fa0: b291 uxth r1, r2 + 8016fa2: b212 sxth r2, r2 + 8016fa4: 8082 strh r2, [r0, #4] + if( c.SubSeconds < 0 ) + 8016fa6: 2a00 cmp r2, #0 + 8016fa8: db02 blt.n 8016fb0 <SysTimeSub+0x32> + { + c.Seconds--; + c.SubSeconds += 1000; + } + return c; +} + 8016faa: b002 add sp, #8 + 8016fac: b002 add sp, #8 + 8016fae: 4770 bx lr + c.Seconds--; + 8016fb0: 3b01 subs r3, #1 + 8016fb2: 6003 str r3, [r0, #0] + c.SubSeconds += 1000; + 8016fb4: f501 717a add.w r1, r1, #1000 ; 0x3e8 + 8016fb8: 8081 strh r1, [r0, #4] + return c; + 8016fba: e7f6 b.n 8016faa <SysTimeSub+0x2c> + +08016fbc <SysTimeSet>: + +void SysTimeSet( SysTime_t sysTime ) +{ + 8016fbc: b530 push {r4, r5, lr} + 8016fbe: b089 sub sp, #36 ; 0x24 + 8016fc0: ac02 add r4, sp, #8 + 8016fc2: e884 0003 stmia.w r4, {r0, r1} + SysTime_t DeltaTime; + + SysTime_t calendarTime = { .Seconds = 0, .SubSeconds = 0 }; + 8016fc6: 2300 movs r3, #0 + 8016fc8: 9304 str r3, [sp, #16] + 8016fca: f8ad 3014 strh.w r3, [sp, #20] + + calendarTime.Seconds = UTIL_SYSTIMDriver.GetCalendarTime( ( uint16_t* )&calendarTime.SubSeconds ); + 8016fce: 4d0b ldr r5, [pc, #44] ; (8016ffc <SysTimeSet+0x40>) + 8016fd0: 692b ldr r3, [r5, #16] + 8016fd2: a805 add r0, sp, #20 + 8016fd4: 4798 blx r3 + 8016fd6: 4603 mov r3, r0 + 8016fd8: 9004 str r0, [sp, #16] + + // sysTime is UNIX epoch + DeltaTime = SysTimeSub( sysTime, calendarTime ); + 8016fda: 9a05 ldr r2, [sp, #20] + 8016fdc: 9200 str r2, [sp, #0] + 8016fde: e894 0006 ldmia.w r4, {r1, r2} + 8016fe2: a806 add r0, sp, #24 + 8016fe4: f7ff ffcb bl 8016f7e <SysTimeSub> + + UTIL_SYSTIMDriver.BKUPWrite_Seconds( DeltaTime.Seconds ); + 8016fe8: 682b ldr r3, [r5, #0] + 8016fea: 9806 ldr r0, [sp, #24] + 8016fec: 4798 blx r3 + UTIL_SYSTIMDriver.BKUPWrite_SubSeconds( ( uint32_t ) DeltaTime.SubSeconds ); + 8016fee: 68ab ldr r3, [r5, #8] + 8016ff0: f9bd 001c ldrsh.w r0, [sp, #28] + 8016ff4: 4798 blx r3 +} + 8016ff6: b009 add sp, #36 ; 0x24 + 8016ff8: bd30 pop {r4, r5, pc} + 8016ffa: bf00 nop + 8016ffc: 08017950 .word 0x08017950 + +08017000 <SysTimeGet>: + +SysTime_t SysTimeGet( void ) +{ + 8017000: b530 push {r4, r5, lr} + 8017002: b087 sub sp, #28 + 8017004: 4604 mov r4, r0 + SysTime_t calendarTime = { .Seconds = 0, .SubSeconds = 0 }; + 8017006: 2300 movs r3, #0 + 8017008: 9304 str r3, [sp, #16] + 801700a: f8ad 3014 strh.w r3, [sp, #20] + SysTime_t sysTime = { .Seconds = 0, .SubSeconds = 0 }; + 801700e: 6003 str r3, [r0, #0] + 8017010: 8083 strh r3, [r0, #4] + SysTime_t DeltaTime; + + calendarTime.Seconds = UTIL_SYSTIMDriver.GetCalendarTime( ( uint16_t* )&calendarTime.SubSeconds ); + 8017012: 4d0b ldr r5, [pc, #44] ; (8017040 <SysTimeGet+0x40>) + 8017014: 692b ldr r3, [r5, #16] + 8017016: a805 add r0, sp, #20 + 8017018: 4798 blx r3 + 801701a: 9004 str r0, [sp, #16] + + DeltaTime.SubSeconds = (int16_t)UTIL_SYSTIMDriver.BKUPRead_SubSeconds(); + 801701c: 68eb ldr r3, [r5, #12] + 801701e: 4798 blx r3 + 8017020: f8ad 000c strh.w r0, [sp, #12] + DeltaTime.Seconds = UTIL_SYSTIMDriver.BKUPRead_Seconds(); + 8017024: 686b ldr r3, [r5, #4] + 8017026: 4798 blx r3 + 8017028: 9002 str r0, [sp, #8] + + sysTime = SysTimeAdd( DeltaTime, calendarTime ); + 801702a: 9b05 ldr r3, [sp, #20] + 801702c: 9300 str r3, [sp, #0] + 801702e: 9b04 ldr r3, [sp, #16] + 8017030: aa02 add r2, sp, #8 + 8017032: ca06 ldmia r2, {r1, r2} + 8017034: 4620 mov r0, r4 + 8017036: f7ff ff83 bl 8016f40 <SysTimeAdd> + + return sysTime; +} + 801703a: 4620 mov r0, r4 + 801703c: b007 add sp, #28 + 801703e: bd30 pop {r4, r5, pc} + 8017040: 08017950 .word 0x08017950 + +08017044 <SysTimeGetMcuTime>: + + +SysTime_t SysTimeGetMcuTime( void ) +{ + 8017044: b530 push {r4, r5, lr} + 8017046: b083 sub sp, #12 + 8017048: 4604 mov r4, r0 + SysTime_t calendarTime = { .Seconds = 0, .SubSeconds = 0 }; + 801704a: 2300 movs r3, #0 + 801704c: 9300 str r3, [sp, #0] + 801704e: f8ad 3004 strh.w r3, [sp, #4] + + calendarTime.Seconds = UTIL_SYSTIMDriver.GetCalendarTime( ( uint16_t* )&calendarTime.SubSeconds ); + 8017052: 4b06 ldr r3, [pc, #24] ; (801706c <SysTimeGetMcuTime+0x28>) + 8017054: 691b ldr r3, [r3, #16] + 8017056: 466d mov r5, sp + 8017058: a801 add r0, sp, #4 + 801705a: 4798 blx r3 + 801705c: 9000 str r0, [sp, #0] + + return calendarTime; + 801705e: e895 0003 ldmia.w r5, {r0, r1} + 8017062: e884 0003 stmia.w r4, {r0, r1} +} + 8017066: 4620 mov r0, r4 + 8017068: b003 add sp, #12 + 801706a: bd30 pop {r4, r5, pc} + 801706c: 08017950 .word 0x08017950 + +08017070 <SysTimeToMs>: + +uint32_t SysTimeToMs( SysTime_t sysTime ) +{ + 8017070: b530 push {r4, r5, lr} + 8017072: b089 sub sp, #36 ; 0x24 + 8017074: ac02 add r4, sp, #8 + 8017076: e884 0003 stmia.w r4, {r0, r1} + SysTime_t DeltaTime; + DeltaTime.SubSeconds = (int16_t)UTIL_SYSTIMDriver.BKUPRead_SubSeconds(); + 801707a: 4d0c ldr r5, [pc, #48] ; (80170ac <SysTimeToMs+0x3c>) + 801707c: 68eb ldr r3, [r5, #12] + 801707e: 4798 blx r3 + 8017080: f8ad 001c strh.w r0, [sp, #28] + DeltaTime.Seconds = UTIL_SYSTIMDriver.BKUPRead_Seconds(); + 8017084: 686b ldr r3, [r5, #4] + 8017086: 4798 blx r3 + 8017088: 4603 mov r3, r0 + 801708a: 9006 str r0, [sp, #24] + + SysTime_t calendarTime = SysTimeSub( sysTime, DeltaTime ); + 801708c: 9a07 ldr r2, [sp, #28] + 801708e: 9200 str r2, [sp, #0] + 8017090: e894 0006 ldmia.w r4, {r1, r2} + 8017094: a804 add r0, sp, #16 + 8017096: f7ff ff72 bl 8016f7e <SysTimeSub> + return calendarTime.Seconds * 1000 + calendarTime.SubSeconds; + 801709a: f9bd 3014 ldrsh.w r3, [sp, #20] +} + 801709e: 9a04 ldr r2, [sp, #16] + 80170a0: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80170a4: fb00 3002 mla r0, r0, r2, r3 + 80170a8: b009 add sp, #36 ; 0x24 + 80170aa: bd30 pop {r4, r5, pc} + 80170ac: 08017950 .word 0x08017950 + +080170b0 <SysTimeFromMs>: + +SysTime_t SysTimeFromMs( uint32_t timeMs ) +{ + 80170b0: b530 push {r4, r5, lr} + 80170b2: b087 sub sp, #28 + 80170b4: 4604 mov r4, r0 + uint32_t seconds = timeMs / 1000; + 80170b6: 4b12 ldr r3, [pc, #72] ; (8017100 <SysTimeFromMs+0x50>) + 80170b8: fba3 2301 umull r2, r3, r3, r1 + 80170bc: 099b lsrs r3, r3, #6 + SysTime_t sysTime = { .Seconds = seconds, .SubSeconds = timeMs - seconds * 1000 }; + 80170be: 9304 str r3, [sp, #16] + 80170c0: ebc3 1243 rsb r2, r3, r3, lsl #5 + 80170c4: eb03 0382 add.w r3, r3, r2, lsl #2 + 80170c8: eba1 01c3 sub.w r1, r1, r3, lsl #3 + 80170cc: f8ad 1014 strh.w r1, [sp, #20] + SysTime_t DeltaTime = { 0 }; + 80170d0: 2300 movs r3, #0 + 80170d2: 9302 str r3, [sp, #8] + 80170d4: 9303 str r3, [sp, #12] + + DeltaTime.SubSeconds = (int16_t)UTIL_SYSTIMDriver.BKUPRead_SubSeconds(); + 80170d6: 4d0b ldr r5, [pc, #44] ; (8017104 <SysTimeFromMs+0x54>) + 80170d8: 68eb ldr r3, [r5, #12] + 80170da: 4798 blx r3 + 80170dc: f8ad 000c strh.w r0, [sp, #12] + DeltaTime.Seconds = UTIL_SYSTIMDriver.BKUPRead_Seconds(); + 80170e0: 686b ldr r3, [r5, #4] + 80170e2: 4798 blx r3 + 80170e4: 4603 mov r3, r0 + 80170e6: 9002 str r0, [sp, #8] + return SysTimeAdd( sysTime, DeltaTime ); + 80170e8: 9a03 ldr r2, [sp, #12] + 80170ea: 9200 str r2, [sp, #0] + 80170ec: aa06 add r2, sp, #24 + 80170ee: e912 0006 ldmdb r2, {r1, r2} + 80170f2: 4620 mov r0, r4 + 80170f4: f7ff ff24 bl 8016f40 <SysTimeAdd> +} + 80170f8: 4620 mov r0, r4 + 80170fa: b007 add sp, #28 + 80170fc: bd30 pop {r4, r5, pc} + 80170fe: bf00 nop + 8017100: 10624dd3 .word 0x10624dd3 + 8017104: 08017950 .word 0x08017950 + +08017108 <UTIL_TIMER_Init>: + * @addtogroup TIMER_SERVER_exported_function + * @{ + */ + +UTIL_TIMER_Status_t UTIL_TIMER_Init(void) +{ + 8017108: b508 push {r3, lr} + UTIL_TIMER_INIT_CRITICAL_SECTION(); + TimerListHead = NULL; + 801710a: 4b03 ldr r3, [pc, #12] ; (8017118 <UTIL_TIMER_Init+0x10>) + 801710c: 2200 movs r2, #0 + 801710e: 601a str r2, [r3, #0] + return UTIL_TimerDriver.InitTimer(); + 8017110: 4b02 ldr r3, [pc, #8] ; (801711c <UTIL_TIMER_Init+0x14>) + 8017112: 681b ldr r3, [r3, #0] + 8017114: 4798 blx r3 +} + 8017116: bd08 pop {r3, pc} + 8017118: 20002e40 .word 0x20002e40 + 801711c: 08017964 .word 0x08017964 + +08017120 <UTIL_TIMER_Create>: + return UTIL_TimerDriver.DeInitTimer(); +} + +UTIL_TIMER_Status_t UTIL_TIMER_Create( UTIL_TIMER_Object_t *TimerObject, uint32_t PeriodValue, UTIL_TIMER_Mode_t Mode, void ( *Callback )( void *), void *Argument) +{ + if((TimerObject != NULL) && (Callback != NULL)) + 8017120: b1a8 cbz r0, 801714e <UTIL_TIMER_Create+0x2e> +{ + 8017122: b5f8 push {r3, r4, r5, r6, r7, lr} + 8017124: 4617 mov r7, r2 + 8017126: 461e mov r6, r3 + 8017128: 4604 mov r4, r0 + if((TimerObject != NULL) && (Callback != NULL)) + 801712a: b193 cbz r3, 8017152 <UTIL_TIMER_Create+0x32> + { + TimerObject->Timestamp = 0U; + 801712c: 2500 movs r5, #0 + 801712e: 6005 str r5, [r0, #0] + TimerObject->ReloadValue = UTIL_TimerDriver.ms2Tick(PeriodValue); + 8017130: 4b09 ldr r3, [pc, #36] ; (8017158 <UTIL_TIMER_Create+0x38>) + 8017132: 6a5b ldr r3, [r3, #36] ; 0x24 + 8017134: 4608 mov r0, r1 + 8017136: 4798 blx r3 + 8017138: 6060 str r0, [r4, #4] + TimerObject->IsPending = 0U; + 801713a: 7225 strb r5, [r4, #8] + TimerObject->IsRunning = 0U; + 801713c: 7265 strb r5, [r4, #9] + TimerObject->IsReloadStopped = 0U; + 801713e: 72a5 strb r5, [r4, #10] + TimerObject->Callback = Callback; + 8017140: 60e6 str r6, [r4, #12] + TimerObject->argument = Argument; + 8017142: 9b06 ldr r3, [sp, #24] + 8017144: 6123 str r3, [r4, #16] + TimerObject->Mode = Mode; + 8017146: 72e7 strb r7, [r4, #11] + TimerObject->Next = NULL; + 8017148: 6165 str r5, [r4, #20] + return UTIL_TIMER_OK; + 801714a: 4628 mov r0, r5 + } + else + { + return UTIL_TIMER_INVALID_PARAM; + } +} + 801714c: bdf8 pop {r3, r4, r5, r6, r7, pc} + return UTIL_TIMER_INVALID_PARAM; + 801714e: 2001 movs r0, #1 +} + 8017150: 4770 bx lr + return UTIL_TIMER_INVALID_PARAM; + 8017152: 2001 movs r0, #1 + 8017154: e7fa b.n 801714c <UTIL_TIMER_Create+0x2c> + 8017156: bf00 nop + 8017158: 08017964 .word 0x08017964 + +0801715c <UTIL_TIMER_GetCurrentTime>: + } + UTIL_TIMER_EXIT_CRITICAL_SECTION(); +} + +UTIL_TIMER_Time_t UTIL_TIMER_GetCurrentTime(void) +{ + 801715c: b510 push {r4, lr} + uint32_t now = UTIL_TimerDriver.GetTimerValue( ); + 801715e: 4c03 ldr r4, [pc, #12] ; (801716c <UTIL_TIMER_GetCurrentTime+0x10>) + 8017160: 69e3 ldr r3, [r4, #28] + 8017162: 4798 blx r3 + return UTIL_TimerDriver.Tick2ms(now); + 8017164: 6aa3 ldr r3, [r4, #40] ; 0x28 + 8017166: 4798 blx r3 +} + 8017168: bd10 pop {r4, pc} + 801716a: bf00 nop + 801716c: 08017964 .word 0x08017964 + +08017170 <UTIL_TIMER_GetElapsedTime>: + +UTIL_TIMER_Time_t UTIL_TIMER_GetElapsedTime(UTIL_TIMER_Time_t past ) +{ + 8017170: b570 push {r4, r5, r6, lr} + 8017172: 4606 mov r6, r0 + uint32_t nowInTicks = UTIL_TimerDriver.GetTimerValue( ); + 8017174: 4d05 ldr r5, [pc, #20] ; (801718c <UTIL_TIMER_GetElapsedTime+0x1c>) + 8017176: 69eb ldr r3, [r5, #28] + 8017178: 4798 blx r3 + 801717a: 4604 mov r4, r0 + uint32_t pastInTicks = UTIL_TimerDriver.ms2Tick( past ); + 801717c: 6a6b ldr r3, [r5, #36] ; 0x24 + 801717e: 4630 mov r0, r6 + 8017180: 4798 blx r3 + /* intentional wrap around. Works Ok if tick duation below 1ms */ + return UTIL_TimerDriver.Tick2ms( nowInTicks- pastInTicks ); + 8017182: 6aab ldr r3, [r5, #40] ; 0x28 + 8017184: 1a20 subs r0, r4, r0 + 8017186: 4798 blx r3 +} + 8017188: bd70 pop {r4, r5, r6, pc} + 801718a: bf00 nop + 801718c: 08017964 .word 0x08017964 + +08017190 <TimerExists>: + * @param TimerObject Structure containing the timer object parameters + * @retval 1 (the object is already in the list) or 0 + */ +bool TimerExists( UTIL_TIMER_Object_t *TimerObject ) +{ + UTIL_TIMER_Object_t* cur = TimerListHead; + 8017190: 4b05 ldr r3, [pc, #20] ; (80171a8 <TimerExists+0x18>) + 8017192: 681b ldr r3, [r3, #0] + + while( cur != NULL ) + 8017194: e000 b.n 8017198 <TimerExists+0x8> + { + if( cur == TimerObject ) + { + return true; + } + cur = cur->Next; + 8017196: 695b ldr r3, [r3, #20] + while( cur != NULL ) + 8017198: b11b cbz r3, 80171a2 <TimerExists+0x12> + if( cur == TimerObject ) + 801719a: 4283 cmp r3, r0 + 801719c: d1fb bne.n 8017196 <TimerExists+0x6> + return true; + 801719e: 2001 movs r0, #1 + } + return false; +} + 80171a0: 4770 bx lr + return false; + 80171a2: 2000 movs r0, #0 + 80171a4: 4770 bx lr + 80171a6: bf00 nop + 80171a8: 20002e40 .word 0x20002e40 + +080171ac <TimerSetTimeout>: + * @brief Sets a timeout with the duration "timestamp" + * + * @param TimerObject Structure containing the timer object parameters + */ +void TimerSetTimeout( UTIL_TIMER_Object_t *TimerObject ) +{ + 80171ac: b5f8 push {r3, r4, r5, r6, r7, lr} + 80171ae: 4604 mov r4, r0 + uint32_t minTicks= UTIL_TimerDriver.GetMinimumTimeout( ); + 80171b0: 4e09 ldr r6, [pc, #36] ; (80171d8 <TimerSetTimeout+0x2c>) + 80171b2: 6a33 ldr r3, [r6, #32] + 80171b4: 4798 blx r3 + 80171b6: 4605 mov r5, r0 + TimerObject->IsPending = 1; + 80171b8: 2301 movs r3, #1 + 80171ba: 7223 strb r3, [r4, #8] + + /* In case deadline too soon */ + if(TimerObject->Timestamp < (UTIL_TimerDriver.GetTimerElapsedTime( ) + minTicks) ) + 80171bc: 6827 ldr r7, [r4, #0] + 80171be: 69b6 ldr r6, [r6, #24] + 80171c0: 47b0 blx r6 + 80171c2: 4428 add r0, r5 + 80171c4: 4287 cmp r7, r0 + 80171c6: d202 bcs.n 80171ce <TimerSetTimeout+0x22> + { + TimerObject->Timestamp = UTIL_TimerDriver.GetTimerElapsedTime( ) + minTicks; + 80171c8: 47b0 blx r6 + 80171ca: 4428 add r0, r5 + 80171cc: 6020 str r0, [r4, #0] + } + UTIL_TimerDriver.StartTimerEvt( TimerObject->Timestamp ); + 80171ce: 4b02 ldr r3, [pc, #8] ; (80171d8 <TimerSetTimeout+0x2c>) + 80171d0: 689b ldr r3, [r3, #8] + 80171d2: 6820 ldr r0, [r4, #0] + 80171d4: 4798 blx r3 +} + 80171d6: bdf8 pop {r3, r4, r5, r6, r7, pc} + 80171d8: 08017964 .word 0x08017964 + +080171dc <UTIL_TIMER_Stop>: + if (NULL != TimerObject) + 80171dc: b368 cbz r0, 801723a <UTIL_TIMER_Stop+0x5e> +{ + 80171de: b510 push {r4, lr} + 80171e0: 4602 mov r2, r0 + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 80171e2: f3ef 8410 mrs r4, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 80171e6: b672 cpsid i + UTIL_TIMER_Object_t* prev = TimerListHead; + 80171e8: 4b15 ldr r3, [pc, #84] ; (8017240 <UTIL_TIMER_Stop+0x64>) + 80171ea: 6819 ldr r1, [r3, #0] + TimerObject->IsReloadStopped = 1U; + 80171ec: 2301 movs r3, #1 + 80171ee: 7283 strb r3, [r0, #10] + if(NULL != TimerListHead) + 80171f0: b1e1 cbz r1, 801722c <UTIL_TIMER_Stop+0x50> + TimerObject->IsRunning = 0U; + 80171f2: 2300 movs r3, #0 + 80171f4: 7243 strb r3, [r0, #9] + if( TimerListHead == TimerObject ) /* Stop the Head */ + 80171f6: 4288 cmp r0, r1 + 80171f8: d006 beq.n 8017208 <UTIL_TIMER_Stop+0x2c> + UTIL_TIMER_Object_t* cur = TimerListHead; + 80171fa: 460b mov r3, r1 + while( cur != NULL ) + 80171fc: b1b3 cbz r3, 801722c <UTIL_TIMER_Stop+0x50> + if( cur == TimerObject ) + 80171fe: 4293 cmp r3, r2 + 8017200: d011 beq.n 8017226 <UTIL_TIMER_Stop+0x4a> + prev = cur; + 8017202: 4619 mov r1, r3 + cur = cur->Next; + 8017204: 695b ldr r3, [r3, #20] + 8017206: e7f9 b.n 80171fc <UTIL_TIMER_Stop+0x20> + TimerListHead->IsPending = 0; + 8017208: 720b strb r3, [r1, #8] + if( TimerListHead->Next != NULL ) + 801720a: 6948 ldr r0, [r1, #20] + 801720c: b120 cbz r0, 8017218 <UTIL_TIMER_Stop+0x3c> + TimerListHead = TimerListHead->Next; + 801720e: 4b0c ldr r3, [pc, #48] ; (8017240 <UTIL_TIMER_Stop+0x64>) + 8017210: 6018 str r0, [r3, #0] + TimerSetTimeout( TimerListHead ); + 8017212: f7ff ffcb bl 80171ac <TimerSetTimeout> + 8017216: e009 b.n 801722c <UTIL_TIMER_Stop+0x50> + UTIL_TimerDriver.StopTimerEvt( ); + 8017218: 4b0a ldr r3, [pc, #40] ; (8017244 <UTIL_TIMER_Stop+0x68>) + 801721a: 68db ldr r3, [r3, #12] + 801721c: 4798 blx r3 + TimerListHead = NULL; + 801721e: 4b08 ldr r3, [pc, #32] ; (8017240 <UTIL_TIMER_Stop+0x64>) + 8017220: 2200 movs r2, #0 + 8017222: 601a str r2, [r3, #0] + 8017224: e002 b.n 801722c <UTIL_TIMER_Stop+0x50> + if( cur->Next != NULL ) + 8017226: 695b ldr r3, [r3, #20] + 8017228: b123 cbz r3, 8017234 <UTIL_TIMER_Stop+0x58> + prev->Next = cur; + 801722a: 614b str r3, [r1, #20] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 801722c: f384 8810 msr PRIMASK, r4 +} + 8017230: 2000 movs r0, #0 +} + 8017232: bd10 pop {r4, pc} + prev->Next = cur; + 8017234: 2300 movs r3, #0 + 8017236: 614b str r3, [r1, #20] + 8017238: e7f8 b.n 801722c <UTIL_TIMER_Stop+0x50> + ret = UTIL_TIMER_INVALID_PARAM; + 801723a: 2001 movs r0, #1 +} + 801723c: 4770 bx lr + 801723e: bf00 nop + 8017240: 20002e40 .word 0x20002e40 + 8017244: 08017964 .word 0x08017964 + +08017248 <TimerInsertTimer>: + * + * @param TimerObject Structure containing the timer object parameters + */ +void TimerInsertTimer( UTIL_TIMER_Object_t *TimerObject) +{ + UTIL_TIMER_Object_t* cur = TimerListHead; + 8017248: 4b09 ldr r3, [pc, #36] ; (8017270 <TimerInsertTimer+0x28>) + 801724a: 681a ldr r2, [r3, #0] + UTIL_TIMER_Object_t* next = TimerListHead->Next; + 801724c: 6953 ldr r3, [r2, #20] + + while (cur->Next != NULL ) + 801724e: e001 b.n 8017254 <TimerInsertTimer+0xc> + { + if( TimerObject->Timestamp > next->Timestamp ) + { + cur = next; + 8017250: 461a mov r2, r3 + next = next->Next; + 8017252: 695b ldr r3, [r3, #20] + while (cur->Next != NULL ) + 8017254: 6951 ldr r1, [r2, #20] + 8017256: b139 cbz r1, 8017268 <TimerInsertTimer+0x20> + if( TimerObject->Timestamp > next->Timestamp ) + 8017258: 6819 ldr r1, [r3, #0] + 801725a: f8d0 c000 ldr.w ip, [r0] + 801725e: 458c cmp ip, r1 + 8017260: d8f6 bhi.n 8017250 <TimerInsertTimer+0x8> + } + else + { + cur->Next = TimerObject; + 8017262: 6150 str r0, [r2, #20] + TimerObject->Next = next; + 8017264: 6143 str r3, [r0, #20] + return; + 8017266: 4770 bx lr + + } + } + cur->Next = TimerObject; + 8017268: 6150 str r0, [r2, #20] + TimerObject->Next = NULL; + 801726a: 2300 movs r3, #0 + 801726c: 6143 str r3, [r0, #20] +} + 801726e: 4770 bx lr + 8017270: 20002e40 .word 0x20002e40 + +08017274 <TimerInsertNewHeadTimer>: + * + * @remark The list is automatically sorted. The list head always contains the + * next timer to expire. + */ +void TimerInsertNewHeadTimer( UTIL_TIMER_Object_t *TimerObject ) +{ + 8017274: b508 push {r3, lr} + UTIL_TIMER_Object_t* cur = TimerListHead; + 8017276: 4b05 ldr r3, [pc, #20] ; (801728c <TimerInsertNewHeadTimer+0x18>) + 8017278: 681b ldr r3, [r3, #0] + + if( cur != NULL ) + 801727a: b10b cbz r3, 8017280 <TimerInsertNewHeadTimer+0xc> + { + cur->IsPending = 0; + 801727c: 2200 movs r2, #0 + 801727e: 721a strb r2, [r3, #8] + } + + TimerObject->Next = cur; + 8017280: 6143 str r3, [r0, #20] + TimerListHead = TimerObject; + 8017282: 4b02 ldr r3, [pc, #8] ; (801728c <TimerInsertNewHeadTimer+0x18>) + 8017284: 6018 str r0, [r3, #0] + TimerSetTimeout( TimerListHead ); + 8017286: f7ff ff91 bl 80171ac <TimerSetTimeout> +} + 801728a: bd08 pop {r3, pc} + 801728c: 20002e40 .word 0x20002e40 + +08017290 <UTIL_TIMER_Start>: +{ + 8017290: b5f8 push {r3, r4, r5, r6, r7, lr} + if(( TimerObject != NULL ) && ( TimerExists( TimerObject ) == false ) && (TimerObject->IsRunning == 0U)) + 8017292: 2800 cmp r0, #0 + 8017294: d036 beq.n 8017304 <UTIL_TIMER_Start+0x74> + 8017296: 4604 mov r4, r0 + 8017298: f7ff ff7a bl 8017190 <TimerExists> + 801729c: 2800 cmp r0, #0 + 801729e: d134 bne.n 801730a <UTIL_TIMER_Start+0x7a> + 80172a0: 7a65 ldrb r5, [r4, #9] + 80172a2: 2d00 cmp r5, #0 + 80172a4: d133 bne.n 801730e <UTIL_TIMER_Start+0x7e> + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 80172a6: f3ef 8610 mrs r6, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 80172aa: b672 cpsid i + ticks = TimerObject->ReloadValue; + 80172ac: 6867 ldr r7, [r4, #4] + minValue = UTIL_TimerDriver.GetMinimumTimeout( ); + 80172ae: 4b19 ldr r3, [pc, #100] ; (8017314 <UTIL_TIMER_Start+0x84>) + 80172b0: 6a1b ldr r3, [r3, #32] + 80172b2: 4798 blx r3 + if( ticks < minValue ) + 80172b4: 4287 cmp r7, r0 + 80172b6: d300 bcc.n 80172ba <UTIL_TIMER_Start+0x2a> + ticks = TimerObject->ReloadValue; + 80172b8: 4638 mov r0, r7 + TimerObject->Timestamp = ticks; + 80172ba: 6020 str r0, [r4, #0] + TimerObject->IsPending = 0U; + 80172bc: 2300 movs r3, #0 + 80172be: 7223 strb r3, [r4, #8] + TimerObject->IsRunning = 1U; + 80172c0: 2201 movs r2, #1 + 80172c2: 7262 strb r2, [r4, #9] + TimerObject->IsReloadStopped = 0U; + 80172c4: 72a3 strb r3, [r4, #10] + if( TimerListHead == NULL ) + 80172c6: 4b14 ldr r3, [pc, #80] ; (8017318 <UTIL_TIMER_Start+0x88>) + 80172c8: 681b ldr r3, [r3, #0] + 80172ca: b183 cbz r3, 80172ee <UTIL_TIMER_Start+0x5e> + elapsedTime = UTIL_TimerDriver.GetTimerElapsedTime( ); + 80172cc: 4b11 ldr r3, [pc, #68] ; (8017314 <UTIL_TIMER_Start+0x84>) + 80172ce: 699b ldr r3, [r3, #24] + 80172d0: 4798 blx r3 + TimerObject->Timestamp += elapsedTime; + 80172d2: 6823 ldr r3, [r4, #0] + 80172d4: 4418 add r0, r3 + 80172d6: 6020 str r0, [r4, #0] + if( TimerObject->Timestamp < TimerListHead->Timestamp ) + 80172d8: 4b0f ldr r3, [pc, #60] ; (8017318 <UTIL_TIMER_Start+0x88>) + 80172da: 681b ldr r3, [r3, #0] + 80172dc: 681b ldr r3, [r3, #0] + 80172de: 4298 cmp r0, r3 + 80172e0: d20c bcs.n 80172fc <UTIL_TIMER_Start+0x6c> + TimerInsertNewHeadTimer( TimerObject); + 80172e2: 4620 mov r0, r4 + 80172e4: f7ff ffc6 bl 8017274 <TimerInsertNewHeadTimer> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 80172e8: f386 8810 msr PRIMASK, r6 +} + 80172ec: e00b b.n 8017306 <UTIL_TIMER_Start+0x76> + UTIL_TimerDriver.SetTimerContext(); + 80172ee: 4b09 ldr r3, [pc, #36] ; (8017314 <UTIL_TIMER_Start+0x84>) + 80172f0: 691b ldr r3, [r3, #16] + 80172f2: 4798 blx r3 + TimerInsertNewHeadTimer( TimerObject ); /* insert a timeout at now+obj->Timestamp */ + 80172f4: 4620 mov r0, r4 + 80172f6: f7ff ffbd bl 8017274 <TimerInsertNewHeadTimer> + 80172fa: e7f5 b.n 80172e8 <UTIL_TIMER_Start+0x58> + TimerInsertTimer( TimerObject); + 80172fc: 4620 mov r0, r4 + 80172fe: f7ff ffa3 bl 8017248 <TimerInsertTimer> + 8017302: e7f1 b.n 80172e8 <UTIL_TIMER_Start+0x58> + ret = UTIL_TIMER_INVALID_PARAM; + 8017304: 2501 movs r5, #1 +} + 8017306: 4628 mov r0, r5 + 8017308: bdf8 pop {r3, r4, r5, r6, r7, pc} + ret = UTIL_TIMER_INVALID_PARAM; + 801730a: 2501 movs r5, #1 + 801730c: e7fb b.n 8017306 <UTIL_TIMER_Start+0x76> + 801730e: 2501 movs r5, #1 + 8017310: e7f9 b.n 8017306 <UTIL_TIMER_Start+0x76> + 8017312: bf00 nop + 8017314: 08017964 .word 0x08017964 + 8017318: 20002e40 .word 0x20002e40 + +0801731c <UTIL_TIMER_SetPeriod>: + if(NULL == TimerObject) + 801731c: b198 cbz r0, 8017346 <UTIL_TIMER_SetPeriod+0x2a> +{ + 801731e: b510 push {r4, lr} + 8017320: 4604 mov r4, r0 + TimerObject->ReloadValue = UTIL_TimerDriver.ms2Tick(NewPeriodValue); + 8017322: 4b0a ldr r3, [pc, #40] ; (801734c <UTIL_TIMER_SetPeriod+0x30>) + 8017324: 6a5b ldr r3, [r3, #36] ; 0x24 + 8017326: 4608 mov r0, r1 + 8017328: 4798 blx r3 + 801732a: 6060 str r0, [r4, #4] + if(TimerExists(TimerObject)) + 801732c: 4620 mov r0, r4 + 801732e: f7ff ff2f bl 8017190 <TimerExists> + 8017332: b908 cbnz r0, 8017338 <UTIL_TIMER_SetPeriod+0x1c> + UTIL_TIMER_Status_t ret = UTIL_TIMER_OK; + 8017334: 2000 movs r0, #0 +} + 8017336: bd10 pop {r4, pc} + (void)UTIL_TIMER_Stop(TimerObject); + 8017338: 4620 mov r0, r4 + 801733a: f7ff ff4f bl 80171dc <UTIL_TIMER_Stop> + ret = UTIL_TIMER_Start(TimerObject); + 801733e: 4620 mov r0, r4 + 8017340: f7ff ffa6 bl 8017290 <UTIL_TIMER_Start> + 8017344: e7f7 b.n 8017336 <UTIL_TIMER_SetPeriod+0x1a> + ret = UTIL_TIMER_INVALID_PARAM; + 8017346: 2001 movs r0, #1 +} + 8017348: 4770 bx lr + 801734a: bf00 nop + 801734c: 08017964 .word 0x08017964 + +08017350 <UTIL_TIMER_IRQ_Handler>: +{ + 8017350: b570 push {r4, r5, r6, lr} + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8017352: f3ef 8510 mrs r5, PRIMASK + __ASM volatile ("cpsid i" : : : "memory"); + 8017356: b672 cpsid i + old = UTIL_TimerDriver.GetTimerContext( ); + 8017358: 4c1e ldr r4, [pc, #120] ; (80173d4 <UTIL_TIMER_IRQ_Handler+0x84>) + 801735a: 6963 ldr r3, [r4, #20] + 801735c: 4798 blx r3 + 801735e: 4606 mov r6, r0 + now = UTIL_TimerDriver.SetTimerContext( ); + 8017360: 6923 ldr r3, [r4, #16] + 8017362: 4798 blx r3 + DeltaContext = now - old; /*intentional wrap around */ + 8017364: 1b84 subs r4, r0, r6 + if ( TimerListHead != NULL ) + 8017366: 4b1c ldr r3, [pc, #112] ; (80173d8 <UTIL_TIMER_IRQ_Handler+0x88>) + 8017368: 681b ldr r3, [r3, #0] + 801736a: b923 cbnz r3, 8017376 <UTIL_TIMER_IRQ_Handler+0x26> + 801736c: e018 b.n 80173a0 <UTIL_TIMER_IRQ_Handler+0x50> + cur->Timestamp = 0; + 801736e: 2200 movs r2, #0 + 8017370: 601a str r2, [r3, #0] + cur = cur->Next; + 8017372: 695b ldr r3, [r3, #20] + } while(cur != NULL); + 8017374: b1a3 cbz r3, 80173a0 <UTIL_TIMER_IRQ_Handler+0x50> + if (cur->Timestamp > DeltaContext) + 8017376: 681a ldr r2, [r3, #0] + 8017378: 42a2 cmp r2, r4 + 801737a: d9f8 bls.n 801736e <UTIL_TIMER_IRQ_Handler+0x1e> + cur->Timestamp -= DeltaContext; + 801737c: 1a31 subs r1, r6, r0 + 801737e: 440a add r2, r1 + 8017380: 601a str r2, [r3, #0] + 8017382: e7f6 b.n 8017372 <UTIL_TIMER_IRQ_Handler+0x22> + cur = TimerListHead; + 8017384: 4b14 ldr r3, [pc, #80] ; (80173d8 <UTIL_TIMER_IRQ_Handler+0x88>) + 8017386: 681c ldr r4, [r3, #0] + TimerListHead = TimerListHead->Next; + 8017388: 6962 ldr r2, [r4, #20] + 801738a: 601a str r2, [r3, #0] + cur->IsPending = 0; + 801738c: 2300 movs r3, #0 + 801738e: 7223 strb r3, [r4, #8] + cur->IsRunning = 0; + 8017390: 7263 strb r3, [r4, #9] + cur->Callback(cur->argument); + 8017392: 68e3 ldr r3, [r4, #12] + 8017394: 6920 ldr r0, [r4, #16] + 8017396: 4798 blx r3 + if(( cur->Mode == UTIL_TIMER_PERIODIC) && (cur->IsReloadStopped == 0U)) + 8017398: 8963 ldrh r3, [r4, #10] + 801739a: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 801739e: d012 beq.n 80173c6 <UTIL_TIMER_IRQ_Handler+0x76> + while ((TimerListHead != NULL) && ((TimerListHead->Timestamp == 0U) || (TimerListHead->Timestamp < UTIL_TimerDriver.GetTimerElapsedTime( )))) + 80173a0: 4b0d ldr r3, [pc, #52] ; (80173d8 <UTIL_TIMER_IRQ_Handler+0x88>) + 80173a2: 681b ldr r3, [r3, #0] + 80173a4: b13b cbz r3, 80173b6 <UTIL_TIMER_IRQ_Handler+0x66> + 80173a6: 681c ldr r4, [r3, #0] + 80173a8: 2c00 cmp r4, #0 + 80173aa: d0eb beq.n 8017384 <UTIL_TIMER_IRQ_Handler+0x34> + 80173ac: 4b09 ldr r3, [pc, #36] ; (80173d4 <UTIL_TIMER_IRQ_Handler+0x84>) + 80173ae: 699b ldr r3, [r3, #24] + 80173b0: 4798 blx r3 + 80173b2: 4284 cmp r4, r0 + 80173b4: d3e6 bcc.n 8017384 <UTIL_TIMER_IRQ_Handler+0x34> + if(( TimerListHead != NULL ) && (TimerListHead->IsPending == 0U)) + 80173b6: 4b08 ldr r3, [pc, #32] ; (80173d8 <UTIL_TIMER_IRQ_Handler+0x88>) + 80173b8: 6818 ldr r0, [r3, #0] + 80173ba: b108 cbz r0, 80173c0 <UTIL_TIMER_IRQ_Handler+0x70> + 80173bc: 7a03 ldrb r3, [r0, #8] + 80173be: b133 cbz r3, 80173ce <UTIL_TIMER_IRQ_Handler+0x7e> + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 80173c0: f385 8810 msr PRIMASK, r5 +} + 80173c4: bd70 pop {r4, r5, r6, pc} + (void)UTIL_TIMER_Start(cur); + 80173c6: 4620 mov r0, r4 + 80173c8: f7ff ff62 bl 8017290 <UTIL_TIMER_Start> + 80173cc: e7e8 b.n 80173a0 <UTIL_TIMER_IRQ_Handler+0x50> + TimerSetTimeout( TimerListHead ); + 80173ce: f7ff feed bl 80171ac <TimerSetTimeout> + 80173d2: e7f5 b.n 80173c0 <UTIL_TIMER_IRQ_Handler+0x70> + 80173d4: 08017964 .word 0x08017964 + 80173d8: 20002e40 .word 0x20002e40 + +080173dc <ee_skip_atoi>: + return sc - s; +} +#endif + +static int ee_skip_atoi(const char **s) +{ + 80173dc: 4601 mov r1, r0 + int i = 0; + 80173de: 2000 movs r0, #0 + while (is_digit(**s)) i = i*10 + *((*s)++) - '0'; + 80173e0: e008 b.n 80173f4 <ee_skip_atoi+0x18> + 80173e2: eb00 0080 add.w r0, r0, r0, lsl #2 + 80173e6: 1c53 adds r3, r2, #1 + 80173e8: 600b str r3, [r1, #0] + 80173ea: 7813 ldrb r3, [r2, #0] + 80173ec: eb03 0340 add.w r3, r3, r0, lsl #1 + 80173f0: f1a3 0030 sub.w r0, r3, #48 ; 0x30 + 80173f4: 680a ldr r2, [r1, #0] + 80173f6: 7813 ldrb r3, [r2, #0] + 80173f8: 3b30 subs r3, #48 ; 0x30 + 80173fa: b2db uxtb r3, r3 + 80173fc: 2b09 cmp r3, #9 + 80173fe: d9f0 bls.n 80173e2 <ee_skip_atoi+0x6> + return i; +} + 8017400: 4770 bx lr + ... + +08017404 <ee_number>: + +#define ASSIGN_STR(_c) do { *str++ = (_c); max_size--; if (max_size == 0) return str; } while (0) + +static char *ee_number(char *str, int max_size, long num, int base, int size, int precision, int type) +{ + 8017404: e92d 45f0 stmdb sp!, {r4, r5, r6, r7, r8, sl, lr} + 8017408: b093 sub sp, #76 ; 0x4c + 801740a: 9d1b ldr r5, [sp, #108] ; 0x6c + 801740c: 9e1c ldr r6, [sp, #112] ; 0x70 + char c; + char sign, tmp[66]; + char *dig = lower_digits; + int i; + + if (type & UPPERCASE) dig = upper_digits; + 801740e: f016 0f40 tst.w r6, #64 ; 0x40 + 8017412: d110 bne.n 8017436 <ee_number+0x32> + char *dig = lower_digits; + 8017414: f8df a0f8 ldr.w sl, [pc, #248] ; 8017510 <ee_number+0x10c> +#ifdef TINY_PRINTF +#else + if (type & LEFT) type &= ~ZEROPAD; +#endif + if (base < 2 || base > 36) return 0; + 8017418: 1e9f subs r7, r3, #2 + 801741a: 2f22 cmp r7, #34 ; 0x22 + 801741c: d875 bhi.n 801750a <ee_number+0x106> + + c = (type & ZEROPAD) ? '0' : ' '; + 801741e: f016 0401 ands.w r4, r6, #1 + 8017422: d00b beq.n 801743c <ee_number+0x38> + 8017424: f04f 0e30 mov.w lr, #48 ; 0x30 + sign = 0; + if (type & SIGN) + 8017428: f016 0f02 tst.w r6, #2 + 801742c: d00f beq.n 801744e <ee_number+0x4a> + { + if (num < 0) + 801742e: 2a00 cmp r2, #0 + 8017430: db07 blt.n 8017442 <ee_number+0x3e> + sign = 0; + 8017432: 2700 movs r7, #0 + 8017434: e00c b.n 8017450 <ee_number+0x4c> + if (type & UPPERCASE) dig = upper_digits; + 8017436: f8df a0dc ldr.w sl, [pc, #220] ; 8017514 <ee_number+0x110> + 801743a: e7ed b.n 8017418 <ee_number+0x14> + c = (type & ZEROPAD) ? '0' : ' '; + 801743c: f04f 0e20 mov.w lr, #32 + 8017440: e7f2 b.n 8017428 <ee_number+0x24> + { + sign = '-'; + num = -num; + 8017442: 4252 negs r2, r2 + size--; + 8017444: 9e1a ldr r6, [sp, #104] ; 0x68 + 8017446: 3e01 subs r6, #1 + 8017448: 961a str r6, [sp, #104] ; 0x68 + sign = '-'; + 801744a: 272d movs r7, #45 ; 0x2d + 801744c: e000 b.n 8017450 <ee_number+0x4c> + sign = 0; + 801744e: 2700 movs r7, #0 + } +#endif + + i = 0; + + if (num == 0) + 8017450: bb5a cbnz r2, 80174aa <ee_number+0xa6> + tmp[i++] = '0'; + 8017452: 2330 movs r3, #48 ; 0x30 + 8017454: f88d 3004 strb.w r3, [sp, #4] + 8017458: f04f 0c01 mov.w ip, #1 + tmp[i++] = dig[((unsigned long) num) % (unsigned) base]; + num = ((unsigned long) num) / (unsigned) base; + } + } + + if (i > precision) precision = i; + 801745c: 45ac cmp ip, r5 + 801745e: dd00 ble.n 8017462 <ee_number+0x5e> + 8017460: 4665 mov r5, ip + size -= precision; + 8017462: 9b1a ldr r3, [sp, #104] ; 0x68 + 8017464: 1b5b subs r3, r3, r5 + if (!(type & (ZEROPAD /* TINY option | LEFT */))) while (size-- > 0) ASSIGN_STR(' '); + 8017466: b31c cbz r4, 80174b0 <ee_number+0xac> + if (sign) ASSIGN_STR(sign); + 8017468: b11f cbz r7, 8017472 <ee_number+0x6e> + 801746a: f800 7b01 strb.w r7, [r0], #1 + 801746e: 3901 subs r1, #1 + 8017470: d007 beq.n 8017482 <ee_number+0x7e> + } + } +#endif + +#ifdef TINY_PRINTF + while (size-- > 0) ASSIGN_STR(c); + 8017472: 2b00 cmp r3, #0 + 8017474: f103 33ff add.w r3, r3, #4294967295 + 8017478: dd24 ble.n 80174c4 <ee_number+0xc0> + 801747a: f800 eb01 strb.w lr, [r0], #1 + 801747e: 3901 subs r1, #1 + 8017480: d1f7 bne.n 8017472 <ee_number+0x6e> + while (i < precision--) ASSIGN_STR('0'); + while (i-- > 0) ASSIGN_STR(tmp[i]); + while (size-- > 0) ASSIGN_STR(' '); + + return str; +} + 8017482: b013 add sp, #76 ; 0x4c + 8017484: e8bd 85f0 ldmia.w sp!, {r4, r5, r6, r7, r8, sl, pc} + tmp[i++] = dig[((unsigned long) num) % (unsigned) base]; + 8017488: fbb2 f6f3 udiv r6, r2, r3 + 801748c: fb03 2216 mls r2, r3, r6, r2 + 8017490: f81a 8002 ldrb.w r8, [sl, r2] + 8017494: f10c 0248 add.w r2, ip, #72 ; 0x48 + 8017498: 446a add r2, sp + 801749a: f802 8c44 strb.w r8, [r2, #-68] + num = ((unsigned long) num) / (unsigned) base; + 801749e: 4632 mov r2, r6 + tmp[i++] = dig[((unsigned long) num) % (unsigned) base]; + 80174a0: f10c 0c01 add.w ip, ip, #1 + while (num != 0) + 80174a4: 2a00 cmp r2, #0 + 80174a6: d1ef bne.n 8017488 <ee_number+0x84> + 80174a8: e7d8 b.n 801745c <ee_number+0x58> + i = 0; + 80174aa: f04f 0c00 mov.w ip, #0 + 80174ae: e7f9 b.n 80174a4 <ee_number+0xa0> + if (!(type & (ZEROPAD /* TINY option | LEFT */))) while (size-- > 0) ASSIGN_STR(' '); + 80174b0: 2b00 cmp r3, #0 + 80174b2: f103 33ff add.w r3, r3, #4294967295 + 80174b6: ddd7 ble.n 8017468 <ee_number+0x64> + 80174b8: 2220 movs r2, #32 + 80174ba: f800 2b01 strb.w r2, [r0], #1 + 80174be: 3901 subs r1, #1 + 80174c0: d1f6 bne.n 80174b0 <ee_number+0xac> + 80174c2: e7de b.n 8017482 <ee_number+0x7e> + while (i < precision--) ASSIGN_STR('0'); + 80174c4: 4565 cmp r5, ip + 80174c6: f105 35ff add.w r5, r5, #4294967295 + 80174ca: dd05 ble.n 80174d8 <ee_number+0xd4> + 80174cc: 2230 movs r2, #48 ; 0x30 + 80174ce: f800 2b01 strb.w r2, [r0], #1 + 80174d2: 3901 subs r1, #1 + 80174d4: d1f6 bne.n 80174c4 <ee_number+0xc0> + 80174d6: e7d4 b.n 8017482 <ee_number+0x7e> + while (i-- > 0) ASSIGN_STR(tmp[i]); + 80174d8: 4662 mov r2, ip + 80174da: 2a00 cmp r2, #0 + 80174dc: f10c 3cff add.w ip, ip, #4294967295 + 80174e0: dd09 ble.n 80174f6 <ee_number+0xf2> + 80174e2: f10c 0248 add.w r2, ip, #72 ; 0x48 + 80174e6: 446a add r2, sp + 80174e8: f812 2c44 ldrb.w r2, [r2, #-68] + 80174ec: f800 2b01 strb.w r2, [r0], #1 + 80174f0: 3901 subs r1, #1 + 80174f2: d1f1 bne.n 80174d8 <ee_number+0xd4> + 80174f4: e7c5 b.n 8017482 <ee_number+0x7e> + while (size-- > 0) ASSIGN_STR(' '); + 80174f6: 2b00 cmp r3, #0 + 80174f8: f103 33ff add.w r3, r3, #4294967295 + 80174fc: ddc1 ble.n 8017482 <ee_number+0x7e> + 80174fe: 2220 movs r2, #32 + 8017500: f800 2b01 strb.w r2, [r0], #1 + 8017504: 3901 subs r1, #1 + 8017506: d1f6 bne.n 80174f6 <ee_number+0xf2> + 8017508: e7bb b.n 8017482 <ee_number+0x7e> + if (base < 2 || base > 36) return 0; + 801750a: 2000 movs r0, #0 + 801750c: e7b9 b.n 8017482 <ee_number+0x7e> + 801750e: bf00 nop + 8017510: 08018e00 .word 0x08018e00 + 8017514: 08018e28 .word 0x08018e28 + +08017518 <tiny_vsnprintf_like>: + +#define CHECK_STR_SIZE(_buf, _str, _size) \ + if ((((_str) - (_buf)) >= ((_size)-1))) { break; } + +int tiny_vsnprintf_like(char *buf, const int size, const char *fmt, va_list args) +{ + 8017518: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 801751c: b087 sub sp, #28 + 801751e: 9205 str r2, [sp, #20] + 8017520: 9304 str r3, [sp, #16] + + int field_width; // Width of output field + int precision; // Min. # of digits for integers; max number of chars for from string + int qualifier; // 'h', 'l', or 'L' for integer fields + + if (size <= 0) + 8017522: 1e0f subs r7, r1, #0 + 8017524: f340 80b8 ble.w 8017698 <tiny_vsnprintf_like+0x180> + 8017528: 4606 mov r6, r0 + { + return 0; + } + + for (str = buf; *fmt || ((str - buf) >= size-1); fmt++) + 801752a: 4604 mov r4, r0 + 801752c: e004 b.n 8017538 <tiny_vsnprintf_like+0x20> + { + CHECK_STR_SIZE(buf, str, size); + + if (*fmt != '%') + { + *str++ = *fmt; + 801752e: f804 2b01 strb.w r2, [r4], #1 + for (str = buf; *fmt || ((str - buf) >= size-1); fmt++) + 8017532: 9b05 ldr r3, [sp, #20] + 8017534: 3301 adds r3, #1 + 8017536: 9305 str r3, [sp, #20] + 8017538: 9905 ldr r1, [sp, #20] + 801753a: 780a ldrb r2, [r1, #0] + 801753c: b922 cbnz r2, 8017548 <tiny_vsnprintf_like+0x30> + 801753e: 1ba3 subs r3, r4, r6 + 8017540: 1e78 subs r0, r7, #1 + 8017542: 4283 cmp r3, r0 + 8017544: f2c0 80a2 blt.w 801768c <tiny_vsnprintf_like+0x174> + CHECK_STR_SIZE(buf, str, size); + 8017548: 1ba3 subs r3, r4, r6 + 801754a: f107 38ff add.w r8, r7, #4294967295 + 801754e: 4543 cmp r3, r8 + 8017550: f280 809c bge.w 801768c <tiny_vsnprintf_like+0x174> + if (*fmt != '%') + 8017554: 2a25 cmp r2, #37 ; 0x25 + 8017556: d1ea bne.n 801752e <tiny_vsnprintf_like+0x16> + + // Process flags + flags = 0; +#ifdef TINY_PRINTF + /* Support %0, but not %-, %+, %space and %# */ + fmt++; + 8017558: 1c4b adds r3, r1, #1 + 801755a: 9305 str r3, [sp, #20] + if (*fmt == '0') + 801755c: 784b ldrb r3, [r1, #1] + 801755e: 2b30 cmp r3, #48 ; 0x30 + 8017560: d020 beq.n 80175a4 <tiny_vsnprintf_like+0x8c> + flags = 0; + 8017562: f04f 0900 mov.w r9, #0 + } +#endif + + // Get field width + field_width = -1; + if (is_digit(*fmt)) + 8017566: 3b30 subs r3, #48 ; 0x30 + 8017568: b2db uxtb r3, r3 + 801756a: 2b09 cmp r3, #9 + 801756c: d91d bls.n 80175aa <tiny_vsnprintf_like+0x92> + field_width = -1; + 801756e: f04f 35ff mov.w r5, #4294967295 +#endif + + // Default base + base = 10; + + switch (*fmt) + 8017572: 9b05 ldr r3, [sp, #20] + 8017574: 781a ldrb r2, [r3, #0] + 8017576: f1a2 0358 sub.w r3, r2, #88 ; 0x58 + 801757a: 2b20 cmp r3, #32 + 801757c: d867 bhi.n 801764e <tiny_vsnprintf_like+0x136> + 801757e: e8df f003 tbb [pc, r3] + 8017582: 664a .short 0x664a + 8017584: 66666666 .word 0x66666666 + 8017588: 66666666 .word 0x66666666 + 801758c: 66621e66 .word 0x66621e66 + 8017590: 62666666 .word 0x62666666 + 8017594: 66666666 .word 0x66666666 + 8017598: 66666666 .word 0x66666666 + 801759c: 19662866 .word 0x19662866 + 80175a0: 6666 .short 0x6666 + 80175a2: 7c .byte 0x7c + 80175a3: 00 .byte 0x00 + flags |= ZEROPAD; + 80175a4: f04f 0901 mov.w r9, #1 + 80175a8: e7dd b.n 8017566 <tiny_vsnprintf_like+0x4e> + field_width = ee_skip_atoi(&fmt); + 80175aa: a805 add r0, sp, #20 + 80175ac: f7ff ff16 bl 80173dc <ee_skip_atoi> + 80175b0: 4605 mov r5, r0 + 80175b2: e7de b.n 8017572 <tiny_vsnprintf_like+0x5a> + switch (*fmt) + 80175b4: 230a movs r3, #10 + 80175b6: e031 b.n 801761c <tiny_vsnprintf_like+0x104> + case 'c': +#ifdef TINY_PRINTF +#else + if (!(flags & LEFT)) +#endif + while (--field_width > 0) *str++ = ' '; + 80175b8: 2320 movs r3, #32 + 80175ba: f804 3b01 strb.w r3, [r4], #1 + 80175be: 3d01 subs r5, #1 + 80175c0: 2d00 cmp r5, #0 + 80175c2: dcf9 bgt.n 80175b8 <tiny_vsnprintf_like+0xa0> + *str++ = (unsigned char) va_arg(args, int); + 80175c4: 9b04 ldr r3, [sp, #16] + 80175c6: 1d1a adds r2, r3, #4 + 80175c8: 9204 str r2, [sp, #16] + 80175ca: 781b ldrb r3, [r3, #0] + 80175cc: f804 3b01 strb.w r3, [r4], #1 +#ifdef TINY_PRINTF +#else + while (--field_width > 0) *str++ = ' '; +#endif + continue; + 80175d0: e7af b.n 8017532 <tiny_vsnprintf_like+0x1a> + + case 's': + s = va_arg(args, char *); + 80175d2: 9b04 ldr r3, [sp, #16] + 80175d4: 1d1a adds r2, r3, #4 + 80175d6: 9204 str r2, [sp, #16] + 80175d8: f8d3 8000 ldr.w r8, [r3] + if (!s) s = "<NULL>"; + 80175dc: f1b8 0f00 cmp.w r8, #0 + 80175e0: d003 beq.n 80175ea <tiny_vsnprintf_like+0xd2> +#ifdef TINY_PRINTF + len = strlen(s); + 80175e2: 4640 mov r0, r8 + 80175e4: f7e9 feec bl 80013c0 <strlen> +#else + len = strnlen(s, precision); + if (!(flags & LEFT)) +#endif + while (len < field_width--) *str++ = ' '; + 80175e8: e006 b.n 80175f8 <tiny_vsnprintf_like+0xe0> + if (!s) s = "<NULL>"; + 80175ea: f8df 80b0 ldr.w r8, [pc, #176] ; 801769c <tiny_vsnprintf_like+0x184> + 80175ee: e7f8 b.n 80175e2 <tiny_vsnprintf_like+0xca> + while (len < field_width--) *str++ = ' '; + 80175f0: 2220 movs r2, #32 + 80175f2: f804 2b01 strb.w r2, [r4], #1 + 80175f6: 461d mov r5, r3 + 80175f8: 1e6b subs r3, r5, #1 + 80175fa: 4285 cmp r5, r0 + 80175fc: dcf8 bgt.n 80175f0 <tiny_vsnprintf_like+0xd8> + for (i = 0; i < len; ++i) *str++ = *s++; + 80175fe: 2200 movs r2, #0 + 8017600: e006 b.n 8017610 <tiny_vsnprintf_like+0xf8> + 8017602: 4643 mov r3, r8 + 8017604: f813 1b01 ldrb.w r1, [r3], #1 + 8017608: f804 1b01 strb.w r1, [r4], #1 + 801760c: 3201 adds r2, #1 + 801760e: 4698 mov r8, r3 + 8017610: 4282 cmp r2, r0 + 8017612: dbf6 blt.n 8017602 <tiny_vsnprintf_like+0xea> + 8017614: e78d b.n 8017532 <tiny_vsnprintf_like+0x1a> + base = 8; + break; +#endif + + case 'X': + flags |= UPPERCASE; + 8017616: f049 0940 orr.w r9, r9, #64 ; 0x40 + + case 'x': + base = 16; + 801761a: 2310 movs r3, #16 + continue; + } + + if (qualifier == 'l') + num = va_arg(args, unsigned long); + else if (flags & SIGN) + 801761c: f019 0f02 tst.w r9, #2 + 8017620: d02f beq.n 8017682 <tiny_vsnprintf_like+0x16a> + num = va_arg(args, int); + 8017622: 9a04 ldr r2, [sp, #16] + 8017624: 1d11 adds r1, r2, #4 + 8017626: 9104 str r1, [sp, #16] + 8017628: 6812 ldr r2, [r2, #0] + else + num = va_arg(args, unsigned int); + + str = ee_number(str, ((size - 1) - (str - buf)), num, base, field_width, precision, flags); + 801762a: 1ba1 subs r1, r4, r6 + 801762c: f8cd 9008 str.w r9, [sp, #8] + 8017630: f04f 30ff mov.w r0, #4294967295 + 8017634: 9001 str r0, [sp, #4] + 8017636: 9500 str r5, [sp, #0] + 8017638: eba8 0101 sub.w r1, r8, r1 + 801763c: 4620 mov r0, r4 + 801763e: f7ff fee1 bl 8017404 <ee_number> + 8017642: 4604 mov r4, r0 + 8017644: e775 b.n 8017532 <tiny_vsnprintf_like+0x1a> + flags |= SIGN; + 8017646: f049 0902 orr.w r9, r9, #2 + base = 10; + 801764a: 230a movs r3, #10 + 801764c: e7e6 b.n 801761c <tiny_vsnprintf_like+0x104> + if (*fmt != '%') *str++ = '%'; + 801764e: 2a25 cmp r2, #37 ; 0x25 + 8017650: d002 beq.n 8017658 <tiny_vsnprintf_like+0x140> + 8017652: 2325 movs r3, #37 ; 0x25 + 8017654: f804 3b01 strb.w r3, [r4], #1 + CHECK_STR_SIZE(buf, str, size); + 8017658: 1ba3 subs r3, r4, r6 + 801765a: 4598 cmp r8, r3 + 801765c: dd0f ble.n 801767e <tiny_vsnprintf_like+0x166> + if (*fmt) + 801765e: 9b05 ldr r3, [sp, #20] + 8017660: 781a ldrb r2, [r3, #0] + 8017662: b13a cbz r2, 8017674 <tiny_vsnprintf_like+0x15c> + *str++ = *fmt; + 8017664: f804 2b01 strb.w r2, [r4], #1 + CHECK_STR_SIZE(buf, str, size); + 8017668: 1ba3 subs r3, r4, r6 + 801766a: 4598 cmp r8, r3 + 801766c: f73f af61 bgt.w 8017532 <tiny_vsnprintf_like+0x1a> + base = 10; + 8017670: 230a movs r3, #10 + 8017672: e7d3 b.n 801761c <tiny_vsnprintf_like+0x104> + --fmt; + 8017674: 3b01 subs r3, #1 + 8017676: 9305 str r3, [sp, #20] + 8017678: e7f6 b.n 8017668 <tiny_vsnprintf_like+0x150> + base = 16; + 801767a: 2310 movs r3, #16 + 801767c: e7ce b.n 801761c <tiny_vsnprintf_like+0x104> + base = 10; + 801767e: 230a movs r3, #10 + 8017680: e7cc b.n 801761c <tiny_vsnprintf_like+0x104> + num = va_arg(args, unsigned int); + 8017682: 9a04 ldr r2, [sp, #16] + 8017684: 1d11 adds r1, r2, #4 + 8017686: 9104 str r1, [sp, #16] + 8017688: 6812 ldr r2, [r2, #0] + 801768a: e7ce b.n 801762a <tiny_vsnprintf_like+0x112> + } + + *str = '\0'; + 801768c: 2300 movs r3, #0 + 801768e: 7023 strb r3, [r4, #0] + return str - buf; + 8017690: 1ba0 subs r0, r4, r6 +} + 8017692: b007 add sp, #28 + 8017694: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + return 0; + 8017698: 2000 movs r0, #0 + 801769a: e7fa b.n 8017692 <tiny_vsnprintf_like+0x17a> + 801769c: 08018e50 .word 0x08018e50 + +080176a0 <memcmp>: + 80176a0: b510 push {r4, lr} + 80176a2: 3901 subs r1, #1 + 80176a4: 4402 add r2, r0 + 80176a6: 4290 cmp r0, r2 + 80176a8: d101 bne.n 80176ae <memcmp+0xe> + 80176aa: 2000 movs r0, #0 + 80176ac: e005 b.n 80176ba <memcmp+0x1a> + 80176ae: 7803 ldrb r3, [r0, #0] + 80176b0: f811 4f01 ldrb.w r4, [r1, #1]! + 80176b4: 42a3 cmp r3, r4 + 80176b6: d001 beq.n 80176bc <memcmp+0x1c> + 80176b8: 1b18 subs r0, r3, r4 + 80176ba: bd10 pop {r4, pc} + 80176bc: 3001 adds r0, #1 + 80176be: e7f2 b.n 80176a6 <memcmp+0x6> + +080176c0 <memset>: + 80176c0: 4402 add r2, r0 + 80176c2: 4603 mov r3, r0 + 80176c4: 4293 cmp r3, r2 + 80176c6: d100 bne.n 80176ca <memset+0xa> + 80176c8: 4770 bx lr + 80176ca: f803 1b01 strb.w r1, [r3], #1 + 80176ce: e7f9 b.n 80176c4 <memset+0x4> + +080176d0 <__libc_init_array>: + 80176d0: b570 push {r4, r5, r6, lr} + 80176d2: 4d0d ldr r5, [pc, #52] ; (8017708 <__libc_init_array+0x38>) + 80176d4: 4c0d ldr r4, [pc, #52] ; (801770c <__libc_init_array+0x3c>) + 80176d6: 1b64 subs r4, r4, r5 + 80176d8: 10a4 asrs r4, r4, #2 + 80176da: 2600 movs r6, #0 + 80176dc: 42a6 cmp r6, r4 + 80176de: d109 bne.n 80176f4 <__libc_init_array+0x24> + 80176e0: 4d0b ldr r5, [pc, #44] ; (8017710 <__libc_init_array+0x40>) + 80176e2: 4c0c ldr r4, [pc, #48] ; (8017714 <__libc_init_array+0x44>) + 80176e4: f000 f8b8 bl 8017858 <_init> + 80176e8: 1b64 subs r4, r4, r5 + 80176ea: 10a4 asrs r4, r4, #2 + 80176ec: 2600 movs r6, #0 + 80176ee: 42a6 cmp r6, r4 + 80176f0: d105 bne.n 80176fe <__libc_init_array+0x2e> + 80176f2: bd70 pop {r4, r5, r6, pc} + 80176f4: f855 3b04 ldr.w r3, [r5], #4 + 80176f8: 4798 blx r3 + 80176fa: 3601 adds r6, #1 + 80176fc: e7ee b.n 80176dc <__libc_init_array+0xc> + 80176fe: f855 3b04 ldr.w r3, [r5], #4 + 8017702: 4798 blx r3 + 8017704: 3601 adds r6, #1 + 8017706: e7f2 b.n 80176ee <__libc_init_array+0x1e> + 8017708: 08018f38 .word 0x08018f38 + 801770c: 08018f38 .word 0x08018f38 + 8017710: 08018f38 .word 0x08018f38 + 8017714: 08018f3c .word 0x08018f3c + +08017718 <strcpy>: + 8017718: 4603 mov r3, r0 + 801771a: f811 2b01 ldrb.w r2, [r1], #1 + 801771e: f803 2b01 strb.w r2, [r3], #1 + 8017722: 2a00 cmp r2, #0 + 8017724: d1f9 bne.n 801771a <strcpy+0x2> + 8017726: 4770 bx lr + +08017728 <__aeabi_memcpy>: + 8017728: f000 b803 b.w 8017732 <memcpy> + +0801772c <__aeabi_memclr>: + 801772c: 2200 movs r2, #0 + 801772e: f000 b80e b.w 801774e <__aeabi_memset> + +08017732 <memcpy>: + 8017732: 440a add r2, r1 + 8017734: 4291 cmp r1, r2 + 8017736: f100 33ff add.w r3, r0, #4294967295 + 801773a: d100 bne.n 801773e <memcpy+0xc> + 801773c: 4770 bx lr + 801773e: b510 push {r4, lr} + 8017740: f811 4b01 ldrb.w r4, [r1], #1 + 8017744: f803 4f01 strb.w r4, [r3, #1]! + 8017748: 4291 cmp r1, r2 + 801774a: d1f9 bne.n 8017740 <memcpy+0xe> + 801774c: bd10 pop {r4, pc} + +0801774e <__aeabi_memset>: + 801774e: 4613 mov r3, r2 + 8017750: 460a mov r2, r1 + 8017752: 4619 mov r1, r3 + 8017754: f7ff bfb4 b.w 80176c0 <memset> + +08017758 <floor>: + 8017758: f3c1 520a ubfx r2, r1, #20, #11 + 801775c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8017760: f2a2 36ff subw r6, r2, #1023 ; 0x3ff + 8017764: 2e13 cmp r6, #19 + 8017766: 460b mov r3, r1 + 8017768: 4607 mov r7, r0 + 801776a: 460c mov r4, r1 + 801776c: 4605 mov r5, r0 + 801776e: dc32 bgt.n 80177d6 <floor+0x7e> + 8017770: 2e00 cmp r6, #0 + 8017772: da14 bge.n 801779e <floor+0x46> + 8017774: a334 add r3, pc, #208 ; (adr r3, 8017848 <floor+0xf0>) + 8017776: e9d3 2300 ldrd r2, r3, [r3] + 801777a: f7e9 fe2f bl 80013dc <__adddf3> + 801777e: 2200 movs r2, #0 + 8017780: 2300 movs r3, #0 + 8017782: f7ea f85f bl 8001844 <__aeabi_dcmpgt> + 8017786: b138 cbz r0, 8017798 <floor+0x40> + 8017788: 2c00 cmp r4, #0 + 801778a: da56 bge.n 801783a <floor+0xe2> + 801778c: f024 4400 bic.w r4, r4, #2147483648 ; 0x80000000 + 8017790: 4325 orrs r5, r4 + 8017792: d055 beq.n 8017840 <floor+0xe8> + 8017794: 4c2e ldr r4, [pc, #184] ; (8017850 <floor+0xf8>) + 8017796: 2500 movs r5, #0 + 8017798: 4623 mov r3, r4 + 801779a: 462f mov r7, r5 + 801779c: e025 b.n 80177ea <floor+0x92> + 801779e: 4a2d ldr r2, [pc, #180] ; (8017854 <floor+0xfc>) + 80177a0: fa42 f806 asr.w r8, r2, r6 + 80177a4: ea01 0208 and.w r2, r1, r8 + 80177a8: 4302 orrs r2, r0 + 80177aa: d01e beq.n 80177ea <floor+0x92> + 80177ac: a326 add r3, pc, #152 ; (adr r3, 8017848 <floor+0xf0>) + 80177ae: e9d3 2300 ldrd r2, r3, [r3] + 80177b2: f7e9 fe13 bl 80013dc <__adddf3> + 80177b6: 2200 movs r2, #0 + 80177b8: 2300 movs r3, #0 + 80177ba: f7ea f843 bl 8001844 <__aeabi_dcmpgt> + 80177be: 2800 cmp r0, #0 + 80177c0: d0ea beq.n 8017798 <floor+0x40> + 80177c2: 2c00 cmp r4, #0 + 80177c4: bfbe ittt lt + 80177c6: f44f 1380 movlt.w r3, #1048576 ; 0x100000 + 80177ca: 4133 asrlt r3, r6 + 80177cc: 18e4 addlt r4, r4, r3 + 80177ce: ea24 0408 bic.w r4, r4, r8 + 80177d2: 2500 movs r5, #0 + 80177d4: e7e0 b.n 8017798 <floor+0x40> + 80177d6: 2e33 cmp r6, #51 ; 0x33 + 80177d8: dd0b ble.n 80177f2 <floor+0x9a> + 80177da: f5b6 6f80 cmp.w r6, #1024 ; 0x400 + 80177de: d104 bne.n 80177ea <floor+0x92> + 80177e0: 4602 mov r2, r0 + 80177e2: f7e9 fdfb bl 80013dc <__adddf3> + 80177e6: 4607 mov r7, r0 + 80177e8: 460b mov r3, r1 + 80177ea: 4638 mov r0, r7 + 80177ec: 4619 mov r1, r3 + 80177ee: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 80177f2: f2a2 4213 subw r2, r2, #1043 ; 0x413 + 80177f6: f04f 38ff mov.w r8, #4294967295 + 80177fa: fa28 f802 lsr.w r8, r8, r2 + 80177fe: ea10 0f08 tst.w r0, r8 + 8017802: d0f2 beq.n 80177ea <floor+0x92> + 8017804: a310 add r3, pc, #64 ; (adr r3, 8017848 <floor+0xf0>) + 8017806: e9d3 2300 ldrd r2, r3, [r3] + 801780a: f7e9 fde7 bl 80013dc <__adddf3> + 801780e: 2200 movs r2, #0 + 8017810: 2300 movs r3, #0 + 8017812: f7ea f817 bl 8001844 <__aeabi_dcmpgt> + 8017816: 2800 cmp r0, #0 + 8017818: d0be beq.n 8017798 <floor+0x40> + 801781a: 2c00 cmp r4, #0 + 801781c: da0a bge.n 8017834 <floor+0xdc> + 801781e: 2e14 cmp r6, #20 + 8017820: d101 bne.n 8017826 <floor+0xce> + 8017822: 3401 adds r4, #1 + 8017824: e006 b.n 8017834 <floor+0xdc> + 8017826: f1c6 0634 rsb r6, r6, #52 ; 0x34 + 801782a: 2301 movs r3, #1 + 801782c: 40b3 lsls r3, r6 + 801782e: 441d add r5, r3 + 8017830: 42af cmp r7, r5 + 8017832: d8f6 bhi.n 8017822 <floor+0xca> + 8017834: ea25 0508 bic.w r5, r5, r8 + 8017838: e7ae b.n 8017798 <floor+0x40> + 801783a: 2500 movs r5, #0 + 801783c: 462c mov r4, r5 + 801783e: e7ab b.n 8017798 <floor+0x40> + 8017840: f04f 4400 mov.w r4, #2147483648 ; 0x80000000 + 8017844: e7a8 b.n 8017798 <floor+0x40> + 8017846: bf00 nop + 8017848: 8800759c .word 0x8800759c + 801784c: 7e37e43c .word 0x7e37e43c + 8017850: bff00000 .word 0xbff00000 + 8017854: 000fffff .word 0x000fffff + +08017858 <_init>: + 8017858: b5f8 push {r3, r4, r5, r6, r7, lr} + 801785a: bf00 nop + 801785c: bcf8 pop {r3, r4, r5, r6, r7} + 801785e: bc08 pop {r3} + 8017860: 469e mov lr, r3 + 8017862: 4770 bx lr + +08017864 <_fini>: + 8017864: b5f8 push {r3, r4, r5, r6, r7, lr} + 8017866: bf00 nop + 8017868: bcf8 pop {r3, r4, r5, r6, r7} + 801786a: bc08 pop {r3} + 801786c: 469e mov lr, r3 + 801786e: 4770 bx lr diff --git a/STM32CubeIDE/Release/STS_RR_R125-YUNHORN-MASTER.bin b/STM32CubeIDE/Release/STS_RR_R125-YUNHORN-MASTER.bin new file mode 100644 index 0000000000000000000000000000000000000000..314cd69c719e563cad8ea7febdc1309e1497fdf7 GIT binary patch literal 90840 zcmce;d3;nw)<0Zz@9iZ?C+Q>vLK2}Dz$}0r0vZve(;aR?Iv8Ym1_8$o0jE)f2Gj|- z&}@PWGl76YB8s9uh+7hjLxj+%IODiY8qf*2MR9ED=y)3leY17{zID5UI?wZa-}kRK z`P99&o;r2v)H$b4)ontkp;aW>pROj_pAmux7ZJJ<$bbBWkk=E-@56flA+9tUXwENj zmY0Zh+OP7a#p1*9&O*2fAs1m1LNUT19M&a^m;Nemu<ZZq`<DM`J00oUew8;ktY5=h z`m6F^=l|d0`W97%xu&pHaHKT}Wv^c(9%?qb^=%(%iGjiY!A`Z>7T%H7#82mya%~&S zZ$~*R8)7VWx=V)`+@;n#-KB)Ap+vh5VI#sG1bvGj3PC*~(!%}|vP@{%3Hbr4Z`+D8 zx#jytK}-~fiX+AN>FNVS`XKDyv!Y(LUD!dMEEJdTxx1d<&h5w(m+hh3jUthp@*f(d zww?dcHcn~#N_fSd<@LgL9&PX5v#g%mPInZFc_M4K<x0Dv7Lt?gr7n`2QEv8SII>-p zm!*|DYsCfY=vQnby;-i|h`UEUYfJT|%*b`EX-%1);ClCB0)MFc(G?@Tajv&7CQ$2z zjrKh@!Ap%P?wnRtXPjd&Wp%avFu_WtXO0o?4~&LCkxpU|I*FbvB;>lXap$FCHfE!1 zs95eADb|*H#KYazspEYnSNxtjmqFYe%Ngx6yR`M1J*Q;daf8?y%gscty8e1`<Whrp zIF_eJUaolC(g~tLJP^xMBQK#oZqHuSV|hkbJYd(BTE(^>r1k%QViC9J%caEhzhO~% z$!cLdBem$n&5bD{$;lM6y($+Om*7Zg-_Rtqu53-*?QBYZI_a7C2Ci0kf`2k$x9(|D zOP^rycrim%fgd=+6O5=*Ew(pmUEOzoCObP<E&t2%i_6Jdq;{ED<|1!7oryuKb}M50 zobTh=>C`SIZyBn}@N`yf#dBZP`*?O%Y41e-qB1<4i?-sqZ_)dBb}rK1h5YI=Je}2B z@!VJaKAxS`R>M45mpxB5d^Arkdgbu|rSoL#M~~u-cwA+mXN`44nJhGP`L+Z&LIO#o z#;Wh?t|Gg?mPef^&ZsJRKVw7S7@u#g3`kY8t+!@WyKY79KZaKZTKJ8DW0YFg<C)SG zTJo%G#_%O2FJ){DG;)(sKe%MRb?)$QU2{?QFWiPeqh?7-vQ^b}Ea^$ahjoRQT)p%` zlr?EK1T=I>2@NFCu8do(DP0$rR4tu>l4EpBfF>;|Neb{u>0OQFPXSF*QkS&kw4Bj- zZ^@F9gBj}shg2%`bz%7o>uV+dTKZba_a%QUsSGp{PvB5eQh-bP6MF-@)3QNnvoymK zXja|G@LN6&ZI;~0+9Y)y;(?`ROQ0F8C|cnSJWk6wN~@fVErBN0Rg4PDA7nknS~YW( zfkU7}6Iv0p!n^ANT3M7<KMw~jROx6HT7Dbr>#k^DO|&x5%qW6Z8nnW@D~MJ_N~<nV z{4c6Rw7R%_F6%4Ss*!+Jbba72XvL!y-U=<ON-Izz>0k!K0@PUYCye3Vk}u_wPDYD+ zOBgj69XZhPFPcG`d?}ZqyqRO=oKmhyTAJ}Ez+m`%DOV_vRZ-d`4Y@ioI8*nvte*ww z2^#_l2?<>n?_4MgN6wZUESXsXDkOkDcm4?_XG;e2XR*GKf8ox@P(GN?usX<kP57+j zF_b5Cg=3HyJ_k!S1d<ZsyPBv+=_ME|TX)sLlALSe6?~2*9XU1SnyOPXubFXD=-Q(D zTX2r%_Z9!$C%hntw^bg{0>}6bf%tfaM?7Zowvq>jkHvg6#a9L{fj;r^a~X~=v+}tp zJD9O4a0q1=mOP3&b4zXm7rh}oIDAupi+`=;QIy4lV_A#2C~4*%91a}g(}ClrE4>7j zUebY|bp*IK>8Q^jUb;JL_{AlK%m1EHaL3B!D@#`1acKF;jOIIn%dHvG9Wxst@&0@> z=$Qn36F?6KpfP;s$XD<CT5dc(x5N&*Eh*uFRRXAzlfi1N%Z|s~vpRE2tf1eL5&{ep zQ1jrG@(ZzYMr$h|vpO8=97=etWDrL9N}XoT2IxylIE*SGKoZ!<25SXlwbo@XDVcIj zlpl^I?LTGp6Yrii8|FXTb!Pd;AAR)EXKye1;ESVKe<m&K8>vfEzTHNA`c`!rZ6s|E z7}KOP{gs!9g{6qMKaOa5!ZF!coKU{w2l<w*jZ4M#cylhTqaH0YS~X=_MxXUVOj-+( zD*K`-;{5_`2ivFT3MV<2ptR7o@@4K)R=4cPV7dN{^^IvF=h9R>r@*9*`lBk;0v5qh zoc<`QJ?Y3V`264M$BRk}8g1de0-u_v{o#?9KmIxV#ap}Yn=?T#eRJ|%W`hj=1+}ol zfbVSx4<fvZKn0>*lT5VlA*@G`TK2=%NGRiKqxMFeLu;}c1=t+E-kjaEmf0K3R^X76 zC7YpDqWJ3L6&r?Vy=0WOT~(%X7@SH=bV{T{y#`U=#^}K6MYU=YbnP(c_N!vLolG4L z-LC$XZYNWj#x4-Qa!rQDZd5cjnaVV_rao7^>VMVP`W7M;_CjM$Bsoc5zM}Hd@s(-P zw|%UCrvI3oMI=+NwpCT8ZzINMo$c}i#uV4qQl@32b=;_vh+4_L>YJ@iD5u3JKVTc> zUE)NoYb~NXrb{EG=|m@z_OVTB)DQLC9sossi_6~a>|i#WtK3yv+SpB|4)b-$52QTm zvSO_3#n#~ZWRLW;=cQ@dV1N9uldLZ9V)hH8Y^Tz~D*eebn6E#6r+7;&|2|*5Vka3F z#>=pkc3ZPaE!lm*cKKALM0BOoOUug~^cAvu)3kXfPn{=j`s#al>T6&#cm>15B5EaR z=gpCmX6BUKG(+X2SGUWgbBmMit#oC|I`W|PPXU!`vm_)faV5JRv~HIARri)`miDV$ z)_9cbf>iepKOj$|2ae;ZuNgms<P7mvq6LFZ58NZ(A}4hUx4u|Hul__PGry9F^%Gg^ zp5da;SOIaFHPPj=ZjuDSBlQzu_$KLh0w7x%<d3HLPW_g0@t|CcI-YV+;kZH_+MZID z0y?NW=gS8Ddg;!Ba=fkCja_?^yH7Q`tP&-SY_2Q<TeVw=m(Bg05~^jk<|y#_tH*Bs zXX3GYpQXqzf?Y+|ri&kFxKD{Rq(|GTEt}BRuJmgZzi{P=`(nNF$Y)R|DD%(Sjyo?G zZ*NqIN#ZckYNQ9!q*r=#*S@b2KFt9~{96_X=lfcI-s9*z4R~M6`#fx>*^JVcqBDJy zkCptwE7u~;c*Ou-L5YQf^_Hb@hY;+i(Ke%49fd1@TVoLB5CtaZTI#BE?N)G4P;z)z z_R`5>L2Nu)FUC@26;l<-7NybPm|keqh+DDauo}}bCR;Bt2|KJt72;ERi`Kra`TeIw z7~ey(irm`%DexaxF*q(&Y+O@(EdQ5rO+=cFD+l93$*;zxx-u>ktD}tTKWfBarYbNw z*P1Kiic@lU*Hue}gXu3Fh|QBhOzw<##7|Es=bvEv8>^V@5*o<P^n+_$MEX|`=~R`C zQAW+iyAXU)x11+q{>HQbPlQHF$uK(Y8^|h}K(wO~T6m(Jfp>Z$(cXeEItgVi4tgcS zOR%dO3!Z{(QRJV{&X*aS1~Cp&gUKCMW-u+Zq)AV;N-djQ`?a8^#0#2E5?rX7E1R5? z-YS+&GiPPj+qzE?Q-YGub#2tlmCepi$$P;J)xWKu%$=3}oGo}tYO}PQaPinHoXh+) z<MD;6l3Cf>ys>|jPg&Y{=i5%M%3WFn36?Gr(;}zYH6JpF7@Sr6s$Rf~AmH8g%G+HE z-n9#&Va;h-=b5G{^NuQ;cKVK`SBVFLl#sw@yt?Z>^_yMqCEroSoqTcWec3No4HI8n zs_vS5--}gA;`xlNw$UdKbn$WJ;3zpGO&Zr@a;3Sh2kmWQk(efp?lHSEk!GB%=`6@d zk$4h>j89W`Z)GCs(#E|Mr1T}5bc&eS{x2`HAcH~D_ApG_ez>p^>j!JBzmmhwr`?sd z^lN$9+X(CTb@A~tvCaiD(@C!84?tf9bx9rP$wdCZoEeZz6LV^2Lo(^S#4MQihzn)j z@_RYXYA&H;u5xC(o_2mA3l@Iw7c!~+N*0{AS(jMLDwbFu38>Yj6?a(g9bSqQ;N8W) zLUK;vodnG$7=%&W(+g!nCf;hum|7t?=@`NFu#?}-J#DvETZ<~(u4=#_<k||Sl`knO zvs-gWhL;)^jA$qpt{Lk+-rSMQ1&8pnWdqSjJpXQx=RYSM)<juD)@5t2*?THo)QNX4 zeR=5*u9I3@z`n{l0=ANdm^o{MExu#cH0?=`p>yuK?B7irdh%eGhIS6ucd{JPd2a3x zu65a4Y`v%QK;s<jklzZDWWN0t%s?7^0(ma=)2e6cTuVh(mghQ&u^SP8zck-<7W2eb zW>V7umqp<Z4O<_7W-@b5DpBO-?eFR9gv}(i-$mCR?;aHy^?KpyF|RLuY;e8EEp!yw ziJ2Ug*h%)PZ%e-IA?s!Pec6|jAC{<kl9lXQoK5z2W$d*5d@4h{&?dJKv(h3Dvizyd z8Gp`5m+7)$GF`a*SM4TR0rRPI8M8+G=wq!2xefSiLjadD`CECF_@$gvoA6BHQ<YMr zkkloKJH#_GY4nH_pfNg1H;Ri7oxyCglocai5lG->W!vy1dsYNau3nHm-1?54Y@e0Q z*?-9)+aH$Z7L-}H1PEP^n9=FM^Y8ZQ*;+fPUlC|`TeCOV$&NF!me8Cy-@VrJC`+`H z-75m0u9}ryYme^?W^WE`=T6#ZWv55;(bsPK!_vWPN$tad1T|uX7wn(gb-UlWczo3Y z;B;yg*~98@2R?tal0932(H808b;;HuJJ!RWc`;3<`6RE;myt<}+@<R!Qp|M{??#E( zEiILSVxcl%SM3a_lC|F20GB+{J10PNa|4`iU10ITb%7-diS(_fGB9V(>8`nR4}0&n z>AoDxc0b(u0MBm#=WfJ~d@z0OxUF7GTZ%*~D+9Ek@{%XJB9KzRwOegfUBxs_$>$3z z0%?U@`z%{^mz`%l6Y0M_&j+dSY0!|A_&L{`)NkrlUGQWS2MOhSlMu7_sxIDIoYeV3 z(4a~}Et-e?{v2<G#OYYs@r+x#&aI>pnWp)aSruOdiSD5;LY8+?+SKhCnRTkEn~c<* zny$S)V8LE=icUa(m4T93sofsfR`s5vK~kyp-X55#n;9gexJ$UDIH01Iw%Y?0I%{z; z;Ls^KUIy#@$?XzJhL1`lhNj;27qwnP;r<}}SV04)JFA<Z{Sxa{_fAm9(O#Wo?B#;G zPULVM-gklq9YxyEtLy*5TO82QTI+Y2&v_|&%e7nDRs;lL<dp2Qx`|0&2*Dx32|zUT z3KH5}v<7%$>=iCf3-G||L{Jwi<xnaprMaS|4K*b8-U$phUh<@=z3VS|Qs_i_<IR3H zpBY{@qq*(B%(tqY&9~qkF6z;4dw@?K;Uz|5U?ZQiQ023d>BTwTVsMS6ZAiCAnBt|~ zo)k+PqxCc?TwHv~O+j%8Uj{!@fy4U9_9lp&I5R*es=c!U{3Hgs_!2Q%VE@-D^dm-h zDLC+wXR#2RAOMC6fzHIf?0+lQqrWn*)yC@FggQ3N;<xZc6d-W!k=|5koxM(4SGitt z-r_EuAg!}$z3x($BY0WA(Y~DbFuaWzO*UWvJC4-?7U(^`^OrO@cpCR<lxr(v7~US( zzHsWLj@K$Bp1VEpg)YO(PZ)f2U0-mRU7qyv{f1sPCw$lnj})8zAti0!6WF_vDQc{{ zN{Q;&`eW}IvhXohAXeJ4g;<4v$YNRTv~ebKb)cJF$LPi>E0b9bddO#%GtavR<Eyoe z^>z$f5jf{&_N%*e5EkddNTz6f3?_s4nGZ8C<y8A^vXB73pm!7IdXf0JI9#k2p+&v4 zB@+5egyfWY8GPC{L)QKj30;clpofUzHd)(8ywSWsWa9tG>x}IDA9<hrFL@_^(-ydL zsof+s{bb6gD=yWnKGd~nR_d9`z}sd!B$GWbb2gJAX3#PNvyQQW$K0hDmqq16iB;=e zf#+a8@p_PAbX||RwULon$;JE*P-<Pkv}|3#yzI{Q%0TL(lU-@mZ+lN>6kE%z#n!{# z1-9Y&TfqU~u1f1ALJZP6E9;N-4X&X^X<c!Kce;&1n%e$ckaESCVSSg5yo=e!EC&g& z<vyKmb9Pw?c5caOry7Hvb?Q@AE#plNEy8)XoNR)0v39*P6S4v`#n!UBbULv@Lea@N zUe@lXla0Ne{#SxpU2~U?Baj>iy#y_0*)r@$z3tWvySsD;*3EigrS^J&E1f`ZXz_!N zJR2k99rH3{JHu3HXEn86t>`YT4bbFl#p1*YsT8oDbG%lCa;ZVGYKoV1GrF=-*rl+Q z(ZF2_c#DRjH6T_~(Z;D6HO&l?^^ynWm<t}BcQ2@BXKNC>SRGqOcIgQ_WjjWaePu1N zy4ZnUS!<vy=oMXAw+FBmz>Q3j+NC$`TJQd#XZHSX!XNE@{DOA!{;qds>pzF|>#r^$ zcw&WdOip8kU9fj?u$>t--KCJIkhRhBnSlzn>ITaLU$}v9z{)iT!<EU{^FGZV>PlUd z2u>pkr?Hv;PcBOhRwYxPjZ^th`X8J&yS2QP<icx#(+;fZ0t9$r+^w%-=I%Z(d_p9( z{G}{(etDiV3ysWXmP)lxCyIiYERy_k-=nsj;*vAXy&Eptn>g?i_=tPP%0@KI{*<*c zkbU#W-p9ND(iaYzbV+?Ff3yWOHrl6>YHjgnvb#8r1|!#bq^$L|HtU6q_1yJ~N>VeQ zZ*J}jOG$ltQ%Qg;A$_Xu7nIt9K!TA89!b6a1=Qx(FD~JVtO06WoJEWyn!d0S^Iy*s zSP9aW$86d&WIU06^bjNRR9beLvE@+j#vsX^?t9tBo!Vd{7eby*nM=BOjv9uEWc;`7 zs9E~8pKFbL#l}POt<s-8k7i;Fr5Hn)8k_q<-I~61gGpx#5L=Qm3av5<RWMS-ova1S z4?NSv=m<iRCN_ekJ`#R$8mk!{0d^D9$c48&dhz+LB*7X`S)cL09W-bjvzmG}{S^UT zr|PAb4859*16H%0^wJ*SU}ZS8^ht8Ij`U^BEeWVfw0%jS4A)C9Bq*@8!N_Efw8g`y zv&nNH$Y~dsEY8~7{6?R2k@TgNObZAld|%QPT=-zbau;w}dWO4UF?^d^>%Km2Bg5$_ z+h4`2#JQ(twf|RBYgZD#xJxAny_(R6){m?s?V!^=#K<U$*`{pP4ZvY^FAeUs=Gh17 z)zqg@AU#C~%cGb8*KIbTm%qg5fc+&XcFoCcwsB{;qN<YVSv#6hpHVl(7N9m&Us7;8 z=8$m+qwUa>+igS6a5pY0nUy&$K#H&T7l;-y&VRk=|6VWlfB*KhgC`GnaY@x(Iu$K? z-akzY_<3=c-zxh2?cxJ|*0RvA6%+i7XYA0GOmC!>4Jp?$U1`UD$t;+N*;YkO?^IP@ z^4y{^@f(ky=L(OXk3-O<@>Lt}^T-B^M;>e0Q0<YYSl(T%k}~@;n%aKQT8T9JsJ87# zc8)iSTBBam4UO@>N~zJFx!iV%tjfG2YdL?3tfqCefx|kA)>FY(O0n)5ZE4HRC{4SA z;l;`<Et?z3D3$o}d0N8njD%i_3@KAdYs1<mBK_Q#QpWG3FQIIXO1ie6<^8Kqhw_~R zEdF<gh6aKj>5ASsaExQX0`Oh&<lk4H$45#_Se`FLiL`nND}<Anw|hxUxv-c*NDD zbsUlpS}HF`R@K>tdaakgvk8vb_Cw&M-OV`LHIO&Ry^)a}+6t0}eax$}+7bzMMg(y< z+V6{Gp!NHPL-GOrqc)+BNEz*bU~lZZcyX~|L8je4E3>Ze!o?AVS<S3v8^VI-EG`x& zq?v2f!_%~OmGyFDHET87zQ6l=^ZssKwe|9e)J{Kqe>hBujARtv&{%(`>5^ww{i6D1 zHuhfJu#CUtnayZT42;^bTFW@QQf3{T1#OF9h=imF#q*~Khi4!{Oetc5K_x8;v*-3O zOY0DuA7;--lyo9uv%>7TUP&h*Rvu>0HA*@eF<Y2DS1M^eVw1z{xl~D~AT}Y)o>fR+ zYe*4QQeK#G(zVF@-7x}(i&|=s^-U|V!`HT{9ra6XlGRpURdJzrLS~g(dPXKW7utXJ z6Dye~F<vpl4_l`e4;+ewzKN(r_Yt*pzr6KGW?5D_XQp-Sa%Z|aSYzh`>y3x{f+5;B ztnl-Aj^(R_U`;W-z5wS99#d1_1&Qm^r@Y(cGt<JQB0a#@sihxeLlXyI0v)|VqAE4^ z(mBeB>IzAv>hS|d)n%+H;*N|Y{SlrzGMvo1n;Az8?7a1n#>OC7p=KIm$8qUB&)4$q z^>@tZkUJ--0vpY+IjZRmyCFLddq@tE@XW<gug4nT_yroP)aZ$XYQR_fFrrk9+A1A{ zXIL4HO@+}k_XRJ~zBChQ;4waWLtzQVC(%AV#zzY)11IzLcbzn0hgG-L``3%{s`zeC z(O-jFezzBUbmYC)O_o#!-p@HC@(uOVRHsx@FaqC|vipA#_0;v5CA)0HJA_^I$&ckB zjgS{{s)o2Oo(c_nrrmUkG`w7LP04LpE!|{A4m^rvNqmsTYrBc-GyiN^J956OIT)F$ z^)}(z(VpwbaOqn?H{k>SVOXa^J6bF%7E`3>`o5O8)?(jo`S4;qxn9gDIoO;cJ=ury zDytX?=_1-Atd!Ovry7`egu26i+MwC)DB<d;0X}K7O8PjmwN<l+Hu%mH?pB%Ca}5hz z^{}nC+El){pf>JV%oY_M$CDQx@k35b+={qL*vw{8*x(<WLpFD?@>aN8Qcfi}PRX51 z5*&Qs;n-~Lv8g+(P1iT=0ES{8=DLm94Sfs}k*~mDv#x(5@syUepQc6oO;=`{>(C#K zgq}Ob+Ubu%>cw~`x>C<#rJh~<`7-{>N@Zsz4>t}m5%`!>q!MMto{vntnXTD>Mc69- zHlj6BlSNcZsvbI;Ggn>`hS8TQrCKZG<aPWmm2@f+O_NcTl0l2y-?7~Hk!xXcb_>5# zCB6Nd)LRj)IaWI9<MTYEZBqo)Uws8`EceBT2`3k7tliRn_Pnp3r8S66?Pt&BN_r?_ z*Y&gK9aqxVDCyt#s}*l7){sETv@NM+spV-7rj_6!GC>bbIDTG$9#R+bi_}tFFO%{= z%GxqwR7)HB6!|Z!l+?3VG}0G`A*H=T;vuQ$5o>0g-r#O|0-kzCLmo7IE?k6|7O}nI zJeLKUXo1gT*4Akcz$<P}s?$jSlo{m1GUlWN=SVZpEwf9MKezbYG9GWPj%!FYlQEzR z&znC!uc~IW7R>xhnmUzqRb>C&U(4>}_Dddq|C0T8XI4NW^GxoJS(IpoKk;3I=)s%2 z<HUL4+7sv1cc`Qr6iw!l_2oZSzpzMOk;Lkm^+sa$;9dyorlBtK)P?3nDruBbd#U^i z>JDvmW2|hPC4{ri0q@Sk`whHFOG9H>Y@E5_48%B$cvM&|O@Nkcv{A!Jxz=KqGWd7! zhDUIs`O@)fJLdQu#95k0n&CYPv{`RXs3RDwo^Ld14}5$+)vT5t1|F;44ErmQ&sjb` zFOZMVs|kmGAg?0PvaCkzRr{cAq}RidP)j5ddJ^yB{gF^ygh;7j>*d3+x^M3#Qd+p* z&!CZ(ZH;4rE#vl&2ZogmbMVfQ=8euu$zvntC^u-#8=0-L+P+95ZRycAu{EG8(@3v^ zKO&(oB9K(GiAht3v)di49({@1q27^znQd2Ue;7$r@NzL8$styDHdx!pxPsAW$AHN- z99%Khhqi^7ZSaL>buzTUhZt2P^a|iN+Bw51xz+#+$M!DX^>;)6E~;PBa5phwzN=G2 zMmd#qw3h?dci|KzPtkR6^yVRbu2&B&k9kAikO0tmf;1^CIH=)Wc`ISsP%ZuCEoDv2 z6Qpa7vGTEDB5efSLIaVIp`X=>g#MtEWGMQR!q=mgD&BIJx=X|U!GD%w|JY@MK6b!l zW2V5N`xwLQ!ZB7#VI8eLO1zAJSp06ptqIZi9}w?En@H#aY)4oWmpo3D^w}{6?`w=< zpHfdFl^%}4M*d{9`3P+wyX=p^8%qrOr!}>Y;ACQ?I1u`zUuxA?e0-kNf^P)P%SmOb zx*=wvZn9_>b4B7B2yGcK!-EUY8J#T)4jaN_wjQ6Rq3~WsJ8h(fUjIJ8p9vqe)RHwL ztCHCPQ%oE<lPkRQ-u!zB*6^@0vJ0#7V5%_^dMh$y)OZnI<{L;IG2I}hh@62=(Mt;> zL!^js!IwBau55@YMcUM_63d$69rxVJ<QQkrOO8lX<5TnMdsU8${x{HX4f=f@;pQY_ z@ZkL<f(p`0Yv!FA>9d}wZ46#Nrfp+%VEm$KnZMj7QEvVn3zmaNAV+9jia5c*xa6gt z2?m~VWS2_%w3QIu8=4kXx$0%T5p|^OzG#_ZJ$v6qU(7}pa1x&g?RkAqTaV77E+=(* zBiCSnzU+h+4~P8yIUZ*1vifYj>s#tvu(a)U&J^jtdy*V<RJNN)Z_0Yf9Zo3IOIyMT z4oG-gW))7Zq=&Iemt$3C_vobuB1W7ewEdvB>ZK>V9T?BYxwtb5`%5o9@72QRRMm@h zT)5k&>uBu$W<|oOuz6qiH_mzX%1cjF!-kcP!)^{6`uzm+wywp6^TX3J-5m)HlS#8i zS&4)UFE462DSIZ}nhi_ZCrC#y6M}T2Usb~5`AO$i=Ii#a%#W{L$tRt2AHS%vA(%(6 zJl_1AyV`AV7qtzKe|P2jmBV#eNyRJql_%v*liqdXsX{#yf}JFtkJ)NPEpgDyo=Lou z7OKQJ^tK6m1VP%;Ut$%cNAVo%EMn^ux|tdo7YOjBvN!Tz-*JwN8m1xMJM1oH^w`iy zYw2#Tkx27e*<5dEJiE*$ah#&bB~Fq4Z1&iC$Su#SV3HU5!M>%D$zDPFUB4jRhEUy4 z&15tOJI8Y?5B+Np1!nWigSOrk37v%WY)AM6;iJgMvQVp%zVBnTQ0EUwdsNa_gK3dI zsgnMwr05eW>11D?I32U7k}me=iN#9n--xj@I+b)Du>vLbUB7brvk~LeLaRV0Guapk zJ=&vj>~~r(CL6+`AHph!y4>tkJDkoF=Xo<$H=`9Pvk|hkBr)zL@-nZ23l4GxHXqy9 zeE}NrNNZc*Rl?o|dX0M|F&w%vqGfxX)%*H*-V<*PY@F#X<sG|S^{!f5pYJ$4Wq=DA z$$0Eygjv_xHU^8OyCR$;%XK`H>3WtIos&rDYe=axNb6fP4ow9$om~QIt~9_pIywNG ztI%8>!xwOwEaXJ!nliQYS8r5)aUxaH$6{%H%j1eZ60jqHeCTEKpmQXaWx29T2sER* zt`gejJG-Win$Q!|H9HfaD;lt4jf9@)CkCA&>lu!$zoHfu==perGYX;x{cew(xERNQ z3M-%MqsATa`{VOG_JC(5<3B}KE7r|Ju{ed@Q=`P?mgE`ZYd&dBs=%nOySh3OS_JK| z307Kkw9~NLy}BAUVT9d!<<M>}_-1~Dn)BVnAh$6ZDey%-eD}Z1$?7l#ep9gTh=i_> z@L7-9$SF3zA%BWgcbMQFjk<y}GI~zL7;M>5$)J|T#OO7&Y#8$`T>1u98?)kc%!)%? z1>LQ|JFbwg(n|YbVMRik{sfFpD`hBpoAhgxRDqJ}=@ZJdQr8t(8a$$HW4eZvKxh8O zo_nij(4K4Q$#WG#b65E|#hxp0#A7BT*ol#lk6Ar-ow5GzaTU<o6Y7`L-_7C8?cnO! zYNfH&%H%RU6;b;x?HBt_6SMEe^^PbTvuFsj(0Dzw<F1X`b5UDP0F_y9^?m8(KmOr` zMd=l3iY;dlnJtIfg}+#Gf;3gByQy!q;XT=7B__`J!Xg3o>1cx>`NA>V4&xPwjxc@f zfo-=8f$3w;m4uP9)j5=TTWmUG-QAGyg>_4qHL8*}_jaxjqz#eNvWE!LLlGvw8Qeq1 zFq?p>ZNY6ak%P8&_FzRRv`uSCaimmauv6ePQpdfV27AsRYNd~4v+L|qAK!oa?9y3W z|EKjXZ5iwxuHLDYgdX*Dp^Tce(kdBPDZD;WM+|JPrr@o`I?Ql}Lw^PL1;eUx$asrg zBGvEU&H61u9VTm-KdRBLEvvsvnVstTyG(4Bz}JsPl7aW{!mM`G-T+MCy<VZ-zj{?= zf>a+K)VW{26&(wsSM*LE@8ccBkmbr?c955io%PAN5@PgA_QgSx<m0|qtsxcn{ity_ zZf~fjGm5cssShji4ei*t*qAtsS8r5FGom(H8COP>^t4zyttA!T4DeEfyP;L@V73N_ zT@KTqqmD#EFZPilorB#Cu#yaSW(}7I?P4;yvuc=aqDFllnkKm~N=s&AWKW~o67*Yy zcTvmG8TktA!XrZ}%r2U*J7abU`Eea7Vv2+5s0+RNa=}OqMB3iRN>a}dQ=)=}UiuF5 z>kjlEf2IGd8ZICGLn;)tvA(S6rxN|#gRmynFO#>M;U7`~3PlfZ_fl#2K-30Zk9GeF z>Tx-=BNAE#=^KsRtHiV|Ssjd4iLff)gq0HsE$xqwQR}rHR>J&r%>Idl7AjWlAT6J1 z#cV_WFs%^@J>AE8BhnW~m3_1H(GkUNb#%DdoZ`a)`13OE8H{UM)DB|GT1a4F2?|YI zy^0Nm^RKUf>j?z-nH<!_8Hh2{t(TT5@HyB){{W9wgAPw6f-gZuz4ZGd*I|`857qXl zXWn*XIO?nz81Be}t;(o<L+`mYm;-ORW9XH<g5DvHZ`WkTW;8WMwK2UrdsOgZ?CcRN zY^K?qu$j&TZk9G;ijU1vYHz?#yhZ5$Ti_W&7$Q=w3+V#9;hECTL`Z8%tk~CNaO!~1 z)dNOXJl-!4#NoMo!0cl1HL-pJJ&coV7xb&mPQU*i(29+1M+}C+iSHm<bq=!viHkvc zct8tC(_@erPcllpr$8cJ9boKxn36XD=Lq1iTStk|W{?|I;gBa{X=V2r`Lebjimc(# z+GC0>CGlEFoay1vOfNy)-7*wCe9*6zcJvA2%qC(=i;aIrPumY}s~)9sZTcB{2Q;!m z>4$shm?Xz|_n>9|P)`Ch#IW9+ngYnEVwugJ)DI7-myIt3yq4ijfNOdw)#f5FK4Jcp z#g$8DEV=nljqum@-cXZQQ-GBRKZvmk96_L$*{oFdXz^8yN8H*(MlA&7d;1qU=9dk3 zJ!>oS8et)K_x}#Lhx?Nh{{@v^?GX-8>1dC+na6F2Srys?VH09$hv4nqCTGJ(JijmA zJfqy~u6Cu?Wa7C|rk-k--c*k`>=bvEYcJ|0th~PF*`@@e(aqPj$(a@o&kS%)o2&=d z6pJ@Hw#dZ8FbvBo^Z3sEnzYu!8j>%!vl@$B8Syh$E^^haL@R^Sl^XvJQiv1%DnKJ7 zex~xSU4_03{0`(9I6O1J>)4S^;0>c41#W7}#hUm;PB5FxQ)_76R>+5Hx3QvnZDEr} z8XuuK9B!5CrLMlK9K*`a)DTF?WLXd`tyCPYtSY_qx?Js7Ph5A&`MO3*hBZNQre0d` zI<t}1t|mt2+1A5vo9xg__43V_vyU)WY~9U3D8pQ_Ib^&lAY6y|^T<<VAmVHu^UJ7q zG6HGg#chowXKcH*hRca>=X3Jfhhp_JsjKYryY$l1!)G5#*irvb{Eqn##qG#^NW0_g zgPI-n52|;}e^9k!zDw9~*2V9r>lp%C9O_9m&>dM1uocAQon9)Jquv7EaSC|OL!T=U zzCoZll@j4}Ue3YCcz5DqGM#Eu5k_K7keq^c9&<Ck{VMRvbA1e}EJYp}<efbk79O%7 z9y4ryfYzN;)@+J6#KGoPFGtq{i^t36wKPA;SG6{|T<>6KmT9=*$7EX~>LyFQ5rJu4 z6TS%o=dydRdTX-uGvx9n&?+CeEJWCbFb3gjgnERR5wtDI3deH>CIbU9lO>gXI!9K` z{Y?pYR<|ZNGF?L6)80%Mosj8dXJ1;Y9ypy=d~9sam<(XDX;60vXvgLAKG=1rcN{w; zwl`pQfL403$J45jlEO4c=ks2y{IhDh+VO#lyVSWT&Hka2<q+?HA95exgbAcqrAHfM zuRf?v*7%r2XCq_tnk;#|)Ixon<C350=2nd59|%k*Fdk^^_N<6+r#T6%l`+H3<n;ZA z8AiQ+4kONl)?j@0KEi6)<2u}T)kw8r9y3<dPDYIZ9Ukl*;~4d;^*+#REMr<6l1XZN ztK20mY@b65&o)12lTT$k5+Um;ZXl3R74FQ~I;kHRTqnQl9qJgWtP_oNe^?N$t<*%t zG>2YHma-y$^CwR~i?#BOPa~}zU|e&o{Xf@9oFiFMN19`@jjfAcuLZV72G;|lzqwT? zS3!40LbcGs#LMdXK_A?aA645p#bm@@hV0Z!SM`r|7))nZ4X@dTJLR|HN%ed1<n(9o z<n_bXY?B53t$3>Rd+=22&)})i4_~`Y*6MG?Gfuw;&v^YdIl*8Q6N3rdybM}E?&oCO zR>+lob#jhj8$z9&i+3*Gd3fjHosW0EAu*UwiD`ERolq-}B^0fO<b`~Lnq)!0p;aie znwG+!@w>jL&#VSxB{Hw2)2*gtX_J@5^)2QK!<y<fGxCo&U*kL8Mf4sLpHt+GH!x{4 z&z=nn6n0PlzBT8RI-_HCuzpcq1WRn59cL~5=Cx_%Y12P%PIFhUO)Y0{V*WN`hdkDB zviSqd_K^ILPv2I(rYt`m=N(nm)obS2Kk%Qsl0Jv@Y0MGBk<HN}@E2PbjQ;wT+D2lW zVglv2>m_HO)pXr-7v|p_*$caQa_e515`7Nu+Y9Q`+#&5uR$K#*V6qesUyLa-4*n@( zOqSBI!&~bPhu(udy)nXQlH<s9&vWl_@5PLr!Bfx=U%3}Eb}OE0{T@6u`ZIWH^}`|c z<Mg-U8L!`iXM&zeQ|Xyi9cz8fTWwh#dofcR5%yxHHX`iBOl?Hii<#Q^o7qZ{X(djC zt!%d5^3$M|xJrhX=;etz?P@yVGthv|%TM4rHhxAAsYPvmtTEe!Gv3kg6Hnl;)|-bx z=LiKR@pcEl)5uOD=8`8lL)^|}sdiw2gY06O9=Z3h6~ASG8>51!nN*v^xegBXEuh{5 z1G9fskL9c$h=WH&Bh8M)HM|SY54QtPTUHX?LF!E6bVszE6SZ<s%ZgfOn|W5}KWa{m z)pQKp<hZGf>@>l1(YsPFrO8tqQ+}0BkS9APBb^s3=Vj)7>xG{=9D1^Ul7s9d(0RR8 zg=NW7ccieK*_6qW6fQuFjjJncK}<mG`|x<gw1|BJU$3Tr?DVnN<urxa^Z5ZIWYT&$ zkIAzd4bHc7rjwmHjyP8itm$N&<uIAGQjUZ^437pBJ)j&5n-POQz@01|4jUaNNHddy zPqNe)8G-t@$_dJMJlB*{?R^MOA{<6IgV2lMn?STohxm(#b|&8c!kgKpOYvs5Rn;5# zo_i9}wjjNIBEbhgJk?{anSN$6pRIwELZayMzZVegjey5&N2W8<(T2&R=Ncb?Ji<M0 z$fHktW}6{dER~nGu6|XHw@{>XmRDr~R^*2RVKeh365P*1fW%28SW8mkKuzmB)Jw8x zMp;ZAV;aWQ)MFC4mr@Y>SC0uRgj33i^m%_G^jT`^HaXdl>Dngi4fB;$3f|k~R71V1 z0q-FeRwK=jIEwM{$H4Uxcvx!TYi`Zo1;49R8o5E0dwYkyrsRg9`3pL}{vl0TK<ASi z5vCzT|6jyACzg6kd4CWq8AdkOl#Lta+fzP7k<rKci!W@oghO8p5YsM2hbK$=es(ev z4xJoGXZEEv61x59>~TpxHo|Qfm$fGnaz>)<jt^`tPY0xiPW!l_KHOD5fRR}>(!cvQ zlvkM3+<J2zq=Mcu$4w2zh3)RNl`43|H}<Dv?n}n?`PNk2YBsy)!@_$39^vWzW6_7< zD!r7{L(HS$TcxA*=Kbz}xks-IhqMFB%Truo^CQh{E*6`c`Yr~aU76w<oRvqKohy+i z@i<BUX5}reM{v94V$irM7E|)8R&96faP4T0mOZ<w88!I66w|k>bVid{@84Ksx#9EX zxct{T=2Xmuy=<=eym|Jj%JN$=mKo;RNLvc)+`K|NL%&(sHCKRcY+c>cH%PBXjxs6_ z^%a-@7upfDV|3unX)A}BXRlP7siAIVwz=JXYNggV*rw-*ecZZBt6!gpt7lV8ssjQf z^<%PdAQF1Ne-x-91a(9&ZIBr?t3lHg%YHmlE$8q|vzQ@chghodOt<XEbExGUp2I9= zNZJewD2aF0%)Rn(%YMW%E$3F{iJF&2uNH!dfLbf7f{D~5{=JzRuJL<nuFuhRSc;A} zM?$l3E@-ZSPO6#h-e1E;uJsRMtUbzVhGI2s@_D7@&$0AW`5XTT2h|oL4DvD4MNA&g zMINK{+2**se|EfAW4SSa*vSsM=GkBwcd|Jl@1u_WWmep0YuEhkbi8RsF4xD;o$8xn zzRmtLP72n#UG@y;UPZIE%1`|U!*eyK+~zfm&zKEzbKfq9-bBWXaL>oiqTYSh{cMfp zdfK&~e51Ur^zY5XSDMz$U->w88z-AHS3Rb@=dWVEl1CulC%`++WaZ}G=f5w@_2OKv zs``k+Ck*?kmup@h#DD7LRj>atf~lA9dVQ5LhLf79-Ai5{9L4p@D3+Hq?SGd&&8c@q zLTlu^{vXEhWAEbs*D>tD7|yO-5F5k%D`P0>yA@-2%3qfIo`U(?{+ao=`MBJ5mv4H_ zjv1i&Q!iit+QyoK{B@Tmy_S$Gz>kvMM~tQAL%uJa;i%*$k}*SMdd*A2Et5|+$FEMf zAE#W^;CmC(hAH9=;Cy;*vUIseH$LDChwg|JIcCDfWjjk~Thl^NoR@`b@`lrisrT!~ zazP8n1KwpHG0imNR|Rl~q7e4wXISs~SS5G4srhAhmpd1h<mb)#t8$e0U8{b?e0<fL zVr=#o1Jlk|?KO71zj$?M?z&57UNz6KWfOC%Oh=wqETtY`a({TFW5I(of4DDwIxz<p zzMnx0Pc{$9hvi@h`BGugGat$4%??0r>P;xG9+5urDVy4-Egx!p;$QI&4&@j9`0imO z?8&U4|Eo|W!gLDLA&j3HA2S<^@$^IB=N1G~LA5yu%<f=kb#B=A4>#hDQ0@)wIncph z_m8RhcM};`*6wnRuQ}etk56ciAAe0dH$K(3w1(y;w<o9*Ps2Ao5Z`$hY<i84)WD8! z=W_6q9<6HW-H7=CRepL0c5VjMj-5Sm24P29`7GJ2?B=vM2dCBeLJPaO6fsHJpXK$a zaZ1l%edFV5Fe><(Gu?TuaWPq++4HGi16qXq<HdGA)3dJt|NlZ@`(8WVGZ5gzG`)MC zGf_N=$z8e_<73`2_GX?_cINcI-yI>NI79jj74Fh?DfdNwh@@8XJ7E{xN6m>{gffhC zL>?!w@ZZeirK4f`Qjy5clX&UPunDI{MItZ#6X&2NtV3QpiSxzStqu6+p!Li69DPet z2hGuUxLP@ULk!p}dFdEDhH=a%bPF#Xj=%zLqbA9Zv(H%hYY}Stx1ag=7z_^QL&}*E zd*jAcvSBETk;JmiA}9SRtSd{Lo>)%IT<7U|CuRzTCo&$l^_+??kFUT@k<K)yFyT2{ z->GEj$iP78ZxP%hAk;v>A0OeapKd<YvUkyVV!(ZcD<^dS;q%7{9ln2P*#f`NPwX7! z7VN^{OXsCqfhqHCMN_j-c6@FMY*9L!zC_JRZXGWf!rD>sqnWkmxg}cj#t6lEnFK%Q zFL{MZ-uFH9#`BN{gD_1IZ7ZGf^{;Y<M;hTPeu?364>j|(S8m?ed8unafw(f-OMJwL zUfOz;o@04L$vYJ7IhJ=h%<8@Ln|eQnD=&@4ZsKY1AiTHA%?2_`xy`__+YGqNz!UJr z@mU0SUNB-aI}zdS0yu}q_aZoHz{vN*Td18L=h)=LnNJ$UNe@2}r#&SlRk*z%YnXS_ zdk^E+*nONxsKTpn!nafHI3v8i+*V%9Ab}d-n*GNdBj($<viZeYV~Fh|z#lj_1m>Ug zFUE6v5A3)e7At|DP-|r+e?1Dz6P6w4nGXw&TW??QE@d_w^V<?>D9*Ses%-DSVdWfz zl|$j#VO9gYCD>mjN%O(kiU-zv0_zO^!Adf!xUzW06z3z2?Btux0(Q*MWG~>&?p-|_ z`C9%Fzl`u>BSP&ic`==3rbaSmv+OK*Pj*#d-yPwB*F`xoID$KF%mD{~(~qxcnk<e9 zxO>2Q9T_3UPH6Z0BiD7d$s;T`Up`p%nC(X29c0e6mz!0!1^6nDNMH4MM17Olp{hUU zAB2TosyL~&pOx?E!};Zr8(g>_r>6$K<OV0fS40W+zvI3fSGNoJ(7I3M#RY7%X%65< zlcaCMbRs`i)&2gx&-#j7(ffW2M4JfjLLC)nE7-M%UkB}f1Pwu2!}1yU77*bFq|bmx z=MfT+X0!r-;vBp3Qf(@<(garpzI1*Tp-ClHO7U@(Qj)gp!VelU=Ctf8Ao)ak%|lF8 z4)R2l3QvV`GA5bBIq?79rr2;v(vEOqFqKOTrchS)k3Lp5J4UrlC`;p1*x|wQkFb)N zu~vT!6P!xIe(hnoQF|~+S{7y=U6xOKS$=7(wiEd&m|G%sEA@+G`E$bDxFsDoISOIJ zadkI3X3L`?*Qc<zdx|4XR(Wn<&swgYDo~9I)azocCx!X?Xm9CCenBihH_Xo2iIlGN zH7=GrB5V_*wG)*51+g)vhRbmV&FV*FhVx*)`Zsj3|AsE|05#)xqYCJ?{CJ`J{d?A3 zDt$fr9VanG&mWSc?+5l{PT72(z}&UnOttIqehDFfkcM;tg1eGxYY;Xe)FRX&R3rak zgt-X%mV}2ITG?+W#66PQbo~79)AVgxN4s28oauU}+q2qX7y7uutkmOjO+nBPSpckl zLcfR6FXNZ5<rAKQip`L*{R17~(u5|n%h4JM*>NA(;2i59wNcLaGdp|8pZX<RZy$!Q zzWHnUsagcAx~Ce+=+9(VF&&%bGflUEPSyPy@j&ZzcmyJ$*CTsiZ5JN-4E;MWd)eiz zmshOW_OzP!@rwlPCSRI+gn>>P2$>`NICb~?_x%&LNT%yn$PTiDSyeQR8j>+fNm9jt zitWGt3`=XyY;m%3Um{5=9{9@7)`Eoa4QRq>`Vrz0#F^Y-zC{D*R<3>2$VpGUm7c5a z5F8&`KgaJ3(0iDcTOnzPyEK7VaGo9y|6?5LJ>Q$r%1#X_&wgKwN_QQj(rmnE91G!| zxemWGK#hq(4W}02gR^kb<Gm`eqm^C*|BhvhPZ&EHJ5hXHJ}mPp1F=hbVZTk+ZbBOi zq|Y4G&1qe^^kLaj%&63^$ULddF69UTza2MV{dii1@9^{p-}r^GX;EnEI9)Q~rJsd= z`e6eIr}69)e0X|=Pw-qPeCWrGTGc=O>@K_x9zYF8jZyrj^wz+urLnwwk))d3?_NC4 zJ%^`<Tg0BJpT~XcHm~Fw^=;R+B%&S1$vAo8q#3>LR(enX|8vqGdabQ(GQ87Gw1J(Y z<U8|S`>U9&=GP_Q7K6Jq+E&dOl(yIO=AgdXVs16xneR0Gk=6X1<U7ra@SAOa4Ea^L zGBiRG?x9WUSky$i*7MXj|1M&7j}US+7%!2MK)q1}9B97e-z4YgCzkxH74MnEpy_<) zVx_4>!3(-JC)h5xZIbi!KcQZ}KHy(K!X~Fu`f1P4{w(@4>^W*iTT3US5b>k;C%o1S zVy;DAntLa160v;vtXu3Ef(TD3VVGsK3SH~ftE$~?s@yE#L?u2hb;!`6i>igLhXrC- zQXTaFf=LZ9IqwVlzpeh+Z(975QnJ_>RC@f<&-7oqsLCB1g`*iZJS)q7SH6=NjGc)= zHCF<z+tt&-Xl9tr)i>ok_g6EVb1f;I@7{$kNtXQpt)u1^qu%<SB89dKxUc;C0Ry!N zqc0mnFM48g$mX8S;Z)RRGrvi;6nq|+@7^R=SXf>5y94|K_{|Mjdjq=#!$qt|4A}qb zX%14uanGCG`D1#`*x%7A1V?F9!K>qh;4rNkYp<!9)!G#Se_T6Urc<>D>hYSOppkq+ zaEb!s2<`;5{UC2NUX_CzYqFh6usv|89%ngXUE@}a;~z41eXCxOXTdY}KHhVT73J^A z^KjSJQNCH0Ebqyu4f%^Wcn2e)|Hio$z6is2-rQ@+pQwU*P4eH8KZ%AXen=);5N?82 zomc=5-)cJM1-S?@L-h;tl!6JO$GBOZS;ch!E_s5e5hF$x|1(Z@QbdiN#UGKU*cUeo zc1F4FO6ha*;$}v<&GO^|!9D@{fz`Vgxq_XTq7atHQXZx34@ep8)@Cwl>yc-hsVPUK z6LDuEtR8#WXFVc_uFae%pk^fG36mq7s8Zr<!|kom*=cuGLx0<-l6NHRL7pxxVtVg< zGBB_hSw1ISD^v4kc|w7<b+epaoCdGa=DR3)-W^94lTAEstVwGyvy$yk*k$R=!oeX% z6<Vp}O*qL|=3|}?_&uEPgusuSq2G6}x{DvfydwrD*TtKdKg8+eyQsOLc>xD+ir!qs zyeTd6EXs0sG|%E1n!k1K-_Y2-b{#w~`dxCt$~T+i+ue53-Rs6|-q+Z7SsK5NjKALZ za5K5a+TKWyH@~Uvyf-nJOvbE-?6!g`xYM{vG#uG0CwFebZ?~y}Gu6qTXkJhL+Y>NP z&ONvV&(r65`rM<h$`-@v^K|;h=i{+A(oWaBvP~|uY?CK;CVw<@Qu2FGqUOU0PEk4g z-7x;~-`ktJ##~bw7&BJz{jRm_a_1Og@cKQ?GwsiH>C_CnX20#i;W4nVNT_9)m;^bl z=B^SGD%8O1bcD$)Az-)P;GEgYN_3Ff6h7Tpe#uxTulQ*R36EUeQY)Xe&>OgXHT1^B z4*K$)knxewsR(H})V(fQCGs7RmWY|pq#v2slm-nMJ-4D#@=*ai#9&uM^6(|2TZxM- zZja_$BaGAXz`Ly0^-5|9)*Wsywvo}j(Brq`N)VGP6#g*P15~;idn0T%P}`(@LBwKL zMRv-QjoX#nVJK%-4#k~t#=$I>h?qx-X(M!8ZaY8jx^^;diVx?`u#>1X5N4iVjb&dG zlNwZ!EG$0_XC)fT=a33irTw(1wWYgv#m~MKl9~kkDpB&YH2a=dO}_PKv@%$@BOT#l z{hthzoX>m$<lBUTlPG64RwVShh=5%v)5q`oaX0S)K^)!0Y_B;3IZZ`vk<cUfp89fo zkDrVS`FN%6MgQs+{OZ$aYD!S3^dc-5{Bo8O-v=8_!wL2@C3Pgs@MRRGlNM;4%|A7( zFjj3l$?0ro6h$1^Cg95v_UuOg#LVBr?ovcTt&y3r5!@2a!MQrSXIEs6gx>ZRwWa4W zuf|X@Tl@oP7BNz3vGR45fIS11e$Vj1e6skwu+lrI%~H20DbBQ6NtG)p#u2Q{uB2f7 zD5)t*D#i4XlA5HXG_jiFV>OQ{WmhXHb*#*wq~c=jhR13~dq`DM3}4n?0#Xdm6a{Ai zDJI3-Z9?9#j(CiyZ-C^4eC83jCuL^ZbW^N1lJlc)vwYS`(T<(QMnXlPVLbT;Ys=lT z6W@7QG2g<0B<ZyQcm~jleOrgqOauWoJ-+Mc-z5(*?vm3|Xr9nvm0tB2a;+C$@z8@z z>Jw=k?xV1;t)BMml4oMiVwIlrd@5I@FszsNM$2kFW}Hn4khbVwx!quu9`+25ZSMeE z#cDB%^LGO#Q5~C)+JXC;)%JUu$=KySwz{(@^o>POw2d2gkV(!WUt*A_4DJP`ulbOm zJfv|!fe_U}Lh=ddASEyzv<U$%pm`a78<g{7Ypji>fZd&8u)YGU1Cah4YDGf-M9O^x zH;hFl*As&(j<p@$BZwK0k1F)`gN5ZrVJ0H~F!VXg@3im-dBDJa3Zr(m@(u6F-yx4_ z82k<z&bIYR-WL{wI0PK7%e}?VO7uN*{B-(lkRQub#E^#H-D2w`4fC8kz}85bl#$F! z8ZHBKsUjvPvkTJ{Nhjp%!~`FGDH8fFLK}p9>VwAVB-qQdIuzQ5N*aY%aPkS+@bhVd zJLo4;`CHLm)Laf~m~cwOteki7JGH5o$chZ_{%+6gN~xC{;!W%0@Rg-m=~Kclshrf| zj@iU)CkK4)5XselvXPUTCaG=HZFfxLy+ew>Yfcw$6o*JuBebi!{;ImlNw59UPbX=| z;n!90EkVf7J3MjhcYa6_yXEID&4BMo-_q1|G8xbXz~$F_;R(0$x24%1_40F9NCntI z=-c8&wYd@4PCq&rTXdA|nKt7a3jNbbd+8I8igj4^mG}}b1>fLleek%}4|QI|*OCP! zx>KPqPr%Kzd6?xr5&F#i*@^AR4RQwi_GacZjc>9d6I&w>Wyb|++!v5L1^kzOBYqu+ zefvsszVLA`vA8!fy2LDU2Vb_GYKQ;T0l#k6<F-)y2Yz?UanshuB<P%4>?Ks-n=$yF zgDM>S%)tA&*$`ddS^c|PCx~w<Tv^@E{DRT^<o=>owku&A7uU~h3QMsToFcU(i;px8 zMJ)<xiuDiA#(~yKMN4$|d0NMsZdT$yBfqRQsz=WE8Cu^ky{Y7%>m#F2$fIs~Ue3AY ztJX=P=H)lAljB#b*_rVKZkN!#W3|w|YZbfa9tq9C9W`d@rWb6I(^hVhhg8Ku!_rBr z;2R_of^R10E8p00mwli6^)1El*FvHIr>4G|R;C-o-g$~dj)Z#qEf`r;I^(vewC{)> zwos@NGnB9uJ2o~Nl{iA&D;MqCD^IC~R%@ivw!Zn$zPBopZwrgZq{I3?Cao7Yv+pA( zw6ouEQn%~sKU8S7tIuFBX>LWHrk$;we=E6<D!GF+uj&Ks?967Q(gFom)Mlj89HiJf zORP88&61wC;%)=4>};dGOctZPSg-VQy1h{Jn4-Nb>-*3TK7^lVJ8mAS@cVGvV9kvX zvkrj=Rx(ct>(K<cIq!%Sy+=ZeAsup#v<7K%8syn99=;)b?L#(lB9HG7SdC>7Ym<Pv zh<<M{QvBS%RVIXt?{1$Q<BncM{`~}LZ&`^Ok!F-bs(hzlq7t_>ZWXtKvStMb_{Eh` zccP8+NL1#TfP+QBVaOm3ak$kC447{_ibd{!U~%?;VDXp#3l?(ARnWl1oF_6Gu-o#> zu`}WE8<|lKdnHoT%0|NMmR<PON$iDI%FIr#B<8wC*p~2+j4IeC=M=En`}llPVWT`{ zJ*-TN3e=rsq0(BVXRCD1!-<v3=vKyZ&U)BtU^I8da(t*0U0=7ya^Cl_mBH%#S1iYi zI#D}dMl9z|4-Yv!iAz*g?-MaS_Ogfhcsc$JquQ+M-nCZMy<<(%YnZ(P;Rz}_#97Mx z9g1oiX{RSKcrDEllb*r-?pWTVo;LYfi+!5)!a>h_@+kU(oI^Fr%33v`ZOy;t!82;} z8}P0332bemult237+f}ok<i1C=2q#kU%`EE0QOeS1JIaJs2e<VjQWXa%6W2smlnT% zd~VfqUFUGFn&FJw0gP8O==cJ#A;Z<MRbTt6Tw<9lCcmsU&O{Hofn-R=|7wrolrx}i z*lnBQO9)bavREc+>ms2X;4s}6<&lYq+rdF>l#$Rnq^2-T49}rolFxp7#x`x}nYj8o zTgDl^LdmQF4StuL7xlaK&NjKk@Tljmrfl$fnzG{Pbv6DkWkX|J9lh=~B^KZCu1p#e z8b;vc4STGD_=YUkW;v}Op&_egvpl2#{uuFVCaZ-n5IgH9V-ATA!Mm_gRM*{)y*GZt zLGcM;7rF$pfiel_?4PIX!Eu7sPH*Jf86W-&o(X0hGpiarC3)<1Hm(EuxYb?Spq2e^ zXKc4s24<3{yvH+UWj1Ipz|tkAjo8mosSsAcR_qUZ?_knrqrzE^9wt+G`{&JqnAJ*e z3Nl+<plHGPF0+SObj;3WTwg0o&h3p%b7{tZd|tCh`5hJMxeaU|LGcv<-r!({Wmqm3 z%K}8pzE`4BNUrSNDzh}RF<H*PujC{K(}4-gQv;K9!(dIDB*gMNuGD4LE31k9Kj2Z* zdLx6$a{hXy4ol7M8HB<xV>xdQmaB$IG~w=MB8}K^K|_KgHr!>}snmD@_k<bET@m#` z2DMhn)%HvaXjSTlyPHR$p2}_z-@T~LgCFdADm^aW-OO@uIv!y$^}%SHf6J_X)?1@v zEx;qveOKxh{ibe*Qa3Y6WzW*x-OO&;;f9@Mn8e`=Wt@?ChDw~)D*e;L#ju<u(^}SJ zI_#*#;82dYvp%nakK_;N;r>{URJ!R(e?;jI@|%ldHyb5?yizakO1&S$zaGQmz-xZe zHk|Rkd+}l0HhCQ0e>H8B#~bc$1_e?-hd;3f7rs>XZSpk+gII&IbjUmI3cM4)fwvg& z*z9s$vsZ1y-W*V8ZIcTa)Ct?<33#gkp-_P?at)N1tTE^l0ey`Eo!}ezL5lDC4fIJ@ zpw}&e++|R0+pxL;70|DXLQQP|&JV<(76Izo7}Nt-px*f#sPQqV+vJ-(Tvr|NzMesz z#pY=;gKcA@zX37Pgz@k!e+uUBM$DgpFOY~7^sEMt{oBLlh1nddBT*i^HmteAV?_Ea z0v^-GI9ByQtnO`Buo|ggrB%3#NM7Wxj?Et|<SVswzrvkJuS66c<nD>p9ND{3#&0WM zsog#B%WM;A7xLlXvD_Q0jbGEz;=9o+wZHmJ?T2Ep8=CKn)#ou*)s@<R`%UdXL}45F z29^Ep<}`S~)`J$T#gAdNNd>EkQRaIE`$1WNU%-NwARY6jvU3uC)<>yxTB*Y{Eo<>{ zEXDj1MEa|eiuxu%qgaZqee4yL)ZNW|!$9j1*j~9luKwT=T7R%<l_u@9rv8MSVbtQ8 zZLAEGnNG+C;|)#wyWgM9e2la0S#b+&S<U~4xHo}|>b(Ak?=l-Oz`$rk(0G{vMaE?m zq8M!)W^_bwK{5RqG|2#x+yNI{nv%4Q<C4T|zo=-dkTgb<R$~@HX+w;`M4Plp+RQ{~ zMYE8YIEra|k-@pF^M21AFeJ_I_j%v<|9L;}M=$rzvz})=&w0){&pDS|cR02K`=vSK z6#U=fyx_E4{=hl@GO(e};jHpY+H*}2`%Ym6gBpDS)ab6Wayt8>JSq8oe=W3cz%4^e zJNRcK@V+iY9Z|J+FkDr%B=&PPfAlXTy@6Ubi!oba(xtkN$4<ukm}{Kise|7UU5Ecn z9TUmpJ}+w}8MiL45O;GQ+Q@ZwZvaMj)%8dcw6L!8JuGt!c2JO}k(qouqY0<0pma!c zJ=ZbtMJW(J@oFfW8;@3~wV;J?#?FVXUjC@_#LXWMEyx!@5n92~;yGtBSq;v>`4FdB zP}qMAZNaSJge>5rk3v=#Zn{$6Y~jZzV5be|-m09#oj&6Ka9kG3dk`Vug}l5(DJ=`7 zor0a^fB047Z^O9-GVmVgv|5kWhD)FvE}}_q<`^@OBNY63=#jc%wa`Lr9j%nkqD07+ zl^Qz$freYJ)S*#wXaMm&Ay1tx=@3q{zsEDd`J!K{=f*z*e#0%!ThU@Q&ItX%G?Z`v z`>q;yb%<KX4Q;DC-s#y~-AER^KB)_tUXsrXPVA42^aQ9SvPdMI;>V9co#7I+XanUY zUQQ^Oj#@*(xDZEN3<h}_X2RFLB})FVuJ~s@oWNZd&<8V=KA1^;Q1M6f0hO1AR?*p? zN&Ab^s&LL4)Qr<GTGi427<dsUmD-8=>JPrJq^<)8VXzHX`m^SQf*<#<Pv!s<Bi*4; zc`u;ePhGzSJ;AGL&=+(ApSUdNv})M9xy7k&n$d8uUC&>r)1=3>kd)wZD?2{fcMz6k zD6I3m#*zrR1TW1T=^pvS$mbZ1C0_ZhiklcWIc^G*VEQkmoi}=Qrk^Tb?Y%@9p7Ctb zv9rDgrx!QeJnUqzkK{$vTYv1&$Jw$%NqZ5x<7{;}JUs-?g=>GS)zs{_na=t1O+LTD zl#|Rze@5B!l=NqMIh;GED&MDi^*BdamG3|HhB;_NT{F@#<=3h@t0^3NxOb4(#z+Sd zM-<O1{xqfR>YHWn?d5Nl{Y)>N@FE8C@93oyTe$4417!;)uRlvE;lZ0FY#LI+TBQV? z=`(*0PF@UbstmTFXh^CRN-C}C13#y5Y(UfYA8X)W4s(D^;PsoF`AVCdz4;AXHF0$y zUFjDZ`08+)XZpbhaxHIgyJ=qhu}eAWng_X4v$|;J8taES$Jess4PF{y;>Zwnn2(<Q z3C8LMW|7v)W~_jSO@bsz%T+)&1!;`=5oio_7lZmY&$%(C1Xgu0XH@4=hB|C*fmZY1 zyVRJsR7M0apU!G@KyO_zI(~m+T4s{B47@CoWS#;&J`-tlR!c1`Azfc&e%5}W<?BSG zwVIDpNS*n_H3v8^4(@L)FCsk3x}ugvpHS}K_OUg5XX?g7_S2u7ZlGLxD`R=f`{MPn zCY6#x-~aO>wez?iP$1?DFG@uEXYGek$9Zs_e+P~TwdGOFf1G5@wj0wjqFj2X>WBut zwn=HjG{6^!HW-vP#G?%(y&Oh@Ah;Xw6Ti*?_&I{#WEPEc%r4R^y{3fJA%wqX=PAr+ zy$0+uOld(FzMoJF0Btze`3AGNu_z7tSrw;9Kb5h3?M11bsT(N%Ge2?fs8&-Se>2qV zV$zztYUd@Ktb-0FMFak`09zR<5Ah)wuK`?m;O1@jk9wm$6gynj?i}y?{ithqH?;Gy z)39PABreLBG;Z{SIbT&mqGSFY<YBX%pZkY~Oq<gAz28~T2^bnbYsxpU3Z;sTInQO< zo#RKchofOd(BWiXCaJ#anoi3|Z+D*~Y{PizRAP>C8eMeOfn6W;b5ORSU$p4M<4>fQ z6*xQ@Ns+|StH2EXP&B%5gYxB2@KOj8c9E^7{-wDp*B_IYE%D0BS<!*p$dNJ5xsK1S zYDWxnF0K6or@6M2tLq6|=dRhgrP%ox`!Kzxy1>EWD_*Y=_^GrfzI*LmuCCKFJFAhO z!gn%`I~r?yr1p2Ny~841_To09BeO9=pERHE;XAS#=R5do|HVhaQdh8}hVM72+XZHG z2FbQp(vJLdRcH4mPsE9yU?7DJ1t)gV@3-t^U8}o9;~d|30{7+^VZ}&Fk=A&;Cm@A_ ziCqyjkJ|S%-s&RjV={ED7^sfWnQIsL47j&m7E=}Fj;K;QKNO>?Vx6(*iA|xHm&xvT zD0o+B`N`O4_sXrun&nTeYUp}B^nj)ZR+Rz0YFEtu$X%-a&EWBBs!rk_ma5&O!hJVr zfu%^H$O!#j`HBE-pDlltXC2V*ihzw4oMb&ZaD{DK5?o<=N3%b=ifTFwPM3QB7Nyp= zd!lPr%-2_MfnCN3Sb6*lIPgC&iRkQpFeS2~=SCNW(l7ds=urhwFCX#jCWqd3qUU;G zVQy079`p)E)q>kQW<Bot+_GW0V;OGoRLL_RzWs4n3XNhcn|=2As+uSp-`TxB8?;RJ z^_6C#b0TXtI*xbdjG=zbF}{HNnzcPQ+K>0#=t$yVL+!>i?!8XWw4XXOos4suUW4xk zbPqWG5QWqg6%G|f8P-;9N%|EIT+HubaJO^0%&S(Jre;7Re>#n(?MD67<2^kc(3$>u zO5XGKXB+AM?H_wOf}dSgPc_Z~L>tl5zaY$kbQ1Dh=Q{r!Pn6gWKvgj>6r3b897#Bj zA>QWD_GqzRr^r#TDX6W9s<zEdYqU9G5rg^~a!RrqlCu#STzfK{OO!s|*?)(BalkX} zkpH#Ep5YiK6uR%e`<Uwe8YXt!^C>hxo;=2ki<2s2Kf5~Y4e&R2?*|PRQ-RwNcno;r zDqfZ2D<XdLPRE%@Mta@za=V(pSQlww&zI-^V`X%E3@8i%7JYVu;*QDJIGbx}e}2vr zaa8^CUCN30Ey&z#(yu)cHAm?_hg0)1r9U3hJeOLlu6Yi2k0D1(#Vs#jLyB30k_@h~ z$C<QW`LqLJ&%(0XAmuK}%Rx`ZbHwvyr0HFP!dIs6OY$jTOzm%1aA)P5DYw@CmdYN> zj!i@QIF46JzXPSmS*rl$Mjvrfc`sW-Bi_}e174*1?+fW_^5#M}!_1mNKTMwG3z@)o z6!zhXY(N_X$dn-$0bii1FL(<y7SM9o@L|$*uo3tsFjzt(B+Q`FC*>zL!kX&!r4g)Y zJI=Xim%yacK7f>CmGt00TV31bDb}bkUufK&ekS!{|820_$&5YXj|9aSksb*Q3u(Gq z9TB08h|)%>O@HvKOeg&8B-Y29j`^uh*2_XJ!kLcv*@;Pjoj9d<@-5DT;F})s{~EeT z+Ip@%61tpKb&=p$y5hX@N|puHAHElFRALdH&A>9^N|sX1kyxad-b<L0VP;$8`WUAg zI%=bwapxl!XE_s{jLeotOBr(Us4y=1EBNN{y8yiwBO@!CAw7QVAh=^WocL1))<hUv z1+Fcf0MZ~I2+L?sLu-Tb5Wc2+`6F>tV5E~Xg@P}l#9@#L86h9Ry-<`z_9RAD#6{j! zQH?Y_((L|^G}C`jA9Np3TUfeG65ViZ#03i?CDA2Be~bcDUqR|h`^ab;?96gAu=fCN zArw3jA_@FPP&?nXLxc3oLJ2n^*DmBBzoy-FIUwrrrB{|$^4B=C+4FD6y~6$Q!~B^; z@<%RI4dl;K@|WXgdXfqyl(bbE=e!&)%ca;bQu=`tdV=r52BGd0o#_nqyue5sdRgh^ zJ`HYV#3J?xP9q5oJ;57YxUGGPO~Gh1ra>09SZXyH-DYr#j74N4lzuq|ezCBOv{Q`| z$@USx_YC>oH}K8n7Ko%rSKvZALDd@m&HdoF>gI2cc)G&_O()W0W2@*i!bn#=kE}^; z=nj6<`%UR~d0D<0R)4&Vt^Ea0wdiA*_7k3iYwVJNJ6QS^-YoZ3DVv&rzHJE|T*D!p zbJ(Q6AdTQQ1-5J;YfA@9tHn>WcQ={JfA{bndBSPtc1Yh$BlxDPTzsS>`C)t8mZ?Sf z`_5E*n{z6YW^Y@-oq*+O?9u@y?si9{V-I`@vEy-ap7ekZ_D!Z1l_l5yu8a+|uAhR~ z7V+}x<Us$F<UnYBoTJ6H2OOIskxgeM+kyq~9unbex@s7AyJM>3cdMs5>}`4uaBIf6 z@5sH~Hr0_>lq@m!x^~ZEy_c+rM|fu}`n#+f#|A3mOo0kO_#S>0y6-E0q1*(?<5Wjs zQK8!;Rlp}28(&z&q}}GLE-RK|x$5E-Zpcdc--2h&m@mP`pc(!|Xgm&;k|wiss#-M9 zH%SJ&Ng4qdU>DXU<i?Az7kZtYx|Csev(-%c>_Fb@Y&Cm3bgWaC`d?U+EeY%krC;LB zvR{^N@xzw+m=93nS8n$9-OM^EmgS^TWS#qZ^4dtpTYjoF9<>@!>!meR`z4If+XxSb z!5U^G*BcrG%N#aaG|$kylk4ZYbrVSg5BK!Ni{g2$x|z}oD1!y%qDt)vF6q`f$$Lz? zJ=u#H01LtgOD~A=0o%G^zJm|%ZovILZEQ2mgr@$qlZB#5(sPBbgKJCy&ju6b3C)#* zrNYC^Nxdo2)#P74>b$onIJWzA5^NrxXC`@lW)aq2Y#;d!uED&s60i7RDGz-enr{NW z2j|<Tuvd1%&x;AGX?=y~?oQ-jEttWu=BgGoZr1EU2vIjrD?8l@5A2T$T-sQ0@fc~V z=Qu|C-Hx~zqwi>$qb-I%TKuFay7@L>1?iWN#6eBGjZ2PlFzMw*V=v-XR;zg}BaP86 zmSXjK*u-Afrq`I;^!m54TgCa_?bu#&(&lK>^XB_Jx=U`>y3hXi^M}jc?bwEJjV;6R zH~;SLgB`H<-O=WsIe%u3Pu5M}YUicapN;e-aer%~-)5<Gqs8F}F#J3Cl>yDyj69-> z^kz^i8D#y4u{2<3WM|6$NjY2X2A@&#R2=gS$t!s_QeFl-*fJ~4xKyNj-e(MWm}iHk z!|j1KKlK6Icoa~^u}?aV7BlHjTo|5XoWIphB}P#CalCY3qe*JrV02Kq5BUu!PZf>{ z*!XsTG=6Umtb0A2_VmUpH%BYMdD71bZ(*!h8w1<OG|y<hF*fE62DX|xk*t##FhXxZ z_Jlhir>eyLT5S`o;YkceV1zP<t6V+7VK}Rqp#!`^d#$-A7~N${;?i!kP)MQnx-w6{ zH`j$0<s8C^Y*m%`nHGAF%@}#?V7tWRypi?@@8C+fG`Kp1fBT2l%JNmN1YlU*^aO5H zQ^~`u<#WtbpFC`l+DX2WE^7Y{C|k7mHdculHd<i><vTLL^)JAcBwo<AHGSxh$cxBL z5{c?$2S)Gw!03%&7!UQ!l~8E&V82jrFu3n_Tb~-*aC?;bEO<#4z6{b;(yu($aA=JQ zwgM|k%&5}=n`VbfN10noji6PQF+*FR0z_HRf?by1gE8pxQ(sq!yF``q&sw&L`g*^% z2W{XbHBYy|hUVpv7q>CdqUCb9-!E#vLBB6i+86Hk3qRWL=WybtJtWV&4L!^8+e*ns zu-Yj?HV=LPzI2f7A1XD$R~Tg7${1I<$RCy|a6fPa4}4*}{ygkiw1~IlM%pg85`kxJ zuzX1PR?8I@C6;lLWJ)Y9RNjTf7nJvf;_9-fTxRTVi$B4bnWcVMO4UsloZZ3SbX_hT zd*AP99|M=S;uM>TotC>}8}&Wz{VRP8O<eRcVGHPD^e<Ony&p1S;8FCj($nbeL#5$0 zg*(fzm-v00v-xKJyb$e{@xXLyr}pMN3+J5J`ofxNi<1Le)@Mr`F#6|Wi#RqAa*maL zsYwnn+0#_X63<T4x43k|esP8^8~fjW*M9hWHeO)&vs2hz?Ec!$NwYi84aM-`vf0$| z{&G$}VPLaZX)_x+=TqN)F)@clIV`*1MKSQT!DhF8!kv*%;6^oPqrJJ>)eW5h!tAt1 z>zXczQymvv-|bw_`@2C)oyN@mr?TQ&v{(OQ#Wngl>@PHzwevr~Shg1PT)c`8w3fu{ zjSh#@NY-mJJ|vn1_Cs#Tv(|qqp6%dL&bDj$)X^$STBFLWnF!sU+n#FVXTipNH{X#A z-$yUmOrZ4+*&yYG<?UC%sdd?Oxr^I);~TJ46w6$!g9ne!BAaoUM`kkUE)$hM3=fm0 zy{O8~j$ok!JBHb2v&+fEUvFf-q&WRWM}%fR#RwU!X{#+;HVb6qq_Jb&Gf0Ir74_b$ z#<``gIctX1davGsFYi^uGL<w+!={|Dt#+xz64y4-V2Nrx=z78RrRysf{7;J6tIyTJ zGRn+hDLDUkM8T)%j>f258rA)cY`e$Kb#haeCTKIZuF~YbyNZ{_@UU}*w(_N*;~TXq z&NfQN**tilZ<uzEmlG$$653*E7`x#7q&y>85$~8dzlJ$|)nMc>V^gh0QSCMdLRd)^ zyb&;R4zt7JnCp%cEsjUr7RR6PsLL#lDBPtD1z!uD==8u_4`X(??BbTyoV1ybLN4Pl z_I5sfflD}lOYVsITS^n>urqfvY%&k(1s+&Bm}GnDnbJ5{TyDWC(21rq@HUVFzXPd4 zf-~!segLv4Kvs)W&FQPdGtQK@`B_2oQ=8;aANU@eZT42iV2j{v3?8`$VThx4W}}@( z-~-(LaE%#gul4+`1Er20XfK<>OQU#rYv^E7hr9C7nt7pZtFy(?1pm}RSMIHRy5@X* zUep{o6|{|Z#pSI8tY=CHn$uUK@I(VD>NA3!;EoumL5CXt3TQh)7yS_4p|Dl}U!>%- zpps^Kcgm?QHuW_-%F2h7MKi(2rK0S7wfJ7iBylXL%SnLn(|*4EWUU1hc?=H?{?&=% zC%hdNdqBZ%NOYB~Nva+ErZg<l;O4|B3;IHZZwia#zw&#~3e*GqB>|WJ%g;M)wWwd< z(luU{>0R7uMXW&DY@Fy>9VaGBF>IWR6_at-lXcN=7QfG31!XRcVp-D@HamV9lb5&( z*G#QNJknA8EeK&v4D5-d;z_}&fG}jL6*hysD!{-(4~_@@XOd#LL>IkrTh_I8HO3Bj zl4hU5h%w?=bCoS`U{oAyGSEh%022{%3&x2sZK`!!Ig<jYZN^%%=m(u&$jK^B*jKAo z^Ws=>v`7@KDtVV}iapjlTvEmAy@}#(%{}Nl6R5&O7hhiFVk|J3@K(Y+PDwWc>A2Wo zNVi9$X`*zINC!;;v?eaM%KlU%?EU54<$|?GjQ^RkFZ?<sUz~S5sMe86uZ;wBJm~0R z7xj3mHJsK_{uh4*?7@35hiT5zT#n2waAW^9Tk8vo{@r2NzTpqxF)#lUZoiUDsmo_{ zUxZD@?Hz_4z)G;k3wfQJNpEaa=T^J8_8n8JU2irncb~>-5%>o2X7>KMDx|UFBvM#} z7{}>Y1z#bKG>W@}yL;moshk<^7T(yD;l7}qgA>$L#rJ~I7UzpvWOW+?9wExx9sE@< zlSJNURju8@pDW*&&heO6T&}T*%VmWE7ft{u*M{1`YsyYoxX)?99ca>8AK@H}z05+o z`xT729CP?|=s*KI=@y@XT8uebP&5wqpw>Ne7F=jbMfbWQ5NB@FAdc>-leBP#!ed$; z`X^>A`C*{Cs7^Jd3_QHi(RP}#1w2-p#4-6e=~5iQVqQEGkdPkRY``&d0FGY(j$c9t zYDa?wRuhfBq;T(N;C2-13`4OR@xwteCy5O5kxsU>1v^T{pTTiiD>h$c!P`3ypFP9{ zcnf!T3G$_({944jR8GwRTy*j-D7xThr+wq+QZD)j;U=EkQru?-^&b%_PVMG9Ss!Y6 zhE2s@B`3gF9|P~ei$s2$29gp;G-9;yp11B+b~4Th`l;t16SZyn$d5&Y2IsX!Y9DjW z6URXw|6T_(;(6P=Hl22!>wQY2duAYwPRmVv-!%dr#?I-OYddr}S4N(fg^I;(Peev^ zNA`?^@AFu<wmTB#MQQ(x7`Bz4_^D4Ts=H%4QIhs2j#~n@*=kp|7pG9Iw%s#N+v%AO zoUT75E^d1Yy0qGum~MUlvG$#dQ`=%<CVP_>9=1>NsyjWUhwb1cr)tqUedpY^81*Sv zs`w9-=NY4K{E2P2Bh^(Z-V%VnKjl}c3${%25j#8l`z(Gn$=mb)z%Ntc&*GcSD8_mA z?|wG53G)H>$`u>N({rh3sbAShz!OFNI|Uwj!o3>_KR%<{Sj{qOfeM`FIjT-iCR(6< zNo-`Iy0tRFu4_}r%=L~1>~p>c`zhPc=8o{es%d^|n??<*runcrJ@CCff4E4Y!(DeO z?>k*D;jL4@<Wh_L*p-Z?TNN;OYi^`Em}`$})GqYCdV1NbOhmW3b6lHRJH7Z3q*tjQ zam~eBub%7r6a7}5h284kqMfJF&bNoOlXs7_4}-=rt@p^<Etv6JiZSaMRjyBD?Yer- z>jk~NwhNpzrEhq#+Pw>FoH4<JjQbPqJ&ojTh2^S|(^}6zr^5aYn#iHab&2nEM6gld zYTUWhjB^uCtqkudaam7=N<us@(yDsaJq))F!_wb%UReA{xlnY#X+a%3HAPJ%OS;WF z2R98_VUl><-J;G0pWCzHdJ*`H2rCT#E}kRlRM(4O%|^Yr8GM<Ib0kjH0f|;9csR5X zdsb+pIq+l#s1b!`-smb{ZFZEe5}-Gi4NUroY=@S*&B_W>TOS(r4)E0YZcox1bn>6v z;IrV4=U&+^>~k|JSkh>ouhKOM*xw3iue29}Mvd>*0OA^VjpkrecQ6WhN8$`9q+sUg z_A7o%p7X(CT2ZxMaMt*lv^rX!Tj)GOUej?_bk}HEoC7OP4e~bE1GANlY6m1=cX@y@ z0m;NRUkN-)2z&|P-mbvC9dK_~;QmrM-3*qtLL1XGSki(})=ALM?p>PH=4$s+E#GW< zIubez6{o7*@!*J!YBT^cc=%uw8dav^RV_t@*q=fhOo1n-ngV!ZWDBt~p+>`Z^?d=# z`!_csJNqAyT_b(lY|Zn)i)i6!Cr(xFEKtqxi397-$L*|_v?$6)b)bbCyG{?Z@Y;Wr z^IeVq(PNtL_t^RVo!|>Dyb05{|4Uhypr1`=!CcTv*;cZ+o7CWuZ9-R2-JhcLE%B1V zG(<7p6~&1~)u0p@d$kLE!DM!P3OIfA3v)nXHqdvW>w=Qv0#c}wBONce!GSZ;FD-r% zO+sq~)({23>{><RCzPOd3~a0hRCaEBwM&JW%@h}c`@{+ze)3h@F>fEZ?%CGJ=LK+& zVxYN9_eFNnh~rND77t-2z<r<_=l_vr$h~(ig*`DQn@+T|!6RnDSwO!%maMeNfWLOD zYt@T#x~Jr6Xua>OsS8<LC6n{UwuDTkM_{o59Gb8ma#DZE(=~NrOYc3nXKe>>`5)kc z3CTY`Kf<%a#!!pS`iq}ts&?0z9s%{a@sm2T5dl9?X@B&Ulz~HmI{~|jONvXLHa*SG ztf?z`q~vMv3hQc+p0S+qGU@O5n7uQd9!N`wN@db&d<09#!iS;Ud6dfEN#*|yJNVOn z?B1Rq@2kgd_SM!QeKqqx`sxVmKo9nn>3{7j>yPx+BYofRt5*Q?|4CmZDt!gcLs>}~ zEWVbZpE9Vw{<F8<MQ@!R(pz(pv-$_U_43W$`YU?tDZ=|HjEAV_Y(YrpolSM4e3(%J zo1Wl>wJL;iqCpfSmNCG>kr43Y)0=hRge5Wpo!8@B+vIH9HW`dFh2Jo=tfYamM*L`5 z6)yN6O#Yus0`;0}6hXU!V#f}oVwOke8R}QK_0Zp{R%@FXX&gLj8BW!x!6%YN%Gz9` zo1H)>5@QkTvo^N-ZH)r{!Eyld(s>*9{Y55lno1*^Aj=2J$B8psz8>|N10MW_<x+8K za-Jh{KAmKjxF1(D%^3{^ZexJiJgkvdc1L#Rb?QHqqwvM-u}l=@2UlH@gSaB{65VVX z@rDzN)PRRLMDz`9It4CJn*(r>HJJp+H*B`Bw>9OPQNHa3fM_#zP*@)Wls8in#LQ;J z-uZ-F@c*Wq?%)l)6w5D_1zVb8O9*oQ0NLCgn}>VLxNBP9$!t~~<*#ZPgV&VztUciz z-}y(Lzp=UCS^M}FzH^h2?=+M=YfnATnWI`0kwV)-f0Gb5o##8x7r^ok?&iX`JUo!= z7YtiS=RYlvbG)kyK6z-@1NFg^^(9Djz{O<Eem|4a=I;vb==UfbM_!;lQ{}U|7a>n% z;8*1I$7M`oTQWPlDw8AHnp$Y6uLj2{9$a~~SD&8i!~J#e{_=f@%eLf1iSY5xYrNt2 zbZ~h07__Z=F-7~+MtoZ%#4{bdIUm-Pm~?$(f>W_=l>G!wYI;teeyb1GV!^-T(kFTO zbd4`cOvnY#dCUk{GdDt?{g~Y=`ovE#8X8#ie5ZpmvKeHjt{^u2Hk^v0@{ND<tI{LA zx^%TKNko353KmB{K>s8--}m!5jQK3A#QtNTtxQUQVREj(xKt?kjA9>0m0P2fLN=eM zbloZH585SZCo1q#FFYrHF7jfHMlI>#HICPa&0N{&TKz<5GftZ0W72I(su#)<#Sv&Z zq-@qCF)4zVB!0hrOp6Zq^54J!6RFqiSV!nHqsu71P-aF7;<C8P;0FYDK~IE^Le_^z z><ZRFlPJ?myX*IJ4b5|+pUQp*Ww&}+;fi7liAi6E^K5ue>k97b!%g*IHB#6K#{aSQ zXZp>M-{drz!A)n{pYoW+TeY_KZqFe%a=}9?BYo-lJKFW7n+I*O%g#t=J)o&EcJF%6 zBjs@=miRI6AyrrKPSi{3_ap8lPgihZ-<hO1OJ|F!wJSKUk2r(JTX^9a|KM)k6`Z9& zN|>_2+Xa3$rMc1atzS2h_v$CAef%WeR{|R%ulmT}+cC!rL<s~ukhCSbibc}dG5FAK z$oUen28Ju8C7`suzOG;lN?V1}{^YOgRE<$7>6rLL*JVG>@Bz=1kuG{OaU)$!dMnc3 zfCZ9JunQwFJMh5kUBQ3#QvS}Cm;9=UW;ekT<KrgjeXwW}aJ)|aTI2?Hkotig*pdR* zy#%52WNn6mGcy3sUr}O)SO{FXQ7ne6mQr#h8(q0rk&V4)k~qu1TOROdC|nUrU$3NJ zq2AniJL-Q;NpYj4l*+Y#>HY*g3tl+p&b#<R*t~z>O(*U5@$Q135{;8Ws<jDCUBPF1 zx1sNEv^f1VBHxYCHq=2OHIUnN1%HV;C{>2vEH2kBYmQnBJ4EVXu${*Cbp_X;#F^p+ zwI1c&kMcN6u;o^)DZ;lC@DTpIBvPvx%W|B&JiOY%HU6DE<6swf4{wU=3eN8hhq1iY zNukiN$)XUzfRb+q434=sTG}sPLT{@0EtVvV#^ixK9;F;DVFu@5z67<ZxwQ-wBk-Jf zxhpslBW0W0-r~i#QOQTJP)*;@H&T5GZRV8JH(DByy0?empw!=oEKz+6Ap7S)EY0tM zvT^{!wDSt=r%=|XJ!g`R+i$c~p{&365ENguJbhU|agl->xHOvS#L>z?i{9%Ydl{ei zW}R%hs-J@P*rOa?apHW|7UlS|Jj#*0I?7Rm=Y?|2C-XVr3I`}aqw5^K3(jGFyaZhU zNJpTRxfSL8wuecI#QeS!b?@u3;rrv3#rP&${Gs5>xYbB?+>+-Lqip9~P2Y3{A5n5h zEwe7OnByP4ig<^q{33P@p4|o6-1%3F%6UkupTPGguf9;u2m0-G*VxIM10TLx48M6U z+%=jVnEU#fZ<xlXJnzKyhWh_SIFmdo8yZ-F@RqnJL)nF%wBK?LCmrp$X4Eq8pm-8v zEAd9hNwg!oN8>yxUgSrjk7xFT=T%%Q)&X{}C<m<sYY(j)+RcvIF9I{9p>H{?MPB%b zW~yd{QfjdqUjC+-vFke8;*Ia)8{?0%DYS*BxusW1ztQp)ausTgO0KU67Dybzu=L=x zcv7rUQg?QTVfhfL6STvW)FwBjb`?0<-sK7QOG^5?l=Pnsq(6@I7qqcW<KfFA4D$@w zfBbXrSm5=sdFYjF!tH0@EEc)+(Y{dd{T{+G_Y)3L=Jav2oJZdrNBPGgJ3lTKqZ~cF zV{eUZLhFw}@@<>j(X!dkr*p{vR?p}Dc$@={^juJ|Vv@K*eZJ`qKtVldahOrgGk|jt znm16!V>ky>57PZ@+UEz?FztyOdub+w_e9Q2d*XQ;@fW_vo=EW}L*n24K|JMzwh063 zDNHeCa}hpyhm{L#HZiOj(ikSNS>PcP-T}D^QfG5|ijP-O9Ox<=Vvw_<UIRXnXPU~H z<qZYj?d}Rr>Mnv5HAB3p9#13TC@Lp!eO$n{0sfS|_%_gQ!u{mEkG_)wwhHVHQ=isS z2p;I5?8I3En7aHETIT`VM#7#ut;|?;Yge$Z%Z5JrYYRU%RlK5&q*}6zMS{-U7Vp@N z+bRV0k%5?l{}J=DCW7+VlYyI&Ctxd~(sx*os<~zXyZerih%egbw}r;z>j1tU4wY#T z=7txQkOf}{@U<#*1+lI8x;J!HV^GTcQXD8#fp~|t7TjX4QNaZp&$-f7G2xogF4PR& z!f?$a8wOL9s|Ly`8%R+Q<$%u0y#yccLn`=1Jm<1P(%BV!u#2!7VW)%;VTSv#`>aFX z9J6<}RM30@p10zRG65%Dx^u`eChv&6t@1?X16TszDo@B?SzM5^vY22TR=(do%$FS4 zv1EVIU8_^T7fOb7@~&0GN<J%%%nK#oRSb!$8F{V9$5>A#2Xsi;f|Ow6BV`Lxo-c)l z6nuMC)JHAi%YU|Jw5<)YdA^x7ca(MopX)xVRW)<?CY`|#yGZUm(ON<LFyzUqk6b|e zh`?XMD$qk8;1Xy!;!b3tr7CI_Y|sRNNkIQ2J>jpoh2M(9U^z?cO!QqNY|CFmUffZH zj}wjanz%y4Ht`cU_{$&+*A@Iy_9&%nZ+uLi=;2dv!bt&bK2U$GQojfF9|8|b?bKj5 zJrRNiw(tmgEbG)EH$is@76y;p3_S#nIfX&XOlbpAp?TnkOuWetnIOo}PvOkT3#ql& z#EY7#O&^%ciwp43*}NuHdGaVq{%=V9ZT!)qWOs@9vKw@!<DlE<I9dcwiJAC-7JNla zX%nLyrhvTE=(vV^JEWuMX#j7;NI6WB%WiZOE4e}_J>0+0i@^CUWGXDqI>nM7K)}hE zBhvWuwl>~y8h4Z;v)GK&b)5>YM4A_#Eo4EEW8C1-KZ4n_D35yJb5RqpJ@5z2l}hgd zx2|#*?lkU_xdXf8lnN&OPG61Nh!*G?KLp?XZ@4j+1Nc6`?U{VM-wSPlB~##sP*mB+ zm1fXWj{!4B0FUVKO)X?fZp-~Z$S*Fy^HkXmH{_U`_qgZ!QUW`c?I~hYno6nWh{g}y z##OwdU{yk6{;IURTru(f^m3w~(@VfV4eVH2U6c~`a|L-c`MDaSw4LTI+5rCK1o-%r z9y`(QnXUDn=p<jr-@zSK_Ce(+$DFoE)toj4a76&Ft$<ToattSw*Ze5~9bn;xz)}TR z&H)zhDm7p!RA2#_t-zvN`o_TAB3?N972E+{>DPE~WbQUvg~>~b3-Ii6lLpwXq7c3T zsR?nA&rJY!4bRP?c}IGqe~>paCtLC$w^#NUvICyv(|G?#Ni^<&19GZ0OEtu~<C|^p z(AO1&KS*UILPCu+74sfvAj!^VJEvqvx`zJJiF9`6(Yxe9kx}q5LV#n!Vdn3JX(6eB zW(Rn6wm>$dJZ~&ba1|>2I|`$c*yYn9_hQl(dAB_X?xCu@mY)#iO(jp5#nnY=(3ANr z1RKg`%lcPblUpIHTA${WgCqKH9e}`7pzH_}zJbR%!sbWecM=q{0>vKdaBw0<CFeOV z>Q~_}X;xJ=uqm%V&h%UO5Uj@81GTuqbukm($4oy8PlbxjqZ)Q5TSaB9P+e-e>}OL3 z`4!ZEwEs@8AAvJG=Nu(CsC@h#mNQU;u+tT{AbF$Z2X&W&%G&9Q%md8^%~#UzVym`^ z&uYI0enSn)??cc!y4w6L<_y&l?w^Do)H7VE=a5ob{DP3#Of{vJ6BPJMFl<!fqEJ&* z#rNy_3Uz%wq^>K?*M`&;n`f*~5@Q!6m~eM8dKLb%(6cUf!yg~GFXjf${G^Mxd(dT7 zpmn(ozz{dUJNwpWa9;N-Fk>!g>v{O(iuFaJ|CO@zEbjFGt3RBJ^xL{X2|;eI_*@MI z&%jp><(2Dib#6n>;h;%lofqmR`W*O`?&Zw(_1o5yjjd>fm-!c*yl01IL=yI!8S1K| z_w>-DIra7!;CaX@5x+llKm><8>(F}ePI<BeQv&-B@IaeHDTL4!MP~WK8Ye3?PVm}M z+q0q3N^QGQnr@&r)j(|wtjAJ0z5U<Sx(Vs-`O#X#TGojn_O`)V$J}gZ4B9zCsdc<k zYf(re{hL43zMU(u7i62)hq=i4DEqzs$#Y(ZHXz#GzkL!1ivpqG*dMKLu$8a&U;fcn zj#KJOQR*8X3QKXvpoYDQ4cAa`*N|34AiSgh$NDnds@MAmTQwcp#khZJWnbpZ@vvEd zafJmnm5np6dXs(m#k!Hot%xn5uV95U%^3lE>4yfsf?ckGuTkB}17D-NzXF9t>2B>l zH1MVEb`5-e-Ic7-G!KJL14b4%=OUypyAFa5qpxqfN>t%5t>W43hhsdn^)L6wDC2mb zFBH5*u@V~!#t&)z6A0h*qpct8<DS03G5!ABwJ3d@ru6a8`)^fhS%cCp^@aQUi@xv- zy4d&K3@SkUPkywva9?-z4fZuBF1^CcHcO{@`xRyi2ko&=ABUTr1r!=!czo*@Ach&= z;S*p3mgslVQ6I<`*tzk$e6b5|=Cpm6FW@_~maMOb>oF+xFyn(tX-`?9b90~Le(V;F z{h`pm$*QN(*(C4C7bZ^iwb!=Qwyt|o{;BYyyi8!mCY#R6J6*}8XXPD&N!(Ezzxe&) z_{G|i_{C}PE+73sUvO@}wHCfSv8NzSK5W0XnnfG*|4iZ_WDd}E_-3=OFjms-mlb|_ z(IG~61W!F49sH1a%D}|~hg0B3_zuWFwQ@J}n~`5Pb+FCXl~y@GsZa>DN_R>Q9`5h) zlea?;DE%II#)U3O8MHM;FM7`_Kb3z_jK`cywy2=>O{J5U)<d8#HO;1p;jnuUwlD-g zmf)cn_|tfkH}ovrsqmCho_nm}e4i+#V;>b;+=+_p)^;OSGsXTKG&c>t|JK;rf8*gK z0o+T^f8F6=q@5neI^yU(;!)0{^NuchC1;Y&V6!4_tLI~FM6(xsDpp7+Zo;|A28jdu zl6eN<SG3w@?q;}3312)AuDTh{DdDl&sAkm4SRGog?q-}$iHlK3HiPj@5@DB83tA}f zG-9X`w;ZQ?pTv0zxjDdmXS##;maL0{9lw3^#)?QG90%VxjpNbd1#O%f7qGpd;2ZtN z#e2aG_->Sm`VEf~&0F%EYOCFlx2>cv_-dcEmVR$5{}m*^q2LtwQ-uT4;KUGM$d~=C zYgycLdff9j^xdN#FaB=x7%+pX#U+}&X5<v	a71VbZ_yo{(2EJMEvhyeQuzL_*(a zauZg~WSl)WIIb|sG#mJK9fx^8*#w#r-;7NO?-&wp`(C(!8UB>;<$X#y;I<ByLlE}` z6Z@cTe*X!KK591nCGl}(zY6s~=SP@;hoNv!9iU6A@;;7uX8beWFiblMCV?#RO<6by zRXP;1akNpw1HN$GuKQbu)~@8BTL0qzn2Ts$%V{xko_N8TSWGjBkq(^FX=t=Pj5@%m z(;RB=A<VGZfn~1?&W|oH*2FdcR1@1AZjbF|djzb}9o84_7eIr>_5H*j&1stR8CA1# zwnC{tKlLHIxpV64(1E%!86}15DnG>n^$0AZ>ccuEe1X*@9FtuJQ#w|yc&Beg+152t zHe<!MHEhPV(qrf;lF-q5q3@bH#$xw<A9L{v#vAOBfpH>?hw%f(Go3~a3Ax$#SJ~P7 z)xLMvvgt8iIryjETU!goIPS(k%RI${BZX6->D{3{sLX>4?qe94Pc(BN*-tDE1ylQV zkoDUo9W*pxk+PA&1pR(nmih|I;%r;jm}D+#E44%*i7Z-z_TD4V{ImInjO>riwjZ=& z#DBD+`2VmK@AiGK6=(xlOyfn2i02F7qvwF}o-(kzP2<Ve(h1KoS%l^9)vzkRx|SJB z_x4!tNlkJS&FGrCbG0XAQK+`x(lT@%dkVtq*o1Mq?pv5wazE`Ogfj*)ZrJ*nSv<IA zMH$})`AWqhjQ*igDwRebtJ7*0zi?M-CwRNS#bK*IAsm-Hl5m`Xq^DT<hBtuAt`d&B z8Lm>o9~#7Q;c#Fp?k2V}122VwhCbwXh1<Ybs(i`f5@ql7Y@|KLEHY`GgX?_^+ZM?J zZUco0$t&h!wHsXb3-?EQ?-C=hwlJb&k|j?OW)so`eP6C+#~Xc@X+9y`zz&ADxIdt| z1egRTt$EOoy*~v$lY^B#OZ|g0YrUV=2+ghN-!qVF{m)}lH!wCL#zy>qIW`Oa*Ri>) zOxFfwQq1OqG&0I;CcOFo-MGx@9Xc+1|9=`6YwvPpTwdv3c5_@d-W-<}j0@f4;KgM3 zLFlobc1Jpj@ce2%=NNAz`BtI$C1hQ;rIC(8*Mqq)xU1}=8ck(!j%u8T*V;`1YjLEb z+I69<sLX^LWs!~x#TC$A9Yyj+aAd*d15eozuw@+Tv}LfcHOyRp-{a1$S&3U=i)o+J zSyB{R9Yv?NnLTE+xs)kJ{s<+15oFp_f}Tn+f9<~uG11?Z3{L0qPG()ASAD*q7J97f z;vtEQXg%I(Th~qgPi!%*@OuX9WhDD$jfd`oJof77jI2}r!H?w*e{N2xn44EzroJ|p z&5+{-*sJN-Z~yH4@oVbY7tS;0k<J^imlDBcw;77cVYvHr0zC8K1eV>-us4FL(5$=z zowg0t_Os_9zjS@%?+-o;naH2LMdEEJb)dxSc{;MVu=vKmH;@j&Ay_EiWj}fz(gH3S zyZD(7J2>tix?V-@N8~U3sX5T|wbYzv4}$+KF^%=FGP-y0{1wl0uQ0mz2j28e&o2C? zmX?S`Wg~K@;!ZGG-C?d3!1_*ygjzQqXg6@Lp!7w6ZFb<H*RSGxd9RGW3*}CKM9!CV zKW}jWK9&~tKJV{vhd!qD%4D&&IUtkB$N9YcPA$o<m*ID)H<sB}c0p^X*EF-@*|J>H zZ<=ay<hq{KQi!UYLOe>yT}sHDaEOW0Bq|}>l@P{GA)kWgL^<V8P_CsW#}lsoN{DJT zg)mA;A@*-poU>XfIo{*|FKtY&OYO@Qx34w@PIFXF5^{0kJF6iH4KU^?M}dp1XG+<h z$qAmYo&GUSlX%WO?WVrjQAOWuTq`V5%)ago25;{t>4qS3=SjbCv@c)5q27(4n5HuD zP00+NNg(OOH_`71r!xsr62PO-y4x=Biu8$xl;{2CGwvkyS)wyb_~QTPr2%(Xn{h7; zJlL_Izg@xLRrs+;5))w+XC!3hkhWkiStmX0VBm$u0v#_8OS{2#+`1xtGJ*;af#!Y6 z+IpXGzrHn`b}Fn^0;V`hyA~Q;EnXgckcv~pL(4x-Cj`=a+ind8*N04Eic*ddoNT)7 zKzXjf7ws+HLuE!~@9Bc<z7Qj|(_ZKzjF67|IbjU|P-rglvKtCM2aW~KSMZ0lrF4sU zKwc>@X7K3mC0fF9|7||r%~)*LL&k*05Ka~@oXF_BVZz_1tgOfm^gBtIbyLvmnV^^^ zT=&ggyIo}6^^hfG`mnF(@3mXcV`kht+LxL;b^$X!q0!{D-~Uc6(J1x-ia6*W-$1nu zYus!Ong8ssZTH;!C#8NpLS~yA{UdU}_7BoxcHDQx_f49a5v-@EhFD*0ZtTq(mJHOO z(6<T|)aKXaUiT~Y;uJARmwn-%@iNxzVMa$dm-a)@CRV{>Ju%$ZP+M0Eof`4XeUZ?# ziS(9;N!W{*DRhRXWX=`lHnJIReG4{T8acrV-F{ZUy)dj($69N>1$WdA$YnT@iB|Zt z5F-{=i~Gfh1@mLy?XVY@uPj=5ks;heX^yTusQkL#0srk-&#Uo3>V<#sG7YUD4YLzt zPxn%92M>|vL5gzb4&S37T}6y?zy{5SYS;RPLihvMGq77=z#U=Sqb|g5VUjl6q2*W{ z=8jU1VDPD4%so5rWOmamg?ARrBWr(FLwJ^w9_e-~d7kD48C;$&e;9_?0SH*4XC~9# zFO0sKvE1+xTnSFx9}&WLKEe<~zw9QgbU%V+N4o41vlKXcN%nn-;FXG@Fb9DVXk~;o z)hZxS8qBZ8d?yaWB$0HQ=zhylyj_lwjw8rDAGs&FC_bDYHxwX&_`i|AB%FWzkLG8X zton$BOv;_IYGy_Qn|Y~DZCO<Zd;>`lGvS6e$-QqLlLidsuP`ve=K4r83$L6i?27Qz zl%;|{r$iU=1Z{RL@gRGcMiJ>Mu$rTs!{!%P=2kGm!OF-Dx{Aadxf`l0pV)A*GHO$a z_@OHrJk1Mb>9yo3riYKRFy5W>A{H^JKLsR7wKZkoQ!jhlH9)kcuER&NtsL++S5x@| zb;RZ11`7O1I^a)o+lEWx8P}ys{sFVw@qqb3#|F}$t107gXXd+dFS>uM+?7Mh&8lam zxPJXYwbCamYFD`PYSBBhYD5c4N>IL6pjX&g!@y_%7JAcU&3<Jg!Nfv;3H%|Y519HV zkFjPEb{62lN_q>{qG8t?-A%m}749o|@g}_VBy6v-@b^aYt{LD;eg*ksmQTrP<D}<% z4YjzLVO6yvzxAk{!`MU--+N+*mzx*|e*+jTOTbI%Rr#E>AG$l2eKBZzQaNL};@vmz zvY)Yhrj$qVk0bu?@FyOQKkrR*{?orsVwooV<rtq|>EHUP3#R7n=~4-My43kQkFjI9 zG?eawpKRE6jLeVp!MiPUe*MS|fUk!=%)ytQ0azUCt0Hmz-RsYLMs6_YA&o1kvf$*c zW)0@dDCA5)Pt5Nd1N&+TR?T5Ed~lCKh^;SqAf#j<WO|?QgOEvmX#*iKdD<#Y8r#Q7 z#XYQ2a)LEn&Zs^eTD1Z*htJtJ&s7-;E(sm?Z^yV;F}|ztW_X6B_Q4OE#P`{tJum@% zt?}yeMm}`@L6T6jutGt7b5W#uAH?YDFuH5rW*Vss8e`hmAH|4~uXR>x1zls4p7yZP zKYOV>70T0k=M0p$B7{Cwt!d4MMiG^0t-W2eRK{0U)9!Cs>zf5HQUTAb4a_Xeij;jA zUlIPwRW>)qGM@ShIubT7*`vdXt9li-wa6~*-YYy~&D(~*l;b2UfwPBsDMFs0tj4&s z+2`3qu-Xp#?a4nfx>`Ih{mAqBAHE;{{E#%1XYkpNZwsK(S<5R4f^w0ER(2@!r2o?B z1ZeIG13nbj;YI}ce^9GBp^p*DypC^PMRs~w70F=+`;XQdjmc`f30Kh0|HQEb=;?&4 zkz}Fe=9)2~^&PM%rm~u0315OgL&g;4OrKAdOjuK7g&o)hYbHJ0$2}OiVJLp#-5<Kn zR3<MZsQF)D)>^j#YKwRgbAvm)Zys(&lpAYJ4|BAlfpexi3F{QpCYIT26Du!ad`9{Z zGD~nKm0_h1;Gl0|U65=S{Vr7U;LKVk85Zvjqel$tU7=v0UkmF2%)~3c@JN&0^{@Ox z@zoF8Ip$_NU+boJa=FiSQA>^M|E<hf!XG9xyK@kOyxJ4S9X5LydsNhyEMT1prvE+$ z+l$hDAvw6R-&|=El{>QStWD)xnWuwi@Wt>USvY@1P9l8S#K{Q?E{VZf9cxznD`S>< zdX_D^b0L#f;bYAi73d}4NLUJ*_g#v+yVW&Sa*klCsDho)DmigVamAsExq0WVa;#cP z>?g_NC%(ChG&jqfgB%-+RKN^Ndboj5^{+W8t6Mh>9y);!3|9JW?T#I*mQKM>3WW{B zN;bGSX?l-={4z3>3ZeO&G^t00Rba5H4j;l?90sUUdu9xTl(^Nv2%~$rBLdA++&)?o z3inm(`e8ySSQu)BOq7??oLl|llspzO$?d2m=%g--sNR?4UL5#W(a;v(=*|aSGuT6) zb&;()*x?GSeLbU+-m70%WAp)$Ky`o7U8#)OFG0^di#dG)58)faH4E^NL?;>&K$Y`! z10#96*_~|7ncA4#nE7_xu8hgOP#lw+SQ3+4h$mj$?S{nGxk9{d0uB;1t?Us-dJA*p zYv|L3V5P!(itx~K+z~9TXLMVzj(>F=e#{XzJWpGn;2NGcJU7ubJhu=}HJ%Fy;lxCj zT`Y8M6{}tEiWgk*x$LgQqPY26-GxQ)_lCR9ISnklkU!czILpHJl&HooWlx|sMVw%C zUBCy!-vaJHoz&I`Wkxp(Yk5g6ZY-p!yugz4RC!U5O4HvU;ezm8a^PP4hyF1KKcr!6 zNZ@Az-%`kn^3aeUt`*_tT1kMPu<zDN!N6J}oIH7<6*uE76^_dCikaB=pMZz+sM<7e z&cBdf@i1eTD|7|z4#Z7or*(j?cmQ;Txl(PJ?A2Rt^RkvyU-AOY&APsl+5N2#swJt{ z&@d{Gtu8D|$_WLN`swd$q4LTn8xE}>nYSGK%;?^k%DxkaeW$$A*g&~T`y%P4%a)M& z5TG>Vv8KXJriZFG6+d)gQ@g(ev*=%5B}H~9Sa6bQ97=-_uB3UBiT7=I2wxH|AzFbv z0jZo)1N_qVZ5uV(D>oP+*IwbiSUdJ6<d4V}k=?gqU{>>>Eh-x(z)vssHLPtGYg=#< z4FPXKz|a_>%x{&yxZ~4E^T=ASS*TfHtsP&RhWq-(>shn8!V1i6adrD8#Gl0jTBnj| z9s0(dhDxS(`OV)XBh%z1R_4|gR^DFARl+|FaCCfa_2cZ+>Ma%XC=YZRDwiVOj(9aR z*x85d54CIrY#S3d4VG)HPh4QGoO!&Y(sKOZFAj;t@FIC|BX2smUTsRO`05vh6{cTS z!x#6#3RUYt)H2MgN)LKlVbdDEa&rzo$W}cqV@H?f%aEX#C)Ivg$(lrrK1tp=lydO# zLRjD$S@8|pO)#CuQ;B|tZcU@L{z26J^fAWb@H&2hGorV&GPQQwFN_U`9tVGQ%R7~= z<EQzUiPL<r`ky|<w@pl_WTEN49Dmb&`|x+1?;>vJruaCa#B*T%H!kjQ32f2nt;y?w zrG(T?oOA{_iIe`&cQ4T`B2lX3Jrw5@DKuqej#kPJK__iWVUA8R$)R9nC>mq7O-!sj zSP_{nEB4eh$th{+Kbced^fUXJeB^jE#F$Ge4sFR>K=@Jz{wsGl30P4NjQNxdt<g$O zdKf498t9Y%1GHhYpTqq8#BaOK8cRHXgDw6Z|4SnOi$m*Gru2&92dnLAjfwCM!Dh77 zJz;;lWsCTimF$$O%WnA9O8FdcXj6Bce+uf(8K`^0kJP<rpl+K|H?=f1?_wEa+3RJK zIn2jhe(o21dbE!$pzDO=GHYG&=BorX%73vNR!}NDel7SQ1F^zViWL$cY^jVVyHfVM z9*lIXO3rntcGrN09A^E>9|;{JMk#GYxcw+8O1|44JtXY;fpMofUHUeo8ytV~M@{p9 zaM=L<VsO^U#qKwSvm`WXpu6YEgwN^(%o&));9>nHC&P%d0$-be)2tGfYphi6;8fra z1oSeRkZw$UB&cFI?~s2<bhJ<f=?eB$CVDD&gj&W+fu7TKYUOl5WgF_F7pOXaRiTxt z`}fF(Ok*u+7sY1k^1_gCjeF!RnIt3Kj(3>f(SW+B{&0T%f+iW}lpwV|i+8vTn%|$m zv)Pu+u;r`xA-SJY@)ACsuyC)^S}kt*ao%){7S@fFgi}gdEhpd}OCQ#~6w^nkSjz|> zC&l)8oK{c{oD}M%zii(e%x+CzjuLi536pzCmIcdljm(5D-|z){WKRk~Ro4(zyIsC* zQx<aU?7vc`mHd58@`;Rn_RHs@F}D)Y{_k4)sb5LGiadfo*dK=TUp}9o+PwY0SRJ*$ z!VDafYpADD0QU%^FafeogAKltO$_FoR(khM8k0X^&mK&NTU$t%@Pl-(Dd|XTOZ`GN zp+`GCpsb$ii_DE$V5}Ush3>VSy~^l}758mP-53f6`>B=cn>9WCW_bKtQyAeJlw+*d zN^AO}^H#&|B|OJSCwupRnuiZ?g{mir4GJXZ`n3aP(5*>>O)H6SN+^TiHlTgi2VmNL zOoN_SsGLQ9y5$vR<XB6D*HZrSf~wj*vTDl7T9suTcx`+uC(Z0lsErlkmE8$m5s|CS zd&6HZ-#Vp99+tw+EO1y#zV<(x!%JUdx3x**x9pMiQ_LPqxxOm8Jwdluo&l;X%W8A( zl}Am19{{UX^7J;t3k<x{yuR;>hG~|CDOqTjzV|n1SL{(bt6VFKuA-C79IJW9tFqI& zSDrA1#af&pBsCxu>tTk~lgCtf^7djy9BSXl>5uTzm))mpqtXsThP{2*{#s_zAurA6 z%ABy&+?Ju0_V)b@^J6(?<6i$d!2EXCi++?)vA4@@-P<)o*en0aux1f?e*bGX^Xu%o zYpdZ64ffiHP2;5!goJ<Z?W%x3#vBGd(z~1Fv&N%qn&k85s5xilV;R@h81X)V)uWoC zf)^6Y+HiRJ+Hg2y*1<#dgelu<b-*!2=+9gqYG(Gx(~F;jrGZe8@4sV?r|y`2);a0{ zBic?qn2dK8-X?1^bSop^-+H?>vdX+;j~ut^RcMM5JT~A90rr87oDRJ)2AB}5B$M)Q zm#1Zt9p&xv^h}If=2>~ps<ZMeycc9*F7)KrA{0Kl3gKVbAZYzMLG3pRJo<*#E39lv zi+ea}Ru5xVS5eCVaX!^dGi7t2?KL&pGQHmg%Ub%(q=r3mOeXZ6Th!23Q&$boQ}3JV zyjsUe`}(=o_#6)YsSh{M$RKrGvL`Gh4C5O!^6E3$jP3Xvofnf+13Z%Ej}zX$951|e zIYxN%GSfJSM_Yk$_h1dL#2mL_e(%KdEgo9a7cl2xw-Pu0RGpO%431i*GHT4PdFfYO z*u%`!XD`avGgQ|{*{5L4AMRR?`9CUiyL?ZkHV+nu%lFOOBX<BAPbTr5zr&SOhg_dQ zYX=^gHO@RQH(`l)RYO)o^VK9)-M)#ZSqvHDDK_mVUM`LG@+m=o+Tus#1XkO*@!_}O zzfRj(`O8=E{v14?kMQi3uUa3IJ4!Cq?v<fkWJ&Nfqo>R7e_#GO1M?E`y5z@X3Exja zo3>JTOm5HkjU1QqnA~bcYchV1mN4eWfFENO{7ahir~Dk|E%A!pfJdo>qIzf{H-Mi* zaA=_I>Pb;4X)~RN6?{mzklH5I=PbxsbVB}AFg@0Ebt1b*t_2^`EvVX8b6e4}rmK@# zRr@C8`-FT}coBP4ll+lz7IKAWjy1_%{Q9#2e0>4u<y_dTFtFwqfivEd^(kksF1mBO zJYmU8#oOhiCEMlO^UuoGB`?aEOCFUC%WxBW3GK<MPTj^m%J|rq@KyW~Rp-Qwsw!UE zAzxbip6tck`IYri`BS`~!uzufaFaIvPX0XOQTd|+P3Oj+$9}BotlSiPcBW{C-7^;U zxvyvZ9sBO1a@;cby1p~1wh(kMyPK;r<Y}r7wa?+SyAQPw<8-^Db0c@BW<*pSY=4%I z!ry(ozKT6!9IZLbUEfq3jT799U9mX756(jzQ<zN5!JLt#OBua5dO^&hXyCJdbkD^6 z`8C==^J_fj*CILR=KQKy^9#gY`z6gS_*5R)hp5cxoSkx9rbm7wLyw)?EqLUU<|_GD zwEx4t(qAyf9{JDUqJNOVbgo^`bh>~uNSAYPACE<TPv(cU;Zi<ADHqnBmc2vD2=|sp z{uHHrj#4(Fl>1Q1fkvXG2g|9b&s>lK4LX&yDpXRo&z{ieDqajLN0W14Z6lRQRY}W3 zC99S2Rg0xwHa#byajwLvRq(UgB+r>bF~BqIVyTHuQQ}mHy905friSB2af_v$?5#?i z4slk*9UF){#w`x)DN0b{42Ux!ZrSv3zGYgn+ZC_G35XkpxYdY@#f{jr@@g&7R|Jbq zZK+LiC*fR2J~KgUDP#5&`uG)kFkage86hEw5#GYQr*>n{hW&76?5V}@&f_9mIaTmM zk>ILzzB89Q7q;v@95fjxz1x*D$2Pa~Q~a{RtDuUT`E^~K<(~u6(04vybnSR*KV)>D z;aT$$<ezxde`Rzt@ca?aV#L!k;&0!5{}taIc&2~M=zfMr4a#Un_l{b1GSNtKm*wuq z<owKtc3u_H&PCkY{dgDrG6I6f<RzIeIA4LT{L}C;3_o>vM&S{x%%r8hCl{66YMB#V z^=t5AXb1ka{7b~mz?*iKnRwIAG7E1J@1I!z4*zWWD&0}GN_&(+t{mp@wTKAvXh$BD z^q@Yoc5+frKl+G)U2aC376s1REm(&$;PrR}-dT8$!dt|>p~aFq0(=QrK_1RRekaY8 z*=g6|2Su>L26g)`d;58Irg_e%b?n&Z{Fb|2^LgA(gQqGvX$rNGY`DDu%t38sOqwGq zl#nPda6abOqOHTNmb=e%aPgD}UXm~pJZyE7pQN^x5$!5`N3^R|*YF+gtt1uQc|ecB zetW_$ql2`q_oIE$Rr({G^g=&c!)q;HqlDp14BBM1J}y__skBDd{6$`E{foQ_Et`T6 zH+m|8VF8g^U?pE@w*McPbtSb)Vgb%8QPOO{lK`I7NGpdl8sS@i2v#xp0hpf#Cr5u& zR~3dgqFtjJgjaXu+R8ALfSLP*;E#BDWf)TG13l=X=qeg>qN;`gL*y`=l-mzqH)#so z*3gaa*NA6MuxW*3=u@RfEwIb9Aq)0P3LM&8>W`{YzVo4t=Sl~ARwpd+53YU7-OnyK z(_xE$S{^MB7Cr-S_FB*s)XT)1zZECMTl%RK)=K$j2d2G#3M2kZE_MR+(5*E72fQl- z!5rMc0sd$7N2nYcBY3Ymz)8RE+tW3}s@rL++h>0Rciy+lGZ-4*2q9)jFAa_;jpASr zQLWcjQmx;OX1IT%tJdb}kA!>VuYE&%Wc|$^i4?~9BQb~m8$6`hfzsC^m6eqzlNR+@ z%pVSO20gW&YNNRn-ENH>9FcT*F2$@;Mn!`aNFzgVU{00LoZ_o;9r5w`z!)ilM)LQ= z+eG`X3;50>uv74Dfv)Nw@~jL7RIw1TA9U|O<gARy!y24mqH36`YJ^1A<Ty3bn*ROR zVKvh8{jBs1c%5I@JtkW-V=qSo>I?<y$k(C)H7iM>-vHCAX0n#eH<;I0X;XjiH{lkf z-+gre{=xaLQm{pm3UD%XTNXW*d>1rXV;NSutDk00cs9ogzX6>Ee{|rw%?>ob8l%*7 zG88U1A@|Bk%iZxJdI9a{l`?UINI<EEuj^Q8TK~y!((k6UgDEc7Q4d{RNi&wlOQ{)l z3g9_&NUcU;<z?FYLO7$)xhDqmdP~Y~So^7xH>a@anwF^C-Ev}FT<xwhcFL||_~!#9 zu}wDMiA^~t+sr1&T+iSgK2K9whWdD%hYKq-@WD;gCM%dF(w?<tgo3~5+J}=uoHr8n zgsI~Q%<~vfelzggrh;#2<y;pEzS#&V!_7TWi?h4U40yb^H&n@6RqTMTTRQubl|WiQ zbiTLoj$4=8muC;|r?juUbPU$)wru#r>0J086b-H|uweK00@5(P;Azp^+r6!)y!qt7 zIhymnsnBJ}v17v@-dL;w&3p%RdXE{WB~F=BpQFKEc^rQ``f=_x*5yo@qk&KIV+d*M z-+?^gQ!eMF)AEzGx0qv&5UooXgOgf%D35+8JLe^&*M|<_@5lW!MbPsp*NP)w&w@P3 zC5)`nNU!vT&uOaHelu`RvtoW`_5B+2Gf6q8(ODu<InPk}%uGn8%n8^ZicrsMJyd%X ze1P7TnI!3AZ}&ctw{79Q;;oM#?~3$Pb?JA)!-l}`X3W~E?Q&M;i*h3Rel*S`0=`r5 zJr>_-cqiaJ0dH&Oraa;STrAs;SpiJ5eY^bdo_+H+panwz6x?%Tr7wE7g4%_DG|!9j z2E=dLlLQ-wiQZC-H1T6NZ%LRtA@t*nA0F$q-{Y4I<sBr!?ji5hB&(77$xxES;+HC! z$FJ=n_)zRc+7z$m-e%GZ*ou>tEn_5f4b9S4WuC=L>R8y!-m1rX`YCKIz|Y!ND*X%C zj(BtHJ+S%k;a19HR`euo8TdAD#TjbLvf<DOxV6#ZEbd?wehcNg2R6&rb!=6B)5&gY zW^yg)tc=@ok{~Ty13mK099EhHtg*5`4Rj`PKvdz>l8YeCT-Tv867MIRJDfteS$+cP z=yaUn&GRV@mHa}xz>p-8Qtnq`v-wd&VplOMlvtdOa7GLTon4f&8hYU0Ze7<gSE-BI z2Y#q@X=^I+5EkP;(ExvAaIaC$8(8zpadsm<%tv?#2k7w#c$VP_pF{PqtJ2Zqaf-G1 z80kwr^!FRcdN3O@ABF^GyF4;8_e+W)@AWpse$qpKn|jpdZ~ZeXxvCWr>`V>x`u@4) ziz`M@F4x%Ic%H#?ku^;Etc6bIF~7M1Y&Z)xFq?e|hgDLS9P@I*kr1%&0{J;P#|m32 zuzf(Z70r1%nbGN7Ytn&&xTBkyT<BxcmV2L*9oPfyLfn3MDl>$4s^`c$kzjQE2_D5& z(nX~-D&rA3eLYbzRPrOBH*mT`-uZaD1y=F(LVI_C<7laI&b3nL2kN5RbNRSC^hfkn zkI142{&QWNr0eF)HuyFNr$idlmr$FntcTAr@`g;pG7o|?lLf9IgV}qvFFg8TUSNOl z_kHD;S<F(N^Z~$S)e2vNyGtuC+&+_)&c$Ia#8XPUqce0^=K|JwZP)MGqxqyd%}#UM zrHxG8Hv8=0jMt+kZN4$>^@DlIRSAbf=7iroEw6Gt4Sf_&`WgI&GHIIw<6eIb6jkDW ztnFb&=os?oGY`Y0tp?q-1Mf22aN8UhhEyJb?Ba0a_;HL$ySrKbR@h~~+lTYAff;|7 zw;5c7y>i=u2vNHW^CXTN&-wUd%!y$<>@WmgGfJ-5%>n5(9-MMkH(WXO6XY~r1zmgP z^eLL1<PUl}d{48nclcOKrf;1Tp}8Yl16#B2wR4&qbzACA$!i7eQ7dNC$9)yYwP`6n zoig7j|B429o03}j0~U?1tlV5v4ZRDx^$K2B4PmgevMaMcxVW$3|6=T2;G!z?Kj7z_ zGdGw4hKtHgJ<OmXco~J#w97c)@iN|0YfEh#rTULuwo$SLv~>VA#VizU5pvhGHqA7^ z*p<w%w14;A8LbvGH_GxPbUAqA0K&ZA-x)O9-T(W(@R{>G=Q+=L&U1f$_uqGurR_3z zLk;*RTx6rH8+u$8h6ZF)h7gR@N`pqCy-Q96)Gcf?){KD$FQ?@9igi3ZjF{~f`^K}s zlt{gY8LtDJhLtuH`{THrEm#Sw)#TM&R#nsP#Rt(I?54WaYC3*5>ayW21!J1N72Y^m zCixG0L_BU7`ze>TMa@Z|JAE@Zj0-*o?Qc%uy7^IK1Hz~XjLRcdZqzi?C5B7gJvtET zco;lRKfa!llZF<Gpe>OEU%Ixl49OYV!dLT33%?^X7Ne9I%h}KuVnm~T+mih7_Y>1t z=FuSeh#8pP1j;)-rzZ{YIJVB3Ry7S$S2th#MtH9B0_{tGJo}ZJ<L7RxuP;h<0ykx< z0LlWL5F&Q_^!vZp=4}%C`;S*j&W6vyRTtOoFFOm{j5y;<a_)sqTAJ${yVo6{@V;*H zQ*F^*zY`;0!u!Tmmu}jJp2;!S30XsfE}T6UT_xo1D_o}I<;K~7O%g|^V5eP$^))p( z0jJPu&;w~dzY1s6bSHdgz&Cz_9qI2uNFpe65c?nq-bt1txCO8a`J@o=m1vAzl&;LB zJ01&2CK0syap^+=4P?f$VH1O64wbnQk8|0l>c29sM&7v3Y``QuSc!zmE$-Wi2%B5v zNZi9IawxiD4IpZ2FFe!q?fc*c=wQ2|`@?Th`u)#9vveacG(9LSi8#ZjFg<82iF=aZ zefKk*jMn=xqwc>76+J7n%zp-+mbG2{S%R;K=0<Q$xwHWu(v8}wyRn1~gOA4&$US1m zSzD5;g{38BTKI>Oqgq&8V#QqA1PGHUPn5hl{qPJrxo__RUwttH#X(Sp!HVn)h{N)_ zVh{b*ja4+7FiFl7W7qGQg55U(^KD86=FFni>eHSzYV_(gYSd~@c_`#hA*rcZN~C$U zn#$?>@Q#F9oQtqzWr$d<e#x$-R&e0|lV!ovzoa=hWpXIieoTG-S82C~;*hrES83Uy zc%;4ftF&RE1d>PKj;XuR{{(d<pu|C;0m%94uW}}Y67l7_U!_Hcl92Cpc1(TqSLwaI zN9qS5_d&K=J@Tt3?Y)DMe(YCia<7QAcYl?3x;G6azyGVW6TN1nef+Dm4|*+FQGs8j zH380i-jV;nr|J&JE?i%9oWXUs!~Wo>>Z^|Y2Z>r|+@q^_Q9aI#mEl&Wdx&Od0&G|7 zKc;S}U9DDCfZmL7Hpb2C=aikj@2XRF^>)19Ge)}2&7LDprXCRcv2*4J-&OMp)~F?z zgGnXu^;Kq2g6bIQ#%sAefa~8!%9v{@4<e-rDI@z*`2Bit!wgD;N>Hn$64a`@R8c^b z*`e-t)#=%EotHfX*M-?bW>Gj>ySqDEe`zk{0;(qKF1_dzl>XgfUF=W?xZr?bo`n}I zWjiD+E(MwLUg%(B5}>XQ*p6WtKLl4m)=yBj^c;G0i<-n$P3|U%Ae;oHIbUI?KP^WL zJtfBvJ$a4RN-}0Wpz}1m&rFx_`|$`fz55PiH1OMlIKf7DB0d7Y>7Z9Za|?87;5kBX z$0x98OE8ob_GSQ4PxmwuHlx9~L6ZjKau{1cUyx|Vt|WwU74;g9Pi2p5i0{LZ{HhL= zM1!&tA@yV-Lh8N8;RV?ligdFf#M480b9+0^_ZX*|rqF7IZedUOD;co*9>$ZXT-qNl zf=}vb$aJrV{97f~*G83Rl~{Y#55Z$9WH~^4t*}UJ*lhv*X6R0chRw;(o=`Jlg-vtb zfYeazK2REn_X&I+`<fN+$67&o5I3rW9pqh?+Y67koUofIzw6!J$+O;$2Rl7J9`}ER zTsdDIlNr^V59zGP=6-p5UAx+N4!+SuPE7M1VG-bsGsr2JAi*n$9pH6b(#8am#o9jB z<7b7pXRz}Z{9k=<Rh&#>ZZ@0EgHgtNS^K~J-_N}45%zob2UfyXv-RvLwt+p%HnXj) ziq)_`v7PJ{_7}FF)v*Tl7JGxeiTB_6w=({{%n#Y$*$MVfc8Yz)zGwGp<7!_@a>w%# zA3oZ?lyC8P1?7Qm2C5Rp{?gqk&&9Lk(TaQrFwho9zDJQ~y3+<CKPLbiJ14vGJZW@` zJQd;7jxXhb*#AwANp4=FnQ+R-S3I82WtUr*Q;9XQ8oz(YPTY0Kx8r(IySB?I_A_#_ z{cCwFO7S`x<s01#9(`ZVao0Tht~|zl>d|-P(e9MrHOZsg3x4;eJQBH1JN_aMM|iVi zr<{rKOUIw&420tx)$&mHsYmw6>A0KisFZD}`D)a>QWo8RLhAGKAf$ZkxFn|{%ov^T z;gqPJ9iB3oe8^Ndo|gN&4*>Sq<u8`w5i5uMQ7pm$-iSeX+yO5-D0_++S!c+M4<1mb zkNqCLW3Hw|22ZH7$1Z`^5qV;^I+^l!NOn(?6U8aod<bA3Ct}?-BNP$RoYwRlGJYG_ zG2=6=u4>?N_m%R6w`a2Rca?tieVjI1X0p53e0CqZpZQoZTcyp5XQ2F0#kRAT**yML z_Ay4*z-4er+;Hv|&dKF*Q@H8eY;G}E&J}Xcb33^`+<xu=H;+%`=ly^D-@p&&NAoxF z6L=>-jb}x~|MfY0JNCaJ6!GBf{(c%P2aRT;zQu`|ax3;OwNI0R?u)uE%fEB;MP+Jo z+7I$0ZkP9{+9JyGk{J_WH=5=S<h&pyobLrD<2WNvgm&Rq0ir+c2FLeAAQnD>DD5+7 zG+oqU0cbM+ti?VGM2M|g?0*9m@jET{b|6Y@(PD1~qQz5M>~Db>@pF0R^yzMfdL(hX z9<7>u2K&v6@)WIRPm6z+C(RIwNj~})tcwHIwFJ9y8DOgCpou_FNW+BEijekn;E@|Y zJ;!ltFq2owH~ydR=OZs!Fns++Sswm>=9;bL%72YYyvpIb3SZvw8exv4%RBwGRBi9= z?P%(pBq#o#r47?cyXCbvZ`>yXN~+|r7IhAbdkOZ+DU4Hw;`yqJLte|&o-+H-vQRXC zP;}<)mu;^J7*DUGKjcxa$Du1Qa`PWB%g-RJe!wU{jqr;H1i2hx@`ItX>*)D|-DlTM z7mC6sG;<iVzB+^Pz5U|l{oB#IfP@_9&OV7e)Yp`6iw0xz4!xEad~xJ$>C1bw<HXrz z*OeEk<vFC~`FmfUFCA~6U2<KX2rbVZEzg^MdB!<jJL^IHj;dS4FYe!S_Fiq&tHd&J z-*=v!uRU2UZa@1QE%vckb(RB7VV8fN#-S3F_%7m5ae)D1<=NCUU3&(2^ATOdow^jf zf_viCbAZi>EA>P0)3orpu6BlbQD=e`NHO80{~0O7f%*bEd0Q3%enHxINSg=lQXrUs zTx}jf`4TC_Z+b77Ju?ly55p(nA@~~%L$HGK0r1M$9QfbPE_e*9Ci^*13D$sjOPt7; zz=^!U{Tya_4Q6@vS+c!y`{l9wMYPR{9>{<nX|gwc`^Ay_XP-^cT3jIxKAY$+UAGJ8 zWb)bmTC7~`cQ#&&1w`xFSS@y3G@m8fX?VYb?>M|M{RZyr^*i2Td}H<v9p8m_38wt! z5GShNC5o3}qwwmvO=mdCudJ;lx;W;Eb}D}3@9p?Qk66cDljCN}a8L{`0}`_JK)$$f z$&>_}piJxZ0&@YK$wm~YHR{xKKyo?RkgU=<APGHTBfPAWN69EqVrp^1!UEv_{rl(4 ze{%o+HT!oy`zP$Hxe1D>`!M*Gy0GLov*3qYwMox)>aA7U+W4+>9dMfiMeA^aKq3Y! zNAKwE7^{Zt#!G8`FG2ofjjEgYu4-B;fLCO^RPN)IK!`k@u7YQKXWg}uY@E`hl?7>v zoa{wx_#*+P9EMEBGr(I*Fn(5@2NXA|{Tg7YOC(-o%Be2vf%x?AAR7@2iipWE(p|p} zXB%LX2rJGsgpshb=eG)*aF$thn`k}nQxilUc-i(&Ix|S(0WfVgOMgdB!`shwTCBC+ zQ{V^xEc1J!@QoX=`hO147o)^?amEo`ccL+;NC%n~H2%A=Hk}-vTE)L=^@<bgWs-Df z%6xG9$3bp*ZWq~lyR!?ja_P^)lF~+*Bz9luPLqZ7!7|a+uI?QqE73RJ8t+rsq{m1K zVwl?rT~Cdo>QwG8IXFGR#sSmQozHO!%5OC5RX2j(5S^0=I17H_{X!;aoPL%`UMg3s zQ8~PAtEvN?*W};7ersoR?cxiQ2UJThyZQ7!$PQ3lx-$Zlq@g%Zo>qwt!;}#ve?p6s z)9M?Y^><G?*mO7cM3R9^K<@qo4>G+?kKTL=+>loSm2SveW2d-TOnNr?S%P->P1_za z0E#61QeRT3rf{q=F&}-%?SuD9Zd|yu+r&USGt*kxsNOER+nBj@TBSN3FlzEdt|Dp^ zuuTTI6l0kIuBn4XZ!%Zjk!sj$h9viBCsVRJxtdw6<`j2pZpti$MY>!4h#!j&O#0n) zuF}+Wmo!G2DCsUe@2ipEk@^)#E$;wU{UWdY1@??y_Puw(HQ;=`ZdCqEt_E^Bw(Nj$ z6oVgOe$<!%WaetJpIYc9K8H1ZK0!q}S&MFz+g6z1(TgZgQ8_wLvaavjeDv*RX|_zy zAUWb6i5`!v{U7*Mtd>x}h+O%E6p(__?L>V77HQQ@o`t-zI&rnC<3i%+pi_bl!mU;l zMjLk<FVz$r!wOohW^6j9T4O<dPXncHG*fc1K7IqA*DtE$bf(=es{Ka;E68C=cc<r& zsb()$*UhlMv7;LjO=GeSm}+9OlA4W|HY_vkiNXB5*!g~=sV4t|0PH-WPN?dE4PTb= zRM1ef7JYwUF;o85=|2!JLW1-BT9*mZ?56-_v<BkE<&-jcyhLe1q+JS{&~F(WYK2-l zMmKAoDn0|%@I+vu)RM|8=RwyWJBG`)`#+T9#5-jpexmdnnG-9{W)-dmWhYEo;sl~B zxvx7<p9j20>tbw!8G0c)2FqBO$vBts?dc(BonhJ<HFe@<yp;=DPbor@wEsmmiEy&) zPMx%)(L6=39Pf<8^&i^x<IV`gKj>u2R<)<Y4VgW{tHeG}wM0|7o(_I>T~?@k#RkZz zm&0E**@Ex{Cl!@=D>|)WMQ5xZ_LxW987Nta)nPrd67~bl`aSTCjeRkp78a>{`Rd8_ zZ@BtP2b*q_-f&sI6v$tB#SDq7DOZ`N48F@V`f%Hw-WS%NSzqol=jCWVs;gZ;oG^jn z(t@&~)1Vyc{bv0x^19g0cgJRPS+lzQ>Zu^nq7ob}D|aCmq$aSM`y=m5y;A+(TptIA z6tNK>1gM1cS|j@J<=(gD{?ZY6aycrKHYfcP|Lm6--Ch3+KOqgutG{2~xSCHZg;^W) z)2~2h6Ed5Mu@|!E=NNP+S<^-AcXXclrGCITU4e8rOBdQXOR^+#*6cWydyI{|IauxL z3=W3&mAUafl^t2(HP@k^j!Z~oHZG?c{bcb+Iqcjk_2cq-X1}NEj_}IcJqO$MF#`g- z+fAl}?R?DBO;~9rqEi{$bP15IUiwc}1x%&$bJ<yW?;-BcEMiiQA7yT6hs@=~3~vnb zL(j|Is3X<W+F(5p2fO@L@C7P(<2}%}Z81ynbxGcJuCCx6xSE>gdLWtaP4XN^i6vfc z0!v?ztn;Kv@8I5QBfULsMv>J?t?hcqjK|j{7nPy}mSy%>`aA-Jzo#cJ1C7vWU7<tU zLmhA7th_9TpBb+{E7Eykt2$tUT?7ucdS6AJ^ID#aIvw^W)ggFjEQkyGOMjC*a6f7M zfzbyN+^Jq>AKpklqRxhxrhC5A+nLOb+2pdGuobn=yF1mk{yxm7MFa2b@+-U&-?Ph` z?ybtZuWQ|fZ?JCDVV7`eh$Ml(#0vhG_HBOLk^0z->L%zHETpf;+`*X~4Q8AkqNtNh z(lTgXrDp33UvilO9ALjs>Mc#WDLTh1u8Yl}P8_yMS7c=f6R+S0?}G3`C3+HUx^@c- zrL6{!;Mh5i@ya(>h!>LPupXwo)`n>CqD8B2Sij~<udXoFmshyZccie{#{tKx@|EHl z-=4~CfL9`2Hs5X$Dm@%%F!+l0ErP{F=7s#3fL!G+)*f;o=NO^g!k6I*{J3d-82*;= zT3g1{-Gd&efCW^}p64s`(Y&TS<U5?&o2fnb!_T*~&=j^fsy%l!L~8Y&>n&B&*rK{k zUM@X#%<00refq}deU<P=CAf9j+W;v$wDwV7m>P6$`Wkd^G!8e}Hl}aEPsv1`tslIl zv9zc*o;|0EeqNb#g$-$|ubRX+6HKX;6nK*g(|q#_7yJHPcpt30!)p*|X`znN&;aNS zk-a|d#<TJ%f(HRDX|SN<XRU8It#5pj>05#p*JZ#jJ*YO}w80H59XngzvB3lZL0`ja ziQK2^#0X2A1ym)JX25A~bnsG2B$r0oa6EFEz;(J8_(oz=j7T&T+6mUx4uJQfm}-J- zX9QsFGVPOdx;)UCtlKphuAg-ucCjSOC+ApRN;G|wWO??f$zr@EF50*S@)GzO$yf~( z&(zOq6%yG9%v4qQ61}JO0+($~BU;sX>0v3Vjpk8Zry#xGXdUsYv>W?`)$&FC;z`(r zAZB8{bwoXv^M!0epNeB1${W2fP8EkwbB>w!1Ef_xmt#bD)fp#b^n)G;Q+SibN>(0I zmYB6QXC#e~C8|uTyk^NoSwMJdi6ZN@d6Y0Ty!RcewMf(cG(eL_KX`yF58u>0>*Bg) z4E@9_zV4}Zc+i0qCHm8mh2AtdvMu{m!|Z)(q=$4uY|!igJhOX5^i9zl)o8RlV)jNg z3eRGkBpa-Qy%2Zx1ZjOel{cgl^Hl5cJgqk(p}!mroq6oX4Hb2f(=#AfFM4<-r`zr| zO-n{QK>Zza^qjySJ*T%FJ!iC84@YSG7u6p!mK={(C2H+uO_b)qzJqppx$N-H6N%PR zdO<@pW+%64pp<=p+XGwNp+F<|e157fu&e$=GRv}_{w6Wno#{be6+YY;my+Km2=%Ul zb_Oq~oXEr@jBgQw!#zfkWPa@yc%#4M&rZ(!79(*9`zd{c_B>cQ&CZ3@SlIEs*3U#g zRA3)L*eyU#w74^R8mtaD;;;fL{bx#<GN;SasB2FYSY?_Qk}%k**Qri;#bwH*E>;(- z&CW>JONaqolD?zBPU};(snUc4qhKZel()?Fn`ZcH2lp<aDZ*y5mAUjM=<WGkKD-^- z0^OSmR=EqZ92r&*Eb5g5kNhb>+NSoRH1F%G>B!4o-Gu7;h{j0J4dD%9)rjVOYV;A3 z7@XBQV7jh-xNtj0H`d20M_Ej;?m9IZx-$&tyAP*28x>8OmY=Am7Oa#b`_wqhfPTQP zhNvcJ34DlMnkflbX$OPZ-qW6UFycpKgZP%#mJ#Pd6C=0#VPmwvlq#_i^P#IO?6FD$ ztdwqo2O|SoPrHXu^E~{8aoLxH87S?yfb=E@heH3$HAx607r7?6f}Hq@_YIdbD75+c zwud&WoPSsm)@iQp=FNo}UYdcSj<sm{=fL7b2e*Y~;k-qkCp5Vv6X3WEtM{P^IET7{ zyB-U2w+SQP#=0^nywMy(mIhK6r7k`w(+XP%i({lG{`{g#GHH5$x#(5Qf>&g#xLdY} ze}M&v7v<NX`$J;|eI3c1iSwUBU1G6g#2VoXCO#0E851yzVLcr#gAa;;mY9RqNIdWt z+LII+#&czJ+C_OB#+z4oRVNiTKB?*8nbWGEGZ=)=WJ_A8<C9QgV<f^4LaZ(ZSUAz# z>D$=Ra{bb?Sm6Vp<NR=d4O<dmLxxEMZHC?YtvY2FWHsYw=Ro%_sy!j%PwPGb<^Vkb zfv=oU#40Cv$4F@sNlM^k&X^e-=N(@(74?|YISwN*3$>Jjw-k339V$wPeP%vAH5dNv zyjxtio_yW|tpa97jr<`&y895-aRp+ILsZKr5HlTGQT#@6sQ7l><W~NM!MWq5Y<w#M zT181cf>hC%Ese*$3HPzMpWT@0MTyo;K9&~r5I^XhbGq0~ixQ<6nj2-2_D(s*-XUA< zmmnp0L7P{k|H(2Y1vt<kU4dAYn~=Lyuo<xDpI5<4w9Qr{QgowvrA<xqepGbE6Io0$ zpl3YOD9k<MDW@?1jOU|b`{U*n`Hy3zWF-f!wy4p%_Bia?|4;|o(!8@%H!RFwY+6Wu zjVe+pCX7KmH-B+C()j#*>;%@sv01{GQ8pR#LIsR+xzA7AJgshb1k8oGOWlQKp7KJf zL7C@63UkXmkwsKOna5ou6l^FuTJj;?+xZnoOQ0vkn?_sF7U<)xV4$tU09O%#v1N$1 zBC_}ro2(labvn%(k*ynlJlV7mPucN$4<w{A#H2jz>#DuT=1tCHVjOhT&n%8pg;bKl zqZm)IT#9kSsRm~jU-gKklRO6m@7x1?QUA<gCtXF!J`OAA4%J}hP?y;%Mhth+<_O$P zg|^-|<?|muQ*QI7L{>fy>vBuJczo9qx{F_K_b%QrAJ=dGP`!MB-M*B1iL9aXI1e<h z>>2r5?|1^jiVD=3TF5eg6EtOuMLPHut#aLYBEQJ&L#f{RzFl7J8@OA%{tH~cDNbH$ z_u5v>$Mu`_)l1K;r{`(XiKVs`cc@mg)_>r>{ur{az@Dg;j$YGe*4eN}iq<>s6xt*7 zBJG#rqK7i_IHei7ZW#`n_v?qU@`Cf`r+)pA2-{Z?ktOr0Q`5XH8#mXloA(7`Thvi( zbG<Hm-8^a&JRWEN1tZ?2jXYz#J9(WoH_=b9a3a>HsR3v7x(Ri?9U0giEr4jqeufD; zwH$+W94(KPczfxops`s%yRjao_i6zNJ0pCPOJVcCB=NxJ0tX=pUJF|?xMxaP<JDL- zVpwfbtYilDM{cBZDV%2#Y^sK1rZ=?I*9kI?m6Cz~B{W*!WJ>ZIR@mwJ<?XzG%NNd7 zhg8bvcpbjxwf9e-<8uZ!@>?7zW8@*6$aot5(pR{<8qWpfdo}*kb?I$d{Fkrl-~8{j z>pm2reK%b4E!3K8EeO|a;o<k|sb&m5tI!Sr3kLXIOL<5K?Oi|#Q}k{T^XO>}j<jmJ z7S0==_`rGZ|1zZ^*1ZP1rgiGzyU4D}BsIqUZT)W_GQwjzCtweUE$+ym-UbiE=io^d zQdq^giBj!kJx){;<Vlb!j+ZXUZr~m1_z}Ji7!{C|P{>Uf2m0n3jlMb1URG8n;s<x> zdG4~gcipq_zQqreJt{u-c+rYK{K5a!5PEj)Z~cafva<CRWt*R4N1^+@7`C`s<$Wz> zg{qvZQBlJ*&$7a>#N`5<&jyDT=ZevhjZ+F1J}y-(M(ype1rUPS)fT7yU$SWbQZ6m5 z=;R!(#>{Ca7Jk-u7ulFG4Z2CwF3HZz2eUtv(aM7NaP7)JCPSk*`)yo(1#cn6pL<9i z48CviQclU}WtX}<0r2JOK%Y$U;*0sOf(M7#`KNPV#t!`w^w?9pJ0Xv=0~DvSTw;HP zPeH3&#j~x@BaYRm%jdC|KO<Ak%+u;+^HjtbQ&xpukVUM41?bm@@yo|A@k%JfS`A~X zw?#Oe9T8)%_B-e_ZoV+ZYe|FDQucykp)FTubPx2xf>z~GudA@ct8Y7oGC#W#rqfWl zsrWfyCxkD)U#kU2XE(;2%l_n?kj)Y902nvHaYKMSuf-h#oA-d*d!a6ATJm(OX9=un z*ujlF(lfxF?j>(^mh9EIQVjT`Ua+r0>_zoyP{DQQpPmTG0}mu(t{6clikxcl=6Zxh z4CxH%=QYUv03=%vs81(E=I%nQRi^q;JuUD#M|PGYhmrL`PBFmppxxX*#h#YN$l?qG zp7zvR6`hQ2D>T}cV)e&gxr(*vZIwu8fGp_wJ%vBXeA-X4(FWapaOemY*A=DKaj^bR z`*Nh4gRM5shOtCl9ao5-2fb9J*(8jrlPN>5h*B%|E2>vVgE1pvMk;U_qj<M3S{g>M zhw@_Y7L4N#pAo*K$B0aMzQ+QdupTQBy~3Mv1W>TpmhsYP*d=Gm<{kknNk8pQ)ou+e zWXh90vV3(N(bxj6nUymO^TD$M_EB{j4Qw6CA{!$21kbE2XdF4sUKr=acnjMY`T0A6 zT$;7i;2f2!xWPR|itjYkb_4(1wep{8;tt#Th)Uzg3|NyUjE}dA(+ris{6>R9o2^F* zOQTiJcbm^oKR<hPq7;~%zcT*70Qa_gS3DXu`h$A15z(@8j5HOsclNFW{fsO$kz5FH zjv*%6C*o07zfaET0RsxL{N@)5v!wZG?MWH5KJ+_03^vg|L48PVTr-JdG{0${Q+qeo z(n|PBRd?W5@yWT!xLc=jg>jui?H4K&C%7#`^xd2-#XF}sQJd{Lsj`!|RzL!RDJ?xY zQw<VE0P(MSc6t|i{oqeA=vAi`(%UD2jV#GEO0(~-ntT%2>+_V?!G;(~J0u_Vo{M_l zIU>lR9l~5auH0PO4}@;>1y*^plq*T+cgJN&|05loY}ZP(z{dm1um<ji9DC0T>*?FD zQPE?rNn4TVIjPQbP>)5{aN;0el-5tMu|TEIM%hB9^oh!9A3(V`OS>m?qFy?ot$FGn z>Kj@EG#{v6o~>o+dQd<&NmY_=%RV*1xewUAk)*=RS;f0thLc{eZjYD;8Z)>j_Xdgn z3Cw@@!{8c6IzW%@*^AgfNY=(;U6Y1N9Kyi}$!?73Xv5PqM;0sq*&Gk!YS(tuR1fLu zjGws?UO^ylB1Bdi?PI(f;n8HDn&ZgwS~eS?(Gkb%AdM2s8Ng%tN4GIUFPVc5uLU?R zt#3|wyE_~9=XjA;Hhmv-SMB@jwb1IoJaQz~WJsw#4bFX*baf8{=Rym8V&1X(3ylK~ zBtdT=)@vL}{)8+R1AM+&x>+xvu$H$#5!MCFUF`h$+&|WHHqK$q_zC_NZ@*aZ8kO*v zJb#cblRIh1`Z8b`>Xj#VvED(DWp52!UxKO0F!bxbwM}@46Z^`7D@NPufh=t+c8_oC zAywaLYSbw`x~&*xBehOBt)+D9G+YGdJnbn$VGOMDB{owD<FD8X%~Sa{7a!p*OXb>1 z*&V7)JXN0zn<PEL-Swb4W*M3mdtDwLa6JReOzVQ^ycqL|<7dEvfcLrDXsH4?{a^`u zlbw1LD;BHE5DU756*LGda9B{B8#^7qAL^kKlM73(I}v7j^D(NBQodBN=#z61aW_oc z(rE%dZr*IQ?Nc3MRC_cZwb|y4-n`fwv-#6=0=E<Sog(R)PZVQcAzfG7lV6w9%t*wE zFdcZxcipDF{V?WHLIQAYU{ZczukMwbrD%-(+wde;2-|HID|a)eJlDnA?-mGSwyINZ z$@Ym-e+|R6WN=Ntu4j8+ztenI8w^F<NI)aa22nj6Gcv1L@Fo^JF9=$XJ247&*dapy zQks=UfzpyXch|k%wff@y5yQOZVw^7*1RlTmIrR(bt6lHIVi<fXbWdqy!%qZt;&E^U zTOs-MchHDFmf7&`pk>xD?*y-*O=7^RnFXBDxn1ME7Q4`Gu#3{dW$4ue&VImY&ZT~> z@2ju%bqK2ri#}-rmDpl;=N<#C{GHjLn%ZcTtZzc*R{0DND?w*8t~91=YiDC+COCv5 zYnD-R1O@Nu6^|a`(|1ev4>b%=XddsKd#_NLnRf@UBUtRK+^k_q1-aNW#^pC^7OtG+ z&nT+p6Hw$)lK&Ic>IV$5m)lJ?T*wC7y&*2=+j{G8eLLLF1r1uS4~8EGp(xgS2WXHR zLF0nHYpAdha;$weG+;esGv*W0ZwnbR&NstO%|Zoz^b^{ehds#G5Id7A9OJeAzwW?; zyY0xc$op{aXLs-PGG%I)-o11EsfRh70AVdu>IWKU+T)Dwn!7$o4(kdz**a*#nIwJ2 z?k2rR{-IdYTzpq)sCF5)3#YbsCOE2H;%QKY4%2xzT1_~j$BD;=PVX{wgkX<*aIsN| ziC#8|KULp0U~trF?k4L<P?d$Bg47#!?i6(GzHa^(d~XqUdP-jB(w(YsecVT1)u8W& zgoxMMVh6+SYHO@D`ot!e<v0($F1V6a<D8txy14dq*rv9tan?SHc0)!TYn!O&ZeWng zXD5`yEd556|Hv*GyL6XtYPA?lO<cAP8nULQQy7s8!Nfdn^pW}x>SbWZtZpj!4x`n0 zr-&by{bl`5S4Z<D=&^RnrL~R*-8x<6LyZS6EqW~R#MH~L4RM{fF5By>f~WD~Wm{b1 zni3>#ICL7*7v&!Q-r+pz-2f<mK{EVgcnC+j-v(Q9jLwctwf&^i>LY$#<#tHUL{wTN z10;*z>Gn?hN`0|TU$Ohr<!r|U@U<??%@r<P9wS`Zoh@8CQXo_&+T*+RxsEZ0&8A8= z1Qdz!rkY(YBW(F3G|k3N9CC#D<cB+b4zj~w-u4N;<HWg^;TM#&?$^O-`(5Kfv|s_X zz=jqSR7}!ZP_S*%xTbBATjDew4`U_i>Nd9DA2TJm!*ieXf;W1%pxC-&pdEM`P(XBz z1@}c=x*AKhxiO+9tIodU5Ht;Lc2~QiPTuU6Jynw;PLjMvj>AwBwarqQh&Hx#?eKWO z-H|;vEE-xTK>qxUSI9d9zwW}AN|(N7;I@2^v1VP<Hy(HH*WPU|{<yAccjI5cV;Goc zU;bl#V$NFme)}G|5kBA|o5WdZvvzpuWL=H9@tA6<y-x~Y&#rWd%MHy7lB*}_+c|wk zQ?>MCJsbJ8)|UR$P#;fHVCv;sJC#8`iz_CrZW5|%5-pXfXq)9V(k@G>A*&maU1S49 zP}X#nN^b+>Sd{<0?7xF!&fll7RR~A@z%l>sIF601<Q<3$g+f+BFt-p?13o39+~@X{ z6>jjqqtRD3_=TdYy1^g%%s!18uAM97mp->hUsTa)^lXCHql!+0ST2>-Rdkws%MZk4 z#s#-@Mu;&Z2O*5~7)PWB*(l878^o51PP4B9&nl39PTsYItK8Dr&jD)gk}X)B;)+lQ z@S=>bgL<V$|1Wt<=Rn5+SIn1NI#UsT@r7RL)@MjK`$e4l9-R3;jbHNAAPIXgXa+(T zWGK4Z72jkhd~*W>n|q*J!JVT4^L@Ex@I$$*TW6cY1~q|aloOX!->sbAgjEnL3DvQl zQZ^+wwTW{$VP(5`X<Rbb9S;k%A2tc+<?PDt_IB9SZP(Q#c^rqwH8@!UxF78uMJnw} z3Va5o;d&&bbkz3>O7j(^<C&1NejGR@9kV!S91oVBmmo`DeqYz>UY(-oUUC_lxtdaN zM+f`DJ_VxNX6k3P=0@yeEM4;6q(*p#PP`0XrfYGg=p&!Fr~d&%;Z2RwlA(21pCx@( z4f}h5b!(*yf@v0bC(V;$zC^tL6ZOBH6nUx|W#BwA{Vz&*-*D5DGaI?FA#h1(SGVXt z4w5#+>$0VtGeo!POdQUF`?}U%`AG(yc`~GYyr<7u{%4>DFAB;(J7I-7c>*Yk%tUqz z*MR4p500oE6!rAx4{--cup_&cJg>4Ap_1SLPSbC+KglY;#A$9XUR>-0#rR}TwlvO@ zDYYz_iaTE@t1zn$ykb9j4+jqL6xsVrXflfyz%gSRfOBD{@UZs``GEj8eop;XmpQP@ zOS1-0cjY2)3vh!F{4SHU4=CZl4Z~*u!BKapBGbF8T>60CeKeW0NuBH}f3+eYF!2Q= z(`O8Bh;FvH=K{t7EOL&E0}cm>0P-WslHM@34U8lXSX^J~Z+ppZ+m|?33h>*EpRqyj zMjq~Jjv2jSYkvFj47_L?@%q{UUEK#iRmao>SmRb~VOiO`-r_+CvH}WxsS&$uu1*T5 z3EUb$Yw#s@o=aMH;7GgGR559?l+iRmdZT^{VDk)U5+sbCkQbAMvPO?MxqDL9aa}u% ze_rx0jaRu*i7Pj_N?RG9?CS{X+S^T5+eFC=493!Hla^?)bDdU5J~@%b!&1(VDR{FG zIgQp45zVjEkB0X{rd)!biG(}!G$v(K`qDvEHfX~!xs$@BUj~KuX05!hdajoIrdBf1 zyg%!)-ekS?Gg)a^Pt+mwonFg(`dZ$<bZ+ltu=4m2$<}bWU&I%JiW<X>UI6XtKzz(F zUgd7N2o0+k#{yQSJSCvjIDf4f;FdWi1X1ULC6EnT=R>_7L%p)9&}su(eHpF(@4W$v zG`NFkDF>fKsK+qy;+V1+btVoTQ=aXK051LiR*yI3>+3u=T<6Eab^iRn)Om6$*;0sc zSV!sFm~f;$#xP6q^Xr<}P<E-rSEh1lENzS==G~SjD9gIg<B*vAzuUE0*6Q|ueD8fZ zvQQ|T>lA#`3Ud+W`pOH-5SIBqEIf+vs4uceD8lol(~5Et<}NKSDnnSd^uwZ~2#+p} zEEbCKd>QEa2y>T}7ndO{TlQh`QG`dAMXnH5;CaEc6}bp=3(8lNAuKESaK%xCM+-n# zY%mul6y~E2^9tPvbA4M1Hy|wYeOmYt!lS-~B6AU*FP&H9Mwq*FOVI{|WlKLT`Uv6C zr3uC6Vmx0quh@++ciD#GEeOk&eOmkx!lTO)R)E8RI?P+)MwnZ$WyJ=BWd$FtIIh(J zFco{D-3q${)-0^3$-3sT)6-!A;}raUGuV-X+BZo~JT-SvUg8ed%pljED%3FOj&~jf ztj|ptK7;ab>1OHkMC|v_;j=odN{IDWb+7hUg&+E>{Kx%OZskqEermM8pK598ry7s+ zQzLyX5v<M0R=1i=tnCQo){oSGTc78AN4h)tNPQf3xbjw0B(DlPta-ZZ3UJ(>X*ET! zRk;>OCbc}>8f{st@<)yoo~obh+%~Dh*VN32OQv!Q1eLpQkDNH{i<4GhJ^0cNd>LQ0 z9Qpa)fDE=SyEr$D-|wp3jJglpl(HEo4z$PSmT=M_NDJhIQfgkFzI(>*nbvF`XORFH zZY9%IY**JZeTBHtfY=IVM9fs7tJ<!X91#~rR3w0F8Hp!;X2x|5EWa1}x2sRKY*$Nn zY*(MEupqUV@inQH39zk~0P6$^s>zz5M*E^rQZ$~fVljwWE6i2m!q^H6u5n0R&Ejz_ zVhOnZf%QX<{)m;a0f;45#3NTyMFOtL6+#u~5Gwep(<)>R96WMaSlOhTnm4M2z*&o7 z1R}b6qq-9DQfLVq5cebg2Qg_|f5cZKzE+IfmWcS1h(9I9ZL=c2!jV$5Q7u7AnV7uI zR6Ve2qq+untHeQjgf?^BMzzQn>Zpe7lbv?IXZxw9+R|2mZD?hf1<|$sRx_x@g$$#> z+|FEQe>IZjI`NjHq}3>3e605%Ey6)plLPg%7CYxUVZA||i(D%lrfNgYT&J%3m4$PW z!=k0GbeukC8Z#fcERMNOeRVyaq1H%^K&rl`4fn>r)IR_=jjW~;>KD#;8u4sC@~#r2 zYph5$Yvo${^7>JN6(v}-5~BK2OOP6i)F>@ArZ2VB5mz0Jnwhn7WAH3>8<kup_OD4q z$?;mr34OU&ql`q9k)V~)uP=2CQj?I{PfH!pm%7%GT-_ff$7}ZkP|l#;)V`;HDZbQm z@N7t&D$^Xki1YH|9HP~ZtJ6)>PqliQf&JEYf%~Ib-%kh5mwpdtiiCewA9w_Od!k-w z6B0(=yB3mOi8;2sNDpwZ!(6sG>wHjv1ORKIcd!pk{1`U-PODQ&27q%OC5=8nen0F1 z16IdKP-IEU;ZxXot!?DC8Fq7{LF>9Qw9aZ9Em4j!SH|P4pxB5jhCMvOEm!!O_d#(I zrRf@G%%|g9%+av5Hhzx|@W_5}fgQn=sf7Kr^LH+M$(0q1uSr~Kt!Q2mQ&F`dy5jB? zQ5A_REEUbg=8CG~$cnp*BPtS$O%=^W#)_&UL&e=i`ijINT}5-DP*GLLS48G5DC8<D zq2~Y_FYZ{#QS(YtS3kfzp!sKf6r{F3au@n<9%nLVSzqUyt?(dG3Mn<B95@=Hq&2m` z^`QALyaH*E&6$!=5$ae5Zn#jzG<{D!%Hkn8L2yWv)P&sIV0TeGka8dv*sCq5*hv1l z2QvCg(862MTcCwhaj#g@IE>?@o{`dPDWUp7kj1!NgBrM3BHE0csf}!S*Y;R%gJd>5 zR_oJ$0!)xNGY39s*VLLI5d&!s4x`v_*1dmp4GKnO>f4j_@t`gPqRIw+Ioo2hrag== z9>5nJUV>aQ00q5-dJqqZ18m_*g4Ay(OTQ%3$TtTCe22z8q7Hn1_|PDK7YWjiI!h)O zG!KiruIxxi7Foe(UxR*FB9W(xx)8}XQ9sc9As?Kl&lx9gR}*J1I56+PtOIEyhBYTi znaInO{7%l6pSomFZ6f(oR~ye1pNg2^YirC;5+y(-!{fmpjx&(G)Ob~w8krjp&M{}l zy=~awP{)mZl3`(=ka}=Fjo^9f`gq<XA47f*M9k<gPdQBUhAn+q{nWWlHb@*Qw$AI< zhN&U^BneOYU3(H<1FIV1W}>ep9u%G^wDVjjo2<80K2pcOVzLABN}1TmO^8=Qf*Ry^ z@0d)p{DaVqbzF@d)Slgwv%O@InV@vvVd`6|$GAF@do<as7?0EH)tZFAr>$Xk5}wB5 z>EEwCrFTiXiuCc57TtpqeUm9|BFYM<rYu>|CzVAbN6#D$Val~-cf^)Z$J3$h>R5*n zXV^^+1FknZ^tk3Yh%%84yZzhMF%BNr(GCt*2cUWz<Rb>TX~p=}NVKaCC5+Na7^#&o zLMvgoRzj9mLZ(*2Fs+0Pt%MkNnzrWdQzQ0dp#NS*8R=TyAzI#{THYJ9y!yVpQ`H!( zDb_UmPR{fUejnp!Y9M>CtvwvBat}#yeA`2^8(+hsCZvr*)QcpKVaDA*dn~wqs^to5 zx&Gc0iIk5Zn+jSa@<I~8o#-Jt*PD=`F;8<eBzVm;a?jr^=(}~<@t%m}#}wuQRp$IV zZSO4OM%N?*k3G+I$7LtxIS$i1kIwwxiQKrzJW!s3zR4u}!Bp<{4%wRbZ)vx7z!IW( z*nv3~IfKgs-6p%l#RZ#lAp;8Nd#=-D%e}yK-1y<n&GoBW=RyYIa_~o4EIark$sX#- zH};(B#U%9w%e}C^3~O?zH+*nU$pGbxp8KyoKlLBasSNF>z;e2BQ==6=C6eF;7kKLB z!B$Qgf&G9><CM-G!mK#upKmbcYp~4Z+MGg^bl`zmmqSZw{wD+9;*{TZKd0UWt{$g+ z-7^epndpj~vK4k!@=zD*e@=O&m&-_ny_EgEIdySUF#5`XZYykWe$f>(-RdSTmw(O+ z4^%JOf|5Apa8G{W!*!1-tDNEQ&wYczrsU$Z@b`vxe<|-Eg>88_%BOEoyGaAEsgW`A zj{#|DNa6|^&o%MTPflD&@}hpwH|g0MJ%R)BsLE8dJfe|OSP!c=feH~NVNX}??ash; zb5AsItZ;Aq1(vR1gJcG$EbW1QKI{S%FI|+Ifi^UB5fyculUJU2V+ZQNDYqRmHJH$z zO06CD^bnW+$kK4VKkOp@D5s>q@k_r9>gyNVwSL*qMg21KzxK=Mf9sbg8?Wz|>aPFR zFQ$fBijHy0fKK{4FSd6)bP(&to-8FviD>DnzFIwsz8mN+Xc#yHQjO^Yr##|&_Z*k^ z>I0lo)%9u#Y_W8uVQe|YeI-rO**LWIN>{?nelut;*d?1b6Yl8>b-Wj{Nf^;BBrQcY zj&JRZ#+{95lcTB6ZtSGgicZ9FviZ<=<&89FsZY*jawh6W8rP|boM{PuT!v|i9vb9t z|31kV4cVEO59L0|WeGvSU9vpMcS)vsPwyVV`ip{`1vn7}cNc&*tn^nG*5zPkeeYq) zu~1$b%_Zmgi9V(rZc6A&KNw0+J1^7w;~HY8>m||0DT{jaBXr<x>y-$zFknE0fVTR& zm_5G$@@<+V6{mQ+#1;7~%3PNMo`SF!owso|5-*y{qEmkmBqd>=7P>ZEHp#(p$_+ij zh(##3pR$4-Wzn3D?ObWf)SV=%tx-GWUx2Ixr+nF)2HCL-0irH%a-CVZcE%meg6$R9 z9~dW|%U=U4#L%fQ<$GUv@)XM|)!FwxzH8+v*7i6*47k6LwLJexK45#2&ve0eWelvt zap1LaSsw+LyO&Q(@(LIkE<ym$A)$g(zJRvNTfvMc)~Ew2yvyMWsMm?zuqgBhtO%^_ zdKlNAy9iQQ9TLl-zZKfCo+;HKvX8-C@l0Q>&GI8x9>lr29a0s{bS{6r3Dz(Cs4ISX zj$!w|BDXCc_QXTW1F{{~Hr55G&1;(Pm=SL4gT2g-ybhbUHUFEHcthN|WN$&{{fp7M z<1DjOXM5%Goh!4JA7}iq{3lx<54UXKwU+T{*{X}beeE{)ZCBf7(%R<dlt<9ERTpQ! zrnSybt@{z@!n1w#>5v^WxHNp*YAal$&KC1=y~D8!*Ex<eg&SOafX@;F6B^g3bK$?p zJf6!O){M9ny{ENs*SfuByNdSy{!GytP`m8KYrvBWb-dX_{dclA6+L&hGX>XKU0YGE zA<KDrJ&S~9;<K>o*v-)$Y#{aC1Kz?XGWxgIspz;5>d&K>xCsY9nQppxVZVU$=|Hbx z3J)8r;~bz4-rpaw>5g$&2Y>6Fpv_xaJG5q2;x{Ke_a?HTYikE%H^ba}&<_ZmQ_gk2 z?s{T+f7nCImc~l?K7!Z{0kX)m60#Oyj?`X^4^uw(w`t*V|0}CZ&?5i4f7lY5m797p zykR*GrksR5mT~^Q-ZS|m(YhMr?DcZ6)(qV{|7vv-YxAB0d7y38uE+PTI>pXBz7>6A zU%nNbY?gIfF!RZ+YPxmja(>uW)h=@AXZRs#j{%i|tTc0(PGyUqEQcmIrn%i1Rozwr z-(LeRx>I?|&)LN%&Mfy}G!5D*Z|}`TFFQJ2xNhsDxjM3U_XehfdNOd$>m|DNE8Z2k z#7)`dSto~VP4YL()1Js*ep=3YhGpFw*a{eD_d{HkrD-d;cUX<4tL=Osq=J|EyATKM zi*Z)yR728nHmrY*K%4J?=J!a1a}bVl{4!rwUz;x(&4^pGp4nAKU)c5gz0cTJb3^}9 zuv#7L2h4MYbWe`;#G~Fpm9FDquPhCedFT0?d=|`<;vQ|L;EpNx_h6qb_!DN!-!WSr z?Fr8o1#2$k7<_FW(7t)yJeaknwp5DVepq$ZZddbsuohOqZC)o0!hHC;i>yn{nLZCz zrgYG8+~g-+$MHe4%>mn&d1&Xj9pB~Cz6Y4~{#mUb2_(g0FP(T<C*+qVG@Z9YW^?&d z3TK3WjVEZ#G4?xFs|h>)2P1RymDy<9T|K(?ag0+ItGf1RgdeJ7r&+ysc=^4;QL>9M zzX!extxU<pn&Fg_ozdv!yBM9hO!)zJ!Uz)B+||D(-=k4ZpB*-pYSmi5{$3h|Ck~l! z<wih?ZU{F-kJYJbKGbfB83#=Ui+M0~FmDl4pi?(@_L<*vL$*Wi10!a|XrX0kj+Y8v zR8wnT{yn5qfwz5w6F<}ux<X@MQR8r3t~SWrNL}zHa4YY1-8&I|KICJW+VsN}9=bQ< z9MrP@_LpD}X1aqZ?V;`37^FisY9`<eI*YC!ho@@4QeTIS+5183nO?zHCP-AH?P$ee zb&6lutd};Z+>XO)o`<W9L0`mSbXZKHroHu*x^kybO}%ew3fZ_3#IIq>`+oh1De#}> zRE|Jfjw#k&vuzwo$rCrI<7R)P-r_{xK_henMh0WXv#h;poLG%_H$Z0<<7eY+8`J^f zWyaao<2=})CgMr-?7gbhvq4Rmy+Q4Vp1D)&nPpeZXf0Fz5He#NA$1X20g17xUfnCg zJ4Ew+;!1cNr7KHY=-mCVC&Gra0A=RER{gAtQ<i<CI;mb2;d)7(1nvD&pGl1B1Q^S9 z8L<J#8C^m3*ozYi^+G*H_toImz8bs~S}=8;_k(LSxUsJW`YVtbL=8`OGv#OOu@rx= zTbJg%4B!U*Rp;dzgn!4=Gu%YQgdBAL*KX(ephtVIBw`N^-|a=}t4RGDazBgQv$^p7 zpS!W6%;CFD=j*#Kp8rTSiQ3uyERD*Ho|~pp|9?~e!Mz(Wx@^>pp!pVVIA&=&mrk>k zZ?=pa*JK&W*M!Gnj$?y5*Gc0vSmYp!<3a1w@Vmph0Xr*t!ns#X^=wcFp%<Qk9B!y% zZ}*@nOgY#)5ZAO2bbJ)14D4}U-i4Md>SnDvw2I>H?i!S|Q`=2I0Z`_m9XNNi-Q?D8 z>?X^0$lNGh@I}n=g|3AYUjrY0ANH2pyTg0SxjtBi=JM5feRWPN@Z}Q)PUQgXC7})% zXiA}u`??8>f2#*A1+~GHD**ECzl`t!NXF!mHWTO%__4Wmyz_W3wdF~`i#K*D9ckSh z^mug|d^z<>Ewo5TKBPa|YX((<DWgKH{wdebU$FEGatB~niv-IBzy=I}I+-%4=YIDC zGc=57(N@|uzyW$5yfD~gz$qIKtqVGTW6%dda5S%;y@$H83UyhJ03HJu+C67g1p4gl zu5jCbl;=z<7-W_Hx1BR$CR;iapLRX=C9}ya9vZ7lgVmg?^=RAzu1pby_}m9mg*z|T z^LA;<-h%y4FtV+g){faw-o?@sgloI@K5~DSFX&6VfV)*)1JlkUT+#J4dph-^7!k>o z<y|_Zm%D^iUsv`N;61SaKd|M8-;c%^kLqQ%G^t+;r<hdu=ab;)NrEpoo^1c=pqa4) z@;ye!4O8|mhty3k;#Qj`WA{M!60Z$=S^kwYT!&sEZ(M`j<H0@SMcBGh;ZFm7`|9$K z;YDX}!K+WaFN4Z5_=DUeA9zI{t&xM)$69&I(uEeqXyL|8>;h*KRzPR9eq(VvgSl4F z>N&;836Q{;*c#0-a3z<@Uu!Ll?$V`glnEyzSU3YT2ZBooMo~ahQyL&i<^&B0=TR!? z-{Nd%9hZ?10Kd;(mB@`FFU-neI$6#@_UAnzF*~|#5-5}J3WRsLbAOO$59Tt2cAbE= z1ZfLPda!Y4yV>$4&NEHl)dC0&B28=*Yx_G(!1<6cWC!HD44Jc9OAQ%$JKK3<RP&9J zwS^mI2=0V#CG_qs)7zNkTY_LMU&|)Po7ioC41oEO@oLk^#F44KK^5JX6i^@YBHV_| z`3s+JvgAbPL}o@b?_wNm{TDAi<aFl>Q%RQWc{%hiIs@iu_-2Hg({MqoKR_b?^o+pV z{6i<S^}97}4CA|^4^Iw-Vpu`Li_>4n$-st)S<oMx&242$N=ZVqDJ!aZMIAT6m}S9y zjaOW30W-5t@T318W(C~FN=QEpzPwj4rOF@M>_nQi#GiFR(_0$T^$chQEbE6r4ZQfC zgXc{0tqC9CtIh=1gBv>x^cbf6F~pQ%ojSl-Yy7L-Yam-qR0d9I1fGl1x}Ma^_%N`* zo6xe-{p7Xhu%3dq8CKUp;IkZ7+Tq@1THe<K^wm0eYkE!gxtHP%qDyc}Mb`s`TN|m= z?>dJ8&*pLFpI4oi^APr`PKBp^Si6(e5Nx#zT>g~b&LEg!G5Tz2PZmmD8~Br#jVyyz z;dJ=jH9<OJv|~%BL);F{%e$x4PJTjed6+chZM|F#rOn0Hi<b$Px(X@*3uby3)Nl1} z=^Q5Rp1eq=n(XMDq}BQMi}PQjUb_9_U9WNCL)a7ltm=VD%zEv1_rz;07^U^e+Rkx( z?>JvO<y|kcv<c`<>dW@t7anE9ZoioG+S?b56P=d@w5&wkqTXY5Ue+PL0`a>M*CW0h zEvFtRLCZO<<#hKDtbkvodhB|DDX(-z$wT@$=h&-&M}*)}deueYHAvL<hRzPY_Uu5f zdbU4S{pn6mp$QV$*_|<cwfu4aDfHa!7tiglnw;Q1D<@nV`)$49yaPLlsziDIxj$uz zcn!AHV?NWGzKWmIy7ppCCn4R2-*EhH#P2rzc=s-K9t(B+5xz%h4**?F^RM<6;>HHD zEd*;T*uywUn9|W<=n8ZAS<}an;pd#T!|CvBbQg9scKvh0@Y_4~qve*M^RnHl>2E8Y zTv{&O5snYNG+4>DHdx##g*vIGk=7mT{DzKQU|4;<V2_7W-Uxk-v%b+2e&+z*X+r(r zbxDGq>($Ht8VL$N)$gyJt6{?$yil!vM5{H~W?gJXnddYLBV$I=rzv#4u}{^ptVZ6( z?Qx!e6VFeE!ZoLI|6887kmtSY^8Dww>wfj^|9oEAb$#8a#&j09H8J*|d24@__dlQi zx}EXpX9jA~i7Pxx%nQNRi;lb|7`fFV#?Kk*_*aOBMUZ444;nvf>Kj`~sv04gY~=iS z>l4s*jllT?x1|ZI0(ryz5zZR{|3C(&qg3ek!b_}8h~)N^p>(|?)bUzhzffK)I1Z$1 zPP9cD->=a=V?+3T@}_tF`=x#FKYQK#1r2Pd^YS;0doI-R53HMBj%a(|uu#XrUgzcS z5FSJ7Dvs!%bhodUXpdBX9Z5L=qDn%lBSaY6#t`jS^lo)8v=p`cTYI@G+I{0O=X8?Z z_Qy2m<yTp<FVwNF*WTAQJK7em8(NLBZx3DHZ`1<j5F(*N?l4=Xz5#6ySn1JO$s*Pk zv`9dY3`Kt%e$|J}W@?C)-WAF37w0zOndva~7qi7mL8L}CQS3NkrY5YrYh&|gq=fq9 zYOYV;f%FR+3~~D~<4I0YISx7o&hrMe#C|P*d&ke+VHr^x>+qa-4sU*bEeHCN{qk%* zp1t4qjIn-@Au=|kG$$audX3lObluuC%=WM?%l;Vl2%X67;cZoY<N0!5318dJ*%kSp zwo~>W<+p9`+FRx2wh}wE7|y+TqhH-K#-I1y2xfjb#d&33lCc4OE$Yy29qOaEZWU=X zQ8V=Bs%y0+e|$R8`G(0h6)}c>=dBCgfHfm{PB0+nL)UVeEjsW}jf}=ehkOR>ANxwA z8GF~YHo|s8T@rW+KX?39TRkrUD(>$VAx|Ibc(k{@V@5ZZF#tBb#HGY3bzY9OreS6+ z>zRdq10)@a#{3y<4RtK(Y47-|3orym7CRbJW0CsX9*V^wc2Cba`3T1QP5fxw$2M4I z0IHQzU^T-X;_O*I`1hLTF?=2IQ^(XE)cp-u5<(BG#fXHU>*Bz=rFYqs@44`L!gxxF zzQjhtbwVA(dcvbyj{Gw6-wQA4w3l%i1r6jwdTfw(h}NzhkQC0VkA|K>a*zXMnWgFQ zh7%s7t-|womMSHp#xe_aupZhSpTU^woEQ;&<4_N+9L^pIe<8`5^pZZ9h~7vG2|4%I zp9UZA-S%ib^m9YQ^DaXttQn=iU$rtwJ16Pxb7%&&cf8zJiv-jH5TF29j<*E$X+%To z?&VR|WAJnruFbf#zsa!~df4Trz3qoyea_EvbO!u<rkU{NZ+p+l@3!~X8_|j(d7+Lk zdmpK9k>eXiPt!?vc&*-tCE@5Ow^*1`Smxpap^n8NJLEoZ&@c)9=8Rhwdo$cbZA!Mh z;Kiy&TX{!vq<sag;(S~=YQ008#_UrJA7ErwUJ)!#%qTr1b`8vg6~6(s8ijtb9=0v% z*H_kcB|RA~LvZM9-$Uw?Rd&gXz2^VS_ita++k(L9azLY?F=Q;_RvP!g4I|O6ptr&s zw~_;8CfS#DUE40gFSC#}G~Bjv*?fL+dsbQy*rPAhvHHrC^Lq6EX3#_yuX|w~t%o^p ze2q|t7MdNl;$6k$DRLhqSxAyS0we!4TK3Kr;tHS7`ZhT6a?I>dhv&+~^JysOcUKJd zFJ$T`9lXVSFP~W-F^xQF!n5?sc;7~>#e7)pF*@?gQ6g*w{!_l%mcwX|v4Ov~&Y#83 z0el(Sbu?rD^DMmFQP_L^xk-B<x2GTK)`}BL$DA&w_3FE0p?hMHXx7H#`4_M~n*z)- zDhQ9X2qS{d^E~?E#qRAGzYL!pC!FIjm4WHrMEy*4>i};FmOawxT+9I0j8-_wk7Z`z z8!lrrK{%r^??{`Ca54`3a>n8t1jssad&mp)pF@eTIAHTltK%{U1QH-&N4WO!t{A)B z7X=&&J+zd*ztgk8wZOUyaf5?m`AcaI(Q~@97i{m;JNWDxYktAi9J>n0j)i?ut4wu0 zh#xnMwEIj_bdbw325B8j-MmQHN_)pA2YJYonj`^yb<)Nojp_D|Z`Ikb2v1(P_#xox z09y@p{M17hcw>ft+{A-EcL7!kNQRVib0Vx}Or|}H0}uI^xbs>(wvHR73y=rq6t7=Q zoXit1)0g7yM1RtIbkA^~I5~XJxy5Vma&Fyqanp5i>$SL6p7WRYy>%w6#5roVwZtWy z<lBz&)*^66v-@XV4ED-{soqW2yCI+2Fwjk2u$`9y-=KwiyN+CVTQFrmoCkS?;pC}_ z%O>wo3DfGkFA!}=F=h;Eb}}L3=_Ys)2Q}n#58o|ZBsz|Pcb>2FggVxD87}%BbmR(p z_|j-)vma}<&d!g>%{>*H<q7YKXJnlz(n9N$D7{xbx`yMZ8PyKIe^1veR5bvKUAyeB z3GRjE$>m#I@xf!4{EIi&SGWu(R=W~Ua<*z8v!(jym(DMb^z(V|T!`T3mx71ZVmOJM z5A3U717BFBu5)r+%I5k~S6efEbuA!a-{E6f(AU(w#|YC-lyli9O38Z+d?WuleZuwW zI1{HNV&;Ng*l8dvYB9xqz&7;o7(#GeqW1nVjIm`BXWBjvyg&Ed9_oK87dXVStMLMA z+nQy6O`YCS&N4>9*T=z7TKVGgO|BaPyRa(bg7$Tye?f9hJ)gF#^aWpj<1U}Q)Lvfg z+R$`7`RFBo{?5`}rCbZkx)`vRTV@W*TZ8)l-0@Lor2B<(*l?)?k5c1KCc;k8b0K<) znTK;KT$ihLG`+4gT(wC#+--h-VDTE)j1$e?lH3`=1>TgpxH{Nq++8)<vKRc%i)?B7 z6vz@Pm%Fj&g$@JWOUxsi(SFzm$p~?dELd2iRA}b;Ql><;n=JjMP4xr1N-u42?W^zK zJRz^9KDrLj3FVm0)r89=`JGQtVr~ew^g|ja$H~?DCa01V%AMR8Zs?aXNiC9w|IhMc z;06DHtDX^kkNWjX{HQ(g)Th9DM0a)J-Q|4dz^3H#ZRK;IL6y)%bEDc<;Yu#e2%IeE zh7AdBgPv7<Flk+RGM~1&ejDs#RF@|C7dKY>l1r1zE6~sW<aaRNs!FS=pNCxxB$u0~ zSo3Jtjhwcv`~>=#dYDF?(thrU?F`=ouXu~<b+wOqtj>53KP?_Jp=AW>i=VZxt`o6W z2tfm^lL@);p74&2oL+k?6KMaX{QrORQn};$=2fKIJUzvm4SD>k$@%!v_>VhGc8yZ% zcH#bv_o8fvJW)QZ8qqgAI8*8U|0eqZo1|}Et;5xt>Zi?tM2(Q^!u9Go<QNHB8Gf{O z1z7nx+Q@WPyH!~=i*GVzGbmA672hmV69Wy->N89;!J1dxLegS7+CEsQf?O<ChyAR4 z1bfwpbLy;dGj5*wnaccMsV(3>v_N~erQ&my9T_|8l*+7Qr-$`#nZpE0%nT2Bd#!x* zpjJx^7f5mq3Sg~gPrwd!Fch8@u=WE;2JcwSPH6PG^ud#usqv6m`3d&fs12cxU7>gJ zy~E$D&)U6qui%V#F7_t7bl_ry#w>=`PofjBLTIsfoCkVzpcUC5SHIX3-bcoJE1hG! zwpM{3<FQdF*foz-(bFb)=Ro(hYBJTGYJRoeFVXx3ZJPS+d-VPLi2s1_Tl}aW6@*q` zN8$Q|mk|=&xvFTr+TZlNw6?UC)|us;fgJ|aB2=354y#rxq;=}!>g&OU-P!cQrQ&5= zc3i#SDfRQU*aKkw;@{u;D4E`xlT2^1%(t32yd$)Se)X24VNGr9jE5z%_YY~y%6)){ zgxy(~MXUzjcJdX8D8=IVHhEWldOaKdRulQdORZ<H$CiaTw-;8MplPnb>>p#k6+r)w z<O>)|0=%?48zo)vvWlw71<=N%QWMb@Kn8i$^(pnlQQiq{oSi5$r5@ug?L}*7Kclk7 zf~FoW#|Zp21^ixkaFSTXR@9a3t`l5BxI#E@%nWew&cQ1(YW1-8E&2|tPD$B@FR`qh zZH(9YU@6}o8e=B^bw1Y3JANsHWJr;^ysrDwrFYvV#eb#V;wRm~7ut>r&(}Aj7Yt}Y zGfFigJd;G_QVT%6rST}>94Yk<&jEkfdSSR;8ZE-3S>>9XgYj=cyHvm@0|3hml2+Cg z)Ilz1$byH4c&a8FYCN7HB`+;I>#;AAmp!m3gFNHH3Jkpiec|b6(3iU&3hz#o=4&v_ zXj?*cdKgwb90>P5BqoRTC+Rs!+nE~^CEsMi2*~ysNml{ZMm@+zoq1-qX8nV+|80qV z*{4_~dT6X?<oPG@$0-y&2fSk6j;KsboE-k9cmQ)3CwLs}ByqOVWpnG8&9$t`wQxyv zkY9F7ohS{*3jIfj&SdNxha=plFe1Y}m*r$>0qB?K168mfnY(1}BG`7+^hU4tiwSZv z$=<n3?pPArID65=Mb^VQZ<6<E7k`r8ydWn@7i7w-!(M8J&BCN*xr?m$);9Qc4Yx^| zNLG$U0Q)Hk%|7%%@uWkjD}2Kx%={m3HY|uf<r>~}gGcnl&U$GX&iVp-$po*vk>)7z zeNKePD;&vADJ2JxX7?uMP4J4I6j+%QrJqia%rELZ<VV`W(ZBRfqWhUJjwbg4l<)CS zIk~WXO5u`gl%aaqOtT)QcW92GPERfS>%f@<XB6No*-L0$WT76w4NY0z4UHMzj6+YM zCjU=+S03L~mHqF@0%_BYRiG>vN@$@Ar3=tPp=}mgnx!P^0*E0bX&Y&ik_B3DDT)g^ zF1R7CAc{IVBJPf$;x_7xV=JP7s5qlm!37YZpkwEIlXSKIKEKaL|D4;N-1E-e&OLWI z=e>9DeS!~4oIGYs-8I;;Idn9hYAqKMJl*zn``Eg%y9AFLire2yt8=(hm*3x^Xu+N= z%t?-o;(7bQHo-%%bAP*ZEld3X)`+}wU#KrdWM$g?IGfs{lWr>fA#VL0cyA`%GOX$T zV+uxjNm#*^)Oem){d2?B#T|!Ksj^lX)(wu-`Nke=zo~;>e)L49bl(XUXFMj26L?gr z1bfV;9>~&({h!fMBXwABI%hk!L`9{HKA7F)#&iF>TE-r5q^7hwf#23row~GDl{&gD z8@s`9#zl+BAEisLEp9ov5oggx{Upyudig=InjrV%_F(G8txc)wR)6aFR#j3@Y~P`e z+gZB&L}%Us@n$+|A>P+<*l@c$EV^wPmTu{grD7)`KY%-dG|e5lyW90;OFCrh#BRk2 z`1;qkXKZI5z`4d(;E4dzE0^fjBfYqjxwB)th9#9@r?B!^lx%(bx$~8HKSkL;wi}NZ z#wGAiJHEMbj%obyLc9Yv=`6b4Co<z{GwL9Tc_}lQCy&Q>@wOe4NF<xVL*gWyH^vW@ z7E^)gczT?CC)>=DH)6fIZ0oL{j-OyZ4Y{*KJElYVI9Azijqacq2IDQ?JHWp=7<a^Y zToM<}-)N_K4edjAfy=m0+B0!CJDgpwqhwL;1IGr-Wv!ftB#|3+_(i-clC`E!q<ly! z@$y!cCi+MSSAN@eQM+V|pi=()Q)_lkO=MF~AC^Cyr<tTl);w4||5U?HtPzbx4CO7w zr`ufZjGz6o75e)_z|R1z%gmE#ZiJQ<UrUfSA+~8dW|&clSgV?OvR$H)>TV9LHO0P` z#Ix;<PsbW!_0Gim6WEj;#ZhfaLyR8pWIDPi^0vl36&<oU_zKL-@7lYtlkKu4r04<# zaH&r00YjdtY}#3@WM#*t&oMmtihC}!juo0stZ#*O?VvKmGHt><ldxx)E*fhJJI_4z z(%v7U&9Fh#_nqvVIV?koGrD7Ra$VM8mNEQL&h~vcyXf09wH?S2{^oPDcd@j}Lz9m) zjY?h7nxSW^B;9nK>PY&+;&X#K=%_*>QIBt(5=n<|qlVJ0!^u@gTZNu9ooX4DUG({= z$ww73raID|ouT~rnIBucc%Fkkm)$W~r$p}?joGH-^7~E>D@HG$opMgnk#JNIf3h_p zlJA5_z9!`RBJzzsG(3Z_Q+?2pH%{aX5@!vJ)9frheL!_oA%6_(LDF=Oi1&q>hcHLo z6=YY>{e0FX49AU&_jnyovzIz{D|X)ljnErsa0I~FD2(CUAmNn*#Mwbz_}*Lg3Y0yO z9P$SId7AJ&XFv(&xt}j(^I0wpdu=FFe3;A>&jaoT;JJfh3*c)&W|Jy2tBJGN=n_Mb znpe7f?wV$<_4&L$9vj_{YzaCXF25i2#ldXPjFKGF40EnA&yr=GX;C@-s?2O>KDZj4 zj<Nt#0j~o#0@?tA;XL>!(!c{C2zUqZ8DKr&3cwaXb0$-41E>H)0Hq#xz-_PR;7@JR zX!(kIyJuxaMuuR}Vzt;TT61NoT5B^DS<3QN&M@CR{nyT{Ll)&eZ=@395;YtsW<(C5 z1d&>ENW|z3goMJ&bGX&z54b(Gz4EiHaR(fAJmBT(db{7xRSxd-dR$0RR4fX@X-IIq zfG;$a8nqfA2q@<T13IKKS&NDW4h=IQ>aO>i?Y62Sqivzr?QuDgXO{r_l*V;MrFyLf z=_2Hc>3Xg+7a6qqf*F1h*O-OqF5=}?0tpvjZ7N59@H*WNcc7U&>g=9c6oLAwf;^?c z?{Z8PvYyt@@e-Ha7btew1HDtLyHn>!l21iieM5=e<E(f2xFz6i<X#W2MLlXcTK89> zjV{4fPYQpxxP=rOyiOr$G^eiKUYj3gB7Ft8NDsIhPyi$o1iPH`U}L@4?zA<aE8A;b zws0^4MX2B9@q2wXr#)b|!TfVJhtr8L<lVbVMM@C$?AwDxHoYT;@z`jM+aIud9Ini8 zBQ-RnA!ZkGMmMpCmeox|#LD6#YeA@CELx+6o3)E7v=%G4GP;@q+}gz59?tXmC1^x6 zjMw8#@e2WW_qt+jk=kVBdQ&J-f3jJt)|OVHPxf>Kv&B*x?h+Pbq;KdJg$dSD^qWv` z(P%B|Fji{RnesEUsxh5}fOjFnAAk{~$%;yZOBJ=KG;mFkwTN4+CUdBxc2mr#XBVwV zUDi{jo^its>T*lE+Uu!t`x^QV8RY$|F0abW33YXo*&3-vpU#gJdfZ@Hz^#kRwfPKE z)0LVHkj+w+e;Kl?Fm{uAGhR{7ttL?iZEtFb^`6mJURhmTjT&@KX~kY|fTJJRacx5* z##pEdwP~Uc`|H91PFIaRSRdeM(;9az28I|JvC+}t>4Yz?FqW9iMw^%nbXB4{ma0np zmQ+=W3xm}FF9VpUB7A`gfruPfQF*z(R9$2(H5qM{TC)XyKCe_&XN3Myj-kq?H<^pX z1k)YfKZ3bPQ)=oJ%=<*pXW1;}T6LfBJ`v3214l^j#m2<NK~IU-=RxnVaI<T*d$nsK zWWYhL>mnO50Yt*Y^ufXXyn!4y*!?RpvX+V-+QgTMh>;!=ktH8^-V!OCh;IoEFQEnd zC9~KY8tcXEW%Bi&97;U_mv1%nSI-pq>#R_jK>cdlieQZ>1ap<(%~4aEKCf}9%DJo{ zblp=V1}C?;QJjmbbqfkqf*Z{5+@#ZWVaA@=n(oQ|H+#NCZ^Bscqv!V@_sC`j%VKJq zLCwm=54&4WihBWT@GN#4`~%oex&yvJYq0QAO_<kihS4T=CwDt}jon=jnYnqTJ~vyR zS#7hp0vfcX!&T&T`Y;(sVnl+49Lhm<c>)|d0`r@&0s^j(0;+L)AW#@DSxsr2mwWvP zgYpnfTM#yBz;;(T8cgP5z=<3qOz@y*rN_I*19rKpDWo<cjR{2r?Il{#EYuy;MG{m) zSS^UI(v>Nq1>BBMwjxiLvnL4Mr^f4RFuQ8h_ImdUA0mRc-;QNzv^x!U4|Gw3sBHg; z-C{C`9zH;*-re91sOwygm0FK|1-e969GENI5^QYr`XII*&Rv0?6qWY+U{8YX%DDmt zm)#%qg*dVze@|_3&{+$z+u`#@MnHEty^>Wr{I2@)V7=cJ9z@-7(7_?cMu$HlOQ<KP zdkhzskSg?1kCZvrn$4K+P+Kt&a)RLqNj$<6<}%SV`ABFr>3C8|q2>g6SfhqWA$8i9 z6w;<460&1kMzccv!OaD5z)<#83os*W?pP@s8W$HA9Zeyd94C&Du+0VF2_2J1aB)2d zfb2p!2-{r-5Qc67pb*dk2qhGO{hUZI$RbaXZtIm4D!XM2a?OpwyT*9dvSEDabu1gY z7U$KRVr-^|#5*5WfB089$|MSwkdPn)NB{~#?lN$w0EaQ)h=ZdRaHEh(a12ezNe6=o zm$3HpF-~hmKXv=L2mJ<WCuC5<tO(S(xS=W^4Hw|`UY~u9-D4BlD5H+s9S*P0iQZA) z45^Ac2wxMri^~)ghO)R0^t<*oX~H&fI52X7H(9Z92}6gE7&Rtw-1v!;rE-a!21z6k zHDp0@nUIgD_CRnW&X^HS{7Q($D5Ikkg9m3Zl1OFp&R?>#v;8OG7*pn63}0M-0%xwa zVZsw5)8|?x=7y5B9JZXs3>?gxtA9Jp`hSEOpsd|CH4FRV9<KL%`8MWCF<-t1c%$RH z)14oDvT3>GpOx)T8@{<=!p3voKXLs}MNitaNtVy=41QLiufOES%j*`ko&DD%E2b%K z)!m&rD|&j|<it<kF<yFf=(y^fnTMZRdjINYFE)RC!LS|Av%Q7?Zhq$d>uP<s-2V6# zFT8I0_R2eIhFtTt?3b-gs<Qi*waDjBY&_vuv$L3g@t>F0kDBu8i@8^4++6YV+Bg52 z_2tW>@7b=g&Qbp9Z!1$C+&%IyA2|cVZ;B~-?%qA>*YalUJGuW_&mr1%SLuOAe|Y!p zQwtKj#}}SIyUM@$@7unbcbh#n{>VkE{&C}=Gh<)5@G<v!Tk?|+9!s6{-ot~l)8~$O z>#9GOKOkKkHOBSfhStlbE*Zb>p@y^vHf*^rcF!(rx%A<SN3Zzu4(;8ASB*IKmhzk0 z{~Uek%xz0w8T;6UONu0>^H1d{ZuVQ|$CzCgq-=|SI%?*f1ykJb+?#k$AS3;W?|wRM zu>W)2yj7cjtYc}*C%pOXi@JklpS=Io!j;p$82S2#6}P;bFlha8&0qih!!Ivi^OxNv zvQPI09hqa|8uY_+r+;?eKk}+hUbf)T_S9Rq-rja;%_Waq{`S;;bDRG)ZuOi><M@xF z>px%S`F_Vk_s_aEOTGBnKRMq!^3=J(s-4$=J!=2eUf<*se_NDv(OnZiK78dBHx|G4 z=L2#Yy4`lRbyIcn^RtINnf*fJ#s{C7bQ3S_Y+8FmN6UGKX1wv-tB<c4^7o%V$ah?{ zX5Gn^-q$m!HuaYeA6fnOWp7=4Zt;TSe|i7Dop;^ud->V_+&pFG{4@W^dEko^s}9T< zA^Tg>tD|m{-!XV-%fF5#KM{<&JZ(&(XUSIcoDZIy`tRu*EN$#t{`0P-7ykXlyoLJe zcU!;z^G|9+_7&Q*l1t0y-uuv^?S(hobocBZcRzDzVnXK+@4XW<>>Jx=&3Ugqcu9eC z*=Yar^`^s<rrmh8?z`uPe{zBHqa#`Q(WQeXpa06fM^|jR_4DTTH)l0mx8L}1edVd6 zuC<RT{@SF<7`x-CH@^BfFrjSEwbwMxd%C7XdOFUYTlM^vd&k}LS;y@|+y}3}<<9X} zef`ghlu!S(ZDZ_9Ul!LDZAp)R-1@@Eh{nYrgt1Va|Hu7c^hWZAeW9%=&4(6;`+pYD zle(y}@pq&~*}||17d}AQC<g_UxthZ<m~qX@J{Oj*D-o^dLQ@QbG7`iLYBTO2!dJK` z({`sZs3WOtnfVAo<{}Gm5puBnZKttMUg#iWRhdnS_4h(=0k<Ro$DRjqcVHO@T<ABH zYMTaJ2^@u5X9151;bmG4@Ypb(xd=FR0%7X6gz$KQ8!ed^fG%|660O-3Tu2JD-RXuM z0lUt$+U4`R*NU6>Qu87kW@Rh>affND5VyDGW-T|B0kJGLs>4_brsxn!AZ4aVLbX|K zgWX^<<60&cdbz*q6uLv`3UMBpaJy0%voB)o)%!wvL%MAYDO{tmz95klpTU1?GATBK z_TxlSG;mUAN8x==GJF*&f}k%$oLKl@h%|tk0k<N~Ccq8AuLa~HFFRm8@QEqN3t@Wz zCy>t;_^$D!_!{8_GfANaYy|B(z{^7!n*bgk8p+ss@HdQQ_~0PUwpB3(i-0|qj#F~r zEAki<@=nuZk2d_erC3J^Kj33bv`O{tj3Ft@d6u!^@W1+;!4_bwX$G-G_;oNRhKcaE z3Ht@`zITO$je%eIkpvbItfQNyA^Ya#S7dB7u9rV4XG7r6=7X8&BVDq@o(oCDOac|@ zj1_wQJeD~lD?2B5=B(Ly_7x786t#8k3s=@Rc)X3PeEvXi^_r&UwY?(YIhjVQTToKE zuuN|-n#vcME!K+4s_Ml{LYe;7PwFKjMy5RW-i}AkjJP`LUDI6ZPf+wHMD-_#KHkR( zVf1lAYJHp#ZyzVxp^p;{*2jqv@N1{p`^%+b94^Ci+dM#*VW*A3-u3s1EuMyFsDN#N z*i<|x&0&gVfZS}RsF)Rgu37+m74Wkfe49OsDGttLihc0gK;IAlGr;=UhzkR$w-a_% zAv#)uc&3~{#4Qp7Xk0NmK1CK?G@r>~1T(oLY+;2{k`#vJ0B*|wwEvO*I0+1o#(t^# zKQ6!j<@Ea`5NZ!c`1bDi<@CSQe}n`=?E$?v;N<ih1yCnpexpuCQH&B84Pi8yNYzO} z5Q&Uwgm0;4auFdjimZ%g$S6xng_n~~Mavlulcw@Pw1|=UHmX!mRVLXPtzhJ2<YH8_ zRb(<Lixv#0(oR|!Drjvqtz*<QQ3NIBP%$G-CuygUPELh|6gP<Y7*ZFC5_6=Ks}a#q zXjv5L<z&G3ZxNr7meT?Sm84KDqedC6BJ%x0s~N395k#>hqP0LFcZkdDQO7VvNFfpg zy1=n<Q$n3_#Bh@A29iXRREiU@N&Y4clG5PoU=>o-8x&2Xlu!(#*!>hYisFY7bj6U% zXegs$`)T+n8ZnGUO6j~SX;d_gj-oLNN_>UJN@?5;G(MUppi)E=B{Ydq(teseid2(m z3Q_W9l)`B0ewsFlQk9gJLg`JEkwViqQ6@yKB;3SjD=CLj?lzjqXx3K3u>pBF{V0Xz zWYXLiDv;5<c$(i#g(*}to{FcF`l^t8l-Tb?3zVYyN*@%GFWW(SCIo0imC<U97PXK$ ziYyAU5>+s&jHjw*s*a+?a$3S@>2f+>PRrWpf*7*R6>V*Ar4>qYNXeN(t^}%?MzwiV zrzE$8E=-}72~<Cg8tmkWAuk#wo>n!JkC9(V0Y*V(sCBkc6Qky>w3g92G^LE1$I-fE zx-E`2W22CiwtP=_Na#)t`3F-Ynk>?A;m#{;6!GjyxR8%!`of~ni$^=GQ;<WCnnFnA zCma^O2*>D(-#b<qKLXFS2et;_R)C;B5b+;|?|zXf-ilm{us$v>K9-^sL(r!}oODLq Fe*qaD!g&Ay literal 0 HcmV?d00001 diff --git a/STM32CubeIDE/Release/STS_RR_R125-YUNHORN-MASTER.list b/STM32CubeIDE/Release/STS_RR_R125-YUNHORN-MASTER.list new file mode 100644 index 0000000..406c21f --- /dev/null +++ b/STM32CubeIDE/Release/STS_RR_R125-YUNHORN-MASTER.list @@ -0,0 +1,32756 @@ + +STS_RR_R125.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 00000138 08000000 08000000 00010000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 000142c8 08000138 08000138 00010138 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 00001524 08014400 08014400 00024400 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .USER_embedded_Keys 000000d8 08015924 08015924 00025924 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 4 .ARM.extab 00000000 080159fc 080159fc 000308cc 2**0 + CONTENTS + 5 .ARM 00000008 080159fc 080159fc 000259fc 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 6 .preinit_array 00000000 08015a04 08015a04 000308cc 2**0 + CONTENTS, ALLOC, LOAD, DATA + 7 .init_array 00000004 08015a04 08015a04 00025a04 2**2 + CONTENTS, ALLOC, LOAD, DATA + 8 .fini_array 00000004 08015a08 08015a08 00025a08 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .data 000008cc 20000000 08015a0c 00030000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 10 .bss 0000256c 200008cc 080162d8 000308cc 2**2 + ALLOC + 11 ._user_heap_stack 00000a00 20002e38 080162d8 00032e38 2**0 + ALLOC + 12 .ARM.attributes 0000002e 00000000 00000000 000308cc 2**0 + CONTENTS, READONLY + 13 .comment 00000043 00000000 00000000 000308fa 2**0 + CONTENTS, READONLY + 14 .iar_vfe_header 00000020 00000000 00000000 00030940 2**2 + CONTENTS, READONLY + 15 .debug_frame 000003b4 00000000 00000000 00030960 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +08000138 <__do_global_dtors_aux>: + 8000138: b510 push {r4, lr} + 800013a: 4c05 ldr r4, [pc, #20] ; (8000150 <__do_global_dtors_aux+0x18>) + 800013c: 7823 ldrb r3, [r4, #0] + 800013e: b933 cbnz r3, 800014e <__do_global_dtors_aux+0x16> + 8000140: 4b04 ldr r3, [pc, #16] ; (8000154 <__do_global_dtors_aux+0x1c>) + 8000142: b113 cbz r3, 800014a <__do_global_dtors_aux+0x12> + 8000144: 4804 ldr r0, [pc, #16] ; (8000158 <__do_global_dtors_aux+0x20>) + 8000146: f3af 8000 nop.w + 800014a: 2301 movs r3, #1 + 800014c: 7023 strb r3, [r4, #0] + 800014e: bd10 pop {r4, pc} + 8000150: 200008cc .word 0x200008cc + 8000154: 00000000 .word 0x00000000 + 8000158: 080143e8 .word 0x080143e8 + +0800015c <frame_dummy>: + 800015c: b508 push {r3, lr} + 800015e: 4b03 ldr r3, [pc, #12] ; (800016c <frame_dummy+0x10>) + 8000160: b11b cbz r3, 800016a <frame_dummy+0xe> + 8000162: 4903 ldr r1, [pc, #12] ; (8000170 <frame_dummy+0x14>) + 8000164: 4803 ldr r0, [pc, #12] ; (8000174 <frame_dummy+0x18>) + 8000166: f3af 8000 nop.w + 800016a: bd08 pop {r3, pc} + 800016c: 00000000 .word 0x00000000 + 8000170: 200008d0 .word 0x200008d0 + 8000174: 080143e8 .word 0x080143e8 + +08000178 <cmox_sha1_setDefaultMacLen>: + 8000178: 2114 movs r1, #20 + 800017a: 6041 str r1, [r0, #4] + 800017c: 4770 bx lr + +0800017e <cmox_sha1_getDefaultMacLen>: + 800017e: 2014 movs r0, #20 + 8000180: 4770 bx lr + +08000182 <cmox_sha1_getBlockLen>: + 8000182: 6a40 ldr r0, [r0, #36] ; 0x24 + 8000184: 4770 bx lr + ... + +08000188 <CMOX_HMAC_SUPPORT_SHA1>: + 8000188: 0179 0800 017f 0800 0183 0800 y........... + +08000194 <CMOX_HMAC_SHA1_TABLE>: + 8000194: 0199 0800 .... + +08000198 <cmox_hmac_sha1_constructor>: + 8000198: b510 push {r4, lr} + 800019a: 4604 mov r4, r0 + 800019c: f104 0010 add.w r0, r4, #16 + 80001a0: f000 fc5c bl 8000a5c <cmox_sha1_construct> + 80001a4: f8c4 00f8 str.w r0, [r4, #248] ; 0xf8 + 80001a8: 4801 ldr r0, [pc, #4] ; (80001b0 <cmox_hmac_sha1_constructor+0x18>) + 80001aa: f8c4 017c str.w r0, [r4, #380] ; 0x17c + 80001ae: bd10 pop {r4, pc} + 80001b0: 08000188 .word 0x08000188 + +080001b4 <cmox_hmac_sha1_compute>: + 80001b4: b5f8 push {r3, r4, r5, r6, r7, lr} + 80001b6: b0e6 sub sp, #408 ; 0x198 + 80001b8: 4604 mov r4, r0 + 80001ba: 460d mov r5, r1 + 80001bc: 4616 mov r6, r2 + 80001be: 461f mov r7, r3 + 80001c0: 490a ldr r1, [pc, #40] ; (80001ec <cmox_hmac_sha1_compute+0x38>) + 80001c2: a806 add r0, sp, #24 + 80001c4: f000 feca bl 8000f5c <cmox_hmac_construct> + 80001c8: 9970 ldr r1, [sp, #448] ; 0x1c0 + 80001ca: 9a6f ldr r2, [sp, #444] ; 0x1bc + 80001cc: 9105 str r1, [sp, #20] + 80001ce: 9204 str r2, [sp, #16] + 80001d0: 9700 str r7, [sp, #0] + 80001d2: 4633 mov r3, r6 + 80001d4: 996e ldr r1, [sp, #440] ; 0x1b8 + 80001d6: 9a6d ldr r2, [sp, #436] ; 0x1b4 + 80001d8: 9103 str r1, [sp, #12] + 80001da: 9202 str r2, [sp, #8] + 80001dc: 462a mov r2, r5 + 80001de: 996c ldr r1, [sp, #432] ; 0x1b0 + 80001e0: 9101 str r1, [sp, #4] + 80001e2: 4621 mov r1, r4 + 80001e4: f000 f860 bl 80002a8 <cmox_mac_innerCompute> + 80001e8: b067 add sp, #412 ; 0x19c + 80001ea: bdf0 pop {r4, r5, r6, r7, pc} + 80001ec: 08000194 .word 0x08000194 + +080001f0 <cmox_hmac_sha1_verify>: + 80001f0: b5f8 push {r3, r4, r5, r6, r7, lr} + 80001f2: b0e6 sub sp, #408 ; 0x198 + 80001f4: 4604 mov r4, r0 + 80001f6: 460d mov r5, r1 + 80001f8: 4616 mov r6, r2 + 80001fa: 461f mov r7, r3 + 80001fc: 4909 ldr r1, [pc, #36] ; (8000224 <cmox_hmac_sha1_verify+0x34>) + 80001fe: a806 add r0, sp, #24 + 8000200: f000 feac bl 8000f5c <cmox_hmac_construct> + 8000204: 996f ldr r1, [sp, #444] ; 0x1bc + 8000206: 9a6e ldr r2, [sp, #440] ; 0x1b8 + 8000208: 9104 str r1, [sp, #16] + 800020a: 9203 str r2, [sp, #12] + 800020c: 9700 str r7, [sp, #0] + 800020e: 996d ldr r1, [sp, #436] ; 0x1b4 + 8000210: 9a6c ldr r2, [sp, #432] ; 0x1b0 + 8000212: 9102 str r1, [sp, #8] + 8000214: 9201 str r2, [sp, #4] + 8000216: 4633 mov r3, r6 + 8000218: 462a mov r2, r5 + 800021a: 4621 mov r1, r4 + 800021c: f000 f887 bl 800032e <cmox_mac_innerVerify> + 8000220: b067 add sp, #412 ; 0x19c + 8000222: bdf0 pop {r4, r5, r6, r7, pc} + 8000224: 08000194 .word 0x08000194 + +08000228 <cmox_initialize>: + 8000228: b538 push {r3, r4, r5, lr} + 800022a: 2800 cmp r0, #0 + 800022c: bf1c itt ne + 800022e: 6801 ldrne r1, [r0, #0] + 8000230: 2900 cmpne r1, #0 + 8000232: 4a18 ldr r2, [pc, #96] ; (8000294 <cmox_initialize+0x6c>) + 8000234: d123 bne.n 800027e <cmox_initialize+0x56> + 8000236: 4b18 ldr r3, [pc, #96] ; (8000298 <cmox_initialize+0x70>) + 8000238: 681c ldr r4, [r3, #0] + 800023a: f64f 71f0 movw r1, #65520 ; 0xfff0 + 800023e: 400c ands r4, r1 + 8000240: f24c 2540 movw r5, #49728 ; 0xc240 + 8000244: 42ac cmp r4, r5 + 8000246: bf1f itttt ne + 8000248: 681b ldrne r3, [r3, #0] + 800024a: 4019 andne r1, r3 + 800024c: f24c 2470 movwne r4, #49776 ; 0xc270 + 8000250: 42a1 cmpne r1, r4 + 8000252: d112 bne.n 800027a <cmox_initialize+0x52> + 8000254: 4d11 ldr r5, [pc, #68] ; (800029c <cmox_initialize+0x74>) + 8000256: 6829 ldr r1, [r5, #0] + 8000258: b979 cbnz r1, 800027a <cmox_initialize+0x52> + 800025a: 4911 ldr r1, [pc, #68] ; (80002a0 <cmox_initialize+0x78>) + 800025c: 680b ldr r3, [r1, #0] + 800025e: f3c3 030b ubfx r3, r3, #0, #12 + 8000262: f5b3 6f8a cmp.w r3, #1104 ; 0x450 + 8000266: bf1f itttt ne + 8000268: 6809 ldrne r1, [r1, #0] + 800026a: f3c1 010b ubfxne r1, r1, #0, #12 + 800026e: f240 4383 movwne r3, #1155 ; 0x483 + 8000272: 4299 cmpne r1, r3 + 8000274: bf04 itt eq + 8000276: 2101 moveq r1, #1 + 8000278: 7011 strbeq r1, [r2, #0] + 800027a: b928 cbnz r0, 8000288 <cmox_initialize+0x60> + 800027c: e005 b.n 800028a <cmox_initialize+0x62> + 800027e: 4b09 ldr r3, [pc, #36] ; (80002a4 <cmox_initialize+0x7c>) + 8000280: 4299 cmp r1, r3 + 8000282: bf04 itt eq + 8000284: 2101 moveq r1, #1 + 8000286: 7011 strbeq r1, [r2, #0] + 8000288: 6840 ldr r0, [r0, #4] + 800028a: e8bd 4032 ldmia.w sp!, {r1, r4, r5, lr} + 800028e: f001 be9f b.w 8001fd0 <cmox_ll_init> + 8000292: bf00 nop + 8000294: 200008e8 .word 0x200008e8 + 8000298: e000ed00 .word 0xe000ed00 + 800029c: e0042000 .word 0xe0042000 + 80002a0: 5c001000 .word 0x5c001000 + 80002a4: 48370000 .word 0x48370000 + +080002a8 <cmox_mac_innerCompute>: + 80002a8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80002ac: 4604 mov r4, r0 + 80002ae: 460d mov r5, r1 + 80002b0: 6821 ldr r1, [r4, #0] + 80002b2: 4616 mov r6, r2 + 80002b4: 684a ldr r2, [r1, #4] + 80002b6: 461f mov r7, r3 + 80002b8: 4790 blx r2 + 80002ba: 4680 mov r8, r0 + 80002bc: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002c0: d12e bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002c2: 6822 ldr r2, [r4, #0] + 80002c4: 990a ldr r1, [sp, #40] ; 0x28 + 80002c6: 6893 ldr r3, [r2, #8] + 80002c8: 4620 mov r0, r4 + 80002ca: 4798 blx r3 + 80002cc: 4680 mov r8, r0 + 80002ce: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002d2: d125 bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002d4: 6823 ldr r3, [r4, #0] + 80002d6: 9a08 ldr r2, [sp, #32] + 80002d8: 9907 ldr r1, [sp, #28] + 80002da: f8d3 c00c ldr.w ip, [r3, #12] + 80002de: 4620 mov r0, r4 + 80002e0: 47e0 blx ip + 80002e2: 4680 mov r8, r0 + 80002e4: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002e8: d11a bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002ea: 6823 ldr r3, [r4, #0] + 80002ec: 9a06 ldr r2, [sp, #24] + 80002ee: 4639 mov r1, r7 + 80002f0: 691f ldr r7, [r3, #16] + 80002f2: 4620 mov r0, r4 + 80002f4: 47b8 blx r7 + 80002f6: 4680 mov r8, r0 + 80002f8: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002fc: d110 bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002fe: 6823 ldr r3, [r4, #0] + 8000300: 4629 mov r1, r5 + 8000302: 695d ldr r5, [r3, #20] + 8000304: 4632 mov r2, r6 + 8000306: 4620 mov r0, r4 + 8000308: 47a8 blx r5 + 800030a: 4680 mov r8, r0 + 800030c: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000310: d106 bne.n 8000320 <cmox_mac_innerCompute+0x78> + 8000312: 6823 ldr r3, [r4, #0] + 8000314: 9a0b ldr r2, [sp, #44] ; 0x2c + 8000316: 9909 ldr r1, [sp, #36] ; 0x24 + 8000318: 699d ldr r5, [r3, #24] + 800031a: 4620 mov r0, r4 + 800031c: 47a8 blx r5 + 800031e: 4680 mov r8, r0 + 8000320: 6821 ldr r1, [r4, #0] + 8000322: 680a ldr r2, [r1, #0] + 8000324: 4620 mov r0, r4 + 8000326: 4790 blx r2 + 8000328: 4640 mov r0, r8 + 800032a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +0800032e <cmox_mac_innerVerify>: + 800032e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8000332: 4604 mov r4, r0 + 8000334: 460d mov r5, r1 + 8000336: 6821 ldr r1, [r4, #0] + 8000338: 4616 mov r6, r2 + 800033a: 684a ldr r2, [r1, #4] + 800033c: 461f mov r7, r3 + 800033e: 4790 blx r2 + 8000340: 4680 mov r8, r0 + 8000342: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000346: d12e bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000348: 6822 ldr r2, [r4, #0] + 800034a: 990a ldr r1, [sp, #40] ; 0x28 + 800034c: 6893 ldr r3, [r2, #8] + 800034e: 4620 mov r0, r4 + 8000350: 4798 blx r3 + 8000352: 4680 mov r8, r0 + 8000354: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000358: d125 bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 800035a: 6823 ldr r3, [r4, #0] + 800035c: 9a08 ldr r2, [sp, #32] + 800035e: 9907 ldr r1, [sp, #28] + 8000360: f8d3 c00c ldr.w ip, [r3, #12] + 8000364: 4620 mov r0, r4 + 8000366: 47e0 blx ip + 8000368: 4680 mov r8, r0 + 800036a: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 800036e: d11a bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000370: 6823 ldr r3, [r4, #0] + 8000372: 9a06 ldr r2, [sp, #24] + 8000374: 4639 mov r1, r7 + 8000376: 691f ldr r7, [r3, #16] + 8000378: 4620 mov r0, r4 + 800037a: 47b8 blx r7 + 800037c: 4680 mov r8, r0 + 800037e: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000382: d110 bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000384: 6823 ldr r3, [r4, #0] + 8000386: 4629 mov r1, r5 + 8000388: 695d ldr r5, [r3, #20] + 800038a: 4632 mov r2, r6 + 800038c: 4620 mov r0, r4 + 800038e: 47a8 blx r5 + 8000390: 4680 mov r8, r0 + 8000392: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000396: d106 bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000398: 6823 ldr r3, [r4, #0] + 800039a: 9909 ldr r1, [sp, #36] ; 0x24 + 800039c: 69dd ldr r5, [r3, #28] + 800039e: 2200 movs r2, #0 + 80003a0: 4620 mov r0, r4 + 80003a2: 47a8 blx r5 + 80003a4: 4680 mov r8, r0 + 80003a6: 6821 ldr r1, [r4, #0] + 80003a8: 680a ldr r2, [r1, #0] + 80003aa: 4620 mov r0, r4 + 80003ac: 4790 blx r2 + 80003ae: 4640 mov r0, r8 + 80003b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +080003b4 <cmox_mac_setCustomData_empty>: + 80003b4: f44f 3040 mov.w r0, #196608 ; 0x30000 + 80003b8: 4770 bx lr + ... + +080003bc <cmox_mac_compute>: + 80003bc: b5f0 push {r4, r5, r6, r7, lr} + 80003be: 460c mov r4, r1 + 80003c0: b085 sub sp, #20 + 80003c2: 4611 mov r1, r2 + 80003c4: 2800 cmp r0, #0 + 80003c6: 461a mov r2, r3 + 80003c8: bf1c itt ne + 80003ca: 6805 ldrne r5, [r0, #0] + 80003cc: 2d00 cmpne r5, #0 + 80003ce: 4b0b ldr r3, [pc, #44] ; (80003fc <cmox_mac_compute+0x40>) + 80003d0: d011 beq.n 80003f6 <cmox_mac_compute+0x3a> + 80003d2: b182 cbz r2, 80003f6 <cmox_mac_compute+0x3a> + 80003d4: b904 cbnz r4, 80003d8 <cmox_mac_compute+0x1c> + 80003d6: b971 cbnz r1, 80003f6 <cmox_mac_compute+0x3a> + 80003d8: 980d ldr r0, [sp, #52] ; 0x34 + 80003da: b160 cbz r0, 80003f6 <cmox_mac_compute+0x3a> + 80003dc: 9e0f ldr r6, [sp, #60] ; 0x3c + 80003de: 9f0e ldr r7, [sp, #56] ; 0x38 + 80003e0: 9b0a ldr r3, [sp, #40] ; 0x28 + 80003e2: 9002 str r0, [sp, #8] + 80003e4: 9604 str r6, [sp, #16] + 80003e6: 9703 str r7, [sp, #12] + 80003e8: 980b ldr r0, [sp, #44] ; 0x2c + 80003ea: 9e0c ldr r6, [sp, #48] ; 0x30 + 80003ec: 9000 str r0, [sp, #0] + 80003ee: 9601 str r6, [sp, #4] + 80003f0: 4620 mov r0, r4 + 80003f2: 47a8 blx r5 + 80003f4: 4603 mov r3, r0 + 80003f6: 4618 mov r0, r3 + 80003f8: b005 add sp, #20 + 80003fa: bdf0 pop {r4, r5, r6, r7, pc} + 80003fc: 00030002 .word 0x00030002 + +08000400 <cmox_sha1_transform>: + 8000400: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8000404: 4606 mov r6, r0 + 8000406: b0d0 sub sp, #320 ; 0x140 + 8000408: 6808 ldr r0, [r1, #0] + 800040a: 6df5 ldr r5, [r6, #92] ; 0x5c + 800040c: f8d6 e060 ldr.w lr, [r6, #96] ; 0x60 + 8000410: 6e72 ldr r2, [r6, #100] ; 0x64 + 8000412: 6eb7 ldr r7, [r6, #104] ; 0x68 + 8000414: 6ef3 ldr r3, [r6, #108] ; 0x6c + 8000416: ba00 rev r0, r0 + 8000418: 9000 str r0, [sp, #0] + 800041a: 466c mov r4, sp + 800041c: 6848 ldr r0, [r1, #4] + 800041e: ba00 rev r0, r0 + 8000420: 6060 str r0, [r4, #4] + 8000422: f10d 0840 add.w r8, sp, #64 ; 0x40 + 8000426: 6888 ldr r0, [r1, #8] + 8000428: ba00 rev r0, r0 + 800042a: 60a0 str r0, [r4, #8] + 800042c: 68c8 ldr r0, [r1, #12] + 800042e: ba00 rev r0, r0 + 8000430: 60e0 str r0, [r4, #12] + 8000432: 6908 ldr r0, [r1, #16] + 8000434: ba00 rev r0, r0 + 8000436: 6120 str r0, [r4, #16] + 8000438: 6948 ldr r0, [r1, #20] + 800043a: ba00 rev r0, r0 + 800043c: 6160 str r0, [r4, #20] + 800043e: 6988 ldr r0, [r1, #24] + 8000440: ba00 rev r0, r0 + 8000442: 61a0 str r0, [r4, #24] + 8000444: 69c8 ldr r0, [r1, #28] + 8000446: ba00 rev r0, r0 + 8000448: 61e0 str r0, [r4, #28] + 800044a: 6a08 ldr r0, [r1, #32] + 800044c: ba00 rev r0, r0 + 800044e: 6220 str r0, [r4, #32] + 8000450: 6a48 ldr r0, [r1, #36] ; 0x24 + 8000452: ba00 rev r0, r0 + 8000454: 6260 str r0, [r4, #36] ; 0x24 + 8000456: 6a88 ldr r0, [r1, #40] ; 0x28 + 8000458: ba00 rev r0, r0 + 800045a: 62a0 str r0, [r4, #40] ; 0x28 + 800045c: 6ac8 ldr r0, [r1, #44] ; 0x2c + 800045e: ba00 rev r0, r0 + 8000460: 62e0 str r0, [r4, #44] ; 0x2c + 8000462: 6b08 ldr r0, [r1, #48] ; 0x30 + 8000464: ba00 rev r0, r0 + 8000466: 6320 str r0, [r4, #48] ; 0x30 + 8000468: 6b48 ldr r0, [r1, #52] ; 0x34 + 800046a: ba00 rev r0, r0 + 800046c: 6360 str r0, [r4, #52] ; 0x34 + 800046e: 6b88 ldr r0, [r1, #56] ; 0x38 + 8000470: ba00 rev r0, r0 + 8000472: 63a0 str r0, [r4, #56] ; 0x38 + 8000474: 6bc8 ldr r0, [r1, #60] ; 0x3c + 8000476: ba00 rev r0, r0 + 8000478: 63e0 str r0, [r4, #60] ; 0x3c + 800047a: 2040 movs r0, #64 ; 0x40 + 800047c: f858 1c0c ldr.w r1, [r8, #-12] + 8000480: f858 cc20 ldr.w ip, [r8, #-32] + 8000484: f858 ac38 ldr.w sl, [r8, #-56] + 8000488: ea8c 0101 eor.w r1, ip, r1 + 800048c: f858 cc40 ldr.w ip, [r8, #-64] + 8000490: ea8a 0101 eor.w r1, sl, r1 + 8000494: ea8c 0901 eor.w r9, ip, r1 + 8000498: ea4f 79f9 mov.w r9, r9, ror #31 + 800049c: 1e40 subs r0, r0, #1 + 800049e: f848 9b04 str.w r9, [r8], #4 + 80004a2: d1eb bne.n 800047c <cmox_sha1_transform+0x7c> + 80004a4: ea87 0002 eor.w r0, r7, r2 + 80004a8: ea00 000e and.w r0, r0, lr + 80004ac: 4078 eors r0, r7 + 80004ae: eb10 61f5 adds.w r1, r0, r5, ror #27 + 80004b2: 9800 ldr r0, [sp, #0] + 80004b4: f8df c424 ldr.w ip, [pc, #1060] ; 80008dc <cmox_sha1_transform+0x4dc> + 80004b8: 1841 adds r1, r0, r1 + 80004ba: 4461 add r1, ip + 80004bc: 18c8 adds r0, r1, r3 + 80004be: ea82 03be eor.w r3, r2, lr, ror #2 + 80004c2: 402b ands r3, r5 + 80004c4: ea4f 61f0 mov.w r1, r0, ror #27 + 80004c8: 4053 eors r3, r2 + 80004ca: 1859 adds r1, r3, r1 + 80004cc: 6863 ldr r3, [r4, #4] + 80004ce: 1859 adds r1, r3, r1 + 80004d0: 4461 add r1, ip + 80004d2: 19cf adds r7, r1, r7 + 80004d4: ea4f 03b5 mov.w r3, r5, ror #2 + 80004d8: ea83 01be eor.w r1, r3, lr, ror #2 + 80004dc: 4001 ands r1, r0 + 80004de: ea81 01be eor.w r1, r1, lr, ror #2 + 80004e2: eb11 65f7 adds.w r5, r1, r7, ror #27 + 80004e6: 68a1 ldr r1, [r4, #8] + 80004e8: 194d adds r5, r1, r5 + 80004ea: 4465 add r5, ip + 80004ec: 18a9 adds r1, r5, r2 + 80004ee: ea83 02b0 eor.w r2, r3, r0, ror #2 + 80004f2: 403a ands r2, r7 + 80004f4: ea4f 65f1 mov.w r5, r1, ror #27 + 80004f8: 405a eors r2, r3 + 80004fa: 1955 adds r5, r2, r5 + 80004fc: 68e2 ldr r2, [r4, #12] + 80004fe: 1955 adds r5, r2, r5 + 8000500: ea4f 02b7 mov.w r2, r7, ror #2 + 8000504: ea82 07b0 eor.w r7, r2, r0, ror #2 + 8000508: 4465 add r5, ip + 800050a: 400f ands r7, r1 + 800050c: eb05 0ebe add.w lr, r5, lr, ror #2 + 8000510: ea97 07b0 eors.w r7, r7, r0, ror #2 + 8000514: eb17 65fe adds.w r5, r7, lr, ror #27 + 8000518: 6927 ldr r7, [r4, #16] + 800051a: 197d adds r5, r7, r5 + 800051c: ea4f 07b1 mov.w r7, r1, ror #2 + 8000520: ea82 0107 eor.w r1, r2, r7 + 8000524: 4465 add r5, ip + 8000526: ea01 010e and.w r1, r1, lr + 800052a: 18eb adds r3, r5, r3 + 800052c: 4051 eors r1, r2 + 800052e: eb11 65f3 adds.w r5, r1, r3, ror #27 + 8000532: 6961 ldr r1, [r4, #20] + 8000534: 194d adds r5, r1, r5 + 8000536: ea4f 01be mov.w r1, lr, ror #2 + 800053a: ea87 0e01 eor.w lr, r7, r1 + 800053e: 4465 add r5, ip + 8000540: ea0e 0e03 and.w lr, lr, r3 + 8000544: eb15 00b0 adds.w r0, r5, r0, ror #2 + 8000548: ea8e 0e07 eor.w lr, lr, r7 + 800054c: eb0e 65f0 add.w r5, lr, r0, ror #27 + 8000550: f8d4 e018 ldr.w lr, [r4, #24] + 8000554: 4475 add r5, lr + 8000556: 4465 add r5, ip + 8000558: 18aa adds r2, r5, r2 + 800055a: ea81 05b3 eor.w r5, r1, r3, ror #2 + 800055e: 4005 ands r5, r0 + 8000560: ea4f 6ef2 mov.w lr, r2, ror #27 + 8000564: 404d eors r5, r1 + 8000566: 44ae add lr, r5 + 8000568: 69e5 ldr r5, [r4, #28] + 800056a: 44ae add lr, r5 + 800056c: 44e6 add lr, ip + 800056e: 4477 add r7, lr + 8000570: ea4f 00b0 mov.w r0, r0, ror #2 + 8000574: ea80 0eb3 eor.w lr, r0, r3, ror #2 + 8000578: ea0e 0e02 and.w lr, lr, r2 + 800057c: ea8e 0eb3 eor.w lr, lr, r3, ror #2 + 8000580: eb0e 65f7 add.w r5, lr, r7, ror #27 + 8000584: f8d4 e020 ldr.w lr, [r4, #32] + 8000588: 4475 add r5, lr + 800058a: 4465 add r5, ip + 800058c: 1869 adds r1, r5, r1 + 800058e: ea80 05b2 eor.w r5, r0, r2, ror #2 + 8000592: 403d ands r5, r7 + 8000594: ea4f 6ef1 mov.w lr, r1, ror #27 + 8000598: 4045 eors r5, r0 + 800059a: 44ae add lr, r5 + 800059c: 6a65 ldr r5, [r4, #36] ; 0x24 + 800059e: 44ae add lr, r5 + 80005a0: 44e6 add lr, ip + 80005a2: eb0e 03b3 add.w r3, lr, r3, ror #2 + 80005a6: ea4f 07b7 mov.w r7, r7, ror #2 + 80005aa: ea87 0eb2 eor.w lr, r7, r2, ror #2 + 80005ae: ea0e 0e01 and.w lr, lr, r1 + 80005b2: ea8e 0eb2 eor.w lr, lr, r2, ror #2 + 80005b6: eb0e 65f3 add.w r5, lr, r3, ror #27 + 80005ba: f8d4 e028 ldr.w lr, [r4, #40] ; 0x28 + 80005be: 4475 add r5, lr + 80005c0: 4465 add r5, ip + 80005c2: 1828 adds r0, r5, r0 + 80005c4: ea87 05b1 eor.w r5, r7, r1, ror #2 + 80005c8: 401d ands r5, r3 + 80005ca: ea4f 6ef0 mov.w lr, r0, ror #27 + 80005ce: 407d eors r5, r7 + 80005d0: 44ae add lr, r5 + 80005d2: 6ae5 ldr r5, [r4, #44] ; 0x2c + 80005d4: 44ae add lr, r5 + 80005d6: 44e6 add lr, ip + 80005d8: eb0e 02b2 add.w r2, lr, r2, ror #2 + 80005dc: ea4f 03b3 mov.w r3, r3, ror #2 + 80005e0: ea83 0eb1 eor.w lr, r3, r1, ror #2 + 80005e4: ea0e 0e00 and.w lr, lr, r0 + 80005e8: ea8e 0eb1 eor.w lr, lr, r1, ror #2 + 80005ec: eb0e 65f2 add.w r5, lr, r2, ror #27 + 80005f0: f8d4 e030 ldr.w lr, [r4, #48] ; 0x30 + 80005f4: 4475 add r5, lr + 80005f6: 4465 add r5, ip + 80005f8: 19ef adds r7, r5, r7 + 80005fa: ea83 05b0 eor.w r5, r3, r0, ror #2 + 80005fe: 4015 ands r5, r2 + 8000600: ea4f 6ef7 mov.w lr, r7, ror #27 + 8000604: 405d eors r5, r3 + 8000606: 44ae add lr, r5 + 8000608: 6b65 ldr r5, [r4, #52] ; 0x34 + 800060a: 44ae add lr, r5 + 800060c: 44e6 add lr, ip + 800060e: eb0e 01b1 add.w r1, lr, r1, ror #2 + 8000612: ea4f 02b2 mov.w r2, r2, ror #2 + 8000616: ea82 0eb0 eor.w lr, r2, r0, ror #2 + 800061a: ea0e 0e07 and.w lr, lr, r7 + 800061e: ea8e 0eb0 eor.w lr, lr, r0, ror #2 + 8000622: eb0e 65f1 add.w r5, lr, r1, ror #27 + 8000626: f8d4 e038 ldr.w lr, [r4, #56] ; 0x38 + 800062a: 4475 add r5, lr + 800062c: 4465 add r5, ip + 800062e: 18eb adds r3, r5, r3 + 8000630: ea82 05b7 eor.w r5, r2, r7, ror #2 + 8000634: 400d ands r5, r1 + 8000636: ea4f 6ef3 mov.w lr, r3, ror #27 + 800063a: 4055 eors r5, r2 + 800063c: 44ae add lr, r5 + 800063e: 6be5 ldr r5, [r4, #60] ; 0x3c + 8000640: 44ae add lr, r5 + 8000642: 44e6 add lr, ip + 8000644: eb0e 00b0 add.w r0, lr, r0, ror #2 + 8000648: ea4f 01b1 mov.w r1, r1, ror #2 + 800064c: ea81 0eb7 eor.w lr, r1, r7, ror #2 + 8000650: ea0e 0e03 and.w lr, lr, r3 + 8000654: ea8e 0eb7 eor.w lr, lr, r7, ror #2 + 8000658: eb0e 65f0 add.w r5, lr, r0, ror #27 + 800065c: f8d4 e040 ldr.w lr, [r4, #64] ; 0x40 + 8000660: 4475 add r5, lr + 8000662: 4465 add r5, ip + 8000664: ea81 0eb3 eor.w lr, r1, r3, ror #2 + 8000668: 18aa adds r2, r5, r2 + 800066a: ea0e 0e00 and.w lr, lr, r0 + 800066e: ea4f 65f2 mov.w r5, r2, ror #27 + 8000672: ea8e 0e01 eor.w lr, lr, r1 + 8000676: 4475 add r5, lr + 8000678: f8dd e044 ldr.w lr, [sp, #68] ; 0x44 + 800067c: ea4f 00b0 mov.w r0, r0, ror #2 + 8000680: 4475 add r5, lr + 8000682: ea80 0eb3 eor.w lr, r0, r3, ror #2 + 8000686: 4465 add r5, ip + 8000688: ea0e 0e02 and.w lr, lr, r2 + 800068c: eb15 07b7 adds.w r7, r5, r7, ror #2 + 8000690: ea8e 0eb3 eor.w lr, lr, r3, ror #2 + 8000694: eb0e 65f7 add.w r5, lr, r7, ror #27 + 8000698: f8dd e048 ldr.w lr, [sp, #72] ; 0x48 + 800069c: ea4f 02b2 mov.w r2, r2, ror #2 + 80006a0: 4475 add r5, lr + 80006a2: ea80 0e02 eor.w lr, r0, r2 + 80006a6: 4465 add r5, ip + 80006a8: ea0e 0e07 and.w lr, lr, r7 + 80006ac: 1869 adds r1, r5, r1 + 80006ae: ea8e 0e00 eor.w lr, lr, r0 + 80006b2: eb0e 65f1 add.w r5, lr, r1, ror #27 + 80006b6: f8dd e04c ldr.w lr, [sp, #76] ; 0x4c + 80006ba: 4475 add r5, lr + 80006bc: 4465 add r5, ip + 80006be: eb05 03b3 add.w r3, r5, r3, ror #2 + 80006c2: ea4f 0eb7 mov.w lr, r7, ror #2 + 80006c6: 2714 movs r7, #20 + 80006c8: f10d 0c50 add.w ip, sp, #80 ; 0x50 + 80006cc: f8df 5210 ldr.w r5, [pc, #528] ; 80008e0 <cmox_sha1_transform+0x4e0> + 80006d0: ea8e 0b01 eor.w fp, lr, r1 + 80006d4: ea82 0b0b eor.w fp, r2, fp + 80006d8: eb0b 6af3 add.w sl, fp, r3, ror #27 + 80006dc: f85c bb04 ldr.w fp, [ip], #4 + 80006e0: 44da add sl, fp + 80006e2: 44aa add sl, r5 + 80006e4: 4450 add r0, sl + 80006e6: ea83 0bb1 eor.w fp, r3, r1, ror #2 + 80006ea: ea4f 6af0 mov.w sl, r0, ror #27 + 80006ee: ea8e 0b0b eor.w fp, lr, fp + 80006f2: 44da add sl, fp + 80006f4: f85c bb04 ldr.w fp, [ip], #4 + 80006f8: 44da add sl, fp + 80006fa: 44aa add sl, r5 + 80006fc: 4452 add r2, sl + 80006fe: ea80 0bb3 eor.w fp, r0, r3, ror #2 + 8000702: ea4f 6af2 mov.w sl, r2, ror #27 + 8000706: ea8b 0bb1 eor.w fp, fp, r1, ror #2 + 800070a: 44da add sl, fp + 800070c: f85c bb04 ldr.w fp, [ip], #4 + 8000710: 44da add sl, fp + 8000712: ea4f 00b0 mov.w r0, r0, ror #2 + 8000716: 44aa add sl, r5 + 8000718: ea80 0b02 eor.w fp, r0, r2 + 800071c: 44d6 add lr, sl + 800071e: ea8b 0bb3 eor.w fp, fp, r3, ror #2 + 8000722: eb0b 6afe add.w sl, fp, lr, ror #27 + 8000726: f85c bb04 ldr.w fp, [ip], #4 + 800072a: 44da add sl, fp + 800072c: ea4f 02b2 mov.w r2, r2, ror #2 + 8000730: 44aa add sl, r5 + 8000732: ea82 0b0e eor.w fp, r2, lr + 8000736: eb0a 01b1 add.w r1, sl, r1, ror #2 + 800073a: ea80 0b0b eor.w fp, r0, fp + 800073e: eb0b 6af1 add.w sl, fp, r1, ror #27 + 8000742: f85c bb04 ldr.w fp, [ip], #4 + 8000746: 44da add sl, fp + 8000748: 1d7f adds r7, r7, #5 + 800074a: 44aa add sl, r5 + 800074c: 2f28 cmp r7, #40 ; 0x28 + 800074e: eb0a 03b3 add.w r3, sl, r3, ror #2 + 8000752: ea4f 0ebe mov.w lr, lr, ror #2 + 8000756: d3bb bcc.n 80006d0 <cmox_sha1_transform+0x2d0> + 8000758: 2f3c cmp r7, #60 ; 0x3c + 800075a: d361 bcc.n 8000820 <cmox_sha1_transform+0x420> + 800075c: 2f50 cmp r7, #80 ; 0x50 + 800075e: d24d bcs.n 80007fc <cmox_sha1_transform+0x3fc> + 8000760: eb04 0c87 add.w ip, r4, r7, lsl #2 + 8000764: f1c7 0754 rsb r7, r7, #84 ; 0x54 + 8000768: 4c5e ldr r4, [pc, #376] ; (80008e4 <cmox_sha1_transform+0x4e4>) + 800076a: fba7 a504 umull sl, r5, r7, r4 + 800076e: 4604 mov r4, r0 + 8000770: 4f5d ldr r7, [pc, #372] ; (80008e8 <cmox_sha1_transform+0x4e8>) + 8000772: 08a8 lsrs r0, r5, #2 + 8000774: ea8e 0a01 eor.w sl, lr, r1 + 8000778: ea82 0a0a eor.w sl, r2, sl + 800077c: f85c bb04 ldr.w fp, [ip], #4 + 8000780: eb0a 65f3 add.w r5, sl, r3, ror #27 + 8000784: 445d add r5, fp + 8000786: 197d adds r5, r7, r5 + 8000788: 192c adds r4, r5, r4 + 800078a: ea83 0ab1 eor.w sl, r3, r1, ror #2 + 800078e: ea4f 65f4 mov.w r5, r4, ror #27 + 8000792: ea8e 0a0a eor.w sl, lr, sl + 8000796: 4455 add r5, sl + 8000798: f85c ab04 ldr.w sl, [ip], #4 + 800079c: f85c bb04 ldr.w fp, [ip], #4 + 80007a0: 4455 add r5, sl + 80007a2: 197d adds r5, r7, r5 + 80007a4: 18aa adds r2, r5, r2 + 80007a6: ea84 0ab3 eor.w sl, r4, r3, ror #2 + 80007aa: ea4f 65f2 mov.w r5, r2, ror #27 + 80007ae: ea8a 0ab1 eor.w sl, sl, r1, ror #2 + 80007b2: 4455 add r5, sl + 80007b4: 445d add r5, fp + 80007b6: ea4f 04b4 mov.w r4, r4, ror #2 + 80007ba: 197d adds r5, r7, r5 + 80007bc: ea84 0a02 eor.w sl, r4, r2 + 80007c0: 44ae add lr, r5 + 80007c2: ea8a 0ab3 eor.w sl, sl, r3, ror #2 + 80007c6: eb0a 65fe add.w r5, sl, lr, ror #27 + 80007ca: f85c ab04 ldr.w sl, [ip], #4 + 80007ce: 4455 add r5, sl + 80007d0: ea4f 02b2 mov.w r2, r2, ror #2 + 80007d4: 197d adds r5, r7, r5 + 80007d6: ea82 0a0e eor.w sl, r2, lr + 80007da: eb15 01b1 adds.w r1, r5, r1, ror #2 + 80007de: ea84 0a0a eor.w sl, r4, sl + 80007e2: f85c bb04 ldr.w fp, [ip], #4 + 80007e6: eb0a 65f1 add.w r5, sl, r1, ror #27 + 80007ea: 445d add r5, fp + 80007ec: 197d adds r5, r7, r5 + 80007ee: eb15 03b3 adds.w r3, r5, r3, ror #2 + 80007f2: 1e40 subs r0, r0, #1 + 80007f4: ea4f 0ebe mov.w lr, lr, ror #2 + 80007f8: d1bc bne.n 8000774 <cmox_sha1_transform+0x374> + 80007fa: 4620 mov r0, r4 + 80007fc: 6df4 ldr r4, [r6, #92] ; 0x5c + 80007fe: 191b adds r3, r3, r4 + 8000800: 65f3 str r3, [r6, #92] ; 0x5c + 8000802: 6e33 ldr r3, [r6, #96] ; 0x60 + 8000804: 18c9 adds r1, r1, r3 + 8000806: 6631 str r1, [r6, #96] ; 0x60 + 8000808: 6e71 ldr r1, [r6, #100] ; 0x64 + 800080a: 4471 add r1, lr + 800080c: 6671 str r1, [r6, #100] ; 0x64 + 800080e: 6eb3 ldr r3, [r6, #104] ; 0x68 + 8000810: 18d2 adds r2, r2, r3 + 8000812: 66b2 str r2, [r6, #104] ; 0x68 + 8000814: 6ef1 ldr r1, [r6, #108] ; 0x6c + 8000816: 1840 adds r0, r0, r1 + 8000818: 66f0 str r0, [r6, #108] ; 0x6c + 800081a: b050 add sp, #320 ; 0x140 + 800081c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8000820: ea4e 0b01 orr.w fp, lr, r1 + 8000824: ea0e 0a01 and.w sl, lr, r1 + 8000828: ea0b 0b02 and.w fp, fp, r2 + 800082c: ea4b 0a0a orr.w sl, fp, sl + 8000830: eb0a 65f3 add.w r5, sl, r3, ror #27 + 8000834: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 8000838: f8df c0b0 ldr.w ip, [pc, #176] ; 80008ec <cmox_sha1_transform+0x4ec> + 800083c: 4455 add r5, sl + 800083e: ea43 0bb1 orr.w fp, r3, r1, ror #2 + 8000842: 4465 add r5, ip + 8000844: ea03 0ab1 and.w sl, r3, r1, ror #2 + 8000848: ea0b 0b0e and.w fp, fp, lr + 800084c: 1828 adds r0, r5, r0 + 800084e: ea4b 0a0a orr.w sl, fp, sl + 8000852: 1c7f adds r7, r7, #1 + 8000854: eb0a 65f0 add.w r5, sl, r0, ror #27 + 8000858: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 800085c: 4455 add r5, sl + 800085e: ea40 0bb3 orr.w fp, r0, r3, ror #2 + 8000862: 4465 add r5, ip + 8000864: ea00 0ab3 and.w sl, r0, r3, ror #2 + 8000868: ea0b 0bb1 and.w fp, fp, r1, ror #2 + 800086c: 18aa adds r2, r5, r2 + 800086e: ea4b 0a0a orr.w sl, fp, sl + 8000872: 1c7f adds r7, r7, #1 + 8000874: eb0a 65f2 add.w r5, sl, r2, ror #27 + 8000878: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 800087c: 4455 add r5, sl + 800087e: ea4f 00b0 mov.w r0, r0, ror #2 + 8000882: ea40 0b02 orr.w fp, r0, r2 + 8000886: 4465 add r5, ip + 8000888: ea00 0a02 and.w sl, r0, r2 + 800088c: ea0b 0bb3 and.w fp, fp, r3, ror #2 + 8000890: 44ae add lr, r5 + 8000892: ea4b 0a0a orr.w sl, fp, sl + 8000896: 1c7f adds r7, r7, #1 + 8000898: eb0a 65fe add.w r5, sl, lr, ror #27 + 800089c: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 80008a0: 4455 add r5, sl + 80008a2: ea4f 02b2 mov.w r2, r2, ror #2 + 80008a6: ea42 0b0e orr.w fp, r2, lr + 80008aa: 4465 add r5, ip + 80008ac: ea02 0a0e and.w sl, r2, lr + 80008b0: ea0b 0b00 and.w fp, fp, r0 + 80008b4: eb15 01b1 adds.w r1, r5, r1, ror #2 + 80008b8: ea4b 0a0a orr.w sl, fp, sl + 80008bc: 1c7f adds r7, r7, #1 + 80008be: eb0a 65f1 add.w r5, sl, r1, ror #27 + 80008c2: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 80008c6: 4455 add r5, sl + 80008c8: 1c7f adds r7, r7, #1 + 80008ca: 4465 add r5, ip + 80008cc: 2f3c cmp r7, #60 ; 0x3c + 80008ce: eb05 03b3 add.w r3, r5, r3, ror #2 + 80008d2: ea4f 0ebe mov.w lr, lr, ror #2 + 80008d6: d3a3 bcc.n 8000820 <cmox_sha1_transform+0x420> + 80008d8: e740 b.n 800075c <cmox_sha1_transform+0x35c> + 80008da: bf00 nop + 80008dc: 5a827999 .word 0x5a827999 + 80008e0: 6ed9eba1 .word 0x6ed9eba1 + 80008e4: cccccccd .word 0xcccccccd + 80008e8: ca62c1d6 .word 0xca62c1d6 + 80008ec: 8f1bbcdc .word 0x8f1bbcdc + +080008f0 <cmox_sha1_cleanup>: + 80008f0: b500 push {lr} + 80008f2: b081 sub sp, #4 + 80008f4: 6801 ldr r1, [r0, #0] + 80008f6: 4a07 ldr r2, [pc, #28] ; (8000914 <cmox_sha1_cleanup+0x24>) + 80008f8: 4291 cmp r1, r2 + 80008fa: d100 bne.n 80008fe <cmox_sha1_cleanup+0xe> + 80008fc: b910 cbnz r0, 8000904 <cmox_sha1_cleanup+0x14> + 80008fe: 4806 ldr r0, [pc, #24] ; (8000918 <cmox_sha1_cleanup+0x28>) + 8000900: b001 add sp, #4 + 8000902: bd00 pop {pc} + 8000904: 217c movs r1, #124 ; 0x7c + 8000906: f013 fcd9 bl 80142bc <__aeabi_memclr> + 800090a: f44f 3000 mov.w r0, #131072 ; 0x20000 + 800090e: b001 add sp, #4 + 8000910: bd00 pop {pc} + 8000912: bf00 nop + 8000914: 080009fc .word 0x080009fc + 8000918: 00020003 .word 0x00020003 + +0800091c <cmox_sha1_init>: + 800091c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8000920: 4a0b ldr r2, [pc, #44] ; (8000950 <cmox_sha1_init+0x34>) + 8000922: e892 51f8 ldmia.w r2, {r3, r4, r5, r6, r7, r8, ip, lr} + 8000926: b088 sub sp, #32 + 8000928: 4669 mov r1, sp + 800092a: e881 51f8 stmia.w r1, {r3, r4, r5, r6, r7, r8, ip, lr} + 800092e: 6802 ldr r2, [r0, #0] + 8000930: 4b08 ldr r3, [pc, #32] ; (8000954 <cmox_sha1_init+0x38>) + 8000932: 429a cmp r2, r3 + 8000934: d100 bne.n 8000938 <cmox_sha1_init+0x1c> + 8000936: b918 cbnz r0, 8000940 <cmox_sha1_init+0x24> + 8000938: 4807 ldr r0, [pc, #28] ; (8000958 <cmox_sha1_init+0x3c>) + 800093a: b008 add sp, #32 + 800093c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8000940: 2214 movs r2, #20 + 8000942: 3008 adds r0, #8 + 8000944: f000 fb4f bl 8000fe6 <cmox_md_init> + 8000948: b008 add sp, #32 + 800094a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800094e: bf00 nop + 8000950: 080009dc .word 0x080009dc + 8000954: 080009fc .word 0x080009fc + 8000958: 00020003 .word 0x00020003 + +0800095c <cmox_sha1_setTagLen>: + 800095c: 2915 cmp r1, #21 + 800095e: d204 bcs.n 800096a <cmox_sha1_setTagLen+0xe> + 8000960: 6802 ldr r2, [r0, #0] + 8000962: 4b04 ldr r3, [pc, #16] ; (8000974 <cmox_sha1_setTagLen+0x18>) + 8000964: 429a cmp r2, r3 + 8000966: d100 bne.n 800096a <cmox_sha1_setTagLen+0xe> + 8000968: b908 cbnz r0, 800096e <cmox_sha1_setTagLen+0x12> + 800096a: 4803 ldr r0, [pc, #12] ; (8000978 <cmox_sha1_setTagLen+0x1c>) + 800096c: 4770 bx lr + 800096e: 3008 adds r0, #8 + 8000970: f000 bb48 b.w 8001004 <cmox_md_setTagSize> + 8000974: 080009fc .word 0x080009fc + 8000978: 00020003 .word 0x00020003 + +0800097c <cmox_sha1_append>: + 800097c: b410 push {r4} + 800097e: b081 sub sp, #4 + 8000980: 4613 mov r3, r2 + 8000982: 6802 ldr r2, [r0, #0] + 8000984: 4c07 ldr r4, [pc, #28] ; (80009a4 <cmox_sha1_append+0x28>) + 8000986: 42a2 cmp r2, r4 + 8000988: d100 bne.n 800098c <cmox_sha1_append+0x10> + 800098a: b918 cbnz r0, 8000994 <cmox_sha1_append+0x18> + 800098c: b001 add sp, #4 + 800098e: bc10 pop {r4} + 8000990: 4805 ldr r0, [pc, #20] ; (80009a8 <cmox_sha1_append+0x2c>) + 8000992: 4770 bx lr + 8000994: b001 add sp, #4 + 8000996: f100 0224 add.w r2, r0, #36 ; 0x24 + 800099a: bc10 pop {r4} + 800099c: 3008 adds r0, #8 + 800099e: f000 bb35 b.w 800100c <cmox_md_append> + 80009a2: bf00 nop + 80009a4: 080009fc .word 0x080009fc + 80009a8: 00020003 .word 0x00020003 + +080009ac <cmox_sha1_generateTag>: + 80009ac: b410 push {r4} + 80009ae: b081 sub sp, #4 + 80009b0: 4613 mov r3, r2 + 80009b2: 6802 ldr r2, [r0, #0] + 80009b4: 4c07 ldr r4, [pc, #28] ; (80009d4 <cmox_sha1_generateTag+0x28>) + 80009b6: 42a2 cmp r2, r4 + 80009b8: d100 bne.n 80009bc <cmox_sha1_generateTag+0x10> + 80009ba: b918 cbnz r0, 80009c4 <cmox_sha1_generateTag+0x18> + 80009bc: b001 add sp, #4 + 80009be: bc10 pop {r4} + 80009c0: 4805 ldr r0, [pc, #20] ; (80009d8 <cmox_sha1_generateTag+0x2c>) + 80009c2: 4770 bx lr + 80009c4: 460a mov r2, r1 + 80009c6: b001 add sp, #4 + 80009c8: f100 0124 add.w r1, r0, #36 ; 0x24 + 80009cc: bc10 pop {r4} + 80009ce: 3008 adds r0, #8 + 80009d0: f000 bb70 b.w 80010b4 <cmox_md_generateTag> + 80009d4: 080009fc .word 0x080009fc + 80009d8: 00020003 .word 0x00020003 + 80009dc: 67452301 .word 0x67452301 + 80009e0: efcdab89 .word 0xefcdab89 + 80009e4: 98badcfe .word 0x98badcfe + 80009e8: 10325476 .word 0x10325476 + 80009ec: c3d2e1f0 .word 0xc3d2e1f0 + ... + +080009fc <CMOX_SHA1_VTABLE>: + 80009fc: 080008f1 0800091d 0800095d 0800097d ........]...}... + 8000a0c: 080009ad .... + +08000a10 <CMOX_SHA1_MD_VTABLE_ST>: + 8000a10: 08000401 08000f79 08000fc5 08000f81 ....y........... + +08000a20 <cmox_sha1_compute>: + 8000a20: b5f0 push {r4, r5, r6, r7, lr} + 8000a22: b0a3 sub sp, #140 ; 0x8c + 8000a24: 4604 mov r4, r0 + 8000a26: 480b ldr r0, [pc, #44] ; (8000a54 <cmox_sha1_compute+0x34>) + 8000a28: 9002 str r0, [sp, #8] + 8000a2a: 460d mov r5, r1 + 8000a2c: 4616 mov r6, r2 + 8000a2e: 461f mov r7, r3 + 8000a30: 4b09 ldr r3, [pc, #36] ; (8000a58 <cmox_sha1_compute+0x38>) + 8000a32: 2208 movs r2, #8 + 8000a34: 2140 movs r1, #64 ; 0x40 + 8000a36: a804 add r0, sp, #16 + 8000a38: f000 fad1 bl 8000fde <cmox_md_construct> + 8000a3c: 9828 ldr r0, [sp, #160] ; 0xa0 + 8000a3e: 9001 str r0, [sp, #4] + 8000a40: 9700 str r7, [sp, #0] + 8000a42: 4633 mov r3, r6 + 8000a44: 462a mov r2, r5 + 8000a46: 4621 mov r1, r4 + 8000a48: a802 add r0, sp, #8 + 8000a4a: f000 f81b bl 8000a84 <cmox_hash_common_compute> + 8000a4e: b023 add sp, #140 ; 0x8c + 8000a50: bdf0 pop {r4, r5, r6, r7, pc} + 8000a52: bf00 nop + 8000a54: 080009fc .word 0x080009fc + 8000a58: 08000a10 .word 0x08000a10 + +08000a5c <cmox_sha1_construct>: + 8000a5c: b510 push {r4, lr} + 8000a5e: 0004 movs r4, r0 + 8000a60: bf08 it eq + 8000a62: 2400 moveq r4, #0 + 8000a64: d008 beq.n 8000a78 <cmox_sha1_construct+0x1c> + 8000a66: 4805 ldr r0, [pc, #20] ; (8000a7c <cmox_sha1_construct+0x20>) + 8000a68: 4b05 ldr r3, [pc, #20] ; (8000a80 <cmox_sha1_construct+0x24>) + 8000a6a: 6020 str r0, [r4, #0] + 8000a6c: 2208 movs r2, #8 + 8000a6e: 2140 movs r1, #64 ; 0x40 + 8000a70: f104 0008 add.w r0, r4, #8 + 8000a74: f000 fab3 bl 8000fde <cmox_md_construct> + 8000a78: 4620 mov r0, r4 + 8000a7a: bd10 pop {r4, pc} + 8000a7c: 080009fc .word 0x080009fc + 8000a80: 08000a10 .word 0x08000a10 + +08000a84 <cmox_hash_common_compute>: + 8000a84: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8000a88: 4604 mov r4, r0 + 8000a8a: 460e mov r6, r1 + 8000a8c: 6821 ldr r1, [r4, #0] + 8000a8e: 4617 mov r7, r2 + 8000a90: 684a ldr r2, [r1, #4] + 8000a92: 461d mov r5, r3 + 8000a94: 4790 blx r2 + 8000a96: 4680 mov r8, r0 + 8000a98: f5b8 3f00 cmp.w r8, #131072 ; 0x20000 + 8000a9c: d119 bne.n 8000ad2 <cmox_hash_common_compute+0x4e> + 8000a9e: 6822 ldr r2, [r4, #0] + 8000aa0: 9906 ldr r1, [sp, #24] + 8000aa2: 6893 ldr r3, [r2, #8] + 8000aa4: 4620 mov r0, r4 + 8000aa6: 4798 blx r3 + 8000aa8: 4680 mov r8, r0 + 8000aaa: f5b8 3f00 cmp.w r8, #131072 ; 0x20000 + 8000aae: d110 bne.n 8000ad2 <cmox_hash_common_compute+0x4e> + 8000ab0: 6823 ldr r3, [r4, #0] + 8000ab2: 4631 mov r1, r6 + 8000ab4: 68de ldr r6, [r3, #12] + 8000ab6: 463a mov r2, r7 + 8000ab8: 4620 mov r0, r4 + 8000aba: 47b0 blx r6 + 8000abc: 4680 mov r8, r0 + 8000abe: f5b8 3f00 cmp.w r8, #131072 ; 0x20000 + 8000ac2: d106 bne.n 8000ad2 <cmox_hash_common_compute+0x4e> + 8000ac4: 6823 ldr r3, [r4, #0] + 8000ac6: 9a07 ldr r2, [sp, #28] + 8000ac8: 4629 mov r1, r5 + 8000aca: 691d ldr r5, [r3, #16] + 8000acc: 4620 mov r0, r4 + 8000ace: 47a8 blx r5 + 8000ad0: 4680 mov r8, r0 + 8000ad2: 6821 ldr r1, [r4, #0] + 8000ad4: 680a ldr r2, [r1, #0] + 8000ad6: 4620 mov r0, r4 + 8000ad8: 4790 blx r2 + 8000ada: 4640 mov r0, r8 + 8000adc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +08000ae0 <cmox_hmac_cleanup>: + 8000ae0: b510 push {r4, lr} + 8000ae2: f000 fa33 bl 8000f4c <cmox_hmac_getByMAC> + 8000ae6: f44f 3440 mov.w r4, #196608 ; 0x30000 + 8000aea: 2800 cmp r0, #0 + 8000aec: bf0e itee eq + 8000aee: 4c03 ldreq r4, [pc, #12] ; (8000afc <cmox_hmac_cleanup+0x1c>) + 8000af0: f44f 71c0 movne.w r1, #384 ; 0x180 + 8000af4: f013 fbe2 blne 80142bc <__aeabi_memclr> + 8000af8: 4620 mov r0, r4 + 8000afa: bd10 pop {r4, pc} + 8000afc: 00030002 .word 0x00030002 + +08000b00 <cmox_hmac_init>: + 8000b00: b510 push {r4, lr} + 8000b02: 4604 mov r4, r0 + 8000b04: f000 fa22 bl 8000f4c <cmox_hmac_getByMAC> + 8000b08: b908 cbnz r0, 8000b0e <cmox_hmac_init+0xe> + 8000b0a: 4805 ldr r0, [pc, #20] ; (8000b20 <cmox_hmac_init+0x20>) + 8000b0c: bd10 pop {r4, pc} + 8000b0e: 2100 movs r1, #0 + 8000b10: 60a1 str r1, [r4, #8] + 8000b12: f8d0 217c ldr.w r2, [r0, #380] ; 0x17c + 8000b16: 6811 ldr r1, [r2, #0] + 8000b18: 4788 blx r1 + 8000b1a: f44f 3040 mov.w r0, #196608 ; 0x30000 + 8000b1e: bd10 pop {r4, pc} + 8000b20: 00030002 .word 0x00030002 + +08000b24 <cmox_hmac_setTagLen>: + 8000b24: b570 push {r4, r5, r6, lr} + 8000b26: 4604 mov r4, r0 + 8000b28: 460d mov r5, r1 + 8000b2a: f000 fa0f bl 8000f4c <cmox_hmac_getByMAC> + 8000b2e: 4e06 ldr r6, [pc, #24] ; (8000b48 <cmox_hmac_setTagLen+0x24>) + 8000b30: b140 cbz r0, 8000b44 <cmox_hmac_setTagLen+0x20> + 8000b32: f8d0 017c ldr.w r0, [r0, #380] ; 0x17c + 8000b36: 6841 ldr r1, [r0, #4] + 8000b38: 4788 blx r1 + 8000b3a: 42a8 cmp r0, r5 + 8000b3c: bf24 itt cs + 8000b3e: 6065 strcs r5, [r4, #4] + 8000b40: f44f 3640 movcs.w r6, #196608 ; 0x30000 + 8000b44: 4630 mov r0, r6 + 8000b46: bd70 pop {r4, r5, r6, pc} + 8000b48: 00030002 .word 0x00030002 + +08000b4c <cmox_hmac_setKey>: + 8000b4c: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 8000b50: 0015 movs r5, r2 + 8000b52: 460c mov r4, r1 + 8000b54: d000 beq.n 8000b58 <cmox_hmac_setKey+0xc> + 8000b56: b12c cbz r4, 8000b64 <cmox_hmac_setKey+0x18> + 8000b58: 4606 mov r6, r0 + 8000b5a: f000 f9f7 bl 8000f4c <cmox_hmac_getByMAC> + 8000b5e: ea5f 0800 movs.w r8, r0 + 8000b62: d101 bne.n 8000b68 <cmox_hmac_setKey+0x1c> + 8000b64: 4864 ldr r0, [pc, #400] ; (8000cf8 <cmox_hmac_setKey+0x1ac>) + 8000b66: e0c3 b.n 8000cf0 <cmox_hmac_setKey+0x1a4> + 8000b68: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000b6c: 6801 ldr r1, [r0, #0] + 8000b6e: 684a ldr r2, [r1, #4] + 8000b70: 4790 blx r2 + 8000b72: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000b76: d117 bne.n 8000ba8 <cmox_hmac_setKey+0x5c> + 8000b78: f8d8 117c ldr.w r1, [r8, #380] ; 0x17c + 8000b7c: 688a ldr r2, [r1, #8] + 8000b7e: 4640 mov r0, r8 + 8000b80: 4790 blx r2 + 8000b82: 4681 mov r9, r0 + 8000b84: f1b9 0f81 cmp.w r9, #129 ; 0x81 + 8000b88: f080 809e bcs.w 8000cc8 <cmox_hmac_setKey+0x17c> + 8000b8c: 45a9 cmp r9, r5 + 8000b8e: f108 0afc add.w sl, r8, #252 ; 0xfc + 8000b92: d217 bcs.n 8000bc4 <cmox_hmac_setKey+0x78> + 8000b94: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000b98: 6803 ldr r3, [r0, #0] + 8000b9a: f8d3 c00c ldr.w ip, [r3, #12] + 8000b9e: 462a mov r2, r5 + 8000ba0: 4621 mov r1, r4 + 8000ba2: 47e0 blx ip + 8000ba4: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ba8: f040 808e bne.w 8000cc8 <cmox_hmac_setKey+0x17c> + 8000bac: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000bb0: 6803 ldr r3, [r0, #0] + 8000bb2: f8d3 c010 ldr.w ip, [r3, #16] + 8000bb6: 466a mov r2, sp + 8000bb8: 4651 mov r1, sl + 8000bba: 47e0 blx ip + 8000bbc: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000bc0: d176 bne.n 8000cb0 <cmox_hmac_setKey+0x164> + 8000bc2: e00a b.n 8000bda <cmox_hmac_setKey+0x8e> + 8000bc4: 2000 movs r0, #0 + 8000bc6: e004 b.n 8000bd2 <cmox_hmac_setKey+0x86> + 8000bc8: 5c21 ldrb r1, [r4, r0] + 8000bca: f80a 1000 strb.w r1, [sl, r0] + 8000bce: 9800 ldr r0, [sp, #0] + 8000bd0: 1c40 adds r0, r0, #1 + 8000bd2: 9000 str r0, [sp, #0] + 8000bd4: 9800 ldr r0, [sp, #0] + 8000bd6: 42a8 cmp r0, r5 + 8000bd8: d3f6 bcc.n 8000bc8 <cmox_hmac_setKey+0x7c> + 8000bda: f04f 0c00 mov.w ip, #0 + 8000bde: 4947 ldr r1, [pc, #284] ; (8000cfc <cmox_hmac_setKey+0x1b0>) + 8000be0: 4a47 ldr r2, [pc, #284] ; (8000d00 <cmox_hmac_setKey+0x1b4>) + 8000be2: 4b48 ldr r3, [pc, #288] ; (8000d04 <cmox_hmac_setKey+0x1b8>) + 8000be4: ac01 add r4, sp, #4 + 8000be6: 9800 ldr r0, [sp, #0] + 8000be8: 4584 cmp ip, r0 + 8000bea: d258 bcs.n 8000c9e <cmox_hmac_setKey+0x152> + 8000bec: e9d3 7000 ldrd r7, r0, [r3] + 8000bf0: ad01 add r5, sp, #4 + 8000bf2: e9c5 7000 strd r7, r0, [r5] + 8000bf6: 7810 ldrb r0, [r2, #0] + 8000bf8: 2800 cmp r0, #0 + 8000bfa: bf1a itte ne + 8000bfc: 2004 movne r0, #4 + 8000bfe: 4686 movne lr, r0 + 8000c00: f04f 0e00 moveq.w lr, #0 + 8000c04: 5808 ldr r0, [r1, r0] + 8000c06: f854 500e ldr.w r5, [r4, lr] + 8000c0a: 4428 add r0, r5 + 8000c0c: 4d3e ldr r5, [pc, #248] ; (8000d08 <cmox_hmac_setKey+0x1bc>) + 8000c0e: 6005 str r5, [r0, #0] + 8000c10: 2701 movs r7, #1 + 8000c12: f8d0 e000 ldr.w lr, [r0] + 8000c16: 6087 str r7, [r0, #8] + 8000c18: 9d01 ldr r5, [sp, #4] + 8000c1a: 684f ldr r7, [r1, #4] + 8000c1c: f81a 000c ldrb.w r0, [sl, ip] + 8000c20: 407d eors r5, r7 + 8000c22: ea8e 0505 eor.w r5, lr, r5 + 8000c26: f085 0e04 eor.w lr, r5, #4 + 8000c2a: 6865 ldr r5, [r4, #4] + 8000c2c: 680f ldr r7, [r1, #0] + 8000c2e: 407d eors r5, r7 + 8000c30: f085 05fc eor.w r5, r5, #252 ; 0xfc + 8000c34: 4475 add r5, lr + 8000c36: f085 05a3 eor.w r5, r5, #163 ; 0xa3 + 8000c3a: 4068 eors r0, r5 + 8000c3c: f80a 000c strb.w r0, [sl, ip] + 8000c40: f10c 0c01 add.w ip, ip, #1 + 8000c44: e7cf b.n 8000be6 <cmox_hmac_setKey+0x9a> + 8000c46: e9d3 4500 ldrd r4, r5, [r3] + 8000c4a: a801 add r0, sp, #4 + 8000c4c: e9c0 4500 strd r4, r5, [r0] + 8000c50: 7810 ldrb r0, [r2, #0] + 8000c52: 4d2e ldr r5, [pc, #184] ; (8000d0c <cmox_hmac_setKey+0x1c0>) + 8000c54: 2800 cmp r0, #0 + 8000c56: bf14 ite ne + 8000c58: f04f 0e04 movne.w lr, #4 + 8000c5c: f04f 0e00 moveq.w lr, #0 + 8000c60: a801 add r0, sp, #4 + 8000c62: 4674 mov r4, lr + 8000c64: f851 e00e ldr.w lr, [r1, lr] + 8000c68: 5904 ldr r4, [r0, r4] + 8000c6a: 44a6 add lr, r4 + 8000c6c: 2701 movs r7, #1 + 8000c6e: f8ce 5000 str.w r5, [lr] + 8000c72: f8de 4000 ldr.w r4, [lr] + 8000c76: f8ce 7008 str.w r7, [lr, #8] + 8000c7a: 684d ldr r5, [r1, #4] + 8000c7c: 9f01 ldr r7, [sp, #4] + 8000c7e: 6840 ldr r0, [r0, #4] + 8000c80: 407d eors r5, r7 + 8000c82: 406c eors r4, r5 + 8000c84: 680d ldr r5, [r1, #0] + 8000c86: 4068 eors r0, r5 + 8000c88: f084 0404 eor.w r4, r4, #4 + 8000c8c: f080 00fc eor.w r0, r0, #252 ; 0xfc + 8000c90: 1904 adds r4, r0, r4 + 8000c92: f084 0457 eor.w r4, r4, #87 ; 0x57 + 8000c96: f80a 400c strb.w r4, [sl, ip] + 8000c9a: f10c 0c01 add.w ip, ip, #1 + 8000c9e: 45cc cmp ip, r9 + 8000ca0: d3d1 bcc.n 8000c46 <cmox_hmac_setKey+0xfa> + 8000ca2: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000ca6: 6801 ldr r1, [r0, #0] + 8000ca8: 684a ldr r2, [r1, #4] + 8000caa: 4790 blx r2 + 8000cac: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000cb0: d10a bne.n 8000cc8 <cmox_hmac_setKey+0x17c> + 8000cb2: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000cb6: 6803 ldr r3, [r0, #0] + 8000cb8: f8d3 800c ldr.w r8, [r3, #12] + 8000cbc: 464a mov r2, r9 + 8000cbe: 4651 mov r1, sl + 8000cc0: 47c0 blx r8 + 8000cc2: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000cc6: d001 beq.n 8000ccc <cmox_hmac_setKey+0x180> + 8000cc8: 4811 ldr r0, [pc, #68] ; (8000d10 <cmox_hmac_setKey+0x1c4>) + 8000cca: e011 b.n 8000cf0 <cmox_hmac_setKey+0x1a4> + 8000ccc: 2000 movs r0, #0 + 8000cce: e006 b.n 8000cde <cmox_hmac_setKey+0x192> + 8000cd0: f85a 1020 ldr.w r1, [sl, r0, lsl #2] + 8000cd4: f081 316a eor.w r1, r1, #1785358954 ; 0x6a6a6a6a + 8000cd8: f84a 1020 str.w r1, [sl, r0, lsl #2] + 8000cdc: 1c40 adds r0, r0, #1 + 8000cde: ebb0 0f99 cmp.w r0, r9, lsr #2 + 8000ce2: d3f5 bcc.n 8000cd0 <cmox_hmac_setKey+0x184> + 8000ce4: 68b0 ldr r0, [r6, #8] + 8000ce6: f040 0001 orr.w r0, r0, #1 + 8000cea: 60b0 str r0, [r6, #8] + 8000cec: f44f 3040 mov.w r0, #196608 ; 0x30000 + 8000cf0: b004 add sp, #16 + 8000cf2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000cf6: bf00 nop + 8000cf8: 00030002 .word 0x00030002 + 8000cfc: 08014454 .word 0x08014454 + 8000d00: 200008e8 .word 0x200008e8 + 8000d04: 08000f24 .word 0x08000f24 + 8000d08: d74ebead .word 0xd74ebead + 8000d0c: a175be0d .word 0xa175be0d + 8000d10: 00030001 .word 0x00030001 + +08000d14 <cmox_hmac_append>: + 8000d14: b538 push {r3, r4, r5, lr} + 8000d16: 460c mov r4, r1 + 8000d18: 7a01 ldrb r1, [r0, #8] + 8000d1a: 4615 mov r5, r2 + 8000d1c: 07ca lsls r2, r1, #31 + 8000d1e: d502 bpl.n 8000d26 <cmox_hmac_append+0x12> + 8000d20: f000 f914 bl 8000f4c <cmox_hmac_getByMAC> + 8000d24: b908 cbnz r0, 8000d2a <cmox_hmac_append+0x16> + 8000d26: 4808 ldr r0, [pc, #32] ; (8000d48 <cmox_hmac_append+0x34>) + 8000d28: bd32 pop {r1, r4, r5, pc} + 8000d2a: f8d0 00f8 ldr.w r0, [r0, #248] ; 0xf8 + 8000d2e: 6803 ldr r3, [r0, #0] + 8000d30: 4621 mov r1, r4 + 8000d32: 68dc ldr r4, [r3, #12] + 8000d34: 462a mov r2, r5 + 8000d36: 47a0 blx r4 + 8000d38: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000d3c: d001 beq.n 8000d42 <cmox_hmac_append+0x2e> + 8000d3e: 4803 ldr r0, [pc, #12] ; (8000d4c <cmox_hmac_append+0x38>) + 8000d40: bd32 pop {r1, r4, r5, pc} + 8000d42: f44f 3040 mov.w r0, #196608 ; 0x30000 + 8000d46: bd32 pop {r1, r4, r5, pc} + 8000d48: 00030002 .word 0x00030002 + 8000d4c: 00030001 .word 0x00030001 + +08000d50 <cmox_hmac_generateTag>: + 8000d50: e92d 41f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + 8000d54: b091 sub sp, #68 ; 0x44 + 8000d56: 4605 mov r5, r0 + 8000d58: 460e mov r6, r1 + 8000d5a: 4617 mov r7, r2 + 8000d5c: 2140 movs r1, #64 ; 0x40 + 8000d5e: a801 add r0, sp, #4 + 8000d60: f013 faac bl 80142bc <__aeabi_memclr> + 8000d64: 7a29 ldrb r1, [r5, #8] + 8000d66: 07c8 lsls r0, r1, #31 + 8000d68: d504 bpl.n 8000d74 <cmox_hmac_generateTag+0x24> + 8000d6a: 4628 mov r0, r5 + 8000d6c: f000 f8ee bl 8000f4c <cmox_hmac_getByMAC> + 8000d70: 0004 movs r4, r0 + 8000d72: d102 bne.n 8000d7a <cmox_hmac_generateTag+0x2a> + 8000d74: f8df 80a4 ldr.w r8, [pc, #164] ; 8000e1c <cmox_hmac_generateTag+0xcc> + 8000d78: e04b b.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000d7a: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000d7e: f8df 80a0 ldr.w r8, [pc, #160] ; 8000e20 <cmox_hmac_generateTag+0xd0> + 8000d82: 6803 ldr r3, [r0, #0] + 8000d84: f8d3 c010 ldr.w ip, [r3, #16] + 8000d88: 466a mov r2, sp + 8000d8a: a901 add r1, sp, #4 + 8000d8c: 47e0 blx ip + 8000d8e: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000d92: d13e bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000d94: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000d98: 6801 ldr r1, [r0, #0] + 8000d9a: 684a ldr r2, [r1, #4] + 8000d9c: 4790 blx r2 + 8000d9e: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000da2: d136 bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000da4: f8d4 117c ldr.w r1, [r4, #380] ; 0x17c + 8000da8: 688a ldr r2, [r1, #8] + 8000daa: 4620 mov r0, r4 + 8000dac: 4790 blx r2 + 8000dae: f8d4 30f8 ldr.w r3, [r4, #248] ; 0xf8 + 8000db2: 4602 mov r2, r0 + 8000db4: 4618 mov r0, r3 + 8000db6: 681b ldr r3, [r3, #0] + 8000db8: f8d3 c00c ldr.w ip, [r3, #12] + 8000dbc: f104 01fc add.w r1, r4, #252 ; 0xfc + 8000dc0: 47e0 blx ip + 8000dc2: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000dc6: d124 bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000dc8: f8d4 017c ldr.w r0, [r4, #380] ; 0x17c + 8000dcc: 6841 ldr r1, [r0, #4] + 8000dce: 4788 blx r1 + 8000dd0: f8d4 30f8 ldr.w r3, [r4, #248] ; 0xf8 + 8000dd4: 4602 mov r2, r0 + 8000dd6: 4618 mov r0, r3 + 8000dd8: 681b ldr r3, [r3, #0] + 8000dda: f8d3 c00c ldr.w ip, [r3, #12] + 8000dde: a901 add r1, sp, #4 + 8000de0: 47e0 blx ip + 8000de2: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000de6: d114 bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000de8: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000dec: 6802 ldr r2, [r0, #0] + 8000dee: 6869 ldr r1, [r5, #4] + 8000df0: 6893 ldr r3, [r2, #8] + 8000df2: 4798 blx r3 + 8000df4: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000df8: d10b bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000dfa: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000dfe: 6803 ldr r3, [r0, #0] + 8000e00: 691c ldr r4, [r3, #16] + 8000e02: 463a mov r2, r7 + 8000e04: 4631 mov r1, r6 + 8000e06: 47a0 blx r4 + 8000e08: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e0c: bf08 it eq + 8000e0e: f44f 3840 moveq.w r8, #196608 ; 0x30000 + 8000e12: 4640 mov r0, r8 + 8000e14: b012 add sp, #72 ; 0x48 + 8000e16: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8000e1a: bf00 nop + 8000e1c: 00030002 .word 0x00030002 + 8000e20: 00030001 .word 0x00030001 + +08000e24 <cmox_hmac_verifyTag>: + 8000e24: e92d 41f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + 8000e28: b0a5 sub sp, #148 ; 0x94 + 8000e2a: 4607 mov r7, r0 + 8000e2c: 4688 mov r8, r1 + 8000e2e: 4616 mov r6, r2 + 8000e30: 2140 movs r1, #64 ; 0x40 + 8000e32: a815 add r0, sp, #84 ; 0x54 + 8000e34: f013 fa42 bl 80142bc <__aeabi_memclr> + 8000e38: 2200 movs r2, #0 + 8000e3a: 9204 str r2, [sp, #16] + 8000e3c: 2140 movs r1, #64 ; 0x40 + 8000e3e: a805 add r0, sp, #20 + 8000e40: f013 fa3c bl 80142bc <__aeabi_memclr> + 8000e44: 7a38 ldrb r0, [r7, #8] + 8000e46: 07c1 lsls r1, r0, #31 + 8000e48: d55e bpl.n 8000f08 <cmox_hmac_verifyTag+0xe4> + 8000e4a: 4638 mov r0, r7 + 8000e4c: f000 f87e bl 8000f4c <cmox_hmac_getByMAC> + 8000e50: 0005 movs r5, r0 + 8000e52: d059 beq.n 8000f08 <cmox_hmac_verifyTag+0xe4> + 8000e54: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000e58: 4c2d ldr r4, [pc, #180] ; (8000f10 <cmox_hmac_verifyTag+0xec>) + 8000e5a: 6803 ldr r3, [r0, #0] + 8000e5c: f8d3 c010 ldr.w ip, [r3, #16] + 8000e60: 466a mov r2, sp + 8000e62: a905 add r1, sp, #20 + 8000e64: 47e0 blx ip + 8000e66: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e6a: d13c bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000e6c: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000e70: 6801 ldr r1, [r0, #0] + 8000e72: 684a ldr r2, [r1, #4] + 8000e74: 4790 blx r2 + 8000e76: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e7a: d134 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000e7c: f8d5 117c ldr.w r1, [r5, #380] ; 0x17c + 8000e80: 688a ldr r2, [r1, #8] + 8000e82: 4628 mov r0, r5 + 8000e84: 4790 blx r2 + 8000e86: f8d5 30f8 ldr.w r3, [r5, #248] ; 0xf8 + 8000e8a: 4602 mov r2, r0 + 8000e8c: 4618 mov r0, r3 + 8000e8e: 681b ldr r3, [r3, #0] + 8000e90: f8d3 c00c ldr.w ip, [r3, #12] + 8000e94: f105 01fc add.w r1, r5, #252 ; 0xfc + 8000e98: 47e0 blx ip + 8000e9a: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e9e: d122 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000ea0: f8d5 017c ldr.w r0, [r5, #380] ; 0x17c + 8000ea4: 6841 ldr r1, [r0, #4] + 8000ea6: 4788 blx r1 + 8000ea8: f8d5 30f8 ldr.w r3, [r5, #248] ; 0xf8 + 8000eac: 4602 mov r2, r0 + 8000eae: 4618 mov r0, r3 + 8000eb0: 681b ldr r3, [r3, #0] + 8000eb2: f8d3 c00c ldr.w ip, [r3, #12] + 8000eb6: a905 add r1, sp, #20 + 8000eb8: 47e0 blx ip + 8000eba: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ebe: d112 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000ec0: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000ec4: 6802 ldr r2, [r0, #0] + 8000ec6: 6879 ldr r1, [r7, #4] + 8000ec8: 6893 ldr r3, [r2, #8] + 8000eca: 4798 blx r3 + 8000ecc: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ed0: d109 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000ed2: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000ed6: 6803 ldr r3, [r0, #0] + 8000ed8: 691d ldr r5, [r3, #16] + 8000eda: aa04 add r2, sp, #16 + 8000edc: a915 add r1, sp, #84 ; 0x54 + 8000ede: 47a8 blx r5 + 8000ee0: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ee4: d001 beq.n 8000eea <cmox_hmac_verifyTag+0xc6> + 8000ee6: 4620 mov r0, r4 + 8000ee8: e00f b.n 8000f0a <cmox_hmac_verifyTag+0xe6> + 8000eea: 4b0a ldr r3, [pc, #40] ; (8000f14 <cmox_hmac_verifyTag+0xf0>) + 8000eec: 490a ldr r1, [pc, #40] ; (8000f18 <cmox_hmac_verifyTag+0xf4>) + 8000eee: 4a0b ldr r2, [pc, #44] ; (8000f1c <cmox_hmac_verifyTag+0xf8>) + 8000ef0: 9603 str r6, [sp, #12] + 8000ef2: 9102 str r1, [sp, #8] + 8000ef4: 9201 str r2, [sp, #4] + 8000ef6: 4640 mov r0, r8 + 8000ef8: 681c ldr r4, [r3, #0] + 8000efa: 9b04 ldr r3, [sp, #16] + 8000efc: 9400 str r4, [sp, #0] + 8000efe: aa15 add r2, sp, #84 ; 0x54 + 8000f00: 6879 ldr r1, [r7, #4] + 8000f02: f000 f9e5 bl 80012d0 <cmox_utils_robustCmp> + 8000f06: e000 b.n 8000f0a <cmox_hmac_verifyTag+0xe6> + 8000f08: 4805 ldr r0, [pc, #20] ; (8000f20 <cmox_hmac_verifyTag+0xfc>) + 8000f0a: b026 add sp, #152 ; 0x98 + 8000f0c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8000f10: 00030001 .word 0x00030001 + 8000f14: 0801445c .word 0x0801445c + 8000f18: 00036e93 .word 0x00036e93 + 8000f1c: 0003c726 .word 0x0003c726 + 8000f20: 00030002 .word 0x00030002 + 8000f24: 0101b004 .word 0x0101b004 + 8000f28: 45011700 .word 0x45011700 + +08000f2c <hmac_table>: + 8000f2c: 08000ae1 08000b01 08000b25 080003b5 ........%....... + 8000f3c: 08000b4d 08000d15 08000d51 08000e25 M.......Q...%... + +08000f4c <cmox_hmac_getByMAC>: + 8000f4c: 6801 ldr r1, [r0, #0] + 8000f4e: 4a02 ldr r2, [pc, #8] ; (8000f58 <cmox_hmac_getByMAC+0xc>) + 8000f50: 4291 cmp r1, r2 + 8000f52: bf18 it ne + 8000f54: 2000 movne r0, #0 + 8000f56: 4770 bx lr + 8000f58: 08000f2c .word 0x08000f2c + +08000f5c <cmox_hmac_construct>: + 8000f5c: b510 push {r4, lr} + 8000f5e: 0004 movs r4, r0 + 8000f60: bf08 it eq + 8000f62: 2400 moveq r4, #0 + 8000f64: d004 beq.n 8000f70 <cmox_hmac_construct+0x14> + 8000f66: 4803 ldr r0, [pc, #12] ; (8000f74 <cmox_hmac_construct+0x18>) + 8000f68: 6020 str r0, [r4, #0] + 8000f6a: 4620 mov r0, r4 + 8000f6c: 6809 ldr r1, [r1, #0] + 8000f6e: 4788 blx r1 + 8000f70: 4620 mov r0, r4 + 8000f72: bd10 pop {r4, pc} + 8000f74: 08000f2c .word 0x08000f2c + +08000f78 <cmox_md_updateState_small>: + 8000f78: 2220 movs r2, #32 + 8000f7a: 305c adds r0, #92 ; 0x5c + 8000f7c: f013 b99c b.w 80142b8 <__aeabi_memcpy> + +08000f80 <cmox_md_copyLastState_small>: + 8000f80: b5f0 push {r4, r5, r6, r7, lr} + 8000f82: 6884 ldr r4, [r0, #8] + 8000f84: 08a3 lsrs r3, r4, #2 + 8000f86: 2200 movs r2, #0 + 8000f88: f004 0403 and.w r4, r4, #3 + 8000f8c: e007 b.n 8000f9e <cmox_md_copyLastState_small+0x1e> + 8000f8e: f100 055c add.w r5, r0, #92 ; 0x5c + 8000f92: f855 6022 ldr.w r6, [r5, r2, lsl #2] + 8000f96: ba35 rev r5, r6 + 8000f98: f841 5022 str.w r5, [r1, r2, lsl #2] + 8000f9c: 1c52 adds r2, r2, #1 + 8000f9e: 429a cmp r2, r3 + 8000fa0: d3f5 bcc.n 8000f8e <cmox_md_copyLastState_small+0xe> + 8000fa2: 2200 movs r2, #0 + 8000fa4: e00b b.n 8000fbe <cmox_md_copyLastState_small+0x3e> + 8000fa6: f100 055c add.w r5, r0, #92 ; 0x5c + 8000faa: eb02 0783 add.w r7, r2, r3, lsl #2 + 8000fae: f855 6023 ldr.w r6, [r5, r3, lsl #2] + 8000fb2: 00d5 lsls r5, r2, #3 + 8000fb4: f1c5 0518 rsb r5, r5, #24 + 8000fb8: 40ee lsrs r6, r5 + 8000fba: 55ce strb r6, [r1, r7] + 8000fbc: 1c52 adds r2, r2, #1 + 8000fbe: 42a2 cmp r2, r4 + 8000fc0: d3f1 bcc.n 8000fa6 <cmox_md_copyLastState_small+0x26> + 8000fc2: bdf0 pop {r4, r5, r6, r7, pc} + +08000fc4 <cmox_md_padMsgLen_small>: + 8000fc4: b530 push {r4, r5, lr} + 8000fc6: 68c4 ldr r4, [r0, #12] + 8000fc8: 6903 ldr r3, [r0, #16] + 8000fca: 2200 movs r2, #0 + 8000fcc: 1ae3 subs r3, r4, r3 + 8000fce: 18d5 adds r5, r2, r3 + 8000fd0: 5c8c ldrb r4, [r1, r2] + 8000fd2: 4405 add r5, r0 + 8000fd4: 1c52 adds r2, r2, #1 + 8000fd6: 2a08 cmp r2, #8 + 8000fd8: 772c strb r4, [r5, #28] + 8000fda: d3f8 bcc.n 8000fce <cmox_md_padMsgLen_small+0xa> + 8000fdc: bd30 pop {r4, r5, pc} + +08000fde <cmox_md_construct>: + 8000fde: 6003 str r3, [r0, #0] + 8000fe0: 60c1 str r1, [r0, #12] + 8000fe2: 6102 str r2, [r0, #16] + 8000fe4: 4770 bx lr + +08000fe6 <cmox_md_init>: + 8000fe6: b538 push {r3, r4, r5, lr} + 8000fe8: 4604 mov r4, r0 + 8000fea: 4615 mov r5, r2 + 8000fec: 2200 movs r2, #0 + 8000fee: 6062 str r2, [r4, #4] + 8000ff0: 6823 ldr r3, [r4, #0] + 8000ff2: 685a ldr r2, [r3, #4] + 8000ff4: 4790 blx r2 + 8000ff6: 2000 movs r0, #0 + 8000ff8: 6160 str r0, [r4, #20] + 8000ffa: 61a0 str r0, [r4, #24] + 8000ffc: 60a5 str r5, [r4, #8] + 8000ffe: f44f 3000 mov.w r0, #131072 ; 0x20000 + 8001002: bd32 pop {r1, r4, r5, pc} + +08001004 <cmox_md_setTagSize>: + 8001004: 6081 str r1, [r0, #8] + 8001006: f44f 3000 mov.w r0, #131072 ; 0x20000 + 800100a: 4770 bx lr + +0800100c <cmox_md_append>: + 800100c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8001010: 4604 mov r4, r0 + 8001012: 7920 ldrb r0, [r4, #4] + 8001014: f8d4 800c ldr.w r8, [r4, #12] + 8001018: 0745 lsls r5, r0, #29 + 800101a: bf48 it mi + 800101c: 4824 ldrmi r0, [pc, #144] ; (80010b0 <cmox_md_append+0xa4>) + 800101e: d445 bmi.n 80010ac <cmox_md_append+0xa0> + 8001020: 6966 ldr r6, [r4, #20] + 8001022: 461d mov r5, r3 + 8001024: f1a8 0001 sub.w r0, r8, #1 + 8001028: ea00 03d6 and.w r3, r0, r6, lsr #3 + 800102c: eb06 06c5 add.w r6, r6, r5, lsl #3 + 8001030: ebb6 0fc5 cmp.w r6, r5, lsl #3 + 8001034: 6166 str r6, [r4, #20] + 8001036: d202 bcs.n 800103e <cmox_md_append+0x32> + 8001038: 69a6 ldr r6, [r4, #24] + 800103a: 1c76 adds r6, r6, #1 + 800103c: 61a6 str r6, [r4, #24] + 800103e: 4617 mov r7, r2 + 8001040: 69a6 ldr r6, [r4, #24] + 8001042: eb06 7655 add.w r6, r6, r5, lsr #29 + 8001046: 61a6 str r6, [r4, #24] + 8001048: 460e mov r6, r1 + 800104a: 18e9 adds r1, r5, r3 + 800104c: 4288 cmp r0, r1 + 800104e: d225 bcs.n 800109c <cmox_md_append+0x90> + 8001050: eba8 0903 sub.w r9, r8, r3 + 8001054: 464a mov r2, r9 + 8001056: 4631 mov r1, r6 + 8001058: 18f8 adds r0, r7, r3 + 800105a: f013 f92d bl 80142b8 <__aeabi_memcpy> + 800105e: 6822 ldr r2, [r4, #0] + 8001060: 6813 ldr r3, [r2, #0] + 8001062: 4639 mov r1, r7 + 8001064: e00f b.n 8001086 <cmox_md_append+0x7a> + 8001066: 4642 mov r2, r8 + 8001068: 4638 mov r0, r7 + 800106a: f013 f925 bl 80142b8 <__aeabi_memcpy> + 800106e: 6823 ldr r3, [r4, #0] + 8001070: 681a ldr r2, [r3, #0] + 8001072: 4639 mov r1, r7 + 8001074: 4620 mov r0, r4 + 8001076: 4790 blx r2 + 8001078: e007 b.n 800108a <cmox_md_append+0x7e> + 800107a: 1831 adds r1, r6, r0 + 800107c: f011 0003 ands.w r0, r1, #3 + 8001080: d1f1 bne.n 8001066 <cmox_md_append+0x5a> + 8001082: 6822 ldr r2, [r4, #0] + 8001084: 6813 ldr r3, [r2, #0] + 8001086: 4620 mov r0, r4 + 8001088: 4798 blx r3 + 800108a: 4648 mov r0, r9 + 800108c: eb00 0908 add.w r9, r0, r8 + 8001090: f1a9 0101 sub.w r1, r9, #1 + 8001094: 42a9 cmp r1, r5 + 8001096: d3f0 bcc.n 800107a <cmox_md_append+0x6e> + 8001098: 2300 movs r3, #0 + 800109a: e000 b.n 800109e <cmox_md_append+0x92> + 800109c: 2000 movs r0, #0 + 800109e: 1a2a subs r2, r5, r0 + 80010a0: 1831 adds r1, r6, r0 + 80010a2: 18f8 adds r0, r7, r3 + 80010a4: f013 f908 bl 80142b8 <__aeabi_memcpy> + 80010a8: f44f 3000 mov.w r0, #131072 ; 0x20000 + 80010ac: e8bd 83f2 ldmia.w sp!, {r1, r4, r5, r6, r7, r8, r9, pc} + 80010b0: 00020004 .word 0x00020004 + +080010b4 <cmox_md_generateTag>: + 80010b4: e92d 4ffc stmdb sp!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80010b8: 4602 mov r2, r0 + 80010ba: b085 sub sp, #20 + 80010bc: 68d0 ldr r0, [r2, #12] + 80010be: 6913 ldr r3, [r2, #16] + 80010c0: f8df c16c ldr.w ip, [pc, #364] ; 8001230 <cmox_md_generateTag+0x17c> + 80010c4: f8df 816c ldr.w r8, [pc, #364] ; 8001234 <cmox_md_generateTag+0x180> + 80010c8: eba0 0a03 sub.w sl, r0, r3 + 80010cc: 6850 ldr r0, [r2, #4] + 80010ce: f040 0004 orr.w r0, r0, #4 + 80010d2: 6050 str r0, [r2, #4] + 80010d4: 2700 movs r7, #0 + 80010d6: a803 add r0, sp, #12 + 80010d8: 9002 str r0, [sp, #8] + 80010da: f10d 0e0c add.w lr, sp, #12 + 80010de: e9d8 3400 ldrd r3, r4, [r8] + 80010e2: a803 add r0, sp, #12 + 80010e4: 4d54 ldr r5, [pc, #336] ; (8001238 <cmox_md_generateTag+0x184>) + 80010e6: e9c0 3400 strd r3, r4, [r0] + 80010ea: 7828 ldrb r0, [r5, #0] + 80010ec: 4d53 ldr r5, [pc, #332] ; (800123c <cmox_md_generateTag+0x188>) + 80010ee: 2800 cmp r0, #0 + 80010f0: bf0c ite eq + 80010f2: 2300 moveq r3, #0 + 80010f4: 2304 movne r3, #4 + 80010f6: 4699 mov r9, r3 + 80010f8: f85c 3003 ldr.w r3, [ip, r3] + 80010fc: f85e 4009 ldr.w r4, [lr, r9] + 8001100: 4423 add r3, r4 + 8001102: 2601 movs r6, #1 + 8001104: 601d str r5, [r3, #0] + 8001106: 681c ldr r4, [r3, #0] + 8001108: 609e str r6, [r3, #8] + 800110a: f8dc 3004 ldr.w r3, [ip, #4] + 800110e: 9d03 ldr r5, [sp, #12] + 8001110: f8dc 9000 ldr.w r9, [ip] + 8001114: f8de 6004 ldr.w r6, [lr, #4] + 8001118: 405d eors r5, r3 + 800111a: 4065 eors r5, r4 + 800111c: 4c48 ldr r4, [pc, #288] ; (8001240 <cmox_md_generateTag+0x18c>) + 800111e: 4065 eors r5, r4 + 8001120: ea89 0606 eor.w r6, r9, r6 + 8001124: 4c47 ldr r4, [pc, #284] ; (8001244 <cmox_md_generateTag+0x190>) + 8001126: 4066 eors r6, r4 + 8001128: 1975 adds r5, r6, r5 + 800112a: 4c47 ldr r4, [pc, #284] ; (8001248 <cmox_md_generateTag+0x194>) + 800112c: 4065 eors r5, r4 + 800112e: e9d8 6b00 ldrd r6, fp, [r8] + 8001132: ac03 add r4, sp, #12 + 8001134: 2800 cmp r0, #0 + 8001136: e9c4 6b00 strd r6, fp, [r4] + 800113a: bf0e itee eq + 800113c: 2400 moveq r4, #0 + 800113e: 2004 movne r0, #4 + 8001140: 2404 movne r4, #4 + 8001142: 9e02 ldr r6, [sp, #8] + 8001144: f85c 0000 ldr.w r0, [ip, r0] + 8001148: 5934 ldr r4, [r6, r4] + 800114a: 1820 adds r0, r4, r0 + 800114c: 4c3f ldr r4, [pc, #252] ; (800124c <cmox_md_generateTag+0x198>) + 800114e: 6004 str r4, [r0, #0] + 8001150: 2601 movs r6, #1 + 8001152: 6804 ldr r4, [r0, #0] + 8001154: 6086 str r6, [r0, #8] + 8001156: 9803 ldr r0, [sp, #12] + 8001158: 9e02 ldr r6, [sp, #8] + 800115a: 4043 eors r3, r0 + 800115c: 4063 eors r3, r4 + 800115e: 4c38 ldr r4, [pc, #224] ; (8001240 <cmox_md_generateTag+0x18c>) + 8001160: 6870 ldr r0, [r6, #4] + 8001162: 4063 eors r3, r4 + 8001164: ea89 0000 eor.w r0, r9, r0 + 8001168: 4c36 ldr r4, [pc, #216] ; (8001244 <cmox_md_generateTag+0x190>) + 800116a: 4060 eors r0, r4 + 800116c: 4403 add r3, r0 + 800116e: 4838 ldr r0, [pc, #224] ; (8001250 <cmox_md_generateTag+0x19c>) + 8001170: 4043 eors r3, r0 + 8001172: 0028 movs r0, r5 + 8001174: bf18 it ne + 8001176: 2001 movne r0, #1 + 8001178: 1e5b subs r3, r3, #1 + 800117a: 419b sbcs r3, r3 + 800117c: 2f04 cmp r7, #4 + 800117e: bf2c ite cs + 8001180: b2c0 uxtbcs r0, r0 + 8001182: 0fd8 lsrcc r0, r3, #31 + 8001184: f102 0314 add.w r3, r2, #20 + 8001188: f853 0020 ldr.w r0, [r3, r0, lsl #2] + 800118c: f007 0303 and.w r3, r7, #3 + 8001190: f1c3 0303 rsb r3, r3, #3 + 8001194: 00db lsls r3, r3, #3 + 8001196: 40d8 lsrs r0, r3 + 8001198: f80d 0007 strb.w r0, [sp, r7] + 800119c: 1c7f adds r7, r7, #1 + 800119e: 2f08 cmp r7, #8 + 80011a0: d39d bcc.n 80010de <cmox_md_generateTag+0x2a> + 80011a2: 4615 mov r5, r2 + 80011a4: 460c mov r4, r1 + 80011a6: 696a ldr r2, [r5, #20] + 80011a8: 69ab ldr r3, [r5, #24] + 80011aa: 68e8 ldr r0, [r5, #12] + 80011ac: 08d2 lsrs r2, r2, #3 + 80011ae: ea42 7243 orr.w r2, r2, r3, lsl #29 + 80011b2: 1e40 subs r0, r0, #1 + 80011b4: ea00 0702 and.w r7, r0, r2 + 80011b8: 2300 movs r3, #0 + 80011ba: 4002 ands r2, r0 + 80011bc: 429b cmp r3, r3 + 80011be: d80a bhi.n 80011d6 <cmox_md_generateTag+0x122> + 80011c0: 4552 cmp r2, sl + 80011c2: d208 bcs.n 80011d6 <cmox_md_generateTag+0x122> + 80011c4: 2080 movs r0, #128 ; 0x80 + 80011c6: 55e0 strb r0, [r4, r7] + 80011c8: 1c7f adds r7, r7, #1 + 80011ca: 4557 cmp r7, sl + 80011cc: d216 bcs.n 80011fc <cmox_md_generateTag+0x148> + 80011ce: ebaa 0107 sub.w r1, sl, r7 + 80011d2: 19e0 adds r0, r4, r7 + 80011d4: e010 b.n 80011f8 <cmox_md_generateTag+0x144> + 80011d6: 2080 movs r0, #128 ; 0x80 + 80011d8: 55e0 strb r0, [r4, r7] + 80011da: e000 b.n 80011de <cmox_md_generateTag+0x12a> + 80011dc: 55e3 strb r3, [r4, r7] + 80011de: 68e8 ldr r0, [r5, #12] + 80011e0: 1c7f adds r7, r7, #1 + 80011e2: 4287 cmp r7, r0 + 80011e4: d3fa bcc.n 80011dc <cmox_md_generateTag+0x128> + 80011e6: 682a ldr r2, [r5, #0] + 80011e8: 6813 ldr r3, [r2, #0] + 80011ea: 4628 mov r0, r5 + 80011ec: 4798 blx r3 + 80011ee: f1ba 0f00 cmp.w sl, #0 + 80011f2: d003 beq.n 80011fc <cmox_md_generateTag+0x148> + 80011f4: 4651 mov r1, sl + 80011f6: 4620 mov r0, r4 + 80011f8: f013 f860 bl 80142bc <__aeabi_memclr> + 80011fc: 682a ldr r2, [r5, #0] + 80011fe: 9e06 ldr r6, [sp, #24] + 8001200: 9f05 ldr r7, [sp, #20] + 8001202: 6893 ldr r3, [r2, #8] + 8001204: 4669 mov r1, sp + 8001206: 4628 mov r0, r5 + 8001208: 4798 blx r3 + 800120a: 682a ldr r2, [r5, #0] + 800120c: f8d2 9000 ldr.w r9, [r2] + 8001210: 4621 mov r1, r4 + 8001212: 4628 mov r0, r5 + 8001214: 47c8 blx r9 + 8001216: 682b ldr r3, [r5, #0] + 8001218: 68da ldr r2, [r3, #12] + 800121a: 4639 mov r1, r7 + 800121c: 4628 mov r0, r5 + 800121e: 4790 blx r2 + 8001220: b10e cbz r6, 8001226 <cmox_md_generateTag+0x172> + 8001222: 68a8 ldr r0, [r5, #8] + 8001224: 6030 str r0, [r6, #0] + 8001226: f44f 3000 mov.w r0, #131072 ; 0x20000 + 800122a: b007 add sp, #28 + 800122c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8001230: 08014454 .word 0x08014454 + 8001234: 08001254 .word 0x08001254 + 8001238: 200008e8 .word 0x200008e8 + 800123c: 9310c55f .word 0x9310c55f + 8001240: 12008504 .word 0x12008504 + 8001244: 7a0168fc .word 0x7a0168fc + 8001248: ff24f5c0 .word 0xff24f5c0 + 800124c: d433af24 .word 0xd433af24 + 8001250: 8b69af26 .word 0x8b69af26 + 8001254: 0101b004 .word 0x0101b004 + 8001258: 45011700 .word 0x45011700 + +0800125c <firstloop_bb_cmp>: + 800125c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800125e: 2401 movs r4, #1 + 8001260: 9400 str r4, [sp, #0] + 8001262: 2300 movs r3, #0 + 8001264: 2400 movs r4, #0 + 8001266: e00d b.n 8001284 <firstloop_bb_cmp+0x28> + 8001268: 9d00 ldr r5, [sp, #0] + 800126a: 5d06 ldrb r6, [r0, r4] + 800126c: 5d0f ldrb r7, [r1, r4] + 800126e: 407e eors r6, r7 + 8001270: 43f6 mvns r6, r6 + 8001272: 1c76 adds r6, r6, #1 + 8001274: 0ff6 lsrs r6, r6, #31 + 8001276: f086 0601 eor.w r6, r6, #1 + 800127a: 4035 ands r5, r6 + 800127c: 9500 str r5, [sp, #0] + 800127e: 1c64 adds r4, r4, #1 + 8001280: 9d00 ldr r5, [sp, #0] + 8001282: 18eb adds r3, r5, r3 + 8001284: 4294 cmp r4, r2 + 8001286: d3ef bcc.n 8001268 <firstloop_bb_cmp+0xc> + 8001288: 4618 mov r0, r3 + 800128a: bdf2 pop {r1, r4, r5, r6, r7, pc} + +0800128c <secondloop_bb_cmp>: + 800128c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800128e: 2300 movs r3, #0 + 8001290: 2401 movs r4, #1 + 8001292: 9400 str r4, [sp, #0] + 8001294: 2a00 cmp r2, #0 + 8001296: e011 b.n 80012bc <secondloop_bb_cmp+0x30> + 8001298: 9c00 ldr r4, [sp, #0] + 800129a: 1885 adds r5, r0, r2 + 800129c: 188f adds r7, r1, r2 + 800129e: f815 6c01 ldrb.w r6, [r5, #-1] + 80012a2: f817 5c01 ldrb.w r5, [r7, #-1] + 80012a6: 406e eors r6, r5 + 80012a8: 43f6 mvns r6, r6 + 80012aa: 1c76 adds r6, r6, #1 + 80012ac: 0ff6 lsrs r6, r6, #31 + 80012ae: f086 0601 eor.w r6, r6, #1 + 80012b2: 4034 ands r4, r6 + 80012b4: 9400 str r4, [sp, #0] + 80012b6: 9c00 ldr r4, [sp, #0] + 80012b8: 18e3 adds r3, r4, r3 + 80012ba: 1e52 subs r2, r2, #1 + 80012bc: d1ec bne.n 8001298 <secondloop_bb_cmp+0xc> + 80012be: 4618 mov r0, r3 + 80012c0: bdf2 pop {r1, r4, r5, r6, r7, pc} + ... + +080012c4 <bufType_bb>: + 80012c4: 125d 0800 128d 0800 0001 0000 ]........... + +080012d0 <cmox_utils_robustCmp>: + 80012d0: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80012d4: 461d mov r5, r3 + 80012d6: f8dd 9028 ldr.w r9, [sp, #40] ; 0x28 + 80012da: 9f0b ldr r7, [sp, #44] ; 0x2c + 80012dc: 9c0d ldr r4, [sp, #52] ; 0x34 + 80012de: f04f 33ff mov.w r3, #4294967295 + 80012e2: 9300 str r3, [sp, #0] + 80012e4: 460e mov r6, r1 + 80012e6: 4692 mov sl, r2 + 80012e8: f8d9 b000 ldr.w fp, [r9] + 80012ec: 4680 mov r8, r0 + 80012ee: 4632 mov r2, r6 + 80012f0: 4651 mov r1, sl + 80012f2: 47d8 blx fp + 80012f4: 4683 mov fp, r0 + 80012f6: b364 cbz r4, 8001352 <cmox_utils_robustCmp+0x82> + 80012f8: f8d9 3004 ldr.w r3, [r9, #4] + 80012fc: 4632 mov r2, r6 + 80012fe: 4651 mov r1, sl + 8001300: 4640 mov r0, r8 + 8001302: 4798 blx r3 + 8001304: ea6f 020b mvn.w r2, fp + 8001308: 1c52 adds r2, r2, #1 + 800130a: ea42 020b orr.w r2, r2, fp + 800130e: 9900 ldr r1, [sp, #0] + 8001310: ea6f 73d2 mvn.w r3, r2, lsr #31 + 8001314: 1c5b adds r3, r3, #1 + 8001316: 4019 ands r1, r3 + 8001318: 43c2 mvns r2, r0 + 800131a: 9100 str r1, [sp, #0] + 800131c: 1c52 adds r2, r2, #1 + 800131e: 4302 orrs r2, r0 + 8001320: 9900 ldr r1, [sp, #0] + 8001322: ea6f 73d2 mvn.w r3, r2, lsr #31 + 8001326: 1c5b adds r3, r3, #1 + 8001328: 4019 ands r1, r3 + 800132a: 9100 str r1, [sp, #0] + 800132c: f086 3155 eor.w r1, r6, #1431655765 ; 0x55555555 + 8001330: 4048 eors r0, r1 + 8001332: ea87 0100 eor.w r1, r7, r0 + 8001336: f081 3155 eor.w r1, r1, #1431655765 ; 0x55555555 + 800133a: 6021 str r1, [r4, #0] + 800133c: f080 3155 eor.w r1, r0, #1431655765 ; 0x55555555 + 8001340: 43c9 mvns r1, r1 + 8001342: 1c49 adds r1, r1, #1 + 8001344: 4308 orrs r0, r1 + 8001346: 9a00 ldr r2, [sp, #0] + 8001348: ea6f 70d0 mvn.w r0, r0, lsr #31 + 800134c: 1c40 adds r0, r0, #1 + 800134e: 4382 bics r2, r0 + 8001350: 9200 str r2, [sp, #0] + 8001352: f8d9 0008 ldr.w r0, [r9, #8] + 8001356: 2801 cmp r0, #1 + 8001358: d109 bne.n 800136e <cmox_utils_robustCmp+0x9e> + 800135a: 4075 eors r5, r6 + 800135c: 43e9 mvns r1, r5 + 800135e: 1c49 adds r1, r1, #1 + 8001360: 430d orrs r5, r1 + 8001362: 9800 ldr r0, [sp, #0] + 8001364: ea6f 72d5 mvn.w r2, r5, lsr #31 + 8001368: 1c52 adds r2, r2, #1 + 800136a: 4390 bics r0, r2 + 800136c: e00a b.n 8001384 <cmox_utils_robustCmp+0xb4> + 800136e: 1cf1 adds r1, r6, #3 + 8001370: ea85 0291 eor.w r2, r5, r1, lsr #2 + 8001374: 43d2 mvns r2, r2 + 8001376: 1c52 adds r2, r2, #1 + 8001378: 4315 orrs r5, r2 + 800137a: 9800 ldr r0, [sp, #0] + 800137c: ea6f 73d5 mvn.w r3, r5, lsr #31 + 8001380: 1c5b adds r3, r3, #1 + 8001382: 4398 bics r0, r3 + 8001384: f086 36aa eor.w r6, r6, #2863311530 ; 0xaaaaaaaa + 8001388: 9000 str r0, [sp, #0] + 800138a: ea86 060b eor.w r6, r6, fp + 800138e: f086 33aa eor.w r3, r6, #2863311530 ; 0xaaaaaaaa + 8001392: 43f2 mvns r2, r6 + 8001394: 43db mvns r3, r3 + 8001396: 980c ldr r0, [sp, #48] ; 0x30 + 8001398: f3c2 72c0 ubfx r2, r2, #31, #1 + 800139c: 1c5b adds r3, r3, #1 + 800139e: ea42 72d3 orr.w r2, r2, r3, lsr #31 + 80013a2: 9900 ldr r1, [sp, #0] + 80013a4: 43d2 mvns r2, r2 + 80013a6: 1c52 adds r2, r2, #1 + 80013a8: 4391 bics r1, r2 + 80013aa: 9100 str r1, [sp, #0] + 80013ac: 4077 eors r7, r6 + 80013ae: 9900 ldr r1, [sp, #0] + 80013b0: 4388 bics r0, r1 + 80013b2: 9900 ldr r1, [sp, #0] + 80013b4: f087 37aa eor.w r7, r7, #2863311530 ; 0xaaaaaaaa + 80013b8: 400f ands r7, r1 + 80013ba: 4338 orrs r0, r7 + 80013bc: e8bd 8ff2 ldmia.w sp!, {r1, r4, r5, r6, r7, r8, r9, sl, fp, pc} + +080013c0 <strlen>: + 80013c0: 4603 mov r3, r0 + 80013c2: f813 2b01 ldrb.w r2, [r3], #1 + 80013c6: 2a00 cmp r2, #0 + 80013c8: d1fb bne.n 80013c2 <strlen+0x2> + 80013ca: 1a18 subs r0, r3, r0 + 80013cc: 3801 subs r0, #1 + 80013ce: 4770 bx lr + +080013d0 <__aeabi_drsub>: + 80013d0: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000 + 80013d4: e002 b.n 80013dc <__adddf3> + 80013d6: bf00 nop + +080013d8 <__aeabi_dsub>: + 80013d8: f083 4300 eor.w r3, r3, #2147483648 ; 0x80000000 + +080013dc <__adddf3>: + 80013dc: b530 push {r4, r5, lr} + 80013de: ea4f 0441 mov.w r4, r1, lsl #1 + 80013e2: ea4f 0543 mov.w r5, r3, lsl #1 + 80013e6: ea94 0f05 teq r4, r5 + 80013ea: bf08 it eq + 80013ec: ea90 0f02 teqeq r0, r2 + 80013f0: bf1f itttt ne + 80013f2: ea54 0c00 orrsne.w ip, r4, r0 + 80013f6: ea55 0c02 orrsne.w ip, r5, r2 + 80013fa: ea7f 5c64 mvnsne.w ip, r4, asr #21 + 80013fe: ea7f 5c65 mvnsne.w ip, r5, asr #21 + 8001402: f000 80e2 beq.w 80015ca <__adddf3+0x1ee> + 8001406: ea4f 5454 mov.w r4, r4, lsr #21 + 800140a: ebd4 5555 rsbs r5, r4, r5, lsr #21 + 800140e: bfb8 it lt + 8001410: 426d neglt r5, r5 + 8001412: dd0c ble.n 800142e <__adddf3+0x52> + 8001414: 442c add r4, r5 + 8001416: ea80 0202 eor.w r2, r0, r2 + 800141a: ea81 0303 eor.w r3, r1, r3 + 800141e: ea82 0000 eor.w r0, r2, r0 + 8001422: ea83 0101 eor.w r1, r3, r1 + 8001426: ea80 0202 eor.w r2, r0, r2 + 800142a: ea81 0303 eor.w r3, r1, r3 + 800142e: 2d36 cmp r5, #54 ; 0x36 + 8001430: bf88 it hi + 8001432: bd30 pophi {r4, r5, pc} + 8001434: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 + 8001438: ea4f 3101 mov.w r1, r1, lsl #12 + 800143c: f44f 1c80 mov.w ip, #1048576 ; 0x100000 + 8001440: ea4c 3111 orr.w r1, ip, r1, lsr #12 + 8001444: d002 beq.n 800144c <__adddf3+0x70> + 8001446: 4240 negs r0, r0 + 8001448: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 800144c: f013 4f00 tst.w r3, #2147483648 ; 0x80000000 + 8001450: ea4f 3303 mov.w r3, r3, lsl #12 + 8001454: ea4c 3313 orr.w r3, ip, r3, lsr #12 + 8001458: d002 beq.n 8001460 <__adddf3+0x84> + 800145a: 4252 negs r2, r2 + 800145c: eb63 0343 sbc.w r3, r3, r3, lsl #1 + 8001460: ea94 0f05 teq r4, r5 + 8001464: f000 80a7 beq.w 80015b6 <__adddf3+0x1da> + 8001468: f1a4 0401 sub.w r4, r4, #1 + 800146c: f1d5 0e20 rsbs lr, r5, #32 + 8001470: db0d blt.n 800148e <__adddf3+0xb2> + 8001472: fa02 fc0e lsl.w ip, r2, lr + 8001476: fa22 f205 lsr.w r2, r2, r5 + 800147a: 1880 adds r0, r0, r2 + 800147c: f141 0100 adc.w r1, r1, #0 + 8001480: fa03 f20e lsl.w r2, r3, lr + 8001484: 1880 adds r0, r0, r2 + 8001486: fa43 f305 asr.w r3, r3, r5 + 800148a: 4159 adcs r1, r3 + 800148c: e00e b.n 80014ac <__adddf3+0xd0> + 800148e: f1a5 0520 sub.w r5, r5, #32 + 8001492: f10e 0e20 add.w lr, lr, #32 + 8001496: 2a01 cmp r2, #1 + 8001498: fa03 fc0e lsl.w ip, r3, lr + 800149c: bf28 it cs + 800149e: f04c 0c02 orrcs.w ip, ip, #2 + 80014a2: fa43 f305 asr.w r3, r3, r5 + 80014a6: 18c0 adds r0, r0, r3 + 80014a8: eb51 71e3 adcs.w r1, r1, r3, asr #31 + 80014ac: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 + 80014b0: d507 bpl.n 80014c2 <__adddf3+0xe6> + 80014b2: f04f 0e00 mov.w lr, #0 + 80014b6: f1dc 0c00 rsbs ip, ip, #0 + 80014ba: eb7e 0000 sbcs.w r0, lr, r0 + 80014be: eb6e 0101 sbc.w r1, lr, r1 + 80014c2: f5b1 1f80 cmp.w r1, #1048576 ; 0x100000 + 80014c6: d31b bcc.n 8001500 <__adddf3+0x124> + 80014c8: f5b1 1f00 cmp.w r1, #2097152 ; 0x200000 + 80014cc: d30c bcc.n 80014e8 <__adddf3+0x10c> + 80014ce: 0849 lsrs r1, r1, #1 + 80014d0: ea5f 0030 movs.w r0, r0, rrx + 80014d4: ea4f 0c3c mov.w ip, ip, rrx + 80014d8: f104 0401 add.w r4, r4, #1 + 80014dc: ea4f 5244 mov.w r2, r4, lsl #21 + 80014e0: f512 0f80 cmn.w r2, #4194304 ; 0x400000 + 80014e4: f080 809a bcs.w 800161c <__adddf3+0x240> + 80014e8: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000 + 80014ec: bf08 it eq + 80014ee: ea5f 0c50 movseq.w ip, r0, lsr #1 + 80014f2: f150 0000 adcs.w r0, r0, #0 + 80014f6: eb41 5104 adc.w r1, r1, r4, lsl #20 + 80014fa: ea41 0105 orr.w r1, r1, r5 + 80014fe: bd30 pop {r4, r5, pc} + 8001500: ea5f 0c4c movs.w ip, ip, lsl #1 + 8001504: 4140 adcs r0, r0 + 8001506: eb41 0101 adc.w r1, r1, r1 + 800150a: 3c01 subs r4, #1 + 800150c: bf28 it cs + 800150e: f5b1 1f80 cmpcs.w r1, #1048576 ; 0x100000 + 8001512: d2e9 bcs.n 80014e8 <__adddf3+0x10c> + 8001514: f091 0f00 teq r1, #0 + 8001518: bf04 itt eq + 800151a: 4601 moveq r1, r0 + 800151c: 2000 moveq r0, #0 + 800151e: fab1 f381 clz r3, r1 + 8001522: bf08 it eq + 8001524: 3320 addeq r3, #32 + 8001526: f1a3 030b sub.w r3, r3, #11 + 800152a: f1b3 0220 subs.w r2, r3, #32 + 800152e: da0c bge.n 800154a <__adddf3+0x16e> + 8001530: 320c adds r2, #12 + 8001532: dd08 ble.n 8001546 <__adddf3+0x16a> + 8001534: f102 0c14 add.w ip, r2, #20 + 8001538: f1c2 020c rsb r2, r2, #12 + 800153c: fa01 f00c lsl.w r0, r1, ip + 8001540: fa21 f102 lsr.w r1, r1, r2 + 8001544: e00c b.n 8001560 <__adddf3+0x184> + 8001546: f102 0214 add.w r2, r2, #20 + 800154a: bfd8 it le + 800154c: f1c2 0c20 rsble ip, r2, #32 + 8001550: fa01 f102 lsl.w r1, r1, r2 + 8001554: fa20 fc0c lsr.w ip, r0, ip + 8001558: bfdc itt le + 800155a: ea41 010c orrle.w r1, r1, ip + 800155e: 4090 lslle r0, r2 + 8001560: 1ae4 subs r4, r4, r3 + 8001562: bfa2 ittt ge + 8001564: eb01 5104 addge.w r1, r1, r4, lsl #20 + 8001568: 4329 orrge r1, r5 + 800156a: bd30 popge {r4, r5, pc} + 800156c: ea6f 0404 mvn.w r4, r4 + 8001570: 3c1f subs r4, #31 + 8001572: da1c bge.n 80015ae <__adddf3+0x1d2> + 8001574: 340c adds r4, #12 + 8001576: dc0e bgt.n 8001596 <__adddf3+0x1ba> + 8001578: f104 0414 add.w r4, r4, #20 + 800157c: f1c4 0220 rsb r2, r4, #32 + 8001580: fa20 f004 lsr.w r0, r0, r4 + 8001584: fa01 f302 lsl.w r3, r1, r2 + 8001588: ea40 0003 orr.w r0, r0, r3 + 800158c: fa21 f304 lsr.w r3, r1, r4 + 8001590: ea45 0103 orr.w r1, r5, r3 + 8001594: bd30 pop {r4, r5, pc} + 8001596: f1c4 040c rsb r4, r4, #12 + 800159a: f1c4 0220 rsb r2, r4, #32 + 800159e: fa20 f002 lsr.w r0, r0, r2 + 80015a2: fa01 f304 lsl.w r3, r1, r4 + 80015a6: ea40 0003 orr.w r0, r0, r3 + 80015aa: 4629 mov r1, r5 + 80015ac: bd30 pop {r4, r5, pc} + 80015ae: fa21 f004 lsr.w r0, r1, r4 + 80015b2: 4629 mov r1, r5 + 80015b4: bd30 pop {r4, r5, pc} + 80015b6: f094 0f00 teq r4, #0 + 80015ba: f483 1380 eor.w r3, r3, #1048576 ; 0x100000 + 80015be: bf06 itte eq + 80015c0: f481 1180 eoreq.w r1, r1, #1048576 ; 0x100000 + 80015c4: 3401 addeq r4, #1 + 80015c6: 3d01 subne r5, #1 + 80015c8: e74e b.n 8001468 <__adddf3+0x8c> + 80015ca: ea7f 5c64 mvns.w ip, r4, asr #21 + 80015ce: bf18 it ne + 80015d0: ea7f 5c65 mvnsne.w ip, r5, asr #21 + 80015d4: d029 beq.n 800162a <__adddf3+0x24e> + 80015d6: ea94 0f05 teq r4, r5 + 80015da: bf08 it eq + 80015dc: ea90 0f02 teqeq r0, r2 + 80015e0: d005 beq.n 80015ee <__adddf3+0x212> + 80015e2: ea54 0c00 orrs.w ip, r4, r0 + 80015e6: bf04 itt eq + 80015e8: 4619 moveq r1, r3 + 80015ea: 4610 moveq r0, r2 + 80015ec: bd30 pop {r4, r5, pc} + 80015ee: ea91 0f03 teq r1, r3 + 80015f2: bf1e ittt ne + 80015f4: 2100 movne r1, #0 + 80015f6: 2000 movne r0, #0 + 80015f8: bd30 popne {r4, r5, pc} + 80015fa: ea5f 5c54 movs.w ip, r4, lsr #21 + 80015fe: d105 bne.n 800160c <__adddf3+0x230> + 8001600: 0040 lsls r0, r0, #1 + 8001602: 4149 adcs r1, r1 + 8001604: bf28 it cs + 8001606: f041 4100 orrcs.w r1, r1, #2147483648 ; 0x80000000 + 800160a: bd30 pop {r4, r5, pc} + 800160c: f514 0480 adds.w r4, r4, #4194304 ; 0x400000 + 8001610: bf3c itt cc + 8001612: f501 1180 addcc.w r1, r1, #1048576 ; 0x100000 + 8001616: bd30 popcc {r4, r5, pc} + 8001618: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 + 800161c: f045 41fe orr.w r1, r5, #2130706432 ; 0x7f000000 + 8001620: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000 + 8001624: f04f 0000 mov.w r0, #0 + 8001628: bd30 pop {r4, r5, pc} + 800162a: ea7f 5c64 mvns.w ip, r4, asr #21 + 800162e: bf1a itte ne + 8001630: 4619 movne r1, r3 + 8001632: 4610 movne r0, r2 + 8001634: ea7f 5c65 mvnseq.w ip, r5, asr #21 + 8001638: bf1c itt ne + 800163a: 460b movne r3, r1 + 800163c: 4602 movne r2, r0 + 800163e: ea50 3401 orrs.w r4, r0, r1, lsl #12 + 8001642: bf06 itte eq + 8001644: ea52 3503 orrseq.w r5, r2, r3, lsl #12 + 8001648: ea91 0f03 teqeq r1, r3 + 800164c: f441 2100 orrne.w r1, r1, #524288 ; 0x80000 + 8001650: bd30 pop {r4, r5, pc} + 8001652: bf00 nop + +08001654 <__aeabi_ui2d>: + 8001654: f090 0f00 teq r0, #0 + 8001658: bf04 itt eq + 800165a: 2100 moveq r1, #0 + 800165c: 4770 bxeq lr + 800165e: b530 push {r4, r5, lr} + 8001660: f44f 6480 mov.w r4, #1024 ; 0x400 + 8001664: f104 0432 add.w r4, r4, #50 ; 0x32 + 8001668: f04f 0500 mov.w r5, #0 + 800166c: f04f 0100 mov.w r1, #0 + 8001670: e750 b.n 8001514 <__adddf3+0x138> + 8001672: bf00 nop + +08001674 <__aeabi_i2d>: + 8001674: f090 0f00 teq r0, #0 + 8001678: bf04 itt eq + 800167a: 2100 moveq r1, #0 + 800167c: 4770 bxeq lr + 800167e: b530 push {r4, r5, lr} + 8001680: f44f 6480 mov.w r4, #1024 ; 0x400 + 8001684: f104 0432 add.w r4, r4, #50 ; 0x32 + 8001688: f010 4500 ands.w r5, r0, #2147483648 ; 0x80000000 + 800168c: bf48 it mi + 800168e: 4240 negmi r0, r0 + 8001690: f04f 0100 mov.w r1, #0 + 8001694: e73e b.n 8001514 <__adddf3+0x138> + 8001696: bf00 nop + +08001698 <__aeabi_f2d>: + 8001698: 0042 lsls r2, r0, #1 + 800169a: ea4f 01e2 mov.w r1, r2, asr #3 + 800169e: ea4f 0131 mov.w r1, r1, rrx + 80016a2: ea4f 7002 mov.w r0, r2, lsl #28 + 80016a6: bf1f itttt ne + 80016a8: f012 437f andsne.w r3, r2, #4278190080 ; 0xff000000 + 80016ac: f093 4f7f teqne r3, #4278190080 ; 0xff000000 + 80016b0: f081 5160 eorne.w r1, r1, #939524096 ; 0x38000000 + 80016b4: 4770 bxne lr + 80016b6: f032 427f bics.w r2, r2, #4278190080 ; 0xff000000 + 80016ba: bf08 it eq + 80016bc: 4770 bxeq lr + 80016be: f093 4f7f teq r3, #4278190080 ; 0xff000000 + 80016c2: bf04 itt eq + 80016c4: f441 2100 orreq.w r1, r1, #524288 ; 0x80000 + 80016c8: 4770 bxeq lr + 80016ca: b530 push {r4, r5, lr} + 80016cc: f44f 7460 mov.w r4, #896 ; 0x380 + 80016d0: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 + 80016d4: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 80016d8: e71c b.n 8001514 <__adddf3+0x138> + 80016da: bf00 nop + +080016dc <__aeabi_ul2d>: + 80016dc: ea50 0201 orrs.w r2, r0, r1 + 80016e0: bf08 it eq + 80016e2: 4770 bxeq lr + 80016e4: b530 push {r4, r5, lr} + 80016e6: f04f 0500 mov.w r5, #0 + 80016ea: e00a b.n 8001702 <__aeabi_l2d+0x16> + +080016ec <__aeabi_l2d>: + 80016ec: ea50 0201 orrs.w r2, r0, r1 + 80016f0: bf08 it eq + 80016f2: 4770 bxeq lr + 80016f4: b530 push {r4, r5, lr} + 80016f6: f011 4500 ands.w r5, r1, #2147483648 ; 0x80000000 + 80016fa: d502 bpl.n 8001702 <__aeabi_l2d+0x16> + 80016fc: 4240 negs r0, r0 + 80016fe: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 8001702: f44f 6480 mov.w r4, #1024 ; 0x400 + 8001706: f104 0432 add.w r4, r4, #50 ; 0x32 + 800170a: ea5f 5c91 movs.w ip, r1, lsr #22 + 800170e: f43f aed8 beq.w 80014c2 <__adddf3+0xe6> + 8001712: f04f 0203 mov.w r2, #3 + 8001716: ea5f 0cdc movs.w ip, ip, lsr #3 + 800171a: bf18 it ne + 800171c: 3203 addne r2, #3 + 800171e: ea5f 0cdc movs.w ip, ip, lsr #3 + 8001722: bf18 it ne + 8001724: 3203 addne r2, #3 + 8001726: eb02 02dc add.w r2, r2, ip, lsr #3 + 800172a: f1c2 0320 rsb r3, r2, #32 + 800172e: fa00 fc03 lsl.w ip, r0, r3 + 8001732: fa20 f002 lsr.w r0, r0, r2 + 8001736: fa01 fe03 lsl.w lr, r1, r3 + 800173a: ea40 000e orr.w r0, r0, lr + 800173e: fa21 f102 lsr.w r1, r1, r2 + 8001742: 4414 add r4, r2 + 8001744: e6bd b.n 80014c2 <__adddf3+0xe6> + 8001746: bf00 nop + +08001748 <__gedf2>: + 8001748: f04f 3cff mov.w ip, #4294967295 + 800174c: e006 b.n 800175c <__cmpdf2+0x4> + 800174e: bf00 nop + +08001750 <__ledf2>: + 8001750: f04f 0c01 mov.w ip, #1 + 8001754: e002 b.n 800175c <__cmpdf2+0x4> + 8001756: bf00 nop + +08001758 <__cmpdf2>: + 8001758: f04f 0c01 mov.w ip, #1 + 800175c: f84d cd04 str.w ip, [sp, #-4]! + 8001760: ea4f 0c41 mov.w ip, r1, lsl #1 + 8001764: ea7f 5c6c mvns.w ip, ip, asr #21 + 8001768: ea4f 0c43 mov.w ip, r3, lsl #1 + 800176c: bf18 it ne + 800176e: ea7f 5c6c mvnsne.w ip, ip, asr #21 + 8001772: d01b beq.n 80017ac <__cmpdf2+0x54> + 8001774: b001 add sp, #4 + 8001776: ea50 0c41 orrs.w ip, r0, r1, lsl #1 + 800177a: bf0c ite eq + 800177c: ea52 0c43 orrseq.w ip, r2, r3, lsl #1 + 8001780: ea91 0f03 teqne r1, r3 + 8001784: bf02 ittt eq + 8001786: ea90 0f02 teqeq r0, r2 + 800178a: 2000 moveq r0, #0 + 800178c: 4770 bxeq lr + 800178e: f110 0f00 cmn.w r0, #0 + 8001792: ea91 0f03 teq r1, r3 + 8001796: bf58 it pl + 8001798: 4299 cmppl r1, r3 + 800179a: bf08 it eq + 800179c: 4290 cmpeq r0, r2 + 800179e: bf2c ite cs + 80017a0: 17d8 asrcs r0, r3, #31 + 80017a2: ea6f 70e3 mvncc.w r0, r3, asr #31 + 80017a6: f040 0001 orr.w r0, r0, #1 + 80017aa: 4770 bx lr + 80017ac: ea4f 0c41 mov.w ip, r1, lsl #1 + 80017b0: ea7f 5c6c mvns.w ip, ip, asr #21 + 80017b4: d102 bne.n 80017bc <__cmpdf2+0x64> + 80017b6: ea50 3c01 orrs.w ip, r0, r1, lsl #12 + 80017ba: d107 bne.n 80017cc <__cmpdf2+0x74> + 80017bc: ea4f 0c43 mov.w ip, r3, lsl #1 + 80017c0: ea7f 5c6c mvns.w ip, ip, asr #21 + 80017c4: d1d6 bne.n 8001774 <__cmpdf2+0x1c> + 80017c6: ea52 3c03 orrs.w ip, r2, r3, lsl #12 + 80017ca: d0d3 beq.n 8001774 <__cmpdf2+0x1c> + 80017cc: f85d 0b04 ldr.w r0, [sp], #4 + 80017d0: 4770 bx lr + 80017d2: bf00 nop + +080017d4 <__aeabi_cdrcmple>: + 80017d4: 4684 mov ip, r0 + 80017d6: 4610 mov r0, r2 + 80017d8: 4662 mov r2, ip + 80017da: 468c mov ip, r1 + 80017dc: 4619 mov r1, r3 + 80017de: 4663 mov r3, ip + 80017e0: e000 b.n 80017e4 <__aeabi_cdcmpeq> + 80017e2: bf00 nop + +080017e4 <__aeabi_cdcmpeq>: + 80017e4: b501 push {r0, lr} + 80017e6: f7ff ffb7 bl 8001758 <__cmpdf2> + 80017ea: 2800 cmp r0, #0 + 80017ec: bf48 it mi + 80017ee: f110 0f00 cmnmi.w r0, #0 + 80017f2: bd01 pop {r0, pc} + +080017f4 <__aeabi_dcmpeq>: + 80017f4: f84d ed08 str.w lr, [sp, #-8]! + 80017f8: f7ff fff4 bl 80017e4 <__aeabi_cdcmpeq> + 80017fc: bf0c ite eq + 80017fe: 2001 moveq r0, #1 + 8001800: 2000 movne r0, #0 + 8001802: f85d fb08 ldr.w pc, [sp], #8 + 8001806: bf00 nop + +08001808 <__aeabi_dcmplt>: + 8001808: f84d ed08 str.w lr, [sp, #-8]! + 800180c: f7ff ffea bl 80017e4 <__aeabi_cdcmpeq> + 8001810: bf34 ite cc + 8001812: 2001 movcc r0, #1 + 8001814: 2000 movcs r0, #0 + 8001816: f85d fb08 ldr.w pc, [sp], #8 + 800181a: bf00 nop + +0800181c <__aeabi_dcmple>: + 800181c: f84d ed08 str.w lr, [sp, #-8]! + 8001820: f7ff ffe0 bl 80017e4 <__aeabi_cdcmpeq> + 8001824: bf94 ite ls + 8001826: 2001 movls r0, #1 + 8001828: 2000 movhi r0, #0 + 800182a: f85d fb08 ldr.w pc, [sp], #8 + 800182e: bf00 nop + +08001830 <__aeabi_dcmpge>: + 8001830: f84d ed08 str.w lr, [sp, #-8]! + 8001834: f7ff ffce bl 80017d4 <__aeabi_cdrcmple> + 8001838: bf94 ite ls + 800183a: 2001 movls r0, #1 + 800183c: 2000 movhi r0, #0 + 800183e: f85d fb08 ldr.w pc, [sp], #8 + 8001842: bf00 nop + +08001844 <__aeabi_dcmpgt>: + 8001844: f84d ed08 str.w lr, [sp, #-8]! + 8001848: f7ff ffc4 bl 80017d4 <__aeabi_cdrcmple> + 800184c: bf34 ite cc + 800184e: 2001 movcc r0, #1 + 8001850: 2000 movcs r0, #0 + 8001852: f85d fb08 ldr.w pc, [sp], #8 + 8001856: bf00 nop + +08001858 <__aeabi_d2iz>: + 8001858: ea4f 0241 mov.w r2, r1, lsl #1 + 800185c: f512 1200 adds.w r2, r2, #2097152 ; 0x200000 + 8001860: d215 bcs.n 800188e <__aeabi_d2iz+0x36> + 8001862: d511 bpl.n 8001888 <__aeabi_d2iz+0x30> + 8001864: f46f 7378 mvn.w r3, #992 ; 0x3e0 + 8001868: ebb3 5262 subs.w r2, r3, r2, asr #21 + 800186c: d912 bls.n 8001894 <__aeabi_d2iz+0x3c> + 800186e: ea4f 23c1 mov.w r3, r1, lsl #11 + 8001872: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000 + 8001876: ea43 5350 orr.w r3, r3, r0, lsr #21 + 800187a: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 + 800187e: fa23 f002 lsr.w r0, r3, r2 + 8001882: bf18 it ne + 8001884: 4240 negne r0, r0 + 8001886: 4770 bx lr + 8001888: f04f 0000 mov.w r0, #0 + 800188c: 4770 bx lr + 800188e: ea50 3001 orrs.w r0, r0, r1, lsl #12 + 8001892: d105 bne.n 80018a0 <__aeabi_d2iz+0x48> + 8001894: f011 4000 ands.w r0, r1, #2147483648 ; 0x80000000 + 8001898: bf08 it eq + 800189a: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000 + 800189e: 4770 bx lr + 80018a0: f04f 0000 mov.w r0, #0 + 80018a4: 4770 bx lr + 80018a6: bf00 nop + +080018a8 <__aeabi_frsub>: + 80018a8: f080 4000 eor.w r0, r0, #2147483648 ; 0x80000000 + 80018ac: e002 b.n 80018b4 <__addsf3> + 80018ae: bf00 nop + +080018b0 <__aeabi_fsub>: + 80018b0: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000 + +080018b4 <__addsf3>: + 80018b4: 0042 lsls r2, r0, #1 + 80018b6: bf1f itttt ne + 80018b8: ea5f 0341 movsne.w r3, r1, lsl #1 + 80018bc: ea92 0f03 teqne r2, r3 + 80018c0: ea7f 6c22 mvnsne.w ip, r2, asr #24 + 80018c4: ea7f 6c23 mvnsne.w ip, r3, asr #24 + 80018c8: d06a beq.n 80019a0 <__addsf3+0xec> + 80018ca: ea4f 6212 mov.w r2, r2, lsr #24 + 80018ce: ebd2 6313 rsbs r3, r2, r3, lsr #24 + 80018d2: bfc1 itttt gt + 80018d4: 18d2 addgt r2, r2, r3 + 80018d6: 4041 eorgt r1, r0 + 80018d8: 4048 eorgt r0, r1 + 80018da: 4041 eorgt r1, r0 + 80018dc: bfb8 it lt + 80018de: 425b neglt r3, r3 + 80018e0: 2b19 cmp r3, #25 + 80018e2: bf88 it hi + 80018e4: 4770 bxhi lr + 80018e6: f010 4f00 tst.w r0, #2147483648 ; 0x80000000 + 80018ea: f440 0000 orr.w r0, r0, #8388608 ; 0x800000 + 80018ee: f020 407f bic.w r0, r0, #4278190080 ; 0xff000000 + 80018f2: bf18 it ne + 80018f4: 4240 negne r0, r0 + 80018f6: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 + 80018fa: f441 0100 orr.w r1, r1, #8388608 ; 0x800000 + 80018fe: f021 417f bic.w r1, r1, #4278190080 ; 0xff000000 + 8001902: bf18 it ne + 8001904: 4249 negne r1, r1 + 8001906: ea92 0f03 teq r2, r3 + 800190a: d03f beq.n 800198c <__addsf3+0xd8> + 800190c: f1a2 0201 sub.w r2, r2, #1 + 8001910: fa41 fc03 asr.w ip, r1, r3 + 8001914: eb10 000c adds.w r0, r0, ip + 8001918: f1c3 0320 rsb r3, r3, #32 + 800191c: fa01 f103 lsl.w r1, r1, r3 + 8001920: f000 4300 and.w r3, r0, #2147483648 ; 0x80000000 + 8001924: d502 bpl.n 800192c <__addsf3+0x78> + 8001926: 4249 negs r1, r1 + 8001928: eb60 0040 sbc.w r0, r0, r0, lsl #1 + 800192c: f5b0 0f00 cmp.w r0, #8388608 ; 0x800000 + 8001930: d313 bcc.n 800195a <__addsf3+0xa6> + 8001932: f1b0 7f80 cmp.w r0, #16777216 ; 0x1000000 + 8001936: d306 bcc.n 8001946 <__addsf3+0x92> + 8001938: 0840 lsrs r0, r0, #1 + 800193a: ea4f 0131 mov.w r1, r1, rrx + 800193e: f102 0201 add.w r2, r2, #1 + 8001942: 2afe cmp r2, #254 ; 0xfe + 8001944: d251 bcs.n 80019ea <__addsf3+0x136> + 8001946: f1b1 4f00 cmp.w r1, #2147483648 ; 0x80000000 + 800194a: eb40 50c2 adc.w r0, r0, r2, lsl #23 + 800194e: bf08 it eq + 8001950: f020 0001 biceq.w r0, r0, #1 + 8001954: ea40 0003 orr.w r0, r0, r3 + 8001958: 4770 bx lr + 800195a: 0049 lsls r1, r1, #1 + 800195c: eb40 0000 adc.w r0, r0, r0 + 8001960: 3a01 subs r2, #1 + 8001962: bf28 it cs + 8001964: f5b0 0f00 cmpcs.w r0, #8388608 ; 0x800000 + 8001968: d2ed bcs.n 8001946 <__addsf3+0x92> + 800196a: fab0 fc80 clz ip, r0 + 800196e: f1ac 0c08 sub.w ip, ip, #8 + 8001972: ebb2 020c subs.w r2, r2, ip + 8001976: fa00 f00c lsl.w r0, r0, ip + 800197a: bfaa itet ge + 800197c: eb00 50c2 addge.w r0, r0, r2, lsl #23 + 8001980: 4252 neglt r2, r2 + 8001982: 4318 orrge r0, r3 + 8001984: bfbc itt lt + 8001986: 40d0 lsrlt r0, r2 + 8001988: 4318 orrlt r0, r3 + 800198a: 4770 bx lr + 800198c: f092 0f00 teq r2, #0 + 8001990: f481 0100 eor.w r1, r1, #8388608 ; 0x800000 + 8001994: bf06 itte eq + 8001996: f480 0000 eoreq.w r0, r0, #8388608 ; 0x800000 + 800199a: 3201 addeq r2, #1 + 800199c: 3b01 subne r3, #1 + 800199e: e7b5 b.n 800190c <__addsf3+0x58> + 80019a0: ea4f 0341 mov.w r3, r1, lsl #1 + 80019a4: ea7f 6c22 mvns.w ip, r2, asr #24 + 80019a8: bf18 it ne + 80019aa: ea7f 6c23 mvnsne.w ip, r3, asr #24 + 80019ae: d021 beq.n 80019f4 <__addsf3+0x140> + 80019b0: ea92 0f03 teq r2, r3 + 80019b4: d004 beq.n 80019c0 <__addsf3+0x10c> + 80019b6: f092 0f00 teq r2, #0 + 80019ba: bf08 it eq + 80019bc: 4608 moveq r0, r1 + 80019be: 4770 bx lr + 80019c0: ea90 0f01 teq r0, r1 + 80019c4: bf1c itt ne + 80019c6: 2000 movne r0, #0 + 80019c8: 4770 bxne lr + 80019ca: f012 4f7f tst.w r2, #4278190080 ; 0xff000000 + 80019ce: d104 bne.n 80019da <__addsf3+0x126> + 80019d0: 0040 lsls r0, r0, #1 + 80019d2: bf28 it cs + 80019d4: f040 4000 orrcs.w r0, r0, #2147483648 ; 0x80000000 + 80019d8: 4770 bx lr + 80019da: f112 7200 adds.w r2, r2, #33554432 ; 0x2000000 + 80019de: bf3c itt cc + 80019e0: f500 0000 addcc.w r0, r0, #8388608 ; 0x800000 + 80019e4: 4770 bxcc lr + 80019e6: f000 4300 and.w r3, r0, #2147483648 ; 0x80000000 + 80019ea: f043 40fe orr.w r0, r3, #2130706432 ; 0x7f000000 + 80019ee: f440 0000 orr.w r0, r0, #8388608 ; 0x800000 + 80019f2: 4770 bx lr + 80019f4: ea7f 6222 mvns.w r2, r2, asr #24 + 80019f8: bf16 itet ne + 80019fa: 4608 movne r0, r1 + 80019fc: ea7f 6323 mvnseq.w r3, r3, asr #24 + 8001a00: 4601 movne r1, r0 + 8001a02: 0242 lsls r2, r0, #9 + 8001a04: bf06 itte eq + 8001a06: ea5f 2341 movseq.w r3, r1, lsl #9 + 8001a0a: ea90 0f01 teqeq r0, r1 + 8001a0e: f440 0080 orrne.w r0, r0, #4194304 ; 0x400000 + 8001a12: 4770 bx lr + +08001a14 <__aeabi_ui2f>: + 8001a14: f04f 0300 mov.w r3, #0 + 8001a18: e004 b.n 8001a24 <__aeabi_i2f+0x8> + 8001a1a: bf00 nop + +08001a1c <__aeabi_i2f>: + 8001a1c: f010 4300 ands.w r3, r0, #2147483648 ; 0x80000000 + 8001a20: bf48 it mi + 8001a22: 4240 negmi r0, r0 + 8001a24: ea5f 0c00 movs.w ip, r0 + 8001a28: bf08 it eq + 8001a2a: 4770 bxeq lr + 8001a2c: f043 4396 orr.w r3, r3, #1258291200 ; 0x4b000000 + 8001a30: 4601 mov r1, r0 + 8001a32: f04f 0000 mov.w r0, #0 + 8001a36: e01c b.n 8001a72 <__aeabi_l2f+0x2a> + +08001a38 <__aeabi_ul2f>: + 8001a38: ea50 0201 orrs.w r2, r0, r1 + 8001a3c: bf08 it eq + 8001a3e: 4770 bxeq lr + 8001a40: f04f 0300 mov.w r3, #0 + 8001a44: e00a b.n 8001a5c <__aeabi_l2f+0x14> + 8001a46: bf00 nop + +08001a48 <__aeabi_l2f>: + 8001a48: ea50 0201 orrs.w r2, r0, r1 + 8001a4c: bf08 it eq + 8001a4e: 4770 bxeq lr + 8001a50: f011 4300 ands.w r3, r1, #2147483648 ; 0x80000000 + 8001a54: d502 bpl.n 8001a5c <__aeabi_l2f+0x14> + 8001a56: 4240 negs r0, r0 + 8001a58: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 8001a5c: ea5f 0c01 movs.w ip, r1 + 8001a60: bf02 ittt eq + 8001a62: 4684 moveq ip, r0 + 8001a64: 4601 moveq r1, r0 + 8001a66: 2000 moveq r0, #0 + 8001a68: f043 43b6 orr.w r3, r3, #1526726656 ; 0x5b000000 + 8001a6c: bf08 it eq + 8001a6e: f1a3 5380 subeq.w r3, r3, #268435456 ; 0x10000000 + 8001a72: f5a3 0300 sub.w r3, r3, #8388608 ; 0x800000 + 8001a76: fabc f28c clz r2, ip + 8001a7a: 3a08 subs r2, #8 + 8001a7c: eba3 53c2 sub.w r3, r3, r2, lsl #23 + 8001a80: db10 blt.n 8001aa4 <__aeabi_l2f+0x5c> + 8001a82: fa01 fc02 lsl.w ip, r1, r2 + 8001a86: 4463 add r3, ip + 8001a88: fa00 fc02 lsl.w ip, r0, r2 + 8001a8c: f1c2 0220 rsb r2, r2, #32 + 8001a90: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000 + 8001a94: fa20 f202 lsr.w r2, r0, r2 + 8001a98: eb43 0002 adc.w r0, r3, r2 + 8001a9c: bf08 it eq + 8001a9e: f020 0001 biceq.w r0, r0, #1 + 8001aa2: 4770 bx lr + 8001aa4: f102 0220 add.w r2, r2, #32 + 8001aa8: fa01 fc02 lsl.w ip, r1, r2 + 8001aac: f1c2 0220 rsb r2, r2, #32 + 8001ab0: ea50 004c orrs.w r0, r0, ip, lsl #1 + 8001ab4: fa21 f202 lsr.w r2, r1, r2 + 8001ab8: eb43 0002 adc.w r0, r3, r2 + 8001abc: bf08 it eq + 8001abe: ea20 70dc biceq.w r0, r0, ip, lsr #31 + 8001ac2: 4770 bx lr + +08001ac4 <__aeabi_f2iz>: + 8001ac4: ea4f 0240 mov.w r2, r0, lsl #1 + 8001ac8: f1b2 4ffe cmp.w r2, #2130706432 ; 0x7f000000 + 8001acc: d30f bcc.n 8001aee <__aeabi_f2iz+0x2a> + 8001ace: f04f 039e mov.w r3, #158 ; 0x9e + 8001ad2: ebb3 6212 subs.w r2, r3, r2, lsr #24 + 8001ad6: d90d bls.n 8001af4 <__aeabi_f2iz+0x30> + 8001ad8: ea4f 2300 mov.w r3, r0, lsl #8 + 8001adc: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000 + 8001ae0: f010 4f00 tst.w r0, #2147483648 ; 0x80000000 + 8001ae4: fa23 f002 lsr.w r0, r3, r2 + 8001ae8: bf18 it ne + 8001aea: 4240 negne r0, r0 + 8001aec: 4770 bx lr + 8001aee: f04f 0000 mov.w r0, #0 + 8001af2: 4770 bx lr + 8001af4: f112 0f61 cmn.w r2, #97 ; 0x61 + 8001af8: d101 bne.n 8001afe <__aeabi_f2iz+0x3a> + 8001afa: 0242 lsls r2, r0, #9 + 8001afc: d105 bne.n 8001b0a <__aeabi_f2iz+0x46> + 8001afe: f010 4000 ands.w r0, r0, #2147483648 ; 0x80000000 + 8001b02: bf08 it eq + 8001b04: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000 + 8001b08: 4770 bx lr + 8001b0a: f04f 0000 mov.w r0, #0 + 8001b0e: 4770 bx lr + +08001b10 <__aeabi_uldivmod>: + 8001b10: b953 cbnz r3, 8001b28 <__aeabi_uldivmod+0x18> + 8001b12: b94a cbnz r2, 8001b28 <__aeabi_uldivmod+0x18> + 8001b14: 2900 cmp r1, #0 + 8001b16: bf08 it eq + 8001b18: 2800 cmpeq r0, #0 + 8001b1a: bf1c itt ne + 8001b1c: f04f 31ff movne.w r1, #4294967295 + 8001b20: f04f 30ff movne.w r0, #4294967295 + 8001b24: f000 b970 b.w 8001e08 <__aeabi_idiv0> + 8001b28: f1ad 0c08 sub.w ip, sp, #8 + 8001b2c: e96d ce04 strd ip, lr, [sp, #-16]! + 8001b30: f000 f806 bl 8001b40 <__udivmoddi4> + 8001b34: f8dd e004 ldr.w lr, [sp, #4] + 8001b38: e9dd 2302 ldrd r2, r3, [sp, #8] + 8001b3c: b004 add sp, #16 + 8001b3e: 4770 bx lr + +08001b40 <__udivmoddi4>: + 8001b40: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8001b44: 9e08 ldr r6, [sp, #32] + 8001b46: 460d mov r5, r1 + 8001b48: 4604 mov r4, r0 + 8001b4a: 460f mov r7, r1 + 8001b4c: 2b00 cmp r3, #0 + 8001b4e: d14a bne.n 8001be6 <__udivmoddi4+0xa6> + 8001b50: 428a cmp r2, r1 + 8001b52: 4694 mov ip, r2 + 8001b54: d965 bls.n 8001c22 <__udivmoddi4+0xe2> + 8001b56: fab2 f382 clz r3, r2 + 8001b5a: b143 cbz r3, 8001b6e <__udivmoddi4+0x2e> + 8001b5c: fa02 fc03 lsl.w ip, r2, r3 + 8001b60: f1c3 0220 rsb r2, r3, #32 + 8001b64: 409f lsls r7, r3 + 8001b66: fa20 f202 lsr.w r2, r0, r2 + 8001b6a: 4317 orrs r7, r2 + 8001b6c: 409c lsls r4, r3 + 8001b6e: ea4f 4e1c mov.w lr, ip, lsr #16 + 8001b72: fa1f f58c uxth.w r5, ip + 8001b76: fbb7 f1fe udiv r1, r7, lr + 8001b7a: 0c22 lsrs r2, r4, #16 + 8001b7c: fb0e 7711 mls r7, lr, r1, r7 + 8001b80: ea42 4207 orr.w r2, r2, r7, lsl #16 + 8001b84: fb01 f005 mul.w r0, r1, r5 + 8001b88: 4290 cmp r0, r2 + 8001b8a: d90a bls.n 8001ba2 <__udivmoddi4+0x62> + 8001b8c: eb1c 0202 adds.w r2, ip, r2 + 8001b90: f101 37ff add.w r7, r1, #4294967295 + 8001b94: f080 811b bcs.w 8001dce <__udivmoddi4+0x28e> + 8001b98: 4290 cmp r0, r2 + 8001b9a: f240 8118 bls.w 8001dce <__udivmoddi4+0x28e> + 8001b9e: 3902 subs r1, #2 + 8001ba0: 4462 add r2, ip + 8001ba2: 1a12 subs r2, r2, r0 + 8001ba4: b2a4 uxth r4, r4 + 8001ba6: fbb2 f0fe udiv r0, r2, lr + 8001baa: fb0e 2210 mls r2, lr, r0, r2 + 8001bae: ea44 4402 orr.w r4, r4, r2, lsl #16 + 8001bb2: fb00 f505 mul.w r5, r0, r5 + 8001bb6: 42a5 cmp r5, r4 + 8001bb8: d90a bls.n 8001bd0 <__udivmoddi4+0x90> + 8001bba: eb1c 0404 adds.w r4, ip, r4 + 8001bbe: f100 32ff add.w r2, r0, #4294967295 + 8001bc2: f080 8106 bcs.w 8001dd2 <__udivmoddi4+0x292> + 8001bc6: 42a5 cmp r5, r4 + 8001bc8: f240 8103 bls.w 8001dd2 <__udivmoddi4+0x292> + 8001bcc: 4464 add r4, ip + 8001bce: 3802 subs r0, #2 + 8001bd0: ea40 4001 orr.w r0, r0, r1, lsl #16 + 8001bd4: 1b64 subs r4, r4, r5 + 8001bd6: 2100 movs r1, #0 + 8001bd8: b11e cbz r6, 8001be2 <__udivmoddi4+0xa2> + 8001bda: 40dc lsrs r4, r3 + 8001bdc: 2300 movs r3, #0 + 8001bde: e9c6 4300 strd r4, r3, [r6] + 8001be2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8001be6: 428b cmp r3, r1 + 8001be8: d908 bls.n 8001bfc <__udivmoddi4+0xbc> + 8001bea: 2e00 cmp r6, #0 + 8001bec: f000 80ec beq.w 8001dc8 <__udivmoddi4+0x288> + 8001bf0: 2100 movs r1, #0 + 8001bf2: e9c6 0500 strd r0, r5, [r6] + 8001bf6: 4608 mov r0, r1 + 8001bf8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8001bfc: fab3 f183 clz r1, r3 + 8001c00: 2900 cmp r1, #0 + 8001c02: d149 bne.n 8001c98 <__udivmoddi4+0x158> + 8001c04: 42ab cmp r3, r5 + 8001c06: d302 bcc.n 8001c0e <__udivmoddi4+0xce> + 8001c08: 4282 cmp r2, r0 + 8001c0a: f200 80f7 bhi.w 8001dfc <__udivmoddi4+0x2bc> + 8001c0e: 1a84 subs r4, r0, r2 + 8001c10: eb65 0203 sbc.w r2, r5, r3 + 8001c14: 2001 movs r0, #1 + 8001c16: 4617 mov r7, r2 + 8001c18: 2e00 cmp r6, #0 + 8001c1a: d0e2 beq.n 8001be2 <__udivmoddi4+0xa2> + 8001c1c: e9c6 4700 strd r4, r7, [r6] + 8001c20: e7df b.n 8001be2 <__udivmoddi4+0xa2> + 8001c22: b902 cbnz r2, 8001c26 <__udivmoddi4+0xe6> + 8001c24: deff udf #255 ; 0xff + 8001c26: fab2 f382 clz r3, r2 + 8001c2a: 2b00 cmp r3, #0 + 8001c2c: f040 808f bne.w 8001d4e <__udivmoddi4+0x20e> + 8001c30: 1a8a subs r2, r1, r2 + 8001c32: ea4f 471c mov.w r7, ip, lsr #16 + 8001c36: fa1f fe8c uxth.w lr, ip + 8001c3a: 2101 movs r1, #1 + 8001c3c: fbb2 f5f7 udiv r5, r2, r7 + 8001c40: fb07 2015 mls r0, r7, r5, r2 + 8001c44: 0c22 lsrs r2, r4, #16 + 8001c46: ea42 4200 orr.w r2, r2, r0, lsl #16 + 8001c4a: fb0e f005 mul.w r0, lr, r5 + 8001c4e: 4290 cmp r0, r2 + 8001c50: d908 bls.n 8001c64 <__udivmoddi4+0x124> + 8001c52: eb1c 0202 adds.w r2, ip, r2 + 8001c56: f105 38ff add.w r8, r5, #4294967295 + 8001c5a: d202 bcs.n 8001c62 <__udivmoddi4+0x122> + 8001c5c: 4290 cmp r0, r2 + 8001c5e: f200 80ca bhi.w 8001df6 <__udivmoddi4+0x2b6> + 8001c62: 4645 mov r5, r8 + 8001c64: 1a12 subs r2, r2, r0 + 8001c66: b2a4 uxth r4, r4 + 8001c68: fbb2 f0f7 udiv r0, r2, r7 + 8001c6c: fb07 2210 mls r2, r7, r0, r2 + 8001c70: ea44 4402 orr.w r4, r4, r2, lsl #16 + 8001c74: fb0e fe00 mul.w lr, lr, r0 + 8001c78: 45a6 cmp lr, r4 + 8001c7a: d908 bls.n 8001c8e <__udivmoddi4+0x14e> + 8001c7c: eb1c 0404 adds.w r4, ip, r4 + 8001c80: f100 32ff add.w r2, r0, #4294967295 + 8001c84: d202 bcs.n 8001c8c <__udivmoddi4+0x14c> + 8001c86: 45a6 cmp lr, r4 + 8001c88: f200 80ba bhi.w 8001e00 <__udivmoddi4+0x2c0> + 8001c8c: 4610 mov r0, r2 + 8001c8e: eba4 040e sub.w r4, r4, lr + 8001c92: ea40 4005 orr.w r0, r0, r5, lsl #16 + 8001c96: e79f b.n 8001bd8 <__udivmoddi4+0x98> + 8001c98: f1c1 0720 rsb r7, r1, #32 + 8001c9c: 408b lsls r3, r1 + 8001c9e: fa22 fc07 lsr.w ip, r2, r7 + 8001ca2: ea4c 0c03 orr.w ip, ip, r3 + 8001ca6: fa05 f401 lsl.w r4, r5, r1 + 8001caa: fa20 f307 lsr.w r3, r0, r7 + 8001cae: 40fd lsrs r5, r7 + 8001cb0: 4323 orrs r3, r4 + 8001cb2: fa00 f901 lsl.w r9, r0, r1 + 8001cb6: ea4f 401c mov.w r0, ip, lsr #16 + 8001cba: fa1f fe8c uxth.w lr, ip + 8001cbe: fbb5 f8f0 udiv r8, r5, r0 + 8001cc2: 0c1c lsrs r4, r3, #16 + 8001cc4: fb00 5518 mls r5, r0, r8, r5 + 8001cc8: ea44 4405 orr.w r4, r4, r5, lsl #16 + 8001ccc: fb08 f50e mul.w r5, r8, lr + 8001cd0: 42a5 cmp r5, r4 + 8001cd2: fa02 f201 lsl.w r2, r2, r1 + 8001cd6: d90b bls.n 8001cf0 <__udivmoddi4+0x1b0> + 8001cd8: eb1c 0404 adds.w r4, ip, r4 + 8001cdc: f108 3aff add.w sl, r8, #4294967295 + 8001ce0: f080 8087 bcs.w 8001df2 <__udivmoddi4+0x2b2> + 8001ce4: 42a5 cmp r5, r4 + 8001ce6: f240 8084 bls.w 8001df2 <__udivmoddi4+0x2b2> + 8001cea: f1a8 0802 sub.w r8, r8, #2 + 8001cee: 4464 add r4, ip + 8001cf0: 1b64 subs r4, r4, r5 + 8001cf2: b29d uxth r5, r3 + 8001cf4: fbb4 f3f0 udiv r3, r4, r0 + 8001cf8: fb00 4413 mls r4, r0, r3, r4 + 8001cfc: ea45 4404 orr.w r4, r5, r4, lsl #16 + 8001d00: fb03 fe0e mul.w lr, r3, lr + 8001d04: 45a6 cmp lr, r4 + 8001d06: d908 bls.n 8001d1a <__udivmoddi4+0x1da> + 8001d08: eb1c 0404 adds.w r4, ip, r4 + 8001d0c: f103 30ff add.w r0, r3, #4294967295 + 8001d10: d26b bcs.n 8001dea <__udivmoddi4+0x2aa> + 8001d12: 45a6 cmp lr, r4 + 8001d14: d969 bls.n 8001dea <__udivmoddi4+0x2aa> + 8001d16: 3b02 subs r3, #2 + 8001d18: 4464 add r4, ip + 8001d1a: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8001d1e: fba0 8302 umull r8, r3, r0, r2 + 8001d22: eba4 040e sub.w r4, r4, lr + 8001d26: 429c cmp r4, r3 + 8001d28: 46c6 mov lr, r8 + 8001d2a: 461d mov r5, r3 + 8001d2c: d355 bcc.n 8001dda <__udivmoddi4+0x29a> + 8001d2e: d052 beq.n 8001dd6 <__udivmoddi4+0x296> + 8001d30: b156 cbz r6, 8001d48 <__udivmoddi4+0x208> + 8001d32: ebb9 030e subs.w r3, r9, lr + 8001d36: eb64 0405 sbc.w r4, r4, r5 + 8001d3a: fa04 f707 lsl.w r7, r4, r7 + 8001d3e: 40cb lsrs r3, r1 + 8001d40: 40cc lsrs r4, r1 + 8001d42: 431f orrs r7, r3 + 8001d44: e9c6 7400 strd r7, r4, [r6] + 8001d48: 2100 movs r1, #0 + 8001d4a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8001d4e: f1c3 0120 rsb r1, r3, #32 + 8001d52: fa02 fc03 lsl.w ip, r2, r3 + 8001d56: fa20 f201 lsr.w r2, r0, r1 + 8001d5a: fa25 f101 lsr.w r1, r5, r1 + 8001d5e: 409d lsls r5, r3 + 8001d60: 432a orrs r2, r5 + 8001d62: ea4f 471c mov.w r7, ip, lsr #16 + 8001d66: fa1f fe8c uxth.w lr, ip + 8001d6a: fbb1 f0f7 udiv r0, r1, r7 + 8001d6e: fb07 1510 mls r5, r7, r0, r1 + 8001d72: 0c11 lsrs r1, r2, #16 + 8001d74: ea41 4105 orr.w r1, r1, r5, lsl #16 + 8001d78: fb00 f50e mul.w r5, r0, lr + 8001d7c: 428d cmp r5, r1 + 8001d7e: fa04 f403 lsl.w r4, r4, r3 + 8001d82: d908 bls.n 8001d96 <__udivmoddi4+0x256> + 8001d84: eb1c 0101 adds.w r1, ip, r1 + 8001d88: f100 38ff add.w r8, r0, #4294967295 + 8001d8c: d22f bcs.n 8001dee <__udivmoddi4+0x2ae> + 8001d8e: 428d cmp r5, r1 + 8001d90: d92d bls.n 8001dee <__udivmoddi4+0x2ae> + 8001d92: 3802 subs r0, #2 + 8001d94: 4461 add r1, ip + 8001d96: 1b49 subs r1, r1, r5 + 8001d98: b292 uxth r2, r2 + 8001d9a: fbb1 f5f7 udiv r5, r1, r7 + 8001d9e: fb07 1115 mls r1, r7, r5, r1 + 8001da2: ea42 4201 orr.w r2, r2, r1, lsl #16 + 8001da6: fb05 f10e mul.w r1, r5, lr + 8001daa: 4291 cmp r1, r2 + 8001dac: d908 bls.n 8001dc0 <__udivmoddi4+0x280> + 8001dae: eb1c 0202 adds.w r2, ip, r2 + 8001db2: f105 38ff add.w r8, r5, #4294967295 + 8001db6: d216 bcs.n 8001de6 <__udivmoddi4+0x2a6> + 8001db8: 4291 cmp r1, r2 + 8001dba: d914 bls.n 8001de6 <__udivmoddi4+0x2a6> + 8001dbc: 3d02 subs r5, #2 + 8001dbe: 4462 add r2, ip + 8001dc0: 1a52 subs r2, r2, r1 + 8001dc2: ea45 4100 orr.w r1, r5, r0, lsl #16 + 8001dc6: e739 b.n 8001c3c <__udivmoddi4+0xfc> + 8001dc8: 4631 mov r1, r6 + 8001dca: 4630 mov r0, r6 + 8001dcc: e709 b.n 8001be2 <__udivmoddi4+0xa2> + 8001dce: 4639 mov r1, r7 + 8001dd0: e6e7 b.n 8001ba2 <__udivmoddi4+0x62> + 8001dd2: 4610 mov r0, r2 + 8001dd4: e6fc b.n 8001bd0 <__udivmoddi4+0x90> + 8001dd6: 45c1 cmp r9, r8 + 8001dd8: d2aa bcs.n 8001d30 <__udivmoddi4+0x1f0> + 8001dda: ebb8 0e02 subs.w lr, r8, r2 + 8001dde: eb63 050c sbc.w r5, r3, ip + 8001de2: 3801 subs r0, #1 + 8001de4: e7a4 b.n 8001d30 <__udivmoddi4+0x1f0> + 8001de6: 4645 mov r5, r8 + 8001de8: e7ea b.n 8001dc0 <__udivmoddi4+0x280> + 8001dea: 4603 mov r3, r0 + 8001dec: e795 b.n 8001d1a <__udivmoddi4+0x1da> + 8001dee: 4640 mov r0, r8 + 8001df0: e7d1 b.n 8001d96 <__udivmoddi4+0x256> + 8001df2: 46d0 mov r8, sl + 8001df4: e77c b.n 8001cf0 <__udivmoddi4+0x1b0> + 8001df6: 3d02 subs r5, #2 + 8001df8: 4462 add r2, ip + 8001dfa: e733 b.n 8001c64 <__udivmoddi4+0x124> + 8001dfc: 4608 mov r0, r1 + 8001dfe: e70b b.n 8001c18 <__udivmoddi4+0xd8> + 8001e00: 4464 add r4, ip + 8001e02: 3802 subs r0, #2 + 8001e04: e743 b.n 8001c8e <__udivmoddi4+0x14e> + 8001e06: bf00 nop + +08001e08 <__aeabi_idiv0>: + 8001e08: 4770 bx lr + 8001e0a: bf00 nop + +08001e0c <MX_ADC_Init>: + 8001e0c: 4813 ldr r0, [pc, #76] ; (8001e5c <MX_ADC_Init+0x50>) + 8001e0e: 4a14 ldr r2, [pc, #80] ; (8001e60 <MX_ADC_Init+0x54>) + 8001e10: b508 push {r3, lr} + 8001e12: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 + 8001e16: e9c0 2300 strd r2, r3, [r0] + 8001e1a: 2204 movs r2, #4 + 8001e1c: 2300 movs r3, #0 + 8001e1e: 6142 str r2, [r0, #20] + 8001e20: 2201 movs r2, #1 + 8001e22: 61c2 str r2, [r0, #28] + 8001e24: f44f 5180 mov.w r1, #4096 ; 0x1000 + 8001e28: 2207 movs r2, #7 + 8001e2a: 8303 strh r3, [r0, #24] + 8001e2c: e9c0 3302 strd r3, r3, [r0, #8] + 8001e30: e9c0 3309 strd r3, r3, [r0, #36] ; 0x24 + 8001e34: e9c0 120c strd r1, r2, [r0, #48] ; 0x30 + 8001e38: 6103 str r3, [r0, #16] + 8001e3a: 7683 strb r3, [r0, #26] + 8001e3c: f880 3020 strb.w r3, [r0, #32] + 8001e40: f880 302c strb.w r3, [r0, #44] ; 0x2c + 8001e44: 6382 str r2, [r0, #56] ; 0x38 + 8001e46: f880 303c strb.w r3, [r0, #60] ; 0x3c + 8001e4a: 64c3 str r3, [r0, #76] ; 0x4c + 8001e4c: f005 fb1a bl 8007484 <HAL_ADC_Init> + 8001e50: b118 cbz r0, 8001e5a <MX_ADC_Init+0x4e> + 8001e52: e8bd 4008 ldmia.w sp!, {r3, lr} + 8001e56: f000 bc25 b.w 80026a4 <Error_Handler> + 8001e5a: bd08 pop {r3, pc} + 8001e5c: 200008ec .word 0x200008ec + 8001e60: 40012400 .word 0x40012400 + +08001e64 <HAL_ADC_MspInit>: + 8001e64: 6802 ldr r2, [r0, #0] + 8001e66: 4b08 ldr r3, [pc, #32] ; (8001e88 <HAL_ADC_MspInit+0x24>) + 8001e68: 429a cmp r2, r3 + 8001e6a: b082 sub sp, #8 + 8001e6c: d10a bne.n 8001e84 <HAL_ADC_MspInit+0x20> + 8001e6e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8001e72: 6e1a ldr r2, [r3, #96] ; 0x60 + 8001e74: f442 7200 orr.w r2, r2, #512 ; 0x200 + 8001e78: 661a str r2, [r3, #96] ; 0x60 + 8001e7a: 6e1b ldr r3, [r3, #96] ; 0x60 + 8001e7c: f403 7300 and.w r3, r3, #512 ; 0x200 + 8001e80: 9301 str r3, [sp, #4] + 8001e82: 9b01 ldr r3, [sp, #4] + 8001e84: b002 add sp, #8 + 8001e86: 4770 bx lr + 8001e88: 40012400 .word 0x40012400 + +08001e8c <HAL_ADC_MspDeInit>: + 8001e8c: 6802 ldr r2, [r0, #0] + 8001e8e: 4b05 ldr r3, [pc, #20] ; (8001ea4 <HAL_ADC_MspDeInit+0x18>) + 8001e90: 429a cmp r2, r3 + 8001e92: bf01 itttt eq + 8001e94: f04f 42b0 moveq.w r2, #1476395008 ; 0x58000000 + 8001e98: 6e13 ldreq r3, [r2, #96] ; 0x60 + 8001e9a: f423 7300 biceq.w r3, r3, #512 ; 0x200 + 8001e9e: 6613 streq r3, [r2, #96] ; 0x60 + 8001ea0: 4770 bx lr + 8001ea2: bf00 nop + 8001ea4: 40012400 .word 0x40012400 + +08001ea8 <ADC_ReadChannels>: + 8001ea8: b530 push {r4, r5, lr} + 8001eaa: b085 sub sp, #20 + 8001eac: 2400 movs r4, #0 + 8001eae: 4605 mov r5, r0 + 8001eb0: e9cd 4401 strd r4, r4, [sp, #4] + 8001eb4: 9403 str r4, [sp, #12] + 8001eb6: f7ff ffa9 bl 8001e0c <MX_ADC_Init> + 8001eba: 4814 ldr r0, [pc, #80] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001ebc: f005 fe7a bl 8007bb4 <HAL_ADCEx_Calibration_Start> + 8001ec0: b108 cbz r0, 8001ec6 <ADC_ReadChannels+0x1e> + 8001ec2: f000 fbef bl 80026a4 <Error_Handler> + 8001ec6: 4811 ldr r0, [pc, #68] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001ec8: 9403 str r4, [sp, #12] + 8001eca: a901 add r1, sp, #4 + 8001ecc: e9cd 5401 strd r5, r4, [sp, #4] + 8001ed0: f005 fc36 bl 8007740 <HAL_ADC_ConfigChannel> + 8001ed4: b108 cbz r0, 8001eda <ADC_ReadChannels+0x32> + 8001ed6: f000 fbe5 bl 80026a4 <Error_Handler> + 8001eda: 480c ldr r0, [pc, #48] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001edc: f005 fd94 bl 8007a08 <HAL_ADC_Start> + 8001ee0: b108 cbz r0, 8001ee6 <ADC_ReadChannels+0x3e> + 8001ee2: f000 fbdf bl 80026a4 <Error_Handler> + 8001ee6: f04f 31ff mov.w r1, #4294967295 + 8001eea: 4808 ldr r0, [pc, #32] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001eec: f005 fbca bl 8007684 <HAL_ADC_PollForConversion> + 8001ef0: 4806 ldr r0, [pc, #24] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001ef2: f005 fe41 bl 8007b78 <HAL_ADC_Stop> + 8001ef6: 4805 ldr r0, [pc, #20] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001ef8: f005 fc1e bl 8007738 <HAL_ADC_GetValue> + 8001efc: 4604 mov r4, r0 + 8001efe: 4803 ldr r0, [pc, #12] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001f00: f005 fde4 bl 8007acc <HAL_ADC_DeInit> + 8001f04: 4620 mov r0, r4 + 8001f06: b005 add sp, #20 + 8001f08: bd30 pop {r4, r5, pc} + 8001f0a: bf00 nop + 8001f0c: 200008ec .word 0x200008ec + +08001f10 <SYS_InitMeasurement>: + 8001f10: 4b01 ldr r3, [pc, #4] ; (8001f18 <SYS_InitMeasurement+0x8>) + 8001f12: 4a02 ldr r2, [pc, #8] ; (8001f1c <SYS_InitMeasurement+0xc>) + 8001f14: 601a str r2, [r3, #0] + 8001f16: 4770 bx lr + 8001f18: 200008ec .word 0x200008ec + 8001f1c: 40012400 .word 0x40012400 + +08001f20 <SYS_GetBatteryLevel>: + 8001f20: b508 push {r3, lr} + 8001f22: 4809 ldr r0, [pc, #36] ; (8001f48 <SYS_GetBatteryLevel+0x28>) + 8001f24: f7ff ffc0 bl 8001ea8 <ADC_ReadChannels> + 8001f28: b168 cbz r0, 8001f46 <SYS_GetBatteryLevel+0x26> + 8001f2a: 4b08 ldr r3, [pc, #32] ; (8001f4c <SYS_GetBatteryLevel+0x2c>) + 8001f2c: f8b3 30aa ldrh.w r3, [r3, #170] ; 0xaa + 8001f30: f64f 72ff movw r2, #65535 ; 0xffff + 8001f34: 4293 cmp r3, r2 + 8001f36: bf16 itet ne + 8001f38: f640 42e4 movwne r2, #3300 ; 0xce4 + 8001f3c: 4b04 ldreq r3, [pc, #16] ; (8001f50 <SYS_GetBatteryLevel+0x30>) + 8001f3e: 4353 mulne r3, r2 + 8001f40: fbb3 f3f0 udiv r3, r3, r0 + 8001f44: b298 uxth r0, r3 + 8001f46: bd08 pop {r3, pc} + 8001f48: b4002000 .word 0xb4002000 + 8001f4c: 1fff7500 .word 0x1fff7500 + 8001f50: 004c08d8 .word 0x004c08d8 + +08001f54 <SYS_GetTemperatureLevel>: + 8001f54: b513 push {r0, r1, r4, lr} + 8001f56: 2300 movs r3, #0 + 8001f58: f8ad 3006 strh.w r3, [sp, #6] + 8001f5c: f7ff ffe0 bl 8001f20 <SYS_GetBatteryLevel> + 8001f60: 4604 mov r4, r0 + 8001f62: 4819 ldr r0, [pc, #100] ; (8001fc8 <SYS_GetTemperatureLevel+0x74>) + 8001f64: f7ff ffa0 bl 8001ea8 <ADC_ReadChannels> + 8001f68: 4b18 ldr r3, [pc, #96] ; (8001fcc <SYS_GetTemperatureLevel+0x78>) + 8001f6a: f8b3 20c8 ldrh.w r2, [r3, #200] ; 0xc8 + 8001f6e: f8b3 10a8 ldrh.w r1, [r3, #168] ; 0xa8 + 8001f72: 428a cmp r2, r1 + 8001f74: fb04 f000 mul.w r0, r4, r0 + 8001f78: d018 beq.n 8001fac <SYS_GetTemperatureLevel+0x58> + 8001f7a: f640 43e4 movw r3, #3300 ; 0xce4 + 8001f7e: fbb0 f3f3 udiv r3, r0, r3 + 8001f82: 2064 movs r0, #100 ; 0x64 + 8001f84: 1a5b subs r3, r3, r1 + 8001f86: 4343 muls r3, r0 + 8001f88: 1a52 subs r2, r2, r1 + 8001f8a: fb93 f3f2 sdiv r3, r3, r2 + 8001f8e: 331e adds r3, #30 + 8001f90: b21b sxth r3, r3 + 8001f92: f8ad 3006 strh.w r3, [sp, #6] + 8001f96: f8bd 3006 ldrh.w r3, [sp, #6] + 8001f9a: b25b sxtb r3, r3 + 8001f9c: 021b lsls r3, r3, #8 + 8001f9e: f8ad 3006 strh.w r3, [sp, #6] + 8001fa2: f8bd 0006 ldrh.w r0, [sp, #6] + 8001fa6: b200 sxth r0, r0 + 8001fa8: b002 add sp, #8 + 8001faa: bd10 pop {r4, pc} + 8001fac: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8001fb0: f640 73ff movw r3, #4095 ; 0xfff + 8001fb4: fbb0 f3f3 udiv r3, r0, r3 + 8001fb8: 4353 muls r3, r2 + 8001fba: f5a3 2339 sub.w r3, r3, #757760 ; 0xb9000 + 8001fbe: f5a3 630c sub.w r3, r3, #2240 ; 0x8c0 + 8001fc2: f640 12c4 movw r2, #2500 ; 0x9c4 + 8001fc6: e7e0 b.n 8001f8a <SYS_GetTemperatureLevel+0x36> + 8001fc8: b0001000 .word 0xb0001000 + 8001fcc: 1fff7500 .word 0x1fff7500 + +08001fd0 <cmox_ll_init>: + 8001fd0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8001fd4: b082 sub sp, #8 + 8001fd6: 6a9a ldr r2, [r3, #40] ; 0x28 + 8001fd8: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 8001fdc: 629a str r2, [r3, #40] ; 0x28 + 8001fde: 6c9a ldr r2, [r3, #72] ; 0x48 + 8001fe0: f442 5280 orr.w r2, r2, #4096 ; 0x1000 + 8001fe4: 649a str r2, [r3, #72] ; 0x48 + 8001fe6: 6c9b ldr r3, [r3, #72] ; 0x48 + 8001fe8: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 8001fec: 9301 str r3, [sp, #4] + 8001fee: 9b01 ldr r3, [sp, #4] + 8001ff0: 2000 movs r0, #0 + 8001ff2: b002 add sp, #8 + 8001ff4: 4770 bx lr + +08001ff6 <LL_AHB1_GRP1_EnableClock>: + 8001ff6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8001ffa: b082 sub sp, #8 + 8001ffc: 6c9a ldr r2, [r3, #72] ; 0x48 + 8001ffe: 4302 orrs r2, r0 + 8002000: 649a str r2, [r3, #72] ; 0x48 + 8002002: 6c9b ldr r3, [r3, #72] ; 0x48 + 8002004: 4003 ands r3, r0 + 8002006: 9301 str r3, [sp, #4] + 8002008: 9b01 ldr r3, [sp, #4] + 800200a: b002 add sp, #8 + 800200c: 4770 bx lr + +0800200e <MX_DMA_Init>: + 800200e: b508 push {r3, lr} + 8002010: 2004 movs r0, #4 + 8002012: f7ff fff0 bl 8001ff6 <LL_AHB1_GRP1_EnableClock> + 8002016: 2001 movs r0, #1 + 8002018: f7ff ffed bl 8001ff6 <LL_AHB1_GRP1_EnableClock> + 800201c: 2002 movs r0, #2 + 800201e: f7ff ffea bl 8001ff6 <LL_AHB1_GRP1_EnableClock> + 8002022: 2200 movs r2, #0 + 8002024: 4611 mov r1, r2 + 8002026: 200b movs r0, #11 + 8002028: f005 fe62 bl 8007cf0 <HAL_NVIC_SetPriority> + 800202c: 200b movs r0, #11 + 800202e: f005 fe91 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002032: 2200 movs r2, #0 + 8002034: 4611 mov r1, r2 + 8002036: 200c movs r0, #12 + 8002038: f005 fe5a bl 8007cf0 <HAL_NVIC_SetPriority> + 800203c: 200c movs r0, #12 + 800203e: f005 fe89 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002042: 2200 movs r2, #0 + 8002044: 4611 mov r1, r2 + 8002046: 200d movs r0, #13 + 8002048: f005 fe52 bl 8007cf0 <HAL_NVIC_SetPriority> + 800204c: 200d movs r0, #13 + 800204e: f005 fe81 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002052: 2200 movs r2, #0 + 8002054: 4611 mov r1, r2 + 8002056: 200e movs r0, #14 + 8002058: f005 fe4a bl 8007cf0 <HAL_NVIC_SetPriority> + 800205c: 200e movs r0, #14 + 800205e: f005 fe79 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002062: 2200 movs r2, #0 + 8002064: 4611 mov r1, r2 + 8002066: 200f movs r0, #15 + 8002068: f005 fe42 bl 8007cf0 <HAL_NVIC_SetPriority> + 800206c: 200f movs r0, #15 + 800206e: f005 fe71 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002072: 2200 movs r2, #0 + 8002074: 4611 mov r1, r2 + 8002076: 2010 movs r0, #16 + 8002078: f005 fe3a bl 8007cf0 <HAL_NVIC_SetPriority> + 800207c: 2010 movs r0, #16 + 800207e: f005 fe69 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002082: 2200 movs r2, #0 + 8002084: 4611 mov r1, r2 + 8002086: 2011 movs r0, #17 + 8002088: f005 fe32 bl 8007cf0 <HAL_NVIC_SetPriority> + 800208c: 2011 movs r0, #17 + 800208e: f005 fe61 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002092: 2200 movs r2, #0 + 8002094: 2036 movs r0, #54 ; 0x36 + 8002096: 4611 mov r1, r2 + 8002098: f005 fe2a bl 8007cf0 <HAL_NVIC_SetPriority> + 800209c: e8bd 4008 ldmia.w sp!, {r3, lr} + 80020a0: 2036 movs r0, #54 ; 0x36 + 80020a2: f005 be57 b.w 8007d54 <HAL_NVIC_EnableIRQ> + ... + +080020a8 <FLASH_IF_INT_Clear_Error>: + 80020a8: b508 push {r3, lr} + 80020aa: f006 f89b bl 80081e4 <HAL_FLASH_Unlock> + 80020ae: b110 cbz r0, 80020b6 <FLASH_IF_INT_Clear_Error+0xe> + 80020b0: f06f 0004 mvn.w r0, #4 + 80020b4: bd08 pop {r3, pc} + 80020b6: 4b06 ldr r3, [pc, #24] ; (80020d0 <FLASH_IF_INT_Clear_Error+0x28>) + 80020b8: 699a ldr r2, [r3, #24] + 80020ba: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000 + 80020be: 619a str r2, [r3, #24] + 80020c0: f24c 32fa movw r2, #50170 ; 0xc3fa + 80020c4: 611a str r2, [r3, #16] + 80020c6: f006 f89f bl 8008208 <HAL_FLASH_Lock> + 80020ca: 2800 cmp r0, #0 + 80020cc: d0f2 beq.n 80020b4 <FLASH_IF_INT_Clear_Error+0xc> + 80020ce: e7ef b.n 80020b0 <FLASH_IF_INT_Clear_Error+0x8> + 80020d0: 58004000 .word 0x58004000 + +080020d4 <FLASH_IF_INT_Erase>: + 80020d4: b5f0 push {r4, r5, r6, r7, lr} + 80020d6: b085 sub sp, #20 + 80020d8: 2300 movs r3, #0 + 80020da: 460c mov r4, r1 + 80020dc: 9300 str r3, [sp, #0] + 80020de: 4606 mov r6, r0 + 80020e0: b3a8 cbz r0, 800214e <FLASH_IF_INT_Erase+0x7a> + 80020e2: f7ff ffe1 bl 80020a8 <FLASH_IF_INT_Clear_Error> + 80020e6: 4605 mov r5, r0 + 80020e8: bb70 cbnz r0, 8002148 <FLASH_IF_INT_Erase+0x74> + 80020ea: f006 f87b bl 80081e4 <HAL_FLASH_Unlock> + 80020ee: bb88 cbnz r0, 8002154 <FLASH_IF_INT_Erase+0x80> + 80020f0: 481a ldr r0, [pc, #104] ; (800215c <FLASH_IF_INT_Erase+0x88>) + 80020f2: 4a1b ldr r2, [pc, #108] ; (8002160 <FLASH_IF_INT_Erase+0x8c>) + 80020f4: 2302 movs r3, #2 + 80020f6: 9301 str r3, [sp, #4] + 80020f8: f8d0 15e0 ldr.w r1, [r0, #1504] ; 0x5e0 + 80020fc: f106 4378 add.w r3, r6, #4160749568 ; 0xf8000000 + 8002100: ea02 2181 and.w r1, r2, r1, lsl #10 + 8002104: fbb3 f7f1 udiv r7, r3, r1 + 8002108: fb01 3317 mls r3, r1, r7, r3 + 800210c: 0adb lsrs r3, r3, #11 + 800210e: 9302 str r3, [sp, #8] + 8002110: f8d0 05e0 ldr.w r0, [r0, #1504] ; 0x5e0 + 8002114: f104 4178 add.w r1, r4, #4160749568 ; 0xf8000000 + 8002118: 3901 subs r1, #1 + 800211a: 4431 add r1, r6 + 800211c: ea02 2280 and.w r2, r2, r0, lsl #10 + 8002120: fbb1 f0f2 udiv r0, r1, r2 + 8002124: fb02 1110 mls r1, r2, r0, r1 + 8002128: ebc3 23d1 rsb r3, r3, r1, lsr #11 + 800212c: 3301 adds r3, #1 + 800212e: 4669 mov r1, sp + 8002130: a801 add r0, sp, #4 + 8002132: 9303 str r3, [sp, #12] + 8002134: f006 f8e8 bl 8008308 <HAL_FLASHEx_Erase> + 8002138: b120 cbz r0, 8002144 <FLASH_IF_INT_Erase+0x70> + 800213a: 2802 cmp r0, #2 + 800213c: bf0c ite eq + 800213e: 2501 moveq r5, #1 + 8002140: f06f 0501 mvnne.w r5, #1 + 8002144: f006 f860 bl 8008208 <HAL_FLASH_Lock> + 8002148: 4628 mov r0, r5 + 800214a: b005 add sp, #20 + 800214c: bdf0 pop {r4, r5, r6, r7, pc} + 800214e: f06f 0505 mvn.w r5, #5 + 8002152: e7f9 b.n 8002148 <FLASH_IF_INT_Erase+0x74> + 8002154: f06f 0504 mvn.w r5, #4 + 8002158: e7f6 b.n 8002148 <FLASH_IF_INT_Erase+0x74> + 800215a: bf00 nop + 800215c: 1fff7000 .word 0x1fff7000 + 8002160: 03fffc00 .word 0x03fffc00 + +08002164 <FLASH_IF_Init>: + 8002164: 4b01 ldr r3, [pc, #4] ; (800216c <FLASH_IF_Init+0x8>) + 8002166: 6018 str r0, [r3, #0] + 8002168: 2000 movs r0, #0 + 800216a: 4770 bx lr + 800216c: 20000950 .word 0x20000950 + +08002170 <FLASH_IF_Write>: + 8002170: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8002174: b089 sub sp, #36 ; 0x24 + 8002176: f1b0 6f00 cmp.w r0, #134217728 ; 0x8000000 + 800217a: 4606 mov r6, r0 + 800217c: 460f mov r7, r1 + 800217e: 9200 str r2, [sp, #0] + 8002180: f0c0 80c5 bcc.w 800230e <FLASH_IF_Write+0x19e> + 8002184: f8df 8198 ldr.w r8, [pc, #408] ; 8002320 <FLASH_IF_Write+0x1b0> + 8002188: 4d66 ldr r5, [pc, #408] ; (8002324 <FLASH_IF_Write+0x1b4>) + 800218a: f8d8 35e0 ldr.w r3, [r8, #1504] ; 0x5e0 + 800218e: ea05 2383 and.w r3, r5, r3, lsl #10 + 8002192: f103 6300 add.w r3, r3, #134217728 ; 0x8000000 + 8002196: 3b01 subs r3, #1 + 8002198: 4298 cmp r0, r3 + 800219a: f200 80b8 bhi.w 800230e <FLASH_IF_Write+0x19e> + 800219e: 2800 cmp r0, #0 + 80021a0: f000 80b8 beq.w 8002314 <FLASH_IF_Write+0x1a4> + 80021a4: 2900 cmp r1, #0 + 80021a6: f000 80b5 beq.w 8002314 <FLASH_IF_Write+0x1a4> + 80021aa: ea40 0302 orr.w r3, r0, r2 + 80021ae: 075b lsls r3, r3, #29 + 80021b0: f040 80b0 bne.w 8002314 <FLASH_IF_Write+0x1a4> + 80021b4: f7ff ff78 bl 80020a8 <FLASH_IF_INT_Clear_Error> + 80021b8: 4604 mov r4, r0 + 80021ba: bba0 cbnz r0, 8002226 <FLASH_IF_Write+0xb6> + 80021bc: f006 f812 bl 80081e4 <HAL_FLASH_Unlock> + 80021c0: 2800 cmp r0, #0 + 80021c2: f040 80aa bne.w 800231a <FLASH_IF_Write+0x1aa> + 80021c6: f8d8 15e0 ldr.w r1, [r8, #1504] ; 0x5e0 + 80021ca: f106 4278 add.w r2, r6, #4160749568 ; 0xf8000000 + 80021ce: ea05 2181 and.w r1, r5, r1, lsl #10 + 80021d2: fbb2 f3f1 udiv r3, r2, r1 + 80021d6: fb01 2213 mls r2, r1, r3, r2 + 80021da: 9b00 ldr r3, [sp, #0] + 80021dc: f103 4378 add.w r3, r3, #4160749568 ; 0xf8000000 + 80021e0: 3b01 subs r3, #1 + 80021e2: 4433 add r3, r6 + 80021e4: fbb3 f0f1 udiv r0, r3, r1 + 80021e8: fb01 3310 mls r3, r1, r0, r3 + 80021ec: 0adb lsrs r3, r3, #11 + 80021ee: 3301 adds r3, #1 + 80021f0: ea4f 2ad2 mov.w sl, r2, lsr #11 + 80021f4: eba3 22d2 sub.w r2, r3, r2, lsr #11 + 80021f8: 2a01 cmp r2, #1 + 80021fa: 9303 str r3, [sp, #12] + 80021fc: bf88 it hi + 80021fe: f3c6 050a ubfxhi r5, r6, #0, #11 + 8002202: f50a 3880 add.w r8, sl, #65536 ; 0x10000 + 8002206: f1c6 0308 rsb r3, r6, #8 + 800220a: bf98 it ls + 800220c: 9d00 ldrls r5, [sp, #0] + 800220e: 9306 str r3, [sp, #24] + 8002210: bf88 it hi + 8002212: f5c5 6500 rsbhi r5, r5, #2048 ; 0x800 + 8002216: ea4f 28c8 mov.w r8, r8, lsl #11 + 800221a: 46b3 mov fp, r6 + 800221c: 9b03 ldr r3, [sp, #12] + 800221e: 459a cmp sl, r3 + 8002220: d305 bcc.n 800222e <FLASH_IF_Write+0xbe> + 8002222: f005 fff1 bl 8008208 <HAL_FLASH_Lock> + 8002226: 4620 mov r0, r4 + 8002228: b009 add sp, #36 ; 0x24 + 800222a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800222e: f1a6 0308 sub.w r3, r6, #8 + 8002232: 9a06 ldr r2, [sp, #24] + 8002234: 441a add r2, r3 + 8002236: 4295 cmp r5, r2 + 8002238: d819 bhi.n 800226e <FLASH_IF_Write+0xfe> + 800223a: 9504 str r5, [sp, #16] + 800223c: 9701 str r7, [sp, #4] + 800223e: f8cd b014 str.w fp, [sp, #20] + 8002242: f04f 0900 mov.w r9, #0 + 8002246: 9b05 ldr r3, [sp, #20] + 8002248: eb09 0103 add.w r1, r9, r3 + 800224c: 9b04 ldr r3, [sp, #16] + 800224e: 4599 cmp r9, r3 + 8002250: d33e bcc.n 80022d0 <FLASH_IF_Write+0x160> + 8002252: 9b00 ldr r3, [sp, #0] + 8002254: 44ab add fp, r5 + 8002256: 442f add r7, r5 + 8002258: 1b5d subs r5, r3, r5 + 800225a: f5b5 6f00 cmp.w r5, #2048 ; 0x800 + 800225e: bf28 it cs + 8002260: f44f 6500 movcs.w r5, #2048 ; 0x800 + 8002264: f10a 0a01 add.w sl, sl, #1 + 8002268: f508 6800 add.w r8, r8, #2048 ; 0x800 + 800226c: e7d6 b.n 800221c <FLASH_IF_Write+0xac> + 800226e: f853 1f08 ldr.w r1, [r3, #8]! + 8002272: 685a ldr r2, [r3, #4] + 8002274: f1b2 3fff cmp.w r2, #4294967295 + 8002278: bf08 it eq + 800227a: f1b1 3fff cmpeq.w r1, #4294967295 + 800227e: d0d8 beq.n 8002232 <FLASH_IF_Write+0xc2> + 8002280: 4b29 ldr r3, [pc, #164] ; (8002328 <FLASH_IF_Write+0x1b8>) + 8002282: 6818 ldr r0, [r3, #0] + 8002284: b910 cbnz r0, 800228c <FLASH_IF_Write+0x11c> + 8002286: f06f 0405 mvn.w r4, #5 + 800228a: e7ca b.n 8002222 <FLASH_IF_Write+0xb2> + 800228c: f1b8 0f00 cmp.w r8, #0 + 8002290: d004 beq.n 800229c <FLASH_IF_Write+0x12c> + 8002292: f44f 6200 mov.w r2, #2048 ; 0x800 + 8002296: 4641 mov r1, r8 + 8002298: f011 fba2 bl 80139e0 <UTIL_MEM_cpy_8> + 800229c: f8df 9088 ldr.w r9, [pc, #136] ; 8002328 <FLASH_IF_Write+0x1b8> + 80022a0: f8d9 3000 ldr.w r3, [r9] + 80022a4: f3cb 000a ubfx r0, fp, #0, #11 + 80022a8: 4639 mov r1, r7 + 80022aa: 4418 add r0, r3 + 80022ac: b2aa uxth r2, r5 + 80022ae: f011 fb97 bl 80139e0 <UTIL_MEM_cpy_8> + 80022b2: f44f 6100 mov.w r1, #2048 ; 0x800 + 80022b6: 4640 mov r0, r8 + 80022b8: f7ff ff0c bl 80020d4 <FLASH_IF_INT_Erase> + 80022bc: bb08 cbnz r0, 8002302 <FLASH_IF_Write+0x192> + 80022be: f8d9 3000 ldr.w r3, [r9] + 80022c2: 9301 str r3, [sp, #4] + 80022c4: f44f 6300 mov.w r3, #2048 ; 0x800 + 80022c8: f8cd 8014 str.w r8, [sp, #20] + 80022cc: 9304 str r3, [sp, #16] + 80022ce: e7b8 b.n 8002242 <FLASH_IF_Write+0xd2> + 80022d0: 9b01 ldr r3, [sp, #4] + 80022d2: 9107 str r1, [sp, #28] + 80022d4: 444b add r3, r9 + 80022d6: 9302 str r3, [sp, #8] + 80022d8: 2001 movs r0, #1 + 80022da: e9d3 2300 ldrd r2, r3, [r3] + 80022de: f005 ffcd bl 800827c <HAL_FLASH_Program> + 80022e2: b988 cbnz r0, 8002308 <FLASH_IF_Write+0x198> + 80022e4: 9907 ldr r1, [sp, #28] + 80022e6: 9b01 ldr r3, [sp, #4] + 80022e8: e9d1 0200 ldrd r0, r2, [r1] + 80022ec: f859 1003 ldr.w r1, [r9, r3] + 80022f0: 9b02 ldr r3, [sp, #8] + 80022f2: 685b ldr r3, [r3, #4] + 80022f4: 429a cmp r2, r3 + 80022f6: bf08 it eq + 80022f8: 4288 cmpeq r0, r1 + 80022fa: d105 bne.n 8002308 <FLASH_IF_Write+0x198> + 80022fc: f109 0908 add.w r9, r9, #8 + 8002300: e7a1 b.n 8002246 <FLASH_IF_Write+0xd6> + 8002302: f06f 0401 mvn.w r4, #1 + 8002306: e78c b.n 8002222 <FLASH_IF_Write+0xb2> + 8002308: f06f 0403 mvn.w r4, #3 + 800230c: e789 b.n 8002222 <FLASH_IF_Write+0xb2> + 800230e: f04f 34ff mov.w r4, #4294967295 + 8002312: e788 b.n 8002226 <FLASH_IF_Write+0xb6> + 8002314: f06f 0405 mvn.w r4, #5 + 8002318: e785 b.n 8002226 <FLASH_IF_Write+0xb6> + 800231a: f06f 0404 mvn.w r4, #4 + 800231e: e782 b.n 8002226 <FLASH_IF_Write+0xb6> + 8002320: 1fff7000 .word 0x1fff7000 + 8002324: 03fffc00 .word 0x03fffc00 + 8002328: 20000950 .word 0x20000950 + +0800232c <FLASH_IF_Read>: + 800232c: f1b1 6f00 cmp.w r1, #134217728 ; 0x8000000 + 8002330: b570 push {r4, r5, r6, lr} + 8002332: d311 bcc.n 8002358 <FLASH_IF_Read+0x2c> + 8002334: 4b0b ldr r3, [pc, #44] ; (8002364 <FLASH_IF_Read+0x38>) + 8002336: f8d3 65e0 ldr.w r6, [r3, #1504] ; 0x5e0 + 800233a: 4b0b ldr r3, [pc, #44] ; (8002368 <FLASH_IF_Read+0x3c>) + 800233c: ea03 2386 and.w r3, r3, r6, lsl #10 + 8002340: f103 6300 add.w r3, r3, #134217728 ; 0x8000000 + 8002344: 3b01 subs r3, #1 + 8002346: 4299 cmp r1, r3 + 8002348: d806 bhi.n 8002358 <FLASH_IF_Read+0x2c> + 800234a: b140 cbz r0, 800235e <FLASH_IF_Read+0x32> + 800234c: b139 cbz r1, 800235e <FLASH_IF_Read+0x32> + 800234e: b292 uxth r2, r2 + 8002350: f011 fb46 bl 80139e0 <UTIL_MEM_cpy_8> + 8002354: 2000 movs r0, #0 + 8002356: bd70 pop {r4, r5, r6, pc} + 8002358: f04f 30ff mov.w r0, #4294967295 + 800235c: e7fb b.n 8002356 <FLASH_IF_Read+0x2a> + 800235e: f06f 0005 mvn.w r0, #5 + 8002362: e7f8 b.n 8002356 <FLASH_IF_Read+0x2a> + 8002364: 1fff7000 .word 0x1fff7000 + 8002368: 03fffc00 .word 0x03fffc00 + +0800236c <FLASH_IF_Erase>: + 800236c: f1b0 6f00 cmp.w r0, #134217728 ; 0x8000000 + 8002370: b410 push {r4} + 8002372: d30d bcc.n 8002390 <FLASH_IF_Erase+0x24> + 8002374: 4b08 ldr r3, [pc, #32] ; (8002398 <FLASH_IF_Erase+0x2c>) + 8002376: f8d3 45e0 ldr.w r4, [r3, #1504] ; 0x5e0 + 800237a: 4b08 ldr r3, [pc, #32] ; (800239c <FLASH_IF_Erase+0x30>) + 800237c: ea03 2384 and.w r3, r3, r4, lsl #10 + 8002380: f103 6300 add.w r3, r3, #134217728 ; 0x8000000 + 8002384: 3b01 subs r3, #1 + 8002386: 4298 cmp r0, r3 + 8002388: d802 bhi.n 8002390 <FLASH_IF_Erase+0x24> + 800238a: bc10 pop {r4} + 800238c: f7ff bea2 b.w 80020d4 <FLASH_IF_INT_Erase> + 8002390: f04f 30ff mov.w r0, #4294967295 + 8002394: bc10 pop {r4} + 8002396: 4770 bx lr + 8002398: 1fff7000 .word 0x1fff7000 + 800239c: 03fffc00 .word 0x03fffc00 + +080023a0 <LL_AHB2_GRP1_EnableClock>: + 80023a0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80023a4: b082 sub sp, #8 + 80023a6: 6cda ldr r2, [r3, #76] ; 0x4c + 80023a8: 4302 orrs r2, r0 + 80023aa: 64da str r2, [r3, #76] ; 0x4c + 80023ac: 6cdb ldr r3, [r3, #76] ; 0x4c + 80023ae: 4003 ands r3, r0 + 80023b0: 9301 str r3, [sp, #4] + 80023b2: 9b01 ldr r3, [sp, #4] + 80023b4: b002 add sp, #8 + 80023b6: 4770 bx lr + +080023b8 <MX_GPIO_Init>: + 80023b8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80023bc: b086 sub sp, #24 + 80023be: 2214 movs r2, #20 + 80023c0: 2100 movs r1, #0 + 80023c2: a801 add r0, sp, #4 + 80023c4: f011 ff44 bl 8014250 <memset> + 80023c8: 2001 movs r0, #1 + 80023ca: f7ff ffe9 bl 80023a0 <LL_AHB2_GRP1_EnableClock> + 80023ce: 4e34 ldr r6, [pc, #208] ; (80024a0 <MX_GPIO_Init+0xe8>) + 80023d0: 2002 movs r0, #2 + 80023d2: f7ff ffe5 bl 80023a0 <LL_AHB2_GRP1_EnableClock> + 80023d6: 2004 movs r0, #4 + 80023d8: f7ff ffe2 bl 80023a0 <LL_AHB2_GRP1_EnableClock> + 80023dc: 2108 movs r1, #8 + 80023de: 2201 movs r2, #1 + 80023e0: 4630 mov r0, r6 + 80023e2: f006 f905 bl 80085f0 <HAL_GPIO_WritePin> + 80023e6: 2501 movs r5, #1 + 80023e8: 2302 movs r3, #2 + 80023ea: f44f 1704 mov.w r7, #2162688 ; 0x210000 + 80023ee: a901 add r1, sp, #4 + 80023f0: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80023f4: e9cd 3701 strd r3, r7, [sp, #4] + 80023f8: 9503 str r5, [sp, #12] + 80023fa: f005 ffd3 bl 80083a4 <HAL_GPIO_Init> + 80023fe: a901 add r1, sp, #4 + 8002400: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8002404: 2400 movs r4, #0 + 8002406: f04f 0820 mov.w r8, #32 + 800240a: e9cd 5701 strd r5, r7, [sp, #4] + 800240e: 9503 str r5, [sp, #12] + 8002410: f005 ffc8 bl 80083a4 <HAL_GPIO_Init> + 8002414: a901 add r1, sp, #4 + 8002416: 4630 mov r0, r6 + 8002418: e9cd 8701 strd r8, r7, [sp, #4] + 800241c: 9403 str r4, [sp, #12] + 800241e: f005 ffc1 bl 80083a4 <HAL_GPIO_Init> + 8002422: a901 add r1, sp, #4 + 8002424: 4630 mov r0, r6 + 8002426: e9cd 8701 strd r8, r7, [sp, #4] + 800242a: 9403 str r4, [sp, #12] + 800242c: f005 ffba bl 80083a4 <HAL_GPIO_Init> + 8002430: 2308 movs r3, #8 + 8002432: a901 add r1, sp, #4 + 8002434: 4630 mov r0, r6 + 8002436: e9cd 3501 strd r3, r5, [sp, #4] + 800243a: e9cd 5403 strd r5, r4, [sp, #12] + 800243e: f005 ffb1 bl 80083a4 <HAL_GPIO_Init> + 8002442: f44f 7300 mov.w r3, #512 ; 0x200 + 8002446: a901 add r1, sp, #4 + 8002448: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 800244c: e9cd 3501 strd r3, r5, [sp, #4] + 8002450: e9cd 5403 strd r5, r4, [sp, #12] + 8002454: f005 ffa6 bl 80083a4 <HAL_GPIO_Init> + 8002458: 4622 mov r2, r4 + 800245a: 4621 mov r1, r4 + 800245c: 2006 movs r0, #6 + 800245e: f005 fc47 bl 8007cf0 <HAL_NVIC_SetPriority> + 8002462: 2006 movs r0, #6 + 8002464: f005 fc76 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002468: 4622 mov r2, r4 + 800246a: 4621 mov r1, r4 + 800246c: 2007 movs r0, #7 + 800246e: f005 fc3f bl 8007cf0 <HAL_NVIC_SetPriority> + 8002472: 2007 movs r0, #7 + 8002474: f005 fc6e bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002478: 4622 mov r2, r4 + 800247a: 4621 mov r1, r4 + 800247c: 2016 movs r0, #22 + 800247e: f005 fc37 bl 8007cf0 <HAL_NVIC_SetPriority> + 8002482: 2016 movs r0, #22 + 8002484: f005 fc66 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002488: 4622 mov r2, r4 + 800248a: 4621 mov r1, r4 + 800248c: 2016 movs r0, #22 + 800248e: f005 fc2f bl 8007cf0 <HAL_NVIC_SetPriority> + 8002492: 2016 movs r0, #22 + 8002494: f005 fc5e bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002498: b006 add sp, #24 + 800249a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800249e: bf00 nop + 80024a0: 48000400 .word 0x48000400 + +080024a4 <MX_I2C2_Init>: + 80024a4: b508 push {r3, lr} + 80024a6: 4812 ldr r0, [pc, #72] ; (80024f0 <MX_I2C2_Init+0x4c>) + 80024a8: 4a12 ldr r2, [pc, #72] ; (80024f4 <MX_I2C2_Init+0x50>) + 80024aa: 4b13 ldr r3, [pc, #76] ; (80024f8 <MX_I2C2_Init+0x54>) + 80024ac: e9c0 2300 strd r2, r3, [r0] + 80024b0: 2300 movs r3, #0 + 80024b2: 2201 movs r2, #1 + 80024b4: e9c0 3202 strd r3, r2, [r0, #8] + 80024b8: e9c0 3304 strd r3, r3, [r0, #16] + 80024bc: e9c0 3306 strd r3, r3, [r0, #24] + 80024c0: 6203 str r3, [r0, #32] + 80024c2: f006 fa09 bl 80088d8 <HAL_I2C_Init> + 80024c6: b108 cbz r0, 80024cc <MX_I2C2_Init+0x28> + 80024c8: f000 f8ec bl 80026a4 <Error_Handler> + 80024cc: 4808 ldr r0, [pc, #32] ; (80024f0 <MX_I2C2_Init+0x4c>) + 80024ce: 2100 movs r1, #0 + 80024d0: f006 fb82 bl 8008bd8 <HAL_I2CEx_ConfigAnalogFilter> + 80024d4: b108 cbz r0, 80024da <MX_I2C2_Init+0x36> + 80024d6: f000 f8e5 bl 80026a4 <Error_Handler> + 80024da: 4805 ldr r0, [pc, #20] ; (80024f0 <MX_I2C2_Init+0x4c>) + 80024dc: 2100 movs r1, #0 + 80024de: f006 fba1 bl 8008c24 <HAL_I2CEx_ConfigDigitalFilter> + 80024e2: b118 cbz r0, 80024ec <MX_I2C2_Init+0x48> + 80024e4: e8bd 4008 ldmia.w sp!, {r3, lr} + 80024e8: f000 b8dc b.w 80026a4 <Error_Handler> + 80024ec: bd08 pop {r3, pc} + 80024ee: bf00 nop + 80024f0: 20000a14 .word 0x20000a14 + 80024f4: 40005800 .word 0x40005800 + 80024f8: 2010091a .word 0x2010091a + +080024fc <HAL_I2C_MspInit>: + 80024fc: b570 push {r4, r5, r6, lr} + 80024fe: b096 sub sp, #88 ; 0x58 + 8002500: 4605 mov r5, r0 + 8002502: 2214 movs r2, #20 + 8002504: 2100 movs r1, #0 + 8002506: a803 add r0, sp, #12 + 8002508: f011 fea2 bl 8014250 <memset> + 800250c: 2238 movs r2, #56 ; 0x38 + 800250e: 2100 movs r1, #0 + 8002510: a808 add r0, sp, #32 + 8002512: f011 fe9d bl 8014250 <memset> + 8002516: 682a ldr r2, [r5, #0] + 8002518: 4b30 ldr r3, [pc, #192] ; (80025dc <HAL_I2C_MspInit+0xe0>) + 800251a: 429a cmp r2, r3 + 800251c: d15b bne.n 80025d6 <HAL_I2C_MspInit+0xda> + 800251e: 2380 movs r3, #128 ; 0x80 + 8002520: 9308 str r3, [sp, #32] + 8002522: a808 add r0, sp, #32 + 8002524: f44f 2340 mov.w r3, #786432 ; 0xc0000 + 8002528: 930e str r3, [sp, #56] ; 0x38 + 800252a: f007 f8d7 bl 80096dc <HAL_RCCEx_PeriphCLKConfig> + 800252e: b108 cbz r0, 8002534 <HAL_I2C_MspInit+0x38> + 8002530: f000 f8b8 bl 80026a4 <Error_Handler> + 8002534: f04f 44b0 mov.w r4, #1476395008 ; 0x58000000 + 8002538: f44f 50c0 mov.w r0, #6144 ; 0x1800 + 800253c: 6ce3 ldr r3, [r4, #76] ; 0x4c + 800253e: f043 0301 orr.w r3, r3, #1 + 8002542: 64e3 str r3, [r4, #76] ; 0x4c + 8002544: 6ce3 ldr r3, [r4, #76] ; 0x4c + 8002546: f003 0301 and.w r3, r3, #1 + 800254a: 9302 str r3, [sp, #8] + 800254c: 9b02 ldr r3, [sp, #8] + 800254e: 2312 movs r3, #18 + 8002550: 2600 movs r6, #0 + 8002552: e9cd 0303 strd r0, r3, [sp, #12] + 8002556: 2303 movs r3, #3 + 8002558: e9cd 6305 strd r6, r3, [sp, #20] + 800255c: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8002560: 2304 movs r3, #4 + 8002562: a903 add r1, sp, #12 + 8002564: 9307 str r3, [sp, #28] + 8002566: f005 ff1d bl 80083a4 <HAL_GPIO_Init> + 800256a: 6da3 ldr r3, [r4, #88] ; 0x58 + 800256c: f8df c070 ldr.w ip, [pc, #112] ; 80025e0 <HAL_I2C_MspInit+0xe4> + 8002570: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 + 8002574: 65a3 str r3, [r4, #88] ; 0x58 + 8002576: 6da3 ldr r3, [r4, #88] ; 0x58 + 8002578: 4c1a ldr r4, [pc, #104] ; (80025e4 <HAL_I2C_MspInit+0xe8>) + 800257a: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 800257e: 9301 str r3, [sp, #4] + 8002580: 9b01 ldr r3, [sp, #4] + 8002582: 6226 str r6, [r4, #32] + 8002584: 230d movs r3, #13 + 8002586: e9c4 c300 strd ip, r3, [r4] + 800258a: 4620 mov r0, r4 + 800258c: 2380 movs r3, #128 ; 0x80 + 800258e: e9c4 6602 strd r6, r6, [r4, #8] + 8002592: e9c4 3604 strd r3, r6, [r4, #16] + 8002596: e9c4 6606 strd r6, r6, [r4, #24] + 800259a: f005 fc3b bl 8007e14 <HAL_DMA_Init> + 800259e: b108 cbz r0, 80025a4 <HAL_I2C_MspInit+0xa8> + 80025a0: f000 f880 bl 80026a4 <Error_Handler> + 80025a4: 4a10 ldr r2, [pc, #64] ; (80025e8 <HAL_I2C_MspInit+0xec>) + 80025a6: 63ec str r4, [r5, #60] ; 0x3c + 80025a8: 62a5 str r5, [r4, #40] ; 0x28 + 80025aa: 4c10 ldr r4, [pc, #64] ; (80025ec <HAL_I2C_MspInit+0xf0>) + 80025ac: 230e movs r3, #14 + 80025ae: e9c4 2300 strd r2, r3, [r4] + 80025b2: 2110 movs r1, #16 + 80025b4: 2300 movs r3, #0 + 80025b6: 2280 movs r2, #128 ; 0x80 + 80025b8: 4620 mov r0, r4 + 80025ba: e9c4 1302 strd r1, r3, [r4, #8] + 80025be: e9c4 2304 strd r2, r3, [r4, #16] + 80025c2: e9c4 3306 strd r3, r3, [r4, #24] + 80025c6: 6223 str r3, [r4, #32] + 80025c8: f005 fc24 bl 8007e14 <HAL_DMA_Init> + 80025cc: b108 cbz r0, 80025d2 <HAL_I2C_MspInit+0xd6> + 80025ce: f000 f869 bl 80026a4 <Error_Handler> + 80025d2: 63ac str r4, [r5, #56] ; 0x38 + 80025d4: 62a5 str r5, [r4, #40] ; 0x28 + 80025d6: b016 add sp, #88 ; 0x58 + 80025d8: bd70 pop {r4, r5, r6, pc} + 80025da: bf00 nop + 80025dc: 40005800 .word 0x40005800 + 80025e0: 40020044 .word 0x40020044 + 80025e4: 20000954 .word 0x20000954 + 80025e8: 40020058 .word 0x40020058 + 80025ec: 200009b4 .word 0x200009b4 + +080025f0 <SystemClock_Config>: + 80025f0: b500 push {lr} + 80025f2: b09b sub sp, #108 ; 0x6c + 80025f4: 2248 movs r2, #72 ; 0x48 + 80025f6: 2100 movs r1, #0 + 80025f8: a808 add r0, sp, #32 + 80025fa: f011 fe29 bl 8014250 <memset> + 80025fe: 2218 movs r2, #24 + 8002600: 2100 movs r1, #0 + 8002602: a802 add r0, sp, #8 + 8002604: f011 fe24 bl 8014250 <memset> + 8002608: f006 fb32 bl 8008c70 <HAL_PWR_EnableBkUpAccess> + 800260c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002610: 2001 movs r0, #1 + 8002612: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8002616: f023 0318 bic.w r3, r3, #24 + 800261a: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 800261e: f8d2 3400 ldr.w r3, [r2, #1024] ; 0x400 + 8002622: f423 63c0 bic.w r3, r3, #1536 ; 0x600 + 8002626: f443 7300 orr.w r3, r3, #512 ; 0x200 + 800262a: f8c2 3400 str.w r3, [r2, #1024] ; 0x400 + 800262e: f8d2 3400 ldr.w r3, [r2, #1024] ; 0x400 + 8002632: f403 63c0 and.w r3, r3, #1536 ; 0x600 + 8002636: 9301 str r3, [sp, #4] + 8002638: 9b01 ldr r3, [sp, #4] + 800263a: 2324 movs r3, #36 ; 0x24 + 800263c: 9308 str r3, [sp, #32] + 800263e: 2381 movs r3, #129 ; 0x81 + 8002640: 930b str r3, [sp, #44] ; 0x2c + 8002642: 2300 movs r3, #0 + 8002644: e9cd 0310 strd r0, r3, [sp, #64] ; 0x40 + 8002648: 22b0 movs r2, #176 ; 0xb0 + 800264a: a808 add r0, sp, #32 + 800264c: e9cd 2312 strd r2, r3, [sp, #72] ; 0x48 + 8002650: f006 fc86 bl 8008f60 <HAL_RCC_OscConfig> + 8002654: b108 cbz r0, 800265a <SystemClock_Config+0x6a> + 8002656: b672 cpsid i + 8002658: e7fe b.n 8002658 <SystemClock_Config+0x68> + 800265a: 234f movs r3, #79 ; 0x4f + 800265c: e9cd 3002 strd r3, r0, [sp, #8] + 8002660: e9cd 0004 strd r0, r0, [sp, #16] + 8002664: e9cd 0006 strd r0, r0, [sp, #24] + 8002668: 2102 movs r1, #2 + 800266a: a802 add r0, sp, #8 + 800266c: f006 ff12 bl 8009494 <HAL_RCC_ClockConfig> + 8002670: b108 cbz r0, 8002676 <SystemClock_Config+0x86> + 8002672: b672 cpsid i + 8002674: e7fe b.n 8002674 <SystemClock_Config+0x84> + 8002676: b01b add sp, #108 ; 0x6c + 8002678: f85d fb04 ldr.w pc, [sp], #4 + +0800267c <main>: + 800267c: b508 push {r3, lr} + 800267e: f004 feaf bl 80073e0 <HAL_Init> + 8002682: f7ff ffb5 bl 80025f0 <SystemClock_Config> + 8002686: f7ff fe97 bl 80023b8 <MX_GPIO_Init> + 800268a: f7ff fcc0 bl 800200e <MX_DMA_Init> + 800268e: f7ff ff09 bl 80024a4 <MX_I2C2_Init> + 8002692: f000 fe12 bl 80032ba <MX_LoRaWAN_Init> + 8002696: f640 30b8 movw r0, #3000 ; 0xbb8 + 800269a: f000 fa5f bl 8002b5c <HAL_Delay> + 800269e: f000 fe13 bl 80032c8 <MX_LoRaWAN_Process> + 80026a2: e7fc b.n 800269e <main+0x22> + +080026a4 <Error_Handler>: + 80026a4: b672 cpsid i + 80026a6: e7fe b.n 80026a6 <Error_Handler+0x2> + +080026a8 <MX_RTC_Init>: + 80026a8: b500 push {lr} + 80026aa: b08d sub sp, #52 ; 0x34 + 80026ac: 222c movs r2, #44 ; 0x2c + 80026ae: 2100 movs r1, #0 + 80026b0: a801 add r0, sp, #4 + 80026b2: f011 fdcd bl 8014250 <memset> + 80026b6: 4817 ldr r0, [pc, #92] ; (8002714 <MX_RTC_Init+0x6c>) + 80026b8: 4b17 ldr r3, [pc, #92] ; (8002718 <MX_RTC_Init+0x70>) + 80026ba: 6003 str r3, [r0, #0] + 80026bc: 231f movs r3, #31 + 80026be: 6083 str r3, [r0, #8] + 80026c0: f04f 4280 mov.w r2, #1073741824 ; 0x40000000 + 80026c4: 2300 movs r3, #0 + 80026c6: e9c0 3304 strd r3, r3, [r0, #16] + 80026ca: e9c0 2307 strd r2, r3, [r0, #28] + 80026ce: 6183 str r3, [r0, #24] + 80026d0: f44f 7380 mov.w r3, #256 ; 0x100 + 80026d4: 6243 str r3, [r0, #36] ; 0x24 + 80026d6: f007 f987 bl 80099e8 <HAL_RTC_Init> + 80026da: b108 cbz r0, 80026e0 <MX_RTC_Init+0x38> + 80026dc: f7ff ffe2 bl 80026a4 <Error_Handler> + 80026e0: 480c ldr r0, [pc, #48] ; (8002714 <MX_RTC_Init+0x6c>) + 80026e2: f007 faad bl 8009c40 <HAL_RTCEx_SetSSRU_IT> + 80026e6: b108 cbz r0, 80026ec <MX_RTC_Init+0x44> + 80026e8: f7ff ffdc bl 80026a4 <Error_Handler> + 80026ec: f04f 5300 mov.w r3, #536870912 ; 0x20000000 + 80026f0: 2200 movs r2, #0 + 80026f2: 9307 str r3, [sp, #28] + 80026f4: 4807 ldr r0, [pc, #28] ; (8002714 <MX_RTC_Init+0x6c>) + 80026f6: 9208 str r2, [sp, #32] + 80026f8: f44f 7380 mov.w r3, #256 ; 0x100 + 80026fc: a901 add r1, sp, #4 + 80026fe: 9202 str r2, [sp, #8] + 8002700: 9206 str r2, [sp, #24] + 8002702: 930b str r3, [sp, #44] ; 0x2c + 8002704: f007 f9d0 bl 8009aa8 <HAL_RTC_SetAlarm_IT> + 8002708: b108 cbz r0, 800270e <MX_RTC_Init+0x66> + 800270a: f7ff ffcb bl 80026a4 <Error_Handler> + 800270e: b00d add sp, #52 ; 0x34 + 8002710: f85d fb04 ldr.w pc, [sp], #4 + 8002714: 20000a68 .word 0x20000a68 + 8002718: 40002800 .word 0x40002800 + +0800271c <HAL_RTC_MspInit>: + 800271c: b510 push {r4, lr} + 800271e: 4604 mov r4, r0 + 8002720: b090 sub sp, #64 ; 0x40 + 8002722: 2238 movs r2, #56 ; 0x38 + 8002724: 2100 movs r1, #0 + 8002726: a802 add r0, sp, #8 + 8002728: f011 fd92 bl 8014250 <memset> + 800272c: 6822 ldr r2, [r4, #0] + 800272e: 4b19 ldr r3, [pc, #100] ; (8002794 <HAL_RTC_MspInit+0x78>) + 8002730: 429a cmp r2, r3 + 8002732: d12c bne.n 800278e <HAL_RTC_MspInit+0x72> + 8002734: f44f 3380 mov.w r3, #65536 ; 0x10000 + 8002738: 9302 str r3, [sp, #8] + 800273a: a802 add r0, sp, #8 + 800273c: f44f 7380 mov.w r3, #256 ; 0x100 + 8002740: 930f str r3, [sp, #60] ; 0x3c + 8002742: f006 ffcb bl 80096dc <HAL_RCCEx_PeriphCLKConfig> + 8002746: b108 cbz r0, 800274c <HAL_RTC_MspInit+0x30> + 8002748: f7ff ffac bl 80026a4 <Error_Handler> + 800274c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002750: 2002 movs r0, #2 + 8002752: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 8002756: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 800275a: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 800275e: 6d9a ldr r2, [r3, #88] ; 0x58 + 8002760: f442 6280 orr.w r2, r2, #1024 ; 0x400 + 8002764: 659a str r2, [r3, #88] ; 0x58 + 8002766: 6d9b ldr r3, [r3, #88] ; 0x58 + 8002768: 2200 movs r2, #0 + 800276a: f403 6380 and.w r3, r3, #1024 ; 0x400 + 800276e: 4611 mov r1, r2 + 8002770: 9301 str r3, [sp, #4] + 8002772: 9b01 ldr r3, [sp, #4] + 8002774: f005 fabc bl 8007cf0 <HAL_NVIC_SetPriority> + 8002778: 2002 movs r0, #2 + 800277a: f005 faeb bl 8007d54 <HAL_NVIC_EnableIRQ> + 800277e: 2200 movs r2, #0 + 8002780: 202a movs r0, #42 ; 0x2a + 8002782: 4611 mov r1, r2 + 8002784: f005 fab4 bl 8007cf0 <HAL_NVIC_SetPriority> + 8002788: 202a movs r0, #42 ; 0x2a + 800278a: f005 fae3 bl 8007d54 <HAL_NVIC_EnableIRQ> + 800278e: b010 add sp, #64 ; 0x40 + 8002790: bd10 pop {r4, pc} + 8002792: bf00 nop + 8002794: 40002800 .word 0x40002800 + +08002798 <PWR_EnterOffMode>: + 8002798: 4770 bx lr + ... + +0800279c <PWR_EnterStopMode>: + 800279c: b508 push {r3, lr} + 800279e: f004 fe35 bl 800740c <HAL_SuspendTick> + 80027a2: 4b04 ldr r3, [pc, #16] ; (80027b4 <PWR_EnterStopMode+0x18>) + 80027a4: 2001 movs r0, #1 + 80027a6: f8c3 0088 str.w r0, [r3, #136] ; 0x88 + 80027aa: e8bd 4008 ldmia.w sp!, {r3, lr} + 80027ae: f006 bab7 b.w 8008d20 <HAL_PWREx_EnterSTOP2Mode> + 80027b2: bf00 nop + 80027b4: 58000400 .word 0x58000400 + +080027b8 <PWR_ExitSleepMode>: + 80027b8: f004 be2f b.w 800741a <HAL_ResumeTick> + +080027bc <PWR_ExitStopMode>: + 80027bc: b508 push {r3, lr} + 80027be: f004 fe2c bl 800741a <HAL_ResumeTick> + 80027c2: f000 fc83 bl 80030cc <vcom_Resume> + 80027c6: f7ff fdf7 bl 80023b8 <MX_GPIO_Init> + 80027ca: f7ff fc20 bl 800200e <MX_DMA_Init> + 80027ce: e8bd 4008 ldmia.w sp!, {r3, lr} + 80027d2: f7ff be67 b.w 80024a4 <MX_I2C2_Init> + +080027d6 <PWR_EnterSleepMode>: + 80027d6: b508 push {r3, lr} + 80027d8: f004 fe18 bl 800740c <HAL_SuspendTick> + 80027dc: e8bd 4008 ldmia.w sp!, {r3, lr} + 80027e0: 2101 movs r1, #1 + 80027e2: 2000 movs r0, #0 + 80027e4: f006 ba4c b.w 8008c80 <HAL_PWR_EnterSLEEPMode> + +080027e8 <PWR_ExitOffMode>: + 80027e8: 4770 bx lr + +080027ea <HAL_MspInit>: + 80027ea: 4770 bx lr + +080027ec <NMI_Handler>: + 80027ec: e7fe b.n 80027ec <NMI_Handler> + +080027ee <HardFault_Handler>: + 80027ee: e7fe b.n 80027ee <HardFault_Handler> + +080027f0 <MemManage_Handler>: + 80027f0: e7fe b.n 80027f0 <MemManage_Handler> + +080027f2 <BusFault_Handler>: + 80027f2: e7fe b.n 80027f2 <BusFault_Handler> + +080027f4 <UsageFault_Handler>: + 80027f4: e7fe b.n 80027f4 <UsageFault_Handler> + +080027f6 <SVC_Handler>: + 80027f6: 4770 bx lr + +080027f8 <DebugMon_Handler>: + 80027f8: 4770 bx lr + +080027fa <PendSV_Handler>: + 80027fa: 4770 bx lr + +080027fc <SysTick_Handler>: + 80027fc: 4770 bx lr + ... + +08002800 <TAMP_STAMP_LSECSS_SSRU_IRQHandler>: + 8002800: 4801 ldr r0, [pc, #4] ; (8002808 <TAMP_STAMP_LSECSS_SSRU_IRQHandler+0x8>) + 8002802: f007 ba43 b.w 8009c8c <HAL_RTCEx_SSRUIRQHandler> + 8002806: bf00 nop + 8002808: 20000a68 .word 0x20000a68 + +0800280c <EXTI0_IRQHandler>: + 800280c: 2001 movs r0, #1 + 800280e: f005 bef5 b.w 80085fc <HAL_GPIO_EXTI_IRQHandler> + +08002812 <EXTI1_IRQHandler>: + 8002812: 2002 movs r0, #2 + 8002814: f005 bef2 b.w 80085fc <HAL_GPIO_EXTI_IRQHandler> + +08002818 <DMA1_Channel2_IRQHandler>: + 8002818: 4770 bx lr + +0800281a <DMA1_Channel3_IRQHandler>: + 800281a: 4770 bx lr + +0800281c <DMA1_Channel4_IRQHandler>: + 800281c: 4801 ldr r0, [pc, #4] ; (8002824 <DMA1_Channel4_IRQHandler+0x8>) + 800281e: f005 bc73 b.w 8008108 <HAL_DMA_IRQHandler> + 8002822: bf00 nop + 8002824: 20000954 .word 0x20000954 + +08002828 <DMA1_Channel5_IRQHandler>: + 8002828: 4801 ldr r0, [pc, #4] ; (8002830 <DMA1_Channel5_IRQHandler+0x8>) + 800282a: f005 bc6d b.w 8008108 <HAL_DMA_IRQHandler> + 800282e: bf00 nop + 8002830: 20000b40 .word 0x20000b40 + +08002834 <DMA1_Channel6_IRQHandler>: + 8002834: 4801 ldr r0, [pc, #4] ; (800283c <DMA1_Channel6_IRQHandler+0x8>) + 8002836: f005 bc67 b.w 8008108 <HAL_DMA_IRQHandler> + 800283a: bf00 nop + 800283c: 20000ae0 .word 0x20000ae0 + +08002840 <DMA1_Channel7_IRQHandler>: + 8002840: f7ff bff2 b.w 8002828 <DMA1_Channel5_IRQHandler> + +08002844 <EXTI4_IRQHandler>: + 8002844: 4770 bx lr + +08002846 <EXTI9_5_IRQHandler>: + 8002846: 4770 bx lr + +08002848 <EXTI15_10_IRQHandler>: + 8002848: f44f 6080 mov.w r0, #1024 ; 0x400 + 800284c: f005 bed6 b.w 80085fc <HAL_GPIO_EXTI_IRQHandler> + +08002850 <USART2_IRQHandler>: + 8002850: 4801 ldr r0, [pc, #4] ; (8002858 <USART2_IRQHandler+0x8>) + 8002852: f007 bddf b.w 800a414 <HAL_UART_IRQHandler> + 8002856: bf00 nop + 8002858: 20000ba0 .word 0x20000ba0 + +0800285c <RTC_Alarm_IRQHandler>: + 800285c: 4801 ldr r0, [pc, #4] ; (8002864 <RTC_Alarm_IRQHandler+0x8>) + 800285e: f007 b847 b.w 80098f0 <HAL_RTC_AlarmIRQHandler> + 8002862: bf00 nop + 8002864: 20000a68 .word 0x20000a68 + +08002868 <SUBGHZ_Radio_IRQHandler>: + 8002868: 4801 ldr r0, [pc, #4] ; (8002870 <SUBGHZ_Radio_IRQHandler+0x8>) + 800286a: f007 bc3a b.w 800a0e2 <HAL_SUBGHZ_IRQHandler> + 800286e: bf00 nop + 8002870: 20000acc .word 0x20000acc + +08002874 <sts_hmac_sha1>: + 8002874: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8002878: b089 sub sp, #36 ; 0x24 + 800287a: 4680 mov r8, r0 + 800287c: 2000 movs r0, #0 + 800287e: 9e10 ldr r6, [sp, #64] ; 0x40 + 8002880: 9007 str r0, [sp, #28] + 8002882: 4689 mov r9, r1 + 8002884: 4615 mov r5, r2 + 8002886: 461f mov r7, r3 + 8002888: f7fd fcce bl 8000228 <cmox_initialize> + 800288c: b9f0 cbnz r0, 80028cc <sts_hmac_sha1+0x58> + 800288e: 4c10 ldr r4, [pc, #64] ; (80028d0 <sts_hmac_sha1+0x5c>) + 8002890: e9cd 9000 strd r9, r0, [sp] + 8002894: e9cd 0402 strd r0, r4, [sp, #8] + 8002898: ab07 add r3, sp, #28 + 800289a: 480e ldr r0, [pc, #56] ; (80028d4 <sts_hmac_sha1+0x60>) + 800289c: 9305 str r3, [sp, #20] + 800289e: 2314 movs r3, #20 + 80028a0: 9304 str r3, [sp, #16] + 80028a2: 463a mov r2, r7 + 80028a4: 4643 mov r3, r8 + 80028a6: 4629 mov r1, r5 + 80028a8: 6800 ldr r0, [r0, #0] + 80028aa: f7fd fd87 bl 80003bc <cmox_mac_compute> + 80028ae: 4623 mov r3, r4 + 80028b0: 4632 mov r2, r6 + 80028b2: f104 0114 add.w r1, r4, #20 + 80028b6: f853 4b04 ldr.w r4, [r3], #4 + 80028ba: f842 4b04 str.w r4, [r2], #4 + 80028be: 428b cmp r3, r1 + 80028c0: d1f9 bne.n 80028b6 <sts_hmac_sha1+0x42> + 80028c2: 9b07 ldr r3, [sp, #28] + 80028c4: 7533 strb r3, [r6, #20] + 80028c6: b009 add sp, #36 ; 0x24 + 80028c8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 80028cc: 2001 movs r0, #1 + 80028ce: e7fa b.n 80028c6 <sts_hmac_sha1+0x52> + 80028d0: 20000aa0 .word 0x20000aa0 + 80028d4: 08014450 .word 0x08014450 + +080028d8 <sts_hmac_verify>: + 80028d8: b5f0 push {r4, r5, r6, r7, lr} + 80028da: 4d1b ldr r5, [pc, #108] ; (8002948 <sts_hmac_verify+0x70>) + 80028dc: 4f1b ldr r7, [pc, #108] ; (800294c <sts_hmac_verify+0x74>) + 80028de: b085 sub sp, #20 + 80028e0: 2300 movs r3, #0 + 80028e2: 223c movs r2, #60 ; 0x3c + 80028e4: a802 add r0, sp, #8 + 80028e6: e9cd 3302 strd r3, r3, [sp, #8] + 80028ea: 756a strb r2, [r5, #21] + 80028ec: 752b strb r3, [r5, #20] + 80028ee: f000 f8d7 bl 8002aa0 <GetUniqueId> + 80028f2: 4817 ldr r0, [pc, #92] ; (8002950 <sts_hmac_verify+0x78>) + 80028f4: 9500 str r5, [sp, #0] + 80028f6: 2304 movs r3, #4 + 80028f8: aa03 add r2, sp, #12 + 80028fa: 2112 movs r1, #18 + 80028fc: f7ff ffba bl 8002874 <sts_hmac_sha1> + 8002900: 2414 movs r4, #20 + 8002902: 462e mov r6, r5 + 8002904: f815 3b01 ldrb.w r3, [r5], #1 + 8002908: 9300 str r3, [sp, #0] + 800290a: 2200 movs r2, #0 + 800290c: 463b mov r3, r7 + 800290e: 4611 mov r1, r2 + 8002910: 2002 movs r0, #2 + 8002912: 3c01 subs r4, #1 + 8002914: f010 ff5c bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8002918: f014 04ff ands.w r4, r4, #255 ; 0xff + 800291c: d1f2 bne.n 8002904 <sts_hmac_verify+0x2c> + 800291e: 490d ldr r1, [pc, #52] ; (8002954 <sts_hmac_verify+0x7c>) + 8002920: 4809 ldr r0, [pc, #36] ; (8002948 <sts_hmac_verify+0x70>) + 8002922: 2214 movs r2, #20 + 8002924: f011 fc84 bl 8014230 <memcmp> + 8002928: 4605 mov r5, r0 + 800292a: b148 cbz r0, 8002940 <sts_hmac_verify+0x68> + 800292c: 4b0a ldr r3, [pc, #40] ; (8002958 <sts_hmac_verify+0x80>) + 800292e: 7574 strb r4, [r6, #21] + 8002930: 4622 mov r2, r4 + 8002932: 4621 mov r1, r4 + 8002934: 2002 movs r0, #2 + 8002936: f010 ff4b bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800293a: 4628 mov r0, r5 + 800293c: b005 add sp, #20 + 800293e: bdf0 pop {r4, r5, r6, r7, pc} + 8002940: 2301 movs r3, #1 + 8002942: 7573 strb r3, [r6, #21] + 8002944: 4b05 ldr r3, [pc, #20] ; (800295c <sts_hmac_verify+0x84>) + 8002946: e7f3 b.n 8002930 <sts_hmac_verify+0x58> + 8002948: 20000ab4 .word 0x20000ab4 + 800294c: 08014478 .word 0x08014478 + 8002950: 080144af .word 0x080144af + 8002954: 20000e4e .word 0x20000e4e + 8002958: 08014480 .word 0x08014480 + 800295c: 08014497 .word 0x08014497 + +08002960 <MX_SUBGHZ_Init>: + 8002960: 4805 ldr r0, [pc, #20] ; (8002978 <MX_SUBGHZ_Init+0x18>) + 8002962: b508 push {r3, lr} + 8002964: 2308 movs r3, #8 + 8002966: 6003 str r3, [r0, #0] + 8002968: f007 f9d6 bl 8009d18 <HAL_SUBGHZ_Init> + 800296c: b118 cbz r0, 8002976 <MX_SUBGHZ_Init+0x16> + 800296e: e8bd 4008 ldmia.w sp!, {r3, lr} + 8002972: f7ff be97 b.w 80026a4 <Error_Handler> + 8002976: bd08 pop {r3, pc} + 8002978: 20000acc .word 0x20000acc + +0800297c <HAL_SUBGHZ_MspInit>: + 800297c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002980: b507 push {r0, r1, r2, lr} + 8002982: 6e5a ldr r2, [r3, #100] ; 0x64 + 8002984: f042 0201 orr.w r2, r2, #1 + 8002988: 665a str r2, [r3, #100] ; 0x64 + 800298a: 6e5b ldr r3, [r3, #100] ; 0x64 + 800298c: 2200 movs r2, #0 + 800298e: f003 0301 and.w r3, r3, #1 + 8002992: 9301 str r3, [sp, #4] + 8002994: 4611 mov r1, r2 + 8002996: 2032 movs r0, #50 ; 0x32 + 8002998: 9b01 ldr r3, [sp, #4] + 800299a: f005 f9a9 bl 8007cf0 <HAL_NVIC_SetPriority> + 800299e: 2032 movs r0, #50 ; 0x32 + 80029a0: b003 add sp, #12 + 80029a2: f85d eb04 ldr.w lr, [sp], #4 + 80029a6: f005 b9d5 b.w 8007d54 <HAL_NVIC_EnableIRQ> + ... + +080029ac <tiny_snprintf_like.constprop.0>: + 80029ac: b40c push {r2, r3} + 80029ae: b507 push {r0, r1, r2, lr} + 80029b0: 4a05 ldr r2, [pc, #20] ; (80029c8 <tiny_snprintf_like.constprop.0+0x1c>) + 80029b2: ab05 add r3, sp, #20 + 80029b4: 2110 movs r1, #16 + 80029b6: 9301 str r3, [sp, #4] + 80029b8: f011 fb1c bl 8013ff4 <tiny_vsnprintf_like> + 80029bc: b003 add sp, #12 + 80029be: f85d eb04 ldr.w lr, [sp], #4 + 80029c2: b002 add sp, #8 + 80029c4: 4770 bx lr + 80029c6: bf00 nop + 80029c8: 080144c1 .word 0x080144c1 + +080029cc <TimestampNow>: + 80029cc: b530 push {r4, r5, lr} + 80029ce: b085 sub sp, #20 + 80029d0: 4604 mov r4, r0 + 80029d2: a802 add r0, sp, #8 + 80029d4: 460d mov r5, r1 + 80029d6: f011 f939 bl 8013c4c <SysTimeGet> + 80029da: f9bd 300c ldrsh.w r3, [sp, #12] + 80029de: 4a06 ldr r2, [pc, #24] ; (80029f8 <TimestampNow+0x2c>) + 80029e0: 9300 str r3, [sp, #0] + 80029e2: 2110 movs r1, #16 + 80029e4: 9b02 ldr r3, [sp, #8] + 80029e6: 4620 mov r0, r4 + 80029e8: f7ff ffe0 bl 80029ac <tiny_snprintf_like.constprop.0> + 80029ec: 4620 mov r0, r4 + 80029ee: f7fe fce7 bl 80013c0 <strlen> + 80029f2: 8028 strh r0, [r5, #0] + 80029f4: b005 add sp, #20 + 80029f6: bd30 pop {r4, r5, pc} + 80029f8: 080144c1 .word 0x080144c1 + +080029fc <SystemApp_Init>: + 80029fc: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002a00: b510 push {r4, lr} + 8002a02: 6893 ldr r3, [r2, #8] + 8002a04: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8002a08: 6093 str r3, [r2, #8] + 8002a0a: f011 f9a7 bl 8013d5c <UTIL_TIMER_Init> + 8002a0e: 4b0e ldr r3, [pc, #56] ; (8002a48 <SystemApp_Init+0x4c>) + 8002a10: 2401 movs r4, #1 + 8002a12: 701c strb r4, [r3, #0] + 8002a14: f000 f8b6 bl 8002b84 <DBG_Init> + 8002a18: f010 fe70 bl 80136fc <UTIL_ADV_TRACE_Init> + 8002a1c: 480b ldr r0, [pc, #44] ; (8002a4c <SystemApp_Init+0x50>) + 8002a1e: f010 fe87 bl 8013730 <UTIL_ADV_TRACE_RegisterTimeStampFunction> + 8002a22: 4b0b ldr r3, [pc, #44] ; (8002a50 <SystemApp_Init+0x54>) + 8002a24: f44f 4200 mov.w r2, #32768 ; 0x8000 + 8002a28: 611a str r2, [r3, #16] + 8002a2a: 4620 mov r0, r4 + 8002a2c: f010 fe86 bl 801373c <UTIL_ADV_TRACE_SetVerboseLevel> + 8002a30: f7ff fa6e bl 8001f10 <SYS_InitMeasurement> + 8002a34: f000 f91c bl 8002c70 <EnvSensors_Init> + 8002a38: f010 ff7c bl 8013934 <UTIL_LPM_Init> + 8002a3c: 4621 mov r1, r4 + 8002a3e: 4620 mov r0, r4 + 8002a40: e8bd 4010 ldmia.w sp!, {r4, lr} + 8002a44: f010 bf96 b.w 8013974 <UTIL_LPM_SetOffMode> + 8002a48: 20000ad8 .word 0x20000ad8 + 8002a4c: 080029cd .word 0x080029cd + 8002a50: 58004000 .word 0x58004000 + +08002a54 <UTIL_SEQ_Idle>: + 8002a54: f010 bfa4 b.w 80139a0 <UTIL_LPM_EnterLowPower> + +08002a58 <GetBatteryLevel>: + 8002a58: b508 push {r3, lr} + 8002a5a: f7ff fa61 bl 8001f20 <SYS_GetBatteryLevel> + 8002a5e: f640 33b8 movw r3, #3000 ; 0xbb8 + 8002a62: 4298 cmp r0, r3 + 8002a64: d80c bhi.n 8002a80 <GetBatteryLevel+0x28> + 8002a66: f5b0 6fe1 cmp.w r0, #1800 ; 0x708 + 8002a6a: d30b bcc.n 8002a84 <GetBatteryLevel+0x2c> + 8002a6c: 23fe movs r3, #254 ; 0xfe + 8002a6e: f5a0 60e1 sub.w r0, r0, #1800 ; 0x708 + 8002a72: 4358 muls r0, r3 + 8002a74: f44f 6396 mov.w r3, #1200 ; 0x4b0 + 8002a78: fbb0 f0f3 udiv r0, r0, r3 + 8002a7c: b2c0 uxtb r0, r0 + 8002a7e: bd08 pop {r3, pc} + 8002a80: 20fe movs r0, #254 ; 0xfe + 8002a82: e7fc b.n 8002a7e <GetBatteryLevel+0x26> + 8002a84: 2000 movs r0, #0 + 8002a86: e7fa b.n 8002a7e <GetBatteryLevel+0x26> + +08002a88 <GetTemperatureLevel>: + 8002a88: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} + 8002a8a: 4668 mov r0, sp + 8002a8c: f000 f8d4 bl 8002c38 <EnvSensors_Read> + 8002a90: 9801 ldr r0, [sp, #4] + 8002a92: f7ff f817 bl 8001ac4 <__aeabi_f2iz> + 8002a96: b200 sxth r0, r0 + 8002a98: b007 add sp, #28 + 8002a9a: f85d fb04 ldr.w pc, [sp], #4 + ... + +08002aa0 <GetUniqueId>: + 8002aa0: 4a19 ldr r2, [pc, #100] ; (8002b08 <GetUniqueId+0x68>) + 8002aa2: b538 push {r3, r4, r5, lr} + 8002aa4: f8d2 3580 ldr.w r3, [r2, #1408] ; 0x580 + 8002aa8: 1c59 adds r1, r3, #1 + 8002aaa: 4604 mov r4, r0 + 8002aac: d119 bne.n 8002ae2 <GetUniqueId+0x42> + 8002aae: f004 fcbb bl 8007428 <HAL_GetUIDw0> + 8002ab2: 4605 mov r5, r0 + 8002ab4: f004 fcc4 bl 8007440 <HAL_GetUIDw2> + 8002ab8: 4405 add r5, r0 + 8002aba: f004 fcbb bl 8007434 <HAL_GetUIDw1> + 8002abe: 0e2b lsrs r3, r5, #24 + 8002ac0: 71e3 strb r3, [r4, #7] + 8002ac2: 0c2b lsrs r3, r5, #16 + 8002ac4: 71a3 strb r3, [r4, #6] + 8002ac6: 0a2b lsrs r3, r5, #8 + 8002ac8: 7163 strb r3, [r4, #5] + 8002aca: 0e03 lsrs r3, r0, #24 + 8002acc: 70e3 strb r3, [r4, #3] + 8002ace: f3c0 4207 ubfx r2, r0, #16, #8 + 8002ad2: f3c0 2307 ubfx r3, r0, #8, #8 + 8002ad6: 7125 strb r5, [r4, #4] + 8002ad8: b2c0 uxtb r0, r0 + 8002ada: 70a2 strb r2, [r4, #2] + 8002adc: 7063 strb r3, [r4, #1] + 8002ade: 7020 strb r0, [r4, #0] + 8002ae0: bd38 pop {r3, r4, r5, pc} + 8002ae2: 0a19 lsrs r1, r3, #8 + 8002ae4: 71c3 strb r3, [r0, #7] + 8002ae6: 7181 strb r1, [r0, #6] + 8002ae8: 0c19 lsrs r1, r3, #16 + 8002aea: 0e1b lsrs r3, r3, #24 + 8002aec: 7141 strb r1, [r0, #5] + 8002aee: 7103 strb r3, [r0, #4] + 8002af0: f8d2 3584 ldr.w r3, [r2, #1412] ; 0x584 + 8002af4: 70c3 strb r3, [r0, #3] + 8002af6: f8d2 0584 ldr.w r0, [r2, #1412] ; 0x584 + 8002afa: f3c0 2207 ubfx r2, r0, #8, #8 + 8002afe: f3c0 4307 ubfx r3, r0, #16, #8 + 8002b02: 0e00 lsrs r0, r0, #24 + 8002b04: e7e9 b.n 8002ada <GetUniqueId+0x3a> + 8002b06: bf00 nop + 8002b08: 1fff7000 .word 0x1fff7000 + +08002b0c <GetDevAddr>: + 8002b0c: b538 push {r3, r4, r5, lr} + 8002b0e: 4b09 ldr r3, [pc, #36] ; (8002b34 <GetDevAddr+0x28>) + 8002b10: f8d3 3580 ldr.w r3, [r3, #1408] ; 0x580 + 8002b14: 6003 str r3, [r0, #0] + 8002b16: 3301 adds r3, #1 + 8002b18: 4605 mov r5, r0 + 8002b1a: d109 bne.n 8002b30 <GetDevAddr+0x24> + 8002b1c: f004 fc84 bl 8007428 <HAL_GetUIDw0> + 8002b20: 4604 mov r4, r0 + 8002b22: f004 fc87 bl 8007434 <HAL_GetUIDw1> + 8002b26: 4044 eors r4, r0 + 8002b28: f004 fc8a bl 8007440 <HAL_GetUIDw2> + 8002b2c: 4044 eors r4, r0 + 8002b2e: 602c str r4, [r5, #0] + 8002b30: bd38 pop {r3, r4, r5, pc} + 8002b32: bf00 nop + 8002b34: 1fff7000 .word 0x1fff7000 + +08002b38 <UTIL_ADV_TRACE_PreSendHook>: + 8002b38: 2101 movs r1, #1 + 8002b3a: 2002 movs r0, #2 + 8002b3c: f010 bf04 b.w 8013948 <UTIL_LPM_SetStopMode> + +08002b40 <UTIL_ADV_TRACE_PostSendHook>: + 8002b40: 2100 movs r1, #0 + 8002b42: 2002 movs r0, #2 + 8002b44: f010 bf00 b.w 8013948 <UTIL_LPM_SetStopMode> + +08002b48 <HAL_InitTick>: + 8002b48: 2000 movs r0, #0 + 8002b4a: 4770 bx lr + +08002b4c <HAL_GetTick>: + 8002b4c: 4b02 ldr r3, [pc, #8] ; (8002b58 <HAL_GetTick+0xc>) + 8002b4e: 7818 ldrb r0, [r3, #0] + 8002b50: b108 cbz r0, 8002b56 <HAL_GetTick+0xa> + 8002b52: f000 b8c5 b.w 8002ce0 <TIMER_IF_GetTimerValue> + 8002b56: 4770 bx lr + 8002b58: 20000ad8 .word 0x20000ad8 + +08002b5c <HAL_Delay>: + 8002b5c: b082 sub sp, #8 + 8002b5e: 9001 str r0, [sp, #4] + 8002b60: 9801 ldr r0, [sp, #4] + 8002b62: b002 add sp, #8 + 8002b64: f000 b958 b.w 8002e18 <TIMER_IF_DelayMs> + +08002b68 <LL_AHB2_GRP1_EnableClock.constprop.0>: + 8002b68: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002b6c: b082 sub sp, #8 + 8002b6e: 6cda ldr r2, [r3, #76] ; 0x4c + 8002b70: f042 0202 orr.w r2, r2, #2 + 8002b74: 64da str r2, [r3, #76] ; 0x4c + 8002b76: 6cdb ldr r3, [r3, #76] ; 0x4c + 8002b78: f003 0302 and.w r3, r3, #2 + 8002b7c: 9301 str r3, [sp, #4] + 8002b7e: 9b01 ldr r3, [sp, #4] + 8002b80: b002 add sp, #8 + 8002b82: 4770 bx lr + +08002b84 <DBG_Init>: + 8002b84: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8002b88: 4a29 ldr r2, [pc, #164] ; (8002c30 <DBG_Init+0xac>) + 8002b8a: 4c2a ldr r4, [pc, #168] ; (8002c34 <DBG_Init+0xb0>) + 8002b8c: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8002b90: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 8002b94: b087 sub sp, #28 + 8002b96: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8002b9a: f004 fc57 bl 800744c <HAL_DBGMCU_EnableDBGSleepMode> + 8002b9e: f004 fc5d bl 800745c <HAL_DBGMCU_EnableDBGStopMode> + 8002ba2: f004 fc63 bl 800746c <HAL_DBGMCU_EnableDBGStandbyMode> + 8002ba6: 2301 movs r3, #1 + 8002ba8: 2500 movs r5, #0 + 8002baa: 9302 str r3, [sp, #8] + 8002bac: f44f 5980 mov.w r9, #4096 ; 0x1000 + 8002bb0: 2303 movs r3, #3 + 8002bb2: a901 add r1, sp, #4 + 8002bb4: 4620 mov r0, r4 + 8002bb6: 9304 str r3, [sp, #16] + 8002bb8: f44f 5800 mov.w r8, #8192 ; 0x2000 + 8002bbc: 9503 str r5, [sp, #12] + 8002bbe: 9505 str r5, [sp, #20] + 8002bc0: f7ff ffd2 bl 8002b68 <LL_AHB2_GRP1_EnableClock.constprop.0> + 8002bc4: f7ff ffd0 bl 8002b68 <LL_AHB2_GRP1_EnableClock.constprop.0> + 8002bc8: f7ff ffce bl 8002b68 <LL_AHB2_GRP1_EnableClock.constprop.0> + 8002bcc: f7ff ffcc bl 8002b68 <LL_AHB2_GRP1_EnableClock.constprop.0> + 8002bd0: f8cd 9004 str.w r9, [sp, #4] + 8002bd4: f005 fbe6 bl 80083a4 <HAL_GPIO_Init> + 8002bd8: a901 add r1, sp, #4 + 8002bda: 4620 mov r0, r4 + 8002bdc: f44f 6700 mov.w r7, #2048 ; 0x800 + 8002be0: f8cd 8004 str.w r8, [sp, #4] + 8002be4: f005 fbde bl 80083a4 <HAL_GPIO_Init> + 8002be8: a901 add r1, sp, #4 + 8002bea: 4620 mov r0, r4 + 8002bec: f44f 4600 mov.w r6, #32768 ; 0x8000 + 8002bf0: 9701 str r7, [sp, #4] + 8002bf2: f005 fbd7 bl 80083a4 <HAL_GPIO_Init> + 8002bf6: a901 add r1, sp, #4 + 8002bf8: 4620 mov r0, r4 + 8002bfa: 9601 str r6, [sp, #4] + 8002bfc: f005 fbd2 bl 80083a4 <HAL_GPIO_Init> + 8002c00: 462a mov r2, r5 + 8002c02: 4649 mov r1, r9 + 8002c04: 4620 mov r0, r4 + 8002c06: f005 fcf3 bl 80085f0 <HAL_GPIO_WritePin> + 8002c0a: 462a mov r2, r5 + 8002c0c: 4641 mov r1, r8 + 8002c0e: 4620 mov r0, r4 + 8002c10: f005 fcee bl 80085f0 <HAL_GPIO_WritePin> + 8002c14: 462a mov r2, r5 + 8002c16: 4639 mov r1, r7 + 8002c18: 4620 mov r0, r4 + 8002c1a: f005 fce9 bl 80085f0 <HAL_GPIO_WritePin> + 8002c1e: 462a mov r2, r5 + 8002c20: 4631 mov r1, r6 + 8002c22: 4620 mov r0, r4 + 8002c24: f005 fce4 bl 80085f0 <HAL_GPIO_WritePin> + 8002c28: b007 add sp, #28 + 8002c2a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8002c2e: bf00 nop + 8002c30: 58000800 .word 0x58000800 + 8002c34: 48000400 .word 0x48000400 + +08002c38 <EnvSensors_Read>: + 8002c38: b510 push {r4, lr} + 8002c3a: 4604 mov r4, r0 + 8002c3c: f7ff f98a bl 8001f54 <SYS_GetTemperatureLevel> + 8002c40: 4b07 ldr r3, [pc, #28] ; (8002c60 <EnvSensors_Read+0x28>) + 8002c42: 60a3 str r3, [r4, #8] + 8002c44: f340 200f sbfx r0, r0, #8, #16 + 8002c48: f7fe fee8 bl 8001a1c <__aeabi_i2f> + 8002c4c: 4b05 ldr r3, [pc, #20] ; (8002c64 <EnvSensors_Read+0x2c>) + 8002c4e: 4a06 ldr r2, [pc, #24] ; (8002c68 <EnvSensors_Read+0x30>) + 8002c50: 6023 str r3, [r4, #0] + 8002c52: 4b06 ldr r3, [pc, #24] ; (8002c6c <EnvSensors_Read+0x34>) + 8002c54: 6060 str r0, [r4, #4] + 8002c56: e9c4 2303 strd r2, r3, [r4, #12] + 8002c5a: 2000 movs r0, #0 + 8002c5c: bd10 pop {r4, pc} + 8002c5e: bf00 nop + 8002c60: 42480000 .word 0x42480000 + 8002c64: 447a0000 .word 0x447a0000 + 8002c68: 003e090d .word 0x003e090d + 8002c6c: 000503ab .word 0x000503ab + +08002c70 <EnvSensors_Init>: + 8002c70: 2000 movs r0, #0 + 8002c72: 4770 bx lr + +08002c74 <TIMER_IF_GetTimerContext>: + 8002c74: 4b01 ldr r3, [pc, #4] ; (8002c7c <TIMER_IF_GetTimerContext+0x8>) + 8002c76: 6818 ldr r0, [r3, #0] + 8002c78: 4770 bx lr + 8002c7a: bf00 nop + 8002c7c: 20000adc .word 0x20000adc + +08002c80 <TIMER_IF_GetMinimumTimeout>: + 8002c80: 2003 movs r0, #3 + 8002c82: 4770 bx lr + +08002c84 <TIMER_IF_Convert_ms2Tick>: + 8002c84: b508 push {r3, lr} + 8002c86: 4601 mov r1, r0 + 8002c88: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8002c8c: 2300 movs r3, #0 + 8002c8e: 0280 lsls r0, r0, #10 + 8002c90: 0d89 lsrs r1, r1, #22 + 8002c92: f7fe ff3d bl 8001b10 <__aeabi_uldivmod> + 8002c96: bd08 pop {r3, pc} + +08002c98 <TIMER_IF_Convert_Tick2ms>: + 8002c98: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8002c9c: fba0 0303 umull r0, r3, r0, r3 + 8002ca0: 0a80 lsrs r0, r0, #10 + 8002ca2: ea40 5083 orr.w r0, r0, r3, lsl #22 + 8002ca6: 4770 bx lr + +08002ca8 <GetTimerTicks>: + 8002ca8: 4b03 ldr r3, [pc, #12] ; (8002cb8 <GetTimerTicks+0x10>) + 8002caa: 6898 ldr r0, [r3, #8] + 8002cac: 689a ldr r2, [r3, #8] + 8002cae: 4290 cmp r0, r2 + 8002cb0: d1fb bne.n 8002caa <GetTimerTicks+0x2> + 8002cb2: 43c0 mvns r0, r0 + 8002cb4: 4770 bx lr + 8002cb6: bf00 nop + 8002cb8: 40002800 .word 0x40002800 + +08002cbc <TIMER_IF_SetTimerContext>: + 8002cbc: b508 push {r3, lr} + 8002cbe: f7ff fff3 bl 8002ca8 <GetTimerTicks> + 8002cc2: 4b01 ldr r3, [pc, #4] ; (8002cc8 <TIMER_IF_SetTimerContext+0xc>) + 8002cc4: 6018 str r0, [r3, #0] + 8002cc6: bd08 pop {r3, pc} + 8002cc8: 20000adc .word 0x20000adc + +08002ccc <TIMER_IF_GetTimerElapsedTime>: + 8002ccc: b508 push {r3, lr} + 8002cce: f7ff ffeb bl 8002ca8 <GetTimerTicks> + 8002cd2: 4b02 ldr r3, [pc, #8] ; (8002cdc <TIMER_IF_GetTimerElapsedTime+0x10>) + 8002cd4: 681b ldr r3, [r3, #0] + 8002cd6: 1ac0 subs r0, r0, r3 + 8002cd8: bd08 pop {r3, pc} + 8002cda: bf00 nop + 8002cdc: 20000adc .word 0x20000adc + +08002ce0 <TIMER_IF_GetTimerValue>: + 8002ce0: 4b02 ldr r3, [pc, #8] ; (8002cec <TIMER_IF_GetTimerValue+0xc>) + 8002ce2: 7818 ldrb r0, [r3, #0] + 8002ce4: b108 cbz r0, 8002cea <TIMER_IF_GetTimerValue+0xa> + 8002ce6: f7ff bfdf b.w 8002ca8 <GetTimerTicks> + 8002cea: 4770 bx lr + 8002cec: 20000ad9 .word 0x20000ad9 + +08002cf0 <TIMER_IF_StopTimer>: + 8002cf0: b510 push {r4, lr} + 8002cf2: 4b07 ldr r3, [pc, #28] ; (8002d10 <TIMER_IF_StopTimer+0x20>) + 8002cf4: 4c07 ldr r4, [pc, #28] ; (8002d14 <TIMER_IF_StopTimer+0x24>) + 8002cf6: 2201 movs r2, #1 + 8002cf8: 65da str r2, [r3, #92] ; 0x5c + 8002cfa: f44f 7180 mov.w r1, #256 ; 0x100 + 8002cfe: 4620 mov r0, r4 + 8002d00: f006 fdbc bl 800987c <HAL_RTC_DeactivateAlarm> + 8002d04: f04f 33ff mov.w r3, #4294967295 + 8002d08: 6323 str r3, [r4, #48] ; 0x30 + 8002d0a: 2000 movs r0, #0 + 8002d0c: bd10 pop {r4, pc} + 8002d0e: bf00 nop + 8002d10: 40002800 .word 0x40002800 + 8002d14: 20000a68 .word 0x20000a68 + +08002d18 <TIMER_IF_BkUp_Write_Seconds>: + 8002d18: 4602 mov r2, r0 + 8002d1a: 2100 movs r1, #0 + 8002d1c: 4801 ldr r0, [pc, #4] ; (8002d24 <TIMER_IF_BkUp_Write_Seconds+0xc>) + 8002d1e: f006 bfc6 b.w 8009cae <HAL_RTCEx_BKUPWrite> + 8002d22: bf00 nop + 8002d24: 20000a68 .word 0x20000a68 + +08002d28 <TIMER_IF_BkUp_Write_SubSeconds>: + 8002d28: 4602 mov r2, r0 + 8002d2a: 2101 movs r1, #1 + 8002d2c: 4801 ldr r0, [pc, #4] ; (8002d34 <TIMER_IF_BkUp_Write_SubSeconds+0xc>) + 8002d2e: f006 bfbe b.w 8009cae <HAL_RTCEx_BKUPWrite> + 8002d32: bf00 nop + 8002d34: 20000a68 .word 0x20000a68 + +08002d38 <TIMER_IF_StartTimer>: + 8002d38: b510 push {r4, lr} + 8002d3a: b08c sub sp, #48 ; 0x30 + 8002d3c: 222c movs r2, #44 ; 0x2c + 8002d3e: 2100 movs r1, #0 + 8002d40: 4604 mov r4, r0 + 8002d42: a801 add r0, sp, #4 + 8002d44: f011 fa84 bl 8014250 <memset> + 8002d48: f7ff ffd2 bl 8002cf0 <TIMER_IF_StopTimer> + 8002d4c: 4b0c ldr r3, [pc, #48] ; (8002d80 <TIMER_IF_StartTimer+0x48>) + 8002d4e: 480d ldr r0, [pc, #52] ; (8002d84 <TIMER_IF_StartTimer+0x4c>) + 8002d50: 681b ldr r3, [r3, #0] + 8002d52: 441c add r4, r3 + 8002d54: 2300 movs r3, #0 + 8002d56: 9308 str r3, [sp, #32] + 8002d58: 9306 str r3, [sp, #24] + 8002d5a: f04f 5300 mov.w r3, #536870912 ; 0x20000000 + 8002d5e: 43e4 mvns r4, r4 + 8002d60: 9307 str r3, [sp, #28] + 8002d62: 2201 movs r2, #1 + 8002d64: f44f 7380 mov.w r3, #256 ; 0x100 + 8002d68: a901 add r1, sp, #4 + 8002d6a: 9402 str r4, [sp, #8] + 8002d6c: 930b str r3, [sp, #44] ; 0x2c + 8002d6e: f006 fe9b bl 8009aa8 <HAL_RTC_SetAlarm_IT> + 8002d72: b108 cbz r0, 8002d78 <TIMER_IF_StartTimer+0x40> + 8002d74: f7ff fc96 bl 80026a4 <Error_Handler> + 8002d78: 2000 movs r0, #0 + 8002d7a: b00c add sp, #48 ; 0x30 + 8002d7c: bd10 pop {r4, pc} + 8002d7e: bf00 nop + 8002d80: 20000adc .word 0x20000adc + 8002d84: 20000a68 .word 0x20000a68 + +08002d88 <TIMER_IF_GetTime>: + 8002d88: b538 push {r3, r4, r5, lr} + 8002d8a: 4605 mov r5, r0 + 8002d8c: f7ff ff8c bl 8002ca8 <GetTimerTicks> + 8002d90: 2102 movs r1, #2 + 8002d92: 4604 mov r4, r0 + 8002d94: 4807 ldr r0, [pc, #28] ; (8002db4 <TIMER_IF_GetTime+0x2c>) + 8002d96: f006 ff91 bl 8009cbc <HAL_RTCEx_BKUPRead> + 8002d9a: f3c4 0209 ubfx r2, r4, #0, #10 + 8002d9e: f44f 717a mov.w r1, #1000 ; 0x3e8 + 8002da2: fba2 2101 umull r2, r1, r2, r1 + 8002da6: 0a92 lsrs r2, r2, #10 + 8002da8: 0aa3 lsrs r3, r4, #10 + 8002daa: 802a strh r2, [r5, #0] + 8002dac: ea43 5080 orr.w r0, r3, r0, lsl #22 + 8002db0: bd38 pop {r3, r4, r5, pc} + 8002db2: bf00 nop + 8002db4: 20000a68 .word 0x20000a68 + +08002db8 <TIMER_IF_BkUp_Read_Seconds>: + 8002db8: 4801 ldr r0, [pc, #4] ; (8002dc0 <TIMER_IF_BkUp_Read_Seconds+0x8>) + 8002dba: 2100 movs r1, #0 + 8002dbc: f006 bf7e b.w 8009cbc <HAL_RTCEx_BKUPRead> + 8002dc0: 20000a68 .word 0x20000a68 + +08002dc4 <TIMER_IF_BkUp_Read_SubSeconds>: + 8002dc4: 4801 ldr r0, [pc, #4] ; (8002dcc <TIMER_IF_BkUp_Read_SubSeconds+0x8>) + 8002dc6: 2101 movs r1, #1 + 8002dc8: f006 bf78 b.w 8009cbc <HAL_RTCEx_BKUPRead> + 8002dcc: 20000a68 .word 0x20000a68 + +08002dd0 <TIMER_IF_Init>: + 8002dd0: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002dd2: 4d0f ldr r5, [pc, #60] ; (8002e10 <TIMER_IF_Init+0x40>) + 8002dd4: 782e ldrb r6, [r5, #0] + 8002dd6: b9ce cbnz r6, 8002e0c <TIMER_IF_Init+0x3c> + 8002dd8: 4c0e ldr r4, [pc, #56] ; (8002e14 <TIMER_IF_Init+0x44>) + 8002dda: f04f 37ff mov.w r7, #4294967295 + 8002dde: 6327 str r7, [r4, #48] ; 0x30 + 8002de0: f7ff fc62 bl 80026a8 <MX_RTC_Init> + 8002de4: f7ff ff84 bl 8002cf0 <TIMER_IF_StopTimer> + 8002de8: f44f 7180 mov.w r1, #256 ; 0x100 + 8002dec: 4620 mov r0, r4 + 8002dee: f006 fd45 bl 800987c <HAL_RTC_DeactivateAlarm> + 8002df2: 4620 mov r0, r4 + 8002df4: 6327 str r7, [r4, #48] ; 0x30 + 8002df6: f006 ff05 bl 8009c04 <HAL_RTCEx_EnableBypassShadow> + 8002dfa: 4632 mov r2, r6 + 8002dfc: 4620 mov r0, r4 + 8002dfe: 2102 movs r1, #2 + 8002e00: f006 ff55 bl 8009cae <HAL_RTCEx_BKUPWrite> + 8002e04: f7ff ff5a bl 8002cbc <TIMER_IF_SetTimerContext> + 8002e08: 2301 movs r3, #1 + 8002e0a: 702b strb r3, [r5, #0] + 8002e0c: 2000 movs r0, #0 + 8002e0e: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8002e10: 20000ad9 .word 0x20000ad9 + 8002e14: 20000a68 .word 0x20000a68 + +08002e18 <TIMER_IF_DelayMs>: + 8002e18: 4601 mov r1, r0 + 8002e1a: b510 push {r4, lr} + 8002e1c: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8002e20: 2300 movs r3, #0 + 8002e22: 0280 lsls r0, r0, #10 + 8002e24: 0d89 lsrs r1, r1, #22 + 8002e26: f7fe fe73 bl 8001b10 <__aeabi_uldivmod> + 8002e2a: 4601 mov r1, r0 + 8002e2c: f7ff ff3c bl 8002ca8 <GetTimerTicks> + 8002e30: 4604 mov r4, r0 + 8002e32: f7ff ff39 bl 8002ca8 <GetTimerTicks> + 8002e36: 1b03 subs r3, r0, r4 + 8002e38: 428b cmp r3, r1 + 8002e3a: d300 bcc.n 8002e3e <TIMER_IF_DelayMs+0x26> + 8002e3c: bd10 pop {r4, pc} + 8002e3e: bf00 nop + 8002e40: e7f7 b.n 8002e32 <TIMER_IF_DelayMs+0x1a> + +08002e42 <HAL_RTC_AlarmAEventCallback>: + 8002e42: f011 b893 b.w 8013f6c <UTIL_TIMER_IRQ_Handler> + ... + +08002e48 <HAL_RTCEx_SSRUEventCallback>: + 8002e48: b510 push {r4, lr} + 8002e4a: 4c06 ldr r4, [pc, #24] ; (8002e64 <HAL_RTCEx_SSRUEventCallback+0x1c>) + 8002e4c: 2102 movs r1, #2 + 8002e4e: 4620 mov r0, r4 + 8002e50: f006 ff34 bl 8009cbc <HAL_RTCEx_BKUPRead> + 8002e54: 2102 movs r1, #2 + 8002e56: 1c42 adds r2, r0, #1 + 8002e58: 4620 mov r0, r4 + 8002e5a: e8bd 4010 ldmia.w sp!, {r4, lr} + 8002e5e: f006 bf26 b.w 8009cae <HAL_RTCEx_BKUPWrite> + 8002e62: bf00 nop + 8002e64: 20000a68 .word 0x20000a68 + +08002e68 <MX_USART2_UART_Init>: + 8002e68: 4816 ldr r0, [pc, #88] ; (8002ec4 <MX_USART2_UART_Init+0x5c>) + 8002e6a: 4a17 ldr r2, [pc, #92] ; (8002ec8 <MX_USART2_UART_Init+0x60>) + 8002e6c: b508 push {r3, lr} + 8002e6e: f44f 33e1 mov.w r3, #115200 ; 0x1c200 + 8002e72: e9c0 2300 strd r2, r3, [r0] + 8002e76: 2300 movs r3, #0 + 8002e78: 220c movs r2, #12 + 8002e7a: e9c0 3302 strd r3, r3, [r0, #8] + 8002e7e: e9c0 2305 strd r2, r3, [r0, #20] + 8002e82: e9c0 3307 strd r3, r3, [r0, #28] + 8002e86: e9c0 3309 strd r3, r3, [r0, #36] ; 0x24 + 8002e8a: 6103 str r3, [r0, #16] + 8002e8c: f008 f8a3 bl 800afd6 <HAL_UART_Init> + 8002e90: b108 cbz r0, 8002e96 <MX_USART2_UART_Init+0x2e> + 8002e92: f7ff fc07 bl 80026a4 <Error_Handler> + 8002e96: 480b ldr r0, [pc, #44] ; (8002ec4 <MX_USART2_UART_Init+0x5c>) + 8002e98: 2100 movs r1, #0 + 8002e9a: f008 fa18 bl 800b2ce <HAL_UARTEx_SetTxFifoThreshold> + 8002e9e: b108 cbz r0, 8002ea4 <MX_USART2_UART_Init+0x3c> + 8002ea0: f7ff fc00 bl 80026a4 <Error_Handler> + 8002ea4: 4807 ldr r0, [pc, #28] ; (8002ec4 <MX_USART2_UART_Init+0x5c>) + 8002ea6: 2100 movs r1, #0 + 8002ea8: f008 fa31 bl 800b30e <HAL_UARTEx_SetRxFifoThreshold> + 8002eac: b108 cbz r0, 8002eb2 <MX_USART2_UART_Init+0x4a> + 8002eae: f7ff fbf9 bl 80026a4 <Error_Handler> + 8002eb2: 4804 ldr r0, [pc, #16] ; (8002ec4 <MX_USART2_UART_Init+0x5c>) + 8002eb4: f008 f9eb bl 800b28e <HAL_UARTEx_EnableFifoMode> + 8002eb8: b118 cbz r0, 8002ec2 <MX_USART2_UART_Init+0x5a> + 8002eba: e8bd 4008 ldmia.w sp!, {r3, lr} + 8002ebe: f7ff bbf1 b.w 80026a4 <Error_Handler> + 8002ec2: bd08 pop {r3, pc} + 8002ec4: 20000ba0 .word 0x20000ba0 + 8002ec8: 40004400 .word 0x40004400 + +08002ecc <HAL_UART_MspInit>: + 8002ecc: b570 push {r4, r5, r6, lr} + 8002ece: b096 sub sp, #88 ; 0x58 + 8002ed0: 4605 mov r5, r0 + 8002ed2: 2214 movs r2, #20 + 8002ed4: 2100 movs r1, #0 + 8002ed6: a803 add r0, sp, #12 + 8002ed8: f011 f9ba bl 8014250 <memset> + 8002edc: 2238 movs r2, #56 ; 0x38 + 8002ede: 2100 movs r1, #0 + 8002ee0: a808 add r0, sp, #32 + 8002ee2: f011 f9b5 bl 8014250 <memset> + 8002ee6: 682a ldr r2, [r5, #0] + 8002ee8: 4b33 ldr r3, [pc, #204] ; (8002fb8 <HAL_UART_MspInit+0xec>) + 8002eea: 429a cmp r2, r3 + 8002eec: d161 bne.n 8002fb2 <HAL_UART_MspInit+0xe6> + 8002eee: 2302 movs r3, #2 + 8002ef0: 9308 str r3, [sp, #32] + 8002ef2: a808 add r0, sp, #32 + 8002ef4: 4b31 ldr r3, [pc, #196] ; (8002fbc <HAL_UART_MspInit+0xf0>) + 8002ef6: 930a str r3, [sp, #40] ; 0x28 + 8002ef8: f006 fbf0 bl 80096dc <HAL_RCCEx_PeriphCLKConfig> + 8002efc: b108 cbz r0, 8002f02 <HAL_UART_MspInit+0x36> + 8002efe: f7ff fbd1 bl 80026a4 <Error_Handler> + 8002f02: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002f06: 210c movs r1, #12 + 8002f08: 6d9a ldr r2, [r3, #88] ; 0x58 + 8002f0a: 4c2d ldr r4, [pc, #180] ; (8002fc0 <HAL_UART_MspInit+0xf4>) + 8002f0c: f442 3200 orr.w r2, r2, #131072 ; 0x20000 + 8002f10: 659a str r2, [r3, #88] ; 0x58 + 8002f12: 6d9a ldr r2, [r3, #88] ; 0x58 + 8002f14: f402 3200 and.w r2, r2, #131072 ; 0x20000 + 8002f18: 9202 str r2, [sp, #8] + 8002f1a: 9a02 ldr r2, [sp, #8] + 8002f1c: 6cda ldr r2, [r3, #76] ; 0x4c + 8002f1e: f042 0201 orr.w r2, r2, #1 + 8002f22: 64da str r2, [r3, #76] ; 0x4c + 8002f24: 6cdb ldr r3, [r3, #76] ; 0x4c + 8002f26: f003 0301 and.w r3, r3, #1 + 8002f2a: 9301 str r3, [sp, #4] + 8002f2c: 9b01 ldr r3, [sp, #4] + 8002f2e: 2302 movs r3, #2 + 8002f30: 2600 movs r6, #0 + 8002f32: e9cd 1303 strd r1, r3, [sp, #12] + 8002f36: 2303 movs r3, #3 + 8002f38: e9cd 6305 strd r6, r3, [sp, #20] + 8002f3c: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8002f40: 2307 movs r3, #7 + 8002f42: a903 add r1, sp, #12 + 8002f44: 9307 str r3, [sp, #28] + 8002f46: f005 fa2d bl 80083a4 <HAL_GPIO_Init> + 8002f4a: 481e ldr r0, [pc, #120] ; (8002fc4 <HAL_UART_MspInit+0xf8>) + 8002f4c: 6226 str r6, [r4, #32] + 8002f4e: 2314 movs r3, #20 + 8002f50: e9c4 0300 strd r0, r3, [r4] + 8002f54: 2310 movs r3, #16 + 8002f56: e9c4 3602 strd r3, r6, [r4, #8] + 8002f5a: 4620 mov r0, r4 + 8002f5c: 2380 movs r3, #128 ; 0x80 + 8002f5e: e9c4 3604 strd r3, r6, [r4, #16] + 8002f62: e9c4 6606 strd r6, r6, [r4, #24] + 8002f66: f004 ff55 bl 8007e14 <HAL_DMA_Init> + 8002f6a: b108 cbz r0, 8002f70 <HAL_UART_MspInit+0xa4> + 8002f6c: f7ff fb9a bl 80026a4 <Error_Handler> + 8002f70: 4a15 ldr r2, [pc, #84] ; (8002fc8 <HAL_UART_MspInit+0xfc>) + 8002f72: 67ec str r4, [r5, #124] ; 0x7c + 8002f74: 62a5 str r5, [r4, #40] ; 0x28 + 8002f76: 4c15 ldr r4, [pc, #84] ; (8002fcc <HAL_UART_MspInit+0x100>) + 8002f78: 2313 movs r3, #19 + 8002f7a: e9c4 2300 strd r2, r3, [r4] + 8002f7e: 4620 mov r0, r4 + 8002f80: 2300 movs r3, #0 + 8002f82: 2280 movs r2, #128 ; 0x80 + 8002f84: e9c4 3302 strd r3, r3, [r4, #8] + 8002f88: e9c4 2304 strd r2, r3, [r4, #16] + 8002f8c: e9c4 3306 strd r3, r3, [r4, #24] + 8002f90: 6223 str r3, [r4, #32] + 8002f92: f004 ff3f bl 8007e14 <HAL_DMA_Init> + 8002f96: b108 cbz r0, 8002f9c <HAL_UART_MspInit+0xd0> + 8002f98: f7ff fb84 bl 80026a4 <Error_Handler> + 8002f9c: 2025 movs r0, #37 ; 0x25 + 8002f9e: f8c5 4080 str.w r4, [r5, #128] ; 0x80 + 8002fa2: 2200 movs r2, #0 + 8002fa4: 2102 movs r1, #2 + 8002fa6: 62a5 str r5, [r4, #40] ; 0x28 + 8002fa8: f004 fea2 bl 8007cf0 <HAL_NVIC_SetPriority> + 8002fac: 2025 movs r0, #37 ; 0x25 + 8002fae: f004 fed1 bl 8007d54 <HAL_NVIC_EnableIRQ> + 8002fb2: b016 add sp, #88 ; 0x58 + 8002fb4: bd70 pop {r4, r5, r6, pc} + 8002fb6: bf00 nop + 8002fb8: 40004400 .word 0x40004400 + 8002fbc: 000c0004 .word 0x000c0004 + 8002fc0: 20000b40 .word 0x20000b40 + 8002fc4: 40020080 .word 0x40020080 + 8002fc8: 4002006c .word 0x4002006c + 8002fcc: 20000ae0 .word 0x20000ae0 + +08002fd0 <HAL_UART_MspDeInit>: + 8002fd0: 6802 ldr r2, [r0, #0] + 8002fd2: 4b0e ldr r3, [pc, #56] ; (800300c <HAL_UART_MspDeInit+0x3c>) + 8002fd4: 429a cmp r2, r3 + 8002fd6: b510 push {r4, lr} + 8002fd8: 4604 mov r4, r0 + 8002fda: d116 bne.n 800300a <HAL_UART_MspDeInit+0x3a> + 8002fdc: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002fe0: 210c movs r1, #12 + 8002fe2: 6d93 ldr r3, [r2, #88] ; 0x58 + 8002fe4: f423 3300 bic.w r3, r3, #131072 ; 0x20000 + 8002fe8: 6593 str r3, [r2, #88] ; 0x58 + 8002fea: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8002fee: f005 fa85 bl 80084fc <HAL_GPIO_DeInit> + 8002ff2: 6fe0 ldr r0, [r4, #124] ; 0x7c + 8002ff4: f004 ff82 bl 8007efc <HAL_DMA_DeInit> + 8002ff8: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 8002ffc: f004 ff7e bl 8007efc <HAL_DMA_DeInit> + 8003000: e8bd 4010 ldmia.w sp!, {r4, lr} + 8003004: 2025 movs r0, #37 ; 0x25 + 8003006: f004 beb3 b.w 8007d70 <HAL_NVIC_DisableIRQ> + 800300a: bd10 pop {r4, pc} + 800300c: 40004400 .word 0x40004400 + +08003010 <vcom_Trace_DMA>: + 8003010: b508 push {r3, lr} + 8003012: 460a mov r2, r1 + 8003014: 4601 mov r1, r0 + 8003016: 4802 ldr r0, [pc, #8] ; (8003020 <vcom_Trace_DMA+0x10>) + 8003018: f007 f960 bl 800a2dc <HAL_UART_Transmit_DMA> + 800301c: 2000 movs r0, #0 + 800301e: bd08 pop {r3, pc} + 8003020: 20000ba0 .word 0x20000ba0 + +08003024 <vcom_ReceiveInit>: + 8003024: b513 push {r0, r1, r4, lr} + 8003026: 4b11 ldr r3, [pc, #68] ; (800306c <vcom_ReceiveInit+0x48>) + 8003028: 4c11 ldr r4, [pc, #68] ; (8003070 <vcom_ReceiveInit+0x4c>) + 800302a: 6018 str r0, [r3, #0] + 800302c: f44f 1300 mov.w r3, #2097152 ; 0x200000 + 8003030: 9300 str r3, [sp, #0] + 8003032: ab02 add r3, sp, #8 + 8003034: e913 0006 ldmdb r3, {r1, r2} + 8003038: 4620 mov r0, r4 + 800303a: f008 f8cc bl 800b1d6 <HAL_UARTEx_StopModeWakeUpSourceConfig> + 800303e: 6823 ldr r3, [r4, #0] + 8003040: 69da ldr r2, [r3, #28] + 8003042: 03d1 lsls r1, r2, #15 + 8003044: d4fc bmi.n 8003040 <vcom_ReceiveInit+0x1c> + 8003046: 69da ldr r2, [r3, #28] + 8003048: 0252 lsls r2, r2, #9 + 800304a: d5fc bpl.n 8003046 <vcom_ReceiveInit+0x22> + 800304c: 689a ldr r2, [r3, #8] + 800304e: 4808 ldr r0, [pc, #32] ; (8003070 <vcom_ReceiveInit+0x4c>) + 8003050: f442 0280 orr.w r2, r2, #4194304 ; 0x400000 + 8003054: 609a str r2, [r3, #8] + 8003056: f008 f904 bl 800b262 <HAL_UARTEx_EnableStopMode> + 800305a: 4906 ldr r1, [pc, #24] ; (8003074 <vcom_ReceiveInit+0x50>) + 800305c: 4804 ldr r0, [pc, #16] ; (8003070 <vcom_ReceiveInit+0x4c>) + 800305e: 2201 movs r2, #1 + 8003060: f008 f872 bl 800b148 <HAL_UART_Receive_IT> + 8003064: 2000 movs r0, #0 + 8003066: b002 add sp, #8 + 8003068: bd10 pop {r4, pc} + 800306a: bf00 nop + 800306c: 20000c34 .word 0x20000c34 + 8003070: 20000ba0 .word 0x20000ba0 + 8003074: 20000c3c .word 0x20000c3c + +08003078 <vcom_Init>: + 8003078: b508 push {r3, lr} + 800307a: 4b07 ldr r3, [pc, #28] ; (8003098 <vcom_Init+0x20>) + 800307c: 6018 str r0, [r3, #0] + 800307e: f7fe ffc6 bl 800200e <MX_DMA_Init> + 8003082: f7ff fef1 bl 8002e68 <MX_USART2_UART_Init> + 8003086: 4a05 ldr r2, [pc, #20] ; (800309c <vcom_Init+0x24>) + 8003088: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 + 800308c: f043 6300 orr.w r3, r3, #134217728 ; 0x8000000 + 8003090: f8c2 3080 str.w r3, [r2, #128] ; 0x80 + 8003094: 2000 movs r0, #0 + 8003096: bd08 pop {r3, pc} + 8003098: 20000c38 .word 0x20000c38 + 800309c: 58000800 .word 0x58000800 + +080030a0 <vcom_DeInit>: + 80030a0: b508 push {r3, lr} + 80030a2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80030a6: 4808 ldr r0, [pc, #32] ; (80030c8 <vcom_DeInit+0x28>) + 80030a8: 6b9a ldr r2, [r3, #56] ; 0x38 + 80030aa: f442 3200 orr.w r2, r2, #131072 ; 0x20000 + 80030ae: 639a str r2, [r3, #56] ; 0x38 + 80030b0: 6b9a ldr r2, [r3, #56] ; 0x38 + 80030b2: f422 3200 bic.w r2, r2, #131072 ; 0x20000 + 80030b6: 639a str r2, [r3, #56] ; 0x38 + 80030b8: f7ff ff8a bl 8002fd0 <HAL_UART_MspDeInit> + 80030bc: 200f movs r0, #15 + 80030be: f004 fe57 bl 8007d70 <HAL_NVIC_DisableIRQ> + 80030c2: 2000 movs r0, #0 + 80030c4: bd08 pop {r3, pc} + 80030c6: bf00 nop + 80030c8: 20000ba0 .word 0x20000ba0 + +080030cc <vcom_Resume>: + 80030cc: b508 push {r3, lr} + 80030ce: 4807 ldr r0, [pc, #28] ; (80030ec <vcom_Resume+0x20>) + 80030d0: f007 ff81 bl 800afd6 <HAL_UART_Init> + 80030d4: b108 cbz r0, 80030da <vcom_Resume+0xe> + 80030d6: f7ff fae5 bl 80026a4 <Error_Handler> + 80030da: 4805 ldr r0, [pc, #20] ; (80030f0 <vcom_Resume+0x24>) + 80030dc: f004 fe9a bl 8007e14 <HAL_DMA_Init> + 80030e0: b118 cbz r0, 80030ea <vcom_Resume+0x1e> + 80030e2: e8bd 4008 ldmia.w sp!, {r3, lr} + 80030e6: f7ff badd b.w 80026a4 <Error_Handler> + 80030ea: bd08 pop {r3, pc} + 80030ec: 20000ba0 .word 0x20000ba0 + 80030f0: 20000b40 .word 0x20000b40 + +080030f4 <HAL_UART_TxCpltCallback>: + 80030f4: 6802 ldr r2, [r0, #0] + 80030f6: 4b04 ldr r3, [pc, #16] ; (8003108 <HAL_UART_TxCpltCallback+0x14>) + 80030f8: 429a cmp r2, r3 + 80030fa: d103 bne.n 8003104 <HAL_UART_TxCpltCallback+0x10> + 80030fc: 4b03 ldr r3, [pc, #12] ; (800310c <HAL_UART_TxCpltCallback+0x18>) + 80030fe: 2000 movs r0, #0 + 8003100: 681b ldr r3, [r3, #0] + 8003102: 4718 bx r3 + 8003104: 4770 bx lr + 8003106: bf00 nop + 8003108: 40004400 .word 0x40004400 + 800310c: 20000c38 .word 0x20000c38 + +08003110 <HAL_UART_RxCpltCallback>: + 8003110: 6802 ldr r2, [r0, #0] + 8003112: 4b0b ldr r3, [pc, #44] ; (8003140 <HAL_UART_RxCpltCallback+0x30>) + 8003114: 429a cmp r2, r3 + 8003116: b510 push {r4, lr} + 8003118: 4604 mov r4, r0 + 800311a: d10f bne.n 800313c <HAL_UART_RxCpltCallback+0x2c> + 800311c: 4b09 ldr r3, [pc, #36] ; (8003144 <HAL_UART_RxCpltCallback+0x34>) + 800311e: 681b ldr r3, [r3, #0] + 8003120: b12b cbz r3, 800312e <HAL_UART_RxCpltCallback+0x1e> + 8003122: f8d0 2090 ldr.w r2, [r0, #144] ; 0x90 + 8003126: b912 cbnz r2, 800312e <HAL_UART_RxCpltCallback+0x1e> + 8003128: 4807 ldr r0, [pc, #28] ; (8003148 <HAL_UART_RxCpltCallback+0x38>) + 800312a: 2101 movs r1, #1 + 800312c: 4798 blx r3 + 800312e: 4620 mov r0, r4 + 8003130: 4905 ldr r1, [pc, #20] ; (8003148 <HAL_UART_RxCpltCallback+0x38>) + 8003132: e8bd 4010 ldmia.w sp!, {r4, lr} + 8003136: 2201 movs r2, #1 + 8003138: f008 b806 b.w 800b148 <HAL_UART_Receive_IT> + 800313c: bd10 pop {r4, pc} + 800313e: bf00 nop + 8003140: 40004400 .word 0x40004400 + 8003144: 20000c34 .word 0x20000c34 + 8003148: 20000c3c .word 0x20000c3c + +0800314c <STS_SENSOR_Power_ON.part.0>: + 800314c: 4802 ldr r0, [pc, #8] ; (8003158 <STS_SENSOR_Power_ON.part.0+0xc>) + 800314e: 2201 movs r2, #1 + 8003150: 2110 movs r1, #16 + 8003152: f005 ba4d b.w 80085f0 <HAL_GPIO_WritePin> + 8003156: bf00 nop + 8003158: 48000400 .word 0x48000400 + +0800315c <STS_SENSOR_Power_OFF.part.0>: + 800315c: 4802 ldr r0, [pc, #8] ; (8003168 <STS_SENSOR_Power_OFF.part.0+0xc>) + 800315e: 2200 movs r2, #0 + 8003160: 2110 movs r1, #16 + 8003162: f005 ba45 b.w 80085f0 <HAL_GPIO_WritePin> + 8003166: bf00 nop + 8003168: 48000400 .word 0x48000400 + +0800316c <STS_YunhornAuthenticationCode_Process>: + 800316c: b513 push {r0, r1, r4, lr} + 800316e: 4c12 ldr r4, [pc, #72] ; (80031b8 <STS_YunhornAuthenticationCode_Process+0x4c>) + 8003170: 7823 ldrb r3, [r4, #0] + 8003172: f003 02ff and.w r2, r3, #255 ; 0xff + 8003176: b93b cbnz r3, 8003188 <STS_YunhornAuthenticationCode_Process+0x1c> + 8003178: 4b10 ldr r3, [pc, #64] ; (80031bc <STS_YunhornAuthenticationCode_Process+0x50>) + 800317a: 4611 mov r1, r2 + 800317c: 2002 movs r0, #2 + 800317e: b002 add sp, #8 + 8003180: e8bd 4010 ldmia.w sp!, {r4, lr} + 8003184: f010 bb24 b.w 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003188: f7ff fba6 bl 80028d8 <sts_hmac_verify> + 800318c: 3800 subs r0, #0 + 800318e: 4b0c ldr r3, [pc, #48] ; (80031c0 <STS_YunhornAuthenticationCode_Process+0x54>) + 8003190: bf18 it ne + 8003192: 2001 movne r0, #1 + 8003194: 0040 lsls r0, r0, #1 + 8003196: 7018 strb r0, [r3, #0] + 8003198: 781a ldrb r2, [r3, #0] + 800319a: 2a02 cmp r2, #2 + 800319c: bf04 itt eq + 800319e: 2200 moveq r2, #0 + 80031a0: 7022 strbeq r2, [r4, #0] + 80031a2: 781b ldrb r3, [r3, #0] + 80031a4: 9300 str r3, [sp, #0] + 80031a6: 2200 movs r2, #0 + 80031a8: 4b06 ldr r3, [pc, #24] ; (80031c4 <STS_YunhornAuthenticationCode_Process+0x58>) + 80031aa: 4611 mov r1, r2 + 80031ac: 2003 movs r0, #3 + 80031ae: f010 fb0f bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80031b2: b002 add sp, #8 + 80031b4: bd10 pop {r4, pc} + 80031b6: bf00 nop + 80031b8: 20000e4e .word 0x20000e4e + 80031bc: 0801451c .word 0x0801451c + 80031c0: 20000c44 .word 0x20000c44 + 80031c4: 08014538 .word 0x08014538 + +080031c8 <STS_YunhornSTSEventRFAC_Process>: + 80031c8: b538 push {r3, r4, r5, lr} + 80031ca: 4d16 ldr r5, [pc, #88] ; (8003224 <STS_YunhornSTSEventRFAC_Process+0x5c>) + 80031cc: 782b ldrb r3, [r5, #0] + 80031ce: f003 02ff and.w r2, r3, #255 ; 0xff + 80031d2: bb33 cbnz r3, 8003222 <STS_YunhornSTSEventRFAC_Process+0x5a> + 80031d4: 4c14 ldr r4, [pc, #80] ; (8003228 <STS_YunhornSTSEventRFAC_Process+0x60>) + 80031d6: 6823 ldr r3, [r4, #0] + 80031d8: 2b01 cmp r3, #1 + 80031da: d90c bls.n 80031f6 <STS_YunhornSTSEventRFAC_Process+0x2e> + 80031dc: 6823 ldr r3, [r4, #0] + 80031de: 2b04 cmp r3, #4 + 80031e0: d809 bhi.n 80031f6 <STS_YunhornSTSEventRFAC_Process+0x2e> + 80031e2: 4611 mov r1, r2 + 80031e4: 4b11 ldr r3, [pc, #68] ; (800322c <STS_YunhornSTSEventRFAC_Process+0x64>) + 80031e6: 2002 movs r0, #2 + 80031e8: f010 faf2 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80031ec: 4a10 ldr r2, [pc, #64] ; (8003230 <STS_YunhornSTSEventRFAC_Process+0x68>) + 80031ee: 2104 movs r1, #4 + 80031f0: 2001 movs r0, #1 + 80031f2: f000 fb91 bl 8003918 <STS_SENSOR_Upload_Message> + 80031f6: 6823 ldr r3, [r4, #0] + 80031f8: 2b04 cmp r3, #4 + 80031fa: d912 bls.n 8003222 <STS_YunhornSTSEventRFAC_Process+0x5a> + 80031fc: 2200 movs r2, #0 + 80031fe: 4b0d ldr r3, [pc, #52] ; (8003234 <STS_YunhornSTSEventRFAC_Process+0x6c>) + 8003200: 4611 mov r1, r2 + 8003202: 2002 movs r0, #2 + 8003204: f010 fae4 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003208: f7ff fb66 bl 80028d8 <sts_hmac_verify> + 800320c: 3800 subs r0, #0 + 800320e: 4b0a ldr r3, [pc, #40] ; (8003238 <STS_YunhornSTSEventRFAC_Process+0x70>) + 8003210: bf18 it ne + 8003212: 2001 movne r0, #1 + 8003214: 0040 lsls r0, r0, #1 + 8003216: 7018 strb r0, [r3, #0] + 8003218: 781b ldrb r3, [r3, #0] + 800321a: 2b02 cmp r3, #2 + 800321c: bf04 itt eq + 800321e: 2300 moveq r3, #0 + 8003220: 702b strbeq r3, [r5, #0] + 8003222: bd38 pop {r3, r4, r5, pc} + 8003224: 20000e4e .word 0x20000e4e + 8003228: 20000c40 .word 0x20000c40 + 800322c: 0801454f .word 0x0801454f + 8003230: 08014574 .word 0x08014574 + 8003234: 08014579 .word 0x08014579 + 8003238: 20000c44 .word 0x20000c44 + +0800323c <STS_YunhornSTSEventP4_Process>: + 800323c: b508 push {r3, lr} + 800323e: f7ff ff85 bl 800314c <STS_SENSOR_Power_ON.part.0> + 8003242: 2200 movs r2, #0 + 8003244: 4b05 ldr r3, [pc, #20] ; (800325c <STS_YunhornSTSEventP4_Process+0x20>) + 8003246: 4611 mov r1, r2 + 8003248: 2001 movs r0, #1 + 800324a: f010 fac1 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800324e: f001 fd19 bl 8004c84 <STS_TOF_VL53L0X_Range_Process> + 8003252: e8bd 4008 ldmia.w sp!, {r3, lr} + 8003256: f7ff bf81 b.w 800315c <STS_SENSOR_Power_OFF.part.0> + 800325a: bf00 nop + 800325c: 080145ac .word 0x080145ac + +08003260 <STS_SENSOR_Power_ON>: + 8003260: 2802 cmp r0, #2 + 8003262: d801 bhi.n 8003268 <STS_SENSOR_Power_ON+0x8> + 8003264: f7ff bf72 b.w 800314c <STS_SENSOR_Power_ON.part.0> + 8003268: 4770 bx lr + +0800326a <STS_SENSOR_Power_OFF>: + 800326a: 2802 cmp r0, #2 + 800326c: d801 bhi.n 8003272 <STS_SENSOR_Power_OFF+0x8> + 800326e: f7ff bf75 b.w 800315c <STS_SENSOR_Power_OFF.part.0> + 8003272: 4770 bx lr + +08003274 <STS_SENSOR_MEMS_Reset>: + 8003274: 2802 cmp r0, #2 + 8003276: b508 push {r3, lr} + 8003278: d81b bhi.n 80032b2 <STS_SENSOR_MEMS_Reset+0x3e> + 800327a: 2201 movs r2, #1 + 800327c: 2110 movs r1, #16 + 800327e: 480d ldr r0, [pc, #52] ; (80032b4 <STS_SENSOR_MEMS_Reset+0x40>) + 8003280: f005 f9b6 bl 80085f0 <HAL_GPIO_WritePin> + 8003284: 2032 movs r0, #50 ; 0x32 + 8003286: f7ff fc69 bl 8002b5c <HAL_Delay> + 800328a: 480a ldr r0, [pc, #40] ; (80032b4 <STS_SENSOR_MEMS_Reset+0x40>) + 800328c: 2200 movs r2, #0 + 800328e: 2110 movs r1, #16 + 8003290: f005 f9ae bl 80085f0 <HAL_GPIO_WritePin> + 8003294: 2201 movs r2, #1 + 8003296: 2110 movs r1, #16 + 8003298: 4806 ldr r0, [pc, #24] ; (80032b4 <STS_SENSOR_MEMS_Reset+0x40>) + 800329a: f005 f9a9 bl 80085f0 <HAL_GPIO_WritePin> + 800329e: 2032 movs r0, #50 ; 0x32 + 80032a0: f7ff fc5c bl 8002b5c <HAL_Delay> + 80032a4: e8bd 4008 ldmia.w sp!, {r3, lr} + 80032a8: 4802 ldr r0, [pc, #8] ; (80032b4 <STS_SENSOR_MEMS_Reset+0x40>) + 80032aa: 2200 movs r2, #0 + 80032ac: 2110 movs r1, #16 + 80032ae: f005 b99f b.w 80085f0 <HAL_GPIO_WritePin> + 80032b2: bd08 pop {r3, pc} + 80032b4: 48000400 .word 0x48000400 + +080032b8 <STS_SENSOR_NVM_CFG_SIMPLE>: + 80032b8: 4770 bx lr + +080032ba <MX_LoRaWAN_Init>: + 80032ba: b508 push {r3, lr} + 80032bc: f7ff fb9e bl 80029fc <SystemApp_Init> + 80032c0: e8bd 4008 ldmia.w sp!, {r3, lr} + 80032c4: f000 bcdc b.w 8003c80 <LoRaWAN_Init> + +080032c8 <MX_LoRaWAN_Process>: + 80032c8: f04f 30ff mov.w r0, #4294967295 + 80032cc: f010 bbcc b.w 8013a68 <UTIL_SEQ_Run> + +080032d0 <OnTxTimerLedEvent>: + 80032d0: 4770 bx lr + +080032d2 <OnSysTimeUpdate>: + 80032d2: 4770 bx lr + +080032d4 <OnTxFrameCtrlChanged>: + 80032d4: 4b01 ldr r3, [pc, #4] ; (80032dc <OnTxFrameCtrlChanged+0x8>) + 80032d6: 70d8 strb r0, [r3, #3] + 80032d8: 4770 bx lr + 80032da: bf00 nop + 80032dc: 2000005c .word 0x2000005c + +080032e0 <OnPingSlotPeriodicityChanged>: + 80032e0: 4b01 ldr r3, [pc, #4] ; (80032e8 <OnPingSlotPeriodicityChanged+0x8>) + 80032e2: 7418 strb r0, [r3, #16] + 80032e4: 4770 bx lr + 80032e6: bf00 nop + 80032e8: 2000005c .word 0x2000005c + +080032ec <OnClassChange>: + 80032ec: b507 push {r0, r1, r2, lr} + 80032ee: 4b06 ldr r3, [pc, #24] ; (8003308 <OnClassChange+0x1c>) + 80032f0: 2200 movs r2, #0 + 80032f2: 5c1b ldrb r3, [r3, r0] + 80032f4: 9300 str r3, [sp, #0] + 80032f6: 4611 mov r1, r2 + 80032f8: 4b04 ldr r3, [pc, #16] ; (800330c <OnClassChange+0x20>) + 80032fa: 2002 movs r0, #2 + 80032fc: f010 fa68 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003300: b003 add sp, #12 + 8003302: f85d fb04 ldr.w pc, [sp], #4 + 8003306: bf00 nop + 8003308: 080145de .word 0x080145de + 800330c: 080145c4 .word 0x080145c4 + +08003310 <OnTxTimerEvent>: + 8003310: b508 push {r3, lr} + 8003312: 4b06 ldr r3, [pc, #24] ; (800332c <OnTxTimerEvent+0x1c>) + 8003314: 2201 movs r2, #1 + 8003316: 2002 movs r0, #2 + 8003318: 2100 movs r1, #0 + 800331a: 701a strb r2, [r3, #0] + 800331c: f010 fb6c bl 80139f8 <UTIL_SEQ_SetTask> + 8003320: e8bd 4008 ldmia.w sp!, {r3, lr} + 8003324: 4802 ldr r0, [pc, #8] ; (8003330 <OnTxTimerEvent+0x20>) + 8003326: f010 bdcf b.w 8013ec8 <UTIL_TIMER_Start> + 800332a: bf00 nop + 800332c: 20000e63 .word 0x20000e63 + 8003330: 20000d9c .word 0x20000d9c + +08003334 <OnMacProcessNotify>: + 8003334: 2100 movs r1, #0 + 8003336: 2001 movs r0, #1 + 8003338: f010 bb5e b.w 80139f8 <UTIL_SEQ_SetTask> + +0800333c <OnJoinRequest>: + 800333c: b537 push {r0, r1, r2, r4, r5, lr} + 800333e: 4604 mov r4, r0 + 8003340: b360 cbz r0, 800339c <OnJoinRequest+0x60> + 8003342: f990 5006 ldrsb.w r5, [r0, #6] + 8003346: bb5d cbnz r5, 80033a0 <OnJoinRequest+0x64> + 8003348: 4819 ldr r0, [pc, #100] ; (80033b0 <OnJoinRequest+0x74>) + 800334a: f010 fd6f bl 8013e2c <UTIL_TIMER_Stop> + 800334e: 4b19 ldr r3, [pc, #100] ; (80033b4 <OnJoinRequest+0x78>) + 8003350: 462a mov r2, r5 + 8003352: 4629 mov r1, r5 + 8003354: 2002 movs r0, #2 + 8003356: f010 fa3b bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800335a: 79e3 ldrb r3, [r4, #7] + 800335c: 2b01 cmp r3, #1 + 800335e: bf0c ite eq + 8003360: 4b15 ldreq r3, [pc, #84] ; (80033b8 <OnJoinRequest+0x7c>) + 8003362: 4b16 ldrne r3, [pc, #88] ; (80033bc <OnJoinRequest+0x80>) + 8003364: 462a mov r2, r5 + 8003366: 4629 mov r1, r5 + 8003368: 2002 movs r0, #2 + 800336a: f010 fa31 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800336e: 4b14 ldr r3, [pc, #80] ; (80033c0 <OnJoinRequest+0x84>) + 8003370: 79e2 ldrb r2, [r4, #7] + 8003372: 701a strb r2, [r3, #0] + 8003374: 781b ldrb r3, [r3, #0] + 8003376: 9300 str r3, [sp, #0] + 8003378: 2200 movs r2, #0 + 800337a: 4b12 ldr r3, [pc, #72] ; (80033c4 <OnJoinRequest+0x88>) + 800337c: 4611 mov r1, r2 + 800337e: 2001 movs r0, #1 + 8003380: f010 fa26 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003384: f994 3005 ldrsb.w r3, [r4, #5] + 8003388: 9301 str r3, [sp, #4] + 800338a: f994 3004 ldrsb.w r3, [r4, #4] + 800338e: 9300 str r3, [sp, #0] + 8003390: 2200 movs r2, #0 + 8003392: 4b0d ldr r3, [pc, #52] ; (80033c8 <OnJoinRequest+0x8c>) + 8003394: 4611 mov r1, r2 + 8003396: 2003 movs r0, #3 + 8003398: f010 fa1a bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800339c: b003 add sp, #12 + 800339e: bd30 pop {r4, r5, pc} + 80033a0: 2200 movs r2, #0 + 80033a2: 4b0a ldr r3, [pc, #40] ; (80033cc <OnJoinRequest+0x90>) + 80033a4: 4611 mov r1, r2 + 80033a6: 2002 movs r0, #2 + 80033a8: f010 fa12 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80033ac: e7ea b.n 8003384 <OnJoinRequest+0x48> + 80033ae: bf00 nop + 80033b0: 20000d38 .word 0x20000d38 + 80033b4: 080145e2 .word 0x080145e2 + 80033b8: 080145f7 .word 0x080145f7 + 80033bc: 08014614 .word 0x08014614 + 80033c0: 20000d68 .word 0x20000d68 + 80033c4: 08014631 .word 0x08014631 + 80033c8: 08014669 .word 0x08014669 + 80033cc: 08014650 .word 0x08014650 + +080033d0 <OnTxPeriodicityChanged>: + 80033d0: b513 push {r0, r1, r4, lr} + 80033d2: 4c0d ldr r4, [pc, #52] ; (8003408 <OnTxPeriodicityChanged+0x38>) + 80033d4: b1a0 cbz r0, 8003400 <OnTxPeriodicityChanged+0x30> + 80033d6: 6020 str r0, [r4, #0] + 80033d8: 480c ldr r0, [pc, #48] ; (800340c <OnTxPeriodicityChanged+0x3c>) + 80033da: f010 fd27 bl 8013e2c <UTIL_TIMER_Stop> + 80033de: 6821 ldr r1, [r4, #0] + 80033e0: 480a ldr r0, [pc, #40] ; (800340c <OnTxPeriodicityChanged+0x3c>) + 80033e2: f010 fdab bl 8013f3c <UTIL_TIMER_SetPeriod> + 80033e6: 4809 ldr r0, [pc, #36] ; (800340c <OnTxPeriodicityChanged+0x3c>) + 80033e8: f010 fd6e bl 8013ec8 <UTIL_TIMER_Start> + 80033ec: 6823 ldr r3, [r4, #0] + 80033ee: 9300 str r3, [sp, #0] + 80033f0: 2200 movs r2, #0 + 80033f2: 4b07 ldr r3, [pc, #28] ; (8003410 <OnTxPeriodicityChanged+0x40>) + 80033f4: 4611 mov r1, r2 + 80033f6: 2001 movs r0, #1 + 80033f8: f010 f9ea bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80033fc: b002 add sp, #8 + 80033fe: bd10 pop {r4, pc} + 8003400: f242 7310 movw r3, #10000 ; 0x2710 + 8003404: 6023 str r3, [r4, #0] + 8003406: e7e7 b.n 80033d8 <OnTxPeriodicityChanged+0x8> + 8003408: 20000074 .word 0x20000074 + 800340c: 20000d9c .word 0x20000d9c + 8003410: 08014692 .word 0x08014692 + +08003414 <OnYunhornSTSHeartBeatPeriodicityChanged>: + 8003414: b513 push {r0, r1, r4, lr} + 8003416: 4c0d ldr r4, [pc, #52] ; (800344c <OnYunhornSTSHeartBeatPeriodicityChanged+0x38>) + 8003418: 6020 str r0, [r4, #0] + 800341a: 6823 ldr r3, [r4, #0] + 800341c: b90b cbnz r3, 8003422 <OnYunhornSTSHeartBeatPeriodicityChanged+0xe> + 800341e: 4b0c ldr r3, [pc, #48] ; (8003450 <OnYunhornSTSHeartBeatPeriodicityChanged+0x3c>) + 8003420: 6023 str r3, [r4, #0] + 8003422: 480c ldr r0, [pc, #48] ; (8003454 <OnYunhornSTSHeartBeatPeriodicityChanged+0x40>) + 8003424: f010 fd02 bl 8013e2c <UTIL_TIMER_Stop> + 8003428: 6821 ldr r1, [r4, #0] + 800342a: 480a ldr r0, [pc, #40] ; (8003454 <OnYunhornSTSHeartBeatPeriodicityChanged+0x40>) + 800342c: f010 fd86 bl 8013f3c <UTIL_TIMER_SetPeriod> + 8003430: 4808 ldr r0, [pc, #32] ; (8003454 <OnYunhornSTSHeartBeatPeriodicityChanged+0x40>) + 8003432: f010 fd49 bl 8013ec8 <UTIL_TIMER_Start> + 8003436: 6823 ldr r3, [r4, #0] + 8003438: 9300 str r3, [sp, #0] + 800343a: 2200 movs r2, #0 + 800343c: 4b06 ldr r3, [pc, #24] ; (8003458 <OnYunhornSTSHeartBeatPeriodicityChanged+0x44>) + 800343e: 4611 mov r1, r2 + 8003440: 2001 movs r0, #1 + 8003442: f010 f9c5 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003446: b002 add sp, #8 + 8003448: bd10 pop {r4, pc} + 800344a: bf00 nop + 800344c: 2000000c .word 0x2000000c + 8003450: 000186a0 .word 0x000186a0 + 8003454: 20000db4 .word 0x20000db4 + 8003458: 080146bb .word 0x080146bb + +0800345c <OnStoreContextRequest>: + 800345c: b538 push {r3, r4, r5, lr} + 800345e: 4604 mov r4, r0 + 8003460: 460d mov r5, r1 + 8003462: 4807 ldr r0, [pc, #28] ; (8003480 <OnStoreContextRequest+0x24>) + 8003464: f44f 6100 mov.w r1, #2048 ; 0x800 + 8003468: f7fe ff80 bl 800236c <FLASH_IF_Erase> + 800346c: b930 cbnz r0, 800347c <OnStoreContextRequest+0x20> + 800346e: 462a mov r2, r5 + 8003470: 4621 mov r1, r4 + 8003472: 4803 ldr r0, [pc, #12] ; (8003480 <OnStoreContextRequest+0x24>) + 8003474: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 8003478: f7fe be7a b.w 8002170 <FLASH_IF_Write> + 800347c: bd38 pop {r3, r4, r5, pc} + 800347e: bf00 nop + 8003480: 0803f000 .word 0x0803f000 + +08003484 <OnRestoreContextRequest>: + 8003484: 460a mov r2, r1 + 8003486: 4901 ldr r1, [pc, #4] ; (800348c <OnRestoreContextRequest+0x8>) + 8003488: f7fe bf50 b.w 800232c <FLASH_IF_Read> + 800348c: 0803f000 .word 0x0803f000 + +08003490 <StopJoin>: + 8003490: b570 push {r4, r5, r6, lr} + 8003492: 4816 ldr r0, [pc, #88] ; (80034ec <StopJoin+0x5c>) + 8003494: f010 fcca bl 8013e2c <UTIL_TIMER_Stop> + 8003498: f008 fb92 bl 800bbc0 <LmHandlerStop> + 800349c: 4604 mov r4, r0 + 800349e: b150 cbz r0, 80034b6 <StopJoin+0x26> + 80034a0: 2200 movs r2, #0 + 80034a2: 4b13 ldr r3, [pc, #76] ; (80034f0 <StopJoin+0x60>) + 80034a4: 4611 mov r1, r2 + 80034a6: 2002 movs r0, #2 + 80034a8: f010 f992 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80034ac: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 80034b0: 4810 ldr r0, [pc, #64] ; (80034f4 <StopJoin+0x64>) + 80034b2: f010 bd09 b.w 8013ec8 <UTIL_TIMER_Start> + 80034b6: 4d10 ldr r5, [pc, #64] ; (80034f8 <StopJoin+0x68>) + 80034b8: 4b10 ldr r3, [pc, #64] ; (80034fc <StopJoin+0x6c>) + 80034ba: 4602 mov r2, r0 + 80034bc: 4601 mov r1, r0 + 80034be: 2002 movs r0, #2 + 80034c0: f010 f986 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80034c4: 2601 movs r6, #1 + 80034c6: 4b0e ldr r3, [pc, #56] ; (8003500 <StopJoin+0x70>) + 80034c8: 702e strb r6, [r5, #0] + 80034ca: 4622 mov r2, r4 + 80034cc: 4621 mov r1, r4 + 80034ce: 2002 movs r0, #2 + 80034d0: f010 f97e bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80034d4: 480b ldr r0, [pc, #44] ; (8003504 <StopJoin+0x74>) + 80034d6: f008 fa17 bl 800b908 <LmHandlerConfigure> + 80034da: 7828 ldrb r0, [r5, #0] + 80034dc: 4631 mov r1, r6 + 80034de: f008 f841 bl 800b564 <LmHandlerJoin> + 80034e2: 4802 ldr r0, [pc, #8] ; (80034ec <StopJoin+0x5c>) + 80034e4: f010 fcf0 bl 8013ec8 <UTIL_TIMER_Start> + 80034e8: e7e0 b.n 80034ac <StopJoin+0x1c> + 80034ea: bf00 nop + 80034ec: 20000d9c .word 0x20000d9c + 80034f0: 080146f7 .word 0x080146f7 + 80034f4: 20000d6c .word 0x20000d6c + 80034f8: 20000000 .word 0x20000000 + 80034fc: 08014715 .word 0x08014715 + 8003500: 08014729 .word 0x08014729 + 8003504: 2000005c .word 0x2000005c + +08003508 <SendTxData>: + 8003508: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800350c: 4f64 ldr r7, [pc, #400] ; (80036a0 <SendTxData+0x198>) + 800350e: 4d65 ldr r5, [pc, #404] ; (80036a4 <SendTxData+0x19c>) + 8003510: 4e65 ldr r6, [pc, #404] ; (80036a8 <SendTxData+0x1a0>) + 8003512: b08e sub sp, #56 ; 0x38 + 8003514: f7ff faa0 bl 8002a58 <GetBatteryLevel> + 8003518: 783b ldrb r3, [r7, #0] + 800351a: 782a ldrb r2, [r5, #0] + 800351c: 7831 ldrb r1, [r6, #0] + 800351e: 9300 str r3, [sp, #0] + 8003520: e9cd 2101 strd r2, r1, [sp, #4] + 8003524: 4b61 ldr r3, [pc, #388] ; (80036ac <SendTxData+0x1a4>) + 8003526: 2201 movs r2, #1 + 8003528: 2100 movs r1, #0 + 800352a: 4604 mov r4, r0 + 800352c: 2003 movs r0, #3 + 800352e: f010 f94f bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003532: f008 f887 bl 800b644 <LmHandlerIsBusy> + 8003536: 4680 mov r8, r0 + 8003538: b188 cbz r0, 800355e <SendTxData+0x56> + 800353a: 2400 movs r4, #0 + 800353c: 485c ldr r0, [pc, #368] ; (80036b0 <SendTxData+0x1a8>) + 800353e: f010 fc75 bl 8013e2c <UTIL_TIMER_Stop> + 8003542: 4b5c ldr r3, [pc, #368] ; (80036b4 <SendTxData+0x1ac>) + 8003544: 485a ldr r0, [pc, #360] ; (80036b0 <SendTxData+0x1a8>) + 8003546: 6819 ldr r1, [r3, #0] + 8003548: 42a1 cmp r1, r4 + 800354a: bf38 it cc + 800354c: 4621 movcc r1, r4 + 800354e: f010 fcf5 bl 8013f3c <UTIL_TIMER_SetPeriod> + 8003552: 4857 ldr r0, [pc, #348] ; (80036b0 <SendTxData+0x1a8>) + 8003554: f010 fcb8 bl 8013ec8 <UTIL_TIMER_Start> + 8003558: b00e add sp, #56 ; 0x38 + 800355a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800355e: f001 f9ad bl 80048bc <MX_TOF_Process> + 8003562: a804 add r0, sp, #16 + 8003564: f001 f9bc bl 80048e0 <STS_R0_SENSOR_Read> + 8003568: b223 sxth r3, r4 + 800356a: eb03 0343 add.w r3, r3, r3, lsl #1 + 800356e: 4c52 ldr r4, [pc, #328] ; (80036b8 <SendTxData+0x1b0>) + 8003570: a808 add r0, sp, #32 + 8003572: 22fe movs r2, #254 ; 0xfe + 8003574: eb03 1343 add.w r3, r3, r3, lsl #5 + 8003578: fbb3 f3f2 udiv r3, r3, r2 + 800357c: f88d 301c strb.w r3, [sp, #28] + 8003580: f7ff fb5a bl 8002c38 <EnvSensors_Read> + 8003584: 230a movs r3, #10 + 8003586: 4a4d ldr r2, [pc, #308] ; (80036bc <SendTxData+0x1b4>) + 8003588: 7023 strb r3, [r4, #0] + 800358a: 6863 ldr r3, [r4, #4] + 800358c: 7812 ldrb r2, [r2, #0] + 800358e: 701a strb r2, [r3, #0] + 8003590: 6863 ldr r3, [r4, #4] + 8003592: f883 8001 strb.w r8, [r3, #1] + 8003596: 6863 ldr r3, [r4, #4] + 8003598: 2210 movs r2, #16 + 800359a: 709a strb r2, [r3, #2] + 800359c: 6863 ldr r3, [r4, #4] + 800359e: 2201 movs r2, #1 + 80035a0: 70da strb r2, [r3, #3] + 80035a2: 6861 ldr r1, [r4, #4] + 80035a4: f89d 301c ldrb.w r3, [sp, #28] + 80035a8: 710b strb r3, [r1, #4] + 80035aa: 7839 ldrb r1, [r7, #0] + 80035ac: b1a1 cbz r1, 80035d8 <SendTxData+0xd0> + 80035ae: 210b movs r1, #11 + 80035b0: 7021 strb r1, [r4, #0] + 80035b2: 9303 str r3, [sp, #12] + 80035b4: f8bd 301a ldrh.w r3, [sp, #26] + 80035b8: 9302 str r3, [sp, #8] + 80035ba: f8bd 3018 ldrh.w r3, [sp, #24] + 80035be: 9301 str r3, [sp, #4] + 80035c0: f8bd 3010 ldrh.w r3, [sp, #16] + 80035c4: 9300 str r3, [sp, #0] + 80035c6: 4641 mov r1, r8 + 80035c8: 4b3d ldr r3, [pc, #244] ; (80036c0 <SendTxData+0x1b8>) + 80035ca: f887 8000 strb.w r8, [r7] + 80035ce: 2003 movs r0, #3 + 80035d0: f010 f8fe bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80035d4: 2305 movs r3, #5 + 80035d6: e02e b.n 8003636 <SendTxData+0x12e> + 80035d8: 782b ldrb r3, [r5, #0] + 80035da: b913 cbnz r3, 80035e2 <SendTxData+0xda> + 80035dc: 7833 ldrb r3, [r6, #0] + 80035de: 2b00 cmp r3, #0 + 80035e0: d0f8 beq.n 80035d4 <SendTxData+0xcc> + 80035e2: f8bd 3010 ldrh.w r3, [sp, #16] + 80035e6: 6862 ldr r2, [r4, #4] + 80035e8: 0a18 lsrs r0, r3, #8 + 80035ea: 7150 strb r0, [r2, #5] + 80035ec: 6862 ldr r2, [r4, #4] + 80035ee: 7193 strb r3, [r2, #6] + 80035f0: f8bd 2018 ldrh.w r2, [sp, #24] + 80035f4: 6860 ldr r0, [r4, #4] + 80035f6: 0a12 lsrs r2, r2, #8 + 80035f8: 71c2 strb r2, [r0, #7] + 80035fa: 6862 ldr r2, [r4, #4] + 80035fc: f8bd 0018 ldrh.w r0, [sp, #24] + 8003600: 7210 strb r0, [r2, #8] + 8003602: f8bd 001a ldrh.w r0, [sp, #26] + 8003606: 0a00 lsrs r0, r0, #8 + 8003608: 7250 strb r0, [r2, #9] + 800360a: f8bd 001a ldrh.w r0, [sp, #26] + 800360e: 7290 strb r0, [r2, #10] + 8003610: f89d 201c ldrb.w r2, [sp, #28] + 8003614: 9203 str r2, [sp, #12] + 8003616: f8bd 201a ldrh.w r2, [sp, #26] + 800361a: 9202 str r2, [sp, #8] + 800361c: f8bd 2018 ldrh.w r2, [sp, #24] + 8003620: 2100 movs r1, #0 + 8003622: e9cd 3200 strd r3, r2, [sp] + 8003626: 2003 movs r0, #3 + 8003628: 4b25 ldr r3, [pc, #148] ; (80036c0 <SendTxData+0x1b8>) + 800362a: 7031 strb r1, [r6, #0] + 800362c: 2201 movs r2, #1 + 800362e: 7029 strb r1, [r5, #0] + 8003630: f010 f8ce bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003634: 230b movs r3, #11 + 8003636: 4a23 ldr r2, [pc, #140] ; (80036c4 <SendTxData+0x1bc>) + 8003638: 7812 ldrb r2, [r2, #0] + 800363a: 2a01 cmp r2, #1 + 800363c: bf88 it hi + 800363e: 2300 movhi r3, #0 + 8003640: 7063 strb r3, [r4, #1] + 8003642: 4c21 ldr r4, [pc, #132] ; (80036c8 <SendTxData+0x1c0>) + 8003644: 7a63 ldrb r3, [r4, #9] + 8003646: b133 cbz r3, 8003656 <SendTxData+0x14e> + 8003648: f007 ff2e bl 800b4a8 <LmHandlerJoinStatus> + 800364c: 2801 cmp r0, #1 + 800364e: d102 bne.n 8003656 <SendTxData+0x14e> + 8003650: 4620 mov r0, r4 + 8003652: f010 fbeb bl 8013e2c <UTIL_TIMER_Stop> + 8003656: 4b1d ldr r3, [pc, #116] ; (80036cc <SendTxData+0x1c4>) + 8003658: 4817 ldr r0, [pc, #92] ; (80036b8 <SendTxData+0x1b0>) + 800365a: 78d9 ldrb r1, [r3, #3] + 800365c: 2200 movs r2, #0 + 800365e: f008 f80f bl 800b680 <LmHandlerSend> + 8003662: 4604 mov r4, r0 + 8003664: b930 cbnz r0, 8003674 <SendTxData+0x16c> + 8003666: 4601 mov r1, r0 + 8003668: 4b19 ldr r3, [pc, #100] ; (80036d0 <SendTxData+0x1c8>) + 800366a: 2201 movs r2, #1 + 800366c: 2002 movs r0, #2 + 800366e: f010 f8af bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003672: e763 b.n 800353c <SendTxData+0x34> + 8003674: 3406 adds r4, #6 + 8003676: f47f af60 bne.w 800353a <SendTxData+0x32> + 800367a: f007 ff0f bl 800b49c <LmHandlerGetDutyCycleWaitTime> + 800367e: 4604 mov r4, r0 + 8003680: 2800 cmp r0, #0 + 8003682: f43f af5b beq.w 800353c <SendTxData+0x34> + 8003686: 2201 movs r2, #1 + 8003688: f44f 737a mov.w r3, #1000 ; 0x3e8 + 800368c: 2100 movs r1, #0 + 800368e: fbb0 f3f3 udiv r3, r0, r3 + 8003692: 4610 mov r0, r2 + 8003694: 9300 str r3, [sp, #0] + 8003696: 4b0f ldr r3, [pc, #60] ; (80036d4 <SendTxData+0x1cc>) + 8003698: f010 f89a bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800369c: e74e b.n 800353c <SendTxData+0x34> + 800369e: bf00 nop + 80036a0: 20000dcc .word 0x20000dcc + 80036a4: 20000e63 .word 0x20000e63 + 80036a8: 20000e4d .word 0x20000e4d + 80036ac: 08014748 .word 0x08014748 + 80036b0: 20000d9c .word 0x20000d9c + 80036b4: 20000074 .word 0x20000074 + 80036b8: 20000004 .word 0x20000004 + 80036bc: 20000d37 .word 0x20000d37 + 80036c0: 080147a4 .word 0x080147a4 + 80036c4: 20000c44 .word 0x20000c44 + 80036c8: 20000d38 .word 0x20000d38 + 80036cc: 2000005c .word 0x2000005c + 80036d0: 0801482b .word 0x0801482b + 80036d4: 0801483a .word 0x0801483a + +080036d8 <OnBeaconStatusChange>: + 80036d8: b500 push {lr} + 80036da: 4603 mov r3, r0 + 80036dc: b08d sub sp, #52 ; 0x34 + 80036de: 2800 cmp r0, #0 + 80036e0: d02c beq.n 800373c <OnBeaconStatusChange+0x64> + 80036e2: 7840 ldrb r0, [r0, #1] + 80036e4: 2802 cmp r0, #2 + 80036e6: d00a beq.n 80036fe <OnBeaconStatusChange+0x26> + 80036e8: 2803 cmp r0, #3 + 80036ea: d02a beq.n 8003742 <OnBeaconStatusChange+0x6a> + 80036ec: 4b16 ldr r3, [pc, #88] ; (8003748 <OnBeaconStatusChange+0x70>) + 80036ee: 2200 movs r2, #0 + 80036f0: 4611 mov r1, r2 + 80036f2: 2002 movs r0, #2 + 80036f4: b00d add sp, #52 ; 0x34 + 80036f6: f85d eb04 ldr.w lr, [sp], #4 + 80036fa: f010 b869 b.w 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80036fe: 7eda ldrb r2, [r3, #27] + 8003700: 920b str r2, [sp, #44] ; 0x2c + 8003702: 7e9a ldrb r2, [r3, #26] + 8003704: 920a str r2, [sp, #40] ; 0x28 + 8003706: 7e5a ldrb r2, [r3, #25] + 8003708: 9209 str r2, [sp, #36] ; 0x24 + 800370a: 7e1a ldrb r2, [r3, #24] + 800370c: 9208 str r2, [sp, #32] + 800370e: 7dda ldrb r2, [r3, #23] + 8003710: 9207 str r2, [sp, #28] + 8003712: 7d9a ldrb r2, [r3, #22] + 8003714: 9206 str r2, [sp, #24] + 8003716: 7d5a ldrb r2, [r3, #21] + 8003718: 9205 str r2, [sp, #20] + 800371a: 685a ldr r2, [r3, #4] + 800371c: 9204 str r2, [sp, #16] + 800371e: 68da ldr r2, [r3, #12] + 8003720: 9203 str r2, [sp, #12] + 8003722: f993 2014 ldrsb.w r2, [r3, #20] + 8003726: 9202 str r2, [sp, #8] + 8003728: f9b3 2012 ldrsh.w r2, [r3, #18] + 800372c: 9201 str r2, [sp, #4] + 800372e: 7c1b ldrb r3, [r3, #16] + 8003730: 9300 str r3, [sp, #0] + 8003732: 2200 movs r2, #0 + 8003734: 4b05 ldr r3, [pc, #20] ; (800374c <OnBeaconStatusChange+0x74>) + 8003736: 4611 mov r1, r2 + 8003738: f010 f84a bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800373c: b00d add sp, #52 ; 0x34 + 800373e: f85d fb04 ldr.w pc, [sp], #4 + 8003742: 4b03 ldr r3, [pc, #12] ; (8003750 <OnBeaconStatusChange+0x78>) + 8003744: e7d3 b.n 80036ee <OnBeaconStatusChange+0x16> + 8003746: bf00 nop + 8003748: 08014858 .word 0x08014858 + 800374c: 0801486f .word 0x0801486f + 8003750: 080148e1 .word 0x080148e1 + +08003754 <OnNvmDataChange>: + 8003754: 2801 cmp r0, #1 + 8003756: f04f 0200 mov.w r2, #0 + 800375a: bf0c ite eq + 800375c: 4b02 ldreq r3, [pc, #8] ; (8003768 <OnNvmDataChange+0x14>) + 800375e: 4b03 ldrne r3, [pc, #12] ; (800376c <OnNvmDataChange+0x18>) + 8003760: 4611 mov r1, r2 + 8003762: 2002 movs r0, #2 + 8003764: f010 b834 b.w 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003768: 08014900 .word 0x08014900 + 800376c: 08014912 .word 0x08014912 + +08003770 <OnTxData>: + 8003770: b51f push {r0, r1, r2, r3, r4, lr} + 8003772: 4604 mov r4, r0 + 8003774: 2800 cmp r0, #0 + 8003776: d031 beq.n 80037dc <OnTxData+0x6c> + 8003778: 7803 ldrb r3, [r0, #0] + 800377a: 2b00 cmp r3, #0 + 800377c: d02e beq.n 80037dc <OnTxData+0x6c> + 800377e: 481d ldr r0, [pc, #116] ; (80037f4 <OnTxData+0x84>) + 8003780: f010 fba2 bl 8013ec8 <UTIL_TIMER_Start> + 8003784: 2200 movs r2, #0 + 8003786: 4611 mov r1, r2 + 8003788: 4b1b ldr r3, [pc, #108] ; (80037f8 <OnTxData+0x88>) + 800378a: 2002 movs r0, #2 + 800378c: f010 f820 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003790: f994 3018 ldrsb.w r3, [r4, #24] + 8003794: 9303 str r3, [sp, #12] + 8003796: f994 300a ldrsb.w r3, [r4, #10] + 800379a: 9302 str r3, [sp, #8] + 800379c: 7c23 ldrb r3, [r4, #16] + 800379e: 9301 str r3, [sp, #4] + 80037a0: 68e3 ldr r3, [r4, #12] + 80037a2: 9300 str r3, [sp, #0] + 80037a4: 2200 movs r2, #0 + 80037a6: 4611 mov r1, r2 + 80037a8: 4b14 ldr r3, [pc, #80] ; (80037fc <OnTxData+0x8c>) + 80037aa: 2003 movs r0, #3 + 80037ac: f010 f810 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80037b0: 2200 movs r2, #0 + 80037b2: 4b13 ldr r3, [pc, #76] ; (8003800 <OnTxData+0x90>) + 80037b4: 4611 mov r1, r2 + 80037b6: 2003 movs r0, #3 + 80037b8: f010 f80a bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80037bc: 7a23 ldrb r3, [r4, #8] + 80037be: 2b01 cmp r3, #1 + 80037c0: d10e bne.n 80037e0 <OnTxData+0x70> + 80037c2: 7a61 ldrb r1, [r4, #9] + 80037c4: 4a0f ldr r2, [pc, #60] ; (8003804 <OnTxData+0x94>) + 80037c6: 4b10 ldr r3, [pc, #64] ; (8003808 <OnTxData+0x98>) + 80037c8: 2900 cmp r1, #0 + 80037ca: bf08 it eq + 80037cc: 4613 moveq r3, r2 + 80037ce: 2200 movs r2, #0 + 80037d0: 9300 str r3, [sp, #0] + 80037d2: 4611 mov r1, r2 + 80037d4: 4b0d ldr r3, [pc, #52] ; (800380c <OnTxData+0x9c>) + 80037d6: 2003 movs r0, #3 + 80037d8: f00f fffa bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80037dc: b004 add sp, #16 + 80037de: bd10 pop {r4, pc} + 80037e0: 2200 movs r2, #0 + 80037e2: 4b0b ldr r3, [pc, #44] ; (8003810 <OnTxData+0xa0>) + 80037e4: 4611 mov r1, r2 + 80037e6: 2003 movs r0, #3 + 80037e8: b004 add sp, #16 + 80037ea: e8bd 4010 ldmia.w sp!, {r4, lr} + 80037ee: f00f bfef b.w 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80037f2: bf00 nop + 80037f4: 20000d84 .word 0x20000d84 + 80037f8: 0801492b .word 0x0801492b + 80037fc: 0801495c .word 0x0801495c + 8003800: 0801498d .word 0x0801498d + 8003804: 08014926 .word 0x08014926 + 8003808: 08014927 .word 0x08014927 + 800380c: 0801499a .word 0x0801499a + 8003810: 080149ab .word 0x080149ab + +08003814 <OnYunhornSTSHeartBeatTimerEvent>: + 8003814: b508 push {r3, lr} + 8003816: 4b0f ldr r3, [pc, #60] ; (8003854 <OnYunhornSTSHeartBeatTimerEvent+0x40>) + 8003818: 2201 movs r2, #1 + 800381a: 2100 movs r1, #0 + 800381c: 2002 movs r0, #2 + 800381e: 701a strb r2, [r3, #0] + 8003820: f010 f8ea bl 80139f8 <UTIL_SEQ_SetTask> + 8003824: 480c ldr r0, [pc, #48] ; (8003858 <OnYunhornSTSHeartBeatTimerEvent+0x44>) + 8003826: f010 fb4f bl 8013ec8 <UTIL_TIMER_Start> + 800382a: 4b0c ldr r3, [pc, #48] ; (800385c <OnYunhornSTSHeartBeatTimerEvent+0x48>) + 800382c: 781b ldrb r3, [r3, #0] + 800382e: b17b cbz r3, 8003850 <OnYunhornSTSHeartBeatTimerEvent+0x3c> + 8003830: 4b0b ldr r3, [pc, #44] ; (8003860 <OnYunhornSTSHeartBeatTimerEvent+0x4c>) + 8003832: 781b ldrb r3, [r3, #0] + 8003834: b963 cbnz r3, 8003850 <OnYunhornSTSHeartBeatTimerEvent+0x3c> + 8003836: 4b0b ldr r3, [pc, #44] ; (8003864 <OnYunhornSTSHeartBeatTimerEvent+0x50>) + 8003838: 681a ldr r2, [r3, #0] + 800383a: 2a04 cmp r2, #4 + 800383c: bf9e ittt ls + 800383e: 681a ldrls r2, [r3, #0] + 8003840: 3201 addls r2, #1 + 8003842: 601a strls r2, [r3, #0] + 8003844: 2100 movs r1, #0 + 8003846: e8bd 4008 ldmia.w sp!, {r3, lr} + 800384a: 2010 movs r0, #16 + 800384c: f010 b8d4 b.w 80139f8 <UTIL_SEQ_SetTask> + 8003850: bd08 pop {r3, pc} + 8003852: bf00 nop + 8003854: 20000dcc .word 0x20000dcc + 8003858: 20000db4 .word 0x20000db4 + 800385c: 20000d68 .word 0x20000d68 + 8003860: 20000e4e .word 0x20000e4e + 8003864: 20000c40 .word 0x20000c40 + +08003868 <OnStopJoinTimerEvent>: + 8003868: 4b04 ldr r3, [pc, #16] ; (800387c <OnStopJoinTimerEvent+0x14>) + 800386a: 781b ldrb r3, [r3, #0] + 800386c: 2b02 cmp r3, #2 + 800386e: d103 bne.n 8003878 <OnStopJoinTimerEvent+0x10> + 8003870: 2100 movs r1, #0 + 8003872: 2008 movs r0, #8 + 8003874: f010 b8c0 b.w 80139f8 <UTIL_SEQ_SetTask> + 8003878: 4770 bx lr + 800387a: bf00 nop + 800387c: 20000000 .word 0x20000000 + +08003880 <OnSystemReset>: + 8003880: b508 push {r3, lr} + 8003882: f008 f9a6 bl 800bbd2 <LmHandlerHalt> + 8003886: b980 cbnz r0, 80038aa <OnSystemReset+0x2a> + 8003888: f007 fe0e bl 800b4a8 <LmHandlerJoinStatus> + 800388c: 2801 cmp r0, #1 + 800388e: d10c bne.n 80038aa <OnSystemReset+0x2a> + 8003890: f3bf 8f4f dsb sy + 8003894: 4905 ldr r1, [pc, #20] ; (80038ac <OnSystemReset+0x2c>) + 8003896: 4b06 ldr r3, [pc, #24] ; (80038b0 <OnSystemReset+0x30>) + 8003898: 68ca ldr r2, [r1, #12] + 800389a: f402 62e0 and.w r2, r2, #1792 ; 0x700 + 800389e: 4313 orrs r3, r2 + 80038a0: 60cb str r3, [r1, #12] + 80038a2: f3bf 8f4f dsb sy + 80038a6: bf00 nop + 80038a8: e7fd b.n 80038a6 <OnSystemReset+0x26> + 80038aa: bd08 pop {r3, pc} + 80038ac: e000ed00 .word 0xe000ed00 + 80038b0: 05fa0004 .word 0x05fa0004 + +080038b4 <StoreContext>: + 80038b4: b510 push {r4, lr} + 80038b6: f008 fa21 bl 800bcfc <LmHandlerNvmDataStore> + 80038ba: f110 0f08 cmn.w r0, #8 + 80038be: d107 bne.n 80038d0 <StoreContext+0x1c> + 80038c0: 4b06 ldr r3, [pc, #24] ; (80038dc <StoreContext+0x28>) + 80038c2: 2200 movs r2, #0 + 80038c4: e8bd 4010 ldmia.w sp!, {r4, lr} + 80038c8: 4611 mov r1, r2 + 80038ca: 2002 movs r0, #2 + 80038cc: f00f bf80 b.w 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80038d0: 3001 adds r0, #1 + 80038d2: d101 bne.n 80038d8 <StoreContext+0x24> + 80038d4: 4b02 ldr r3, [pc, #8] ; (80038e0 <StoreContext+0x2c>) + 80038d6: e7f4 b.n 80038c2 <StoreContext+0xe> + 80038d8: bd10 pop {r4, pc} + 80038da: bf00 nop + 80038dc: 080149b9 .word 0x080149b9 + 80038e0: 080149cf .word 0x080149cf + +080038e4 <OnJoinTimerLedEvent>: + 80038e4: 4770 bx lr + +080038e6 <OnRxTimerLedEvent>: + 80038e6: 4770 bx lr + +080038e8 <HAL_GPIO_EXTI_Callback>: + 80038e8: 2802 cmp r0, #2 + 80038ea: d00a beq.n 8003902 <HAL_GPIO_EXTI_Callback+0x1a> + 80038ec: f5b0 6f80 cmp.w r0, #1024 ; 0x400 + 80038f0: d00a beq.n 8003908 <HAL_GPIO_EXTI_Callback+0x20> + 80038f2: 2801 cmp r0, #1 + 80038f4: d10b bne.n 800390e <HAL_GPIO_EXTI_Callback+0x26> + 80038f6: 4b06 ldr r3, [pc, #24] ; (8003910 <HAL_GPIO_EXTI_Callback+0x28>) + 80038f8: 2100 movs r1, #0 + 80038fa: 7018 strb r0, [r3, #0] + 80038fc: 2002 movs r0, #2 + 80038fe: f010 b87b b.w 80139f8 <UTIL_SEQ_SetTask> + 8003902: 2100 movs r1, #0 + 8003904: 2008 movs r0, #8 + 8003906: e7fa b.n 80038fe <HAL_GPIO_EXTI_Callback+0x16> + 8003908: 4b02 ldr r3, [pc, #8] ; (8003914 <HAL_GPIO_EXTI_Callback+0x2c>) + 800390a: 2201 movs r2, #1 + 800390c: 701a strb r2, [r3, #0] + 800390e: 4770 bx lr + 8003910: 20000e4d .word 0x20000e4d + 8003914: 20000ec8 .word 0x20000ec8 + +08003918 <STS_SENSOR_Upload_Message>: + 8003918: b573 push {r0, r1, r4, r5, r6, lr} + 800391a: 4605 mov r5, r0 + 800391c: 460c mov r4, r1 + 800391e: 4616 mov r6, r2 + 8003920: f007 fe90 bl 800b644 <LmHandlerIsBusy> + 8003924: 4603 mov r3, r0 + 8003926: 2800 cmp r0, #0 + 8003928: d038 beq.n 800399c <STS_SENSOR_Upload_Message+0x84> + 800392a: 2400 movs r4, #0 + 800392c: 4826 ldr r0, [pc, #152] ; (80039c8 <STS_SENSOR_Upload_Message+0xb0>) + 800392e: f010 fa7d bl 8013e2c <UTIL_TIMER_Stop> + 8003932: 4b26 ldr r3, [pc, #152] ; (80039cc <STS_SENSOR_Upload_Message+0xb4>) + 8003934: 4824 ldr r0, [pc, #144] ; (80039c8 <STS_SENSOR_Upload_Message+0xb0>) + 8003936: 6819 ldr r1, [r3, #0] + 8003938: 42a1 cmp r1, r4 + 800393a: bf38 it cc + 800393c: 4621 movcc r1, r4 + 800393e: f010 fafd bl 8013f3c <UTIL_TIMER_SetPeriod> + 8003942: 4821 ldr r0, [pc, #132] ; (80039c8 <STS_SENSOR_Upload_Message+0xb0>) + 8003944: b002 add sp, #8 + 8003946: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 800394a: f010 babd b.w 8013ec8 <UTIL_TIMER_Start> + 800394e: 684a ldr r2, [r1, #4] + 8003950: 5cf0 ldrb r0, [r6, r3] + 8003952: 54d0 strb r0, [r2, r3] + 8003954: 3301 adds r3, #1 + 8003956: b2da uxtb r2, r3 + 8003958: 42a2 cmp r2, r4 + 800395a: d3f8 bcc.n 800394e <STS_SENSOR_Upload_Message+0x36> + 800395c: 4b1c ldr r3, [pc, #112] ; (80039d0 <STS_SENSOR_Upload_Message+0xb8>) + 800395e: 700d strb r5, [r1, #0] + 8003960: 781b ldrb r3, [r3, #0] + 8003962: 2b01 cmp r3, #1 + 8003964: bf88 it hi + 8003966: 2400 movhi r4, #0 + 8003968: 704c strb r4, [r1, #1] + 800396a: 4c1a ldr r4, [pc, #104] ; (80039d4 <STS_SENSOR_Upload_Message+0xbc>) + 800396c: 7a63 ldrb r3, [r4, #9] + 800396e: b133 cbz r3, 800397e <STS_SENSOR_Upload_Message+0x66> + 8003970: f007 fd9a bl 800b4a8 <LmHandlerJoinStatus> + 8003974: 2801 cmp r0, #1 + 8003976: d102 bne.n 800397e <STS_SENSOR_Upload_Message+0x66> + 8003978: 4620 mov r0, r4 + 800397a: f010 fa57 bl 8013e2c <UTIL_TIMER_Stop> + 800397e: 4b16 ldr r3, [pc, #88] ; (80039d8 <STS_SENSOR_Upload_Message+0xc0>) + 8003980: 4816 ldr r0, [pc, #88] ; (80039dc <STS_SENSOR_Upload_Message+0xc4>) + 8003982: 78d9 ldrb r1, [r3, #3] + 8003984: 2200 movs r2, #0 + 8003986: f007 fe7b bl 800b680 <LmHandlerSend> + 800398a: 4604 mov r4, r0 + 800398c: b940 cbnz r0, 80039a0 <STS_SENSOR_Upload_Message+0x88> + 800398e: 2201 movs r2, #1 + 8003990: 4601 mov r1, r0 + 8003992: 4b13 ldr r3, [pc, #76] ; (80039e0 <STS_SENSOR_Upload_Message+0xc8>) + 8003994: 4610 mov r0, r2 + 8003996: f00f ff1b bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800399a: e7c7 b.n 800392c <STS_SENSOR_Upload_Message+0x14> + 800399c: 490f ldr r1, [pc, #60] ; (80039dc <STS_SENSOR_Upload_Message+0xc4>) + 800399e: e7da b.n 8003956 <STS_SENSOR_Upload_Message+0x3e> + 80039a0: 3406 adds r4, #6 + 80039a2: d1c2 bne.n 800392a <STS_SENSOR_Upload_Message+0x12> + 80039a4: f007 fd7a bl 800b49c <LmHandlerGetDutyCycleWaitTime> + 80039a8: 4604 mov r4, r0 + 80039aa: 2800 cmp r0, #0 + 80039ac: d0be beq.n 800392c <STS_SENSOR_Upload_Message+0x14> + 80039ae: 2201 movs r2, #1 + 80039b0: f44f 737a mov.w r3, #1000 ; 0x3e8 + 80039b4: 2100 movs r1, #0 + 80039b6: fbb0 f3f3 udiv r3, r0, r3 + 80039ba: 4610 mov r0, r2 + 80039bc: 9300 str r3, [sp, #0] + 80039be: 4b09 ldr r3, [pc, #36] ; (80039e4 <STS_SENSOR_Upload_Message+0xcc>) + 80039c0: f00f ff06 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80039c4: e7b2 b.n 800392c <STS_SENSOR_Upload_Message+0x14> + 80039c6: bf00 nop + 80039c8: 20000d9c .word 0x20000d9c + 80039cc: 20000074 .word 0x20000074 + 80039d0: 20000c44 .word 0x20000c44 + 80039d4: 20000d38 .word 0x20000d38 + 80039d8: 2000005c .word 0x2000005c + 80039dc: 20000004 .word 0x20000004 + 80039e0: 0801482b .word 0x0801482b + 80039e4: 0801483a .word 0x0801483a + +080039e8 <STS_SENSOR_Upload_Config_Invalid_Message>: + 80039e8: 4b04 ldr r3, [pc, #16] ; (80039fc <STS_SENSOR_Upload_Config_Invalid_Message+0x14>) + 80039ea: 781b ldrb r3, [r3, #0] + 80039ec: b923 cbnz r3, 80039f8 <STS_SENSOR_Upload_Config_Invalid_Message+0x10> + 80039ee: 4a04 ldr r2, [pc, #16] ; (8003a00 <STS_SENSOR_Upload_Config_Invalid_Message+0x18>) + 80039f0: 2105 movs r1, #5 + 80039f2: 2001 movs r0, #1 + 80039f4: f7ff bf90 b.w 8003918 <STS_SENSOR_Upload_Message> + 80039f8: 4770 bx lr + 80039fa: bf00 nop + 80039fc: 20000c44 .word 0x20000c44 + 8003a00: 080149e7 .word 0x080149e7 + +08003a04 <OnStoreSTSCFGContextRequest>: + 8003a04: b510 push {r4, lr} + 8003a06: 2400 movs r4, #0 + 8003a08: b090 sub sp, #64 ; 0x40 + 8003a0a: 223c movs r2, #60 ; 0x3c + 8003a0c: 4621 mov r1, r4 + 8003a0e: a801 add r0, sp, #4 + 8003a10: 9400 str r4, [sp, #0] + 8003a12: f010 fc1d bl 8014250 <memset> + 8003a16: 4b2c ldr r3, [pc, #176] ; (8003ac8 <OnStoreSTSCFGContextRequest+0xc4>) + 8003a18: 2220 movs r2, #32 + 8003a1a: 72da strb r2, [r3, #11] + 8003a1c: 7819 ldrb r1, [r3, #0] + 8003a1e: f88d 1000 strb.w r1, [sp] + 8003a22: 7859 ldrb r1, [r3, #1] + 8003a24: f88d 1001 strb.w r1, [sp, #1] + 8003a28: 7899 ldrb r1, [r3, #2] + 8003a2a: f88d 1002 strb.w r1, [sp, #2] + 8003a2e: 78d9 ldrb r1, [r3, #3] + 8003a30: f88d 1003 strb.w r1, [sp, #3] + 8003a34: 7919 ldrb r1, [r3, #4] + 8003a36: f88d 1004 strb.w r1, [sp, #4] + 8003a3a: 7959 ldrb r1, [r3, #5] + 8003a3c: f88d 1005 strb.w r1, [sp, #5] + 8003a40: 7999 ldrb r1, [r3, #6] + 8003a42: f88d 1006 strb.w r1, [sp, #6] + 8003a46: 79d9 ldrb r1, [r3, #7] + 8003a48: f88d 1007 strb.w r1, [sp, #7] + 8003a4c: 7a19 ldrb r1, [r3, #8] + 8003a4e: f88d 1008 strb.w r1, [sp, #8] + 8003a52: 7a59 ldrb r1, [r3, #9] + 8003a54: f88d 1009 strb.w r1, [sp, #9] + 8003a58: 7a99 ldrb r1, [r3, #10] + 8003a5a: f88d 100a strb.w r1, [sp, #10] + 8003a5e: f88d 200b strb.w r2, [sp, #11] + 8003a62: 4621 mov r1, r4 + 8003a64: f10d 020b add.w r2, sp, #11 + 8003a68: 1858 adds r0, r3, r1 + 8003a6a: 3101 adds r1, #1 + 8003a6c: 7b00 ldrb r0, [r0, #12] + 8003a6e: f802 0f01 strb.w r0, [r2, #1]! + 8003a72: 291c cmp r1, #28 + 8003a74: d1f8 bne.n 8003a68 <OnStoreSTSCFGContextRequest+0x64> + 8003a76: f893 2028 ldrb.w r2, [r3, #40] ; 0x28 + 8003a7a: f88d 2028 strb.w r2, [sp, #40] ; 0x28 + 8003a7e: f893 2029 ldrb.w r2, [r3, #41] ; 0x29 + 8003a82: f88d 2029 strb.w r2, [sp, #41] ; 0x29 + 8003a86: f893 202a ldrb.w r2, [r3, #42] ; 0x2a + 8003a8a: f88d 202a strb.w r2, [sp, #42] ; 0x2a + 8003a8e: f893 202b ldrb.w r2, [r3, #43] ; 0x2b + 8003a92: f88d 202b strb.w r2, [sp, #43] ; 0x2b + 8003a96: f10d 012b add.w r1, sp, #43 ; 0x2b + 8003a9a: 2200 movs r2, #0 + 8003a9c: 1898 adds r0, r3, r2 + 8003a9e: 3201 adds r2, #1 + 8003aa0: f890 002c ldrb.w r0, [r0, #44] ; 0x2c + 8003aa4: f801 0f01 strb.w r0, [r1, #1]! + 8003aa8: 2a14 cmp r2, #20 + 8003aaa: d1f7 bne.n 8003a9c <OnStoreSTSCFGContextRequest+0x98> + 8003aac: 4807 ldr r0, [pc, #28] ; (8003acc <OnStoreSTSCFGContextRequest+0xc8>) + 8003aae: f44f 6100 mov.w r1, #2048 ; 0x800 + 8003ab2: f7fe fc5b bl 800236c <FLASH_IF_Erase> + 8003ab6: b920 cbnz r0, 8003ac2 <OnStoreSTSCFGContextRequest+0xbe> + 8003ab8: 4804 ldr r0, [pc, #16] ; (8003acc <OnStoreSTSCFGContextRequest+0xc8>) + 8003aba: 2240 movs r2, #64 ; 0x40 + 8003abc: 4669 mov r1, sp + 8003abe: f7fe fb57 bl 8002170 <FLASH_IF_Write> + 8003ac2: b010 add sp, #64 ; 0x40 + 8003ac4: bd10 pop {r4, pc} + 8003ac6: bf00 nop + 8003ac8: 20000078 .word 0x20000078 + 8003acc: 0803f800 .word 0x0803f800 + +08003ad0 <OnRestoreSTSCFGContextRequest>: + 8003ad0: 4901 ldr r1, [pc, #4] ; (8003ad8 <OnRestoreSTSCFGContextRequest+0x8>) + 8003ad2: 2240 movs r2, #64 ; 0x40 + 8003ad4: f00f bf84 b.w 80139e0 <UTIL_MEM_cpy_8> + 8003ad8: 0803f800 .word 0x0803f800 + +08003adc <OnRestoreSTSCFGContextProcess>: + 8003adc: b510 push {r4, lr} + 8003ade: 4c23 ldr r4, [pc, #140] ; (8003b6c <OnRestoreSTSCFGContextProcess+0x90>) + 8003ae0: 7920 ldrb r0, [r4, #4] + 8003ae2: 7963 ldrb r3, [r4, #5] + 8003ae4: 2b4d cmp r3, #77 ; 0x4d + 8003ae6: b2c0 uxtb r0, r0 + 8003ae8: d12f bne.n 8003b4a <OnRestoreSTSCFGContextProcess+0x6e> + 8003aea: ebc0 1000 rsb r0, r0, r0, lsl #4 + 8003aee: 0080 lsls r0, r0, #2 + 8003af0: 280a cmp r0, #10 + 8003af2: bf38 it cc + 8003af4: 200a movcc r0, #10 + 8003af6: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8003afa: 4358 muls r0, r3 + 8003afc: 4b1c ldr r3, [pc, #112] ; (8003b70 <OnRestoreSTSCFGContextProcess+0x94>) + 8003afe: 6018 str r0, [r3, #0] + 8003b00: f7ff fc66 bl 80033d0 <OnTxPeriodicityChanged> + 8003b04: 79a0 ldrb r0, [r4, #6] + 8003b06: 79e3 ldrb r3, [r4, #7] + 8003b08: 2b4d cmp r3, #77 ; 0x4d + 8003b0a: b2c0 uxtb r0, r0 + 8003b0c: d125 bne.n 8003b5a <OnRestoreSTSCFGContextProcess+0x7e> + 8003b0e: ebc0 1000 rsb r0, r0, r0, lsl #4 + 8003b12: 0080 lsls r0, r0, #2 + 8003b14: 2801 cmp r0, #1 + 8003b16: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8003b1a: bf38 it cc + 8003b1c: 2001 movcc r0, #1 + 8003b1e: 4358 muls r0, r3 + 8003b20: f7ff fc78 bl 8003414 <OnYunhornSTSHeartBeatPeriodicityChanged> + 8003b24: 7a23 ldrb r3, [r4, #8] + 8003b26: 4a13 ldr r2, [pc, #76] ; (8003b74 <OnRestoreSTSCFGContextProcess+0x98>) + 8003b28: 4913 ldr r1, [pc, #76] ; (8003b78 <OnRestoreSTSCFGContextProcess+0x9c>) + 8003b2a: b2db uxtb r3, r3 + 8003b2c: 7013 strb r3, [r2, #0] + 8003b2e: 7a63 ldrb r3, [r4, #9] + 8003b30: 4a12 ldr r2, [pc, #72] ; (8003b7c <OnRestoreSTSCFGContextProcess+0xa0>) + 8003b32: b2db uxtb r3, r3 + 8003b34: 7013 strb r3, [r2, #0] + 8003b36: 2300 movs r3, #0 + 8003b38: 18e2 adds r2, r4, r3 + 8003b3a: f892 202c ldrb.w r2, [r2, #44] ; 0x2c + 8003b3e: b2d2 uxtb r2, r2 + 8003b40: 54ca strb r2, [r1, r3] + 8003b42: 3301 adds r3, #1 + 8003b44: 2b14 cmp r3, #20 + 8003b46: d1f7 bne.n 8003b38 <OnRestoreSTSCFGContextProcess+0x5c> + 8003b48: bd10 pop {r4, pc} + 8003b4a: 7963 ldrb r3, [r4, #5] + 8003b4c: 2b48 cmp r3, #72 ; 0x48 + 8003b4e: bf0a itet eq + 8003b50: f44f 6361 moveq.w r3, #3600 ; 0xe10 + 8003b54: 7963 ldrbne r3, [r4, #5] + 8003b56: 4358 muleq r0, r3 + 8003b58: e7ca b.n 8003af0 <OnRestoreSTSCFGContextProcess+0x14> + 8003b5a: 79e3 ldrb r3, [r4, #7] + 8003b5c: 2b48 cmp r3, #72 ; 0x48 + 8003b5e: bf0a itet eq + 8003b60: f44f 6361 moveq.w r3, #3600 ; 0xe10 + 8003b64: 79e3 ldrbne r3, [r4, #7] + 8003b66: 4358 muleq r0, r3 + 8003b68: e7d4 b.n 8003b14 <OnRestoreSTSCFGContextProcess+0x38> + 8003b6a: bf00 nop + 8003b6c: 20000078 .word 0x20000078 + 8003b70: 20000074 .word 0x20000074 + 8003b74: 20000e62 .word 0x20000e62 + 8003b78: 20000e4e .word 0x20000e4e + 8003b7c: 20000c44 .word 0x20000c44 + +08003b80 <STS_REBOOT_CONFIG_Init>: + 8003b80: b510 push {r4, lr} + 8003b82: b090 sub sp, #64 ; 0x40 + 8003b84: 2100 movs r1, #0 + 8003b86: 223c movs r2, #60 ; 0x3c + 8003b88: a801 add r0, sp, #4 + 8003b8a: 9100 str r1, [sp, #0] + 8003b8c: f010 fb60 bl 8014250 <memset> + 8003b90: 2240 movs r2, #64 ; 0x40 + 8003b92: 4937 ldr r1, [pc, #220] ; (8003c70 <STS_REBOOT_CONFIG_Init+0xf0>) + 8003b94: 4668 mov r0, sp + 8003b96: f00f ff23 bl 80139e0 <UTIL_MEM_cpy_8> + 8003b9a: f89d 2000 ldrb.w r2, [sp] + 8003b9e: b93a cbnz r2, 8003bb0 <STS_REBOOT_CONFIG_Init+0x30> + 8003ba0: f89d 0001 ldrb.w r0, [sp, #1] + 8003ba4: 2810 cmp r0, #16 + 8003ba6: d103 bne.n 8003bb0 <STS_REBOOT_CONFIG_Init+0x30> + 8003ba8: f89d 1002 ldrb.w r1, [sp, #2] + 8003bac: 2901 cmp r1, #1 + 8003bae: d014 beq.n 8003bda <STS_REBOOT_CONFIG_Init+0x5a> + 8003bb0: 2200 movs r2, #0 + 8003bb2: 4611 mov r1, r2 + 8003bb4: 4b2f ldr r3, [pc, #188] ; (8003c74 <STS_REBOOT_CONFIG_Init+0xf4>) + 8003bb6: 2001 movs r0, #1 + 8003bb8: f00f fe0a bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003bbc: f7ff ff22 bl 8003a04 <OnStoreSTSCFGContextRequest> + 8003bc0: 482d ldr r0, [pc, #180] ; (8003c78 <STS_REBOOT_CONFIG_Init+0xf8>) + 8003bc2: 2214 movs r2, #20 + 8003bc4: 2100 movs r1, #0 + 8003bc6: f00f ff15 bl 80139f4 <UTIL_MEM_set_8> + 8003bca: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8003bce: f7fe ffc5 bl 8002b5c <HAL_Delay> + 8003bd2: f7ff ff83 bl 8003adc <OnRestoreSTSCFGContextProcess> + 8003bd6: b010 add sp, #64 ; 0x40 + 8003bd8: bd10 pop {r4, pc} + 8003bda: 4b28 ldr r3, [pc, #160] ; (8003c7c <STS_REBOOT_CONFIG_Init+0xfc>) + 8003bdc: 701a strb r2, [r3, #0] + 8003bde: 7058 strb r0, [r3, #1] + 8003be0: 7099 strb r1, [r3, #2] + 8003be2: f89d 1003 ldrb.w r1, [sp, #3] + 8003be6: 70d9 strb r1, [r3, #3] + 8003be8: f89d 1004 ldrb.w r1, [sp, #4] + 8003bec: 7119 strb r1, [r3, #4] + 8003bee: f89d 1005 ldrb.w r1, [sp, #5] + 8003bf2: 7159 strb r1, [r3, #5] + 8003bf4: f89d 1006 ldrb.w r1, [sp, #6] + 8003bf8: 7199 strb r1, [r3, #6] + 8003bfa: f89d 1007 ldrb.w r1, [sp, #7] + 8003bfe: 71d9 strb r1, [r3, #7] + 8003c00: f89d 1008 ldrb.w r1, [sp, #8] + 8003c04: 7219 strb r1, [r3, #8] + 8003c06: f89d 1009 ldrb.w r1, [sp, #9] + 8003c0a: 7259 strb r1, [r3, #9] + 8003c0c: f89d 100a ldrb.w r1, [sp, #10] + 8003c10: 7299 strb r1, [r3, #10] + 8003c12: f89d 100b ldrb.w r1, [sp, #11] + 8003c16: f001 013f and.w r1, r1, #63 ; 0x3f + 8003c1a: 72d9 strb r1, [r3, #11] + 8003c1c: 7ad8 ldrb r0, [r3, #11] + 8003c1e: b2d1 uxtb r1, r2 + 8003c20: 4288 cmp r0, r1 + 8003c22: d81b bhi.n 8003c5c <STS_REBOOT_CONFIG_Init+0xdc> + 8003c24: f89d 2028 ldrb.w r2, [sp, #40] ; 0x28 + 8003c28: f883 2028 strb.w r2, [r3, #40] ; 0x28 + 8003c2c: f89d 2029 ldrb.w r2, [sp, #41] ; 0x29 + 8003c30: f883 2029 strb.w r2, [r3, #41] ; 0x29 + 8003c34: f89d 202a ldrb.w r2, [sp, #42] ; 0x2a + 8003c38: f883 202a strb.w r2, [r3, #42] ; 0x2a + 8003c3c: f89d 202b ldrb.w r2, [sp, #43] ; 0x2b + 8003c40: f883 202b strb.w r2, [r3, #43] ; 0x2b + 8003c44: f10d 012b add.w r1, sp, #43 ; 0x2b + 8003c48: 2200 movs r2, #0 + 8003c4a: 1898 adds r0, r3, r2 + 8003c4c: 3201 adds r2, #1 + 8003c4e: f811 4f01 ldrb.w r4, [r1, #1]! + 8003c52: f880 402c strb.w r4, [r0, #44] ; 0x2c + 8003c56: 2a14 cmp r2, #20 + 8003c58: d1f7 bne.n 8003c4a <STS_REBOOT_CONFIG_Init+0xca> + 8003c5a: e7ba b.n 8003bd2 <STS_REBOOT_CONFIG_Init+0x52> + 8003c5c: f101 0040 add.w r0, r1, #64 ; 0x40 + 8003c60: 4468 add r0, sp + 8003c62: 4419 add r1, r3 + 8003c64: f810 0c34 ldrb.w r0, [r0, #-52] + 8003c68: 7308 strb r0, [r1, #12] + 8003c6a: 3201 adds r2, #1 + 8003c6c: e7d6 b.n 8003c1c <STS_REBOOT_CONFIG_Init+0x9c> + 8003c6e: bf00 nop + 8003c70: 0803f800 .word 0x0803f800 + 8003c74: 080149ed .word 0x080149ed + 8003c78: 20000e4e .word 0x20000e4e + 8003c7c: 20000078 .word 0x20000078 + +08003c80 <LoRaWAN_Init>: + 8003c80: b5f0 push {r4, r5, r6, r7, lr} + 8003c82: 2306 movs r3, #6 + 8003c84: b08b sub sp, #44 ; 0x2c + 8003c86: 221c movs r2, #28 + 8003c88: 2400 movs r4, #0 + 8003c8a: 2501 movs r5, #1 + 8003c8c: e9cd 3206 strd r3, r2, [sp, #24] + 8003c90: 2703 movs r7, #3 + 8003c92: 2310 movs r3, #16 + 8003c94: 2117 movs r1, #23 + 8003c96: e9cd 3104 strd r3, r1, [sp, #16] + 8003c9a: 4622 mov r2, r4 + 8003c9c: 4b5f ldr r3, [pc, #380] ; (8003e1c <LoRaWAN_Init+0x19c>) + 8003c9e: 9403 str r4, [sp, #12] + 8003ca0: 4621 mov r1, r4 + 8003ca2: e9cd 5501 strd r5, r5, [sp, #4] + 8003ca6: 9700 str r7, [sp, #0] + 8003ca8: 2002 movs r0, #2 + 8003caa: 9409 str r4, [sp, #36] ; 0x24 + 8003cac: f00f fd90 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003cb0: 4b5b ldr r3, [pc, #364] ; (8003e20 <LoRaWAN_Init+0x1a0>) + 8003cb2: 9500 str r5, [sp, #0] + 8003cb4: 4622 mov r2, r4 + 8003cb6: 4621 mov r1, r4 + 8003cb8: e9cd 7401 strd r7, r4, [sp, #4] + 8003cbc: 2002 movs r0, #2 + 8003cbe: f00f fd87 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003cc2: 2602 movs r6, #2 + 8003cc4: 2305 movs r3, #5 + 8003cc6: e9cd 6300 strd r6, r3, [sp] + 8003cca: 4622 mov r2, r4 + 8003ccc: 4b55 ldr r3, [pc, #340] ; (8003e24 <LoRaWAN_Init+0x1a4>) + 8003cce: 9402 str r4, [sp, #8] + 8003cd0: 4621 mov r1, r4 + 8003cd2: 4630 mov r0, r6 + 8003cd4: f00f fd7c bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003cd8: 4b53 ldr r3, [pc, #332] ; (8003e28 <LoRaWAN_Init+0x1a8>) + 8003cda: 9500 str r5, [sp, #0] + 8003cdc: 4622 mov r2, r4 + 8003cde: 4621 mov r1, r4 + 8003ce0: e9cd 7401 strd r7, r4, [sp, #4] + 8003ce4: 4630 mov r0, r6 + 8003ce6: f00f fd73 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003cea: a909 add r1, sp, #36 ; 0x24 + 8003cec: 4620 mov r0, r4 + 8003cee: f007 ff53 bl 800bb98 <LmHandlerGetVersion> + 8003cf2: 9b09 ldr r3, [sp, #36] ; 0x24 + 8003cf4: f3c3 2207 ubfx r2, r3, #8, #8 + 8003cf8: 9202 str r2, [sp, #8] + 8003cfa: f3c3 4207 ubfx r2, r3, #16, #8 + 8003cfe: 0e1b lsrs r3, r3, #24 + 8003d00: 9201 str r2, [sp, #4] + 8003d02: 9300 str r3, [sp, #0] + 8003d04: 4622 mov r2, r4 + 8003d06: 4b49 ldr r3, [pc, #292] ; (8003e2c <LoRaWAN_Init+0x1ac>) + 8003d08: 4621 mov r1, r4 + 8003d0a: 4630 mov r0, r6 + 8003d0c: f00f fd60 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003d10: a909 add r1, sp, #36 ; 0x24 + 8003d12: 4628 mov r0, r5 + 8003d14: f007 ff40 bl 800bb98 <LmHandlerGetVersion> + 8003d18: 9b09 ldr r3, [sp, #36] ; 0x24 + 8003d1a: b2da uxtb r2, r3 + 8003d1c: 9203 str r2, [sp, #12] + 8003d1e: f3c3 2207 ubfx r2, r3, #8, #8 + 8003d22: 9202 str r2, [sp, #8] + 8003d24: f3c3 4207 ubfx r2, r3, #16, #8 + 8003d28: 0e1b lsrs r3, r3, #24 + 8003d2a: 9201 str r2, [sp, #4] + 8003d2c: 9300 str r3, [sp, #0] + 8003d2e: 4622 mov r2, r4 + 8003d30: 4b3f ldr r3, [pc, #252] ; (8003e30 <LoRaWAN_Init+0x1b0>) + 8003d32: 4621 mov r1, r4 + 8003d34: 4630 mov r0, r6 + 8003d36: f00f fd4b bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003d3a: 4b3e ldr r3, [pc, #248] ; (8003e34 <LoRaWAN_Init+0x1b4>) + 8003d3c: 483e ldr r0, [pc, #248] ; (8003e38 <LoRaWAN_Init+0x1b8>) + 8003d3e: 9400 str r4, [sp, #0] + 8003d40: 4622 mov r2, r4 + 8003d42: f44f 71fa mov.w r1, #500 ; 0x1f4 + 8003d46: f010 f813 bl 8013d70 <UTIL_TIMER_Create> + 8003d4a: 4b3c ldr r3, [pc, #240] ; (8003e3c <LoRaWAN_Init+0x1bc>) + 8003d4c: 483c ldr r0, [pc, #240] ; (8003e40 <LoRaWAN_Init+0x1c0>) + 8003d4e: 9400 str r4, [sp, #0] + 8003d50: 4622 mov r2, r4 + 8003d52: f44f 71fa mov.w r1, #500 ; 0x1f4 + 8003d56: f010 f80b bl 8013d70 <UTIL_TIMER_Create> + 8003d5a: 4b3a ldr r3, [pc, #232] ; (8003e44 <LoRaWAN_Init+0x1c4>) + 8003d5c: 483a ldr r0, [pc, #232] ; (8003e48 <LoRaWAN_Init+0x1c8>) + 8003d5e: 9400 str r4, [sp, #0] + 8003d60: 462a mov r2, r5 + 8003d62: f44f 71fa mov.w r1, #500 ; 0x1f4 + 8003d66: f010 f803 bl 8013d70 <UTIL_TIMER_Create> + 8003d6a: 4620 mov r0, r4 + 8003d6c: f7fe f9fa bl 8002164 <FLASH_IF_Init> + 8003d70: b108 cbz r0, 8003d76 <LoRaWAN_Init+0xf6> + 8003d72: f7fe fc97 bl 80026a4 <Error_Handler> + 8003d76: 4b35 ldr r3, [pc, #212] ; (8003e4c <LoRaWAN_Init+0x1cc>) + 8003d78: 9400 str r4, [sp, #0] + 8003d7a: 2200 movs r2, #0 + 8003d7c: f44f 61fa mov.w r1, #2000 ; 0x7d0 + 8003d80: 4833 ldr r0, [pc, #204] ; (8003e50 <LoRaWAN_Init+0x1d0>) + 8003d82: f00f fff5 bl 8013d70 <UTIL_TIMER_Create> + 8003d86: 4a33 ldr r2, [pc, #204] ; (8003e54 <LoRaWAN_Init+0x1d4>) + 8003d88: 2100 movs r1, #0 + 8003d8a: 2001 movs r0, #1 + 8003d8c: f00f fef0 bl 8013b70 <UTIL_SEQ_RegTask> + 8003d90: 4a31 ldr r2, [pc, #196] ; (8003e58 <LoRaWAN_Init+0x1d8>) + 8003d92: 2100 movs r1, #0 + 8003d94: 2002 movs r0, #2 + 8003d96: f00f feeb bl 8013b70 <UTIL_SEQ_RegTask> + 8003d9a: 4a30 ldr r2, [pc, #192] ; (8003e5c <LoRaWAN_Init+0x1dc>) + 8003d9c: 2100 movs r1, #0 + 8003d9e: 2004 movs r0, #4 + 8003da0: f00f fee6 bl 8013b70 <UTIL_SEQ_RegTask> + 8003da4: 4a2e ldr r2, [pc, #184] ; (8003e60 <LoRaWAN_Init+0x1e0>) + 8003da6: 2100 movs r1, #0 + 8003da8: 2008 movs r0, #8 + 8003daa: f00f fee1 bl 8013b70 <UTIL_SEQ_RegTask> + 8003dae: f000 fc07 bl 80045c0 <LoraInfo_Init> + 8003db2: 492c ldr r1, [pc, #176] ; (8003e64 <LoRaWAN_Init+0x1e4>) + 8003db4: 482c ldr r0, [pc, #176] ; (8003e68 <LoRaWAN_Init+0x1e8>) + 8003db6: f007 feb1 bl 800bb1c <LmHandlerInit> + 8003dba: 482c ldr r0, [pc, #176] ; (8003e6c <LoRaWAN_Init+0x1ec>) + 8003dbc: f007 fda4 bl 800b908 <LmHandlerConfigure> + 8003dc0: 4821 ldr r0, [pc, #132] ; (8003e48 <LoRaWAN_Init+0x1c8>) + 8003dc2: f010 f881 bl 8013ec8 <UTIL_TIMER_Start> + 8003dc6: 4b2a ldr r3, [pc, #168] ; (8003e70 <LoRaWAN_Init+0x1f0>) + 8003dc8: 2100 movs r1, #0 + 8003dca: 7818 ldrb r0, [r3, #0] + 8003dcc: f007 fbca bl 800b564 <LmHandlerJoin> + 8003dd0: 4928 ldr r1, [pc, #160] ; (8003e74 <LoRaWAN_Init+0x1f4>) + 8003dd2: 9400 str r4, [sp, #0] + 8003dd4: 4b28 ldr r3, [pc, #160] ; (8003e78 <LoRaWAN_Init+0x1f8>) + 8003dd6: 6809 ldr r1, [r1, #0] + 8003dd8: 4828 ldr r0, [pc, #160] ; (8003e7c <LoRaWAN_Init+0x1fc>) + 8003dda: 2200 movs r2, #0 + 8003ddc: f00f ffc8 bl 8013d70 <UTIL_TIMER_Create> + 8003de0: 4826 ldr r0, [pc, #152] ; (8003e7c <LoRaWAN_Init+0x1fc>) + 8003de2: f010 f871 bl 8013ec8 <UTIL_TIMER_Start> + 8003de6: f7ff fecb bl 8003b80 <STS_REBOOT_CONFIG_Init> + 8003dea: 4a25 ldr r2, [pc, #148] ; (8003e80 <LoRaWAN_Init+0x200>) + 8003dec: 2100 movs r1, #0 + 8003dee: 2010 movs r0, #16 + 8003df0: f00f febe bl 8013b70 <UTIL_SEQ_RegTask> + 8003df4: 4a23 ldr r2, [pc, #140] ; (8003e84 <LoRaWAN_Init+0x204>) + 8003df6: 2100 movs r1, #0 + 8003df8: f44f 7080 mov.w r0, #256 ; 0x100 + 8003dfc: f00f feb8 bl 8013b70 <UTIL_SEQ_RegTask> + 8003e00: 4b21 ldr r3, [pc, #132] ; (8003e88 <LoRaWAN_Init+0x208>) + 8003e02: 4822 ldr r0, [pc, #136] ; (8003e8c <LoRaWAN_Init+0x20c>) + 8003e04: 6819 ldr r1, [r3, #0] + 8003e06: 4b22 ldr r3, [pc, #136] ; (8003e90 <LoRaWAN_Init+0x210>) + 8003e08: 9400 str r4, [sp, #0] + 8003e0a: 2200 movs r2, #0 + 8003e0c: f00f ffb0 bl 8013d70 <UTIL_TIMER_Create> + 8003e10: 481e ldr r0, [pc, #120] ; (8003e8c <LoRaWAN_Init+0x20c>) + 8003e12: f010 f859 bl 8013ec8 <UTIL_TIMER_Start> + 8003e16: b00b add sp, #44 ; 0x2c + 8003e18: bdf0 pop {r4, r5, r6, r7, pc} + 8003e1a: bf00 nop + 8003e1c: 08014a2f .word 0x08014a2f + 8003e20: 08014a76 .word 0x08014a76 + 8003e24: 08014a97 .word 0x08014a97 + 8003e28: 08014ab8 .word 0x08014ab8 + 8003e2c: 08014ad9 .word 0x08014ad9 + 8003e30: 08014afa .word 0x08014afa + 8003e34: 080032d1 .word 0x080032d1 + 8003e38: 20000d84 .word 0x20000d84 + 8003e3c: 080038e7 .word 0x080038e7 + 8003e40: 20000d50 .word 0x20000d50 + 8003e44: 080038e5 .word 0x080038e5 + 8003e48: 20000d38 .word 0x20000d38 + 8003e4c: 08003869 .word 0x08003869 + 8003e50: 20000d6c .word 0x20000d6c + 8003e54: 0800b461 .word 0x0800b461 + 8003e58: 08003509 .word 0x08003509 + 8003e5c: 080038b5 .word 0x080038b5 + 8003e60: 08003491 .word 0x08003491 + 8003e64: 01030000 .word 0x01030000 + 8003e68: 20000010 .word 0x20000010 + 8003e6c: 2000005c .word 0x2000005c + 8003e70: 20000000 .word 0x20000000 + 8003e74: 20000074 .word 0x20000074 + 8003e78: 08003311 .word 0x08003311 + 8003e7c: 20000d9c .word 0x20000d9c + 8003e80: 080031c9 .word 0x080031c9 + 8003e84: 0800323d .word 0x0800323d + 8003e88: 2000000c .word 0x2000000c + 8003e8c: 20000db4 .word 0x20000db4 + 8003e90: 08003815 .word 0x08003815 + +08003e94 <STS_SENSOR_Function_Test_Process>: + 8003e94: b510 push {r4, lr} + 8003e96: 2400 movs r4, #0 + 8003e98: b0a2 sub sp, #136 ; 0x88 + 8003e9a: 227c movs r2, #124 ; 0x7c + 8003e9c: 4621 mov r1, r4 + 8003e9e: a803 add r0, sp, #12 + 8003ea0: 9402 str r4, [sp, #8] + 8003ea2: f010 f9d5 bl 8014250 <memset> + 8003ea6: 2353 movs r3, #83 ; 0x53 + 8003ea8: f88d 3008 strb.w r3, [sp, #8] + 8003eac: f44f 7388 mov.w r3, #272 ; 0x110 + 8003eb0: f8ad 300a strh.w r3, [sp, #10] + 8003eb4: 2301 movs r3, #1 + 8003eb6: f88d 300c strb.w r3, [sp, #12] + 8003eba: f8ad 4004 strh.w r4, [sp, #4] + 8003ebe: f7fe fdcb bl 8002a58 <GetBatteryLevel> + 8003ec2: 23fe movs r3, #254 ; 0xfe + 8003ec4: fbb0 f0f3 udiv r0, r0, r3 + 8003ec8: eb00 0040 add.w r0, r0, r0, lsl #1 + 8003ecc: eb00 1040 add.w r0, r0, r0, lsl #5 + 8003ed0: f88d 000d strb.w r0, [sp, #13] + 8003ed4: a801 add r0, sp, #4 + 8003ed6: f000 fd0d bl 80048f4 <STS_SENSOR_MEMS_Get_ID> + 8003eda: b978 cbnz r0, 8003efc <STS_SENSOR_Function_Test_Process+0x68> + 8003edc: 2358 movs r3, #88 ; 0x58 + 8003ede: f88d 300e strb.w r3, [sp, #14] + 8003ee2: 2407 movs r4, #7 + 8003ee4: 2230 movs r2, #48 ; 0x30 + 8003ee6: 2180 movs r1, #128 ; 0x80 + 8003ee8: 4813 ldr r0, [pc, #76] ; (8003f38 <STS_SENSOR_Function_Test_Process+0xa4>) + 8003eea: f010 f9b1 bl 8014250 <memset> + 8003eee: 4622 mov r2, r4 + 8003ef0: a902 add r1, sp, #8 + 8003ef2: 4811 ldr r0, [pc, #68] ; (8003f38 <STS_SENSOR_Function_Test_Process+0xa4>) + 8003ef4: f010 f9e5 bl 80142c2 <memcpy> + 8003ef8: b022 add sp, #136 ; 0x88 + 8003efa: bd10 pop {r4, pc} + 8003efc: 2302 movs r3, #2 + 8003efe: f88d 300e strb.w r3, [sp, #14] + 8003f02: f000 fcdb bl 80048bc <MX_TOF_Process> + 8003f06: 4b0d ldr r3, [pc, #52] ; (8003f3c <STS_SENSOR_Function_Test_Process+0xa8>) + 8003f08: 681a ldr r2, [r3, #0] + 8003f0a: 1212 asrs r2, r2, #8 + 8003f0c: f88d 200f strb.w r2, [sp, #15] + 8003f10: 681a ldr r2, [r3, #0] + 8003f12: f88d 2010 strb.w r2, [sp, #16] + 8003f16: 685a ldr r2, [r3, #4] + 8003f18: 1212 asrs r2, r2, #8 + 8003f1a: f88d 2011 strb.w r2, [sp, #17] + 8003f1e: 685a ldr r2, [r3, #4] + 8003f20: f88d 2012 strb.w r2, [sp, #18] + 8003f24: 689a ldr r2, [r3, #8] + 8003f26: 689b ldr r3, [r3, #8] + 8003f28: f88d 3014 strb.w r3, [sp, #20] + 8003f2c: 1212 asrs r2, r2, #8 + 8003f2e: f88d 2013 strb.w r2, [sp, #19] + 8003f32: 240d movs r4, #13 + 8003f34: e7d6 b.n 8003ee4 <STS_SENSOR_Function_Test_Process+0x50> + 8003f36: bf00 nop + 8003f38: 20000dcd .word 0x20000dcd + 8003f3c: 20000ef4 .word 0x20000ef4 + +08003f40 <USER_APP_AUTO_RESPONDER_Parse>: + 8003f40: b5f0 push {r4, r5, r6, r7, lr} + 8003f42: 7803 ldrb r3, [r0, #0] + 8003f44: 2b59 cmp r3, #89 ; 0x59 + 8003f46: b095 sub sp, #84 ; 0x54 + 8003f48: 4604 mov r4, r0 + 8003f4a: f040 821f bne.w 800438c <USER_APP_AUTO_RESPONDER_Parse+0x44c> + 8003f4e: 2905 cmp r1, #5 + 8003f50: d85f bhi.n 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 8003f52: 7843 ldrb r3, [r0, #1] + 8003f54: 3b44 subs r3, #68 ; 0x44 + 8003f56: 2b16 cmp r3, #22 + 8003f58: d85b bhi.n 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 8003f5a: e8df f013 tbh [pc, r3, lsl #1] + 8003f5e: 015b .short 0x015b + 8003f60: 013d005a .word 0x013d005a + 8003f64: 0145005a .word 0x0145005a + 8003f68: 005a005a .word 0x005a005a + 8003f6c: 005a005a .word 0x005a005a + 8003f70: 005a00a6 .word 0x005a00a6 + 8003f74: 005a0128 .word 0x005a0128 + 8003f78: 005a005a .word 0x005a005a + 8003f7c: 005a01ba .word 0x005a01ba + 8003f80: 00ca005a .word 0x00ca005a + 8003f84: 005a005a .word 0x005a005a + 8003f88: 0017005a .word 0x0017005a + 8003f8c: 7885 ldrb r5, [r0, #2] + 8003f8e: 2d48 cmp r5, #72 ; 0x48 + 8003f90: d117 bne.n 8003fc2 <USER_APP_AUTO_RESPONDER_Parse+0x82> + 8003f92: 4a99 ldr r2, [pc, #612] ; (80041f8 <USER_APP_AUTO_RESPONDER_Parse+0x2b8>) + 8003f94: 2114 movs r1, #20 + 8003f96: 2001 movs r0, #1 + 8003f98: f7ff fcbe bl 8003918 <STS_SENSOR_Upload_Message> + 8003f9c: f241 3088 movw r0, #5000 ; 0x1388 + 8003fa0: f7fe fddc bl 8002b5c <HAL_Delay> + 8003fa4: 2200 movs r2, #0 + 8003fa6: 4b95 ldr r3, [pc, #596] ; (80041fc <USER_APP_AUTO_RESPONDER_Parse+0x2bc>) + 8003fa8: 4611 mov r1, r2 + 8003faa: 2003 movs r0, #3 + 8003fac: f00f fc10 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8003fb0: f640 30b8 movw r0, #3000 ; 0xbb8 + 8003fb4: f7fe fdd2 bl 8002b5c <HAL_Delay> + 8003fb8: b015 add sp, #84 ; 0x54 + 8003fba: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 8003fbe: f7ff bc5f b.w 8003880 <OnSystemReset> + 8003fc2: 2d53 cmp r5, #83 ; 0x53 + 8003fc4: d10e bne.n 8003fe4 <USER_APP_AUTO_RESPONDER_Parse+0xa4> + 8003fc6: 2230 movs r2, #48 ; 0x30 + 8003fc8: 2180 movs r1, #128 ; 0x80 + 8003fca: 488d ldr r0, [pc, #564] ; (8004200 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 8003fcc: f010 f940 bl 8014250 <memset> + 8003fd0: f7ff ff60 bl 8003e94 <STS_SENSOR_Function_Test_Process> + 8003fd4: f241 3088 movw r0, #5000 ; 0x1388 + 8003fd8: f7fe fdc0 bl 8002b5c <HAL_Delay> + 8003fdc: 4a88 ldr r2, [pc, #544] ; (8004200 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 8003fde: 2115 movs r1, #21 + 8003fe0: 2001 movs r0, #1 + 8003fe2: e09b b.n 800411c <USER_APP_AUTO_RESPONDER_Parse+0x1dc> + 8003fe4: 2d43 cmp r5, #67 ; 0x43 + 8003fe6: d116 bne.n 8004016 <USER_APP_AUTO_RESPONDER_Parse+0xd6> + 8003fe8: 2400 movs r4, #0 + 8003fea: a804 add r0, sp, #16 + 8003fec: f88d 4010 strb.w r4, [sp, #16] + 8003ff0: f007 fbee bl 800b7d0 <LmHandlerGetCurrentClass> + 8003ff4: 4a82 ldr r2, [pc, #520] ; (8004200 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 8003ff6: 234c movs r3, #76 ; 0x4c + 8003ff8: 7013 strb r3, [r2, #0] + 8003ffa: 2310 movs r3, #16 + 8003ffc: 7093 strb r3, [r2, #2] + 8003ffe: f89d 3010 ldrb.w r3, [sp, #16] + 8004002: 7054 strb r4, [r2, #1] + 8004004: 2001 movs r0, #1 + 8004006: 3341 adds r3, #65 ; 0x41 + 8004008: 70d0 strb r0, [r2, #3] + 800400a: 7113 strb r3, [r2, #4] + 800400c: 2105 movs r1, #5 + 800400e: f7ff fc83 bl 8003918 <STS_SENSOR_Upload_Message> + 8004012: b015 add sp, #84 ; 0x54 + 8004014: bdf0 pop {r4, r5, r6, r7, pc} + 8004016: 2d44 cmp r5, #68 ; 0x44 + 8004018: d1fb bne.n 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 800401a: 4c79 ldr r4, [pc, #484] ; (8004200 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 800401c: 2359 movs r3, #89 ; 0x59 + 800401e: 7023 strb r3, [r4, #0] + 8004020: 235a movs r3, #90 ; 0x5a + 8004022: 7063 strb r3, [r4, #1] + 8004024: 70a5 strb r5, [r4, #2] + 8004026: f000 fc49 bl 80048bc <MX_TOF_Process> + 800402a: 222c movs r2, #44 ; 0x2c + 800402c: 2180 movs r1, #128 ; 0x80 + 800402e: 1d20 adds r0, r4, #4 + 8004030: f010 f90e bl 8014250 <memset> + 8004034: 2300 movs r3, #0 + 8004036: 7025 strb r5, [r4, #0] + 8004038: 7063 strb r3, [r4, #1] + 800403a: 2501 movs r5, #1 + 800403c: 2310 movs r3, #16 + 800403e: 70a3 strb r3, [r4, #2] + 8004040: 70e5 strb r5, [r4, #3] + 8004042: 7125 strb r5, [r4, #4] + 8004044: f7fe fd08 bl 8002a58 <GetBatteryLevel> + 8004048: 4a6e ldr r2, [pc, #440] ; (8004204 <USER_APP_AUTO_RESPONDER_Parse+0x2c4>) + 800404a: 6811 ldr r1, [r2, #0] + 800404c: 23fe movs r3, #254 ; 0xfe + 800404e: b289 uxth r1, r1 + 8004050: fbb0 f0f3 udiv r0, r0, r3 + 8004054: 2364 movs r3, #100 ; 0x64 + 8004056: fbb1 f1f3 udiv r1, r1, r3 + 800405a: 71a1 strb r1, [r4, #6] + 800405c: 6811 ldr r1, [r2, #0] + 800405e: eb00 0040 add.w r0, r0, r0, lsl #1 + 8004062: eb00 1040 add.w r0, r0, r0, lsl #5 + 8004066: b289 uxth r1, r1 + 8004068: 7160 strb r0, [r4, #5] + 800406a: fbb1 f0f3 udiv r0, r1, r3 + 800406e: fb03 1110 mls r1, r3, r0, r1 + 8004072: 71e1 strb r1, [r4, #7] + 8004074: 6851 ldr r1, [r2, #4] + 8004076: b289 uxth r1, r1 + 8004078: fbb1 f1f3 udiv r1, r1, r3 + 800407c: 7221 strb r1, [r4, #8] + 800407e: 6851 ldr r1, [r2, #4] + 8004080: b289 uxth r1, r1 + 8004082: fbb1 f0f3 udiv r0, r1, r3 + 8004086: fb03 1110 mls r1, r3, r0, r1 + 800408a: 7261 strb r1, [r4, #9] + 800408c: 6891 ldr r1, [r2, #8] + 800408e: 6892 ldr r2, [r2, #8] + 8004090: b292 uxth r2, r2 + 8004092: b289 uxth r1, r1 + 8004094: fbb1 f1f3 udiv r1, r1, r3 + 8004098: 72a1 strb r1, [r4, #10] + 800409a: fbb2 f1f3 udiv r1, r2, r3 + 800409e: fb03 2211 mls r2, r3, r1, r2 + 80040a2: 72e2 strb r2, [r4, #11] + 80040a4: 210c movs r1, #12 + 80040a6: 4622 mov r2, r4 + 80040a8: e79a b.n 8003fe0 <USER_APP_AUTO_RESPONDER_Parse+0xa0> + 80040aa: 7883 ldrb r3, [r0, #2] + 80040ac: 3b30 subs r3, #48 ; 0x30 + 80040ae: b2db uxtb r3, r3 + 80040b0: 2b09 cmp r3, #9 + 80040b2: d8ae bhi.n 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80040b4: 4c54 ldr r4, [pc, #336] ; (8004208 <USER_APP_AUTO_RESPONDER_Parse+0x2c8>) + 80040b6: 4a55 ldr r2, [pc, #340] ; (800420c <USER_APP_AUTO_RESPONDER_Parse+0x2cc>) + 80040b8: 7023 strb r3, [r4, #0] + 80040ba: 7823 ldrb r3, [r4, #0] + 80040bc: b2db uxtb r3, r3 + 80040be: 7253 strb r3, [r2, #9] + 80040c0: 4a4f ldr r2, [pc, #316] ; (8004200 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 80040c2: 2359 movs r3, #89 ; 0x59 + 80040c4: 7013 strb r3, [r2, #0] + 80040c6: 234d movs r3, #77 ; 0x4d + 80040c8: 7053 strb r3, [r2, #1] + 80040ca: 7823 ldrb r3, [r4, #0] + 80040cc: 3330 adds r3, #48 ; 0x30 + 80040ce: 7093 strb r3, [r2, #2] + 80040d0: 2103 movs r1, #3 + 80040d2: 2001 movs r0, #1 + 80040d4: f7ff fc20 bl 8003918 <STS_SENSOR_Upload_Message> + 80040d8: 7823 ldrb r3, [r4, #0] + 80040da: 9300 str r3, [sp, #0] + 80040dc: 2200 movs r2, #0 + 80040de: 4b4c ldr r3, [pc, #304] ; (8004210 <USER_APP_AUTO_RESPONDER_Parse+0x2d0>) + 80040e0: 4611 mov r1, r2 + 80040e2: 2001 movs r0, #1 + 80040e4: f00f fb74 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80040e8: b015 add sp, #84 ; 0x54 + 80040ea: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 80040ee: f7ff bc89 b.w 8003a04 <OnStoreSTSCFGContextRequest> + 80040f2: 7885 ldrb r5, [r0, #2] + 80040f4: 2d48 cmp r5, #72 ; 0x48 + 80040f6: d116 bne.n 8004126 <USER_APP_AUTO_RESPONDER_Parse+0x1e6> + 80040f8: 4a41 ldr r2, [pc, #260] ; (8004200 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 80040fa: 2356 movs r3, #86 ; 0x56 + 80040fc: 7013 strb r3, [r2, #0] + 80040fe: 2300 movs r3, #0 + 8004100: 7053 strb r3, [r2, #1] + 8004102: 2310 movs r3, #16 + 8004104: 7093 strb r3, [r2, #2] + 8004106: 2303 movs r3, #3 + 8004108: 7113 strb r3, [r2, #4] + 800410a: 2317 movs r3, #23 + 800410c: 7153 strb r3, [r2, #5] + 800410e: 2306 movs r3, #6 + 8004110: 2001 movs r0, #1 + 8004112: 7193 strb r3, [r2, #6] + 8004114: 231c movs r3, #28 + 8004116: 70d0 strb r0, [r2, #3] + 8004118: 71d3 strb r3, [r2, #7] + 800411a: 2108 movs r1, #8 + 800411c: b015 add sp, #84 ; 0x54 + 800411e: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 8004122: f7ff bbf9 b.w 8003918 <STS_SENSOR_Upload_Message> + 8004126: 2d43 cmp r5, #67 ; 0x43 + 8004128: f47f af73 bne.w 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 800412c: 4c34 ldr r4, [pc, #208] ; (8004200 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 800412e: 2100 movs r1, #0 + 8004130: 223c movs r2, #60 ; 0x3c + 8004132: a805 add r0, sp, #20 + 8004134: 9104 str r1, [sp, #16] + 8004136: f010 f88b bl 8014250 <memset> + 800413a: a804 add r0, sp, #16 + 800413c: f7ff fcc8 bl 8003ad0 <OnRestoreSTSCFGContextRequest> + 8004140: 2224 movs r2, #36 ; 0x24 + 8004142: 2180 movs r1, #128 ; 0x80 + 8004144: f104 000c add.w r0, r4, #12 + 8004148: f010 f882 bl 8014250 <memset> + 800414c: f89d 3010 ldrb.w r3, [sp, #16] + 8004150: 7063 strb r3, [r4, #1] + 8004152: f89d 3011 ldrb.w r3, [sp, #17] + 8004156: 70a3 strb r3, [r4, #2] + 8004158: f89d 3012 ldrb.w r3, [sp, #18] + 800415c: 70e3 strb r3, [r4, #3] + 800415e: f89d 3013 ldrb.w r3, [sp, #19] + 8004162: 7123 strb r3, [r4, #4] + 8004164: f89d 3014 ldrb.w r3, [sp, #20] + 8004168: 7163 strb r3, [r4, #5] + 800416a: f89d 3015 ldrb.w r3, [sp, #21] + 800416e: 71a3 strb r3, [r4, #6] + 8004170: f89d 3016 ldrb.w r3, [sp, #22] + 8004174: 71e3 strb r3, [r4, #7] + 8004176: f89d 3017 ldrb.w r3, [sp, #23] + 800417a: 7223 strb r3, [r4, #8] + 800417c: f89d 3018 ldrb.w r3, [sp, #24] + 8004180: 7025 strb r5, [r4, #0] + 8004182: 7263 strb r3, [r4, #9] + 8004184: f89d 501b ldrb.w r5, [sp, #27] + 8004188: f89d 3019 ldrb.w r3, [sp, #25] + 800418c: 72a3 strb r3, [r4, #10] + 800418e: f89d 301a ldrb.w r3, [sp, #26] + 8004192: 72e3 strb r3, [r4, #11] + 8004194: 462a mov r2, r5 + 8004196: a907 add r1, sp, #28 + 8004198: 7325 strb r5, [r4, #12] + 800419a: f104 000d add.w r0, r4, #13 + 800419e: f010 f890 bl 80142c2 <memcpy> + 80041a2: f105 010d add.w r1, r5, #13 + 80041a6: 4622 mov r2, r4 + 80041a8: b2c9 uxtb r1, r1 + 80041aa: 2001 movs r0, #1 + 80041ac: e72f b.n 800400e <USER_APP_AUTO_RESPONDER_Parse+0xce> + 80041ae: 7880 ldrb r0, [r0, #2] + 80041b0: 2839 cmp r0, #57 ; 0x39 + 80041b2: d80c bhi.n 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80041b4: 3830 subs r0, #48 ; 0x30 + 80041b6: b2c0 uxtb r0, r0 + 80041b8: f7ff f852 bl 8003260 <STS_SENSOR_Power_ON> + 80041bc: 4a10 ldr r2, [pc, #64] ; (8004200 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 80041be: 7823 ldrb r3, [r4, #0] + 80041c0: 7013 strb r3, [r2, #0] + 80041c2: 7863 ldrb r3, [r4, #1] + 80041c4: 7053 strb r3, [r2, #1] + 80041c6: 78a3 ldrb r3, [r4, #2] + 80041c8: 7093 strb r3, [r2, #2] + 80041ca: 2103 movs r1, #3 + 80041cc: e708 b.n 8003fe0 <USER_APP_AUTO_RESPONDER_Parse+0xa0> + 80041ce: b015 add sp, #84 ; 0x54 + 80041d0: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 80041d4: f7ff bc08 b.w 80039e8 <STS_SENSOR_Upload_Config_Invalid_Message> + 80041d8: 7880 ldrb r0, [r0, #2] + 80041da: 2839 cmp r0, #57 ; 0x39 + 80041dc: d8f7 bhi.n 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80041de: 3830 subs r0, #48 ; 0x30 + 80041e0: b2c0 uxtb r0, r0 + 80041e2: f7ff f842 bl 800326a <STS_SENSOR_Power_OFF> + 80041e6: e7e9 b.n 80041bc <USER_APP_AUTO_RESPONDER_Parse+0x27c> + 80041e8: 7880 ldrb r0, [r0, #2] + 80041ea: 2839 cmp r0, #57 ; 0x39 + 80041ec: d8ef bhi.n 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80041ee: 3830 subs r0, #48 ; 0x30 + 80041f0: b2c0 uxtb r0, r0 + 80041f2: f7ff f83f bl 8003274 <STS_SENSOR_MEMS_Reset> + 80041f6: e7e1 b.n 80041bc <USER_APP_AUTO_RESPONDER_Parse+0x27c> + 80041f8: 08014b1e .word 0x08014b1e + 80041fc: 08014b33 .word 0x08014b33 + 8004200: 20000dcd .word 0x20000dcd + 8004204: 20000ef4 .word 0x20000ef4 + 8004208: 20000c44 .word 0x20000c44 + 800420c: 20000078 .word 0x20000078 + 8004210: 08014b55 .word 0x08014b55 + 8004214: 7883 ldrb r3, [r0, #2] + 8004216: 3b30 subs r3, #48 ; 0x30 + 8004218: b2da uxtb r2, r3 + 800421a: 2a09 cmp r2, #9 + 800421c: d8d7 bhi.n 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 800421e: 78c5 ldrb r5, [r0, #3] + 8004220: 3d30 subs r5, #48 ; 0x30 + 8004222: b2ea uxtb r2, r5 + 8004224: 2a09 cmp r2, #9 + 8004226: d8d2 bhi.n 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 8004228: 7901 ldrb r1, [r0, #4] + 800422a: f1a1 0248 sub.w r2, r1, #72 ; 0x48 + 800422e: b2d2 uxtb r2, r2 + 8004230: 2a0b cmp r2, #11 + 8004232: d8cc bhi.n 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 8004234: 48a3 ldr r0, [pc, #652] ; (80044c4 <USER_APP_AUTO_RESPONDER_Parse+0x584>) + 8004236: fa40 f202 asr.w r2, r0, r2 + 800423a: 07d0 lsls r0, r2, #31 + 800423c: d4c7 bmi.n 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 800423e: 220a movs r2, #10 + 8004240: 294d cmp r1, #77 ; 0x4d + 8004242: fb02 5503 mla r5, r2, r3, r5 + 8004246: d13f bne.n 80042c8 <USER_APP_AUTO_RESPONDER_Parse+0x388> + 8004248: 233c movs r3, #60 ; 0x3c + 800424a: 435d muls r5, r3 + 800424c: 4b9e ldr r3, [pc, #632] ; (80044c8 <USER_APP_AUTO_RESPONDER_Parse+0x588>) + 800424e: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8004252: 4368 muls r0, r5 + 8004254: 6018 str r0, [r3, #0] + 8004256: 4b9d ldr r3, [pc, #628] ; (80044cc <USER_APP_AUTO_RESPONDER_Parse+0x58c>) + 8004258: 6018 str r0, [r3, #0] + 800425a: f7ff f8b9 bl 80033d0 <OnTxPeriodicityChanged> + 800425e: 4a9c ldr r2, [pc, #624] ; (80044d0 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 8004260: 7823 ldrb r3, [r4, #0] + 8004262: 7013 strb r3, [r2, #0] + 8004264: 7863 ldrb r3, [r4, #1] + 8004266: 7053 strb r3, [r2, #1] + 8004268: 78a3 ldrb r3, [r4, #2] + 800426a: 7093 strb r3, [r2, #2] + 800426c: 78e3 ldrb r3, [r4, #3] + 800426e: 70d3 strb r3, [r2, #3] + 8004270: 7923 ldrb r3, [r4, #4] + 8004272: 7113 strb r3, [r2, #4] + 8004274: 2105 movs r1, #5 + 8004276: 2001 movs r0, #1 + 8004278: f7ff fb4e bl 8003918 <STS_SENSOR_Upload_Message> + 800427c: 4b95 ldr r3, [pc, #596] ; (80044d4 <USER_APP_AUTO_RESPONDER_Parse+0x594>) + 800427e: 2210 movs r2, #16 + 8004280: 2600 movs r6, #0 + 8004282: 701e strb r6, [r3, #0] + 8004284: 705a strb r2, [r3, #1] + 8004286: 2201 movs r2, #1 + 8004288: 709a strb r2, [r3, #2] + 800428a: 70da strb r2, [r3, #3] + 800428c: 78a1 ldrb r1, [r4, #2] + 800428e: 3930 subs r1, #48 ; 0x30 + 8004290: eb01 0081 add.w r0, r1, r1, lsl #2 + 8004294: 78e1 ldrb r1, [r4, #3] + 8004296: 3930 subs r1, #48 ; 0x30 + 8004298: eb01 0140 add.w r1, r1, r0, lsl #1 + 800429c: b2c9 uxtb r1, r1 + 800429e: 7119 strb r1, [r3, #4] + 80042a0: 7922 ldrb r2, [r4, #4] + 80042a2: 715a strb r2, [r3, #5] + 80042a4: 4a8c ldr r2, [pc, #560] ; (80044d8 <USER_APP_AUTO_RESPONDER_Parse+0x598>) + 80042a6: 7812 ldrb r2, [r2, #0] + 80042a8: b2d2 uxtb r2, r2 + 80042aa: 721a strb r2, [r3, #8] + 80042ac: 4a8b ldr r2, [pc, #556] ; (80044dc <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 80042ae: 7812 ldrb r2, [r2, #0] + 80042b0: b2d2 uxtb r2, r2 + 80042b2: 725a strb r2, [r3, #9] + 80042b4: f7ff fba6 bl 8003a04 <OnStoreSTSCFGContextRequest> + 80042b8: 4b89 ldr r3, [pc, #548] ; (80044e0 <USER_APP_AUTO_RESPONDER_Parse+0x5a0>) + 80042ba: 9500 str r5, [sp, #0] + 80042bc: 4632 mov r2, r6 + 80042be: 4631 mov r1, r6 + 80042c0: 2002 movs r0, #2 + 80042c2: f00f fa85 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80042c6: e6a4 b.n 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80042c8: 2948 cmp r1, #72 ; 0x48 + 80042ca: d1bf bne.n 800424c <USER_APP_AUTO_RESPONDER_Parse+0x30c> + 80042cc: f44f 6361 mov.w r3, #3600 ; 0xe10 + 80042d0: e7bb b.n 800424a <USER_APP_AUTO_RESPONDER_Parse+0x30a> + 80042d2: 7883 ldrb r3, [r0, #2] + 80042d4: 3b30 subs r3, #48 ; 0x30 + 80042d6: b2da uxtb r2, r3 + 80042d8: 2a09 cmp r2, #9 + 80042da: f63f af78 bhi.w 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80042de: 78c5 ldrb r5, [r0, #3] + 80042e0: 3d30 subs r5, #48 ; 0x30 + 80042e2: b2ea uxtb r2, r5 + 80042e4: 2a09 cmp r2, #9 + 80042e6: f63f af72 bhi.w 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80042ea: 7901 ldrb r1, [r0, #4] + 80042ec: f1a1 0248 sub.w r2, r1, #72 ; 0x48 + 80042f0: b2d2 uxtb r2, r2 + 80042f2: 2a0b cmp r2, #11 + 80042f4: f63f af6b bhi.w 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80042f8: 4872 ldr r0, [pc, #456] ; (80044c4 <USER_APP_AUTO_RESPONDER_Parse+0x584>) + 80042fa: fa40 f202 asr.w r2, r0, r2 + 80042fe: 07d2 lsls r2, r2, #31 + 8004300: f53f af65 bmi.w 80041ce <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 8004304: 220a movs r2, #10 + 8004306: 294d cmp r1, #77 ; 0x4d + 8004308: fb02 5503 mla r5, r2, r3, r5 + 800430c: d139 bne.n 8004382 <USER_APP_AUTO_RESPONDER_Parse+0x442> + 800430e: 233c movs r3, #60 ; 0x3c + 8004310: 435d muls r5, r3 + 8004312: 4a6e ldr r2, [pc, #440] ; (80044cc <USER_APP_AUTO_RESPONDER_Parse+0x58c>) + 8004314: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8004318: 436b muls r3, r5 + 800431a: 6013 str r3, [r2, #0] + 800431c: 6810 ldr r0, [r2, #0] + 800431e: f7ff f879 bl 8003414 <OnYunhornSTSHeartBeatPeriodicityChanged> + 8004322: 4a6b ldr r2, [pc, #428] ; (80044d0 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 8004324: 7823 ldrb r3, [r4, #0] + 8004326: 7013 strb r3, [r2, #0] + 8004328: 7863 ldrb r3, [r4, #1] + 800432a: 7053 strb r3, [r2, #1] + 800432c: 78a3 ldrb r3, [r4, #2] + 800432e: 7093 strb r3, [r2, #2] + 8004330: 78e3 ldrb r3, [r4, #3] + 8004332: 70d3 strb r3, [r2, #3] + 8004334: 7923 ldrb r3, [r4, #4] + 8004336: 7113 strb r3, [r2, #4] + 8004338: 2105 movs r1, #5 + 800433a: 2001 movs r0, #1 + 800433c: f7ff faec bl 8003918 <STS_SENSOR_Upload_Message> + 8004340: 4b64 ldr r3, [pc, #400] ; (80044d4 <USER_APP_AUTO_RESPONDER_Parse+0x594>) + 8004342: 2210 movs r2, #16 + 8004344: 2600 movs r6, #0 + 8004346: 701e strb r6, [r3, #0] + 8004348: 705a strb r2, [r3, #1] + 800434a: 2201 movs r2, #1 + 800434c: 709a strb r2, [r3, #2] + 800434e: 70da strb r2, [r3, #3] + 8004350: 78a1 ldrb r1, [r4, #2] + 8004352: 3930 subs r1, #48 ; 0x30 + 8004354: eb01 0081 add.w r0, r1, r1, lsl #2 + 8004358: 78e1 ldrb r1, [r4, #3] + 800435a: 3930 subs r1, #48 ; 0x30 + 800435c: eb01 0140 add.w r1, r1, r0, lsl #1 + 8004360: b2c9 uxtb r1, r1 + 8004362: 7199 strb r1, [r3, #6] + 8004364: 7922 ldrb r2, [r4, #4] + 8004366: 71da strb r2, [r3, #7] + 8004368: 4a5b ldr r2, [pc, #364] ; (80044d8 <USER_APP_AUTO_RESPONDER_Parse+0x598>) + 800436a: 7812 ldrb r2, [r2, #0] + 800436c: b2d2 uxtb r2, r2 + 800436e: 721a strb r2, [r3, #8] + 8004370: 4a5a ldr r2, [pc, #360] ; (80044dc <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 8004372: 7812 ldrb r2, [r2, #0] + 8004374: b2d2 uxtb r2, r2 + 8004376: 725a strb r2, [r3, #9] + 8004378: f7ff fb44 bl 8003a04 <OnStoreSTSCFGContextRequest> + 800437c: 4b59 ldr r3, [pc, #356] ; (80044e4 <USER_APP_AUTO_RESPONDER_Parse+0x5a4>) + 800437e: 9500 str r5, [sp, #0] + 8004380: e79c b.n 80042bc <USER_APP_AUTO_RESPONDER_Parse+0x37c> + 8004382: 2948 cmp r1, #72 ; 0x48 + 8004384: d1c5 bne.n 8004312 <USER_APP_AUTO_RESPONDER_Parse+0x3d2> + 8004386: f44f 6361 mov.w r3, #3600 ; 0xe10 + 800438a: e7c1 b.n 8004310 <USER_APP_AUTO_RESPONDER_Parse+0x3d0> + 800438c: 2b50 cmp r3, #80 ; 0x50 + 800438e: d15d bne.n 800444c <USER_APP_AUTO_RESPONDER_Parse+0x50c> + 8004390: 2902 cmp r1, #2 + 8004392: f67f ae3e bls.w 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 8004396: 7843 ldrb r3, [r0, #1] + 8004398: 3b30 subs r3, #48 ; 0x30 + 800439a: 2b01 cmp r3, #1 + 800439c: f63f ae39 bhi.w 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80043a0: 7883 ldrb r3, [r0, #2] + 80043a2: 2b31 cmp r3, #49 ; 0x31 + 80043a4: f47f ae35 bne.w 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80043a8: 290b cmp r1, #11 + 80043aa: d804 bhi.n 80043b6 <USER_APP_AUTO_RESPONDER_Parse+0x476> + 80043ac: f7ff fb1c bl 80039e8 <STS_SENSOR_Upload_Config_Invalid_Message> + 80043b0: 2100 movs r1, #0 + 80043b2: 4a47 ldr r2, [pc, #284] ; (80044d0 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 80043b4: e614 b.n 8003fe0 <USER_APP_AUTO_RESPONDER_Parse+0xa0> + 80043b6: 4d47 ldr r5, [pc, #284] ; (80044d4 <USER_APP_AUTO_RESPONDER_Parse+0x594>) + 80043b8: 4f4b ldr r7, [pc, #300] ; (80044e8 <USER_APP_AUTO_RESPONDER_Parse+0x5a8>) + 80043ba: 3402 adds r4, #2 + 80043bc: 2600 movs r6, #0 + 80043be: f814 2f01 ldrb.w r2, [r4, #1]! + 80043c2: 19a9 adds r1, r5, r6 + 80043c4: 3a30 subs r2, #48 ; 0x30 + 80043c6: b2d2 uxtb r2, r2 + 80043c8: 730a strb r2, [r1, #12] + 80043ca: 7b0b ldrb r3, [r1, #12] + 80043cc: e9cd 6302 strd r6, r3, [sp, #8] + 80043d0: 7823 ldrb r3, [r4, #0] + 80043d2: 2200 movs r2, #0 + 80043d4: e9cd 6300 strd r6, r3, [sp] + 80043d8: 4611 mov r1, r2 + 80043da: 463b mov r3, r7 + 80043dc: 2001 movs r0, #1 + 80043de: 3601 adds r6, #1 + 80043e0: f00f f9f6 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80043e4: 2e0c cmp r6, #12 + 80043e6: d1ea bne.n 80043be <USER_APP_AUTO_RESPONDER_Parse+0x47e> + 80043e8: f7fe ff66 bl 80032b8 <STS_SENSOR_NVM_CFG_SIMPLE> + 80043ec: 4b38 ldr r3, [pc, #224] ; (80044d0 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 80043ee: 2250 movs r2, #80 ; 0x50 + 80043f0: 701a strb r2, [r3, #0] + 80043f2: 2210 movs r2, #16 + 80043f4: 709a strb r2, [r3, #2] + 80043f6: 2400 movs r4, #0 + 80043f8: 2201 movs r2, #1 + 80043fa: 705c strb r4, [r3, #1] + 80043fc: 70da strb r2, [r3, #3] + 80043fe: f803 2f04 strb.w r2, [r3, #4]! + 8004402: 192a adds r2, r5, r4 + 8004404: 3401 adds r4, #1 + 8004406: 7b12 ldrb r2, [r2, #12] + 8004408: 2c0c cmp r4, #12 + 800440a: f102 0230 add.w r2, r2, #48 ; 0x30 + 800440e: f803 2f01 strb.w r2, [r3, #1]! + 8004412: d1f6 bne.n 8004402 <USER_APP_AUTO_RESPONDER_Parse+0x4c2> + 8004414: 2200 movs r2, #0 + 8004416: 2350 movs r3, #80 ; 0x50 + 8004418: 4611 mov r1, r2 + 800441a: 9300 str r3, [sp, #0] + 800441c: 2001 movs r0, #1 + 800441e: 4b33 ldr r3, [pc, #204] ; (80044ec <USER_APP_AUTO_RESPONDER_Parse+0x5ac>) + 8004420: f00f f9d6 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004424: 2300 movs r3, #0 + 8004426: 702b strb r3, [r5, #0] + 8004428: 2310 movs r3, #16 + 800442a: 706b strb r3, [r5, #1] + 800442c: 2301 movs r3, #1 + 800442e: 70ab strb r3, [r5, #2] + 8004430: 70eb strb r3, [r5, #3] + 8004432: 4b29 ldr r3, [pc, #164] ; (80044d8 <USER_APP_AUTO_RESPONDER_Parse+0x598>) + 8004434: 781b ldrb r3, [r3, #0] + 8004436: b2db uxtb r3, r3 + 8004438: 722b strb r3, [r5, #8] + 800443a: 4b28 ldr r3, [pc, #160] ; (80044dc <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 800443c: 781b ldrb r3, [r3, #0] + 800443e: b2db uxtb r3, r3 + 8004440: 726b strb r3, [r5, #9] + 8004442: 72ec strb r4, [r5, #11] + 8004444: f7ff fade bl 8003a04 <OnStoreSTSCFGContextRequest> + 8004448: 2111 movs r1, #17 + 800444a: e7b2 b.n 80043b2 <USER_APP_AUTO_RESPONDER_Parse+0x472> + 800444c: 2b41 cmp r3, #65 ; 0x41 + 800444e: f47f ade0 bne.w 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 8004452: 7843 ldrb r3, [r0, #1] + 8004454: 2b43 cmp r3, #67 ; 0x43 + 8004456: f47f addc bne.w 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 800445a: 2916 cmp r1, #22 + 800445c: f47f add9 bne.w 8004012 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 8004460: 4d23 ldr r5, [pc, #140] ; (80044f0 <USER_APP_AUTO_RESPONDER_Parse+0x5b0>) + 8004462: 1c42 adds r2, r0, #1 + 8004464: 2300 movs r3, #0 + 8004466: f812 1f01 ldrb.w r1, [r2, #1]! + 800446a: 54e9 strb r1, [r5, r3] + 800446c: 3301 adds r3, #1 + 800446e: 2b14 cmp r3, #20 + 8004470: d1f9 bne.n 8004466 <USER_APP_AUTO_RESPONDER_Parse+0x526> + 8004472: f7fe fe7b bl 800316c <STS_YunhornAuthenticationCode_Process> + 8004476: 4b1f ldr r3, [pc, #124] ; (80044f4 <USER_APP_AUTO_RESPONDER_Parse+0x5b4>) + 8004478: 7d5b ldrb r3, [r3, #21] + 800447a: 2b01 cmp r3, #1 + 800447c: d119 bne.n 80044b2 <USER_APP_AUTO_RESPONDER_Parse+0x572> + 800447e: 4915 ldr r1, [pc, #84] ; (80044d4 <USER_APP_AUTO_RESPONDER_Parse+0x594>) + 8004480: 2300 movs r3, #0 + 8004482: 5cea ldrb r2, [r5, r3] + 8004484: 18c8 adds r0, r1, r3 + 8004486: 3301 adds r3, #1 + 8004488: b2d2 uxtb r2, r2 + 800448a: 2b14 cmp r3, #20 + 800448c: f880 202c strb.w r2, [r0, #44] ; 0x2c + 8004490: d1f7 bne.n 8004482 <USER_APP_AUTO_RESPONDER_Parse+0x542> + 8004492: 4b12 ldr r3, [pc, #72] ; (80044dc <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 8004494: 2200 movs r2, #0 + 8004496: 701a strb r2, [r3, #0] + 8004498: 781b ldrb r3, [r3, #0] + 800449a: b2db uxtb r3, r3 + 800449c: 724b strb r3, [r1, #9] + 800449e: f7ff fab1 bl 8003a04 <OnStoreSTSCFGContextRequest> + 80044a2: 4a0b ldr r2, [pc, #44] ; (80044d0 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 80044a4: 1e63 subs r3, r4, #1 + 80044a6: 3415 adds r4, #21 + 80044a8: 429c cmp r4, r3 + 80044aa: d106 bne.n 80044ba <USER_APP_AUTO_RESPONDER_Parse+0x57a> + 80044ac: 4a08 ldr r2, [pc, #32] ; (80044d0 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 80044ae: 2116 movs r1, #22 + 80044b0: e596 b.n 8003fe0 <USER_APP_AUTO_RESPONDER_Parse+0xa0> + 80044b2: 4b0a ldr r3, [pc, #40] ; (80044dc <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 80044b4: 2202 movs r2, #2 + 80044b6: 701a strb r2, [r3, #0] + 80044b8: e7f3 b.n 80044a2 <USER_APP_AUTO_RESPONDER_Parse+0x562> + 80044ba: f813 1f01 ldrb.w r1, [r3, #1]! + 80044be: f802 1b01 strb.w r1, [r2], #1 + 80044c2: e7f1 b.n 80044a8 <USER_APP_AUTO_RESPONDER_Parse+0x568> + 80044c4: fffff7de .word 0xfffff7de + 80044c8: 20000074 .word 0x20000074 + 80044cc: 2000000c .word 0x2000000c + 80044d0: 20000dcd .word 0x20000dcd + 80044d4: 20000078 .word 0x20000078 + 80044d8: 20000e62 .word 0x20000e62 + 80044dc: 20000c44 .word 0x20000c44 + 80044e0: 08014b7e .word 0x08014b7e + 80044e4: 08014bb5 .word 0x08014bb5 + 80044e8: 08014c00 .word 0x08014c00 + 80044ec: 08014c28 .word 0x08014c28 + 80044f0: 20000e4e .word 0x20000e4e + 80044f4: 20000ab4 .word 0x20000ab4 + +080044f8 <OnRxData>: + 80044f8: b570 push {r4, r5, r6, lr} + 80044fa: 4605 mov r5, r0 + 80044fc: b086 sub sp, #24 + 80044fe: 460c mov r4, r1 + 8004500: 2900 cmp r1, #0 + 8004502: d03b beq.n 800457c <OnRxData+0x84> + 8004504: 4828 ldr r0, [pc, #160] ; (80045a8 <OnRxData+0xb0>) + 8004506: f00f fcdf bl 8013ec8 <UTIL_TIMER_Start> + 800450a: 7826 ldrb r6, [r4, #0] + 800450c: b1ee cbz r6, 800454a <OnRxData+0x52> + 800450e: 2d00 cmp r5, #0 + 8004510: d048 beq.n 80045a4 <OnRxData+0xac> + 8004512: 6868 ldr r0, [r5, #4] + 8004514: 782e ldrb r6, [r5, #0] + 8004516: b1c0 cbz r0, 800454a <OnRxData+0x52> + 8004518: 2e03 cmp r6, #3 + 800451a: d00b beq.n 8004534 <OnRxData+0x3c> + 800451c: 2e0a cmp r6, #10 + 800451e: d02f beq.n 8004580 <OnRxData+0x88> + 8004520: 2e02 cmp r6, #2 + 8004522: d112 bne.n 800454a <OnRxData+0x52> + 8004524: 7869 ldrb r1, [r5, #1] + 8004526: 2901 cmp r1, #1 + 8004528: d00f beq.n 800454a <OnRxData+0x52> + 800452a: 060b lsls r3, r1, #24 + 800452c: d40d bmi.n 800454a <OnRxData+0x52> + 800452e: f7ff fd07 bl 8003f40 <USER_APP_AUTO_RESPONDER_Parse> + 8004532: e00a b.n 800454a <OnRxData+0x52> + 8004534: 786b ldrb r3, [r5, #1] + 8004536: 2b01 cmp r3, #1 + 8004538: d107 bne.n 800454a <OnRxData+0x52> + 800453a: 7800 ldrb r0, [r0, #0] + 800453c: 2801 cmp r0, #1 + 800453e: d002 beq.n 8004546 <OnRxData+0x4e> + 8004540: 2802 cmp r0, #2 + 8004542: d000 beq.n 8004546 <OnRxData+0x4e> + 8004544: b908 cbnz r0, 800454a <OnRxData+0x52> + 8004546: f006 ffc3 bl 800b4d0 <LmHandlerRequestClass> + 800454a: 7c23 ldrb r3, [r4, #16] + 800454c: 2b05 cmp r3, #5 + 800454e: d815 bhi.n 800457c <OnRxData+0x84> + 8004550: f994 200a ldrsb.w r2, [r4, #10] + 8004554: 9205 str r2, [sp, #20] + 8004556: f994 2009 ldrsb.w r2, [r4, #9] + 800455a: 9204 str r2, [sp, #16] + 800455c: 4a13 ldr r2, [pc, #76] ; (80045ac <OnRxData+0xb4>) + 800455e: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8004562: 9303 str r3, [sp, #12] + 8004564: f994 3008 ldrsb.w r3, [r4, #8] + 8004568: e9cd 6301 strd r6, r3, [sp, #4] + 800456c: 2200 movs r2, #0 + 800456e: 68e3 ldr r3, [r4, #12] + 8004570: 9300 str r3, [sp, #0] + 8004572: 4611 mov r1, r2 + 8004574: 4b0e ldr r3, [pc, #56] ; (80045b0 <OnRxData+0xb8>) + 8004576: 2003 movs r0, #3 + 8004578: f00f f92a bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800457c: b006 add sp, #24 + 800457e: bd70 pop {r4, r5, r6, pc} + 8004580: 786b ldrb r3, [r5, #1] + 8004582: 2b01 cmp r3, #1 + 8004584: d1e1 bne.n 800454a <OnRxData+0x52> + 8004586: 7802 ldrb r2, [r0, #0] + 8004588: 4b0a ldr r3, [pc, #40] ; (80045b4 <OnRxData+0xbc>) + 800458a: f002 0201 and.w r2, r2, #1 + 800458e: 701a strb r2, [r3, #0] + 8004590: b92a cbnz r2, 800459e <OnRxData+0xa6> + 8004592: 4b09 ldr r3, [pc, #36] ; (80045b8 <OnRxData+0xc0>) + 8004594: 4611 mov r1, r2 + 8004596: 2003 movs r0, #3 + 8004598: f00f f91a bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800459c: e7d5 b.n 800454a <OnRxData+0x52> + 800459e: 4b07 ldr r3, [pc, #28] ; (80045bc <OnRxData+0xc4>) + 80045a0: 2200 movs r2, #0 + 80045a2: e7f7 b.n 8004594 <OnRxData+0x9c> + 80045a4: 462e mov r6, r5 + 80045a6: e7d0 b.n 800454a <OnRxData+0x52> + 80045a8: 20000d50 .word 0x20000d50 + 80045ac: 08014cac .word 0x08014cac + 80045b0: 08014c56 .word 0x08014c56 + 80045b4: 20000d37 .word 0x20000d37 + 80045b8: 08014c43 .word 0x08014c43 + 80045bc: 08014c4d .word 0x08014c4d + +080045c0 <LoraInfo_Init>: + 80045c0: 4b03 ldr r3, [pc, #12] ; (80045d0 <LoraInfo_Init+0x10>) + 80045c2: 2200 movs r2, #0 + 80045c4: e9c3 2202 strd r2, r2, [r3, #8] + 80045c8: 2201 movs r2, #1 + 80045ca: e9c3 2200 strd r2, r2, [r3] + 80045ce: 4770 bx lr + 80045d0: 20000e64 .word 0x20000e64 + +080045d4 <LoraInfo_GetPtr>: + 80045d4: 4800 ldr r0, [pc, #0] ; (80045d8 <LoraInfo_GetPtr+0x4>) + 80045d6: 4770 bx lr + 80045d8: 20000e64 .word 0x20000e64 + +080045dc <LL_AHB2_GRP1_EnableClock>: + 80045dc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80045e0: b082 sub sp, #8 + 80045e2: 6cda ldr r2, [r3, #76] ; 0x4c + 80045e4: 4302 orrs r2, r0 + 80045e6: 64da str r2, [r3, #76] ; 0x4c + 80045e8: 6cdb ldr r3, [r3, #76] ; 0x4c + 80045ea: 4003 ands r3, r0 + 80045ec: 9301 str r3, [sp, #4] + 80045ee: 9b01 ldr r3, [sp, #4] + 80045f0: b002 add sp, #8 + 80045f2: 4770 bx lr + +080045f4 <RBI_Init>: + 80045f4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80045f8: b086 sub sp, #24 + 80045fa: 2400 movs r4, #0 + 80045fc: 2002 movs r0, #2 + 80045fe: 4d15 ldr r5, [pc, #84] ; (8004654 <RBI_Init+0x60>) + 8004600: 9405 str r4, [sp, #20] + 8004602: f7ff ffeb bl 80045dc <LL_AHB2_GRP1_EnableClock> + 8004606: 2004 movs r0, #4 + 8004608: f7ff ffe8 bl 80045dc <LL_AHB2_GRP1_EnableClock> + 800460c: 4f12 ldr r7, [pc, #72] ; (8004658 <RBI_Init+0x64>) + 800460e: 9403 str r4, [sp, #12] + 8004610: f44f 7680 mov.w r6, #256 ; 0x100 + 8004614: 2301 movs r3, #1 + 8004616: eb0d 0100 add.w r1, sp, r0 + 800461a: e9cd 6301 strd r6, r3, [sp, #4] + 800461e: 4628 mov r0, r5 + 8004620: 2303 movs r3, #3 + 8004622: 9304 str r3, [sp, #16] + 8004624: f44f 5800 mov.w r8, #8192 ; 0x2000 + 8004628: f003 febc bl 80083a4 <HAL_GPIO_Init> + 800462c: a901 add r1, sp, #4 + 800462e: 4638 mov r0, r7 + 8004630: f8cd 8004 str.w r8, [sp, #4] + 8004634: f003 feb6 bl 80083a4 <HAL_GPIO_Init> + 8004638: 4622 mov r2, r4 + 800463a: 4641 mov r1, r8 + 800463c: 4638 mov r0, r7 + 800463e: f003 ffd7 bl 80085f0 <HAL_GPIO_WritePin> + 8004642: 4628 mov r0, r5 + 8004644: 4622 mov r2, r4 + 8004646: 4631 mov r1, r6 + 8004648: f003 ffd2 bl 80085f0 <HAL_GPIO_WritePin> + 800464c: 4620 mov r0, r4 + 800464e: b006 add sp, #24 + 8004650: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8004654: 48000400 .word 0x48000400 + 8004658: 48000800 .word 0x48000800 + +0800465c <RBI_ConfigRFSwitch>: + 800465c: 2803 cmp r0, #3 + 800465e: b510 push {r4, lr} + 8004660: d80e bhi.n 8004680 <RBI_ConfigRFSwitch+0x24> + 8004662: 2801 cmp r0, #1 + 8004664: d810 bhi.n 8004688 <RBI_ConfigRFSwitch+0x2c> + 8004666: b968 cbnz r0, 8004684 <RBI_ConfigRFSwitch+0x28> + 8004668: 4602 mov r2, r0 + 800466a: 480b ldr r0, [pc, #44] ; (8004698 <RBI_ConfigRFSwitch+0x3c>) + 800466c: f44f 7180 mov.w r1, #256 ; 0x100 + 8004670: f003 ffbe bl 80085f0 <HAL_GPIO_WritePin> + 8004674: 2200 movs r2, #0 + 8004676: 4809 ldr r0, [pc, #36] ; (800469c <RBI_ConfigRFSwitch+0x40>) + 8004678: f44f 5100 mov.w r1, #8192 ; 0x2000 + 800467c: f003 ffb8 bl 80085f0 <HAL_GPIO_WritePin> + 8004680: 2000 movs r0, #0 + 8004682: bd10 pop {r4, pc} + 8004684: 2201 movs r2, #1 + 8004686: e7f0 b.n 800466a <RBI_ConfigRFSwitch+0xe> + 8004688: 2200 movs r2, #0 + 800468a: 4803 ldr r0, [pc, #12] ; (8004698 <RBI_ConfigRFSwitch+0x3c>) + 800468c: f44f 7180 mov.w r1, #256 ; 0x100 + 8004690: f003 ffae bl 80085f0 <HAL_GPIO_WritePin> + 8004694: 2201 movs r2, #1 + 8004696: e7ee b.n 8004676 <RBI_ConfigRFSwitch+0x1a> + 8004698: 48000400 .word 0x48000400 + 800469c: 48000800 .word 0x48000800 + +080046a0 <RBI_GetTxConfig>: + 80046a0: 2002 movs r0, #2 + 80046a2: 4770 bx lr + +080046a4 <RBI_IsTCXO>: + 80046a4: 2000 movs r0, #0 + 80046a6: 4770 bx lr + +080046a8 <RBI_IsDCDC>: + 80046a8: 2001 movs r0, #1 + 80046aa: 4770 bx lr + +080046ac <RBI_GetRFOMaxPowerConfig>: + 80046ac: 2800 cmp r0, #0 + 80046ae: bf0c ite eq + 80046b0: 200f moveq r0, #15 + 80046b2: 2016 movne r0, #22 + 80046b4: 4770 bx lr + ... + +080046b8 <Reset_Handler>: + 80046b8: 480d ldr r0, [pc, #52] ; (80046f0 <LoopForever+0x2>) + 80046ba: 4685 mov sp, r0 + 80046bc: f002 fe8e bl 80073dc <SystemInit> + 80046c0: 480c ldr r0, [pc, #48] ; (80046f4 <LoopForever+0x6>) + 80046c2: 490d ldr r1, [pc, #52] ; (80046f8 <LoopForever+0xa>) + 80046c4: 4a0d ldr r2, [pc, #52] ; (80046fc <LoopForever+0xe>) + 80046c6: 2300 movs r3, #0 + 80046c8: e002 b.n 80046d0 <LoopCopyDataInit> + +080046ca <CopyDataInit>: + 80046ca: 58d4 ldr r4, [r2, r3] + 80046cc: 50c4 str r4, [r0, r3] + 80046ce: 3304 adds r3, #4 + +080046d0 <LoopCopyDataInit>: + 80046d0: 18c4 adds r4, r0, r3 + 80046d2: 428c cmp r4, r1 + 80046d4: d3f9 bcc.n 80046ca <CopyDataInit> + 80046d6: 4a0a ldr r2, [pc, #40] ; (8004700 <LoopForever+0x12>) + 80046d8: 4c0a ldr r4, [pc, #40] ; (8004704 <LoopForever+0x16>) + 80046da: 2300 movs r3, #0 + 80046dc: e001 b.n 80046e2 <LoopFillZerobss> + +080046de <FillZerobss>: + 80046de: 6013 str r3, [r2, #0] + 80046e0: 3204 adds r2, #4 + +080046e2 <LoopFillZerobss>: + 80046e2: 42a2 cmp r2, r4 + 80046e4: d3fb bcc.n 80046de <FillZerobss> + 80046e6: f00f fdbb bl 8014260 <__libc_init_array> + 80046ea: f7fd ffc7 bl 800267c <main> + +080046ee <LoopForever>: + 80046ee: e7fe b.n 80046ee <LoopForever> + 80046f0: 20010000 .word 0x20010000 + 80046f4: 20000000 .word 0x20000000 + 80046f8: 200008cc .word 0x200008cc + 80046fc: 08015a0c .word 0x08015a0c + 8004700: 200008cc .word 0x200008cc + 8004704: 20002e38 .word 0x20002e38 + +08004708 <ADC_IRQHandler>: + 8004708: e7fe b.n 8004708 <ADC_IRQHandler> + +0800470a <LL_AHB2_GRP1_EnableClock.constprop.0>: + 800470a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800470e: b082 sub sp, #8 + 8004710: 6cda ldr r2, [r3, #76] ; 0x4c + 8004712: f042 0201 orr.w r2, r2, #1 + 8004716: 64da str r2, [r3, #76] ; 0x4c + 8004718: 6cdb ldr r3, [r3, #76] ; 0x4c + 800471a: f003 0301 and.w r3, r3, #1 + 800471e: 9301 str r3, [sp, #4] + 8004720: 9b01 ldr r3, [sp, #4] + 8004722: b002 add sp, #8 + 8004724: 4770 bx lr + ... + +08004728 <XWL55_WLE5_53L0X_I2C2Configure>: + 8004728: b530 push {r4, r5, lr} + 800472a: b087 sub sp, #28 + 800472c: f7ff ffed bl 800470a <LL_AHB2_GRP1_EnableClock.constprop.0> + 8004730: f44f 5180 mov.w r1, #4096 ; 0x1000 + 8004734: 2201 movs r2, #1 + 8004736: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 800473a: f003 ff59 bl 80085f0 <HAL_GPIO_WritePin> + 800473e: 2201 movs r2, #1 + 8004740: f44f 6100 mov.w r1, #2048 ; 0x800 + 8004744: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004748: f003 ff52 bl 80085f0 <HAL_GPIO_WritePin> + 800474c: f44f 55c0 mov.w r5, #6144 ; 0x1800 + 8004750: 2311 movs r3, #17 + 8004752: e9cd 5301 strd r5, r3, [sp, #4] + 8004756: a901 add r1, sp, #4 + 8004758: 2301 movs r3, #1 + 800475a: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 800475e: 9303 str r3, [sp, #12] + 8004760: f003 fe20 bl 80083a4 <HAL_GPIO_Init> + 8004764: 2408 movs r4, #8 + 8004766: 250a movs r5, #10 + 8004768: 2200 movs r2, #0 + 800476a: f44f 5180 mov.w r1, #4096 ; 0x1000 + 800476e: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004772: f003 ff3d bl 80085f0 <HAL_GPIO_WritePin> + 8004776: 2001 movs r0, #1 + 8004778: f7fe f9f0 bl 8002b5c <HAL_Delay> + 800477c: 2201 movs r2, #1 + 800477e: f44f 5180 mov.w r1, #4096 ; 0x1000 + 8004782: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004786: f003 ff33 bl 80085f0 <HAL_GPIO_WritePin> + 800478a: 2001 movs r0, #1 + 800478c: f7fe f9e6 bl 8002b5c <HAL_Delay> + 8004790: 3d01 subs r5, #1 + 8004792: d1e9 bne.n 8004768 <XWL55_WLE5_53L0X_I2C2Configure+0x40> + 8004794: f44f 6100 mov.w r1, #2048 ; 0x800 + 8004798: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 800479c: f003 ff22 bl 80085e4 <HAL_GPIO_ReadPin> + 80047a0: b908 cbnz r0, 80047a6 <XWL55_WLE5_53L0X_I2C2Configure+0x7e> + 80047a2: 3c01 subs r4, #1 + 80047a4: d1df bne.n 8004766 <XWL55_WLE5_53L0X_I2C2Configure+0x3e> + 80047a6: f44f 6100 mov.w r1, #2048 ; 0x800 + 80047aa: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80047ae: f003 ff19 bl 80085e4 <HAL_GPIO_ReadPin> + 80047b2: bbb0 cbnz r0, 8004822 <XWL55_WLE5_53L0X_I2C2Configure+0xfa> + 80047b4: f7ff ffa9 bl 800470a <LL_AHB2_GRP1_EnableClock.constprop.0> + 80047b8: f44f 7480 mov.w r4, #256 ; 0x100 + 80047bc: 2301 movs r3, #1 + 80047be: 9003 str r0, [sp, #12] + 80047c0: a901 add r1, sp, #4 + 80047c2: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80047c6: e9cd 4301 strd r4, r3, [sp, #4] + 80047ca: f003 fdeb bl 80083a4 <HAL_GPIO_Init> + 80047ce: 2201 movs r2, #1 + 80047d0: f44f 7180 mov.w r1, #256 ; 0x100 + 80047d4: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80047d8: f003 ff0a bl 80085f0 <HAL_GPIO_WritePin> + 80047dc: 2021 movs r0, #33 ; 0x21 + 80047de: f7fe f9bd bl 8002b5c <HAL_Delay> + 80047e2: 2200 movs r2, #0 + 80047e4: f44f 7180 mov.w r1, #256 ; 0x100 + 80047e8: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80047ec: f003 ff00 bl 80085f0 <HAL_GPIO_WritePin> + 80047f0: 2021 movs r0, #33 ; 0x21 + 80047f2: f7fe f9b3 bl 8002b5c <HAL_Delay> + 80047f6: 2201 movs r2, #1 + 80047f8: f44f 7180 mov.w r1, #256 ; 0x100 + 80047fc: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004800: f003 fef6 bl 80085f0 <HAL_GPIO_WritePin> + 8004804: 2021 movs r0, #33 ; 0x21 + 8004806: f7fe f9a9 bl 8002b5c <HAL_Delay> + 800480a: 2200 movs r2, #0 + 800480c: f44f 7180 mov.w r1, #256 ; 0x100 + 8004810: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004814: f003 feec bl 80085f0 <HAL_GPIO_WritePin> + 8004818: f44f 7025 mov.w r0, #660 ; 0x294 + 800481c: f7fe f99e bl 8002b5c <HAL_Delay> + 8004820: e7d5 b.n 80047ce <XWL55_WLE5_53L0X_I2C2Configure+0xa6> + 8004822: f7ff ff72 bl 800470a <LL_AHB2_GRP1_EnableClock.constprop.0> + 8004826: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800482a: 2400 movs r4, #0 + 800482c: 6d9a ldr r2, [r3, #88] ; 0x58 + 800482e: f442 0280 orr.w r2, r2, #4194304 ; 0x400000 + 8004832: 659a str r2, [r3, #88] ; 0x58 + 8004834: 6d9b ldr r3, [r3, #88] ; 0x58 + 8004836: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 800483a: 9300 str r3, [sp, #0] + 800483c: f44f 52c0 mov.w r2, #6144 ; 0x1800 + 8004840: 9b00 ldr r3, [sp, #0] + 8004842: 2312 movs r3, #18 + 8004844: e9cd 2301 strd r2, r3, [sp, #4] + 8004848: 2303 movs r3, #3 + 800484a: e9cd 4303 strd r4, r3, [sp, #12] + 800484e: 2304 movs r3, #4 + 8004850: eb0d 0103 add.w r1, sp, r3 + 8004854: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004858: 9305 str r3, [sp, #20] + 800485a: f003 fda3 bl 80083a4 <HAL_GPIO_Init> + 800485e: 4808 ldr r0, [pc, #32] ; (8004880 <XWL55_WLE5_53L0X_I2C2Configure+0x158>) + 8004860: 4908 ldr r1, [pc, #32] ; (8004884 <XWL55_WLE5_53L0X_I2C2Configure+0x15c>) + 8004862: 4b09 ldr r3, [pc, #36] ; (8004888 <XWL55_WLE5_53L0X_I2C2Configure+0x160>) + 8004864: 6084 str r4, [r0, #8] + 8004866: e9c0 1300 strd r1, r3, [r0] + 800486a: 2301 movs r3, #1 + 800486c: e9c0 3403 strd r3, r4, [r0, #12] + 8004870: e9c0 4407 strd r4, r4, [r0, #28] + 8004874: 6144 str r4, [r0, #20] + 8004876: f004 f82f bl 80088d8 <HAL_I2C_Init> + 800487a: b007 add sp, #28 + 800487c: bd30 pop {r4, r5, pc} + 800487e: bf00 nop + 8004880: 20000e74 .word 0x20000e74 + 8004884: 40005800 .word 0x40005800 + 8004888: 2010091a .word 0x2010091a + +0800488c <XWL55_WLE5_53L0X_Init>: + 800488c: f7ff bf4c b.w 8004728 <XWL55_WLE5_53L0X_I2C2Configure> + +08004890 <XWL55_WLE5_53L0X_ResetId>: + 8004890: b110 cbz r0, 8004898 <XWL55_WLE5_53L0X_ResetId+0x8> + 8004892: 2801 cmp r0, #1 + 8004894: d009 beq.n 80048aa <XWL55_WLE5_53L0X_ResetId+0x1a> + 8004896: 4770 bx lr + 8004898: 3901 subs r1, #1 + 800489a: 424a negs r2, r1 + 800489c: 414a adcs r2, r1 + 800489e: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80048a2: f44f 7100 mov.w r1, #512 ; 0x200 + 80048a6: f003 bea3 b.w 80085f0 <HAL_GPIO_WritePin> + 80048aa: 1e4b subs r3, r1, #1 + 80048ac: 425a negs r2, r3 + 80048ae: 4802 ldr r0, [pc, #8] ; (80048b8 <XWL55_WLE5_53L0X_ResetId+0x28>) + 80048b0: 415a adcs r2, r3 + 80048b2: 2108 movs r1, #8 + 80048b4: e7f7 b.n 80048a6 <XWL55_WLE5_53L0X_ResetId+0x16> + 80048b6: bf00 nop + 80048b8: 48000400 .word 0x48000400 + +080048bc <MX_TOF_Process>: + 80048bc: b508 push {r3, lr} + 80048be: 2001 movs r0, #1 + 80048c0: f7fe fcce bl 8003260 <STS_SENSOR_Power_ON> + 80048c4: 2064 movs r0, #100 ; 0x64 + 80048c6: f7fe f949 bl 8002b5c <HAL_Delay> + 80048ca: f000 f9db bl 8004c84 <STS_TOF_VL53L0X_Range_Process> + 80048ce: 2064 movs r0, #100 ; 0x64 + 80048d0: f7fe f944 bl 8002b5c <HAL_Delay> + 80048d4: e8bd 4008 ldmia.w sp!, {r3, lr} + 80048d8: 2001 movs r0, #1 + 80048da: f7fe bcc6 b.w 800326a <STS_SENSOR_Power_OFF> + ... + +080048e0 <STS_R0_SENSOR_Read>: + 80048e0: 4b03 ldr r3, [pc, #12] ; (80048f0 <STS_R0_SENSOR_Read+0x10>) + 80048e2: 681a ldr r2, [r3, #0] + 80048e4: 8002 strh r2, [r0, #0] + 80048e6: 685a ldr r2, [r3, #4] + 80048e8: 689b ldr r3, [r3, #8] + 80048ea: 8102 strh r2, [r0, #8] + 80048ec: 8143 strh r3, [r0, #10] + 80048ee: 4770 bx lr + 80048f0: 20000ef4 .word 0x20000ef4 + +080048f4 <STS_SENSOR_MEMS_Get_ID>: + 80048f4: b537 push {r0, r1, r2, r4, r5, lr} + 80048f6: 4604 mov r4, r0 + 80048f8: f000 f816 bl 8004928 <sts_tof_vl53l0x_DetectSensors> + 80048fc: f010 05ff ands.w r5, r0, #255 ; 0xff + 8004900: bf1c itt ne + 8004902: 23ee movne r3, #238 ; 0xee + 8004904: 7023 strbne r3, [r4, #0] + 8004906: 23aa movs r3, #170 ; 0xaa + 8004908: 7063 strb r3, [r4, #1] + 800490a: 9301 str r3, [sp, #4] + 800490c: 2200 movs r2, #0 + 800490e: 7823 ldrb r3, [r4, #0] + 8004910: 9300 str r3, [sp, #0] + 8004912: 4611 mov r1, r2 + 8004914: 4b03 ldr r3, [pc, #12] ; (8004924 <STS_SENSOR_MEMS_Get_ID+0x30>) + 8004916: 2001 movs r0, #1 + 8004918: f00e ff5a bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800491c: 4628 mov r0, r5 + 800491e: b003 add sp, #12 + 8004920: bd30 pop {r4, r5, pc} + 8004922: bf00 nop + 8004924: 08014cc4 .word 0x08014cc4 + +08004928 <sts_tof_vl53l0x_DetectSensors>: + 8004928: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800492c: 2400 movs r4, #0 + 800492e: 4f41 ldr r7, [pc, #260] ; (8004a34 <sts_tof_vl53l0x_DetectSensors+0x10c>) + 8004930: 4d41 ldr r5, [pc, #260] ; (8004a38 <sts_tof_vl53l0x_DetectSensors+0x110>) + 8004932: 603c str r4, [r7, #0] + 8004934: b089 sub sp, #36 ; 0x24 + 8004936: 4621 mov r1, r4 + 8004938: 4620 mov r0, r4 + 800493a: f7ff ffa9 bl 8004890 <XWL55_WLE5_53L0X_ResetId> + 800493e: 4621 mov r1, r4 + 8004940: 2001 movs r0, #1 + 8004942: f7ff ffa5 bl 8004890 <XWL55_WLE5_53L0X_ResetId> + 8004946: 4621 mov r1, r4 + 8004948: 2002 movs r0, #2 + 800494a: f7ff ffa1 bl 8004890 <XWL55_WLE5_53L0X_ResetId> + 800494e: f8df a0ec ldr.w sl, [pc, #236] ; 8004a3c <sts_tof_vl53l0x_DetectSensors+0x114> + 8004952: f8df b0ec ldr.w fp, [pc, #236] ; 8004a40 <sts_tof_vl53l0x_DetectSensors+0x118> + 8004956: f8df 90ec ldr.w r9, [pc, #236] ; 8004a44 <sts_tof_vl53l0x_DetectSensors+0x11c> + 800495a: f895 0164 ldrb.w r0, [r5, #356] ; 0x164 + 800495e: 2352 movs r3, #82 ; 0x52 + 8004960: 2101 movs r1, #1 + 8004962: 2600 movs r6, #0 + 8004964: f885 3160 strb.w r3, [r5, #352] ; 0x160 + 8004968: f8c5 6168 str.w r6, [r5, #360] ; 0x168 + 800496c: f7ff ff90 bl 8004890 <XWL55_WLE5_53L0X_ResetId> + 8004970: 2003 movs r0, #3 + 8004972: f7fe f8f3 bl 8002b5c <HAL_Delay> + 8004976: f10d 021e add.w r2, sp, #30 + 800497a: 21c0 movs r1, #192 ; 0xc0 + 800497c: 4628 mov r0, r5 + 800497e: f002 fce1 bl 8007344 <VL53L0X_RdWord> + 8004982: 4602 mov r2, r0 + 8004984: b150 cbz r0, 800499c <sts_tof_vl53l0x_DetectSensors+0x74> + 8004986: 4b30 ldr r3, [pc, #192] ; (8004a48 <sts_tof_vl53l0x_DetectSensors+0x120>) + 8004988: 4632 mov r2, r6 + 800498a: 4611 mov r1, r2 + 800498c: 2001 movs r0, #1 + 800498e: f00e ff1f bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004992: 2100 movs r1, #0 + 8004994: b2e0 uxtb r0, r4 + 8004996: f7ff ff7b bl 8004890 <XWL55_WLE5_53L0X_ResetId> + 800499a: e037 b.n 8004a0c <sts_tof_vl53l0x_DetectSensors+0xe4> + 800499c: f8bd 301e ldrh.w r3, [sp, #30] + 80049a0: f64e 61aa movw r1, #61098 ; 0xeeaa + 80049a4: 428b cmp r3, r1 + 80049a6: d13d bne.n 8004a24 <sts_tof_vl53l0x_DetectSensors+0xfc> + 80049a8: 0066 lsls r6, r4, #1 + 80049aa: 3654 adds r6, #84 ; 0x54 + 80049ac: b2f6 uxtb r6, r6 + 80049ae: 9005 str r0, [sp, #20] + 80049b0: 4631 mov r1, r6 + 80049b2: 4628 mov r0, r5 + 80049b4: f000 f9de bl 8004d74 <VL53L0X_SetDeviceAddress> + 80049b8: 4680 mov r8, r0 + 80049ba: b110 cbz r0, 80049c2 <sts_tof_vl53l0x_DetectSensors+0x9a> + 80049bc: 4b23 ldr r3, [pc, #140] ; (8004a4c <sts_tof_vl53l0x_DetectSensors+0x124>) + 80049be: 9a05 ldr r2, [sp, #20] + 80049c0: e7e3 b.n 800498a <sts_tof_vl53l0x_DetectSensors+0x62> + 80049c2: f10d 021e add.w r2, sp, #30 + 80049c6: 21c0 movs r1, #192 ; 0xc0 + 80049c8: 4628 mov r0, r5 + 80049ca: f885 6160 strb.w r6, [r5, #352] ; 0x160 + 80049ce: f002 fcb9 bl 8007344 <VL53L0X_RdWord> + 80049d2: 4628 mov r0, r5 + 80049d4: f000 fb92 bl 80050fc <VL53L0X_DataInit> + 80049d8: 4602 mov r2, r0 + 80049da: bb00 cbnz r0, 8004a1e <sts_tof_vl53l0x_DetectSensors+0xf6> + 80049dc: 683b ldr r3, [r7, #0] + 80049de: f8d9 1000 ldr.w r1, [r9] + 80049e2: 2001 movs r0, #1 + 80049e4: 4403 add r3, r0 + 80049e6: 603b str r3, [r7, #0] + 80049e8: fa00 f304 lsl.w r3, r0, r4 + 80049ec: 430b orrs r3, r1 + 80049ee: f8c9 3000 str.w r3, [r9] + 80049f2: 9302 str r3, [sp, #8] + 80049f4: f895 3160 ldrb.w r3, [r5, #352] ; 0x160 + 80049f8: 9301 str r3, [sp, #4] + 80049fa: f8d5 3164 ldr.w r3, [r5, #356] ; 0x164 + 80049fe: 9300 str r3, [sp, #0] + 8004a00: 4611 mov r1, r2 + 8004a02: 4b13 ldr r3, [pc, #76] ; (8004a50 <sts_tof_vl53l0x_DetectSensors+0x128>) + 8004a04: f8c5 0168 str.w r0, [r5, #360] ; 0x168 + 8004a08: f00e fee2 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004a0c: 3401 adds r4, #1 + 8004a0e: 2c03 cmp r4, #3 + 8004a10: f505 75c8 add.w r5, r5, #400 ; 0x190 + 8004a14: d1a1 bne.n 800495a <sts_tof_vl53l0x_DetectSensors+0x32> + 8004a16: 6838 ldr r0, [r7, #0] + 8004a18: b009 add sp, #36 ; 0x24 + 8004a1a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8004a1e: 465b mov r3, fp + 8004a20: 4642 mov r2, r8 + 8004a22: e7b2 b.n 800498a <sts_tof_vl53l0x_DetectSensors+0x62> + 8004a24: 9300 str r3, [sp, #0] + 8004a26: 4601 mov r1, r0 + 8004a28: 4653 mov r3, sl + 8004a2a: 2001 movs r0, #1 + 8004a2c: f00e fed0 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004a30: e7af b.n 8004992 <sts_tof_vl53l0x_DetectSensors+0x6a> + 8004a32: bf00 nop + 8004a34: 20000eec .word 0x20000eec + 8004a38: 200000bc .word 0x200000bc + 8004a3c: 08014d6e .word 0x08014d6e + 8004a40: 08014d54 .word 0x08014d54 + 8004a44: 20000ee8 .word 0x20000ee8 + 8004a48: 08014cd9 .word 0x08014cd9 + 8004a4c: 08014ce9 .word 0x08014ce9 + 8004a50: 08014d0b .word 0x08014d0b + +08004a54 <sts_tof_vl53l0x_SetupSingleShot>: + 8004a54: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8004a58: f44f 4380 mov.w r3, #16384 ; 0x4000 + 8004a5c: b087 sub sp, #28 + 8004a5e: f44f 1290 mov.w r2, #1179648 ; 0x120000 + 8004a62: e9cd 3202 strd r3, r2, [sp, #8] + 8004a66: 4c68 ldr r4, [pc, #416] ; (8004c08 <sts_tof_vl53l0x_SetupSingleShot+0x1b4>) + 8004a68: f8df a1a0 ldr.w sl, [pc, #416] ; 8004c0c <sts_tof_vl53l0x_SetupSingleShot+0x1b8> + 8004a6c: f8df b1a0 ldr.w fp, [pc, #416] ; 8004c10 <sts_tof_vl53l0x_SetupSingleShot+0x1bc> + 8004a70: 4605 mov r5, r0 + 8004a72: f04f 090a mov.w r9, #10 + 8004a76: f04f 080e mov.w r8, #14 + 8004a7a: f248 07e8 movw r7, #33000 ; 0x80e8 + 8004a7e: 2600 movs r6, #0 + 8004a80: f8d4 3168 ldr.w r3, [r4, #360] ; 0x168 + 8004a84: 2b00 cmp r3, #0 + 8004a86: f000 80ae beq.w 8004be6 <sts_tof_vl53l0x_SetupSingleShot+0x192> + 8004a8a: 2200 movs r2, #0 + 8004a8c: 4b61 ldr r3, [pc, #388] ; (8004c14 <sts_tof_vl53l0x_SetupSingleShot+0x1c0>) + 8004a8e: 9600 str r6, [sp, #0] + 8004a90: 4611 mov r1, r2 + 8004a92: 2001 movs r0, #1 + 8004a94: f00e fe9c bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004a98: 4620 mov r0, r4 + 8004a9a: f000 fe23 bl 80056e4 <VL53L0X_StaticInit> + 8004a9e: b128 cbz r0, 8004aac <sts_tof_vl53l0x_SetupSingleShot+0x58> + 8004aa0: 2200 movs r2, #0 + 8004aa2: 4b5d ldr r3, [pc, #372] ; (8004c18 <sts_tof_vl53l0x_SetupSingleShot+0x1c4>) + 8004aa4: 4611 mov r1, r2 + 8004aa6: 2001 movs r0, #1 + 8004aa8: f00e fe92 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004aac: f10d 0212 add.w r2, sp, #18 + 8004ab0: f10d 0111 add.w r1, sp, #17 + 8004ab4: 4620 mov r0, r4 + 8004ab6: f000 fbcf bl 8005258 <VL53L0X_PerformRefCalibration> + 8004aba: b128 cbz r0, 8004ac8 <sts_tof_vl53l0x_SetupSingleShot+0x74> + 8004abc: 2200 movs r2, #0 + 8004abe: 4653 mov r3, sl + 8004ac0: 4611 mov r1, r2 + 8004ac2: 2001 movs r0, #1 + 8004ac4: f00e fe84 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004ac8: f10d 0213 add.w r2, sp, #19 + 8004acc: a905 add r1, sp, #20 + 8004ace: 4620 mov r0, r4 + 8004ad0: f000 ff0d bl 80058ee <VL53L0X_PerformRefSpadManagement> + 8004ad4: b128 cbz r0, 8004ae2 <sts_tof_vl53l0x_SetupSingleShot+0x8e> + 8004ad6: 2200 movs r2, #0 + 8004ad8: 4b50 ldr r3, [pc, #320] ; (8004c1c <sts_tof_vl53l0x_SetupSingleShot+0x1c8>) + 8004ada: 4611 mov r1, r2 + 8004adc: 2001 movs r0, #1 + 8004ade: f00e fe77 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004ae2: 2100 movs r1, #0 + 8004ae4: 4620 mov r0, r4 + 8004ae6: f000 f949 bl 8004d7c <VL53L0X_SetDeviceMode> + 8004aea: b128 cbz r0, 8004af8 <sts_tof_vl53l0x_SetupSingleShot+0xa4> + 8004aec: 2200 movs r2, #0 + 8004aee: 4b4c ldr r3, [pc, #304] ; (8004c20 <sts_tof_vl53l0x_SetupSingleShot+0x1cc>) + 8004af0: 4611 mov r1, r2 + 8004af2: 2001 movs r0, #1 + 8004af4: f00e fe6c bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004af8: 2201 movs r2, #1 + 8004afa: 2100 movs r1, #0 + 8004afc: 4620 mov r0, r4 + 8004afe: f000 fa01 bl 8004f04 <VL53L0X_SetLimitCheckEnable> + 8004b02: b128 cbz r0, 8004b10 <sts_tof_vl53l0x_SetupSingleShot+0xbc> + 8004b04: 2200 movs r2, #0 + 8004b06: 4b47 ldr r3, [pc, #284] ; (8004c24 <sts_tof_vl53l0x_SetupSingleShot+0x1d0>) + 8004b08: 4611 mov r1, r2 + 8004b0a: 2001 movs r0, #1 + 8004b0c: f00e fe60 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004b10: 2201 movs r2, #1 + 8004b12: 4611 mov r1, r2 + 8004b14: 4620 mov r0, r4 + 8004b16: f000 f9f5 bl 8004f04 <VL53L0X_SetLimitCheckEnable> + 8004b1a: b128 cbz r0, 8004b28 <sts_tof_vl53l0x_SetupSingleShot+0xd4> + 8004b1c: 2200 movs r2, #0 + 8004b1e: 4b41 ldr r3, [pc, #260] ; (8004c24 <sts_tof_vl53l0x_SetupSingleShot+0x1d0>) + 8004b20: 4611 mov r1, r2 + 8004b22: 2001 movs r0, #1 + 8004b24: f00e fe54 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004b28: 2d02 cmp r5, #2 + 8004b2a: d865 bhi.n 8004bf8 <sts_tof_vl53l0x_SetupSingleShot+0x1a4> + 8004b2c: 4b3e ldr r3, [pc, #248] ; (8004c28 <sts_tof_vl53l0x_SetupSingleShot+0x1d4>) + 8004b2e: f833 3015 ldrh.w r3, [r3, r5, lsl #1] + 8004b32: 9302 str r3, [sp, #8] + 8004b34: 4b3d ldr r3, [pc, #244] ; (8004c2c <sts_tof_vl53l0x_SetupSingleShot+0x1d8>) + 8004b36: f853 3025 ldr.w r3, [r3, r5, lsl #2] + 8004b3a: 9303 str r3, [sp, #12] + 8004b3c: 4b3c ldr r3, [pc, #240] ; (8004c30 <sts_tof_vl53l0x_SetupSingleShot+0x1dc>) + 8004b3e: f853 7025 ldr.w r7, [r3, r5, lsl #2] + 8004b42: 4b3c ldr r3, [pc, #240] ; (8004c34 <sts_tof_vl53l0x_SetupSingleShot+0x1e0>) + 8004b44: f813 8005 ldrb.w r8, [r3, r5] + 8004b48: 4b3b ldr r3, [pc, #236] ; (8004c38 <sts_tof_vl53l0x_SetupSingleShot+0x1e4>) + 8004b4a: f813 9005 ldrb.w r9, [r3, r5] + 8004b4e: 9a02 ldr r2, [sp, #8] + 8004b50: 2101 movs r1, #1 + 8004b52: 4620 mov r0, r4 + 8004b54: f000 fa21 bl 8004f9a <VL53L0X_SetLimitCheckValue> + 8004b58: b128 cbz r0, 8004b66 <sts_tof_vl53l0x_SetupSingleShot+0x112> + 8004b5a: 2200 movs r2, #0 + 8004b5c: 4b37 ldr r3, [pc, #220] ; (8004c3c <sts_tof_vl53l0x_SetupSingleShot+0x1e8>) + 8004b5e: 4611 mov r1, r2 + 8004b60: 2001 movs r0, #1 + 8004b62: f00e fe35 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004b66: 9a03 ldr r2, [sp, #12] + 8004b68: 2100 movs r1, #0 + 8004b6a: 4620 mov r0, r4 + 8004b6c: f000 fa15 bl 8004f9a <VL53L0X_SetLimitCheckValue> + 8004b70: b128 cbz r0, 8004b7e <sts_tof_vl53l0x_SetupSingleShot+0x12a> + 8004b72: 2200 movs r2, #0 + 8004b74: 4b31 ldr r3, [pc, #196] ; (8004c3c <sts_tof_vl53l0x_SetupSingleShot+0x1e8>) + 8004b76: 4611 mov r1, r2 + 8004b78: 2001 movs r0, #1 + 8004b7a: f00e fe29 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004b7e: 4639 mov r1, r7 + 8004b80: 4620 mov r0, r4 + 8004b82: f000 f915 bl 8004db0 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds> + 8004b86: b128 cbz r0, 8004b94 <sts_tof_vl53l0x_SetupSingleShot+0x140> + 8004b88: 2200 movs r2, #0 + 8004b8a: 4b2d ldr r3, [pc, #180] ; (8004c40 <sts_tof_vl53l0x_SetupSingleShot+0x1ec>) + 8004b8c: 4611 mov r1, r2 + 8004b8e: 2001 movs r0, #1 + 8004b90: f00e fe1e bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004b94: 4642 mov r2, r8 + 8004b96: 2100 movs r1, #0 + 8004b98: 4620 mov r0, r4 + 8004b9a: f000 f90b bl 8004db4 <VL53L0X_SetVcselPulsePeriod> + 8004b9e: b128 cbz r0, 8004bac <sts_tof_vl53l0x_SetupSingleShot+0x158> + 8004ba0: 2200 movs r2, #0 + 8004ba2: 465b mov r3, fp + 8004ba4: 4611 mov r1, r2 + 8004ba6: 2001 movs r0, #1 + 8004ba8: f00e fe12 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004bac: 464a mov r2, r9 + 8004bae: 2101 movs r1, #1 + 8004bb0: 4620 mov r0, r4 + 8004bb2: f000 f8ff bl 8004db4 <VL53L0X_SetVcselPulsePeriod> + 8004bb6: b128 cbz r0, 8004bc4 <sts_tof_vl53l0x_SetupSingleShot+0x170> + 8004bb8: 2200 movs r2, #0 + 8004bba: 465b mov r3, fp + 8004bbc: 4611 mov r1, r2 + 8004bbe: 2001 movs r0, #1 + 8004bc0: f00e fe06 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004bc4: f10d 0212 add.w r2, sp, #18 + 8004bc8: f10d 0111 add.w r1, sp, #17 + 8004bcc: 4620 mov r0, r4 + 8004bce: f000 fb43 bl 8005258 <VL53L0X_PerformRefCalibration> + 8004bd2: b128 cbz r0, 8004be0 <sts_tof_vl53l0x_SetupSingleShot+0x18c> + 8004bd4: 2200 movs r2, #0 + 8004bd6: 4653 mov r3, sl + 8004bd8: 4611 mov r1, r2 + 8004bda: 2001 movs r0, #1 + 8004bdc: f00e fdf8 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004be0: 2301 movs r3, #1 + 8004be2: f8c4 317c str.w r3, [r4, #380] ; 0x17c + 8004be6: 3601 adds r6, #1 + 8004be8: 2e03 cmp r6, #3 + 8004bea: f504 74c8 add.w r4, r4, #400 ; 0x190 + 8004bee: f47f af47 bne.w 8004a80 <sts_tof_vl53l0x_SetupSingleShot+0x2c> + 8004bf2: b007 add sp, #28 + 8004bf4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8004bf8: 2200 movs r2, #0 + 8004bfa: 4b12 ldr r3, [pc, #72] ; (8004c44 <sts_tof_vl53l0x_SetupSingleShot+0x1f0>) + 8004bfc: 4611 mov r1, r2 + 8004bfe: 2001 movs r0, #1 + 8004c00: f00e fde6 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004c04: e7a3 b.n 8004b4e <sts_tof_vl53l0x_SetupSingleShot+0xfa> + 8004c06: bf00 nop + 8004c08: 200000bc .word 0x200000bc + 8004c0c: 08014dc4 .word 0x08014dc4 + 8004c10: 08014ebd .word 0x08014ebd + 8004c14: 08014d7f .word 0x08014d7f + 8004c18: 08014da9 .word 0x08014da9 + 8004c1c: 08014dea .word 0x08014dea + 8004c20: 08014e13 .word 0x08014e13 + 8004c24: 08014e31 .word 0x08014e31 + 8004c28: 08014f70 .word 0x08014f70 + 8004c2c: 08014f78 .word 0x08014f78 + 8004c30: 08014f84 .word 0x08014f84 + 8004c34: 08014f90 .word 0x08014f90 + 8004c38: 08014f93 .word 0x08014f93 + 8004c3c: 08014e63 .word 0x08014e63 + 8004c40: 08014e86 .word 0x08014e86 + 8004c44: 08014e55 .word 0x08014e55 + +08004c48 <sts_tof_vl53l0x_Sensor_SetNewRange>: + 8004c48: b510 push {r4, lr} + 8004c4a: 7e0b ldrb r3, [r1, #24] + 8004c4c: b99b cbnz r3, 8004c76 <sts_tof_vl53l0x_Sensor_SetNewRange+0x2e> + 8004c4e: f8d0 217c ldr.w r2, [r0, #380] ; 0x17c + 8004c52: 8909 ldrh r1, [r1, #8] + 8004c54: b112 cbz r2, 8004c5c <sts_tof_vl53l0x_Sensor_SetNewRange+0x14> + 8004c56: e9c0 135e strd r1, r3, [r0, #376] ; 0x178 + 8004c5a: bd10 pop {r4, pc} + 8004c5c: 4b08 ldr r3, [pc, #32] ; (8004c80 <sts_tof_vl53l0x_Sensor_SetNewRange+0x38>) + 8004c5e: f8d0 4178 ldr.w r4, [r0, #376] ; 0x178 + 8004c62: 681a ldr r2, [r3, #0] + 8004c64: f5c2 7380 rsb r3, r2, #256 ; 0x100 + 8004c68: 434b muls r3, r1 + 8004c6a: fb04 3302 mla r3, r4, r2, r3 + 8004c6e: 121b asrs r3, r3, #8 + 8004c70: f8c0 3178 str.w r3, [r0, #376] ; 0x178 + 8004c74: e7f1 b.n 8004c5a <sts_tof_vl53l0x_Sensor_SetNewRange+0x12> + 8004c76: 2301 movs r3, #1 + 8004c78: f8c0 317c str.w r3, [r0, #380] ; 0x17c + 8004c7c: e7ed b.n 8004c5a <sts_tof_vl53l0x_Sensor_SetNewRange+0x12> + 8004c7e: bf00 nop + 8004c80: 200000b8 .word 0x200000b8 + +08004c84 <STS_TOF_VL53L0X_Range_Process>: + 8004c84: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8004c88: f8df 80c4 ldr.w r8, [pc, #196] ; 8004d50 <STS_TOF_VL53L0X_Range_Process+0xcc> + 8004c8c: 4c31 ldr r4, [pc, #196] ; (8004d54 <STS_TOF_VL53L0X_Range_Process+0xd0>) + 8004c8e: b085 sub sp, #20 + 8004c90: f7ff fdfc bl 800488c <XWL55_WLE5_53L0X_Init> + 8004c94: f8d8 3000 ldr.w r3, [r8] + 8004c98: b10b cbz r3, 8004c9e <STS_TOF_VL53L0X_Range_Process+0x1a> + 8004c9a: 6823 ldr r3, [r4, #0] + 8004c9c: b94b cbnz r3, 8004cb2 <STS_TOF_VL53L0X_Range_Process+0x2e> + 8004c9e: f7ff fe43 bl 8004928 <sts_tof_vl53l0x_DetectSensors> + 8004ca2: 2200 movs r2, #0 + 8004ca4: 6020 str r0, [r4, #0] + 8004ca6: 4b2c ldr r3, [pc, #176] ; (8004d58 <STS_TOF_VL53L0X_Range_Process+0xd4>) + 8004ca8: 9000 str r0, [sp, #0] + 8004caa: 4611 mov r1, r2 + 8004cac: 2001 movs r0, #1 + 8004cae: f00e fd8f bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004cb2: 6823 ldr r3, [r4, #0] + 8004cb4: 2b00 cmp r3, #0 + 8004cb6: dd3f ble.n 8004d38 <STS_TOF_VL53L0X_Range_Process+0xb4> + 8004cb8: 2002 movs r0, #2 + 8004cba: f7ff fecb bl 8004a54 <sts_tof_vl53l0x_SetupSingleShot> + 8004cbe: 4e27 ldr r6, [pc, #156] ; (8004d5c <STS_TOF_VL53L0X_Range_Process+0xd8>) + 8004cc0: f8df 909c ldr.w r9, [pc, #156] ; 8004d60 <STS_TOF_VL53L0X_Range_Process+0xdc> + 8004cc4: f8df a09c ldr.w sl, [pc, #156] ; 8004d64 <STS_TOF_VL53L0X_Range_Process+0xe0> + 8004cc8: f8df b09c ldr.w fp, [pc, #156] ; 8004d68 <STS_TOF_VL53L0X_Range_Process+0xe4> + 8004ccc: 2500 movs r5, #0 + 8004cce: f8d6 4168 ldr.w r4, [r6, #360] ; 0x168 + 8004cd2: 2c01 cmp r4, #1 + 8004cd4: d11b bne.n 8004d0e <STS_TOF_VL53L0X_Range_Process+0x8a> + 8004cd6: 4922 ldr r1, [pc, #136] ; (8004d60 <STS_TOF_VL53L0X_Range_Process+0xdc>) + 8004cd8: 4630 mov r0, r6 + 8004cda: f000 fc63 bl 80055a4 <VL53L0X_PerformSingleRangingMeasurement> + 8004cde: 4607 mov r7, r0 + 8004ce0: b9a8 cbnz r0, 8004d0e <STS_TOF_VL53L0X_Range_Process+0x8a> + 8004ce2: 4649 mov r1, r9 + 8004ce4: 4630 mov r0, r6 + 8004ce6: f7ff ffaf bl 8004c48 <sts_tof_vl53l0x_Sensor_SetNewRange> + 8004cea: f899 3018 ldrb.w r3, [r9, #24] + 8004cee: bb33 cbnz r3, 8004d3e <STS_TOF_VL53L0X_Range_Process+0xba> + 8004cf0: f8d6 3178 ldr.w r3, [r6, #376] ; 0x178 + 8004cf4: f84b 3025 str.w r3, [fp, r5, lsl #2] + 8004cf8: 4a1c ldr r2, [pc, #112] ; (8004d6c <STS_TOF_VL53L0X_Range_Process+0xe8>) + 8004cfa: f8d8 3000 ldr.w r3, [r8] + 8004cfe: 40ac lsls r4, r5 + 8004d00: 431c orrs r4, r3 + 8004d02: 7813 ldrb r3, [r2, #0] + 8004d04: f8c8 4000 str.w r4, [r8] + 8004d08: f043 0301 orr.w r3, r3, #1 + 8004d0c: 7013 strb r3, [r2, #0] + 8004d0e: 201e movs r0, #30 + 8004d10: 3501 adds r5, #1 + 8004d12: f7fd ff23 bl 8002b5c <HAL_Delay> + 8004d16: 2d03 cmp r5, #3 + 8004d18: f506 76c8 add.w r6, r6, #400 ; 0x190 + 8004d1c: d1d7 bne.n 8004cce <STS_TOF_VL53L0X_Range_Process+0x4a> + 8004d1e: 4b12 ldr r3, [pc, #72] ; (8004d68 <STS_TOF_VL53L0X_Range_Process+0xe4>) + 8004d20: 681a ldr r2, [r3, #0] + 8004d22: 6859 ldr r1, [r3, #4] + 8004d24: 689b ldr r3, [r3, #8] + 8004d26: 9200 str r2, [sp, #0] + 8004d28: 2200 movs r2, #0 + 8004d2a: e9cd 1301 strd r1, r3, [sp, #4] + 8004d2e: 2001 movs r0, #1 + 8004d30: 4b0f ldr r3, [pc, #60] ; (8004d70 <STS_TOF_VL53L0X_Range_Process+0xec>) + 8004d32: 4611 mov r1, r2 + 8004d34: f00e fd4c bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004d38: b005 add sp, #20 + 8004d3a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8004d3e: e9cd 5400 strd r5, r4, [sp] + 8004d42: 4653 mov r3, sl + 8004d44: 463a mov r2, r7 + 8004d46: 4639 mov r1, r7 + 8004d48: 4620 mov r0, r4 + 8004d4a: f00e fd41 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8004d4e: e7de b.n 8004d0e <STS_TOF_VL53L0X_Range_Process+0x8a> + 8004d50: 20000ee8 .word 0x20000ee8 + 8004d54: 20000ef0 .word 0x20000ef0 + 8004d58: 08014ee1 .word 0x08014ee1 + 8004d5c: 200000bc .word 0x200000bc + 8004d60: 20000ecc .word 0x20000ecc + 8004d64: 08014eff .word 0x08014eff + 8004d68: 20000ef4 .word 0x20000ef4 + 8004d6c: 20000e4d .word 0x20000e4d + 8004d70: 08014f20 .word 0x08014f20 + +08004d74 <VL53L0X_SetDeviceAddress>: + 8004d74: 084a lsrs r2, r1, #1 + 8004d76: 218a movs r1, #138 ; 0x8a + 8004d78: f002 ba96 b.w 80072a8 <VL53L0X_WrByte> + +08004d7c <VL53L0X_SetDeviceMode>: + 8004d7c: 2915 cmp r1, #21 + 8004d7e: d806 bhi.n 8004d8e <VL53L0X_SetDeviceMode+0x12> + 8004d80: 4b04 ldr r3, [pc, #16] ; (8004d94 <VL53L0X_SetDeviceMode+0x18>) + 8004d82: 40cb lsrs r3, r1 + 8004d84: 07db lsls r3, r3, #31 + 8004d86: d502 bpl.n 8004d8e <VL53L0X_SetDeviceMode+0x12> + 8004d88: 7401 strb r1, [r0, #16] + 8004d8a: 2000 movs r0, #0 + 8004d8c: 4770 bx lr + 8004d8e: f06f 0007 mvn.w r0, #7 + 8004d92: 4770 bx lr + 8004d94: 0030000b .word 0x0030000b + +08004d98 <VL53L0X_GetFractionEnable>: + 8004d98: b510 push {r4, lr} + 8004d9a: 460a mov r2, r1 + 8004d9c: 460c mov r4, r1 + 8004d9e: 2109 movs r1, #9 + 8004da0: f002 faa4 bl 80072ec <VL53L0X_RdByte> + 8004da4: b918 cbnz r0, 8004dae <VL53L0X_GetFractionEnable+0x16> + 8004da6: 7823 ldrb r3, [r4, #0] + 8004da8: f003 0301 and.w r3, r3, #1 + 8004dac: 7023 strb r3, [r4, #0] + 8004dae: bd10 pop {r4, pc} + +08004db0 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds>: + 8004db0: f001 be6b b.w 8006a8a <VL53L0X_set_measurement_timing_budget_micro_seconds> + +08004db4 <VL53L0X_SetVcselPulsePeriod>: + 8004db4: f001 bd53 b.w 800685e <VL53L0X_set_vcsel_pulse_period> + +08004db8 <VL53L0X_GetVcselPulsePeriod>: + 8004db8: f001 be4d b.w 8006a56 <VL53L0X_get_vcsel_pulse_period> + +08004dbc <VL53L0X_SetSequenceStepEnable>: + 8004dbc: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8004dbe: 2300 movs r3, #0 + 8004dc0: 460c mov r4, r1 + 8004dc2: 4617 mov r7, r2 + 8004dc4: 2101 movs r1, #1 + 8004dc6: f10d 0207 add.w r2, sp, #7 + 8004dca: 4606 mov r6, r0 + 8004dcc: f88d 3007 strb.w r3, [sp, #7] + 8004dd0: f002 fa8c bl 80072ec <VL53L0X_RdByte> + 8004dd4: 4605 mov r5, r0 + 8004dd6: b9d8 cbnz r0, 8004e10 <VL53L0X_SetSequenceStepEnable+0x54> + 8004dd8: 2f01 cmp r7, #1 + 8004dda: f89d 3007 ldrb.w r3, [sp, #7] + 8004dde: d126 bne.n 8004e2e <VL53L0X_SetSequenceStepEnable+0x72> + 8004de0: 2c04 cmp r4, #4 + 8004de2: d83a bhi.n 8004e5a <VL53L0X_SetSequenceStepEnable+0x9e> + 8004de4: e8df f004 tbb [pc, r4] + 8004de8: 1d1a1703 .word 0x1d1a1703 + 8004dec: 20 .byte 0x20 + 8004ded: 00 .byte 0x00 + 8004dee: f043 0410 orr.w r4, r3, #16 + 8004df2: 42a3 cmp r3, r4 + 8004df4: d00c beq.n 8004e10 <VL53L0X_SetSequenceStepEnable+0x54> + 8004df6: 4622 mov r2, r4 + 8004df8: 2101 movs r1, #1 + 8004dfa: 4630 mov r0, r6 + 8004dfc: f002 fa54 bl 80072a8 <VL53L0X_WrByte> + 8004e00: 4605 mov r5, r0 + 8004e02: b928 cbnz r0, 8004e10 <VL53L0X_SetSequenceStepEnable+0x54> + 8004e04: 6971 ldr r1, [r6, #20] + 8004e06: f886 4130 strb.w r4, [r6, #304] ; 0x130 + 8004e0a: 4630 mov r0, r6 + 8004e0c: f7ff ffd0 bl 8004db0 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds> + 8004e10: 4628 mov r0, r5 + 8004e12: b003 add sp, #12 + 8004e14: bdf0 pop {r4, r5, r6, r7, pc} + 8004e16: f043 0428 orr.w r4, r3, #40 ; 0x28 + 8004e1a: e7ea b.n 8004df2 <VL53L0X_SetSequenceStepEnable+0x36> + 8004e1c: f043 0404 orr.w r4, r3, #4 + 8004e20: e7e7 b.n 8004df2 <VL53L0X_SetSequenceStepEnable+0x36> + 8004e22: f043 0440 orr.w r4, r3, #64 ; 0x40 + 8004e26: e7e4 b.n 8004df2 <VL53L0X_SetSequenceStepEnable+0x36> + 8004e28: f043 0480 orr.w r4, r3, #128 ; 0x80 + 8004e2c: e7e1 b.n 8004df2 <VL53L0X_SetSequenceStepEnable+0x36> + 8004e2e: 2c04 cmp r4, #4 + 8004e30: d813 bhi.n 8004e5a <VL53L0X_SetSequenceStepEnable+0x9e> + 8004e32: e8df f004 tbb [pc, r4] + 8004e36: 0603 .short 0x0603 + 8004e38: 0c09 .short 0x0c09 + 8004e3a: 0f .byte 0x0f + 8004e3b: 00 .byte 0x00 + 8004e3c: f003 04ef and.w r4, r3, #239 ; 0xef + 8004e40: e7d7 b.n 8004df2 <VL53L0X_SetSequenceStepEnable+0x36> + 8004e42: f003 04d7 and.w r4, r3, #215 ; 0xd7 + 8004e46: e7d4 b.n 8004df2 <VL53L0X_SetSequenceStepEnable+0x36> + 8004e48: f003 04fb and.w r4, r3, #251 ; 0xfb + 8004e4c: e7d1 b.n 8004df2 <VL53L0X_SetSequenceStepEnable+0x36> + 8004e4e: f003 04bf and.w r4, r3, #191 ; 0xbf + 8004e52: e7ce b.n 8004df2 <VL53L0X_SetSequenceStepEnable+0x36> + 8004e54: f003 047f and.w r4, r3, #127 ; 0x7f + 8004e58: e7cb b.n 8004df2 <VL53L0X_SetSequenceStepEnable+0x36> + 8004e5a: f06f 0503 mvn.w r5, #3 + 8004e5e: e7d7 b.n 8004e10 <VL53L0X_SetSequenceStepEnable+0x54> + +08004e60 <VL53L0X_GetSequenceStepEnables>: + 8004e60: b513 push {r0, r1, r4, lr} + 8004e62: 2300 movs r3, #0 + 8004e64: 460c mov r4, r1 + 8004e66: f10d 0207 add.w r2, sp, #7 + 8004e6a: 2101 movs r1, #1 + 8004e6c: f88d 3007 strb.w r3, [sp, #7] + 8004e70: f002 fa3c bl 80072ec <VL53L0X_RdByte> + 8004e74: b978 cbnz r0, 8004e96 <VL53L0X_GetSequenceStepEnables+0x36> + 8004e76: f89d 3007 ldrb.w r3, [sp, #7] + 8004e7a: f3c3 1200 ubfx r2, r3, #4, #1 + 8004e7e: 7022 strb r2, [r4, #0] + 8004e80: f3c3 02c0 ubfx r2, r3, #3, #1 + 8004e84: 70a2 strb r2, [r4, #2] + 8004e86: f3c3 0280 ubfx r2, r3, #2, #1 + 8004e8a: 7062 strb r2, [r4, #1] + 8004e8c: f3c3 1280 ubfx r2, r3, #6, #1 + 8004e90: 09db lsrs r3, r3, #7 + 8004e92: 70e2 strb r2, [r4, #3] + 8004e94: 7123 strb r3, [r4, #4] + 8004e96: b002 add sp, #8 + 8004e98: bd10 pop {r4, pc} + +08004e9a <VL53L0X_GetInterMeasurementPeriodMilliSeconds>: + 8004e9a: b537 push {r0, r1, r2, r4, r5, lr} + 8004e9c: 460d mov r5, r1 + 8004e9e: f10d 0202 add.w r2, sp, #2 + 8004ea2: 21f8 movs r1, #248 ; 0xf8 + 8004ea4: 4604 mov r4, r0 + 8004ea6: f002 fa4d bl 8007344 <VL53L0X_RdWord> + 8004eaa: b970 cbnz r0, 8004eca <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x30> + 8004eac: aa01 add r2, sp, #4 + 8004eae: 2104 movs r1, #4 + 8004eb0: 4620 mov r0, r4 + 8004eb2: f002 fa67 bl 8007384 <VL53L0X_RdDWord> + 8004eb6: b940 cbnz r0, 8004eca <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x30> + 8004eb8: f8bd 2002 ldrh.w r2, [sp, #2] + 8004ebc: b11a cbz r2, 8004ec6 <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x2c> + 8004ebe: 9b01 ldr r3, [sp, #4] + 8004ec0: fbb3 f3f2 udiv r3, r3, r2 + 8004ec4: 602b str r3, [r5, #0] + 8004ec6: 682b ldr r3, [r5, #0] + 8004ec8: 61a3 str r3, [r4, #24] + 8004eca: b003 add sp, #12 + 8004ecc: bd30 pop {r4, r5, pc} + +08004ece <VL53L0X_GetXTalkCompensationEnable>: + 8004ece: 7f03 ldrb r3, [r0, #28] + 8004ed0: 700b strb r3, [r1, #0] + 8004ed2: 2000 movs r0, #0 + 8004ed4: 4770 bx lr + +08004ed6 <VL53L0X_GetXTalkCompensationRateMegaCps>: + 8004ed6: b537 push {r0, r1, r2, r4, r5, lr} + 8004ed8: 460d mov r5, r1 + 8004eda: f10d 0206 add.w r2, sp, #6 + 8004ede: 2120 movs r1, #32 + 8004ee0: 4604 mov r4, r0 + 8004ee2: f002 fa2f bl 8007344 <VL53L0X_RdWord> + 8004ee6: b928 cbnz r0, 8004ef4 <VL53L0X_GetXTalkCompensationRateMegaCps+0x1e> + 8004ee8: f8bd 3006 ldrh.w r3, [sp, #6] + 8004eec: b923 cbnz r3, 8004ef8 <VL53L0X_GetXTalkCompensationRateMegaCps+0x22> + 8004eee: 6a23 ldr r3, [r4, #32] + 8004ef0: 602b str r3, [r5, #0] + 8004ef2: 7720 strb r0, [r4, #28] + 8004ef4: b003 add sp, #12 + 8004ef6: bd30 pop {r4, r5, pc} + 8004ef8: 00db lsls r3, r3, #3 + 8004efa: 602b str r3, [r5, #0] + 8004efc: 6223 str r3, [r4, #32] + 8004efe: 2301 movs r3, #1 + 8004f00: 7723 strb r3, [r4, #28] + 8004f02: e7f7 b.n 8004ef4 <VL53L0X_GetXTalkCompensationRateMegaCps+0x1e> + +08004f04 <VL53L0X_SetLimitCheckEnable>: + 8004f04: 2905 cmp r1, #5 + 8004f06: b5f8 push {r3, r4, r5, r6, r7, lr} + 8004f08: 4604 mov r4, r0 + 8004f0a: 460e mov r6, r1 + 8004f0c: 4615 mov r5, r2 + 8004f0e: d835 bhi.n 8004f7c <VL53L0X_SetLimitCheckEnable+0x78> + 8004f10: b162 cbz r2, 8004f2c <VL53L0X_SetLimitCheckEnable+0x28> + 8004f12: eb00 0381 add.w r3, r0, r1, lsl #2 + 8004f16: 2101 movs r1, #1 + 8004f18: 6b5a ldr r2, [r3, #52] ; 0x34 + 8004f1a: 2300 movs r3, #0 + 8004f1c: 1e70 subs r0, r6, #1 + 8004f1e: 2804 cmp r0, #4 + 8004f20: d807 bhi.n 8004f32 <VL53L0X_SetLimitCheckEnable+0x2e> + 8004f22: e8df f000 tbb [pc, r0] + 8004f26: 170e .short 0x170e + 8004f28: 1d1a .short 0x1d1a + 8004f2a: 24 .byte 0x24 + 8004f2b: 00 .byte 0x00 + 8004f2c: 4611 mov r1, r2 + 8004f2e: 2301 movs r3, #1 + 8004f30: e7f4 b.n 8004f1c <VL53L0X_SetLimitCheckEnable+0x18> + 8004f32: f884 1028 strb.w r1, [r4, #40] ; 0x28 + 8004f36: 4434 add r4, r6 + 8004f38: b9e5 cbnz r5, 8004f74 <VL53L0X_SetLimitCheckEnable+0x70> + 8004f3a: f884 5028 strb.w r5, [r4, #40] ; 0x28 + 8004f3e: 2000 movs r0, #0 + 8004f40: e007 b.n 8004f52 <VL53L0X_SetLimitCheckEnable+0x4e> + 8004f42: f3c2 224f ubfx r2, r2, #9, #16 + 8004f46: 2144 movs r1, #68 ; 0x44 + 8004f48: 4620 mov r0, r4 + 8004f4a: f002 f9bd bl 80072c8 <VL53L0X_WrWord> + 8004f4e: 2800 cmp r0, #0 + 8004f50: d0f1 beq.n 8004f36 <VL53L0X_SetLimitCheckEnable+0x32> + 8004f52: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8004f54: f884 102a strb.w r1, [r4, #42] ; 0x2a + 8004f58: e7ed b.n 8004f36 <VL53L0X_SetLimitCheckEnable+0x32> + 8004f5a: f884 102b strb.w r1, [r4, #43] ; 0x2b + 8004f5e: e7ea b.n 8004f36 <VL53L0X_SetLimitCheckEnable+0x32> + 8004f60: 005b lsls r3, r3, #1 + 8004f62: 22fe movs r2, #254 ; 0xfe + 8004f64: 2160 movs r1, #96 ; 0x60 + 8004f66: 4620 mov r0, r4 + 8004f68: f002 f9d5 bl 8007316 <VL53L0X_UpdateByte> + 8004f6c: e7ef b.n 8004f4e <VL53L0X_SetLimitCheckEnable+0x4a> + 8004f6e: 011b lsls r3, r3, #4 + 8004f70: 22ef movs r2, #239 ; 0xef + 8004f72: e7f7 b.n 8004f64 <VL53L0X_SetLimitCheckEnable+0x60> + 8004f74: 2301 movs r3, #1 + 8004f76: f884 3028 strb.w r3, [r4, #40] ; 0x28 + 8004f7a: e7e0 b.n 8004f3e <VL53L0X_SetLimitCheckEnable+0x3a> + 8004f7c: f06f 0003 mvn.w r0, #3 + 8004f80: e7e7 b.n 8004f52 <VL53L0X_SetLimitCheckEnable+0x4e> + +08004f82 <VL53L0X_GetLimitCheckEnable>: + 8004f82: 2905 cmp r1, #5 + 8004f84: bf96 itet ls + 8004f86: 1840 addls r0, r0, r1 + 8004f88: 2300 movhi r3, #0 + 8004f8a: f890 3028 ldrbls.w r3, [r0, #40] ; 0x28 + 8004f8e: 7013 strb r3, [r2, #0] + 8004f90: bf94 ite ls + 8004f92: 2000 movls r0, #0 + 8004f94: f06f 0003 mvnhi.w r0, #3 + 8004f98: 4770 bx lr + +08004f9a <VL53L0X_SetLimitCheckValue>: + 8004f9a: b570 push {r4, r5, r6, lr} + 8004f9c: 1843 adds r3, r0, r1 + 8004f9e: 4604 mov r4, r0 + 8004fa0: f893 0028 ldrb.w r0, [r3, #40] ; 0x28 + 8004fa4: 460e mov r6, r1 + 8004fa6: 4615 mov r5, r2 + 8004fa8: b918 cbnz r0, 8004fb2 <VL53L0X_SetLimitCheckValue+0x18> + 8004faa: eb04 0681 add.w r6, r4, r1, lsl #2 + 8004fae: 6372 str r2, [r6, #52] ; 0x34 + 8004fb0: bd70 pop {r4, r5, r6, pc} + 8004fb2: 2905 cmp r1, #5 + 8004fb4: d81b bhi.n 8004fee <VL53L0X_SetLimitCheckValue+0x54> + 8004fb6: e8df f001 tbb [pc, r1] + 8004fba: 0903 .short 0x0903 + 8004fbc: 16161412 .word 0x16161412 + 8004fc0: 6362 str r2, [r4, #52] ; 0x34 + 8004fc2: eb04 0486 add.w r4, r4, r6, lsl #2 + 8004fc6: 2000 movs r0, #0 + 8004fc8: 6365 str r5, [r4, #52] ; 0x34 + 8004fca: e7f1 b.n 8004fb0 <VL53L0X_SetLimitCheckValue+0x16> + 8004fcc: f3c2 224f ubfx r2, r2, #9, #16 + 8004fd0: 2144 movs r1, #68 ; 0x44 + 8004fd2: 4620 mov r0, r4 + 8004fd4: f002 f978 bl 80072c8 <VL53L0X_WrWord> + 8004fd8: 2800 cmp r0, #0 + 8004fda: d1e9 bne.n 8004fb0 <VL53L0X_SetLimitCheckValue+0x16> + 8004fdc: e7f1 b.n 8004fc2 <VL53L0X_SetLimitCheckValue+0x28> + 8004fde: 63e2 str r2, [r4, #60] ; 0x3c + 8004fe0: e7ef b.n 8004fc2 <VL53L0X_SetLimitCheckValue+0x28> + 8004fe2: 6422 str r2, [r4, #64] ; 0x40 + 8004fe4: e7ed b.n 8004fc2 <VL53L0X_SetLimitCheckValue+0x28> + 8004fe6: f3c2 224f ubfx r2, r2, #9, #16 + 8004fea: 2164 movs r1, #100 ; 0x64 + 8004fec: e7f1 b.n 8004fd2 <VL53L0X_SetLimitCheckValue+0x38> + 8004fee: f06f 0003 mvn.w r0, #3 + 8004ff2: e7dd b.n 8004fb0 <VL53L0X_SetLimitCheckValue+0x16> + +08004ff4 <VL53L0X_GetLimitCheckValue>: + 8004ff4: b537 push {r0, r1, r2, r4, r5, lr} + 8004ff6: 4604 mov r4, r0 + 8004ff8: 4615 mov r5, r2 + 8004ffa: 2905 cmp r1, #5 + 8004ffc: d82c bhi.n 8005058 <VL53L0X_GetLimitCheckValue+0x64> + 8004ffe: e8df f001 tbb [pc, r1] + 8005002: 0703 .short 0x0703 + 8005004: 1b1b1917 .word 0x1b1b1917 + 8005008: 6b43 ldr r3, [r0, #52] ; 0x34 + 800500a: 602b str r3, [r5, #0] + 800500c: 2000 movs r0, #0 + 800500e: e021 b.n 8005054 <VL53L0X_GetLimitCheckValue+0x60> + 8005010: f10d 0206 add.w r2, sp, #6 + 8005014: 2144 movs r1, #68 ; 0x44 + 8005016: f002 f995 bl 8007344 <VL53L0X_RdWord> + 800501a: b9d8 cbnz r0, 8005054 <VL53L0X_GetLimitCheckValue+0x60> + 800501c: f8bd 2006 ldrh.w r2, [sp, #6] + 8005020: 0253 lsls r3, r2, #9 + 8005022: b19a cbz r2, 800504c <VL53L0X_GetLimitCheckValue+0x58> + 8005024: 602b str r3, [r5, #0] + 8005026: 63a3 str r3, [r4, #56] ; 0x38 + 8005028: 2301 movs r3, #1 + 800502a: f884 3029 strb.w r3, [r4, #41] ; 0x29 + 800502e: e011 b.n 8005054 <VL53L0X_GetLimitCheckValue+0x60> + 8005030: 6bc3 ldr r3, [r0, #60] ; 0x3c + 8005032: e7ea b.n 800500a <VL53L0X_GetLimitCheckValue+0x16> + 8005034: 6c03 ldr r3, [r0, #64] ; 0x40 + 8005036: e7e8 b.n 800500a <VL53L0X_GetLimitCheckValue+0x16> + 8005038: f10d 0206 add.w r2, sp, #6 + 800503c: 2164 movs r1, #100 ; 0x64 + 800503e: f002 f981 bl 8007344 <VL53L0X_RdWord> + 8005042: b938 cbnz r0, 8005054 <VL53L0X_GetLimitCheckValue+0x60> + 8005044: f8bd 3006 ldrh.w r3, [sp, #6] + 8005048: 025b lsls r3, r3, #9 + 800504a: e7de b.n 800500a <VL53L0X_GetLimitCheckValue+0x16> + 800504c: 6ba3 ldr r3, [r4, #56] ; 0x38 + 800504e: 602b str r3, [r5, #0] + 8005050: f884 0029 strb.w r0, [r4, #41] ; 0x29 + 8005054: b003 add sp, #12 + 8005056: bd30 pop {r4, r5, pc} + 8005058: f06f 0003 mvn.w r0, #3 + 800505c: e7fa b.n 8005054 <VL53L0X_GetLimitCheckValue+0x60> + +0800505e <VL53L0X_GetWrapAroundCheckEnable>: + 800505e: b537 push {r0, r1, r2, r4, r5, lr} + 8005060: 460d mov r5, r1 + 8005062: f10d 0207 add.w r2, sp, #7 + 8005066: 2101 movs r1, #1 + 8005068: 4604 mov r4, r0 + 800506a: f002 f93f bl 80072ec <VL53L0X_RdByte> + 800506e: b938 cbnz r0, 8005080 <VL53L0X_GetWrapAroundCheckEnable+0x22> + 8005070: f89d 3007 ldrb.w r3, [sp, #7] + 8005074: f884 3130 strb.w r3, [r4, #304] ; 0x130 + 8005078: 09db lsrs r3, r3, #7 + 800507a: 702b strb r3, [r5, #0] + 800507c: f884 304c strb.w r3, [r4, #76] ; 0x4c + 8005080: b003 add sp, #12 + 8005082: bd30 pop {r4, r5, pc} + +08005084 <VL53L0X_GetDeviceParameters>: + 8005084: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8005088: 7c03 ldrb r3, [r0, #16] + 800508a: 460c mov r4, r1 + 800508c: f801 3b08 strb.w r3, [r1], #8 + 8005090: 4605 mov r5, r0 + 8005092: f7ff ff02 bl 8004e9a <VL53L0X_GetInterMeasurementPeriodMilliSeconds> + 8005096: bb40 cbnz r0, 80050ea <VL53L0X_GetDeviceParameters+0x66> + 8005098: 7320 strb r0, [r4, #12] + 800509a: f104 0110 add.w r1, r4, #16 + 800509e: 4628 mov r0, r5 + 80050a0: f7ff ff19 bl 8004ed6 <VL53L0X_GetXTalkCompensationRateMegaCps> + 80050a4: bb08 cbnz r0, 80050ea <VL53L0X_GetDeviceParameters+0x66> + 80050a6: f104 0114 add.w r1, r4, #20 + 80050aa: 4628 mov r0, r5 + 80050ac: f000 fc21 bl 80058f2 <VL53L0X_get_offset_calibration_data_micro_meter> + 80050b0: b9d8 cbnz r0, 80050ea <VL53L0X_GetDeviceParameters+0x66> + 80050b2: f104 0724 add.w r7, r4, #36 ; 0x24 + 80050b6: f105 0927 add.w r9, r5, #39 ; 0x27 + 80050ba: f104 0817 add.w r8, r4, #23 + 80050be: 4606 mov r6, r0 + 80050c0: 463a mov r2, r7 + 80050c2: b2b1 uxth r1, r6 + 80050c4: 4628 mov r0, r5 + 80050c6: f7ff ff95 bl 8004ff4 <VL53L0X_GetLimitCheckValue> + 80050ca: b970 cbnz r0, 80050ea <VL53L0X_GetDeviceParameters+0x66> + 80050cc: 3601 adds r6, #1 + 80050ce: f819 3f01 ldrb.w r3, [r9, #1]! + 80050d2: f808 3f01 strb.w r3, [r8, #1]! + 80050d6: 2e06 cmp r6, #6 + 80050d8: f107 0704 add.w r7, r7, #4 + 80050dc: d1f0 bne.n 80050c0 <VL53L0X_GetDeviceParameters+0x3c> + 80050de: f104 013c add.w r1, r4, #60 ; 0x3c + 80050e2: 4628 mov r0, r5 + 80050e4: f7ff ffbb bl 800505e <VL53L0X_GetWrapAroundCheckEnable> + 80050e8: b108 cbz r0, 80050ee <VL53L0X_GetDeviceParameters+0x6a> + 80050ea: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 80050ee: 1d21 adds r1, r4, #4 + 80050f0: 4628 mov r0, r5 + 80050f2: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 80050f6: f001 bd30 b.w 8006b5a <VL53L0X_get_measurement_timing_budget_micro_seconds> + ... + +080050fc <VL53L0X_DataInit>: + 80050fc: b5f0 push {r4, r5, r6, r7, lr} + 80050fe: 2200 movs r2, #0 + 8005100: 4605 mov r5, r0 + 8005102: b093 sub sp, #76 ; 0x4c + 8005104: 2188 movs r1, #136 ; 0x88 + 8005106: f002 f8cf bl 80072a8 <VL53L0X_WrByte> + 800510a: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800510e: f8a5 2152 strh.w r2, [r5, #338] ; 0x152 + 8005112: f44f 72c8 mov.w r2, #400 ; 0x190 + 8005116: f8a5 2154 strh.w r2, [r5, #340] ; 0x154 + 800511a: 4a4c ldr r2, [pc, #304] ; (800524c <VL53L0X_DataInit+0x150>) + 800511c: f8c5 2158 str.w r2, [r5, #344] ; 0x158 + 8005120: 2300 movs r3, #0 + 8005122: 4a4b ldr r2, [pc, #300] ; (8005250 <VL53L0X_DataInit+0x154>) + 8005124: f885 30f0 strb.w r3, [r5, #240] ; 0xf0 + 8005128: f8c5 20d4 str.w r2, [r5, #212] ; 0xd4 + 800512c: 622b str r3, [r5, #32] + 800512e: a902 add r1, sp, #8 + 8005130: 4628 mov r0, r5 + 8005132: f7ff ffa7 bl 8005084 <VL53L0X_GetDeviceParameters> + 8005136: 4604 mov r4, r0 + 8005138: b970 cbnz r0, 8005158 <VL53L0X_DataInit+0x5c> + 800513a: f8ad 0008 strh.w r0, [sp, #8] + 800513e: ae02 add r6, sp, #8 + 8005140: ce0f ldmia r6!, {r0, r1, r2, r3} + 8005142: f105 0710 add.w r7, r5, #16 + 8005146: c70f stmia r7!, {r0, r1, r2, r3} + 8005148: ce0f ldmia r6!, {r0, r1, r2, r3} + 800514a: c70f stmia r7!, {r0, r1, r2, r3} + 800514c: ce0f ldmia r6!, {r0, r1, r2, r3} + 800514e: c70f stmia r7!, {r0, r1, r2, r3} + 8005150: e896 000f ldmia.w r6, {r0, r1, r2, r3} + 8005154: e887 000f stmia.w r7, {r0, r1, r2, r3} + 8005158: 4b3e ldr r3, [pc, #248] ; (8005254 <VL53L0X_DataInit+0x158>) + 800515a: f8c5 3134 str.w r3, [r5, #308] ; 0x134 + 800515e: f44f 73fa mov.w r3, #500 ; 0x1f4 + 8005162: 2601 movs r6, #1 + 8005164: f8a5 3138 strh.w r3, [r5, #312] ; 0x138 + 8005168: f44f 6320 mov.w r3, #2560 ; 0xa00 + 800516c: f8a5 313c strh.w r3, [r5, #316] ; 0x13c + 8005170: 4632 mov r2, r6 + 8005172: 2180 movs r1, #128 ; 0x80 + 8005174: f885 6150 strb.w r6, [r5, #336] ; 0x150 + 8005178: 4628 mov r0, r5 + 800517a: f002 f895 bl 80072a8 <VL53L0X_WrByte> + 800517e: 4632 mov r2, r6 + 8005180: 4607 mov r7, r0 + 8005182: 21ff movs r1, #255 ; 0xff + 8005184: 4628 mov r0, r5 + 8005186: f002 f88f bl 80072a8 <VL53L0X_WrByte> + 800518a: 2200 movs r2, #0 + 800518c: 4611 mov r1, r2 + 800518e: 4307 orrs r7, r0 + 8005190: 4628 mov r0, r5 + 8005192: f002 f889 bl 80072a8 <VL53L0X_WrByte> + 8005196: 433c orrs r4, r7 + 8005198: b264 sxtb r4, r4 + 800519a: 4304 orrs r4, r0 + 800519c: f10d 0207 add.w r2, sp, #7 + 80051a0: 2191 movs r1, #145 ; 0x91 + 80051a2: 4628 mov r0, r5 + 80051a4: f002 f8a2 bl 80072ec <VL53L0X_RdByte> + 80051a8: b264 sxtb r4, r4 + 80051aa: f89d 3007 ldrb.w r3, [sp, #7] + 80051ae: f885 313a strb.w r3, [r5, #314] ; 0x13a + 80051b2: 4304 orrs r4, r0 + 80051b4: 4632 mov r2, r6 + 80051b6: 2100 movs r1, #0 + 80051b8: 4628 mov r0, r5 + 80051ba: f002 f875 bl 80072a8 <VL53L0X_WrByte> + 80051be: b264 sxtb r4, r4 + 80051c0: 4304 orrs r4, r0 + 80051c2: 2200 movs r2, #0 + 80051c4: 21ff movs r1, #255 ; 0xff + 80051c6: 4628 mov r0, r5 + 80051c8: f002 f86e bl 80072a8 <VL53L0X_WrByte> + 80051cc: b264 sxtb r4, r4 + 80051ce: 4304 orrs r4, r0 + 80051d0: 2200 movs r2, #0 + 80051d2: 2180 movs r1, #128 ; 0x80 + 80051d4: 4628 mov r0, r5 + 80051d6: f002 f867 bl 80072a8 <VL53L0X_WrByte> + 80051da: b264 sxtb r4, r4 + 80051dc: 4320 orrs r0, r4 + 80051de: b240 sxtb r0, r0 + 80051e0: 2400 movs r4, #0 + 80051e2: bb88 cbnz r0, 8005248 <VL53L0X_DataInit+0x14c> + 80051e4: b2a1 uxth r1, r4 + 80051e6: 2201 movs r2, #1 + 80051e8: 4628 mov r0, r5 + 80051ea: 3401 adds r4, #1 + 80051ec: f7ff fe8a bl 8004f04 <VL53L0X_SetLimitCheckEnable> + 80051f0: 2c06 cmp r4, #6 + 80051f2: d1f6 bne.n 80051e2 <VL53L0X_DataInit+0xe6> + 80051f4: bb40 cbnz r0, 8005248 <VL53L0X_DataInit+0x14c> + 80051f6: 4604 mov r4, r0 + 80051f8: 8568 strh r0, [r5, #42] ; 0x2a + 80051fa: 4602 mov r2, r0 + 80051fc: 2104 movs r1, #4 + 80051fe: 4628 mov r0, r5 + 8005200: f7ff fe80 bl 8004f04 <VL53L0X_SetLimitCheckEnable> + 8005204: bb00 cbnz r0, 8005248 <VL53L0X_DataInit+0x14c> + 8005206: 4602 mov r2, r0 + 8005208: 2105 movs r1, #5 + 800520a: 4628 mov r0, r5 + 800520c: f7ff fe7a bl 8004f04 <VL53L0X_SetLimitCheckEnable> + 8005210: b9d0 cbnz r0, 8005248 <VL53L0X_DataInit+0x14c> + 8005212: f44f 1390 mov.w r3, #1179648 ; 0x120000 + 8005216: 636b str r3, [r5, #52] ; 0x34 + 8005218: f44f 4280 mov.w r2, #16384 ; 0x4000 + 800521c: 2101 movs r1, #1 + 800521e: 4628 mov r0, r5 + 8005220: f7ff febb bl 8004f9a <VL53L0X_SetLimitCheckValue> + 8005224: b980 cbnz r0, 8005248 <VL53L0X_DataInit+0x14c> + 8005226: f44f 130c mov.w r3, #2293760 ; 0x230000 + 800522a: 22ff movs r2, #255 ; 0xff + 800522c: e9c5 300f strd r3, r0, [r5, #60] ; 0x3c + 8005230: f885 2130 strb.w r2, [r5, #304] ; 0x130 + 8005234: 2101 movs r1, #1 + 8005236: 4628 mov r0, r5 + 8005238: f002 f836 bl 80072a8 <VL53L0X_WrByte> + 800523c: 2301 movs r3, #1 + 800523e: f885 3132 strb.w r3, [r5, #306] ; 0x132 + 8005242: b908 cbnz r0, 8005248 <VL53L0X_DataInit+0x14c> + 8005244: f885 4115 strb.w r4, [r5, #277] ; 0x115 + 8005248: b013 add sp, #76 ; 0x4c + 800524a: bdf0 pop {r4, r5, r6, r7, pc} + 800524c: 00016b85 .word 0x00016b85 + 8005250: 000970a4 .word 0x000970a4 + 8005254: 03840064 .word 0x03840064 + +08005258 <VL53L0X_PerformRefCalibration>: + 8005258: 2301 movs r3, #1 + 800525a: f000 bd79 b.w 8005d50 <VL53L0X_perform_ref_calibration> + +0800525e <VL53L0X_GetRangingMeasurementData>: + 800525e: e92d 42f0 stmdb sp!, {r4, r5, r6, r7, r9, lr} + 8005262: b08e sub sp, #56 ; 0x38 + 8005264: 460c mov r4, r1 + 8005266: 230c movs r3, #12 + 8005268: aa04 add r2, sp, #16 + 800526a: 2114 movs r1, #20 + 800526c: 4605 mov r5, r0 + 800526e: f002 f805 bl 800727c <VL53L0X_ReadMulti> + 8005272: 4684 mov ip, r0 + 8005274: 2800 cmp r0, #0 + 8005276: d16c bne.n 8005352 <VL53L0X_GetRangingMeasurementData+0xf4> + 8005278: f89d 301a ldrb.w r3, [sp, #26] + 800527c: f89d 601b ldrb.w r6, [sp, #27] + 8005280: f89d 2017 ldrb.w r2, [sp, #23] + 8005284: f89d 1018 ldrb.w r1, [sp, #24] + 8005288: 75a0 strb r0, [r4, #22] + 800528a: eb06 2603 add.w r6, r6, r3, lsl #8 + 800528e: f89d 3016 ldrb.w r3, [sp, #22] + 8005292: 6020 str r0, [r4, #0] + 8005294: eb02 2203 add.w r2, r2, r3, lsl #8 + 8005298: f89d 3019 ldrb.w r3, [sp, #25] + 800529c: 6060 str r0, [r4, #4] + 800529e: eb03 2301 add.w r3, r3, r1, lsl #8 + 80052a2: b29b uxth r3, r3 + 80052a4: 025b lsls r3, r3, #9 + 80052a6: f89d 1012 ldrb.w r1, [sp, #18] + 80052aa: 6123 str r3, [r4, #16] + 80052ac: f89d 3013 ldrb.w r3, [sp, #19] + 80052b0: f8b5 0152 ldrh.w r0, [r5, #338] ; 0x152 + 80052b4: eb03 2301 add.w r3, r3, r1, lsl #8 + 80052b8: b292 uxth r2, r2 + 80052ba: 0252 lsls r2, r2, #9 + 80052bc: b29b uxth r3, r3 + 80052be: 60e2 str r2, [r4, #12] + 80052c0: 82a3 strh r3, [r4, #20] + 80052c2: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8 + 80052c6: f89d 1010 ldrb.w r1, [sp, #16] + 80052ca: f895 7131 ldrb.w r7, [r5, #305] ; 0x131 + 80052ce: b2b6 uxth r6, r6 + 80052d0: d00a beq.n 80052e8 <VL53L0X_GetRangingMeasurementData+0x8a> + 80052d2: 4370 muls r0, r6 + 80052d4: f500 70fa add.w r0, r0, #500 ; 0x1f4 + 80052d8: f44f 767a mov.w r6, #1000 ; 0x3e8 + 80052dc: fbb0 f0f6 udiv r0, r0, r6 + 80052e0: 7f2e ldrb r6, [r5, #28] + 80052e2: 2e00 cmp r6, #0 + 80052e4: d139 bne.n 800535a <VL53L0X_GetRangingMeasurementData+0xfc> + 80052e6: b286 uxth r6, r0 + 80052e8: 2f00 cmp r7, #0 + 80052ea: d040 beq.n 800536e <VL53L0X_GetRangingMeasurementData+0x110> + 80052ec: 01b0 lsls r0, r6, #6 + 80052ee: b2c0 uxtb r0, r0 + 80052f0: 08b6 lsrs r6, r6, #2 + 80052f2: 75e0 strb r0, [r4, #23] + 80052f4: f10d 000f add.w r0, sp, #15 + 80052f8: 8126 strh r6, [r4, #8] + 80052fa: e9cd 4000 strd r4, r0, [sp] + 80052fe: 4628 mov r0, r5 + 8005300: f001 fe86 bl 8007010 <VL53L0X_get_pal_range_status> + 8005304: 4684 mov ip, r0 + 8005306: bb20 cbnz r0, 8005352 <VL53L0X_GetRangingMeasurementData+0xf4> + 8005308: f89d e00f ldrb.w lr, [sp, #15] + 800530c: f884 e018 strb.w lr, [r4, #24] + 8005310: f105 0650 add.w r6, r5, #80 ; 0x50 + 8005314: ce0f ldmia r6!, {r0, r1, r2, r3} + 8005316: af07 add r7, sp, #28 + 8005318: c70f stmia r7!, {r0, r1, r2, r3} + 800531a: e896 0007 ldmia.w r6, {r0, r1, r2} + 800531e: 7de3 ldrb r3, [r4, #23] + 8005320: e887 0007 stmia.w r7, {r0, r1, r2} + 8005324: e9d4 0103 ldrd r0, r1, [r4, #12] + 8005328: 8aa2 ldrh r2, [r4, #20] + 800532a: f8ad 2030 strh.w r2, [sp, #48] ; 0x30 + 800532e: e9d4 4901 ldrd r4, r9, [r4, #4] + 8005332: e9cd 010a strd r0, r1, [sp, #40] ; 0x28 + 8005336: e9cd 4908 strd r4, r9, [sp, #32] + 800533a: ac07 add r4, sp, #28 + 800533c: f88d 3033 strb.w r3, [sp, #51] ; 0x33 + 8005340: f88d e034 strb.w lr, [sp, #52] ; 0x34 + 8005344: cc0f ldmia r4!, {r0, r1, r2, r3} + 8005346: 3550 adds r5, #80 ; 0x50 + 8005348: c50f stmia r5!, {r0, r1, r2, r3} + 800534a: e897 0007 ldmia.w r7, {r0, r1, r2} + 800534e: e886 0007 stmia.w r6, {r0, r1, r2} + 8005352: 4660 mov r0, ip + 8005354: b00e add sp, #56 ; 0x38 + 8005356: e8bd 82f0 ldmia.w sp!, {r4, r5, r6, r7, r9, pc} + 800535a: 8c2e ldrh r6, [r5, #32] + 800535c: 435e muls r6, r3 + 800535e: ebb2 2f26 cmp.w r2, r6, asr #8 + 8005362: ea4f 2c26 mov.w ip, r6, asr #8 + 8005366: d104 bne.n 8005372 <VL53L0X_GetRangingMeasurementData+0x114> + 8005368: b957 cbnz r7, 8005380 <VL53L0X_GetRangingMeasurementData+0x122> + 800536a: f648 26e0 movw r6, #35552 ; 0x8ae0 + 800536e: 2000 movs r0, #0 + 8005370: e7bf b.n 80052f2 <VL53L0X_GetRangingMeasurementData+0x94> + 8005372: b280 uxth r0, r0 + 8005374: 4350 muls r0, r2 + 8005376: eba2 060c sub.w r6, r2, ip + 800537a: fbb0 f0f6 udiv r0, r0, r6 + 800537e: e7b2 b.n 80052e6 <VL53L0X_GetRangingMeasurementData+0x88> + 8005380: f242 26b8 movw r6, #8888 ; 0x22b8 + 8005384: e7b2 b.n 80052ec <VL53L0X_GetRangingMeasurementData+0x8e> + ... + +08005388 <VL53L0X_GetInterruptThresholds>: + 8005388: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 800538a: 4617 mov r7, r2 + 800538c: 210e movs r1, #14 + 800538e: f10d 0206 add.w r2, sp, #6 + 8005392: 461d mov r5, r3 + 8005394: 4c0b ldr r4, [pc, #44] ; (80053c4 <VL53L0X_GetInterruptThresholds+0x3c>) + 8005396: 4606 mov r6, r0 + 8005398: f001 ffd4 bl 8007344 <VL53L0X_RdWord> + 800539c: f8bd 3006 ldrh.w r3, [sp, #6] + 80053a0: ea04 4343 and.w r3, r4, r3, lsl #17 + 80053a4: 603b str r3, [r7, #0] + 80053a6: b950 cbnz r0, 80053be <VL53L0X_GetInterruptThresholds+0x36> + 80053a8: f10d 0206 add.w r2, sp, #6 + 80053ac: 210c movs r1, #12 + 80053ae: 4630 mov r0, r6 + 80053b0: f001 ffc8 bl 8007344 <VL53L0X_RdWord> + 80053b4: f8bd 3006 ldrh.w r3, [sp, #6] + 80053b8: ea04 4443 and.w r4, r4, r3, lsl #17 + 80053bc: 602c str r4, [r5, #0] + 80053be: b003 add sp, #12 + 80053c0: bdf0 pop {r4, r5, r6, r7, pc} + 80053c2: bf00 nop + 80053c4: 1ffe0000 .word 0x1ffe0000 + +080053c8 <VL53L0X_CheckAndLoadInterruptSettings>: + 80053c8: b573 push {r0, r1, r4, r5, r6, lr} + 80053ca: f890 30da ldrb.w r3, [r0, #218] ; 0xda + 80053ce: 3b01 subs r3, #1 + 80053d0: 2b02 cmp r3, #2 + 80053d2: 4606 mov r6, r0 + 80053d4: 460c mov r4, r1 + 80053d6: d834 bhi.n 8005442 <VL53L0X_CheckAndLoadInterruptSettings+0x7a> + 80053d8: ab01 add r3, sp, #4 + 80053da: 466a mov r2, sp + 80053dc: 2101 movs r1, #1 + 80053de: f7ff ffd3 bl 8005388 <VL53L0X_GetInterruptThresholds> + 80053e2: 9b00 ldr r3, [sp, #0] + 80053e4: f5b3 0f7f cmp.w r3, #16711680 ; 0xff0000 + 80053e8: 4605 mov r5, r0 + 80053ea: d803 bhi.n 80053f4 <VL53L0X_CheckAndLoadInterruptSettings+0x2c> + 80053ec: 9b01 ldr r3, [sp, #4] + 80053ee: f5b3 0f7f cmp.w r3, #16711680 ; 0xff0000 + 80053f2: d923 bls.n 800543c <VL53L0X_CheckAndLoadInterruptSettings+0x74> + 80053f4: bb15 cbnz r5, 800543c <VL53L0X_CheckAndLoadInterruptSettings+0x74> + 80053f6: b134 cbz r4, 8005406 <VL53L0X_CheckAndLoadInterruptSettings+0x3e> + 80053f8: 4913 ldr r1, [pc, #76] ; (8005448 <VL53L0X_CheckAndLoadInterruptSettings+0x80>) + 80053fa: 4630 mov r0, r6 + 80053fc: b002 add sp, #8 + 80053fe: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8005402: f001 bc0f b.w 8006c24 <VL53L0X_load_tuning_settings> + 8005406: 2204 movs r2, #4 + 8005408: 21ff movs r1, #255 ; 0xff + 800540a: 4630 mov r0, r6 + 800540c: f001 ff4c bl 80072a8 <VL53L0X_WrByte> + 8005410: 462a mov r2, r5 + 8005412: 4604 mov r4, r0 + 8005414: 2170 movs r1, #112 ; 0x70 + 8005416: 4630 mov r0, r6 + 8005418: f001 ff46 bl 80072a8 <VL53L0X_WrByte> + 800541c: 462a mov r2, r5 + 800541e: 4304 orrs r4, r0 + 8005420: 21ff movs r1, #255 ; 0xff + 8005422: 4630 mov r0, r6 + 8005424: f001 ff40 bl 80072a8 <VL53L0X_WrByte> + 8005428: b264 sxtb r4, r4 + 800542a: 4304 orrs r4, r0 + 800542c: 462a mov r2, r5 + 800542e: 2180 movs r1, #128 ; 0x80 + 8005430: 4630 mov r0, r6 + 8005432: f001 ff39 bl 80072a8 <VL53L0X_WrByte> + 8005436: b264 sxtb r4, r4 + 8005438: 4304 orrs r4, r0 + 800543a: b265 sxtb r5, r4 + 800543c: 4628 mov r0, r5 + 800543e: b002 add sp, #8 + 8005440: bd70 pop {r4, r5, r6, pc} + 8005442: 2500 movs r5, #0 + 8005444: e7fa b.n 800543c <VL53L0X_CheckAndLoadInterruptSettings+0x74> + 8005446: bf00 nop + 8005448: 2000065f .word 0x2000065f + +0800544c <VL53L0X_StartMeasurement>: + 800544c: b537 push {r0, r1, r2, r4, r5, lr} + 800544e: 4604 mov r4, r0 + 8005450: 2201 movs r2, #1 + 8005452: 2180 movs r1, #128 ; 0x80 + 8005454: 7c05 ldrb r5, [r0, #16] + 8005456: f001 ff27 bl 80072a8 <VL53L0X_WrByte> + 800545a: 2201 movs r2, #1 + 800545c: 21ff movs r1, #255 ; 0xff + 800545e: 4620 mov r0, r4 + 8005460: f001 ff22 bl 80072a8 <VL53L0X_WrByte> + 8005464: 2200 movs r2, #0 + 8005466: 4611 mov r1, r2 + 8005468: 4620 mov r0, r4 + 800546a: f001 ff1d bl 80072a8 <VL53L0X_WrByte> + 800546e: f894 213a ldrb.w r2, [r4, #314] ; 0x13a + 8005472: 2191 movs r1, #145 ; 0x91 + 8005474: 4620 mov r0, r4 + 8005476: f001 ff17 bl 80072a8 <VL53L0X_WrByte> + 800547a: 2201 movs r2, #1 + 800547c: 2100 movs r1, #0 + 800547e: 4620 mov r0, r4 + 8005480: f001 ff12 bl 80072a8 <VL53L0X_WrByte> + 8005484: 2200 movs r2, #0 + 8005486: 21ff movs r1, #255 ; 0xff + 8005488: 4620 mov r0, r4 + 800548a: f001 ff0d bl 80072a8 <VL53L0X_WrByte> + 800548e: 2200 movs r2, #0 + 8005490: 2180 movs r1, #128 ; 0x80 + 8005492: 4620 mov r0, r4 + 8005494: f001 ff08 bl 80072a8 <VL53L0X_WrByte> + 8005498: 2d01 cmp r5, #1 + 800549a: d029 beq.n 80054f0 <VL53L0X_StartMeasurement+0xa4> + 800549c: 2d03 cmp r5, #3 + 800549e: d037 beq.n 8005510 <VL53L0X_StartMeasurement+0xc4> + 80054a0: 2d00 cmp r5, #0 + 80054a2: d13c bne.n 800551e <VL53L0X_StartMeasurement+0xd2> + 80054a4: 2201 movs r2, #1 + 80054a6: 4629 mov r1, r5 + 80054a8: 4620 mov r0, r4 + 80054aa: f001 fefd bl 80072a8 <VL53L0X_WrByte> + 80054ae: 2301 movs r3, #1 + 80054b0: f88d 3007 strb.w r3, [sp, #7] + 80054b4: b1a0 cbz r0, 80054e0 <VL53L0X_StartMeasurement+0x94> + 80054b6: b003 add sp, #12 + 80054b8: bd30 pop {r4, r5, pc} + 80054ba: 4601 mov r1, r0 + 80054bc: f10d 0207 add.w r2, sp, #7 + 80054c0: 4620 mov r0, r4 + 80054c2: f001 ff13 bl 80072ec <VL53L0X_RdByte> + 80054c6: f89d 3007 ldrb.w r3, [sp, #7] + 80054ca: 07db lsls r3, r3, #31 + 80054cc: f105 0501 add.w r5, r5, #1 + 80054d0: d508 bpl.n 80054e4 <VL53L0X_StartMeasurement+0x98> + 80054d2: b938 cbnz r0, 80054e4 <VL53L0X_StartMeasurement+0x98> + 80054d4: f5b5 6ffa cmp.w r5, #2000 ; 0x7d0 + 80054d8: d1ef bne.n 80054ba <VL53L0X_StartMeasurement+0x6e> + 80054da: f06f 0006 mvn.w r0, #6 + 80054de: e7ea b.n 80054b6 <VL53L0X_StartMeasurement+0x6a> + 80054e0: 4605 mov r5, r0 + 80054e2: e7f0 b.n 80054c6 <VL53L0X_StartMeasurement+0x7a> + 80054e4: f5b5 6ffa cmp.w r5, #2000 ; 0x7d0 + 80054e8: bf08 it eq + 80054ea: f06f 0006 mvneq.w r0, #6 + 80054ee: e7e2 b.n 80054b6 <VL53L0X_StartMeasurement+0x6a> + 80054f0: b918 cbnz r0, 80054fa <VL53L0X_StartMeasurement+0xae> + 80054f2: 4629 mov r1, r5 + 80054f4: 4620 mov r0, r4 + 80054f6: f7ff ff67 bl 80053c8 <VL53L0X_CheckAndLoadInterruptSettings> + 80054fa: 2202 movs r2, #2 + 80054fc: 2100 movs r1, #0 + 80054fe: 4620 mov r0, r4 + 8005500: f001 fed2 bl 80072a8 <VL53L0X_WrByte> + 8005504: 2800 cmp r0, #0 + 8005506: d1d6 bne.n 80054b6 <VL53L0X_StartMeasurement+0x6a> + 8005508: 2304 movs r3, #4 + 800550a: f884 3132 strb.w r3, [r4, #306] ; 0x132 + 800550e: e7d2 b.n 80054b6 <VL53L0X_StartMeasurement+0x6a> + 8005510: b918 cbnz r0, 800551a <VL53L0X_StartMeasurement+0xce> + 8005512: 2101 movs r1, #1 + 8005514: 4620 mov r0, r4 + 8005516: f7ff ff57 bl 80053c8 <VL53L0X_CheckAndLoadInterruptSettings> + 800551a: 2204 movs r2, #4 + 800551c: e7ee b.n 80054fc <VL53L0X_StartMeasurement+0xb0> + 800551e: f06f 0007 mvn.w r0, #7 + 8005522: e7c8 b.n 80054b6 <VL53L0X_StartMeasurement+0x6a> + +08005524 <VL53L0X_PerformSingleMeasurement>: + 8005524: b538 push {r3, r4, r5, lr} + 8005526: 7c05 ldrb r5, [r0, #16] + 8005528: 4604 mov r4, r0 + 800552a: b125 cbz r5, 8005536 <VL53L0X_PerformSingleMeasurement+0x12> + 800552c: 4620 mov r0, r4 + 800552e: f000 fd54 bl 8005fda <VL53L0X_measurement_poll_for_completion> + 8005532: b128 cbz r0, 8005540 <VL53L0X_PerformSingleMeasurement+0x1c> + 8005534: bd38 pop {r3, r4, r5, pc} + 8005536: f7ff ff89 bl 800544c <VL53L0X_StartMeasurement> + 800553a: 2800 cmp r0, #0 + 800553c: d0f6 beq.n 800552c <VL53L0X_PerformSingleMeasurement+0x8> + 800553e: e7f9 b.n 8005534 <VL53L0X_PerformSingleMeasurement+0x10> + 8005540: 2d00 cmp r5, #0 + 8005542: d1f7 bne.n 8005534 <VL53L0X_PerformSingleMeasurement+0x10> + 8005544: 2303 movs r3, #3 + 8005546: f884 3132 strb.w r3, [r4, #306] ; 0x132 + 800554a: e7f3 b.n 8005534 <VL53L0X_PerformSingleMeasurement+0x10> + +0800554c <VL53L0X_ClearInterruptMask>: + 800554c: b573 push {r0, r1, r4, r5, r6, lr} + 800554e: 4606 mov r6, r0 + 8005550: 2500 movs r5, #0 + 8005552: 2201 movs r2, #1 + 8005554: 210b movs r1, #11 + 8005556: 4630 mov r0, r6 + 8005558: f001 fea6 bl 80072a8 <VL53L0X_WrByte> + 800555c: 2200 movs r2, #0 + 800555e: 4604 mov r4, r0 + 8005560: 210b movs r1, #11 + 8005562: 4630 mov r0, r6 + 8005564: f001 fea0 bl 80072a8 <VL53L0X_WrByte> + 8005568: f10d 0207 add.w r2, sp, #7 + 800556c: 4304 orrs r4, r0 + 800556e: 2113 movs r1, #19 + 8005570: 4630 mov r0, r6 + 8005572: f001 febb bl 80072ec <VL53L0X_RdByte> + 8005576: f89d 3007 ldrb.w r3, [sp, #7] + 800557a: b264 sxtb r4, r4 + 800557c: 4304 orrs r4, r0 + 800557e: 3501 adds r5, #1 + 8005580: 075b lsls r3, r3, #29 + 8005582: b260 sxtb r0, r4 + 8005584: b2ed uxtb r5, r5 + 8005586: d005 beq.n 8005594 <VL53L0X_ClearInterruptMask+0x48> + 8005588: 2d03 cmp r5, #3 + 800558a: d008 beq.n 800559e <VL53L0X_ClearInterruptMask+0x52> + 800558c: 2800 cmp r0, #0 + 800558e: d0e0 beq.n 8005552 <VL53L0X_ClearInterruptMask+0x6> + 8005590: b002 add sp, #8 + 8005592: bd70 pop {r4, r5, r6, pc} + 8005594: 2d03 cmp r5, #3 + 8005596: bf08 it eq + 8005598: f06f 000b mvneq.w r0, #11 + 800559c: e7f8 b.n 8005590 <VL53L0X_ClearInterruptMask+0x44> + 800559e: f06f 000b mvn.w r0, #11 + 80055a2: e7f5 b.n 8005590 <VL53L0X_ClearInterruptMask+0x44> + +080055a4 <VL53L0X_PerformSingleRangingMeasurement>: + 80055a4: b538 push {r3, r4, r5, lr} + 80055a6: 2300 movs r3, #0 + 80055a8: 7403 strb r3, [r0, #16] + 80055aa: 4604 mov r4, r0 + 80055ac: 460d mov r5, r1 + 80055ae: f7ff ffb9 bl 8005524 <VL53L0X_PerformSingleMeasurement> + 80055b2: b950 cbnz r0, 80055ca <VL53L0X_PerformSingleRangingMeasurement+0x26> + 80055b4: 4629 mov r1, r5 + 80055b6: 4620 mov r0, r4 + 80055b8: f7ff fe51 bl 800525e <VL53L0X_GetRangingMeasurementData> + 80055bc: b928 cbnz r0, 80055ca <VL53L0X_PerformSingleRangingMeasurement+0x26> + 80055be: 4601 mov r1, r0 + 80055c0: 4620 mov r0, r4 + 80055c2: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 80055c6: f7ff bfc1 b.w 800554c <VL53L0X_ClearInterruptMask> + 80055ca: bd38 pop {r3, r4, r5, pc} + +080055cc <VL53L0X_SetGpioConfig.part.0>: + 80055cc: 2915 cmp r1, #21 + 80055ce: b570 push {r4, r5, r6, lr} + 80055d0: 4605 mov r5, r0 + 80055d2: 4616 mov r6, r2 + 80055d4: 461c mov r4, r3 + 80055d6: d167 bne.n 80056a8 <VL53L0X_SetGpioConfig.part.0+0xdc> + 80055d8: 2201 movs r2, #1 + 80055da: 21ff movs r1, #255 ; 0xff + 80055dc: f001 fe64 bl 80072a8 <VL53L0X_WrByte> + 80055e0: 2200 movs r2, #0 + 80055e2: 4611 mov r1, r2 + 80055e4: 4604 mov r4, r0 + 80055e6: 4628 mov r0, r5 + 80055e8: f001 fe5e bl 80072a8 <VL53L0X_WrByte> + 80055ec: 2200 movs r2, #0 + 80055ee: 4304 orrs r4, r0 + 80055f0: 21ff movs r1, #255 ; 0xff + 80055f2: 4628 mov r0, r5 + 80055f4: f001 fe58 bl 80072a8 <VL53L0X_WrByte> + 80055f8: b264 sxtb r4, r4 + 80055fa: 4304 orrs r4, r0 + 80055fc: 2201 movs r2, #1 + 80055fe: 2180 movs r1, #128 ; 0x80 + 8005600: 4628 mov r0, r5 + 8005602: f001 fe51 bl 80072a8 <VL53L0X_WrByte> + 8005606: b264 sxtb r4, r4 + 8005608: 4304 orrs r4, r0 + 800560a: 2202 movs r2, #2 + 800560c: 2185 movs r1, #133 ; 0x85 + 800560e: 4628 mov r0, r5 + 8005610: f001 fe4a bl 80072a8 <VL53L0X_WrByte> + 8005614: b264 sxtb r4, r4 + 8005616: 4304 orrs r4, r0 + 8005618: 2204 movs r2, #4 + 800561a: 21ff movs r1, #255 ; 0xff + 800561c: 4628 mov r0, r5 + 800561e: f001 fe43 bl 80072a8 <VL53L0X_WrByte> + 8005622: b264 sxtb r4, r4 + 8005624: 4304 orrs r4, r0 + 8005626: 2200 movs r2, #0 + 8005628: 21cd movs r1, #205 ; 0xcd + 800562a: 4628 mov r0, r5 + 800562c: f001 fe3c bl 80072a8 <VL53L0X_WrByte> + 8005630: b264 sxtb r4, r4 + 8005632: 4304 orrs r4, r0 + 8005634: 2211 movs r2, #17 + 8005636: 21cc movs r1, #204 ; 0xcc + 8005638: 4628 mov r0, r5 + 800563a: f001 fe35 bl 80072a8 <VL53L0X_WrByte> + 800563e: b264 sxtb r4, r4 + 8005640: 4304 orrs r4, r0 + 8005642: 2207 movs r2, #7 + 8005644: 21ff movs r1, #255 ; 0xff + 8005646: 4628 mov r0, r5 + 8005648: f001 fe2e bl 80072a8 <VL53L0X_WrByte> + 800564c: b264 sxtb r4, r4 + 800564e: 4304 orrs r4, r0 + 8005650: 2200 movs r2, #0 + 8005652: 21be movs r1, #190 ; 0xbe + 8005654: 4628 mov r0, r5 + 8005656: f001 fe27 bl 80072a8 <VL53L0X_WrByte> + 800565a: b264 sxtb r4, r4 + 800565c: 4304 orrs r4, r0 + 800565e: 2206 movs r2, #6 + 8005660: 21ff movs r1, #255 ; 0xff + 8005662: 4628 mov r0, r5 + 8005664: f001 fe20 bl 80072a8 <VL53L0X_WrByte> + 8005668: b264 sxtb r4, r4 + 800566a: 4304 orrs r4, r0 + 800566c: 2209 movs r2, #9 + 800566e: 21cc movs r1, #204 ; 0xcc + 8005670: 4628 mov r0, r5 + 8005672: f001 fe19 bl 80072a8 <VL53L0X_WrByte> + 8005676: b264 sxtb r4, r4 + 8005678: 4304 orrs r4, r0 + 800567a: 2200 movs r2, #0 + 800567c: 21ff movs r1, #255 ; 0xff + 800567e: 4628 mov r0, r5 + 8005680: f001 fe12 bl 80072a8 <VL53L0X_WrByte> + 8005684: b264 sxtb r4, r4 + 8005686: 4304 orrs r4, r0 + 8005688: 2201 movs r2, #1 + 800568a: 21ff movs r1, #255 ; 0xff + 800568c: 4628 mov r0, r5 + 800568e: f001 fe0b bl 80072a8 <VL53L0X_WrByte> + 8005692: b264 sxtb r4, r4 + 8005694: 2200 movs r2, #0 + 8005696: 4304 orrs r4, r0 + 8005698: 4611 mov r1, r2 + 800569a: 4628 mov r0, r5 + 800569c: f001 fe04 bl 80072a8 <VL53L0X_WrByte> + 80056a0: b264 sxtb r4, r4 + 80056a2: 4320 orrs r0, r4 + 80056a4: b240 sxtb r0, r0 + 80056a6: bd70 pop {r4, r5, r6, pc} + 80056a8: 2a04 cmp r2, #4 + 80056aa: d817 bhi.n 80056dc <VL53L0X_SetGpioConfig.part.0+0x110> + 80056ac: 210a movs r1, #10 + 80056ae: f001 fdfb bl 80072a8 <VL53L0X_WrByte> + 80056b2: 2800 cmp r0, #0 + 80056b4: d1f7 bne.n 80056a6 <VL53L0X_SetGpioConfig.part.0+0xda> + 80056b6: 1e23 subs r3, r4, #0 + 80056b8: bf18 it ne + 80056ba: 2301 movne r3, #1 + 80056bc: 011b lsls r3, r3, #4 + 80056be: 22ef movs r2, #239 ; 0xef + 80056c0: 2184 movs r1, #132 ; 0x84 + 80056c2: 4628 mov r0, r5 + 80056c4: f001 fe27 bl 8007316 <VL53L0X_UpdateByte> + 80056c8: 2800 cmp r0, #0 + 80056ca: d1ec bne.n 80056a6 <VL53L0X_SetGpioConfig.part.0+0xda> + 80056cc: f885 60da strb.w r6, [r5, #218] ; 0xda + 80056d0: 4601 mov r1, r0 + 80056d2: 4628 mov r0, r5 + 80056d4: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 80056d8: f7ff bf38 b.w 800554c <VL53L0X_ClearInterruptMask> + 80056dc: f06f 000a mvn.w r0, #10 + 80056e0: e7e1 b.n 80056a6 <VL53L0X_SetGpioConfig.part.0+0xda> + ... + +080056e4 <VL53L0X_StaticInit>: + 80056e4: b570 push {r4, r5, r6, lr} + 80056e6: b094 sub sp, #80 ; 0x50 + 80056e8: 4605 mov r5, r0 + 80056ea: 2240 movs r2, #64 ; 0x40 + 80056ec: 2100 movs r1, #0 + 80056ee: a804 add r0, sp, #16 + 80056f0: f00e fdae bl 8014250 <memset> + 80056f4: 2300 movs r3, #0 + 80056f6: 2101 movs r1, #1 + 80056f8: 4628 mov r0, r5 + 80056fa: f8ad 3006 strh.w r3, [sp, #6] + 80056fe: f88d 3003 strb.w r3, [sp, #3] + 8005702: f88d 3004 strb.w r3, [sp, #4] + 8005706: 9302 str r3, [sp, #8] + 8005708: f000 fcb8 bl 800607c <VL53L0X_get_info_from_device> + 800570c: f895 2114 ldrb.w r2, [r5, #276] ; 0x114 + 8005710: f895 1113 ldrb.w r1, [r5, #275] ; 0x113 + 8005714: 2a01 cmp r2, #1 + 8005716: d804 bhi.n 8005722 <VL53L0X_StaticInit+0x3e> + 8005718: f040 80ad bne.w 8005876 <VL53L0X_StaticInit+0x192> + 800571c: 2920 cmp r1, #32 + 800571e: f240 80ac bls.w 800587a <VL53L0X_StaticInit+0x196> + 8005722: aa01 add r2, sp, #4 + 8005724: a902 add r1, sp, #8 + 8005726: 4628 mov r0, r5 + 8005728: f000 fb2d bl 8005d86 <VL53L0X_perform_ref_spad_management> + 800572c: 4604 mov r4, r0 + 800572e: 2800 cmp r0, #0 + 8005730: f040 809e bne.w 8005870 <VL53L0X_StaticInit+0x18c> + 8005734: f895 3150 ldrb.w r3, [r5, #336] ; 0x150 + 8005738: 2b00 cmp r3, #0 + 800573a: f040 80a2 bne.w 8005882 <VL53L0X_StaticInit+0x19e> + 800573e: f8d5 114c ldr.w r1, [r5, #332] ; 0x14c + 8005742: 4628 mov r0, r5 + 8005744: f001 fa6e bl 8006c24 <VL53L0X_load_tuning_settings> + 8005748: 4604 mov r4, r0 + 800574a: 2800 cmp r0, #0 + 800574c: f040 8090 bne.w 8005870 <VL53L0X_StaticInit+0x18c> + 8005750: 4623 mov r3, r4 + 8005752: 4621 mov r1, r4 + 8005754: 2204 movs r2, #4 + 8005756: 4628 mov r0, r5 + 8005758: f7ff ff38 bl 80055cc <VL53L0X_SetGpioConfig.part.0> + 800575c: 4604 mov r4, r0 + 800575e: 2800 cmp r0, #0 + 8005760: f040 8086 bne.w 8005870 <VL53L0X_StaticInit+0x18c> + 8005764: 2201 movs r2, #1 + 8005766: 21ff movs r1, #255 ; 0xff + 8005768: 4628 mov r0, r5 + 800576a: f001 fd9d bl 80072a8 <VL53L0X_WrByte> + 800576e: f10d 0206 add.w r2, sp, #6 + 8005772: 4606 mov r6, r0 + 8005774: 2184 movs r1, #132 ; 0x84 + 8005776: 4628 mov r0, r5 + 8005778: f001 fde4 bl 8007344 <VL53L0X_RdWord> + 800577c: 4622 mov r2, r4 + 800577e: 4306 orrs r6, r0 + 8005780: 21ff movs r1, #255 ; 0xff + 8005782: 4628 mov r0, r5 + 8005784: f001 fd90 bl 80072a8 <VL53L0X_WrByte> + 8005788: b276 sxtb r6, r6 + 800578a: 4306 orrs r6, r0 + 800578c: b274 sxtb r4, r6 + 800578e: 2c00 cmp r4, #0 + 8005790: d16e bne.n 8005870 <VL53L0X_StaticInit+0x18c> + 8005792: f8bd 3006 ldrh.w r3, [sp, #6] + 8005796: 011b lsls r3, r3, #4 + 8005798: f8c5 30d4 str.w r3, [r5, #212] ; 0xd4 + 800579c: a904 add r1, sp, #16 + 800579e: 4628 mov r0, r5 + 80057a0: f7ff fc70 bl 8005084 <VL53L0X_GetDeviceParameters> + 80057a4: 4604 mov r4, r0 + 80057a6: 2800 cmp r0, #0 + 80057a8: d162 bne.n 8005870 <VL53L0X_StaticInit+0x18c> + 80057aa: f10d 0103 add.w r1, sp, #3 + 80057ae: 4628 mov r0, r5 + 80057b0: f7ff faf2 bl 8004d98 <VL53L0X_GetFractionEnable> + 80057b4: 4604 mov r4, r0 + 80057b6: 2800 cmp r0, #0 + 80057b8: d15a bne.n 8005870 <VL53L0X_StaticInit+0x18c> + 80057ba: f89d 3003 ldrb.w r3, [sp, #3] + 80057be: f885 3131 strb.w r3, [r5, #305] ; 0x131 + 80057c2: ae04 add r6, sp, #16 + 80057c4: ce0f ldmia r6!, {r0, r1, r2, r3} + 80057c6: f105 0410 add.w r4, r5, #16 + 80057ca: c40f stmia r4!, {r0, r1, r2, r3} + 80057cc: ce0f ldmia r6!, {r0, r1, r2, r3} + 80057ce: c40f stmia r4!, {r0, r1, r2, r3} + 80057d0: ce0f ldmia r6!, {r0, r1, r2, r3} + 80057d2: c40f stmia r4!, {r0, r1, r2, r3} + 80057d4: e896 000f ldmia.w r6, {r0, r1, r2, r3} + 80057d8: e884 000f stmia.w r4, {r0, r1, r2, r3} + 80057dc: f10d 0203 add.w r2, sp, #3 + 80057e0: 2101 movs r1, #1 + 80057e2: 4628 mov r0, r5 + 80057e4: f001 fd82 bl 80072ec <VL53L0X_RdByte> + 80057e8: 4604 mov r4, r0 + 80057ea: 2800 cmp r0, #0 + 80057ec: d140 bne.n 8005870 <VL53L0X_StaticInit+0x18c> + 80057ee: f89d 3003 ldrb.w r3, [sp, #3] + 80057f2: f885 3130 strb.w r3, [r5, #304] ; 0x130 + 80057f6: 4602 mov r2, r0 + 80057f8: 4601 mov r1, r0 + 80057fa: 4628 mov r0, r5 + 80057fc: f7ff fade bl 8004dbc <VL53L0X_SetSequenceStepEnable> + 8005800: 4604 mov r4, r0 + 8005802: bba8 cbnz r0, 8005870 <VL53L0X_StaticInit+0x18c> + 8005804: 4602 mov r2, r0 + 8005806: 2102 movs r1, #2 + 8005808: 4628 mov r0, r5 + 800580a: f7ff fad7 bl 8004dbc <VL53L0X_SetSequenceStepEnable> + 800580e: 4604 mov r4, r0 + 8005810: bb70 cbnz r0, 8005870 <VL53L0X_StaticInit+0x18c> + 8005812: 2303 movs r3, #3 + 8005814: 4601 mov r1, r0 + 8005816: f885 3132 strb.w r3, [r5, #306] ; 0x132 + 800581a: f10d 0205 add.w r2, sp, #5 + 800581e: 4628 mov r0, r5 + 8005820: f001 f919 bl 8006a56 <VL53L0X_get_vcsel_pulse_period> + 8005824: 4604 mov r4, r0 + 8005826: bb18 cbnz r0, 8005870 <VL53L0X_StaticInit+0x18c> + 8005828: f89d 3005 ldrb.w r3, [sp, #5] + 800582c: f885 30e8 strb.w r3, [r5, #232] ; 0xe8 + 8005830: f10d 0205 add.w r2, sp, #5 + 8005834: 2101 movs r1, #1 + 8005836: 4628 mov r0, r5 + 8005838: f001 f90d bl 8006a56 <VL53L0X_get_vcsel_pulse_period> + 800583c: 4604 mov r4, r0 + 800583e: b9b8 cbnz r0, 8005870 <VL53L0X_StaticInit+0x18c> + 8005840: f89d 3005 ldrb.w r3, [sp, #5] + 8005844: f885 30e0 strb.w r3, [r5, #224] ; 0xe0 + 8005848: aa03 add r2, sp, #12 + 800584a: 2103 movs r1, #3 + 800584c: 4628 mov r0, r5 + 800584e: f000 ff01 bl 8006654 <get_sequence_step_timeout> + 8005852: 4604 mov r4, r0 + 8005854: b960 cbnz r0, 8005870 <VL53L0X_StaticInit+0x18c> + 8005856: 9b03 ldr r3, [sp, #12] + 8005858: f8c5 30e4 str.w r3, [r5, #228] ; 0xe4 + 800585c: aa03 add r2, sp, #12 + 800585e: 2104 movs r1, #4 + 8005860: 4628 mov r0, r5 + 8005862: f000 fef7 bl 8006654 <get_sequence_step_timeout> + 8005866: 4604 mov r4, r0 + 8005868: b910 cbnz r0, 8005870 <VL53L0X_StaticInit+0x18c> + 800586a: 9b03 ldr r3, [sp, #12] + 800586c: f8c5 30dc str.w r3, [r5, #220] ; 0xdc + 8005870: 4620 mov r0, r4 + 8005872: b014 add sp, #80 ; 0x50 + 8005874: bd70 pop {r4, r5, r6, pc} + 8005876: 290c cmp r1, #12 + 8005878: e751 b.n 800571e <VL53L0X_StaticInit+0x3a> + 800587a: 4628 mov r0, r5 + 800587c: f000 f910 bl 8005aa0 <VL53L0X_set_reference_spads> + 8005880: e754 b.n 800572c <VL53L0X_StaticInit+0x48> + 8005882: 4901 ldr r1, [pc, #4] ; (8005888 <VL53L0X_StaticInit+0x1a4>) + 8005884: e75d b.n 8005742 <VL53L0X_StaticInit+0x5e> + 8005886: bf00 nop + 8005888: 2000056c .word 0x2000056c + +0800588c <VL53L0X_GetInterruptMaskStatus>: + 800588c: b513 push {r0, r1, r4, lr} + 800588e: 460c mov r4, r1 + 8005890: f10d 0207 add.w r2, sp, #7 + 8005894: 2113 movs r1, #19 + 8005896: f001 fd29 bl 80072ec <VL53L0X_RdByte> + 800589a: f89d 3007 ldrb.w r3, [sp, #7] + 800589e: f013 0f18 tst.w r3, #24 + 80058a2: f003 0207 and.w r2, r3, #7 + 80058a6: bf18 it ne + 80058a8: f06f 0005 mvnne.w r0, #5 + 80058ac: 6022 str r2, [r4, #0] + 80058ae: b002 add sp, #8 + 80058b0: bd10 pop {r4, pc} + +080058b2 <VL53L0X_GetMeasurementDataReady>: + 80058b2: b513 push {r0, r1, r4, lr} + 80058b4: f890 30da ldrb.w r3, [r0, #218] ; 0xda + 80058b8: 2b04 cmp r3, #4 + 80058ba: 460c mov r4, r1 + 80058bc: d10b bne.n 80058d6 <VL53L0X_GetMeasurementDataReady+0x24> + 80058be: a901 add r1, sp, #4 + 80058c0: f7ff ffe4 bl 800588c <VL53L0X_GetInterruptMaskStatus> + 80058c4: 9b01 ldr r3, [sp, #4] + 80058c6: 2b04 cmp r3, #4 + 80058c8: d101 bne.n 80058ce <VL53L0X_GetMeasurementDataReady+0x1c> + 80058ca: 2301 movs r3, #1 + 80058cc: e000 b.n 80058d0 <VL53L0X_GetMeasurementDataReady+0x1e> + 80058ce: 2300 movs r3, #0 + 80058d0: 7023 strb r3, [r4, #0] + 80058d2: b002 add sp, #8 + 80058d4: bd10 pop {r4, pc} + 80058d6: aa01 add r2, sp, #4 + 80058d8: 2114 movs r1, #20 + 80058da: f001 fd07 bl 80072ec <VL53L0X_RdByte> + 80058de: 2800 cmp r0, #0 + 80058e0: d1f7 bne.n 80058d2 <VL53L0X_GetMeasurementDataReady+0x20> + 80058e2: f89d 3004 ldrb.w r3, [sp, #4] + 80058e6: 07db lsls r3, r3, #31 + 80058e8: d4ef bmi.n 80058ca <VL53L0X_GetMeasurementDataReady+0x18> + 80058ea: 7020 strb r0, [r4, #0] + 80058ec: e7f1 b.n 80058d2 <VL53L0X_GetMeasurementDataReady+0x20> + +080058ee <VL53L0X_PerformRefSpadManagement>: + 80058ee: f000 ba4a b.w 8005d86 <VL53L0X_perform_ref_spad_management> + +080058f2 <VL53L0X_get_offset_calibration_data_micro_meter>: + 80058f2: b513 push {r0, r1, r4, lr} + 80058f4: 460c mov r4, r1 + 80058f6: f10d 0206 add.w r2, sp, #6 + 80058fa: 2128 movs r1, #40 ; 0x28 + 80058fc: f001 fd22 bl 8007344 <VL53L0X_RdWord> + 8005900: b978 cbnz r0, 8005922 <VL53L0X_get_offset_calibration_data_micro_meter+0x30> + 8005902: f8bd 2006 ldrh.w r2, [sp, #6] + 8005906: f3c2 030b ubfx r3, r2, #0, #12 + 800590a: f412 6f00 tst.w r2, #2048 ; 0x800 + 800590e: bf18 it ne + 8005910: f5a3 5380 subne.w r3, r3, #4096 ; 0x1000 + 8005914: f04f 02fa mov.w r2, #250 ; 0xfa + 8005918: bf14 ite ne + 800591a: fb13 f302 smulbbne r3, r3, r2 + 800591e: 4353 muleq r3, r2 + 8005920: 6023 str r3, [r4, #0] + 8005922: b002 add sp, #8 + 8005924: bd10 pop {r4, pc} + +08005926 <get_next_good_spad>: + 8005926: b5f0 push {r4, r5, r6, r7, lr} + 8005928: ea4f 0cd2 mov.w ip, r2, lsr #3 + 800592c: f04f 34ff mov.w r4, #4294967295 + 8005930: 601c str r4, [r3, #0] + 8005932: f002 0207 and.w r2, r2, #7 + 8005936: 4666 mov r6, ip + 8005938: 2700 movs r7, #0 + 800593a: 428e cmp r6, r1 + 800593c: d200 bcs.n 8005940 <get_next_good_spad+0x1a> + 800593e: b107 cbz r7, 8005942 <get_next_good_spad+0x1c> + 8005940: bdf0 pop {r4, r5, r6, r7, pc} + 8005942: 5d84 ldrb r4, [r0, r6] + 8005944: 4566 cmp r6, ip + 8005946: bf03 ittte eq + 8005948: 4114 asreq r4, r2 + 800594a: b2e4 uxtbeq r4, r4 + 800594c: 4615 moveq r5, r2 + 800594e: 463d movne r5, r7 + 8005950: f014 0701 ands.w r7, r4, #1 + 8005954: d004 beq.n 8005960 <get_next_good_spad+0x3a> + 8005956: eb05 05c6 add.w r5, r5, r6, lsl #3 + 800595a: 601d str r5, [r3, #0] + 800595c: 3601 adds r6, #1 + 800595e: e7ec b.n 800593a <get_next_good_spad+0x14> + 8005960: 3501 adds r5, #1 + 8005962: 2d08 cmp r5, #8 + 8005964: ea4f 0454 mov.w r4, r4, lsr #1 + 8005968: d1f2 bne.n 8005950 <get_next_good_spad+0x2a> + 800596a: e7f7 b.n 800595c <get_next_good_spad+0x36> + +0800596c <is_aperture>: + 800596c: 4b03 ldr r3, [pc, #12] ; (800597c <is_aperture+0x10>) + 800596e: 0980 lsrs r0, r0, #6 + 8005970: f853 0020 ldr.w r0, [r3, r0, lsl #2] + 8005974: 3800 subs r0, #0 + 8005976: bf18 it ne + 8005978: 2001 movne r0, #1 + 800597a: 4770 bx lr + 800597c: 20000818 .word 0x20000818 + +08005980 <enable_spad_bit>: + 8005980: b510 push {r4, lr} + 8005982: ebb1 0fd2 cmp.w r1, r2, lsr #3 + 8005986: ea4f 04d2 mov.w r4, r2, lsr #3 + 800598a: f002 0307 and.w r3, r2, #7 + 800598e: bf81 itttt hi + 8005990: 2201 movhi r2, #1 + 8005992: 409a lslhi r2, r3 + 8005994: 5d03 ldrbhi r3, [r0, r4] + 8005996: 4313 orrhi r3, r2 + 8005998: bf8a itet hi + 800599a: 5503 strbhi r3, [r0, r4] + 800599c: f06f 0031 mvnls.w r0, #49 ; 0x31 + 80059a0: 2000 movhi r0, #0 + 80059a2: bd10 pop {r4, pc} + +080059a4 <set_ref_spad_map>: + 80059a4: 460a mov r2, r1 + 80059a6: 2306 movs r3, #6 + 80059a8: 21b0 movs r1, #176 ; 0xb0 + 80059aa: f001 bc49 b.w 8007240 <VL53L0X_WriteMulti> + +080059ae <get_ref_spad_map>: + 80059ae: 460a mov r2, r1 + 80059b0: 2306 movs r3, #6 + 80059b2: 21b0 movs r1, #176 ; 0xb0 + 80059b4: f001 bc62 b.w 800727c <VL53L0X_ReadMulti> + +080059b8 <enable_ref_spads>: + 80059b8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80059bc: b085 sub sp, #20 + 80059be: 4680 mov r8, r0 + 80059c0: 9e10 ldr r6, [sp, #64] ; 0x40 + 80059c2: 9d0e ldr r5, [sp, #56] ; 0x38 + 80059c4: 9601 str r6, [sp, #4] + 80059c6: 468a mov sl, r1 + 80059c8: 4693 mov fp, r2 + 80059ca: 461c mov r4, r3 + 80059cc: f04f 0900 mov.w r9, #0 + 80059d0: 9b11 ldr r3, [sp, #68] ; 0x44 + 80059d2: 4599 cmp r9, r3 + 80059d4: d108 bne.n 80059e8 <enable_ref_spads+0x30> + 80059d6: 2300 movs r3, #0 + 80059d8: 9a12 ldr r2, [sp, #72] ; 0x48 + 80059da: 6016 str r6, [r2, #0] + 80059dc: b1f3 cbz r3, 8005a1c <enable_ref_spads+0x64> + 80059de: f06f 0031 mvn.w r0, #49 ; 0x31 + 80059e2: b005 add sp, #20 + 80059e4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80059e8: ab01 add r3, sp, #4 + 80059ea: 4632 mov r2, r6 + 80059ec: 4629 mov r1, r5 + 80059ee: 4658 mov r0, fp + 80059f0: f7ff ff99 bl 8005926 <get_next_good_spad> + 80059f4: 9f01 ldr r7, [sp, #4] + 80059f6: 1c7b adds r3, r7, #1 + 80059f8: d00d beq.n 8005a16 <enable_ref_spads+0x5e> + 80059fa: 9b0f ldr r3, [sp, #60] ; 0x3c + 80059fc: 18f8 adds r0, r7, r3 + 80059fe: f7ff ffb5 bl 800596c <is_aperture> + 8005a02: 4550 cmp r0, sl + 8005a04: d107 bne.n 8005a16 <enable_ref_spads+0x5e> + 8005a06: 463a mov r2, r7 + 8005a08: 4620 mov r0, r4 + 8005a0a: f7ff ffb9 bl 8005980 <enable_spad_bit> + 8005a0e: 1c7e adds r6, r7, #1 + 8005a10: f109 0901 add.w r9, r9, #1 + 8005a14: e7dc b.n 80059d0 <enable_ref_spads+0x18> + 8005a16: f06f 0331 mvn.w r3, #49 ; 0x31 + 8005a1a: e7dd b.n 80059d8 <enable_ref_spads+0x20> + 8005a1c: 4621 mov r1, r4 + 8005a1e: 4640 mov r0, r8 + 8005a20: f7ff ffc0 bl 80059a4 <set_ref_spad_map> + 8005a24: 2800 cmp r0, #0 + 8005a26: d1dc bne.n 80059e2 <enable_ref_spads+0x2a> + 8005a28: a902 add r1, sp, #8 + 8005a2a: 4640 mov r0, r8 + 8005a2c: f7ff ffbf bl 80059ae <get_ref_spad_map> + 8005a30: 4425 add r5, r4 + 8005a32: 4623 mov r3, r4 + 8005a34: aa02 add r2, sp, #8 + 8005a36: 42ab cmp r3, r5 + 8005a38: d0d3 beq.n 80059e2 <enable_ref_spads+0x2a> + 8005a3a: f813 4b01 ldrb.w r4, [r3], #1 + 8005a3e: f812 1b01 ldrb.w r1, [r2], #1 + 8005a42: 428c cmp r4, r1 + 8005a44: d0f7 beq.n 8005a36 <enable_ref_spads+0x7e> + 8005a46: e7ca b.n 80059de <enable_ref_spads+0x26> + +08005a48 <perform_ref_signal_measurement>: + 8005a48: b570 push {r4, r5, r6, lr} + 8005a4a: 22c0 movs r2, #192 ; 0xc0 + 8005a4c: b088 sub sp, #32 + 8005a4e: 460e mov r6, r1 + 8005a50: 2101 movs r1, #1 + 8005a52: f890 4130 ldrb.w r4, [r0, #304] ; 0x130 + 8005a56: 4605 mov r5, r0 + 8005a58: f001 fc26 bl 80072a8 <VL53L0X_WrByte> + 8005a5c: b9f0 cbnz r0, 8005a9c <perform_ref_signal_measurement+0x54> + 8005a5e: a901 add r1, sp, #4 + 8005a60: 4628 mov r0, r5 + 8005a62: f7ff fd9f bl 80055a4 <VL53L0X_PerformSingleRangingMeasurement> + 8005a66: b9c8 cbnz r0, 8005a9c <perform_ref_signal_measurement+0x54> + 8005a68: 2201 movs r2, #1 + 8005a6a: 21ff movs r1, #255 ; 0xff + 8005a6c: 4628 mov r0, r5 + 8005a6e: f001 fc1b bl 80072a8 <VL53L0X_WrByte> + 8005a72: b998 cbnz r0, 8005a9c <perform_ref_signal_measurement+0x54> + 8005a74: 4632 mov r2, r6 + 8005a76: 21b6 movs r1, #182 ; 0xb6 + 8005a78: 4628 mov r0, r5 + 8005a7a: f001 fc63 bl 8007344 <VL53L0X_RdWord> + 8005a7e: b968 cbnz r0, 8005a9c <perform_ref_signal_measurement+0x54> + 8005a80: 4602 mov r2, r0 + 8005a82: 21ff movs r1, #255 ; 0xff + 8005a84: 4628 mov r0, r5 + 8005a86: f001 fc0f bl 80072a8 <VL53L0X_WrByte> + 8005a8a: b938 cbnz r0, 8005a9c <perform_ref_signal_measurement+0x54> + 8005a8c: 4622 mov r2, r4 + 8005a8e: 2101 movs r1, #1 + 8005a90: 4628 mov r0, r5 + 8005a92: f001 fc09 bl 80072a8 <VL53L0X_WrByte> + 8005a96: b908 cbnz r0, 8005a9c <perform_ref_signal_measurement+0x54> + 8005a98: f885 4130 strb.w r4, [r5, #304] ; 0x130 + 8005a9c: b008 add sp, #32 + 8005a9e: bd70 pop {r4, r5, r6, pc} + +08005aa0 <VL53L0X_set_reference_spads>: + 8005aa0: b5f0 push {r4, r5, r6, r7, lr} + 8005aa2: 460f mov r7, r1 + 8005aa4: b089 sub sp, #36 ; 0x24 + 8005aa6: 4616 mov r6, r2 + 8005aa8: 21ff movs r1, #255 ; 0xff + 8005aaa: 2201 movs r2, #1 + 8005aac: 4604 mov r4, r0 + 8005aae: f001 fbfb bl 80072a8 <VL53L0X_WrByte> + 8005ab2: 4602 mov r2, r0 + 8005ab4: b9a8 cbnz r0, 8005ae2 <VL53L0X_set_reference_spads+0x42> + 8005ab6: 214f movs r1, #79 ; 0x4f + 8005ab8: 4620 mov r0, r4 + 8005aba: f001 fbf5 bl 80072a8 <VL53L0X_WrByte> + 8005abe: b980 cbnz r0, 8005ae2 <VL53L0X_set_reference_spads+0x42> + 8005ac0: 222c movs r2, #44 ; 0x2c + 8005ac2: 214e movs r1, #78 ; 0x4e + 8005ac4: 4620 mov r0, r4 + 8005ac6: f001 fbef bl 80072a8 <VL53L0X_WrByte> + 8005aca: 4602 mov r2, r0 + 8005acc: b948 cbnz r0, 8005ae2 <VL53L0X_set_reference_spads+0x42> + 8005ace: 21ff movs r1, #255 ; 0xff + 8005ad0: 4620 mov r0, r4 + 8005ad2: f001 fbe9 bl 80072a8 <VL53L0X_WrByte> + 8005ad6: b920 cbnz r0, 8005ae2 <VL53L0X_set_reference_spads+0x42> + 8005ad8: 22b4 movs r2, #180 ; 0xb4 + 8005ada: 21b6 movs r1, #182 ; 0xb6 + 8005adc: 4620 mov r0, r4 + 8005ade: f001 fbe3 bl 80072a8 <VL53L0X_WrByte> + 8005ae2: 2500 movs r5, #0 + 8005ae4: f8c4 5124 str.w r5, [r4, #292] ; 0x124 + 8005ae8: f8a4 5128 strh.w r5, [r4, #296] ; 0x128 + 8005aec: b9de cbnz r6, 8005b26 <VL53L0X_set_reference_spads+0x86> + 8005aee: 4635 mov r5, r6 + 8005af0: ab07 add r3, sp, #28 + 8005af2: 22b4 movs r2, #180 ; 0xb4 + 8005af4: e9cd 7303 strd r7, r3, [sp, #12] + 8005af8: 2306 movs r3, #6 + 8005afa: e9cd 3200 strd r3, r2, [sp] + 8005afe: 9502 str r5, [sp, #8] + 8005b00: f504 7392 add.w r3, r4, #292 ; 0x124 + 8005b04: f504 7295 add.w r2, r4, #298 ; 0x12a + 8005b08: 4631 mov r1, r6 + 8005b0a: 4620 mov r0, r4 + 8005b0c: f7ff ff54 bl 80059b8 <enable_ref_spads> + 8005b10: b930 cbnz r0, 8005b20 <VL53L0X_set_reference_spads+0x80> + 8005b12: 2301 movs r3, #1 + 8005b14: f884 3115 strb.w r3, [r4, #277] ; 0x115 + 8005b18: f884 7113 strb.w r7, [r4, #275] ; 0x113 + 8005b1c: f884 6114 strb.w r6, [r4, #276] ; 0x114 + 8005b20: b009 add sp, #36 ; 0x24 + 8005b22: bdf0 pop {r4, r5, r6, r7, pc} + 8005b24: 3501 adds r5, #1 + 8005b26: f105 00b4 add.w r0, r5, #180 ; 0xb4 + 8005b2a: f7ff ff1f bl 800596c <is_aperture> + 8005b2e: 2800 cmp r0, #0 + 8005b30: d1de bne.n 8005af0 <VL53L0X_set_reference_spads+0x50> + 8005b32: 2d2c cmp r5, #44 ; 0x2c + 8005b34: d1f6 bne.n 8005b24 <VL53L0X_set_reference_spads+0x84> + 8005b36: e7db b.n 8005af0 <VL53L0X_set_reference_spads+0x50> + +08005b38 <VL53L0X_perform_single_ref_calibration>: + 8005b38: b510 push {r4, lr} + 8005b3a: f041 0201 orr.w r2, r1, #1 + 8005b3e: 2100 movs r1, #0 + 8005b40: 4604 mov r4, r0 + 8005b42: f001 fbb1 bl 80072a8 <VL53L0X_WrByte> + 8005b46: b978 cbnz r0, 8005b68 <VL53L0X_perform_single_ref_calibration+0x30> + 8005b48: 4620 mov r0, r4 + 8005b4a: f000 fa46 bl 8005fda <VL53L0X_measurement_poll_for_completion> + 8005b4e: b958 cbnz r0, 8005b68 <VL53L0X_perform_single_ref_calibration+0x30> + 8005b50: 4601 mov r1, r0 + 8005b52: 4620 mov r0, r4 + 8005b54: f7ff fcfa bl 800554c <VL53L0X_ClearInterruptMask> + 8005b58: b930 cbnz r0, 8005b68 <VL53L0X_perform_single_ref_calibration+0x30> + 8005b5a: 4602 mov r2, r0 + 8005b5c: 4601 mov r1, r0 + 8005b5e: 4620 mov r0, r4 + 8005b60: e8bd 4010 ldmia.w sp!, {r4, lr} + 8005b64: f001 bba0 b.w 80072a8 <VL53L0X_WrByte> + 8005b68: bd10 pop {r4, pc} + +08005b6a <VL53L0X_ref_calibration_io>: + 8005b6a: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8005b6e: f04f 0b00 mov.w fp, #0 + 8005b72: 4688 mov r8, r1 + 8005b74: 4617 mov r7, r2 + 8005b76: 21ff movs r1, #255 ; 0xff + 8005b78: 2201 movs r2, #1 + 8005b7a: 4605 mov r5, r0 + 8005b7c: 461e mov r6, r3 + 8005b7e: f89d a038 ldrb.w sl, [sp, #56] ; 0x38 + 8005b82: f89d 903c ldrb.w r9, [sp, #60] ; 0x3c + 8005b86: f88d b007 strb.w fp, [sp, #7] + 8005b8a: f001 fb8d bl 80072a8 <VL53L0X_WrByte> + 8005b8e: 465a mov r2, fp + 8005b90: 4604 mov r4, r0 + 8005b92: 4659 mov r1, fp + 8005b94: 4628 mov r0, r5 + 8005b96: f001 fb87 bl 80072a8 <VL53L0X_WrByte> + 8005b9a: 465a mov r2, fp + 8005b9c: 4304 orrs r4, r0 + 8005b9e: 21ff movs r1, #255 ; 0xff + 8005ba0: 4628 mov r0, r5 + 8005ba2: f001 fb81 bl 80072a8 <VL53L0X_WrByte> + 8005ba6: b264 sxtb r4, r4 + 8005ba8: 4304 orrs r4, r0 + 8005baa: b264 sxtb r4, r4 + 8005bac: f1b8 0f00 cmp.w r8, #0 + 8005bb0: d032 beq.n 8005c18 <VL53L0X_ref_calibration_io+0xae> + 8005bb2: f1ba 0f00 cmp.w sl, #0 + 8005bb6: d006 beq.n 8005bc6 <VL53L0X_ref_calibration_io+0x5c> + 8005bb8: 9a0c ldr r2, [sp, #48] ; 0x30 + 8005bba: 21cb movs r1, #203 ; 0xcb + 8005bbc: 4628 mov r0, r5 + 8005bbe: f001 fb95 bl 80072ec <VL53L0X_RdByte> + 8005bc2: 4320 orrs r0, r4 + 8005bc4: b244 sxtb r4, r0 + 8005bc6: f1b9 0f00 cmp.w r9, #0 + 8005bca: d007 beq.n 8005bdc <VL53L0X_ref_calibration_io+0x72> + 8005bcc: f10d 0207 add.w r2, sp, #7 + 8005bd0: 21ee movs r1, #238 ; 0xee + 8005bd2: 4628 mov r0, r5 + 8005bd4: f001 fb8a bl 80072ec <VL53L0X_RdByte> + 8005bd8: 4320 orrs r0, r4 + 8005bda: b244 sxtb r4, r0 + 8005bdc: 2201 movs r2, #1 + 8005bde: 21ff movs r1, #255 ; 0xff + 8005be0: 4628 mov r0, r5 + 8005be2: f001 fb61 bl 80072a8 <VL53L0X_WrByte> + 8005be6: 2201 movs r2, #1 + 8005be8: 4304 orrs r4, r0 + 8005bea: 2100 movs r1, #0 + 8005bec: 4628 mov r0, r5 + 8005bee: f001 fb5b bl 80072a8 <VL53L0X_WrByte> + 8005bf2: b264 sxtb r4, r4 + 8005bf4: 4304 orrs r4, r0 + 8005bf6: 2200 movs r2, #0 + 8005bf8: 21ff movs r1, #255 ; 0xff + 8005bfa: 4628 mov r0, r5 + 8005bfc: f001 fb54 bl 80072a8 <VL53L0X_WrByte> + 8005c00: b264 sxtb r4, r4 + 8005c02: f89d 3007 ldrb.w r3, [sp, #7] + 8005c06: 9a0d ldr r2, [sp, #52] ; 0x34 + 8005c08: 4320 orrs r0, r4 + 8005c0a: f023 0310 bic.w r3, r3, #16 + 8005c0e: b240 sxtb r0, r0 + 8005c10: 7013 strb r3, [r2, #0] + 8005c12: b003 add sp, #12 + 8005c14: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8005c18: f1ba 0f00 cmp.w sl, #0 + 8005c1c: d006 beq.n 8005c2c <VL53L0X_ref_calibration_io+0xc2> + 8005c1e: 463a mov r2, r7 + 8005c20: 21cb movs r1, #203 ; 0xcb + 8005c22: 4628 mov r0, r5 + 8005c24: f001 fb40 bl 80072a8 <VL53L0X_WrByte> + 8005c28: 4320 orrs r0, r4 + 8005c2a: b244 sxtb r4, r0 + 8005c2c: f1b9 0f00 cmp.w r9, #0 + 8005c30: d0d4 beq.n 8005bdc <VL53L0X_ref_calibration_io+0x72> + 8005c32: 4633 mov r3, r6 + 8005c34: 2280 movs r2, #128 ; 0x80 + 8005c36: 21ee movs r1, #238 ; 0xee + 8005c38: 4628 mov r0, r5 + 8005c3a: f001 fb6c bl 8007316 <VL53L0X_UpdateByte> + 8005c3e: e7cb b.n 8005bd8 <VL53L0X_ref_calibration_io+0x6e> + +08005c40 <VL53L0X_perform_vhv_calibration>: + 8005c40: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8005c44: b087 sub sp, #28 + 8005c46: 4691 mov r9, r2 + 8005c48: 2200 movs r2, #0 + 8005c4a: 4605 mov r5, r0 + 8005c4c: 4688 mov r8, r1 + 8005c4e: f88d 2017 strb.w r2, [sp, #23] + 8005c52: 461e mov r6, r3 + 8005c54: b31b cbz r3, 8005c9e <VL53L0X_perform_vhv_calibration+0x5e> + 8005c56: f890 7130 ldrb.w r7, [r0, #304] ; 0x130 + 8005c5a: 2201 movs r2, #1 + 8005c5c: 4611 mov r1, r2 + 8005c5e: 4628 mov r0, r5 + 8005c60: f001 fb22 bl 80072a8 <VL53L0X_WrByte> + 8005c64: 4604 mov r4, r0 + 8005c66: bb58 cbnz r0, 8005cc0 <VL53L0X_perform_vhv_calibration+0x80> + 8005c68: 2140 movs r1, #64 ; 0x40 + 8005c6a: 4628 mov r0, r5 + 8005c6c: f7ff ff64 bl 8005b38 <VL53L0X_perform_single_ref_calibration> + 8005c70: 4604 mov r4, r0 + 8005c72: bb28 cbnz r0, 8005cc0 <VL53L0X_perform_vhv_calibration+0x80> + 8005c74: f1b9 0f01 cmp.w r9, #1 + 8005c78: d113 bne.n 8005ca2 <VL53L0X_perform_vhv_calibration+0x62> + 8005c7a: f10d 0317 add.w r3, sp, #23 + 8005c7e: e9cd 9002 strd r9, r0, [sp, #8] + 8005c82: e9cd 8300 strd r8, r3, [sp] + 8005c86: 4602 mov r2, r0 + 8005c88: 4603 mov r3, r0 + 8005c8a: 4649 mov r1, r9 + 8005c8c: 4628 mov r0, r5 + 8005c8e: f7ff ff6c bl 8005b6a <VL53L0X_ref_calibration_io> + 8005c92: b140 cbz r0, 8005ca6 <VL53L0X_perform_vhv_calibration+0x66> + 8005c94: 4604 mov r4, r0 + 8005c96: 4620 mov r0, r4 + 8005c98: b007 add sp, #28 + 8005c9a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8005c9e: 461f mov r7, r3 + 8005ca0: e7db b.n 8005c5a <VL53L0X_perform_vhv_calibration+0x1a> + 8005ca2: f888 0000 strb.w r0, [r8] + 8005ca6: 2e00 cmp r6, #0 + 8005ca8: d0f5 beq.n 8005c96 <VL53L0X_perform_vhv_calibration+0x56> + 8005caa: 463a mov r2, r7 + 8005cac: 2101 movs r1, #1 + 8005cae: 4628 mov r0, r5 + 8005cb0: f001 fafa bl 80072a8 <VL53L0X_WrByte> + 8005cb4: 4604 mov r4, r0 + 8005cb6: 2800 cmp r0, #0 + 8005cb8: d1ed bne.n 8005c96 <VL53L0X_perform_vhv_calibration+0x56> + 8005cba: f885 7130 strb.w r7, [r5, #304] ; 0x130 + 8005cbe: e7ea b.n 8005c96 <VL53L0X_perform_vhv_calibration+0x56> + 8005cc0: 2300 movs r3, #0 + 8005cc2: f888 3000 strb.w r3, [r8] + 8005cc6: 4620 mov r0, r4 + 8005cc8: e7e4 b.n 8005c94 <VL53L0X_perform_vhv_calibration+0x54> + +08005cca <VL53L0X_perform_phase_calibration>: + 8005cca: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8005cce: 4605 mov r5, r0 + 8005cd0: b087 sub sp, #28 + 8005cd2: 4688 mov r8, r1 + 8005cd4: 4691 mov r9, r2 + 8005cd6: 461e mov r6, r3 + 8005cd8: b323 cbz r3, 8005d24 <VL53L0X_perform_phase_calibration+0x5a> + 8005cda: f890 7130 ldrb.w r7, [r0, #304] ; 0x130 + 8005cde: 2202 movs r2, #2 + 8005ce0: 2101 movs r1, #1 + 8005ce2: 4628 mov r0, r5 + 8005ce4: f001 fae0 bl 80072a8 <VL53L0X_WrByte> + 8005ce8: 4604 mov r4, r0 + 8005cea: bb60 cbnz r0, 8005d46 <VL53L0X_perform_phase_calibration+0x7c> + 8005cec: 4601 mov r1, r0 + 8005cee: 4628 mov r0, r5 + 8005cf0: f7ff ff22 bl 8005b38 <VL53L0X_perform_single_ref_calibration> + 8005cf4: 4604 mov r4, r0 + 8005cf6: bb30 cbnz r0, 8005d46 <VL53L0X_perform_phase_calibration+0x7c> + 8005cf8: f1b9 0f01 cmp.w r9, #1 + 8005cfc: d114 bne.n 8005d28 <VL53L0X_perform_phase_calibration+0x5e> + 8005cfe: f10d 0317 add.w r3, sp, #23 + 8005d02: e9cd 0902 strd r0, r9, [sp, #8] + 8005d06: 9300 str r3, [sp, #0] + 8005d08: 4602 mov r2, r0 + 8005d0a: 4603 mov r3, r0 + 8005d0c: f8cd 8004 str.w r8, [sp, #4] + 8005d10: 4649 mov r1, r9 + 8005d12: 4628 mov r0, r5 + 8005d14: f7ff ff29 bl 8005b6a <VL53L0X_ref_calibration_io> + 8005d18: b140 cbz r0, 8005d2c <VL53L0X_perform_phase_calibration+0x62> + 8005d1a: 4604 mov r4, r0 + 8005d1c: 4620 mov r0, r4 + 8005d1e: b007 add sp, #28 + 8005d20: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8005d24: 461f mov r7, r3 + 8005d26: e7da b.n 8005cde <VL53L0X_perform_phase_calibration+0x14> + 8005d28: f888 0000 strb.w r0, [r8] + 8005d2c: 2e00 cmp r6, #0 + 8005d2e: d0f5 beq.n 8005d1c <VL53L0X_perform_phase_calibration+0x52> + 8005d30: 463a mov r2, r7 + 8005d32: 2101 movs r1, #1 + 8005d34: 4628 mov r0, r5 + 8005d36: f001 fab7 bl 80072a8 <VL53L0X_WrByte> + 8005d3a: 4604 mov r4, r0 + 8005d3c: 2800 cmp r0, #0 + 8005d3e: d1ed bne.n 8005d1c <VL53L0X_perform_phase_calibration+0x52> + 8005d40: f885 7130 strb.w r7, [r5, #304] ; 0x130 + 8005d44: e7ea b.n 8005d1c <VL53L0X_perform_phase_calibration+0x52> + 8005d46: 2300 movs r3, #0 + 8005d48: f888 3000 strb.w r3, [r8] + 8005d4c: 4620 mov r0, r4 + 8005d4e: e7e4 b.n 8005d1a <VL53L0X_perform_phase_calibration+0x50> + +08005d50 <VL53L0X_perform_ref_calibration>: + 8005d50: b5f8 push {r3, r4, r5, r6, r7, lr} + 8005d52: 461d mov r5, r3 + 8005d54: 4616 mov r6, r2 + 8005d56: 2300 movs r3, #0 + 8005d58: 462a mov r2, r5 + 8005d5a: f890 7130 ldrb.w r7, [r0, #304] ; 0x130 + 8005d5e: 4604 mov r4, r0 + 8005d60: f7ff ff6e bl 8005c40 <VL53L0X_perform_vhv_calibration> + 8005d64: b970 cbnz r0, 8005d84 <VL53L0X_perform_ref_calibration+0x34> + 8005d66: 4603 mov r3, r0 + 8005d68: 462a mov r2, r5 + 8005d6a: 4631 mov r1, r6 + 8005d6c: 4620 mov r0, r4 + 8005d6e: f7ff ffac bl 8005cca <VL53L0X_perform_phase_calibration> + 8005d72: b938 cbnz r0, 8005d84 <VL53L0X_perform_ref_calibration+0x34> + 8005d74: 463a mov r2, r7 + 8005d76: 2101 movs r1, #1 + 8005d78: 4620 mov r0, r4 + 8005d7a: f001 fa95 bl 80072a8 <VL53L0X_WrByte> + 8005d7e: b908 cbnz r0, 8005d84 <VL53L0X_perform_ref_calibration+0x34> + 8005d80: f884 7130 strb.w r7, [r4, #304] ; 0x130 + 8005d84: bdf8 pop {r3, r4, r5, r6, r7, pc} + +08005d86 <VL53L0X_perform_ref_spad_management>: + 8005d86: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8005d8a: 2300 movs r3, #0 + 8005d8c: b093 sub sp, #76 ; 0x4c + 8005d8e: e9cd 120a strd r1, r2, [sp, #40] ; 0x28 + 8005d92: f8c0 3124 str.w r3, [r0, #292] ; 0x124 + 8005d96: f8a0 3128 strh.w r3, [r0, #296] ; 0x128 + 8005d9a: 2201 movs r2, #1 + 8005d9c: 21ff movs r1, #255 ; 0xff + 8005d9e: e9cd 330e strd r3, r3, [sp, #56] ; 0x38 + 8005da2: f8b0 813c ldrh.w r8, [r0, #316] ; 0x13c + 8005da6: f88d 3034 strb.w r3, [sp, #52] ; 0x34 + 8005daa: 4605 mov r5, r0 + 8005dac: f88d 3035 strb.w r3, [sp, #53] ; 0x35 + 8005db0: f001 fa7a bl 80072a8 <VL53L0X_WrByte> + 8005db4: 4604 mov r4, r0 + 8005db6: 2800 cmp r0, #0 + 8005db8: f040 80e3 bne.w 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005dbc: 4602 mov r2, r0 + 8005dbe: 214f movs r1, #79 ; 0x4f + 8005dc0: 4628 mov r0, r5 + 8005dc2: f001 fa71 bl 80072a8 <VL53L0X_WrByte> + 8005dc6: 4604 mov r4, r0 + 8005dc8: 2800 cmp r0, #0 + 8005dca: f040 80da bne.w 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005dce: 222c movs r2, #44 ; 0x2c + 8005dd0: 214e movs r1, #78 ; 0x4e + 8005dd2: 4628 mov r0, r5 + 8005dd4: f001 fa68 bl 80072a8 <VL53L0X_WrByte> + 8005dd8: 4604 mov r4, r0 + 8005dda: 2800 cmp r0, #0 + 8005ddc: f040 80d1 bne.w 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005de0: 4602 mov r2, r0 + 8005de2: 21ff movs r1, #255 ; 0xff + 8005de4: 4628 mov r0, r5 + 8005de6: f001 fa5f bl 80072a8 <VL53L0X_WrByte> + 8005dea: 4604 mov r4, r0 + 8005dec: 2800 cmp r0, #0 + 8005dee: f040 80c8 bne.w 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005df2: 22b4 movs r2, #180 ; 0xb4 + 8005df4: 21b6 movs r1, #182 ; 0xb6 + 8005df6: 4628 mov r0, r5 + 8005df8: f001 fa56 bl 80072a8 <VL53L0X_WrByte> + 8005dfc: 4604 mov r4, r0 + 8005dfe: 2800 cmp r0, #0 + 8005e00: f040 80bf bne.w 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005e04: 4602 mov r2, r0 + 8005e06: 2180 movs r1, #128 ; 0x80 + 8005e08: 4628 mov r0, r5 + 8005e0a: f001 fa4d bl 80072a8 <VL53L0X_WrByte> + 8005e0e: 4604 mov r4, r0 + 8005e10: 2800 cmp r0, #0 + 8005e12: f040 80b6 bne.w 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005e16: 4603 mov r3, r0 + 8005e18: f10d 0235 add.w r2, sp, #53 ; 0x35 + 8005e1c: a90d add r1, sp, #52 ; 0x34 + 8005e1e: 4628 mov r0, r5 + 8005e20: f7ff ff96 bl 8005d50 <VL53L0X_perform_ref_calibration> + 8005e24: 4604 mov r4, r0 + 8005e26: 2800 cmp r0, #0 + 8005e28: f040 80ab bne.w 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005e2c: 2303 movs r3, #3 + 8005e2e: e9cd 0302 strd r0, r3, [sp, #8] + 8005e32: 21b4 movs r1, #180 ; 0xb4 + 8005e34: 2306 movs r3, #6 + 8005e36: f505 7a95 add.w sl, r5, #298 ; 0x12a + 8005e3a: f505 7992 add.w r9, r5, #292 ; 0x124 + 8005e3e: ae0e add r6, sp, #56 ; 0x38 + 8005e40: e9cd 3100 strd r3, r1, [sp] + 8005e44: 9604 str r6, [sp, #16] + 8005e46: 4601 mov r1, r0 + 8005e48: 464b mov r3, r9 + 8005e4a: 4652 mov r2, sl + 8005e4c: 4628 mov r0, r5 + 8005e4e: f7ff fdb3 bl 80059b8 <enable_ref_spads> + 8005e52: 4604 mov r4, r0 + 8005e54: 2800 cmp r0, #0 + 8005e56: f040 8094 bne.w 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005e5a: f10d 0136 add.w r1, sp, #54 ; 0x36 + 8005e5e: 4628 mov r0, r5 + 8005e60: 9f0e ldr r7, [sp, #56] ; 0x38 + 8005e62: f7ff fdf1 bl 8005a48 <perform_ref_signal_measurement> + 8005e66: 4604 mov r4, r0 + 8005e68: 2800 cmp r0, #0 + 8005e6a: f040 808a bne.w 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005e6e: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 + 8005e72: 4543 cmp r3, r8 + 8005e74: f240 80aa bls.w 8005fcc <VL53L0X_perform_ref_spad_management+0x246> + 8005e78: f8c5 0124 str.w r0, [r5, #292] ; 0x124 + 8005e7c: f8a5 0128 strh.w r0, [r5, #296] ; 0x128 + 8005e80: f107 00b4 add.w r0, r7, #180 ; 0xb4 + 8005e84: f7ff fd72 bl 800596c <is_aperture> + 8005e88: b908 cbnz r0, 8005e8e <VL53L0X_perform_ref_spad_management+0x108> + 8005e8a: 2f2b cmp r7, #43 ; 0x2b + 8005e8c: d97d bls.n 8005f8a <VL53L0X_perform_ref_spad_management+0x204> + 8005e8e: 2306 movs r3, #6 + 8005e90: 22b4 movs r2, #180 ; 0xb4 + 8005e92: f04f 0b03 mov.w fp, #3 + 8005e96: e9cd 3200 strd r3, r2, [sp] + 8005e9a: e9cd 7b02 strd r7, fp, [sp, #8] + 8005e9e: 9604 str r6, [sp, #16] + 8005ea0: 464b mov r3, r9 + 8005ea2: 4652 mov r2, sl + 8005ea4: 2101 movs r1, #1 + 8005ea6: 4628 mov r0, r5 + 8005ea8: f7ff fd86 bl 80059b8 <enable_ref_spads> + 8005eac: 2800 cmp r0, #0 + 8005eae: f040 808b bne.w 8005fc8 <VL53L0X_perform_ref_spad_management+0x242> + 8005eb2: f10d 0136 add.w r1, sp, #54 ; 0x36 + 8005eb6: 4628 mov r0, r5 + 8005eb8: 9f0e ldr r7, [sp, #56] ; 0x38 + 8005eba: f7ff fdc5 bl 8005a48 <perform_ref_signal_measurement> + 8005ebe: 4606 mov r6, r0 + 8005ec0: 2800 cmp r0, #0 + 8005ec2: d17c bne.n 8005fbe <VL53L0X_perform_ref_spad_management+0x238> + 8005ec4: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 + 8005ec8: 4543 cmp r3, r8 + 8005eca: f240 8082 bls.w 8005fd2 <VL53L0X_perform_ref_spad_management+0x24c> + 8005ece: 2601 movs r6, #1 + 8005ed0: 9606 str r6, [sp, #24] + 8005ed2: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 + 8005ed6: 4543 cmp r3, r8 + 8005ed8: d260 bcs.n 8005f9c <VL53L0X_perform_ref_spad_management+0x216> + 8005eda: eba3 0308 sub.w r3, r3, r8 + 8005ede: ea83 72e3 eor.w r2, r3, r3, asr #31 + 8005ee2: eba2 72e3 sub.w r2, r2, r3, asr #31 + 8005ee6: f89d 6018 ldrb.w r6, [sp, #24] + 8005eea: 9209 str r2, [sp, #36] ; 0x24 + 8005eec: f505 7392 add.w r3, r5, #292 ; 0x124 + 8005ef0: f04f 0b03 mov.w fp, #3 + 8005ef4: 9307 str r3, [sp, #28] + 8005ef6: 9b07 ldr r3, [sp, #28] + 8005ef8: 6818 ldr r0, [r3, #0] + 8005efa: 889b ldrh r3, [r3, #4] + 8005efc: 9010 str r0, [sp, #64] ; 0x40 + 8005efe: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 + 8005f02: 463a mov r2, r7 + 8005f04: ab0f add r3, sp, #60 ; 0x3c + 8005f06: 2106 movs r1, #6 + 8005f08: 4650 mov r0, sl + 8005f0a: f7ff fd0c bl 8005926 <get_next_good_spad> + 8005f0e: 9f0f ldr r7, [sp, #60] ; 0x3c + 8005f10: 1c7b adds r3, r7, #1 + 8005f12: d056 beq.n 8005fc2 <VL53L0X_perform_ref_spad_management+0x23c> + 8005f14: f107 00b4 add.w r0, r7, #180 ; 0xb4 + 8005f18: f7ff fd28 bl 800596c <is_aperture> + 8005f1c: 9b06 ldr r3, [sp, #24] + 8005f1e: 4298 cmp r0, r3 + 8005f20: d13c bne.n 8005f9c <VL53L0X_perform_ref_spad_management+0x216> + 8005f22: f10b 0301 add.w r3, fp, #1 + 8005f26: 463a mov r2, r7 + 8005f28: 4648 mov r0, r9 + 8005f2a: 9308 str r3, [sp, #32] + 8005f2c: f7ff fd28 bl 8005980 <enable_spad_bit> + 8005f30: 2800 cmp r0, #0 + 8005f32: d149 bne.n 8005fc8 <VL53L0X_perform_ref_spad_management+0x242> + 8005f34: 4649 mov r1, r9 + 8005f36: 4628 mov r0, r5 + 8005f38: f7ff fd34 bl 80059a4 <set_ref_spad_map> + 8005f3c: 2800 cmp r0, #0 + 8005f3e: d143 bne.n 8005fc8 <VL53L0X_perform_ref_spad_management+0x242> + 8005f40: f10d 0136 add.w r1, sp, #54 ; 0x36 + 8005f44: 4628 mov r0, r5 + 8005f46: f7ff fd7f bl 8005a48 <perform_ref_signal_measurement> + 8005f4a: 2800 cmp r0, #0 + 8005f4c: d13c bne.n 8005fc8 <VL53L0X_perform_ref_spad_management+0x242> + 8005f4e: f8bd 2036 ldrh.w r2, [sp, #54] ; 0x36 + 8005f52: eba2 0308 sub.w r3, r2, r8 + 8005f56: 2b00 cmp r3, #0 + 8005f58: bfb8 it lt + 8005f5a: 425b neglt r3, r3 + 8005f5c: 4542 cmp r2, r8 + 8005f5e: d916 bls.n 8005f8e <VL53L0X_perform_ref_spad_management+0x208> + 8005f60: 9a09 ldr r2, [sp, #36] ; 0x24 + 8005f62: 4293 cmp r3, r2 + 8005f64: d918 bls.n 8005f98 <VL53L0X_perform_ref_spad_management+0x212> + 8005f66: a910 add r1, sp, #64 ; 0x40 + 8005f68: 4628 mov r0, r5 + 8005f6a: f7ff fd1b bl 80059a4 <set_ref_spad_map> + 8005f6e: 9a07 ldr r2, [sp, #28] + 8005f70: 9907 ldr r1, [sp, #28] + 8005f72: 4603 mov r3, r0 + 8005f74: 9810 ldr r0, [sp, #64] ; 0x40 + 8005f76: 6010 str r0, [r2, #0] + 8005f78: f8bd 2044 ldrh.w r2, [sp, #68] ; 0x44 + 8005f7c: 808a strh r2, [r1, #4] + 8005f7e: b16b cbz r3, 8005f9c <VL53L0X_perform_ref_spad_management+0x216> + 8005f80: 461c mov r4, r3 + 8005f82: 4620 mov r0, r4 + 8005f84: b013 add sp, #76 ; 0x4c + 8005f86: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8005f8a: 3701 adds r7, #1 + 8005f8c: e778 b.n 8005e80 <VL53L0X_perform_ref_spad_management+0xfa> + 8005f8e: f8dd b020 ldr.w fp, [sp, #32] + 8005f92: 9309 str r3, [sp, #36] ; 0x24 + 8005f94: 3701 adds r7, #1 + 8005f96: e7ae b.n 8005ef6 <VL53L0X_perform_ref_spad_management+0x170> + 8005f98: f8dd b020 ldr.w fp, [sp, #32] + 8005f9c: 9b0a ldr r3, [sp, #40] ; 0x28 + 8005f9e: f8c3 b000 str.w fp, [r3] + 8005fa2: 9b0b ldr r3, [sp, #44] ; 0x2c + 8005fa4: 701e strb r6, [r3, #0] + 8005fa6: 2301 movs r3, #1 + 8005fa8: f885 3115 strb.w r3, [r5, #277] ; 0x115 + 8005fac: 9b0a ldr r3, [sp, #40] ; 0x28 + 8005fae: 681b ldr r3, [r3, #0] + 8005fb0: f885 3113 strb.w r3, [r5, #275] ; 0x113 + 8005fb4: 9b0b ldr r3, [sp, #44] ; 0x2c + 8005fb6: 781b ldrb r3, [r3, #0] + 8005fb8: f885 3114 strb.w r3, [r5, #276] ; 0x114 + 8005fbc: e7e1 b.n 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005fbe: 4604 mov r4, r0 + 8005fc0: e7df b.n 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005fc2: f06f 0431 mvn.w r4, #49 ; 0x31 + 8005fc6: e7dc b.n 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005fc8: 4604 mov r4, r0 + 8005fca: e7da b.n 8005f82 <VL53L0X_perform_ref_spad_management+0x1fc> + 8005fcc: 2600 movs r6, #0 + 8005fce: 46b3 mov fp, r6 + 8005fd0: e77e b.n 8005ed0 <VL53L0X_perform_ref_spad_management+0x14a> + 8005fd2: 2301 movs r3, #1 + 8005fd4: 4683 mov fp, r0 + 8005fd6: 9306 str r3, [sp, #24] + 8005fd8: e77b b.n 8005ed2 <VL53L0X_perform_ref_spad_management+0x14c> + +08005fda <VL53L0X_measurement_poll_for_completion>: + 8005fda: b537 push {r0, r1, r2, r4, r5, lr} + 8005fdc: 2300 movs r3, #0 + 8005fde: 4604 mov r4, r0 + 8005fe0: f88d 3007 strb.w r3, [sp, #7] + 8005fe4: f44f 65fa mov.w r5, #2000 ; 0x7d0 + 8005fe8: f10d 0107 add.w r1, sp, #7 + 8005fec: 4620 mov r0, r4 + 8005fee: f7ff fc60 bl 80058b2 <VL53L0X_GetMeasurementDataReady> + 8005ff2: b958 cbnz r0, 800600c <VL53L0X_measurement_poll_for_completion+0x32> + 8005ff4: f89d 3007 ldrb.w r3, [sp, #7] + 8005ff8: 2b01 cmp r3, #1 + 8005ffa: d007 beq.n 800600c <VL53L0X_measurement_poll_for_completion+0x32> + 8005ffc: 3d01 subs r5, #1 + 8005ffe: d003 beq.n 8006008 <VL53L0X_measurement_poll_for_completion+0x2e> + 8006000: 4620 mov r0, r4 + 8006002: f001 f9e5 bl 80073d0 <VL53L0X_PollingDelay> + 8006006: e7ef b.n 8005fe8 <VL53L0X_measurement_poll_for_completion+0xe> + 8006008: f06f 0006 mvn.w r0, #6 + 800600c: b003 add sp, #12 + 800600e: bd30 pop {r4, r5, pc} + +08006010 <VL53L0X_isqrt>: + 8006010: 4602 mov r2, r0 + 8006012: f04f 4380 mov.w r3, #1073741824 ; 0x40000000 + 8006016: 4293 cmp r3, r2 + 8006018: d802 bhi.n 8006020 <VL53L0X_isqrt+0x10> + 800601a: 2000 movs r0, #0 + 800601c: b913 cbnz r3, 8006024 <VL53L0X_isqrt+0x14> + 800601e: 4770 bx lr + 8006020: 089b lsrs r3, r3, #2 + 8006022: e7f8 b.n 8006016 <VL53L0X_isqrt+0x6> + 8006024: 18c1 adds r1, r0, r3 + 8006026: 4291 cmp r1, r2 + 8006028: ea4f 0050 mov.w r0, r0, lsr #1 + 800602c: bf9c itt ls + 800602e: 18c0 addls r0, r0, r3 + 8006030: 1a52 subls r2, r2, r1 + 8006032: 089b lsrs r3, r3, #2 + 8006034: e7f2 b.n 800601c <VL53L0X_isqrt+0xc> + +08006036 <VL53L0X_device_read_strobe>: + 8006036: b573 push {r0, r1, r4, r5, r6, lr} + 8006038: 2200 movs r2, #0 + 800603a: 2183 movs r1, #131 ; 0x83 + 800603c: 4605 mov r5, r0 + 800603e: f001 f933 bl 80072a8 <VL53L0X_WrByte> + 8006042: 4604 mov r4, r0 + 8006044: b988 cbnz r0, 800606a <VL53L0X_device_read_strobe+0x34> + 8006046: f44f 66fa mov.w r6, #2000 ; 0x7d0 + 800604a: f10d 0207 add.w r2, sp, #7 + 800604e: 2183 movs r1, #131 ; 0x83 + 8006050: 4628 mov r0, r5 + 8006052: f001 f94b bl 80072ec <VL53L0X_RdByte> + 8006056: f89d 3007 ldrb.w r3, [sp, #7] + 800605a: 4303 orrs r3, r0 + 800605c: b2db uxtb r3, r3 + 800605e: 4604 mov r4, r0 + 8006060: b91b cbnz r3, 800606a <VL53L0X_device_read_strobe+0x34> + 8006062: 3e01 subs r6, #1 + 8006064: d1f1 bne.n 800604a <VL53L0X_device_read_strobe+0x14> + 8006066: f06f 0406 mvn.w r4, #6 + 800606a: 2201 movs r2, #1 + 800606c: 2183 movs r1, #131 ; 0x83 + 800606e: 4628 mov r0, r5 + 8006070: f001 f91a bl 80072a8 <VL53L0X_WrByte> + 8006074: 4320 orrs r0, r4 + 8006076: b240 sxtb r0, r0 + 8006078: b002 add sp, #8 + 800607a: bd70 pop {r4, r5, r6, pc} + +0800607c <VL53L0X_get_info_from_device>: + 800607c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8006080: f890 60f0 ldrb.w r6, [r0, #240] ; 0xf0 + 8006084: b091 sub sp, #68 ; 0x44 + 8006086: f04f 0900 mov.w r9, #0 + 800608a: 2e07 cmp r6, #7 + 800608c: e9cd 9907 strd r9, r9, [sp, #28] + 8006090: 4604 mov r4, r0 + 8006092: 460f mov r7, r1 + 8006094: f000 82a2 beq.w 80065dc <VL53L0X_get_info_from_device+0x560> + 8006098: 2201 movs r2, #1 + 800609a: 2180 movs r1, #128 ; 0x80 + 800609c: f001 f904 bl 80072a8 <VL53L0X_WrByte> + 80060a0: 2201 movs r2, #1 + 80060a2: 4680 mov r8, r0 + 80060a4: 21ff movs r1, #255 ; 0xff + 80060a6: 4620 mov r0, r4 + 80060a8: f001 f8fe bl 80072a8 <VL53L0X_WrByte> + 80060ac: 464a mov r2, r9 + 80060ae: ea48 0800 orr.w r8, r8, r0 + 80060b2: 4649 mov r1, r9 + 80060b4: 4620 mov r0, r4 + 80060b6: f001 f8f7 bl 80072a8 <VL53L0X_WrByte> + 80060ba: fa4f f888 sxtb.w r8, r8 + 80060be: ea48 0800 orr.w r8, r8, r0 + 80060c2: 2206 movs r2, #6 + 80060c4: 21ff movs r1, #255 ; 0xff + 80060c6: 4620 mov r0, r4 + 80060c8: f001 f8ee bl 80072a8 <VL53L0X_WrByte> + 80060cc: fa4f f888 sxtb.w r8, r8 + 80060d0: ea48 0800 orr.w r8, r8, r0 + 80060d4: f10d 0215 add.w r2, sp, #21 + 80060d8: 2183 movs r1, #131 ; 0x83 + 80060da: 4620 mov r0, r4 + 80060dc: f001 f906 bl 80072ec <VL53L0X_RdByte> + 80060e0: f89d 2015 ldrb.w r2, [sp, #21] + 80060e4: fa4f f888 sxtb.w r8, r8 + 80060e8: ea48 0800 orr.w r8, r8, r0 + 80060ec: f042 0204 orr.w r2, r2, #4 + 80060f0: 2183 movs r1, #131 ; 0x83 + 80060f2: 4620 mov r0, r4 + 80060f4: f001 f8d8 bl 80072a8 <VL53L0X_WrByte> + 80060f8: fa4f f888 sxtb.w r8, r8 + 80060fc: ea48 0800 orr.w r8, r8, r0 + 8006100: 2207 movs r2, #7 + 8006102: 21ff movs r1, #255 ; 0xff + 8006104: 4620 mov r0, r4 + 8006106: f001 f8cf bl 80072a8 <VL53L0X_WrByte> + 800610a: fa4f f888 sxtb.w r8, r8 + 800610e: 2201 movs r2, #1 + 8006110: 2181 movs r1, #129 ; 0x81 + 8006112: ea48 0800 orr.w r8, r8, r0 + 8006116: 4620 mov r0, r4 + 8006118: f001 f8c6 bl 80072a8 <VL53L0X_WrByte> + 800611c: fa4f f888 sxtb.w r8, r8 + 8006120: ea48 0800 orr.w r8, r8, r0 + 8006124: 4620 mov r0, r4 + 8006126: f001 f953 bl 80073d0 <VL53L0X_PollingDelay> + 800612a: fa4f f888 sxtb.w r8, r8 + 800612e: ea48 0800 orr.w r8, r8, r0 + 8006132: 2201 movs r2, #1 + 8006134: 2180 movs r1, #128 ; 0x80 + 8006136: 4620 mov r0, r4 + 8006138: f001 f8b6 bl 80072a8 <VL53L0X_WrByte> + 800613c: fa4f f888 sxtb.w r8, r8 + 8006140: ea48 0500 orr.w r5, r8, r0 + 8006144: f017 0b01 ands.w fp, r7, #1 + 8006148: b26d sxtb r5, r5 + 800614a: f000 821e beq.w 800658a <VL53L0X_get_info_from_device+0x50e> + 800614e: 07f2 lsls r2, r6, #31 + 8006150: f100 821e bmi.w 8006590 <VL53L0X_get_info_from_device+0x514> + 8006154: 226b movs r2, #107 ; 0x6b + 8006156: 2194 movs r1, #148 ; 0x94 + 8006158: 4620 mov r0, r4 + 800615a: f001 f8a5 bl 80072a8 <VL53L0X_WrByte> + 800615e: 4680 mov r8, r0 + 8006160: 4620 mov r0, r4 + 8006162: f7ff ff68 bl 8006036 <VL53L0X_device_read_strobe> + 8006166: aa06 add r2, sp, #24 + 8006168: ea48 0800 orr.w r8, r8, r0 + 800616c: 2190 movs r1, #144 ; 0x90 + 800616e: 4620 mov r0, r4 + 8006170: f001 f908 bl 8007384 <VL53L0X_RdDWord> + 8006174: ea45 0508 orr.w r5, r5, r8 + 8006178: 9b06 ldr r3, [sp, #24] + 800617a: b26d sxtb r5, r5 + 800617c: 2224 movs r2, #36 ; 0x24 + 800617e: 2194 movs r1, #148 ; 0x94 + 8006180: 4305 orrs r5, r0 + 8006182: 4620 mov r0, r4 + 8006184: f3c3 2a06 ubfx sl, r3, #8, #7 + 8006188: f3c3 39c0 ubfx r9, r3, #15, #1 + 800618c: f001 f88c bl 80072a8 <VL53L0X_WrByte> + 8006190: b26d sxtb r5, r5 + 8006192: 4305 orrs r5, r0 + 8006194: 4620 mov r0, r4 + 8006196: f7ff ff4e bl 8006036 <VL53L0X_device_read_strobe> + 800619a: b26d sxtb r5, r5 + 800619c: 4305 orrs r5, r0 + 800619e: aa06 add r2, sp, #24 + 80061a0: 2190 movs r1, #144 ; 0x90 + 80061a2: 4620 mov r0, r4 + 80061a4: f001 f8ee bl 8007384 <VL53L0X_RdDWord> + 80061a8: 9b06 ldr r3, [sp, #24] + 80061aa: b26d sxtb r5, r5 + 80061ac: ba1b rev r3, r3 + 80061ae: 2225 movs r2, #37 ; 0x25 + 80061b0: 2194 movs r1, #148 ; 0x94 + 80061b2: 4305 orrs r5, r0 + 80061b4: 4620 mov r0, r4 + 80061b6: 9309 str r3, [sp, #36] ; 0x24 + 80061b8: f001 f876 bl 80072a8 <VL53L0X_WrByte> + 80061bc: b26d sxtb r5, r5 + 80061be: 4305 orrs r5, r0 + 80061c0: 4620 mov r0, r4 + 80061c2: f7ff ff38 bl 8006036 <VL53L0X_device_read_strobe> + 80061c6: b26d sxtb r5, r5 + 80061c8: 4305 orrs r5, r0 + 80061ca: aa06 add r2, sp, #24 + 80061cc: 2190 movs r1, #144 ; 0x90 + 80061ce: 4620 mov r0, r4 + 80061d0: f001 f8d8 bl 8007384 <VL53L0X_RdDWord> + 80061d4: 9b06 ldr r3, [sp, #24] + 80061d6: b26d sxtb r5, r5 + 80061d8: 0e1a lsrs r2, r3, #24 + 80061da: 4305 orrs r5, r0 + 80061dc: 0c1b lsrs r3, r3, #16 + 80061de: b26d sxtb r5, r5 + 80061e0: f88d 2028 strb.w r2, [sp, #40] ; 0x28 + 80061e4: f88d 3029 strb.w r3, [sp, #41] ; 0x29 + 80061e8: f017 0302 ands.w r3, r7, #2 + 80061ec: 9302 str r3, [sp, #8] + 80061ee: f000 80db beq.w 80063a8 <VL53L0X_get_info_from_device+0x32c> + 80061f2: f016 0802 ands.w r8, r6, #2 + 80061f6: f040 80d7 bne.w 80063a8 <VL53L0X_get_info_from_device+0x32c> + 80061fa: 2202 movs r2, #2 + 80061fc: 2194 movs r1, #148 ; 0x94 + 80061fe: 4620 mov r0, r4 + 8006200: f001 f852 bl 80072a8 <VL53L0X_WrByte> + 8006204: 9001 str r0, [sp, #4] + 8006206: 4620 mov r0, r4 + 8006208: f7ff ff15 bl 8006036 <VL53L0X_device_read_strobe> + 800620c: 9b01 ldr r3, [sp, #4] + 800620e: f10d 0216 add.w r2, sp, #22 + 8006212: 4303 orrs r3, r0 + 8006214: 2190 movs r1, #144 ; 0x90 + 8006216: 4620 mov r0, r4 + 8006218: 431d orrs r5, r3 + 800621a: f001 f867 bl 80072ec <VL53L0X_RdByte> + 800621e: b26d sxtb r5, r5 + 8006220: 227b movs r2, #123 ; 0x7b + 8006222: 2194 movs r1, #148 ; 0x94 + 8006224: 4305 orrs r5, r0 + 8006226: 4620 mov r0, r4 + 8006228: f001 f83e bl 80072a8 <VL53L0X_WrByte> + 800622c: b26d sxtb r5, r5 + 800622e: 4305 orrs r5, r0 + 8006230: 4620 mov r0, r4 + 8006232: f7ff ff00 bl 8006036 <VL53L0X_device_read_strobe> + 8006236: b26d sxtb r5, r5 + 8006238: 4305 orrs r5, r0 + 800623a: f10d 0217 add.w r2, sp, #23 + 800623e: 2190 movs r1, #144 ; 0x90 + 8006240: 4620 mov r0, r4 + 8006242: f001 f853 bl 80072ec <VL53L0X_RdByte> + 8006246: b26d sxtb r5, r5 + 8006248: 2277 movs r2, #119 ; 0x77 + 800624a: 2194 movs r1, #148 ; 0x94 + 800624c: 4305 orrs r5, r0 + 800624e: 4620 mov r0, r4 + 8006250: f001 f82a bl 80072a8 <VL53L0X_WrByte> + 8006254: b26d sxtb r5, r5 + 8006256: 4305 orrs r5, r0 + 8006258: 4620 mov r0, r4 + 800625a: f7ff feec bl 8006036 <VL53L0X_device_read_strobe> + 800625e: b26d sxtb r5, r5 + 8006260: 4305 orrs r5, r0 + 8006262: aa06 add r2, sp, #24 + 8006264: 2190 movs r1, #144 ; 0x90 + 8006266: 4620 mov r0, r4 + 8006268: f001 f88c bl 8007384 <VL53L0X_RdDWord> + 800626c: 9b06 ldr r3, [sp, #24] + 800626e: 0e5a lsrs r2, r3, #25 + 8006270: f88d 202c strb.w r2, [sp, #44] ; 0x2c + 8006274: f3c3 4286 ubfx r2, r3, #18, #7 + 8006278: f88d 202d strb.w r2, [sp, #45] ; 0x2d + 800627c: f3c3 22c6 ubfx r2, r3, #11, #7 + 8006280: f88d 202e strb.w r2, [sp, #46] ; 0x2e + 8006284: b26d sxtb r5, r5 + 8006286: f3c3 1206 ubfx r2, r3, #4, #7 + 800628a: 00db lsls r3, r3, #3 + 800628c: f003 0378 and.w r3, r3, #120 ; 0x78 + 8006290: 2194 movs r1, #148 ; 0x94 + 8006292: 4305 orrs r5, r0 + 8006294: f88d 202f strb.w r2, [sp, #47] ; 0x2f + 8006298: 4620 mov r0, r4 + 800629a: 2278 movs r2, #120 ; 0x78 + 800629c: f88d 3015 strb.w r3, [sp, #21] + 80062a0: f001 f802 bl 80072a8 <VL53L0X_WrByte> + 80062a4: b26d sxtb r5, r5 + 80062a6: 4305 orrs r5, r0 + 80062a8: 4620 mov r0, r4 + 80062aa: f7ff fec4 bl 8006036 <VL53L0X_device_read_strobe> + 80062ae: b26d sxtb r5, r5 + 80062b0: 4305 orrs r5, r0 + 80062b2: aa06 add r2, sp, #24 + 80062b4: 2190 movs r1, #144 ; 0x90 + 80062b6: 4620 mov r0, r4 + 80062b8: f001 f864 bl 8007384 <VL53L0X_RdDWord> + 80062bc: 9b06 ldr r3, [sp, #24] + 80062be: f89d 2015 ldrb.w r2, [sp, #21] + 80062c2: eb02 7253 add.w r2, r2, r3, lsr #29 + 80062c6: f88d 2030 strb.w r2, [sp, #48] ; 0x30 + 80062ca: f3c3 5286 ubfx r2, r3, #22, #7 + 80062ce: f88d 2031 strb.w r2, [sp, #49] ; 0x31 + 80062d2: f3c3 32c6 ubfx r2, r3, #15, #7 + 80062d6: f88d 2032 strb.w r2, [sp, #50] ; 0x32 + 80062da: f3c3 2206 ubfx r2, r3, #8, #7 + 80062de: f88d 2033 strb.w r2, [sp, #51] ; 0x33 + 80062e2: b26d sxtb r5, r5 + 80062e4: f3c3 0246 ubfx r2, r3, #1, #7 + 80062e8: 019b lsls r3, r3, #6 + 80062ea: f003 0340 and.w r3, r3, #64 ; 0x40 + 80062ee: 2194 movs r1, #148 ; 0x94 + 80062f0: 4305 orrs r5, r0 + 80062f2: f88d 2034 strb.w r2, [sp, #52] ; 0x34 + 80062f6: 4620 mov r0, r4 + 80062f8: 2279 movs r2, #121 ; 0x79 + 80062fa: f88d 3015 strb.w r3, [sp, #21] + 80062fe: f000 ffd3 bl 80072a8 <VL53L0X_WrByte> + 8006302: b26d sxtb r5, r5 + 8006304: 4305 orrs r5, r0 + 8006306: 4620 mov r0, r4 + 8006308: f7ff fe95 bl 8006036 <VL53L0X_device_read_strobe> + 800630c: b26d sxtb r5, r5 + 800630e: 4305 orrs r5, r0 + 8006310: aa06 add r2, sp, #24 + 8006312: 2190 movs r1, #144 ; 0x90 + 8006314: 4620 mov r0, r4 + 8006316: f001 f835 bl 8007384 <VL53L0X_RdDWord> + 800631a: 9b06 ldr r3, [sp, #24] + 800631c: f89d 2015 ldrb.w r2, [sp, #21] + 8006320: eb02 6293 add.w r2, r2, r3, lsr #26 + 8006324: f88d 2035 strb.w r2, [sp, #53] ; 0x35 + 8006328: f3c3 42c6 ubfx r2, r3, #19, #7 + 800632c: f88d 2036 strb.w r2, [sp, #54] ; 0x36 + 8006330: f3c3 3206 ubfx r2, r3, #12, #7 + 8006334: f88d 2037 strb.w r2, [sp, #55] ; 0x37 + 8006338: b26d sxtb r5, r5 + 800633a: f3c3 1246 ubfx r2, r3, #5, #7 + 800633e: 009b lsls r3, r3, #2 + 8006340: f003 037c and.w r3, r3, #124 ; 0x7c + 8006344: 2194 movs r1, #148 ; 0x94 + 8006346: 4305 orrs r5, r0 + 8006348: f88d 2038 strb.w r2, [sp, #56] ; 0x38 + 800634c: 4620 mov r0, r4 + 800634e: 227a movs r2, #122 ; 0x7a + 8006350: f88d 3015 strb.w r3, [sp, #21] + 8006354: f000 ffa8 bl 80072a8 <VL53L0X_WrByte> + 8006358: b26d sxtb r5, r5 + 800635a: 4305 orrs r5, r0 + 800635c: 4620 mov r0, r4 + 800635e: f7ff fe6a bl 8006036 <VL53L0X_device_read_strobe> + 8006362: b26d sxtb r5, r5 + 8006364: 4305 orrs r5, r0 + 8006366: aa06 add r2, sp, #24 + 8006368: 2190 movs r1, #144 ; 0x90 + 800636a: 4620 mov r0, r4 + 800636c: f001 f80a bl 8007384 <VL53L0X_RdDWord> + 8006370: 9b06 ldr r3, [sp, #24] + 8006372: f89d 2015 ldrb.w r2, [sp, #21] + 8006376: f88d 803e strb.w r8, [sp, #62] ; 0x3e + 800637a: eb02 7293 add.w r2, r2, r3, lsr #30 + 800637e: f88d 2039 strb.w r2, [sp, #57] ; 0x39 + 8006382: f3c3 52c6 ubfx r2, r3, #23, #7 + 8006386: b26d sxtb r5, r5 + 8006388: f88d 203a strb.w r2, [sp, #58] ; 0x3a + 800638c: f3c3 4206 ubfx r2, r3, #16, #7 + 8006390: 4305 orrs r5, r0 + 8006392: f88d 203b strb.w r2, [sp, #59] ; 0x3b + 8006396: f3c3 2246 ubfx r2, r3, #9, #7 + 800639a: f3c3 0386 ubfx r3, r3, #2, #7 + 800639e: b26d sxtb r5, r5 + 80063a0: f88d 203c strb.w r2, [sp, #60] ; 0x3c + 80063a4: f88d 303d strb.w r3, [sp, #61] ; 0x3d + 80063a8: f017 0304 ands.w r3, r7, #4 + 80063ac: 9301 str r3, [sp, #4] + 80063ae: f000 80f1 beq.w 8006594 <VL53L0X_get_info_from_device+0x518> + 80063b2: 0773 lsls r3, r6, #29 + 80063b4: f100 80ee bmi.w 8006594 <VL53L0X_get_info_from_device+0x518> + 80063b8: 227b movs r2, #123 ; 0x7b + 80063ba: 2194 movs r1, #148 ; 0x94 + 80063bc: 4620 mov r0, r4 + 80063be: f000 ff73 bl 80072a8 <VL53L0X_WrByte> + 80063c2: 4680 mov r8, r0 + 80063c4: 4620 mov r0, r4 + 80063c6: f7ff fe36 bl 8006036 <VL53L0X_device_read_strobe> + 80063ca: aa07 add r2, sp, #28 + 80063cc: ea48 0800 orr.w r8, r8, r0 + 80063d0: 2190 movs r1, #144 ; 0x90 + 80063d2: 4620 mov r0, r4 + 80063d4: f000 ffd6 bl 8007384 <VL53L0X_RdDWord> + 80063d8: ea45 0808 orr.w r8, r5, r8 + 80063dc: fa4f f888 sxtb.w r8, r8 + 80063e0: ea48 0500 orr.w r5, r8, r0 + 80063e4: 227c movs r2, #124 ; 0x7c + 80063e6: 2194 movs r1, #148 ; 0x94 + 80063e8: 4620 mov r0, r4 + 80063ea: f000 ff5d bl 80072a8 <VL53L0X_WrByte> + 80063ee: b26d sxtb r5, r5 + 80063f0: 4305 orrs r5, r0 + 80063f2: 4620 mov r0, r4 + 80063f4: f7ff fe1f bl 8006036 <VL53L0X_device_read_strobe> + 80063f8: b26d sxtb r5, r5 + 80063fa: 4305 orrs r5, r0 + 80063fc: aa08 add r2, sp, #32 + 80063fe: 2190 movs r1, #144 ; 0x90 + 8006400: 4620 mov r0, r4 + 8006402: f000 ffbf bl 8007384 <VL53L0X_RdDWord> + 8006406: b26d sxtb r5, r5 + 8006408: 2273 movs r2, #115 ; 0x73 + 800640a: 2194 movs r1, #148 ; 0x94 + 800640c: 4305 orrs r5, r0 + 800640e: 4620 mov r0, r4 + 8006410: f000 ff4a bl 80072a8 <VL53L0X_WrByte> + 8006414: b26d sxtb r5, r5 + 8006416: 4305 orrs r5, r0 + 8006418: 4620 mov r0, r4 + 800641a: f7ff fe0c bl 8006036 <VL53L0X_device_read_strobe> + 800641e: b26d sxtb r5, r5 + 8006420: 4305 orrs r5, r0 + 8006422: aa06 add r2, sp, #24 + 8006424: 2190 movs r1, #144 ; 0x90 + 8006426: 4620 mov r0, r4 + 8006428: f000 ffac bl 8007384 <VL53L0X_RdDWord> + 800642c: 9b06 ldr r3, [sp, #24] + 800642e: b26d sxtb r5, r5 + 8006430: 021b lsls r3, r3, #8 + 8006432: 2274 movs r2, #116 ; 0x74 + 8006434: 2194 movs r1, #148 ; 0x94 + 8006436: 4305 orrs r5, r0 + 8006438: 4620 mov r0, r4 + 800643a: fa1f f883 uxth.w r8, r3 + 800643e: f000 ff33 bl 80072a8 <VL53L0X_WrByte> + 8006442: b26d sxtb r5, r5 + 8006444: 4305 orrs r5, r0 + 8006446: 4620 mov r0, r4 + 8006448: f7ff fdf5 bl 8006036 <VL53L0X_device_read_strobe> + 800644c: b26d sxtb r5, r5 + 800644e: 4305 orrs r5, r0 + 8006450: aa06 add r2, sp, #24 + 8006452: 2190 movs r1, #144 ; 0x90 + 8006454: 4620 mov r0, r4 + 8006456: f000 ff95 bl 8007384 <VL53L0X_RdDWord> + 800645a: b26d sxtb r5, r5 + 800645c: f89d 301b ldrb.w r3, [sp, #27] + 8006460: 2275 movs r2, #117 ; 0x75 + 8006462: 2194 movs r1, #148 ; 0x94 + 8006464: 4305 orrs r5, r0 + 8006466: 4620 mov r0, r4 + 8006468: ea43 0808 orr.w r8, r3, r8 + 800646c: f000 ff1c bl 80072a8 <VL53L0X_WrByte> + 8006470: b26d sxtb r5, r5 + 8006472: 4305 orrs r5, r0 + 8006474: 4620 mov r0, r4 + 8006476: f7ff fdde bl 8006036 <VL53L0X_device_read_strobe> + 800647a: b26d sxtb r5, r5 + 800647c: 4305 orrs r5, r0 + 800647e: aa06 add r2, sp, #24 + 8006480: 2190 movs r1, #144 ; 0x90 + 8006482: 4620 mov r0, r4 + 8006484: f000 ff7e bl 8007384 <VL53L0X_RdDWord> + 8006488: 9b06 ldr r3, [sp, #24] + 800648a: b26d sxtb r5, r5 + 800648c: 021b lsls r3, r3, #8 + 800648e: b29b uxth r3, r3 + 8006490: 2276 movs r2, #118 ; 0x76 + 8006492: 2194 movs r1, #148 ; 0x94 + 8006494: 4305 orrs r5, r0 + 8006496: 4620 mov r0, r4 + 8006498: 9303 str r3, [sp, #12] + 800649a: f000 ff05 bl 80072a8 <VL53L0X_WrByte> + 800649e: b26d sxtb r5, r5 + 80064a0: 4305 orrs r5, r0 + 80064a2: 4620 mov r0, r4 + 80064a4: f7ff fdc7 bl 8006036 <VL53L0X_device_read_strobe> + 80064a8: b26d sxtb r5, r5 + 80064aa: 4305 orrs r5, r0 + 80064ac: aa06 add r2, sp, #24 + 80064ae: 2190 movs r1, #144 ; 0x90 + 80064b0: 4620 mov r0, r4 + 80064b2: f000 ff67 bl 8007384 <VL53L0X_RdDWord> + 80064b6: b26d sxtb r5, r5 + 80064b8: f89d 201b ldrb.w r2, [sp, #27] + 80064bc: 9b03 ldr r3, [sp, #12] + 80064be: 4305 orrs r5, r0 + 80064c0: b26d sxtb r5, r5 + 80064c2: 4313 orrs r3, r2 + 80064c4: 2200 movs r2, #0 + 80064c6: 2181 movs r1, #129 ; 0x81 + 80064c8: 4620 mov r0, r4 + 80064ca: 9303 str r3, [sp, #12] + 80064cc: f000 feec bl 80072a8 <VL53L0X_WrByte> + 80064d0: 2206 movs r2, #6 + 80064d2: 4305 orrs r5, r0 + 80064d4: 21ff movs r1, #255 ; 0xff + 80064d6: 4620 mov r0, r4 + 80064d8: f000 fee6 bl 80072a8 <VL53L0X_WrByte> + 80064dc: b26d sxtb r5, r5 + 80064de: 4305 orrs r5, r0 + 80064e0: f10d 0215 add.w r2, sp, #21 + 80064e4: 2183 movs r1, #131 ; 0x83 + 80064e6: 4620 mov r0, r4 + 80064e8: f000 ff00 bl 80072ec <VL53L0X_RdByte> + 80064ec: f89d 2015 ldrb.w r2, [sp, #21] + 80064f0: b26d sxtb r5, r5 + 80064f2: 4305 orrs r5, r0 + 80064f4: f002 02fb and.w r2, r2, #251 ; 0xfb + 80064f8: 2183 movs r1, #131 ; 0x83 + 80064fa: 4620 mov r0, r4 + 80064fc: f000 fed4 bl 80072a8 <VL53L0X_WrByte> + 8006500: b26d sxtb r5, r5 + 8006502: 4305 orrs r5, r0 + 8006504: 2201 movs r2, #1 + 8006506: 21ff movs r1, #255 ; 0xff + 8006508: 4620 mov r0, r4 + 800650a: f000 fecd bl 80072a8 <VL53L0X_WrByte> + 800650e: b26d sxtb r5, r5 + 8006510: 4305 orrs r5, r0 + 8006512: 2201 movs r2, #1 + 8006514: 2100 movs r1, #0 + 8006516: 4620 mov r0, r4 + 8006518: f000 fec6 bl 80072a8 <VL53L0X_WrByte> + 800651c: b26d sxtb r5, r5 + 800651e: 4305 orrs r5, r0 + 8006520: 2200 movs r2, #0 + 8006522: 21ff movs r1, #255 ; 0xff + 8006524: 4620 mov r0, r4 + 8006526: f000 febf bl 80072a8 <VL53L0X_WrByte> + 800652a: b26d sxtb r5, r5 + 800652c: 4305 orrs r5, r0 + 800652e: 2200 movs r2, #0 + 8006530: 2180 movs r1, #128 ; 0x80 + 8006532: 4620 mov r0, r4 + 8006534: f000 feb8 bl 80072a8 <VL53L0X_WrByte> + 8006538: b26d sxtb r5, r5 + 800653a: 4305 orrs r5, r0 + 800653c: b26d sxtb r5, r5 + 800653e: 9b03 ldr r3, [sp, #12] + 8006540: b9fd cbnz r5, 8006582 <VL53L0X_get_info_from_device+0x506> + 8006542: f1bb 0f00 cmp.w fp, #0 + 8006546: d129 bne.n 800659c <VL53L0X_get_info_from_device+0x520> + 8006548: 9a02 ldr r2, [sp, #8] + 800654a: bbaa cbnz r2, 80065b8 <VL53L0X_get_info_from_device+0x53c> + 800654c: 9a01 ldr r2, [sp, #4] + 800654e: b1aa cbz r2, 800657c <VL53L0X_get_info_from_device+0x500> + 8006550: 0772 lsls r2, r6, #29 + 8006552: d413 bmi.n 800657c <VL53L0X_get_info_from_device+0x500> + 8006554: 9a07 ldr r2, [sp, #28] + 8006556: f8c4 2118 str.w r2, [r4, #280] ; 0x118 + 800655a: 9a08 ldr r2, [sp, #32] + 800655c: f8c4 211c str.w r2, [r4, #284] ; 0x11c + 8006560: ea4f 2248 mov.w r2, r8, lsl #9 + 8006564: f8c4 2120 str.w r2, [r4, #288] ; 0x120 + 8006568: b13b cbz r3, 800657a <VL53L0X_get_info_from_device+0x4fe> + 800656a: f5a3 53c8 sub.w r3, r3, #6400 ; 0x1900 + 800656e: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8006572: 4353 muls r3, r2 + 8006574: 091b lsrs r3, r3, #4 + 8006576: 425b negs r3, r3 + 8006578: b21b sxth r3, r3 + 800657a: 60e3 str r3, [r4, #12] + 800657c: 433e orrs r6, r7 + 800657e: f884 60f0 strb.w r6, [r4, #240] ; 0xf0 + 8006582: 4628 mov r0, r5 + 8006584: b011 add sp, #68 ; 0x44 + 8006586: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800658a: 46d9 mov r9, fp + 800658c: 46da mov sl, fp + 800658e: e62b b.n 80061e8 <VL53L0X_get_info_from_device+0x16c> + 8006590: 46ca mov sl, r9 + 8006592: e629 b.n 80061e8 <VL53L0X_get_info_from_device+0x16c> + 8006594: f04f 0800 mov.w r8, #0 + 8006598: 4643 mov r3, r8 + 800659a: e793 b.n 80064c4 <VL53L0X_get_info_from_device+0x448> + 800659c: 07f0 lsls r0, r6, #31 + 800659e: d4d3 bmi.n 8006548 <VL53L0X_get_info_from_device+0x4cc> + 80065a0: 9809 ldr r0, [sp, #36] ; 0x24 + 80065a2: f8bd 2028 ldrh.w r2, [sp, #40] ; 0x28 + 80065a6: f884 a113 strb.w sl, [r4, #275] ; 0x113 + 80065aa: f884 9114 strb.w r9, [r4, #276] ; 0x114 + 80065ae: f8c4 012a str.w r0, [r4, #298] ; 0x12a + 80065b2: f8a4 212e strh.w r2, [r4, #302] ; 0x12e + 80065b6: e7c7 b.n 8006548 <VL53L0X_get_info_from_device+0x4cc> + 80065b8: 07b1 lsls r1, r6, #30 + 80065ba: d4c7 bmi.n 800654c <VL53L0X_get_info_from_device+0x4d0> + 80065bc: f89d 2016 ldrb.w r2, [sp, #22] + 80065c0: f884 20f1 strb.w r2, [r4, #241] ; 0xf1 + 80065c4: f89d 2017 ldrb.w r2, [sp, #23] + 80065c8: f884 20f2 strb.w r2, [r4, #242] ; 0xf2 + 80065cc: a90b add r1, sp, #44 ; 0x2c + 80065ce: f104 00f3 add.w r0, r4, #243 ; 0xf3 + 80065d2: 9302 str r3, [sp, #8] + 80065d4: f00d fe68 bl 80142a8 <strcpy> + 80065d8: 9b02 ldr r3, [sp, #8] + 80065da: e7b7 b.n 800654c <VL53L0X_get_info_from_device+0x4d0> + 80065dc: 464d mov r5, r9 + 80065de: e7d0 b.n 8006582 <VL53L0X_get_info_from_device+0x506> + +080065e0 <VL53L0X_encode_timeout>: + 80065e0: b150 cbz r0, 80065f8 <VL53L0X_encode_timeout+0x18> + 80065e2: 3801 subs r0, #1 + 80065e4: 2300 movs r3, #0 + 80065e6: f030 01ff bics.w r1, r0, #255 ; 0xff + 80065ea: b29a uxth r2, r3 + 80065ec: f103 0301 add.w r3, r3, #1 + 80065f0: d103 bne.n 80065fa <VL53L0X_encode_timeout+0x1a> + 80065f2: eb00 2002 add.w r0, r0, r2, lsl #8 + 80065f6: b280 uxth r0, r0 + 80065f8: 4770 bx lr + 80065fa: 0840 lsrs r0, r0, #1 + 80065fc: e7f3 b.n 80065e6 <VL53L0X_encode_timeout+0x6> + +080065fe <VL53L0X_decode_timeout>: + 80065fe: b2c3 uxtb r3, r0 + 8006600: 0a00 lsrs r0, r0, #8 + 8006602: fa03 f000 lsl.w r0, r3, r0 + 8006606: 3001 adds r0, #1 + 8006608: 4770 bx lr + ... + +0800660c <VL53L0X_calc_timeout_mclks>: + 800660c: 4b08 ldr r3, [pc, #32] ; (8006630 <VL53L0X_calc_timeout_mclks+0x24>) + 800660e: 435a muls r2, r3 + 8006610: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8006614: f502 72fa add.w r2, r2, #500 ; 0x1f4 + 8006618: f44f 60fa mov.w r0, #2000 ; 0x7d0 + 800661c: fbb2 f0f0 udiv r0, r2, r0 + 8006620: fbb2 f2f3 udiv r2, r2, r3 + 8006624: fb03 0001 mla r0, r3, r1, r0 + 8006628: fbb0 f0f2 udiv r0, r0, r2 + 800662c: 4770 bx lr + 800662e: bf00 nop + 8006630: 003a2f00 .word 0x003a2f00 + +08006634 <VL53L0X_calc_timeout_us>: + 8006634: 4b06 ldr r3, [pc, #24] ; (8006650 <VL53L0X_calc_timeout_us+0x1c>) + 8006636: 435a muls r2, r3 + 8006638: f44f 707a mov.w r0, #1000 ; 0x3e8 + 800663c: f502 72fa add.w r2, r2, #500 ; 0x1f4 + 8006640: fbb2 f2f0 udiv r2, r2, r0 + 8006644: 434a muls r2, r1 + 8006646: f502 72fa add.w r2, r2, #500 ; 0x1f4 + 800664a: fbb2 f0f0 udiv r0, r2, r0 + 800664e: 4770 bx lr + 8006650: 003a2f00 .word 0x003a2f00 + +08006654 <get_sequence_step_timeout>: + 8006654: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} + 8006658: 2902 cmp r1, #2 + 800665a: f04f 0500 mov.w r5, #0 + 800665e: 4607 mov r7, r0 + 8006660: 4616 mov r6, r2 + 8006662: f88d 5003 strb.w r5, [sp, #3] + 8006666: f8ad 5004 strh.w r5, [sp, #4] + 800666a: d81c bhi.n 80066a6 <get_sequence_step_timeout+0x52> + 800666c: f10d 0202 add.w r2, sp, #2 + 8006670: 4629 mov r1, r5 + 8006672: f7fe fba1 bl 8004db8 <VL53L0X_GetVcselPulsePeriod> + 8006676: 4604 mov r4, r0 + 8006678: b930 cbnz r0, 8006688 <get_sequence_step_timeout+0x34> + 800667a: f10d 0203 add.w r2, sp, #3 + 800667e: 2146 movs r1, #70 ; 0x46 + 8006680: 4638 mov r0, r7 + 8006682: f000 fe33 bl 80072ec <VL53L0X_RdByte> + 8006686: 4604 mov r4, r0 + 8006688: f89d 0003 ldrb.w r0, [sp, #3] + 800668c: f7ff ffb7 bl 80065fe <VL53L0X_decode_timeout> + 8006690: b281 uxth r1, r0 + 8006692: f89d 2002 ldrb.w r2, [sp, #2] + 8006696: 4638 mov r0, r7 + 8006698: f7ff ffcc bl 8006634 <VL53L0X_calc_timeout_us> + 800669c: 6030 str r0, [r6, #0] + 800669e: 4620 mov r0, r4 + 80066a0: b004 add sp, #16 + 80066a2: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 80066a6: 2903 cmp r1, #3 + 80066a8: d118 bne.n 80066dc <get_sequence_step_timeout+0x88> + 80066aa: f10d 0202 add.w r2, sp, #2 + 80066ae: 4629 mov r1, r5 + 80066b0: f7fe fb82 bl 8004db8 <VL53L0X_GetVcselPulsePeriod> + 80066b4: 4604 mov r4, r0 + 80066b6: 2800 cmp r0, #0 + 80066b8: d146 bne.n 8006748 <get_sequence_step_timeout+0xf4> + 80066ba: 4601 mov r1, r0 + 80066bc: f10d 0202 add.w r2, sp, #2 + 80066c0: 4638 mov r0, r7 + 80066c2: f7fe fb79 bl 8004db8 <VL53L0X_GetVcselPulsePeriod> + 80066c6: 4604 mov r4, r0 + 80066c8: b928 cbnz r0, 80066d6 <get_sequence_step_timeout+0x82> + 80066ca: aa01 add r2, sp, #4 + 80066cc: 2151 movs r1, #81 ; 0x51 + 80066ce: 4638 mov r0, r7 + 80066d0: f000 fe38 bl 8007344 <VL53L0X_RdWord> + 80066d4: 4604 mov r4, r0 + 80066d6: f8bd 0004 ldrh.w r0, [sp, #4] + 80066da: e7d7 b.n 800668c <get_sequence_step_timeout+0x38> + 80066dc: 2904 cmp r1, #4 + 80066de: d135 bne.n 800674c <get_sequence_step_timeout+0xf8> + 80066e0: a902 add r1, sp, #8 + 80066e2: f7fe fbbd bl 8004e60 <VL53L0X_GetSequenceStepEnables> + 80066e6: f89d 300b ldrb.w r3, [sp, #11] + 80066ea: b1ab cbz r3, 8006718 <get_sequence_step_timeout+0xc4> + 80066ec: f10d 0202 add.w r2, sp, #2 + 80066f0: 4629 mov r1, r5 + 80066f2: 4638 mov r0, r7 + 80066f4: f7fe fb60 bl 8004db8 <VL53L0X_GetVcselPulsePeriod> + 80066f8: 4604 mov r4, r0 + 80066fa: b958 cbnz r0, 8006714 <get_sequence_step_timeout+0xc0> + 80066fc: aa01 add r2, sp, #4 + 80066fe: 2151 movs r1, #81 ; 0x51 + 8006700: 4638 mov r0, r7 + 8006702: f000 fe1f bl 8007344 <VL53L0X_RdWord> + 8006706: 4604 mov r4, r0 + 8006708: f8bd 0004 ldrh.w r0, [sp, #4] + 800670c: f7ff ff77 bl 80065fe <VL53L0X_decode_timeout> + 8006710: b285 uxth r5, r0 + 8006712: b114 cbz r4, 800671a <get_sequence_step_timeout+0xc6> + 8006714: 2000 movs r0, #0 + 8006716: e015 b.n 8006744 <get_sequence_step_timeout+0xf0> + 8006718: 461d mov r5, r3 + 800671a: f10d 0202 add.w r2, sp, #2 + 800671e: 2101 movs r1, #1 + 8006720: 4638 mov r0, r7 + 8006722: f7fe fb49 bl 8004db8 <VL53L0X_GetVcselPulsePeriod> + 8006726: 4604 mov r4, r0 + 8006728: 2800 cmp r0, #0 + 800672a: d1f3 bne.n 8006714 <get_sequence_step_timeout+0xc0> + 800672c: f10d 0206 add.w r2, sp, #6 + 8006730: 2171 movs r1, #113 ; 0x71 + 8006732: 4638 mov r0, r7 + 8006734: f000 fe06 bl 8007344 <VL53L0X_RdWord> + 8006738: 4604 mov r4, r0 + 800673a: f8bd 0006 ldrh.w r0, [sp, #6] + 800673e: f7ff ff5e bl 80065fe <VL53L0X_decode_timeout> + 8006742: b280 uxth r0, r0 + 8006744: 1b40 subs r0, r0, r5 + 8006746: e7a3 b.n 8006690 <get_sequence_step_timeout+0x3c> + 8006748: 4628 mov r0, r5 + 800674a: e7a7 b.n 800669c <get_sequence_step_timeout+0x48> + 800674c: 4628 mov r0, r5 + 800674e: 462c mov r4, r5 + 8006750: e7a4 b.n 800669c <get_sequence_step_timeout+0x48> + +08006752 <set_sequence_step_timeout>: + 8006752: b5f0 push {r4, r5, r6, r7, lr} + 8006754: 2902 cmp r1, #2 + 8006756: b085 sub sp, #20 + 8006758: 4605 mov r5, r0 + 800675a: 4616 mov r6, r2 + 800675c: d81e bhi.n 800679c <set_sequence_step_timeout+0x4a> + 800675e: f10d 0205 add.w r2, sp, #5 + 8006762: 2100 movs r1, #0 + 8006764: f7fe fb28 bl 8004db8 <VL53L0X_GetVcselPulsePeriod> + 8006768: 4604 mov r4, r0 + 800676a: b9a0 cbnz r0, 8006796 <set_sequence_step_timeout+0x44> + 800676c: f89d 2005 ldrb.w r2, [sp, #5] + 8006770: 4631 mov r1, r6 + 8006772: 4628 mov r0, r5 + 8006774: f7ff ff4a bl 800660c <VL53L0X_calc_timeout_mclks> + 8006778: b283 uxth r3, r0 + 800677a: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 800677e: bf9a itte ls + 8006780: f100 32ff addls.w r2, r0, #4294967295 + 8006784: b2d2 uxtbls r2, r2 + 8006786: 22ff movhi r2, #255 ; 0xff + 8006788: f8a5 20d8 strh.w r2, [r5, #216] ; 0xd8 + 800678c: 2146 movs r1, #70 ; 0x46 + 800678e: 4628 mov r0, r5 + 8006790: f000 fd8a bl 80072a8 <VL53L0X_WrByte> + 8006794: 4604 mov r4, r0 + 8006796: 4620 mov r0, r4 + 8006798: b005 add sp, #20 + 800679a: bdf0 pop {r4, r5, r6, r7, pc} + 800679c: 2903 cmp r1, #3 + 800679e: d11f bne.n 80067e0 <set_sequence_step_timeout+0x8e> + 80067a0: f10d 0205 add.w r2, sp, #5 + 80067a4: 2100 movs r1, #0 + 80067a6: f7fe fb07 bl 8004db8 <VL53L0X_GetVcselPulsePeriod> + 80067aa: f89d 2005 ldrb.w r2, [sp, #5] + 80067ae: 4631 mov r1, r6 + 80067b0: 4604 mov r4, r0 + 80067b2: 4628 mov r0, r5 + 80067b4: f7ff ff2a bl 800660c <VL53L0X_calc_timeout_mclks> + 80067b8: b280 uxth r0, r0 + 80067ba: f7ff ff11 bl 80065e0 <VL53L0X_encode_timeout> + 80067be: 4602 mov r2, r0 + 80067c0: f8ad 0006 strh.w r0, [sp, #6] + 80067c4: f8a5 00d8 strh.w r0, [r5, #216] ; 0xd8 + 80067c8: 2c00 cmp r4, #0 + 80067ca: d1e4 bne.n 8006796 <set_sequence_step_timeout+0x44> + 80067cc: 2151 movs r1, #81 ; 0x51 + 80067ce: 4628 mov r0, r5 + 80067d0: f000 fd7a bl 80072c8 <VL53L0X_WrWord> + 80067d4: 4604 mov r4, r0 + 80067d6: 2800 cmp r0, #0 + 80067d8: d1dd bne.n 8006796 <set_sequence_step_timeout+0x44> + 80067da: f8c5 60e4 str.w r6, [r5, #228] ; 0xe4 + 80067de: e7da b.n 8006796 <set_sequence_step_timeout+0x44> + 80067e0: 2904 cmp r1, #4 + 80067e2: d139 bne.n 8006858 <set_sequence_step_timeout+0x106> + 80067e4: a902 add r1, sp, #8 + 80067e6: f7fe fb3b bl 8004e60 <VL53L0X_GetSequenceStepEnables> + 80067ea: f89d 700b ldrb.w r7, [sp, #11] + 80067ee: b1b7 cbz r7, 800681e <set_sequence_step_timeout+0xcc> + 80067f0: f10d 0205 add.w r2, sp, #5 + 80067f4: 2100 movs r1, #0 + 80067f6: 4628 mov r0, r5 + 80067f8: f7fe fade bl 8004db8 <VL53L0X_GetVcselPulsePeriod> + 80067fc: 4604 mov r4, r0 + 80067fe: 2800 cmp r0, #0 + 8006800: d1c9 bne.n 8006796 <set_sequence_step_timeout+0x44> + 8006802: f10d 0206 add.w r2, sp, #6 + 8006806: 2151 movs r1, #81 ; 0x51 + 8006808: 4628 mov r0, r5 + 800680a: f000 fd9b bl 8007344 <VL53L0X_RdWord> + 800680e: 4604 mov r4, r0 + 8006810: f8bd 0006 ldrh.w r0, [sp, #6] + 8006814: f7ff fef3 bl 80065fe <VL53L0X_decode_timeout> + 8006818: b287 uxth r7, r0 + 800681a: 2c00 cmp r4, #0 + 800681c: d1bb bne.n 8006796 <set_sequence_step_timeout+0x44> + 800681e: f10d 0205 add.w r2, sp, #5 + 8006822: 2101 movs r1, #1 + 8006824: 4628 mov r0, r5 + 8006826: f7fe fac7 bl 8004db8 <VL53L0X_GetVcselPulsePeriod> + 800682a: 4604 mov r4, r0 + 800682c: 2800 cmp r0, #0 + 800682e: d1b2 bne.n 8006796 <set_sequence_step_timeout+0x44> + 8006830: f89d 2005 ldrb.w r2, [sp, #5] + 8006834: 4631 mov r1, r6 + 8006836: 4628 mov r0, r5 + 8006838: f7ff fee8 bl 800660c <VL53L0X_calc_timeout_mclks> + 800683c: 4438 add r0, r7 + 800683e: f7ff fecf bl 80065e0 <VL53L0X_encode_timeout> + 8006842: 2171 movs r1, #113 ; 0x71 + 8006844: 4602 mov r2, r0 + 8006846: 4628 mov r0, r5 + 8006848: f000 fd3e bl 80072c8 <VL53L0X_WrWord> + 800684c: 4604 mov r4, r0 + 800684e: 2800 cmp r0, #0 + 8006850: d1a1 bne.n 8006796 <set_sequence_step_timeout+0x44> + 8006852: f8c5 60dc str.w r6, [r5, #220] ; 0xdc + 8006856: e79e b.n 8006796 <set_sequence_step_timeout+0x44> + 8006858: f06f 0403 mvn.w r4, #3 + 800685c: e79b b.n 8006796 <set_sequence_step_timeout+0x44> + +0800685e <VL53L0X_set_vcsel_pulse_period>: + 800685e: b5f0 push {r4, r5, r6, r7, lr} + 8006860: b085 sub sp, #20 + 8006862: 2300 movs r3, #0 + 8006864: f88d 3003 strb.w r3, [sp, #3] + 8006868: 07d3 lsls r3, r2, #31 + 800686a: 4605 mov r5, r0 + 800686c: 460f mov r7, r1 + 800686e: 4616 mov r6, r2 + 8006870: d405 bmi.n 800687e <VL53L0X_set_vcsel_pulse_period+0x20> + 8006872: b939 cbnz r1, 8006884 <VL53L0X_set_vcsel_pulse_period+0x26> + 8006874: f1a2 030c sub.w r3, r2, #12 + 8006878: b2da uxtb r2, r3 + 800687a: 2a06 cmp r2, #6 + 800687c: d911 bls.n 80068a2 <VL53L0X_set_vcsel_pulse_period+0x44> + 800687e: f06f 0003 mvn.w r0, #3 + 8006882: e0e6 b.n 8006a52 <VL53L0X_set_vcsel_pulse_period+0x1f4> + 8006884: 2901 cmp r1, #1 + 8006886: d121 bne.n 80068cc <VL53L0X_set_vcsel_pulse_period+0x6e> + 8006888: f1a2 0308 sub.w r3, r2, #8 + 800688c: b2da uxtb r2, r3 + 800688e: 2a06 cmp r2, #6 + 8006890: d8f5 bhi.n 800687e <VL53L0X_set_vcsel_pulse_period+0x20> + 8006892: 2b06 cmp r3, #6 + 8006894: d81a bhi.n 80068cc <VL53L0X_set_vcsel_pulse_period+0x6e> + 8006896: e8df f003 tbb [pc, r3] + 800689a: 193b .short 0x193b + 800689c: 198a1969 .word 0x198a1969 + 80068a0: 9d .byte 0x9d + 80068a1: 00 .byte 0x00 + 80068a2: 2b06 cmp r3, #6 + 80068a4: d812 bhi.n 80068cc <VL53L0X_set_vcsel_pulse_period+0x6e> + 80068a6: e8df f003 tbb [pc, r3] + 80068aa: 1104 .short 0x1104 + 80068ac: 112f112d .word 0x112f112d + 80068b0: 31 .byte 0x31 + 80068b1: 00 .byte 0x00 + 80068b2: 2218 movs r2, #24 + 80068b4: 2157 movs r1, #87 ; 0x57 + 80068b6: 4628 mov r0, r5 + 80068b8: f000 fcf6 bl 80072a8 <VL53L0X_WrByte> + 80068bc: 2208 movs r2, #8 + 80068be: 2156 movs r1, #86 ; 0x56 + 80068c0: 4628 mov r0, r5 + 80068c2: f000 fcf1 bl 80072a8 <VL53L0X_WrByte> + 80068c6: 2800 cmp r0, #0 + 80068c8: f040 80c3 bne.w 8006a52 <VL53L0X_set_vcsel_pulse_period+0x1f4> + 80068cc: 0874 lsrs r4, r6, #1 + 80068ce: 3c01 subs r4, #1 + 80068d0: b2e4 uxtb r4, r4 + 80068d2: 2f00 cmp r7, #0 + 80068d4: f000 8091 beq.w 80069fa <VL53L0X_set_vcsel_pulse_period+0x19c> + 80068d8: 2f01 cmp r7, #1 + 80068da: d1d0 bne.n 800687e <VL53L0X_set_vcsel_pulse_period+0x20> + 80068dc: aa01 add r2, sp, #4 + 80068de: 2104 movs r1, #4 + 80068e0: 4628 mov r0, r5 + 80068e2: f7ff feb7 bl 8006654 <get_sequence_step_timeout> + 80068e6: b950 cbnz r0, 80068fe <VL53L0X_set_vcsel_pulse_period+0xa0> + 80068e8: 4622 mov r2, r4 + 80068ea: 2170 movs r1, #112 ; 0x70 + 80068ec: 4628 mov r0, r5 + 80068ee: f000 fcdb bl 80072a8 <VL53L0X_WrByte> + 80068f2: b920 cbnz r0, 80068fe <VL53L0X_set_vcsel_pulse_period+0xa0> + 80068f4: 9a01 ldr r2, [sp, #4] + 80068f6: 2104 movs r1, #4 + 80068f8: 4628 mov r0, r5 + 80068fa: f7ff ff2a bl 8006752 <set_sequence_step_timeout> + 80068fe: f885 60e0 strb.w r6, [r5, #224] ; 0xe0 + 8006902: e099 b.n 8006a38 <VL53L0X_set_vcsel_pulse_period+0x1da> + 8006904: 2230 movs r2, #48 ; 0x30 + 8006906: e7d5 b.n 80068b4 <VL53L0X_set_vcsel_pulse_period+0x56> + 8006908: 2240 movs r2, #64 ; 0x40 + 800690a: e7d3 b.n 80068b4 <VL53L0X_set_vcsel_pulse_period+0x56> + 800690c: 2250 movs r2, #80 ; 0x50 + 800690e: e7d1 b.n 80068b4 <VL53L0X_set_vcsel_pulse_period+0x56> + 8006910: 2210 movs r2, #16 + 8006912: 2148 movs r1, #72 ; 0x48 + 8006914: f000 fcc8 bl 80072a8 <VL53L0X_WrByte> + 8006918: 2208 movs r2, #8 + 800691a: 2147 movs r1, #71 ; 0x47 + 800691c: 4628 mov r0, r5 + 800691e: f000 fcc3 bl 80072a8 <VL53L0X_WrByte> + 8006922: 2202 movs r2, #2 + 8006924: 4604 mov r4, r0 + 8006926: 2132 movs r1, #50 ; 0x32 + 8006928: 4628 mov r0, r5 + 800692a: f000 fcbd bl 80072a8 <VL53L0X_WrByte> + 800692e: 220c movs r2, #12 + 8006930: 4304 orrs r4, r0 + 8006932: 2130 movs r1, #48 ; 0x30 + 8006934: 4628 mov r0, r5 + 8006936: f000 fcb7 bl 80072a8 <VL53L0X_WrByte> + 800693a: b264 sxtb r4, r4 + 800693c: 4304 orrs r4, r0 + 800693e: 2201 movs r2, #1 + 8006940: 21ff movs r1, #255 ; 0xff + 8006942: 4628 mov r0, r5 + 8006944: f000 fcb0 bl 80072a8 <VL53L0X_WrByte> + 8006948: b264 sxtb r4, r4 + 800694a: 4304 orrs r4, r0 + 800694c: b264 sxtb r4, r4 + 800694e: 2230 movs r2, #48 ; 0x30 + 8006950: 2130 movs r1, #48 ; 0x30 + 8006952: 4628 mov r0, r5 + 8006954: f000 fca8 bl 80072a8 <VL53L0X_WrByte> + 8006958: 2200 movs r2, #0 + 800695a: 4304 orrs r4, r0 + 800695c: 21ff movs r1, #255 ; 0xff + 800695e: 4628 mov r0, r5 + 8006960: f000 fca2 bl 80072a8 <VL53L0X_WrByte> + 8006964: b264 sxtb r4, r4 + 8006966: 4320 orrs r0, r4 + 8006968: b240 sxtb r0, r0 + 800696a: e7ac b.n 80068c6 <VL53L0X_set_vcsel_pulse_period+0x68> + 800696c: 2228 movs r2, #40 ; 0x28 + 800696e: 2148 movs r1, #72 ; 0x48 + 8006970: f000 fc9a bl 80072a8 <VL53L0X_WrByte> + 8006974: 2208 movs r2, #8 + 8006976: 2147 movs r1, #71 ; 0x47 + 8006978: 4628 mov r0, r5 + 800697a: f000 fc95 bl 80072a8 <VL53L0X_WrByte> + 800697e: 2203 movs r2, #3 + 8006980: 4604 mov r4, r0 + 8006982: 2132 movs r1, #50 ; 0x32 + 8006984: 4628 mov r0, r5 + 8006986: f000 fc8f bl 80072a8 <VL53L0X_WrByte> + 800698a: 4304 orrs r4, r0 + 800698c: b264 sxtb r4, r4 + 800698e: 2209 movs r2, #9 + 8006990: 2130 movs r1, #48 ; 0x30 + 8006992: 4628 mov r0, r5 + 8006994: f000 fc88 bl 80072a8 <VL53L0X_WrByte> + 8006998: 2201 movs r2, #1 + 800699a: 4304 orrs r4, r0 + 800699c: 21ff movs r1, #255 ; 0xff + 800699e: 4628 mov r0, r5 + 80069a0: f000 fc82 bl 80072a8 <VL53L0X_WrByte> + 80069a4: b264 sxtb r4, r4 + 80069a6: 4304 orrs r4, r0 + 80069a8: b264 sxtb r4, r4 + 80069aa: 2220 movs r2, #32 + 80069ac: e7d0 b.n 8006950 <VL53L0X_set_vcsel_pulse_period+0xf2> + 80069ae: 2238 movs r2, #56 ; 0x38 + 80069b0: 2148 movs r1, #72 ; 0x48 + 80069b2: f000 fc79 bl 80072a8 <VL53L0X_WrByte> + 80069b6: 2208 movs r2, #8 + 80069b8: 2147 movs r1, #71 ; 0x47 + 80069ba: 4628 mov r0, r5 + 80069bc: f000 fc74 bl 80072a8 <VL53L0X_WrByte> + 80069c0: 2203 movs r2, #3 + 80069c2: 4604 mov r4, r0 + 80069c4: 2132 movs r1, #50 ; 0x32 + 80069c6: 4628 mov r0, r5 + 80069c8: f000 fc6e bl 80072a8 <VL53L0X_WrByte> + 80069cc: 4304 orrs r4, r0 + 80069ce: b264 sxtb r4, r4 + 80069d0: 2208 movs r2, #8 + 80069d2: e7dd b.n 8006990 <VL53L0X_set_vcsel_pulse_period+0x132> + 80069d4: 2248 movs r2, #72 ; 0x48 + 80069d6: 4611 mov r1, r2 + 80069d8: f000 fc66 bl 80072a8 <VL53L0X_WrByte> + 80069dc: 2208 movs r2, #8 + 80069de: 2147 movs r1, #71 ; 0x47 + 80069e0: 4628 mov r0, r5 + 80069e2: f000 fc61 bl 80072a8 <VL53L0X_WrByte> + 80069e6: 2203 movs r2, #3 + 80069e8: 4604 mov r4, r0 + 80069ea: 2132 movs r1, #50 ; 0x32 + 80069ec: 4628 mov r0, r5 + 80069ee: f000 fc5b bl 80072a8 <VL53L0X_WrByte> + 80069f2: 4304 orrs r4, r0 + 80069f4: b264 sxtb r4, r4 + 80069f6: 2207 movs r2, #7 + 80069f8: e7ca b.n 8006990 <VL53L0X_set_vcsel_pulse_period+0x132> + 80069fa: aa02 add r2, sp, #8 + 80069fc: 2103 movs r1, #3 + 80069fe: 4628 mov r0, r5 + 8006a00: f7ff fe28 bl 8006654 <get_sequence_step_timeout> + 8006a04: b9b0 cbnz r0, 8006a34 <VL53L0X_set_vcsel_pulse_period+0x1d6> + 8006a06: aa03 add r2, sp, #12 + 8006a08: 2102 movs r1, #2 + 8006a0a: 4628 mov r0, r5 + 8006a0c: f7ff fe22 bl 8006654 <get_sequence_step_timeout> + 8006a10: b980 cbnz r0, 8006a34 <VL53L0X_set_vcsel_pulse_period+0x1d6> + 8006a12: 4622 mov r2, r4 + 8006a14: 2150 movs r1, #80 ; 0x50 + 8006a16: 4628 mov r0, r5 + 8006a18: f000 fc46 bl 80072a8 <VL53L0X_WrByte> + 8006a1c: b950 cbnz r0, 8006a34 <VL53L0X_set_vcsel_pulse_period+0x1d6> + 8006a1e: 9a02 ldr r2, [sp, #8] + 8006a20: 2103 movs r1, #3 + 8006a22: 4628 mov r0, r5 + 8006a24: f7ff fe95 bl 8006752 <set_sequence_step_timeout> + 8006a28: b920 cbnz r0, 8006a34 <VL53L0X_set_vcsel_pulse_period+0x1d6> + 8006a2a: 9a03 ldr r2, [sp, #12] + 8006a2c: 2102 movs r1, #2 + 8006a2e: 4628 mov r0, r5 + 8006a30: f7ff fe8f bl 8006752 <set_sequence_step_timeout> + 8006a34: f885 60e8 strb.w r6, [r5, #232] ; 0xe8 + 8006a38: b958 cbnz r0, 8006a52 <VL53L0X_set_vcsel_pulse_period+0x1f4> + 8006a3a: 6969 ldr r1, [r5, #20] + 8006a3c: 4628 mov r0, r5 + 8006a3e: f7fe f9b7 bl 8004db0 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds> + 8006a42: b930 cbnz r0, 8006a52 <VL53L0X_set_vcsel_pulse_period+0x1f4> + 8006a44: 4602 mov r2, r0 + 8006a46: 2301 movs r3, #1 + 8006a48: f10d 0103 add.w r1, sp, #3 + 8006a4c: 4628 mov r0, r5 + 8006a4e: f7ff f93c bl 8005cca <VL53L0X_perform_phase_calibration> + 8006a52: b005 add sp, #20 + 8006a54: bdf0 pop {r4, r5, r6, r7, pc} + +08006a56 <VL53L0X_get_vcsel_pulse_period>: + 8006a56: b513 push {r0, r1, r4, lr} + 8006a58: 4614 mov r4, r2 + 8006a5a: b129 cbz r1, 8006a68 <VL53L0X_get_vcsel_pulse_period+0x12> + 8006a5c: 2901 cmp r1, #1 + 8006a5e: d010 beq.n 8006a82 <VL53L0X_get_vcsel_pulse_period+0x2c> + 8006a60: f06f 0003 mvn.w r0, #3 + 8006a64: b002 add sp, #8 + 8006a66: bd10 pop {r4, pc} + 8006a68: f10d 0207 add.w r2, sp, #7 + 8006a6c: 2150 movs r1, #80 ; 0x50 + 8006a6e: f000 fc3d bl 80072ec <VL53L0X_RdByte> + 8006a72: 2800 cmp r0, #0 + 8006a74: d1f6 bne.n 8006a64 <VL53L0X_get_vcsel_pulse_period+0xe> + 8006a76: f89d 3007 ldrb.w r3, [sp, #7] + 8006a7a: 3301 adds r3, #1 + 8006a7c: 005b lsls r3, r3, #1 + 8006a7e: 7023 strb r3, [r4, #0] + 8006a80: e7f0 b.n 8006a64 <VL53L0X_get_vcsel_pulse_period+0xe> + 8006a82: f10d 0207 add.w r2, sp, #7 + 8006a86: 2170 movs r1, #112 ; 0x70 + 8006a88: e7f1 b.n 8006a6e <VL53L0X_get_vcsel_pulse_period+0x18> + +08006a8a <VL53L0X_set_measurement_timing_budget_micro_seconds>: + 8006a8a: b5f0 push {r4, r5, r6, r7, lr} + 8006a8c: 2300 movs r3, #0 + 8006a8e: b085 sub sp, #20 + 8006a90: f44f 62fa mov.w r2, #2000 ; 0x7d0 + 8006a94: e9cd 2300 strd r2, r3, [sp] + 8006a98: f644 631f movw r3, #19999 ; 0x4e1f + 8006a9c: 4299 cmp r1, r3 + 8006a9e: 4606 mov r6, r0 + 8006aa0: 460f mov r7, r1 + 8006aa2: d804 bhi.n 8006aae <VL53L0X_set_measurement_timing_budget_micro_seconds+0x24> + 8006aa4: f06f 0503 mvn.w r5, #3 + 8006aa8: 4628 mov r0, r5 + 8006aaa: b005 add sp, #20 + 8006aac: bdf0 pop {r4, r5, r6, r7, pc} + 8006aae: a902 add r1, sp, #8 + 8006ab0: f7fe f9d6 bl 8004e60 <VL53L0X_GetSequenceStepEnables> + 8006ab4: 4605 mov r5, r0 + 8006ab6: 2800 cmp r0, #0 + 8006ab8: d1f6 bne.n 8006aa8 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1e> + 8006aba: f89d 2009 ldrb.w r2, [sp, #9] + 8006abe: f89d 3008 ldrb.w r3, [sp, #8] + 8006ac2: 4313 orrs r3, r2 + 8006ac4: f89d 200a ldrb.w r2, [sp, #10] + 8006ac8: 4313 orrs r3, r2 + 8006aca: f6a7 3436 subw r4, r7, #2870 ; 0xb36 + 8006ace: d01b beq.n 8006b08 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x7e> + 8006ad0: 466a mov r2, sp + 8006ad2: 2102 movs r1, #2 + 8006ad4: 4630 mov r0, r6 + 8006ad6: f7ff fdbd bl 8006654 <get_sequence_step_timeout> + 8006ada: 2800 cmp r0, #0 + 8006adc: d13b bne.n 8006b56 <VL53L0X_set_measurement_timing_budget_micro_seconds+0xcc> + 8006ade: f89d 3008 ldrb.w r3, [sp, #8] + 8006ae2: b12b cbz r3, 8006af0 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x66> + 8006ae4: 9b00 ldr r3, [sp, #0] + 8006ae6: f203 234e addw r3, r3, #590 ; 0x24e + 8006aea: 429c cmp r4, r3 + 8006aec: d9da bls.n 8006aa4 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1a> + 8006aee: 1ae4 subs r4, r4, r3 + 8006af0: f89d 300a ldrb.w r3, [sp, #10] + 8006af4: b323 cbz r3, 8006b40 <VL53L0X_set_measurement_timing_budget_micro_seconds+0xb6> + 8006af6: 9b00 ldr r3, [sp, #0] + 8006af8: f203 23b2 addw r3, r3, #690 ; 0x2b2 + 8006afc: ebb4 0f43 cmp.w r4, r3, lsl #1 + 8006b00: ea4f 0243 mov.w r2, r3, lsl #1 + 8006b04: d9ce bls.n 8006aa4 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1a> + 8006b06: 1aa4 subs r4, r4, r2 + 8006b08: f89d 300b ldrb.w r3, [sp, #11] + 8006b0c: b15b cbz r3, 8006b26 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x9c> + 8006b0e: aa01 add r2, sp, #4 + 8006b10: 2103 movs r1, #3 + 8006b12: 4630 mov r0, r6 + 8006b14: f7ff fd9e bl 8006654 <get_sequence_step_timeout> + 8006b18: 9b01 ldr r3, [sp, #4] + 8006b1a: f503 7325 add.w r3, r3, #660 ; 0x294 + 8006b1e: 42a3 cmp r3, r4 + 8006b20: d2c0 bcs.n 8006aa4 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1a> + 8006b22: b9c0 cbnz r0, 8006b56 <VL53L0X_set_measurement_timing_budget_micro_seconds+0xcc> + 8006b24: 1ae4 subs r4, r4, r3 + 8006b26: f89d 300c ldrb.w r3, [sp, #12] + 8006b2a: 2b00 cmp r3, #0 + 8006b2c: d0bc beq.n 8006aa8 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1e> + 8006b2e: f2a4 2226 subw r2, r4, #550 ; 0x226 + 8006b32: 2104 movs r1, #4 + 8006b34: 4630 mov r0, r6 + 8006b36: f7ff fe0c bl 8006752 <set_sequence_step_timeout> + 8006b3a: 6177 str r7, [r6, #20] + 8006b3c: 4605 mov r5, r0 + 8006b3e: e7b3 b.n 8006aa8 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1e> + 8006b40: f89d 3009 ldrb.w r3, [sp, #9] + 8006b44: 2b00 cmp r3, #0 + 8006b46: d0df beq.n 8006b08 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x7e> + 8006b48: 9b00 ldr r3, [sp, #0] + 8006b4a: f503 7325 add.w r3, r3, #660 ; 0x294 + 8006b4e: 429c cmp r4, r3 + 8006b50: d9a8 bls.n 8006aa4 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1a> + 8006b52: 1ae4 subs r4, r4, r3 + 8006b54: e7d8 b.n 8006b08 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x7e> + 8006b56: 4605 mov r5, r0 + 8006b58: e7a6 b.n 8006aa8 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1e> + +08006b5a <VL53L0X_get_measurement_timing_budget_micro_seconds>: + 8006b5a: b570 push {r4, r5, r6, lr} + 8006b5c: f44f 62fa mov.w r2, #2000 ; 0x7d0 + 8006b60: b086 sub sp, #24 + 8006b62: 2300 movs r3, #0 + 8006b64: e9cd 2302 strd r2, r3, [sp, #8] + 8006b68: f640 3336 movw r3, #2870 ; 0xb36 + 8006b6c: 600b str r3, [r1, #0] + 8006b6e: 460c mov r4, r1 + 8006b70: a904 add r1, sp, #16 + 8006b72: 4606 mov r6, r0 + 8006b74: f7fe f974 bl 8004e60 <VL53L0X_GetSequenceStepEnables> + 8006b78: 4605 mov r5, r0 + 8006b7a: 2800 cmp r0, #0 + 8006b7c: d136 bne.n 8006bec <VL53L0X_get_measurement_timing_budget_micro_seconds+0x92> + 8006b7e: f89d 2011 ldrb.w r2, [sp, #17] + 8006b82: f89d 3010 ldrb.w r3, [sp, #16] + 8006b86: 4313 orrs r3, r2 + 8006b88: f89d 2012 ldrb.w r2, [sp, #18] + 8006b8c: 4313 orrs r3, r2 + 8006b8e: d019 beq.n 8006bc4 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x6a> + 8006b90: aa02 add r2, sp, #8 + 8006b92: 2102 movs r1, #2 + 8006b94: 4630 mov r0, r6 + 8006b96: f7ff fd5d bl 8006654 <get_sequence_step_timeout> + 8006b9a: 2800 cmp r0, #0 + 8006b9c: d140 bne.n 8006c20 <VL53L0X_get_measurement_timing_budget_micro_seconds+0xc6> + 8006b9e: f89d 3010 ldrb.w r3, [sp, #16] + 8006ba2: b12b cbz r3, 8006bb0 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x56> + 8006ba4: 9b02 ldr r3, [sp, #8] + 8006ba6: f203 224e addw r2, r3, #590 ; 0x24e + 8006baa: 6823 ldr r3, [r4, #0] + 8006bac: 4413 add r3, r2 + 8006bae: 6023 str r3, [r4, #0] + 8006bb0: f89d 3012 ldrb.w r3, [sp, #18] + 8006bb4: b1eb cbz r3, 8006bf2 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x98> + 8006bb6: 9b02 ldr r3, [sp, #8] + 8006bb8: f203 22b2 addw r2, r3, #690 ; 0x2b2 + 8006bbc: 6823 ldr r3, [r4, #0] + 8006bbe: eb03 0342 add.w r3, r3, r2, lsl #1 + 8006bc2: 6023 str r3, [r4, #0] + 8006bc4: f89d 3013 ldrb.w r3, [sp, #19] + 8006bc8: b9eb cbnz r3, 8006c06 <VL53L0X_get_measurement_timing_budget_micro_seconds+0xac> + 8006bca: f89d 3014 ldrb.w r3, [sp, #20] + 8006bce: b15b cbz r3, 8006be8 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x8e> + 8006bd0: aa01 add r2, sp, #4 + 8006bd2: 2104 movs r1, #4 + 8006bd4: 4630 mov r0, r6 + 8006bd6: f7ff fd3d bl 8006654 <get_sequence_step_timeout> + 8006bda: 9b01 ldr r3, [sp, #4] + 8006bdc: f203 2226 addw r2, r3, #550 ; 0x226 + 8006be0: 6823 ldr r3, [r4, #0] + 8006be2: 4413 add r3, r2 + 8006be4: 6023 str r3, [r4, #0] + 8006be6: b9d8 cbnz r0, 8006c20 <VL53L0X_get_measurement_timing_budget_micro_seconds+0xc6> + 8006be8: 6823 ldr r3, [r4, #0] + 8006bea: 6173 str r3, [r6, #20] + 8006bec: 4628 mov r0, r5 + 8006bee: b006 add sp, #24 + 8006bf0: bd70 pop {r4, r5, r6, pc} + 8006bf2: f89d 3011 ldrb.w r3, [sp, #17] + 8006bf6: 2b00 cmp r3, #0 + 8006bf8: d0e4 beq.n 8006bc4 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x6a> + 8006bfa: 9b02 ldr r3, [sp, #8] + 8006bfc: f503 7225 add.w r2, r3, #660 ; 0x294 + 8006c00: 6823 ldr r3, [r4, #0] + 8006c02: 4413 add r3, r2 + 8006c04: e7dd b.n 8006bc2 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x68> + 8006c06: aa03 add r2, sp, #12 + 8006c08: 2103 movs r1, #3 + 8006c0a: 4630 mov r0, r6 + 8006c0c: f7ff fd22 bl 8006654 <get_sequence_step_timeout> + 8006c10: 9b03 ldr r3, [sp, #12] + 8006c12: f503 7225 add.w r2, r3, #660 ; 0x294 + 8006c16: 6823 ldr r3, [r4, #0] + 8006c18: 4413 add r3, r2 + 8006c1a: 6023 str r3, [r4, #0] + 8006c1c: 2800 cmp r0, #0 + 8006c1e: d0d4 beq.n 8006bca <VL53L0X_get_measurement_timing_budget_micro_seconds+0x70> + 8006c20: 4605 mov r5, r0 + 8006c22: e7e3 b.n 8006bec <VL53L0X_get_measurement_timing_budget_micro_seconds+0x92> + +08006c24 <VL53L0X_load_tuning_settings>: + 8006c24: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} + 8006c28: 2400 movs r4, #0 + 8006c2a: 4606 mov r6, r0 + 8006c2c: 460d mov r5, r1 + 8006c2e: 4620 mov r0, r4 + 8006c30: f815 8004 ldrb.w r8, [r5, r4] + 8006c34: f1b8 0f00 cmp.w r8, #0 + 8006c38: d000 beq.n 8006c3c <VL53L0X_load_tuning_settings+0x18> + 8006c3a: b110 cbz r0, 8006c42 <VL53L0X_load_tuning_settings+0x1e> + 8006c3c: b003 add sp, #12 + 8006c3e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8006c42: 1c67 adds r7, r4, #1 + 8006c44: f1b8 0fff cmp.w r8, #255 ; 0xff + 8006c48: f815 9007 ldrb.w r9, [r5, r7] + 8006c4c: d129 bne.n 8006ca2 <VL53L0X_load_tuning_settings+0x7e> + 8006c4e: 1ca7 adds r7, r4, #2 + 8006c50: 5deb ldrb r3, [r5, r7] + 8006c52: f1b9 0f03 cmp.w r9, #3 + 8006c56: d836 bhi.n 8006cc6 <VL53L0X_load_tuning_settings+0xa2> + 8006c58: e8df f009 tbb [pc, r9] + 8006c5c: 1b130b02 .word 0x1b130b02 + 8006c60: 1d27 adds r7, r4, #4 + 8006c62: 442c add r4, r5 + 8006c64: 78e2 ldrb r2, [r4, #3] + 8006c66: eb02 2303 add.w r3, r2, r3, lsl #8 + 8006c6a: f8a6 3134 strh.w r3, [r6, #308] ; 0x134 + 8006c6e: 463c mov r4, r7 + 8006c70: e7de b.n 8006c30 <VL53L0X_load_tuning_settings+0xc> + 8006c72: 1d27 adds r7, r4, #4 + 8006c74: 442c add r4, r5 + 8006c76: 78e2 ldrb r2, [r4, #3] + 8006c78: eb02 2303 add.w r3, r2, r3, lsl #8 + 8006c7c: f8a6 3136 strh.w r3, [r6, #310] ; 0x136 + 8006c80: e7f5 b.n 8006c6e <VL53L0X_load_tuning_settings+0x4a> + 8006c82: 1d27 adds r7, r4, #4 + 8006c84: 442c add r4, r5 + 8006c86: 78e2 ldrb r2, [r4, #3] + 8006c88: eb02 2303 add.w r3, r2, r3, lsl #8 + 8006c8c: f8a6 3138 strh.w r3, [r6, #312] ; 0x138 + 8006c90: e7ed b.n 8006c6e <VL53L0X_load_tuning_settings+0x4a> + 8006c92: 1d27 adds r7, r4, #4 + 8006c94: 442c add r4, r5 + 8006c96: 78e2 ldrb r2, [r4, #3] + 8006c98: eb02 2303 add.w r3, r2, r3, lsl #8 + 8006c9c: f8a6 313c strh.w r3, [r6, #316] ; 0x13c + 8006ca0: e7e5 b.n 8006c6e <VL53L0X_load_tuning_settings+0x4a> + 8006ca2: f1b8 0f04 cmp.w r8, #4 + 8006ca6: d80e bhi.n 8006cc6 <VL53L0X_load_tuning_settings+0xa2> + 8006ca8: 3402 adds r4, #2 + 8006caa: 4642 mov r2, r8 + 8006cac: 1929 adds r1, r5, r4 + 8006cae: a801 add r0, sp, #4 + 8006cb0: f00d fb07 bl 80142c2 <memcpy> + 8006cb4: 4643 mov r3, r8 + 8006cb6: aa01 add r2, sp, #4 + 8006cb8: 4649 mov r1, r9 + 8006cba: 4630 mov r0, r6 + 8006cbc: eb04 0708 add.w r7, r4, r8 + 8006cc0: f000 fabe bl 8007240 <VL53L0X_WriteMulti> + 8006cc4: e7d3 b.n 8006c6e <VL53L0X_load_tuning_settings+0x4a> + 8006cc6: f06f 0003 mvn.w r0, #3 + 8006cca: e7d0 b.n 8006c6e <VL53L0X_load_tuning_settings+0x4a> + +08006ccc <VL53L0X_get_total_xtalk_rate>: + 8006ccc: b573 push {r0, r1, r4, r5, r6, lr} + 8006cce: 2300 movs r3, #0 + 8006cd0: 460e mov r6, r1 + 8006cd2: 6013 str r3, [r2, #0] + 8006cd4: f10d 0107 add.w r1, sp, #7 + 8006cd8: 4605 mov r5, r0 + 8006cda: 4614 mov r4, r2 + 8006cdc: f7fe f8f7 bl 8004ece <VL53L0X_GetXTalkCompensationEnable> + 8006ce0: b940 cbnz r0, 8006cf4 <VL53L0X_get_total_xtalk_rate+0x28> + 8006ce2: f89d 3007 ldrb.w r3, [sp, #7] + 8006ce6: b12b cbz r3, 8006cf4 <VL53L0X_get_total_xtalk_rate+0x28> + 8006ce8: 8ab3 ldrh r3, [r6, #20] + 8006cea: 6a2a ldr r2, [r5, #32] + 8006cec: 4353 muls r3, r2 + 8006cee: 3380 adds r3, #128 ; 0x80 + 8006cf0: 0a1b lsrs r3, r3, #8 + 8006cf2: 6023 str r3, [r4, #0] + 8006cf4: b002 add sp, #8 + 8006cf6: bd70 pop {r4, r5, r6, pc} + +08006cf8 <VL53L0X_get_total_signal_rate>: + 8006cf8: b513 push {r0, r1, r4, lr} + 8006cfa: 68cb ldr r3, [r1, #12] + 8006cfc: 6013 str r3, [r2, #0] + 8006cfe: 4614 mov r4, r2 + 8006d00: aa01 add r2, sp, #4 + 8006d02: f7ff ffe3 bl 8006ccc <VL53L0X_get_total_xtalk_rate> + 8006d06: b918 cbnz r0, 8006d10 <VL53L0X_get_total_signal_rate+0x18> + 8006d08: 6823 ldr r3, [r4, #0] + 8006d0a: 9a01 ldr r2, [sp, #4] + 8006d0c: 4413 add r3, r2 + 8006d0e: 6023 str r3, [r4, #0] + 8006d10: b002 add sp, #8 + 8006d12: bd10 pop {r4, pc} + +08006d14 <VL53L0X_calc_dmax>: + 8006d14: b5f8 push {r3, r4, r5, r6, r7, lr} + 8006d16: f8b0 5154 ldrh.w r5, [r0, #340] ; 0x154 + 8006d1a: f8d0 0158 ldr.w r0, [r0, #344] ; 0x158 + 8006d1e: 4368 muls r0, r5 + 8006d20: 3080 adds r0, #128 ; 0x80 + 8006d22: 0a00 lsrs r0, r0, #8 + 8006d24: 460e mov r6, r1 + 8006d26: 4345 muls r5, r0 + 8006d28: e9dd 1707 ldrd r1, r7, [sp, #28] + 8006d2c: 4614 mov r4, r2 + 8006d2e: b152 cbz r2, 8006d46 <VL53L0X_calc_dmax+0x32> + 8006d30: 02b6 lsls r6, r6, #10 + 8006d32: eb06 0252 add.w r2, r6, r2, lsr #1 + 8006d36: fbb2 f2f4 udiv r2, r2, r4 + 8006d3a: eb02 0242 add.w r2, r2, r2, lsl #1 + 8006d3e: 4352 muls r2, r2 + 8006d40: f502 4200 add.w r2, r2, #32768 ; 0x8000 + 8006d44: 0c14 lsrs r4, r2, #16 + 8006d46: 9a06 ldr r2, [sp, #24] + 8006d48: 4353 muls r3, r2 + 8006d4a: f501 4200 add.w r2, r1, #32768 ; 0x8000 + 8006d4e: 0c12 lsrs r2, r2, #16 + 8006d50: 2006 movs r0, #6 + 8006d52: 3203 adds r2, #3 + 8006d54: fbb2 f2f0 udiv r2, r2, r0 + 8006d58: ebc2 02c2 rsb r2, r2, r2, lsl #3 + 8006d5c: f5b2 3f80 cmp.w r2, #65536 ; 0x10000 + 8006d60: bf38 it cc + 8006d62: 3103 addcc r1, #3 + 8006d64: f503 4300 add.w r3, r3, #32768 ; 0x8000 + 8006d68: bf3e ittt cc + 8006d6a: fbb1 f1f0 udivcc r1, r1, r0 + 8006d6e: ebc1 01c1 rsbcc r1, r1, r1, lsl #3 + 8006d72: f501 4100 addcc.w r1, r1, #32768 ; 0x8000 + 8006d76: ea4f 4313 mov.w r3, r3, lsr #16 + 8006d7a: bf34 ite cc + 8006d7c: 0c09 lsrcc r1, r1, #16 + 8006d7e: 491b ldrcs r1, [pc, #108] ; (8006dec <VL53L0X_calc_dmax+0xd8>) + 8006d80: fb03 f303 mul.w r3, r3, r3 + 8006d84: bf38 it cc + 8006d86: 4349 mulcc r1, r1 + 8006d88: eb03 0357 add.w r3, r3, r7, lsr #1 + 8006d8c: 440b add r3, r1 + 8006d8e: fbb3 f3f7 udiv r3, r3, r7 + 8006d92: 039b lsls r3, r3, #14 + 8006d94: 22fe movs r2, #254 ; 0xfe + 8006d96: f105 0020 add.w r0, r5, #32 + 8006d9a: 337f adds r3, #127 ; 0x7f + 8006d9c: fbb3 f3f2 udiv r3, r3, r2 + 8006da0: 435c muls r4, r3 + 8006da2: f44f 777a mov.w r7, #1000 ; 0x3e8 + 8006da6: f504 74fa add.w r4, r4, #500 ; 0x1f4 + 8006daa: 0980 lsrs r0, r0, #6 + 8006dac: fbb4 f4f7 udiv r4, r4, r7 + 8006db0: 0124 lsls r4, r4, #4 + 8006db2: f7ff f92d bl 8006010 <VL53L0X_isqrt> + 8006db6: f504 74fa add.w r4, r4, #500 ; 0x1f4 + 8006dba: 42bc cmp r4, r7 + 8006dbc: bf28 it cs + 8006dbe: f44f 63fa movcs.w r3, #2000 ; 0x7d0 + 8006dc2: 4606 mov r6, r0 + 8006dc4: bf29 itett cs + 8006dc6: fbb4 f3f3 udivcs r3, r4, r3 + 8006dca: 2000 movcc r0, #0 + 8006dcc: 195b addcs r3, r3, r5 + 8006dce: fbb4 f4f7 udivcs r4, r4, r7 + 8006dd2: bf28 it cs + 8006dd4: fbb3 f0f4 udivcs r0, r3, r4 + 8006dd8: f7ff f91a bl 8006010 <VL53L0X_isqrt> + 8006ddc: 9b09 ldr r3, [sp, #36] ; 0x24 + 8006dde: 4286 cmp r6, r0 + 8006de0: bf94 ite ls + 8006de2: 601e strls r6, [r3, #0] + 8006de4: 6018 strhi r0, [r3, #0] + 8006de6: 2000 movs r0, #0 + 8006de8: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8006dea: bf00 nop + 8006dec: fff00000 .word 0xfff00000 + +08006df0 <VL53L0X_calc_sigma_estimate>: + 8006df0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8006df4: b091 sub sp, #68 ; 0x44 + 8006df6: e9cd 2307 strd r2, r3, [sp, #28] + 8006dfa: 6a03 ldr r3, [r0, #32] + 8006dfc: 930e str r3, [sp, #56] ; 0x38 + 8006dfe: 690b ldr r3, [r1, #16] + 8006e00: 9309 str r3, [sp, #36] ; 0x24 + 8006e02: 4605 mov r5, r0 + 8006e04: 68cb ldr r3, [r1, #12] + 8006e06: 930b str r3, [sp, #44] ; 0x2c + 8006e08: 460f mov r7, r1 + 8006e0a: aa0f add r2, sp, #60 ; 0x3c + 8006e0c: f7ff ff74 bl 8006cf8 <VL53L0X_get_total_signal_rate> + 8006e10: aa0e add r2, sp, #56 ; 0x38 + 8006e12: 4639 mov r1, r7 + 8006e14: 4628 mov r0, r5 + 8006e16: f7ff ff59 bl 8006ccc <VL53L0X_get_total_xtalk_rate> + 8006e1a: bb58 cbnz r0, 8006e74 <VL53L0X_calc_sigma_estimate+0x84> + 8006e1c: 9c0f ldr r4, [sp, #60] ; 0x3c + 8006e1e: f895 b0e0 ldrb.w fp, [r5, #224] ; 0xe0 + 8006e22: f8d5 30dc ldr.w r3, [r5, #220] ; 0xdc + 8006e26: 9305 str r3, [sp, #20] + 8006e28: f44f 767a mov.w r6, #1000 ; 0x3e8 + 8006e2c: fb06 f104 mul.w r1, r6, r4 + 8006e30: f501 4100 add.w r1, r1, #32768 ; 0x8000 + 8006e34: 9104 str r1, [sp, #16] + 8006e36: 990e ldr r1, [sp, #56] ; 0x38 + 8006e38: 910a str r1, [sp, #40] ; 0x28 + 8006e3a: 9904 ldr r1, [sp, #16] + 8006e3c: f8d5 30e4 ldr.w r3, [r5, #228] ; 0xe4 + 8006e40: 9306 str r3, [sp, #24] + 8006e42: f1bb 0f08 cmp.w fp, #8 + 8006e46: f104 0480 add.w r4, r4, #128 ; 0x80 + 8006e4a: bf0c ite eq + 8006e4c: 2302 moveq r3, #2 + 8006e4e: 2303 movne r3, #3 + 8006e50: f024 0aff bic.w sl, r4, #255 ; 0xff + 8006e54: 0c09 lsrs r1, r1, #16 + 8006e56: f895 20e8 ldrb.w r2, [r5, #232] ; 0xe8 + 8006e5a: f8df 81a0 ldr.w r8, [pc, #416] ; 8006ffc <VL53L0X_calc_sigma_estimate+0x20c> + 8006e5e: f8cd a03c str.w sl, [sp, #60] ; 0x3c + 8006e62: 910c str r1, [sp, #48] ; 0x30 + 8006e64: d109 bne.n 8006e7a <VL53L0X_calc_sigma_estimate+0x8a> + 8006e66: 9b07 ldr r3, [sp, #28] + 8006e68: f8c3 8000 str.w r8, [r3] + 8006e6c: 9b08 ldr r3, [sp, #32] + 8006e6e: f8c5 8140 str.w r8, [r5, #320] ; 0x140 + 8006e72: 6018 str r0, [r3, #0] + 8006e74: b011 add sp, #68 ; 0x44 + 8006e76: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8006e7a: 9906 ldr r1, [sp, #24] + 8006e7c: 930d str r3, [sp, #52] ; 0x34 + 8006e7e: 4628 mov r0, r5 + 8006e80: f7ff fbc4 bl 800660c <VL53L0X_calc_timeout_mclks> + 8006e84: 465a mov r2, fp + 8006e86: 9905 ldr r1, [sp, #20] + 8006e88: 4681 mov r9, r0 + 8006e8a: 4628 mov r0, r5 + 8006e8c: f7ff fbbe bl 800660c <VL53L0X_calc_timeout_mclks> + 8006e90: 9b0d ldr r3, [sp, #52] ; 0x34 + 8006e92: 495b ldr r1, [pc, #364] ; (8007000 <VL53L0X_calc_sigma_estimate+0x210>) + 8006e94: 9a0c ldr r2, [sp, #48] ; 0x30 + 8006e96: 4481 add r9, r0 + 8006e98: fb03 f909 mul.w r9, r3, r9 + 8006e9c: ea4f 29c9 mov.w r9, r9, lsl #11 + 8006ea0: f240 6377 movw r3, #1655 ; 0x677 + 8006ea4: f509 79fa add.w r9, r9, #500 ; 0x1f4 + 8006ea8: 0a24 lsrs r4, r4, #8 + 8006eaa: fbb9 f9f6 udiv r9, r9, r6 + 8006eae: fb03 f909 mul.w r9, r3, r9 + 8006eb2: f509 79fa add.w r9, r9, #500 ; 0x1f4 + 8006eb6: fbb9 f9f6 udiv r9, r9, r6 + 8006eba: fb09 f404 mul.w r4, r9, r4 + 8006ebe: f104 0380 add.w r3, r4, #128 ; 0x80 + 8006ec2: 9c09 ldr r4, [sp, #36] ; 0x24 + 8006ec4: 4374 muls r4, r6 + 8006ec6: 400c ands r4, r1 + 8006ec8: fbb4 f4f2 udiv r4, r4, r2 + 8006ecc: 4a4d ldr r2, [pc, #308] ; (8007004 <VL53L0X_calc_sigma_estimate+0x214>) + 8006ece: 0a1b lsrs r3, r3, #8 + 8006ed0: 4294 cmp r4, r2 + 8006ed2: bf28 it cs + 8006ed4: 4614 movcs r4, r2 + 8006ed6: 2b01 cmp r3, #1 + 8006ed8: bf38 it cc + 8006eda: 2301 movcc r3, #1 + 8006edc: 200c movs r0, #12 + 8006ede: f44f 7216 mov.w r2, #600 ; 0x258 + 8006ee2: 4358 muls r0, r3 + 8006ee4: 4354 muls r4, r2 + 8006ee6: f7ff f893 bl 8006010 <VL53L0X_isqrt> + 8006eea: 7e3b ldrb r3, [r7, #24] + 8006eec: 893a ldrh r2, [r7, #8] + 8006eee: ea4f 0b40 mov.w fp, r0, lsl #1 + 8006ef2: 2b00 cmp r3, #0 + 8006ef4: d17f bne.n 8006ff6 <VL53L0X_calc_sigma_estimate+0x206> + 8006ef6: 4942 ldr r1, [pc, #264] ; (8007000 <VL53L0X_calc_sigma_estimate+0x210>) + 8006ef8: 9b04 ldr r3, [sp, #16] + 8006efa: 400b ands r3, r1 + 8006efc: f503 71fa add.w r1, r3, #500 ; 0x1f4 + 8006f00: 4b41 ldr r3, [pc, #260] ; (8007008 <VL53L0X_calc_sigma_estimate+0x218>) + 8006f02: 435a muls r2, r3 + 8006f04: f241 235c movw r3, #4700 ; 0x125c + 8006f08: fbb2 f2f3 udiv r2, r2, r3 + 8006f0c: 9b0a ldr r3, [sp, #40] ; 0x28 + 8006f0e: 4373 muls r3, r6 + 8006f10: f5b3 1f48 cmp.w r3, #3276800 ; 0x320000 + 8006f14: bf28 it cs + 8006f16: f44f 1348 movcs.w r3, #3276800 ; 0x320000 + 8006f1a: eba1 0343 sub.w r3, r1, r3, lsl #1 + 8006f1e: fbb1 f1f6 udiv r1, r1, r6 + 8006f22: fbb3 f3f6 udiv r3, r3, r6 + 8006f26: 021b lsls r3, r3, #8 + 8006f28: fbb3 f6f1 udiv r6, r3, r1 + 8006f2c: 0236 lsls r6, r6, #8 + 8006f2e: f5c6 3680 rsb r6, r6, #65536 ; 0x10000 + 8006f32: 4356 muls r6, r2 + 8006f34: f506 4600 add.w r6, r6, #32768 ; 0x8000 + 8006f38: 0c36 lsrs r6, r6, #16 + 8006f3a: f506 3680 add.w r6, r6, #65536 ; 0x10000 + 8006f3e: 0876 lsrs r6, r6, #1 + 8006f40: 4376 muls r6, r6 + 8006f42: 0bb6 lsrs r6, r6, #14 + 8006f44: f44f 7048 mov.w r0, #800 ; 0x320 + 8006f48: 4370 muls r0, r6 + 8006f4a: f504 4300 add.w r3, r4, #32768 ; 0x8000 + 8006f4e: f500 4000 add.w r0, r0, #32768 ; 0x8000 + 8006f52: 0c1b lsrs r3, r3, #16 + 8006f54: 435b muls r3, r3 + 8006f56: 0c00 lsrs r0, r0, #16 + 8006f58: fb00 3000 mla r0, r0, r0, r3 + 8006f5c: f7ff f858 bl 8006010 <VL53L0X_isqrt> + 8006f60: 0403 lsls r3, r0, #16 + 8006f62: 2264 movs r2, #100 ; 0x64 + 8006f64: 3332 adds r3, #50 ; 0x32 + 8006f66: f241 3788 movw r7, #5000 ; 0x1388 + 8006f6a: fbb3 f3f2 udiv r3, r3, r2 + 8006f6e: f640 32b5 movw r2, #2997 ; 0xbb5 + 8006f72: fbb3 f3fb udiv r3, r3, fp + 8006f76: fb02 7703 mla r7, r2, r3, r7 + 8006f7a: 4b24 ldr r3, [pc, #144] ; (800700c <VL53L0X_calc_sigma_estimate+0x21c>) + 8006f7c: 429f cmp r7, r3 + 8006f7e: bf9c itt ls + 8006f80: f242 7310 movwls r3, #10000 ; 0x2710 + 8006f84: fbb7 f7f3 udivls r7, r7, r3 + 8006f88: e9dd 3205 ldrd r3, r2, [sp, #20] + 8006f8c: 4413 add r3, r2 + 8006f8e: f503 73fa add.w r3, r3, #500 ; 0x1f4 + 8006f92: f44f 7b7a mov.w fp, #1000 ; 0x3e8 + 8006f96: f44f 62fa mov.w r2, #2000 ; 0x7d0 + 8006f9a: fbb3 f0fb udiv r0, r3, fp + 8006f9e: fbb3 f2f2 udiv r2, r3, r2 + 8006fa2: f502 12c8 add.w r2, r2, #1638400 ; 0x190000 + 8006fa6: fbb2 f0f0 udiv r0, r2, r0 + 8006faa: bf88 it hi + 8006fac: f44f 4770 movhi.w r7, #61440 ; 0xf000 + 8006fb0: f7ff f82e bl 8006010 <VL53L0X_isqrt> + 8006fb4: 0200 lsls r0, r0, #8 + 8006fb6: f500 70fa add.w r0, r0, #500 ; 0x1f4 + 8006fba: fbb0 f0fb udiv r0, r0, fp + 8006fbe: 4340 muls r0, r0 + 8006fc0: fb07 0007 mla r0, r7, r7, r0 + 8006fc4: f7ff f824 bl 8006010 <VL53L0X_isqrt> + 8006fc8: fb0b f000 mul.w r0, fp, r0 + 8006fcc: 9b07 ldr r3, [sp, #28] + 8006fce: 9a0b ldr r2, [sp, #44] ; 0x2c + 8006fd0: 4540 cmp r0, r8 + 8006fd2: bf28 it cs + 8006fd4: 4640 movcs r0, r8 + 8006fd6: 6018 str r0, [r3, #0] + 8006fd8: 9b08 ldr r3, [sp, #32] + 8006fda: f8c5 0140 str.w r0, [r5, #320] ; 0x140 + 8006fde: e9cd 9302 strd r9, r3, [sp, #8] + 8006fe2: f44f 7348 mov.w r3, #800 ; 0x320 + 8006fe6: 9300 str r3, [sp, #0] + 8006fe8: 9401 str r4, [sp, #4] + 8006fea: 4633 mov r3, r6 + 8006fec: 4651 mov r1, sl + 8006fee: 4628 mov r0, r5 + 8006ff0: f7ff fe90 bl 8006d14 <VL53L0X_calc_dmax> + 8006ff4: e73e b.n 8006e74 <VL53L0X_calc_sigma_estimate+0x84> + 8006ff6: f44f 3680 mov.w r6, #65536 ; 0x10000 + 8006ffa: e7a3 b.n 8006f44 <VL53L0X_calc_sigma_estimate+0x154> + 8006ffc: 028f87ae .word 0x028f87ae + 8007000: ffff0000 .word 0xffff0000 + 8007004: 00666666 .word 0x00666666 + 8007008: 0006999a .word 0x0006999a + 800700c: 249f270f .word 0x249f270f + +08007010 <VL53L0X_get_pal_range_status>: + 8007010: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8007014: b08b sub sp, #44 ; 0x2c + 8007016: 2700 movs r7, #0 + 8007018: f011 0f78 tst.w r1, #120 ; 0x78 + 800701c: e9dd b814 ldrd fp, r8, [sp, #80] ; 0x50 + 8007020: 4604 mov r4, r0 + 8007022: 9201 str r2, [sp, #4] + 8007024: 4699 mov r9, r3 + 8007026: f88d 700e strb.w r7, [sp, #14] + 800702a: f88d 700f strb.w r7, [sp, #15] + 800702e: f88d 7010 strb.w r7, [sp, #16] + 8007032: f88d 7011 strb.w r7, [sp, #17] + 8007036: f8ad 7012 strh.w r7, [sp, #18] + 800703a: 9709 str r7, [sp, #36] ; 0x24 + 800703c: f3c1 0ac3 ubfx sl, r1, #3, #4 + 8007040: f000 80af beq.w 80071a2 <VL53L0X_get_pal_range_status+0x192> + 8007044: f1aa 0305 sub.w r3, sl, #5 + 8007048: b2db uxtb r3, r3 + 800704a: 2b0a cmp r3, #10 + 800704c: d801 bhi.n 8007052 <VL53L0X_get_pal_range_status+0x42> + 800704e: 4a6b ldr r2, [pc, #428] ; (80071fc <VL53L0X_get_pal_range_status+0x1ec>) + 8007050: 5cd7 ldrb r7, [r2, r3] + 8007052: f10d 020e add.w r2, sp, #14 + 8007056: 2100 movs r1, #0 + 8007058: 4620 mov r0, r4 + 800705a: f7fd ff92 bl 8004f82 <VL53L0X_GetLimitCheckEnable> + 800705e: f89d 500e ldrb.w r5, [sp, #14] + 8007062: 4606 mov r6, r0 + 8007064: b1d5 cbz r5, 800709c <VL53L0X_get_pal_range_status+0x8c> + 8007066: 2800 cmp r0, #0 + 8007068: f040 809d bne.w 80071a6 <VL53L0X_get_pal_range_status+0x196> + 800706c: ab09 add r3, sp, #36 ; 0x24 + 800706e: aa05 add r2, sp, #20 + 8007070: 4659 mov r1, fp + 8007072: 4620 mov r0, r4 + 8007074: f7ff febc bl 8006df0 <VL53L0X_calc_sigma_estimate> + 8007078: 2800 cmp r0, #0 + 800707a: f040 8096 bne.w 80071aa <VL53L0X_get_pal_range_status+0x19a> + 800707e: 9b09 ldr r3, [sp, #36] ; 0x24 + 8007080: f8ab 300a strh.w r3, [fp, #10] + 8007084: 4601 mov r1, r0 + 8007086: aa06 add r2, sp, #24 + 8007088: 4620 mov r0, r4 + 800708a: f7fd ffb3 bl 8004ff4 <VL53L0X_GetLimitCheckValue> + 800708e: 9d06 ldr r5, [sp, #24] + 8007090: b125 cbz r5, 800709c <VL53L0X_get_pal_range_status+0x8c> + 8007092: 9b05 ldr r3, [sp, #20] + 8007094: 429d cmp r5, r3 + 8007096: bf2c ite cs + 8007098: 2500 movcs r5, #0 + 800709a: 2501 movcc r5, #1 + 800709c: b920 cbnz r0, 80070a8 <VL53L0X_get_pal_range_status+0x98> + 800709e: aa04 add r2, sp, #16 + 80070a0: 2102 movs r1, #2 + 80070a2: 4620 mov r0, r4 + 80070a4: f7fd ff6d bl 8004f82 <VL53L0X_GetLimitCheckEnable> + 80070a8: f89d 6010 ldrb.w r6, [sp, #16] + 80070ac: b326 cbz r6, 80070f8 <VL53L0X_get_pal_range_status+0xe8> + 80070ae: 2800 cmp r0, #0 + 80070b0: d17d bne.n 80071ae <VL53L0X_get_pal_range_status+0x19e> + 80070b2: aa07 add r2, sp, #28 + 80070b4: 2102 movs r1, #2 + 80070b6: 4620 mov r0, r4 + 80070b8: f7fd ff9c bl 8004ff4 <VL53L0X_GetLimitCheckValue> + 80070bc: b988 cbnz r0, 80070e2 <VL53L0X_get_pal_range_status+0xd2> + 80070be: 2201 movs r2, #1 + 80070c0: 21ff movs r1, #255 ; 0xff + 80070c2: 4620 mov r0, r4 + 80070c4: f000 f8f0 bl 80072a8 <VL53L0X_WrByte> + 80070c8: b958 cbnz r0, 80070e2 <VL53L0X_get_pal_range_status+0xd2> + 80070ca: f10d 0212 add.w r2, sp, #18 + 80070ce: 21b6 movs r1, #182 ; 0xb6 + 80070d0: 4620 mov r0, r4 + 80070d2: f000 f937 bl 8007344 <VL53L0X_RdWord> + 80070d6: b920 cbnz r0, 80070e2 <VL53L0X_get_pal_range_status+0xd2> + 80070d8: 4602 mov r2, r0 + 80070da: 21ff movs r1, #255 ; 0xff + 80070dc: 4620 mov r0, r4 + 80070de: f000 f8e3 bl 80072a8 <VL53L0X_WrByte> + 80070e2: f8bd 3012 ldrh.w r3, [sp, #18] + 80070e6: 9e07 ldr r6, [sp, #28] + 80070e8: 025b lsls r3, r3, #9 + 80070ea: f8c4 3148 str.w r3, [r4, #328] ; 0x148 + 80070ee: b11e cbz r6, 80070f8 <VL53L0X_get_pal_range_status+0xe8> + 80070f0: 429e cmp r6, r3 + 80070f2: bf2c ite cs + 80070f4: 2600 movcs r6, #0 + 80070f6: 2601 movcc r6, #1 + 80070f8: b928 cbnz r0, 8007106 <VL53L0X_get_pal_range_status+0xf6> + 80070fa: f10d 0211 add.w r2, sp, #17 + 80070fe: 2103 movs r1, #3 + 8007100: 4620 mov r0, r4 + 8007102: f7fd ff3e bl 8004f82 <VL53L0X_GetLimitCheckEnable> + 8007106: f89d 3011 ldrb.w r3, [sp, #17] + 800710a: b193 cbz r3, 8007132 <VL53L0X_get_pal_range_status+0x122> + 800710c: 2800 cmp r0, #0 + 800710e: d173 bne.n 80071f8 <VL53L0X_get_pal_range_status+0x1e8> + 8007110: f1b9 0f00 cmp.w r9, #0 + 8007114: d003 beq.n 800711e <VL53L0X_get_pal_range_status+0x10e> + 8007116: 9b01 ldr r3, [sp, #4] + 8007118: 021b lsls r3, r3, #8 + 800711a: fbb3 f9f9 udiv r9, r3, r9 + 800711e: aa08 add r2, sp, #32 + 8007120: 2103 movs r1, #3 + 8007122: 4620 mov r0, r4 + 8007124: f7fd ff66 bl 8004ff4 <VL53L0X_GetLimitCheckValue> + 8007128: 9b08 ldr r3, [sp, #32] + 800712a: 454b cmp r3, r9 + 800712c: bf94 ite ls + 800712e: 2300 movls r3, #0 + 8007130: 2301 movhi r3, #1 + 8007132: b920 cbnz r0, 800713e <VL53L0X_get_pal_range_status+0x12e> + 8007134: 2f01 cmp r7, #1 + 8007136: d13c bne.n 80071b2 <VL53L0X_get_pal_range_status+0x1a2> + 8007138: 22ff movs r2, #255 ; 0xff + 800713a: f888 2000 strb.w r2, [r8] + 800713e: f898 2000 ldrb.w r2, [r8] + 8007142: b90a cbnz r2, 8007148 <VL53L0X_get_pal_range_status+0x138> + 8007144: f8ab 200a strh.w r2, [fp, #10] + 8007148: f10d 020f add.w r2, sp, #15 + 800714c: 2101 movs r1, #1 + 800714e: 4620 mov r0, r4 + 8007150: 9301 str r3, [sp, #4] + 8007152: f7fd ff16 bl 8004f82 <VL53L0X_GetLimitCheckEnable> + 8007156: bb08 cbnz r0, 800719c <VL53L0X_get_pal_range_status+0x18c> + 8007158: f89d 200e ldrb.w r2, [sp, #14] + 800715c: 9b01 ldr r3, [sp, #4] + 800715e: 2a00 cmp r2, #0 + 8007160: bf08 it eq + 8007162: 2501 moveq r5, #1 + 8007164: f1ba 0f04 cmp.w sl, #4 + 8007168: bf18 it ne + 800716a: f89d 200f ldrbne.w r2, [sp, #15] + 800716e: f884 502e strb.w r5, [r4, #46] ; 0x2e + 8007172: bf1a itte ne + 8007174: fab2 f282 clzne r2, r2 + 8007178: 0952 lsrne r2, r2, #5 + 800717a: 2201 moveq r2, #1 + 800717c: f884 202f strb.w r2, [r4, #47] ; 0x2f + 8007180: f89d 2010 ldrb.w r2, [sp, #16] + 8007184: 2a00 cmp r2, #0 + 8007186: f89d 2011 ldrb.w r2, [sp, #17] + 800718a: bf08 it eq + 800718c: 2601 moveq r6, #1 + 800718e: 2a00 cmp r2, #0 + 8007190: bf08 it eq + 8007192: 2301 moveq r3, #1 + 8007194: f884 6030 strb.w r6, [r4, #48] ; 0x30 + 8007198: f884 3031 strb.w r3, [r4, #49] ; 0x31 + 800719c: b00b add sp, #44 ; 0x2c + 800719e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80071a2: 2701 movs r7, #1 + 80071a4: e755 b.n 8007052 <VL53L0X_get_pal_range_status+0x42> + 80071a6: 2500 movs r5, #0 + 80071a8: e77e b.n 80070a8 <VL53L0X_get_pal_range_status+0x98> + 80071aa: 4635 mov r5, r6 + 80071ac: e77c b.n 80070a8 <VL53L0X_get_pal_range_status+0x98> + 80071ae: 2600 movs r6, #0 + 80071b0: e7a9 b.n 8007106 <VL53L0X_get_pal_range_status+0xf6> + 80071b2: f10a 32ff add.w r2, sl, #4294967295 + 80071b6: 2a09 cmp r2, #9 + 80071b8: d80a bhi.n 80071d0 <VL53L0X_get_pal_range_status+0x1c0> + 80071ba: e8df f002 tbb [pc, r2] + 80071be: 0505 .short 0x0505 + 80071c0: 07090905 .word 0x07090905 + 80071c4: 0b070b09 .word 0x0b070b09 + 80071c8: 2205 movs r2, #5 + 80071ca: e7b6 b.n 800713a <VL53L0X_get_pal_range_status+0x12a> + 80071cc: 2204 movs r2, #4 + 80071ce: e7b4 b.n 800713a <VL53L0X_get_pal_range_status+0x12a> + 80071d0: 2e01 cmp r6, #1 + 80071d2: d101 bne.n 80071d8 <VL53L0X_get_pal_range_status+0x1c8> + 80071d4: 2203 movs r2, #3 + 80071d6: e7b0 b.n 800713a <VL53L0X_get_pal_range_status+0x12a> + 80071d8: f1ba 0f04 cmp.w sl, #4 + 80071dc: d001 beq.n 80071e2 <VL53L0X_get_pal_range_status+0x1d2> + 80071de: 2b01 cmp r3, #1 + 80071e0: d101 bne.n 80071e6 <VL53L0X_get_pal_range_status+0x1d6> + 80071e2: 2202 movs r2, #2 + 80071e4: e7a9 b.n 800713a <VL53L0X_get_pal_range_status+0x12a> + 80071e6: 2d01 cmp r5, #1 + 80071e8: bf1b ittet ne + 80071ea: 2300 movne r3, #0 + 80071ec: f888 3000 strbne.w r3, [r8] + 80071f0: f888 5000 strbeq.w r5, [r8] + 80071f4: 462b movne r3, r5 + 80071f6: e7a2 b.n 800713e <VL53L0X_get_pal_range_status+0x12e> + 80071f8: 2300 movs r3, #0 + 80071fa: e7a0 b.n 800713e <VL53L0X_get_pal_range_status+0x12e> + 80071fc: 08014f96 .word 0x08014f96 + +08007200 <_I2CWrite>: + 8007200: b507 push {r0, r1, r2, lr} + 8007202: f102 030a add.w r3, r2, #10 + 8007206: 9300 str r3, [sp, #0] + 8007208: b293 uxth r3, r2 + 800720a: 460a mov r2, r1 + 800720c: f890 1160 ldrb.w r1, [r0, #352] ; 0x160 + 8007210: f8d0 015c ldr.w r0, [r0, #348] ; 0x15c + 8007214: f001 fbb2 bl 800897c <HAL_I2C_Master_Transmit> + 8007218: b003 add sp, #12 + 800721a: f85d fb04 ldr.w pc, [sp], #4 + +0800721e <_I2CRead>: + 800721e: b513 push {r0, r1, r4, lr} + 8007220: f102 030a add.w r3, r2, #10 + 8007224: f890 4160 ldrb.w r4, [r0, #352] ; 0x160 + 8007228: 9300 str r3, [sp, #0] + 800722a: f8d0 015c ldr.w r0, [r0, #348] ; 0x15c + 800722e: b293 uxth r3, r2 + 8007230: 460a mov r2, r1 + 8007232: f044 0101 orr.w r1, r4, #1 + 8007236: f001 fc37 bl 8008aa8 <HAL_I2C_Master_Receive> + 800723a: b002 add sp, #8 + 800723c: bd10 pop {r4, pc} + ... + +08007240 <VL53L0X_WriteMulti>: + 8007240: 2b3f cmp r3, #63 ; 0x3f + 8007242: b5f8 push {r3, r4, r5, r6, r7, lr} + 8007244: 460e mov r6, r1 + 8007246: 4605 mov r5, r0 + 8007248: 4611 mov r1, r2 + 800724a: 461c mov r4, r3 + 800724c: d811 bhi.n 8007272 <VL53L0X_WriteMulti+0x32> + 800724e: 4f0a ldr r7, [pc, #40] ; (8007278 <VL53L0X_WriteMulti+0x38>) + 8007250: 4638 mov r0, r7 + 8007252: 461a mov r2, r3 + 8007254: f800 6b01 strb.w r6, [r0], #1 + 8007258: f00d f833 bl 80142c2 <memcpy> + 800725c: 1c62 adds r2, r4, #1 + 800725e: 4639 mov r1, r7 + 8007260: 4628 mov r0, r5 + 8007262: f7ff ffcd bl 8007200 <_I2CWrite> + 8007266: 2800 cmp r0, #0 + 8007268: bf0c ite eq + 800726a: 2000 moveq r0, #0 + 800726c: f06f 0013 mvnne.w r0, #19 + 8007270: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8007272: f06f 0003 mvn.w r0, #3 + 8007276: e7fb b.n 8007270 <VL53L0X_WriteMulti+0x30> + 8007278: 20000f00 .word 0x20000f00 + +0800727c <VL53L0X_ReadMulti>: + 800727c: b573 push {r0, r1, r4, r5, r6, lr} + 800727e: 4615 mov r5, r2 + 8007280: f88d 1007 strb.w r1, [sp, #7] + 8007284: 2201 movs r2, #1 + 8007286: f10d 0107 add.w r1, sp, #7 + 800728a: 4604 mov r4, r0 + 800728c: 461e mov r6, r3 + 800728e: f7ff ffb7 bl 8007200 <_I2CWrite> + 8007292: b928 cbnz r0, 80072a0 <VL53L0X_ReadMulti+0x24> + 8007294: 4632 mov r2, r6 + 8007296: 4629 mov r1, r5 + 8007298: 4620 mov r0, r4 + 800729a: f7ff ffc0 bl 800721e <_I2CRead> + 800729e: b108 cbz r0, 80072a4 <VL53L0X_ReadMulti+0x28> + 80072a0: f06f 0013 mvn.w r0, #19 + 80072a4: b002 add sp, #8 + 80072a6: bd70 pop {r4, r5, r6, pc} + +080072a8 <VL53L0X_WrByte>: + 80072a8: b508 push {r3, lr} + 80072aa: 4b06 ldr r3, [pc, #24] ; (80072c4 <VL53L0X_WrByte+0x1c>) + 80072ac: 7019 strb r1, [r3, #0] + 80072ae: 705a strb r2, [r3, #1] + 80072b0: 4619 mov r1, r3 + 80072b2: 2202 movs r2, #2 + 80072b4: f7ff ffa4 bl 8007200 <_I2CWrite> + 80072b8: 2800 cmp r0, #0 + 80072ba: bf14 ite ne + 80072bc: f06f 0013 mvnne.w r0, #19 + 80072c0: 2000 moveq r0, #0 + 80072c2: bd08 pop {r3, pc} + 80072c4: 20000f00 .word 0x20000f00 + +080072c8 <VL53L0X_WrWord>: + 80072c8: b508 push {r3, lr} + 80072ca: 4b07 ldr r3, [pc, #28] ; (80072e8 <VL53L0X_WrWord+0x20>) + 80072cc: 7019 strb r1, [r3, #0] + 80072ce: 0a11 lsrs r1, r2, #8 + 80072d0: 7059 strb r1, [r3, #1] + 80072d2: 709a strb r2, [r3, #2] + 80072d4: 4619 mov r1, r3 + 80072d6: 2203 movs r2, #3 + 80072d8: f7ff ff92 bl 8007200 <_I2CWrite> + 80072dc: 2800 cmp r0, #0 + 80072de: bf14 ite ne + 80072e0: f06f 0013 mvnne.w r0, #19 + 80072e4: 2000 moveq r0, #0 + 80072e6: bd08 pop {r3, pc} + 80072e8: 20000f00 .word 0x20000f00 + +080072ec <VL53L0X_RdByte>: + 80072ec: b537 push {r0, r1, r2, r4, r5, lr} + 80072ee: 4615 mov r5, r2 + 80072f0: f88d 1007 strb.w r1, [sp, #7] + 80072f4: 2201 movs r2, #1 + 80072f6: f10d 0107 add.w r1, sp, #7 + 80072fa: 4604 mov r4, r0 + 80072fc: f7ff ff80 bl 8007200 <_I2CWrite> + 8007300: b928 cbnz r0, 800730e <VL53L0X_RdByte+0x22> + 8007302: 2201 movs r2, #1 + 8007304: 4629 mov r1, r5 + 8007306: 4620 mov r0, r4 + 8007308: f7ff ff89 bl 800721e <_I2CRead> + 800730c: b108 cbz r0, 8007312 <VL53L0X_RdByte+0x26> + 800730e: f06f 0013 mvn.w r0, #19 + 8007312: b003 add sp, #12 + 8007314: bd30 pop {r4, r5, pc} + +08007316 <VL53L0X_UpdateByte>: + 8007316: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8007318: 4615 mov r5, r2 + 800731a: f10d 0207 add.w r2, sp, #7 + 800731e: 4606 mov r6, r0 + 8007320: 460f mov r7, r1 + 8007322: 461c mov r4, r3 + 8007324: f7ff ffe2 bl 80072ec <VL53L0X_RdByte> + 8007328: b950 cbnz r0, 8007340 <VL53L0X_UpdateByte+0x2a> + 800732a: f89d 3007 ldrb.w r3, [sp, #7] + 800732e: 401d ands r5, r3 + 8007330: ea44 0205 orr.w r2, r4, r5 + 8007334: 4639 mov r1, r7 + 8007336: 4630 mov r0, r6 + 8007338: f88d 2007 strb.w r2, [sp, #7] + 800733c: f7ff ffb4 bl 80072a8 <VL53L0X_WrByte> + 8007340: b003 add sp, #12 + 8007342: bdf0 pop {r4, r5, r6, r7, pc} + +08007344 <VL53L0X_RdWord>: + 8007344: b573 push {r0, r1, r4, r5, r6, lr} + 8007346: 4614 mov r4, r2 + 8007348: f88d 1007 strb.w r1, [sp, #7] + 800734c: 2201 movs r2, #1 + 800734e: f10d 0107 add.w r1, sp, #7 + 8007352: 4606 mov r6, r0 + 8007354: f7ff ff54 bl 8007200 <_I2CWrite> + 8007358: b118 cbz r0, 8007362 <VL53L0X_RdWord+0x1e> + 800735a: f06f 0013 mvn.w r0, #19 + 800735e: b002 add sp, #8 + 8007360: bd70 pop {r4, r5, r6, pc} + 8007362: 4d07 ldr r5, [pc, #28] ; (8007380 <VL53L0X_RdWord+0x3c>) + 8007364: 2202 movs r2, #2 + 8007366: 4629 mov r1, r5 + 8007368: 4630 mov r0, r6 + 800736a: f7ff ff58 bl 800721e <_I2CRead> + 800736e: 2800 cmp r0, #0 + 8007370: d1f3 bne.n 800735a <VL53L0X_RdWord+0x16> + 8007372: 782a ldrb r2, [r5, #0] + 8007374: 786b ldrb r3, [r5, #1] + 8007376: eb03 2302 add.w r3, r3, r2, lsl #8 + 800737a: 8023 strh r3, [r4, #0] + 800737c: e7ef b.n 800735e <VL53L0X_RdWord+0x1a> + 800737e: bf00 nop + 8007380: 20000f00 .word 0x20000f00 + +08007384 <VL53L0X_RdDWord>: + 8007384: b573 push {r0, r1, r4, r5, r6, lr} + 8007386: 4614 mov r4, r2 + 8007388: f88d 1007 strb.w r1, [sp, #7] + 800738c: 2201 movs r2, #1 + 800738e: f10d 0107 add.w r1, sp, #7 + 8007392: 4606 mov r6, r0 + 8007394: f7ff ff34 bl 8007200 <_I2CWrite> + 8007398: b118 cbz r0, 80073a2 <VL53L0X_RdDWord+0x1e> + 800739a: f06f 0013 mvn.w r0, #19 + 800739e: b002 add sp, #8 + 80073a0: bd70 pop {r4, r5, r6, pc} + 80073a2: 4d0a ldr r5, [pc, #40] ; (80073cc <VL53L0X_RdDWord+0x48>) + 80073a4: 2204 movs r2, #4 + 80073a6: 4629 mov r1, r5 + 80073a8: 4630 mov r0, r6 + 80073aa: f7ff ff38 bl 800721e <_I2CRead> + 80073ae: 2800 cmp r0, #0 + 80073b0: d1f3 bne.n 800739a <VL53L0X_RdDWord+0x16> + 80073b2: 786b ldrb r3, [r5, #1] + 80073b4: 782a ldrb r2, [r5, #0] + 80073b6: 041b lsls r3, r3, #16 + 80073b8: eb03 6302 add.w r3, r3, r2, lsl #24 + 80073bc: 78ea ldrb r2, [r5, #3] + 80073be: 4413 add r3, r2 + 80073c0: 78aa ldrb r2, [r5, #2] + 80073c2: eb03 2302 add.w r3, r3, r2, lsl #8 + 80073c6: 6023 str r3, [r4, #0] + 80073c8: e7e9 b.n 800739e <VL53L0X_RdDWord+0x1a> + 80073ca: bf00 nop + 80073cc: 20000f00 .word 0x20000f00 + +080073d0 <VL53L0X_PollingDelay>: + 80073d0: b508 push {r3, lr} + 80073d2: 2002 movs r0, #2 + 80073d4: f7fb fbc2 bl 8002b5c <HAL_Delay> + 80073d8: 2000 movs r0, #0 + 80073da: bd08 pop {r3, pc} + +080073dc <SystemInit>: + 80073dc: 4770 bx lr + ... + +080073e0 <HAL_Init>: + 80073e0: b510 push {r4, lr} + 80073e2: 2003 movs r0, #3 + 80073e4: f000 fc72 bl 8007ccc <HAL_NVIC_SetPriorityGrouping> + 80073e8: f001 fdaa bl 8008f40 <HAL_RCC_GetHCLKFreq> + 80073ec: 4b06 ldr r3, [pc, #24] ; (8007408 <HAL_Init+0x28>) + 80073ee: 6018 str r0, [r3, #0] + 80073f0: 200f movs r0, #15 + 80073f2: f7fb fba9 bl 8002b48 <HAL_InitTick> + 80073f6: 4604 mov r4, r0 + 80073f8: b918 cbnz r0, 8007402 <HAL_Init+0x22> + 80073fa: f7fb f9f6 bl 80027ea <HAL_MspInit> + 80073fe: 4620 mov r0, r4 + 8007400: bd10 pop {r4, pc} + 8007402: 2401 movs r4, #1 + 8007404: e7fb b.n 80073fe <HAL_Init+0x1e> + 8007406: bf00 nop + 8007408: 20000828 .word 0x20000828 + +0800740c <HAL_SuspendTick>: + 800740c: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 + 8007410: 6913 ldr r3, [r2, #16] + 8007412: f023 0302 bic.w r3, r3, #2 + 8007416: 6113 str r3, [r2, #16] + 8007418: 4770 bx lr + +0800741a <HAL_ResumeTick>: + 800741a: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 + 800741e: 6913 ldr r3, [r2, #16] + 8007420: f043 0302 orr.w r3, r3, #2 + 8007424: 6113 str r3, [r2, #16] + 8007426: 4770 bx lr + +08007428 <HAL_GetUIDw0>: + 8007428: 4b01 ldr r3, [pc, #4] ; (8007430 <HAL_GetUIDw0+0x8>) + 800742a: f8d3 0590 ldr.w r0, [r3, #1424] ; 0x590 + 800742e: 4770 bx lr + 8007430: 1fff7000 .word 0x1fff7000 + +08007434 <HAL_GetUIDw1>: + 8007434: 4b01 ldr r3, [pc, #4] ; (800743c <HAL_GetUIDw1+0x8>) + 8007436: f8d3 0594 ldr.w r0, [r3, #1428] ; 0x594 + 800743a: 4770 bx lr + 800743c: 1fff7000 .word 0x1fff7000 + +08007440 <HAL_GetUIDw2>: + 8007440: 4b01 ldr r3, [pc, #4] ; (8007448 <HAL_GetUIDw2+0x8>) + 8007442: f8d3 0598 ldr.w r0, [r3, #1432] ; 0x598 + 8007446: 4770 bx lr + 8007448: 1fff7000 .word 0x1fff7000 + +0800744c <HAL_DBGMCU_EnableDBGSleepMode>: + 800744c: 4a02 ldr r2, [pc, #8] ; (8007458 <HAL_DBGMCU_EnableDBGSleepMode+0xc>) + 800744e: 6853 ldr r3, [r2, #4] + 8007450: f043 0301 orr.w r3, r3, #1 + 8007454: 6053 str r3, [r2, #4] + 8007456: 4770 bx lr + 8007458: e0042000 .word 0xe0042000 + +0800745c <HAL_DBGMCU_EnableDBGStopMode>: + 800745c: 4a02 ldr r2, [pc, #8] ; (8007468 <HAL_DBGMCU_EnableDBGStopMode+0xc>) + 800745e: 6853 ldr r3, [r2, #4] + 8007460: f043 0302 orr.w r3, r3, #2 + 8007464: 6053 str r3, [r2, #4] + 8007466: 4770 bx lr + 8007468: e0042000 .word 0xe0042000 + +0800746c <HAL_DBGMCU_EnableDBGStandbyMode>: + 800746c: 4a02 ldr r2, [pc, #8] ; (8007478 <HAL_DBGMCU_EnableDBGStandbyMode+0xc>) + 800746e: 6853 ldr r3, [r2, #4] + 8007470: f043 0304 orr.w r3, r3, #4 + 8007474: 6053 str r3, [r2, #4] + 8007476: 4770 bx lr + 8007478: e0042000 .word 0xe0042000 + +0800747c <LL_ADC_REG_IsConversionOngoing>: + 800747c: 6880 ldr r0, [r0, #8] + 800747e: f3c0 0080 ubfx r0, r0, #2, #1 + 8007482: 4770 bx lr + +08007484 <HAL_ADC_Init>: + 8007484: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8007486: 2300 movs r3, #0 + 8007488: 9301 str r3, [sp, #4] + 800748a: 4604 mov r4, r0 + 800748c: 2800 cmp r0, #0 + 800748e: f000 80e9 beq.w 8007664 <HAL_ADC_Init+0x1e0> + 8007492: 6d85 ldr r5, [r0, #88] ; 0x58 + 8007494: b925 cbnz r5, 80074a0 <HAL_ADC_Init+0x1c> + 8007496: f7fa fce5 bl 8001e64 <HAL_ADC_MspInit> + 800749a: 65e5 str r5, [r4, #92] ; 0x5c + 800749c: f884 5054 strb.w r5, [r4, #84] ; 0x54 + 80074a0: 6823 ldr r3, [r4, #0] + 80074a2: 689a ldr r2, [r3, #8] + 80074a4: 00d0 lsls r0, r2, #3 + 80074a6: f140 80a1 bpl.w 80075ec <HAL_ADC_Init+0x168> + 80074aa: 689a ldr r2, [r3, #8] + 80074ac: 00d1 lsls r1, r2, #3 + 80074ae: f100 80b4 bmi.w 800761a <HAL_ADC_Init+0x196> + 80074b2: 6da2 ldr r2, [r4, #88] ; 0x58 + 80074b4: f042 0210 orr.w r2, r2, #16 + 80074b8: 65a2 str r2, [r4, #88] ; 0x58 + 80074ba: 6de2 ldr r2, [r4, #92] ; 0x5c + 80074bc: f042 0201 orr.w r2, r2, #1 + 80074c0: 65e2 str r2, [r4, #92] ; 0x5c + 80074c2: 2501 movs r5, #1 + 80074c4: 4618 mov r0, r3 + 80074c6: f7ff ffd9 bl 800747c <LL_ADC_REG_IsConversionOngoing> + 80074ca: 6da2 ldr r2, [r4, #88] ; 0x58 + 80074cc: f002 0210 and.w r2, r2, #16 + 80074d0: 4302 orrs r2, r0 + 80074d2: f040 80c9 bne.w 8007668 <HAL_ADC_Init+0x1e4> + 80074d6: 6da2 ldr r2, [r4, #88] ; 0x58 + 80074d8: 6920 ldr r0, [r4, #16] + 80074da: f422 7281 bic.w r2, r2, #258 ; 0x102 + 80074de: f042 0202 orr.w r2, r2, #2 + 80074e2: 65a2 str r2, [r4, #88] ; 0x58 + 80074e4: 689a ldr r2, [r3, #8] + 80074e6: 07d2 lsls r2, r2, #31 + 80074e8: d45d bmi.n 80075a6 <HAL_ADC_Init+0x122> + 80074ea: 6b22 ldr r2, [r4, #48] ; 0x30 + 80074ec: 7ea6 ldrb r6, [r4, #26] + 80074ee: f894 c02c ldrb.w ip, [r4, #44] ; 0x2c + 80074f2: 3a00 subs r2, #0 + 80074f4: bf18 it ne + 80074f6: 2201 movne r2, #1 + 80074f8: 0317 lsls r7, r2, #12 + 80074fa: e9d4 1202 ldrd r1, r2, [r4, #8] + 80074fe: 430a orrs r2, r1 + 8007500: 7e21 ldrb r1, [r4, #24] + 8007502: ea42 3281 orr.w r2, r2, r1, lsl #14 + 8007506: 7e61 ldrb r1, [r4, #25] + 8007508: ea42 32c1 orr.w r2, r2, r1, lsl #15 + 800750c: ea42 3246 orr.w r2, r2, r6, lsl #13 + 8007510: 2800 cmp r0, #0 + 8007512: ea42 024c orr.w r2, r2, ip, lsl #1 + 8007516: bfb4 ite lt + 8007518: f020 4100 biclt.w r1, r0, #2147483648 ; 0x80000000 + 800751c: f44f 1100 movge.w r1, #2097152 ; 0x200000 + 8007520: 433a orrs r2, r7 + 8007522: 430a orrs r2, r1 + 8007524: f894 1020 ldrb.w r1, [r4, #32] + 8007528: 2901 cmp r1, #1 + 800752a: d103 bne.n 8007534 <HAL_ADC_Init+0xb0> + 800752c: 2e00 cmp r6, #0 + 800752e: d176 bne.n 800761e <HAL_ADC_Init+0x19a> + 8007530: f442 3280 orr.w r2, r2, #65536 ; 0x10000 + 8007534: 6a61 ldr r1, [r4, #36] ; 0x24 + 8007536: b121 cbz r1, 8007542 <HAL_ADC_Init+0xbe> + 8007538: 6aa6 ldr r6, [r4, #40] ; 0x28 + 800753a: f401 71e0 and.w r1, r1, #448 ; 0x1c0 + 800753e: 4331 orrs r1, r6 + 8007540: 430a orrs r2, r1 + 8007542: 68d9 ldr r1, [r3, #12] + 8007544: 6ce6 ldr r6, [r4, #76] ; 0x4c + 8007546: f421 31fe bic.w r1, r1, #130048 ; 0x1fc00 + 800754a: f421 71ff bic.w r1, r1, #510 ; 0x1fe + 800754e: 4311 orrs r1, r2 + 8007550: 60d9 str r1, [r3, #12] + 8007552: f894 203c ldrb.w r2, [r4, #60] ; 0x3c + 8007556: 6861 ldr r1, [r4, #4] + 8007558: 2a01 cmp r2, #1 + 800755a: f001 4c40 and.w ip, r1, #3221225472 ; 0xc0000000 + 800755e: ea4c 0606 orr.w r6, ip, r6 + 8007562: d109 bne.n 8007578 <HAL_ADC_Init+0xf4> + 8007564: e9d4 2710 ldrd r2, r7, [r4, #64] ; 0x40 + 8007568: 433a orrs r2, r7 + 800756a: 4332 orrs r2, r6 + 800756c: 6ca6 ldr r6, [r4, #72] ; 0x48 + 800756e: 4332 orrs r2, r6 + 8007570: ea42 020c orr.w r2, r2, ip + 8007574: f042 0601 orr.w r6, r2, #1 + 8007578: 691f ldr r7, [r3, #16] + 800757a: 4a3e ldr r2, [pc, #248] ; (8007674 <HAL_ADC_Init+0x1f0>) + 800757c: 403a ands r2, r7 + 800757e: 4332 orrs r2, r6 + 8007580: 611a str r2, [r3, #16] + 8007582: f021 4200 bic.w r2, r1, #2147483648 ; 0x80000000 + 8007586: f1b2 4f80 cmp.w r2, #1073741824 ; 0x40000000 + 800758a: d00c beq.n 80075a6 <HAL_ADC_Init+0x122> + 800758c: f1b1 4f00 cmp.w r1, #2147483648 ; 0x80000000 + 8007590: d009 beq.n 80075a6 <HAL_ADC_Init+0x122> + 8007592: 4e39 ldr r6, [pc, #228] ; (8007678 <HAL_ADC_Init+0x1f4>) + 8007594: f8d6 2708 ldr.w r2, [r6, #1800] ; 0x708 + 8007598: f401 1170 and.w r1, r1, #3932160 ; 0x3c0000 + 800759c: f422 1270 bic.w r2, r2, #3932160 ; 0x3c0000 + 80075a0: 430a orrs r2, r1 + 80075a2: f8c6 2708 str.w r2, [r6, #1800] ; 0x708 + 80075a6: 695a ldr r2, [r3, #20] + 80075a8: 6b66 ldr r6, [r4, #52] ; 0x34 + 80075aa: 6ba1 ldr r1, [r4, #56] ; 0x38 + 80075ac: f022 0207 bic.w r2, r2, #7 + 80075b0: 4332 orrs r2, r6 + 80075b2: 615a str r2, [r3, #20] + 80075b4: 695a ldr r2, [r3, #20] + 80075b6: f022 0270 bic.w r2, r2, #112 ; 0x70 + 80075ba: ea42 1201 orr.w r2, r2, r1, lsl #4 + 80075be: 615a str r2, [r3, #20] + 80075c0: 2800 cmp r0, #0 + 80075c2: d135 bne.n 8007630 <HAL_ADC_Init+0x1ac> + 80075c4: 6a9a ldr r2, [r3, #40] ; 0x28 + 80075c6: f062 020f orn r2, r2, #15 + 80075ca: 629a str r2, [r3, #40] ; 0x28 + 80075cc: 695b ldr r3, [r3, #20] + 80075ce: f003 0307 and.w r3, r3, #7 + 80075d2: 429e cmp r6, r3 + 80075d4: d13c bne.n 8007650 <HAL_ADC_Init+0x1cc> + 80075d6: 2300 movs r3, #0 + 80075d8: 65e3 str r3, [r4, #92] ; 0x5c + 80075da: 6da3 ldr r3, [r4, #88] ; 0x58 + 80075dc: f023 0303 bic.w r3, r3, #3 + 80075e0: f043 0301 orr.w r3, r3, #1 + 80075e4: 65a3 str r3, [r4, #88] ; 0x58 + 80075e6: 4628 mov r0, r5 + 80075e8: b003 add sp, #12 + 80075ea: bdf0 pop {r4, r5, r6, r7, pc} + 80075ec: 689a ldr r2, [r3, #8] + 80075ee: 4923 ldr r1, [pc, #140] ; (800767c <HAL_ADC_Init+0x1f8>) + 80075f0: f022 4210 bic.w r2, r2, #2415919104 ; 0x90000000 + 80075f4: f022 0217 bic.w r2, r2, #23 + 80075f8: f042 5280 orr.w r2, r2, #268435456 ; 0x10000000 + 80075fc: 609a str r2, [r3, #8] + 80075fe: 4a20 ldr r2, [pc, #128] ; (8007680 <HAL_ADC_Init+0x1fc>) + 8007600: 6812 ldr r2, [r2, #0] + 8007602: fbb2 f2f1 udiv r2, r2, r1 + 8007606: 3201 adds r2, #1 + 8007608: 0052 lsls r2, r2, #1 + 800760a: 9201 str r2, [sp, #4] + 800760c: 9a01 ldr r2, [sp, #4] + 800760e: 2a00 cmp r2, #0 + 8007610: f43f af4b beq.w 80074aa <HAL_ADC_Init+0x26> + 8007614: 9a01 ldr r2, [sp, #4] + 8007616: 3a01 subs r2, #1 + 8007618: e7f7 b.n 800760a <HAL_ADC_Init+0x186> + 800761a: 2500 movs r5, #0 + 800761c: e752 b.n 80074c4 <HAL_ADC_Init+0x40> + 800761e: 6da1 ldr r1, [r4, #88] ; 0x58 + 8007620: f041 0120 orr.w r1, r1, #32 + 8007624: 65a1 str r1, [r4, #88] ; 0x58 + 8007626: 6de1 ldr r1, [r4, #92] ; 0x5c + 8007628: f041 0101 orr.w r1, r1, #1 + 800762c: 65e1 str r1, [r4, #92] ; 0x5c + 800762e: e781 b.n 8007534 <HAL_ADC_Init+0xb0> + 8007630: f5b0 1f00 cmp.w r0, #2097152 ; 0x200000 + 8007634: d1ca bne.n 80075cc <HAL_ADC_Init+0x148> + 8007636: 6a9a ldr r2, [r3, #40] ; 0x28 + 8007638: 69e2 ldr r2, [r4, #28] + 800763a: 3a01 subs r2, #1 + 800763c: 0092 lsls r2, r2, #2 + 800763e: f06f 010f mvn.w r1, #15 + 8007642: f002 021c and.w r2, r2, #28 + 8007646: fa01 f202 lsl.w r2, r1, r2 + 800764a: 6e21 ldr r1, [r4, #96] ; 0x60 + 800764c: 430a orrs r2, r1 + 800764e: e7bc b.n 80075ca <HAL_ADC_Init+0x146> + 8007650: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007652: f023 0312 bic.w r3, r3, #18 + 8007656: f043 0310 orr.w r3, r3, #16 + 800765a: 65a3 str r3, [r4, #88] ; 0x58 + 800765c: 6de3 ldr r3, [r4, #92] ; 0x5c + 800765e: f043 0301 orr.w r3, r3, #1 + 8007662: 65e3 str r3, [r4, #92] ; 0x5c + 8007664: 2501 movs r5, #1 + 8007666: e7be b.n 80075e6 <HAL_ADC_Init+0x162> + 8007668: 6da3 ldr r3, [r4, #88] ; 0x58 + 800766a: f043 0310 orr.w r3, r3, #16 + 800766e: 65a3 str r3, [r4, #88] ; 0x58 + 8007670: e7f8 b.n 8007664 <HAL_ADC_Init+0x1e0> + 8007672: bf00 nop + 8007674: 1ffffc02 .word 0x1ffffc02 + 8007678: 40012000 .word 0x40012000 + 800767c: 00030d40 .word 0x00030d40 + 8007680: 20000828 .word 0x20000828 + +08007684 <HAL_ADC_PollForConversion>: + 8007684: b5f8 push {r3, r4, r5, r6, r7, lr} + 8007686: 6945 ldr r5, [r0, #20] + 8007688: 2d08 cmp r5, #8 + 800768a: 4604 mov r4, r0 + 800768c: 460e mov r6, r1 + 800768e: d00a beq.n 80076a6 <HAL_ADC_PollForConversion+0x22> + 8007690: 6803 ldr r3, [r0, #0] + 8007692: 68db ldr r3, [r3, #12] + 8007694: 07d8 lsls r0, r3, #31 + 8007696: d505 bpl.n 80076a4 <HAL_ADC_PollForConversion+0x20> + 8007698: 6da3 ldr r3, [r4, #88] ; 0x58 + 800769a: f043 0320 orr.w r3, r3, #32 + 800769e: 65a3 str r3, [r4, #88] ; 0x58 + 80076a0: 2001 movs r0, #1 + 80076a2: bdf8 pop {r3, r4, r5, r6, r7, pc} + 80076a4: 2504 movs r5, #4 + 80076a6: f7fb fa51 bl 8002b4c <HAL_GetTick> + 80076aa: 4607 mov r7, r0 + 80076ac: 6823 ldr r3, [r4, #0] + 80076ae: 681a ldr r2, [r3, #0] + 80076b0: 422a tst r2, r5 + 80076b2: d021 beq.n 80076f8 <HAL_ADC_PollForConversion+0x74> + 80076b4: 6da2 ldr r2, [r4, #88] ; 0x58 + 80076b6: f442 7200 orr.w r2, r2, #512 ; 0x200 + 80076ba: 65a2 str r2, [r4, #88] ; 0x58 + 80076bc: 68da ldr r2, [r3, #12] + 80076be: f412 6f40 tst.w r2, #3072 ; 0xc00 + 80076c2: d114 bne.n 80076ee <HAL_ADC_PollForConversion+0x6a> + 80076c4: 7ea2 ldrb r2, [r4, #26] + 80076c6: b992 cbnz r2, 80076ee <HAL_ADC_PollForConversion+0x6a> + 80076c8: 681a ldr r2, [r3, #0] + 80076ca: 0712 lsls r2, r2, #28 + 80076cc: d50f bpl.n 80076ee <HAL_ADC_PollForConversion+0x6a> + 80076ce: 4618 mov r0, r3 + 80076d0: f7ff fed4 bl 800747c <LL_ADC_REG_IsConversionOngoing> + 80076d4: bb28 cbnz r0, 8007722 <HAL_ADC_PollForConversion+0x9e> + 80076d6: 685a ldr r2, [r3, #4] + 80076d8: f022 020c bic.w r2, r2, #12 + 80076dc: 605a str r2, [r3, #4] + 80076de: 6da2 ldr r2, [r4, #88] ; 0x58 + 80076e0: f422 7280 bic.w r2, r2, #256 ; 0x100 + 80076e4: f022 0201 bic.w r2, r2, #1 + 80076e8: f042 0201 orr.w r2, r2, #1 + 80076ec: 65a2 str r2, [r4, #88] ; 0x58 + 80076ee: 7e20 ldrb r0, [r4, #24] + 80076f0: bb00 cbnz r0, 8007734 <HAL_ADC_PollForConversion+0xb0> + 80076f2: 220c movs r2, #12 + 80076f4: 601a str r2, [r3, #0] + 80076f6: e7d4 b.n 80076a2 <HAL_ADC_PollForConversion+0x1e> + 80076f8: 1c71 adds r1, r6, #1 + 80076fa: d0d8 beq.n 80076ae <HAL_ADC_PollForConversion+0x2a> + 80076fc: f7fb fa26 bl 8002b4c <HAL_GetTick> + 8007700: 1bc0 subs r0, r0, r7 + 8007702: 42b0 cmp r0, r6 + 8007704: d801 bhi.n 800770a <HAL_ADC_PollForConversion+0x86> + 8007706: 2e00 cmp r6, #0 + 8007708: d1d0 bne.n 80076ac <HAL_ADC_PollForConversion+0x28> + 800770a: 6823 ldr r3, [r4, #0] + 800770c: 681b ldr r3, [r3, #0] + 800770e: 402b ands r3, r5 + 8007710: d1cc bne.n 80076ac <HAL_ADC_PollForConversion+0x28> + 8007712: 6da2 ldr r2, [r4, #88] ; 0x58 + 8007714: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007718: f042 0204 orr.w r2, r2, #4 + 800771c: 65a2 str r2, [r4, #88] ; 0x58 + 800771e: 2003 movs r0, #3 + 8007720: e7bf b.n 80076a2 <HAL_ADC_PollForConversion+0x1e> + 8007722: 6da2 ldr r2, [r4, #88] ; 0x58 + 8007724: f042 0220 orr.w r2, r2, #32 + 8007728: 65a2 str r2, [r4, #88] ; 0x58 + 800772a: 6de2 ldr r2, [r4, #92] ; 0x5c + 800772c: f042 0201 orr.w r2, r2, #1 + 8007730: 65e2 str r2, [r4, #92] ; 0x5c + 8007732: e7dc b.n 80076ee <HAL_ADC_PollForConversion+0x6a> + 8007734: 2000 movs r0, #0 + 8007736: e7b4 b.n 80076a2 <HAL_ADC_PollForConversion+0x1e> + +08007738 <HAL_ADC_GetValue>: + 8007738: 6803 ldr r3, [r0, #0] + 800773a: 6c18 ldr r0, [r3, #64] ; 0x40 + 800773c: 4770 bx lr + ... + +08007740 <HAL_ADC_ConfigChannel>: + 8007740: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8007742: 2300 movs r3, #0 + 8007744: 9301 str r3, [sp, #4] + 8007746: f890 3054 ldrb.w r3, [r0, #84] ; 0x54 + 800774a: 2b01 cmp r3, #1 + 800774c: 4604 mov r4, r0 + 800774e: f000 80c5 beq.w 80078dc <HAL_ADC_ConfigChannel+0x19c> + 8007752: 6805 ldr r5, [r0, #0] + 8007754: 6906 ldr r6, [r0, #16] + 8007756: 2301 movs r3, #1 + 8007758: f880 3054 strb.w r3, [r0, #84] ; 0x54 + 800775c: 4628 mov r0, r5 + 800775e: f7ff fe8d bl 800747c <LL_ADC_REG_IsConversionOngoing> + 8007762: 2800 cmp r0, #0 + 8007764: f040 80b4 bne.w 80078d0 <HAL_ADC_ConfigChannel+0x190> + 8007768: e9d1 2000 ldrd r2, r0, [r1] + 800776c: 2802 cmp r0, #2 + 800776e: f026 0304 bic.w r3, r6, #4 + 8007772: f000 8082 beq.w 800787a <HAL_ADC_ConfigChannel+0x13a> + 8007776: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 800777a: f3c2 0e11 ubfx lr, r2, #0, #18 + 800777e: d113 bne.n 80077a8 <HAL_ADC_ConfigChannel+0x68> + 8007780: 6aab ldr r3, [r5, #40] ; 0x28 + 8007782: ea43 030e orr.w r3, r3, lr + 8007786: 62ab str r3, [r5, #40] ; 0x28 + 8007788: 688b ldr r3, [r1, #8] + 800778a: 6968 ldr r0, [r5, #20] + 800778c: ea03 2302 and.w r3, r3, r2, lsl #8 + 8007790: f023 437c bic.w r3, r3, #4227858432 ; 0xfc000000 + 8007794: f023 03ff bic.w r3, r3, #255 ; 0xff + 8007798: ea20 2102 bic.w r1, r0, r2, lsl #8 + 800779c: 430b orrs r3, r1 + 800779e: 2a00 cmp r2, #0 + 80077a0: 616b str r3, [r5, #20] + 80077a2: db26 blt.n 80077f2 <HAL_ADC_ConfigChannel+0xb2> + 80077a4: 2000 movs r0, #0 + 80077a6: e055 b.n 8007854 <HAL_ADC_ConfigChannel+0x114> + 80077a8: 6e23 ldr r3, [r4, #96] ; 0x60 + 80077aa: f000 071f and.w r7, r0, #31 + 80077ae: f04f 0c0f mov.w ip, #15 + 80077b2: fa0c fc07 lsl.w ip, ip, r7 + 80077b6: ea6f 060c mvn.w r6, ip + 80077ba: ea23 0c0c bic.w ip, r3, ip + 80077be: f1be 0f00 cmp.w lr, #0 + 80077c2: d111 bne.n 80077e8 <HAL_ADC_ConfigChannel+0xa8> + 80077c4: f3c2 6384 ubfx r3, r2, #26, #5 + 80077c8: 40bb lsls r3, r7 + 80077ca: ea43 030c orr.w r3, r3, ip + 80077ce: 6623 str r3, [r4, #96] ; 0x60 + 80077d0: 0880 lsrs r0, r0, #2 + 80077d2: 69e3 ldr r3, [r4, #28] + 80077d4: 3001 adds r0, #1 + 80077d6: 4298 cmp r0, r3 + 80077d8: d8d6 bhi.n 8007788 <HAL_ADC_ConfigChannel+0x48> + 80077da: 6aa8 ldr r0, [r5, #40] ; 0x28 + 80077dc: f3c2 6383 ubfx r3, r2, #26, #4 + 80077e0: 40bb lsls r3, r7 + 80077e2: 4006 ands r6, r0 + 80077e4: 4333 orrs r3, r6 + 80077e6: e7ce b.n 8007786 <HAL_ADC_ConfigChannel+0x46> + 80077e8: fa92 f3a2 rbit r3, r2 + 80077ec: fab3 f383 clz r3, r3 + 80077f0: e7ea b.n 80077c8 <HAL_ADC_ConfigChannel+0x88> + 80077f2: 493b ldr r1, [pc, #236] ; (80078e0 <HAL_ADC_ConfigChannel+0x1a0>) + 80077f4: 483b ldr r0, [pc, #236] ; (80078e4 <HAL_ADC_ConfigChannel+0x1a4>) + 80077f6: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 80077fa: 4282 cmp r2, r0 + 80077fc: f003 75e0 and.w r5, r3, #29360128 ; 0x1c00000 + 8007800: d119 bne.n 8007836 <HAL_ADC_ConfigChannel+0xf6> + 8007802: 021b lsls r3, r3, #8 + 8007804: d4ce bmi.n 80077a4 <HAL_ADC_ConfigChannel+0x64> + 8007806: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 800780a: f023 73e0 bic.w r3, r3, #29360128 ; 0x1c00000 + 800780e: 432b orrs r3, r5 + 8007810: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 + 8007814: f8c1 3708 str.w r3, [r1, #1800] ; 0x708 + 8007818: 4b33 ldr r3, [pc, #204] ; (80078e8 <HAL_ADC_ConfigChannel+0x1a8>) + 800781a: 681a ldr r2, [r3, #0] + 800781c: 4b33 ldr r3, [pc, #204] ; (80078ec <HAL_ADC_ConfigChannel+0x1ac>) + 800781e: fbb2 f2f3 udiv r2, r2, r3 + 8007822: 230c movs r3, #12 + 8007824: fb02 3303 mla r3, r2, r3, r3 + 8007828: 9301 str r3, [sp, #4] + 800782a: 9b01 ldr r3, [sp, #4] + 800782c: 2b00 cmp r3, #0 + 800782e: d0b9 beq.n 80077a4 <HAL_ADC_ConfigChannel+0x64> + 8007830: 9b01 ldr r3, [sp, #4] + 8007832: 3b01 subs r3, #1 + 8007834: e7f8 b.n 8007828 <HAL_ADC_ConfigChannel+0xe8> + 8007836: 482e ldr r0, [pc, #184] ; (80078f0 <HAL_ADC_ConfigChannel+0x1b0>) + 8007838: 4282 cmp r2, r0 + 800783a: d110 bne.n 800785e <HAL_ADC_ConfigChannel+0x11e> + 800783c: f013 7080 ands.w r0, r3, #16777216 ; 0x1000000 + 8007840: d1b0 bne.n 80077a4 <HAL_ADC_ConfigChannel+0x64> + 8007842: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 8007846: f023 73e0 bic.w r3, r3, #29360128 ; 0x1c00000 + 800784a: 432b orrs r3, r5 + 800784c: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 8007850: f8c1 3708 str.w r3, [r1, #1800] ; 0x708 + 8007854: 2300 movs r3, #0 + 8007856: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 800785a: b003 add sp, #12 + 800785c: bdf0 pop {r4, r5, r6, r7, pc} + 800785e: 4825 ldr r0, [pc, #148] ; (80078f4 <HAL_ADC_ConfigChannel+0x1b4>) + 8007860: 4282 cmp r2, r0 + 8007862: d19f bne.n 80077a4 <HAL_ADC_ConfigChannel+0x64> + 8007864: f413 0080 ands.w r0, r3, #4194304 ; 0x400000 + 8007868: d19c bne.n 80077a4 <HAL_ADC_ConfigChannel+0x64> + 800786a: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 800786e: f023 73e0 bic.w r3, r3, #29360128 ; 0x1c00000 + 8007872: 432b orrs r3, r5 + 8007874: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 + 8007878: e7ea b.n 8007850 <HAL_ADC_ConfigChannel+0x110> + 800787a: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 800787e: bf01 itttt eq + 8007880: 6aab ldreq r3, [r5, #40] ; 0x28 + 8007882: f3c2 0111 ubfxeq r1, r2, #0, #18 + 8007886: 438b biceq r3, r1 + 8007888: 62ab streq r3, [r5, #40] ; 0x28 + 800788a: 2a00 cmp r2, #0 + 800788c: da8a bge.n 80077a4 <HAL_ADC_ConfigChannel+0x64> + 800788e: 4815 ldr r0, [pc, #84] ; (80078e4 <HAL_ADC_ConfigChannel+0x1a4>) + 8007890: 4913 ldr r1, [pc, #76] ; (80078e0 <HAL_ADC_ConfigChannel+0x1a0>) + 8007892: 4282 cmp r2, r0 + 8007894: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 8007898: d109 bne.n 80078ae <HAL_ADC_ConfigChannel+0x16e> + 800789a: f8d1 2708 ldr.w r2, [r1, #1800] ; 0x708 + 800789e: f003 73a0 and.w r3, r3, #20971520 ; 0x1400000 + 80078a2: f022 72e0 bic.w r2, r2, #29360128 ; 0x1c00000 + 80078a6: 4313 orrs r3, r2 + 80078a8: f8c1 3708 str.w r3, [r1, #1800] ; 0x708 + 80078ac: e77a b.n 80077a4 <HAL_ADC_ConfigChannel+0x64> + 80078ae: 4810 ldr r0, [pc, #64] ; (80078f0 <HAL_ADC_ConfigChannel+0x1b0>) + 80078b0: 4282 cmp r2, r0 + 80078b2: d104 bne.n 80078be <HAL_ADC_ConfigChannel+0x17e> + 80078b4: f8d1 2708 ldr.w r2, [r1, #1800] ; 0x708 + 80078b8: f403 0340 and.w r3, r3, #12582912 ; 0xc00000 + 80078bc: e7f1 b.n 80078a2 <HAL_ADC_ConfigChannel+0x162> + 80078be: 480d ldr r0, [pc, #52] ; (80078f4 <HAL_ADC_ConfigChannel+0x1b4>) + 80078c0: 4282 cmp r2, r0 + 80078c2: f47f af6f bne.w 80077a4 <HAL_ADC_ConfigChannel+0x64> + 80078c6: f8d1 2708 ldr.w r2, [r1, #1800] ; 0x708 + 80078ca: f003 73c0 and.w r3, r3, #25165824 ; 0x1800000 + 80078ce: e7e8 b.n 80078a2 <HAL_ADC_ConfigChannel+0x162> + 80078d0: 6da2 ldr r2, [r4, #88] ; 0x58 + 80078d2: f042 0220 orr.w r2, r2, #32 + 80078d6: 65a2 str r2, [r4, #88] ; 0x58 + 80078d8: 4618 mov r0, r3 + 80078da: e7bb b.n 8007854 <HAL_ADC_ConfigChannel+0x114> + 80078dc: 2002 movs r0, #2 + 80078de: e7bc b.n 800785a <HAL_ADC_ConfigChannel+0x11a> + 80078e0: 40012000 .word 0x40012000 + 80078e4: b0001000 .word 0xb0001000 + 80078e8: 20000828 .word 0x20000828 + 80078ec: 00030d40 .word 0x00030d40 + 80078f0: b8004000 .word 0xb8004000 + 80078f4: b4002000 .word 0xb4002000 + +080078f8 <ADC_ConversionStop>: + 80078f8: 6802 ldr r2, [r0, #0] + 80078fa: b538 push {r3, r4, r5, lr} + 80078fc: 4604 mov r4, r0 + 80078fe: 4610 mov r0, r2 + 8007900: f7ff fdbc bl 800747c <LL_ADC_REG_IsConversionOngoing> + 8007904: b908 cbnz r0, 800790a <ADC_ConversionStop+0x12> + 8007906: 2000 movs r0, #0 + 8007908: bd38 pop {r3, r4, r5, pc} + 800790a: 6893 ldr r3, [r2, #8] + 800790c: 0799 lsls r1, r3, #30 + 800790e: d407 bmi.n 8007920 <ADC_ConversionStop+0x28> + 8007910: 6893 ldr r3, [r2, #8] + 8007912: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8007916: f023 0317 bic.w r3, r3, #23 + 800791a: f043 0310 orr.w r3, r3, #16 + 800791e: 6093 str r3, [r2, #8] + 8007920: f7fb f914 bl 8002b4c <HAL_GetTick> + 8007924: 4605 mov r5, r0 + 8007926: 6823 ldr r3, [r4, #0] + 8007928: 689b ldr r3, [r3, #8] + 800792a: 075b lsls r3, r3, #29 + 800792c: d5eb bpl.n 8007906 <ADC_ConversionStop+0xe> + 800792e: f7fb f90d bl 8002b4c <HAL_GetTick> + 8007932: 1b40 subs r0, r0, r5 + 8007934: 2802 cmp r0, #2 + 8007936: d9f6 bls.n 8007926 <ADC_ConversionStop+0x2e> + 8007938: 6823 ldr r3, [r4, #0] + 800793a: 689b ldr r3, [r3, #8] + 800793c: 075a lsls r2, r3, #29 + 800793e: d5f2 bpl.n 8007926 <ADC_ConversionStop+0x2e> + 8007940: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007942: f043 0310 orr.w r3, r3, #16 + 8007946: 65a3 str r3, [r4, #88] ; 0x58 + 8007948: 6de3 ldr r3, [r4, #92] ; 0x5c + 800794a: f043 0301 orr.w r3, r3, #1 + 800794e: 65e3 str r3, [r4, #92] ; 0x5c + 8007950: 2001 movs r0, #1 + 8007952: e7d9 b.n 8007908 <ADC_ConversionStop+0x10> + +08007954 <ADC_Enable>: + 8007954: b573 push {r0, r1, r4, r5, r6, lr} + 8007956: 2300 movs r3, #0 + 8007958: 6802 ldr r2, [r0, #0] + 800795a: 9301 str r3, [sp, #4] + 800795c: 6893 ldr r3, [r2, #8] + 800795e: 07dd lsls r5, r3, #31 + 8007960: 4604 mov r4, r0 + 8007962: d502 bpl.n 800796a <ADC_Enable+0x16> + 8007964: 2000 movs r0, #0 + 8007966: b002 add sp, #8 + 8007968: bd70 pop {r4, r5, r6, pc} + 800796a: 6891 ldr r1, [r2, #8] + 800796c: 4b21 ldr r3, [pc, #132] ; (80079f4 <ADC_Enable+0xa0>) + 800796e: 4219 tst r1, r3 + 8007970: d009 beq.n 8007986 <ADC_Enable+0x32> + 8007972: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007974: f043 0310 orr.w r3, r3, #16 + 8007978: 65a3 str r3, [r4, #88] ; 0x58 + 800797a: 6de3 ldr r3, [r4, #92] ; 0x5c + 800797c: f043 0301 orr.w r3, r3, #1 + 8007980: 65e3 str r3, [r4, #92] ; 0x5c + 8007982: 2001 movs r0, #1 + 8007984: e7ef b.n 8007966 <ADC_Enable+0x12> + 8007986: 6893 ldr r3, [r2, #8] + 8007988: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 800798c: f023 0317 bic.w r3, r3, #23 + 8007990: f043 0301 orr.w r3, r3, #1 + 8007994: 6093 str r3, [r2, #8] + 8007996: 4b18 ldr r3, [pc, #96] ; (80079f8 <ADC_Enable+0xa4>) + 8007998: f8d3 3708 ldr.w r3, [r3, #1800] ; 0x708 + 800799c: 0218 lsls r0, r3, #8 + 800799e: d41c bmi.n 80079da <ADC_Enable+0x86> + 80079a0: 7e63 ldrb r3, [r4, #25] + 80079a2: 2b01 cmp r3, #1 + 80079a4: d0de beq.n 8007964 <ADC_Enable+0x10> + 80079a6: f7fb f8d1 bl 8002b4c <HAL_GetTick> + 80079aa: 4e14 ldr r6, [pc, #80] ; (80079fc <ADC_Enable+0xa8>) + 80079ac: 4605 mov r5, r0 + 80079ae: 6822 ldr r2, [r4, #0] + 80079b0: 6813 ldr r3, [r2, #0] + 80079b2: 07db lsls r3, r3, #31 + 80079b4: d4d6 bmi.n 8007964 <ADC_Enable+0x10> + 80079b6: 6893 ldr r3, [r2, #8] + 80079b8: 07d9 lsls r1, r3, #31 + 80079ba: bf5f itttt pl + 80079bc: 6893 ldrpl r3, [r2, #8] + 80079be: 4033 andpl r3, r6 + 80079c0: f043 0301 orrpl.w r3, r3, #1 + 80079c4: 6093 strpl r3, [r2, #8] + 80079c6: f7fb f8c1 bl 8002b4c <HAL_GetTick> + 80079ca: 1b40 subs r0, r0, r5 + 80079cc: 2802 cmp r0, #2 + 80079ce: d9ee bls.n 80079ae <ADC_Enable+0x5a> + 80079d0: 6823 ldr r3, [r4, #0] + 80079d2: 681b ldr r3, [r3, #0] + 80079d4: 07da lsls r2, r3, #31 + 80079d6: d4ea bmi.n 80079ae <ADC_Enable+0x5a> + 80079d8: e7cb b.n 8007972 <ADC_Enable+0x1e> + 80079da: 4b09 ldr r3, [pc, #36] ; (8007a00 <ADC_Enable+0xac>) + 80079dc: 4a09 ldr r2, [pc, #36] ; (8007a04 <ADC_Enable+0xb0>) + 80079de: 681b ldr r3, [r3, #0] + 80079e0: fbb3 f3f2 udiv r3, r3, r2 + 80079e4: 3301 adds r3, #1 + 80079e6: 9301 str r3, [sp, #4] + 80079e8: 9b01 ldr r3, [sp, #4] + 80079ea: 2b00 cmp r3, #0 + 80079ec: d0d8 beq.n 80079a0 <ADC_Enable+0x4c> + 80079ee: 9b01 ldr r3, [sp, #4] + 80079f0: 3b01 subs r3, #1 + 80079f2: e7f8 b.n 80079e6 <ADC_Enable+0x92> + 80079f4: 80000017 .word 0x80000017 + 80079f8: 40012000 .word 0x40012000 + 80079fc: 7fffffe8 .word 0x7fffffe8 + 8007a00: 20000828 .word 0x20000828 + 8007a04: 00030d40 .word 0x00030d40 + +08007a08 <HAL_ADC_Start>: + 8007a08: b538 push {r3, r4, r5, lr} + 8007a0a: 4604 mov r4, r0 + 8007a0c: 6800 ldr r0, [r0, #0] + 8007a0e: f7ff fd35 bl 800747c <LL_ADC_REG_IsConversionOngoing> + 8007a12: 4605 mov r5, r0 + 8007a14: bb20 cbnz r0, 8007a60 <HAL_ADC_Start+0x58> + 8007a16: f894 3054 ldrb.w r3, [r4, #84] ; 0x54 + 8007a1a: 2b01 cmp r3, #1 + 8007a1c: d020 beq.n 8007a60 <HAL_ADC_Start+0x58> + 8007a1e: 2301 movs r3, #1 + 8007a20: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007a24: 4620 mov r0, r4 + 8007a26: f7ff ff95 bl 8007954 <ADC_Enable> + 8007a2a: b9b0 cbnz r0, 8007a5a <HAL_ADC_Start+0x52> + 8007a2c: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007a2e: 6822 ldr r2, [r4, #0] + 8007a30: f423 6370 bic.w r3, r3, #3840 ; 0xf00 + 8007a34: f023 0301 bic.w r3, r3, #1 + 8007a38: f443 7380 orr.w r3, r3, #256 ; 0x100 + 8007a3c: 65a3 str r3, [r4, #88] ; 0x58 + 8007a3e: 231c movs r3, #28 + 8007a40: 65e0 str r0, [r4, #92] ; 0x5c + 8007a42: 6013 str r3, [r2, #0] + 8007a44: f884 0054 strb.w r0, [r4, #84] ; 0x54 + 8007a48: 6893 ldr r3, [r2, #8] + 8007a4a: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8007a4e: f023 0317 bic.w r3, r3, #23 + 8007a52: f043 0304 orr.w r3, r3, #4 + 8007a56: 6093 str r3, [r2, #8] + 8007a58: bd38 pop {r3, r4, r5, pc} + 8007a5a: f884 5054 strb.w r5, [r4, #84] ; 0x54 + 8007a5e: e7fb b.n 8007a58 <HAL_ADC_Start+0x50> + 8007a60: 2002 movs r0, #2 + 8007a62: e7f9 b.n 8007a58 <HAL_ADC_Start+0x50> + +08007a64 <ADC_Disable>: + 8007a64: 6802 ldr r2, [r0, #0] + 8007a66: b538 push {r3, r4, r5, lr} + 8007a68: 6893 ldr r3, [r2, #8] + 8007a6a: 6891 ldr r1, [r2, #8] + 8007a6c: 4604 mov r4, r0 + 8007a6e: 07c8 lsls r0, r1, #31 + 8007a70: d401 bmi.n 8007a76 <ADC_Disable+0x12> + 8007a72: 2000 movs r0, #0 + 8007a74: bd38 pop {r3, r4, r5, pc} + 8007a76: 0799 lsls r1, r3, #30 + 8007a78: d4fb bmi.n 8007a72 <ADC_Disable+0xe> + 8007a7a: 6893 ldr r3, [r2, #8] + 8007a7c: f003 0305 and.w r3, r3, #5 + 8007a80: 2b01 cmp r3, #1 + 8007a82: d119 bne.n 8007ab8 <ADC_Disable+0x54> + 8007a84: 6893 ldr r3, [r2, #8] + 8007a86: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8007a8a: f023 0317 bic.w r3, r3, #23 + 8007a8e: f043 0302 orr.w r3, r3, #2 + 8007a92: 6093 str r3, [r2, #8] + 8007a94: 2303 movs r3, #3 + 8007a96: 6013 str r3, [r2, #0] + 8007a98: f7fb f858 bl 8002b4c <HAL_GetTick> + 8007a9c: 4605 mov r5, r0 + 8007a9e: 6823 ldr r3, [r4, #0] + 8007aa0: 689b ldr r3, [r3, #8] + 8007aa2: 07db lsls r3, r3, #31 + 8007aa4: d5e5 bpl.n 8007a72 <ADC_Disable+0xe> + 8007aa6: f7fb f851 bl 8002b4c <HAL_GetTick> + 8007aaa: 1b40 subs r0, r0, r5 + 8007aac: 2802 cmp r0, #2 + 8007aae: d9f6 bls.n 8007a9e <ADC_Disable+0x3a> + 8007ab0: 6823 ldr r3, [r4, #0] + 8007ab2: 689b ldr r3, [r3, #8] + 8007ab4: 07da lsls r2, r3, #31 + 8007ab6: d5f2 bpl.n 8007a9e <ADC_Disable+0x3a> + 8007ab8: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007aba: f043 0310 orr.w r3, r3, #16 + 8007abe: 65a3 str r3, [r4, #88] ; 0x58 + 8007ac0: 6de3 ldr r3, [r4, #92] ; 0x5c + 8007ac2: f043 0301 orr.w r3, r3, #1 + 8007ac6: 65e3 str r3, [r4, #92] ; 0x5c + 8007ac8: 2001 movs r0, #1 + 8007aca: e7d3 b.n 8007a74 <ADC_Disable+0x10> + +08007acc <HAL_ADC_DeInit>: + 8007acc: b570 push {r4, r5, r6, lr} + 8007ace: 4604 mov r4, r0 + 8007ad0: 2800 cmp r0, #0 + 8007ad2: d04b beq.n 8007b6c <HAL_ADC_DeInit+0xa0> + 8007ad4: 6d83 ldr r3, [r0, #88] ; 0x58 + 8007ad6: f043 0302 orr.w r3, r3, #2 + 8007ada: 6583 str r3, [r0, #88] ; 0x58 + 8007adc: f7ff ff0c bl 80078f8 <ADC_ConversionStop> + 8007ae0: 4605 mov r5, r0 + 8007ae2: b968 cbnz r0, 8007b00 <HAL_ADC_DeInit+0x34> + 8007ae4: 4620 mov r0, r4 + 8007ae6: f7ff ffbd bl 8007a64 <ADC_Disable> + 8007aea: 4605 mov r5, r0 + 8007aec: b908 cbnz r0, 8007af2 <HAL_ADC_DeInit+0x26> + 8007aee: 2301 movs r3, #1 + 8007af0: 65a3 str r3, [r4, #88] ; 0x58 + 8007af2: 6822 ldr r2, [r4, #0] + 8007af4: 6893 ldr r3, [r2, #8] + 8007af6: f023 4310 bic.w r3, r3, #2415919104 ; 0x90000000 + 8007afa: f023 0317 bic.w r3, r3, #23 + 8007afe: 6093 str r3, [r2, #8] + 8007b00: 6823 ldr r3, [r4, #0] + 8007b02: 685a ldr r2, [r3, #4] + 8007b04: f422 7267 bic.w r2, r2, #924 ; 0x39c + 8007b08: f022 0203 bic.w r2, r2, #3 + 8007b0c: 605a str r2, [r3, #4] + 8007b0e: f240 329f movw r2, #927 ; 0x39f + 8007b12: 601a str r2, [r3, #0] + 8007b14: 68d9 ldr r1, [r3, #12] + 8007b16: 4a16 ldr r2, [pc, #88] ; (8007b70 <HAL_ADC_DeInit+0xa4>) + 8007b18: 400a ands r2, r1 + 8007b1a: 60da str r2, [r3, #12] + 8007b1c: 691a ldr r2, [r3, #16] + 8007b1e: f022 4240 bic.w r2, r2, #3221225472 ; 0xc0000000 + 8007b22: 611a str r2, [r3, #16] + 8007b24: 695a ldr r2, [r3, #20] + 8007b26: f022 0207 bic.w r2, r2, #7 + 8007b2a: 615a str r2, [r3, #20] + 8007b2c: 6a1a ldr r2, [r3, #32] + 8007b2e: f002 22f0 and.w r2, r2, #4026593280 ; 0xf000f000 + 8007b32: 621a str r2, [r3, #32] + 8007b34: 6a5a ldr r2, [r3, #36] ; 0x24 + 8007b36: f002 22f0 and.w r2, r2, #4026593280 ; 0xf000f000 + 8007b3a: 625a str r2, [r3, #36] ; 0x24 + 8007b3c: 6ada ldr r2, [r3, #44] ; 0x2c + 8007b3e: f002 22f0 and.w r2, r2, #4026593280 ; 0xf000f000 + 8007b42: 62da str r2, [r3, #44] ; 0x2c + 8007b44: 6a9a ldr r2, [r3, #40] ; 0x28 + 8007b46: 4a0b ldr r2, [pc, #44] ; (8007b74 <HAL_ADC_DeInit+0xa8>) + 8007b48: 2600 movs r6, #0 + 8007b4a: 629e str r6, [r3, #40] ; 0x28 + 8007b4c: f8d2 3708 ldr.w r3, [r2, #1800] ; 0x708 + 8007b50: f023 73fe bic.w r3, r3, #33292288 ; 0x1fc0000 + 8007b54: f8c2 3708 str.w r3, [r2, #1800] ; 0x708 + 8007b58: 4620 mov r0, r4 + 8007b5a: f7fa f997 bl 8001e8c <HAL_ADC_MspDeInit> + 8007b5e: 65e6 str r6, [r4, #92] ; 0x5c + 8007b60: 6626 str r6, [r4, #96] ; 0x60 + 8007b62: 65a6 str r6, [r4, #88] ; 0x58 + 8007b64: f884 6054 strb.w r6, [r4, #84] ; 0x54 + 8007b68: 4628 mov r0, r5 + 8007b6a: bd70 pop {r4, r5, r6, pc} + 8007b6c: 2501 movs r5, #1 + 8007b6e: e7fb b.n 8007b68 <HAL_ADC_DeInit+0x9c> + 8007b70: 833e0200 .word 0x833e0200 + 8007b74: 40012000 .word 0x40012000 + +08007b78 <HAL_ADC_Stop>: + 8007b78: b510 push {r4, lr} + 8007b7a: f890 3054 ldrb.w r3, [r0, #84] ; 0x54 + 8007b7e: 2b01 cmp r3, #1 + 8007b80: 4604 mov r4, r0 + 8007b82: d015 beq.n 8007bb0 <HAL_ADC_Stop+0x38> + 8007b84: 2301 movs r3, #1 + 8007b86: f880 3054 strb.w r3, [r0, #84] ; 0x54 + 8007b8a: f7ff feb5 bl 80078f8 <ADC_ConversionStop> + 8007b8e: b958 cbnz r0, 8007ba8 <HAL_ADC_Stop+0x30> + 8007b90: 4620 mov r0, r4 + 8007b92: f7ff ff67 bl 8007a64 <ADC_Disable> + 8007b96: b938 cbnz r0, 8007ba8 <HAL_ADC_Stop+0x30> + 8007b98: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007b9a: f423 7380 bic.w r3, r3, #256 ; 0x100 + 8007b9e: f023 0301 bic.w r3, r3, #1 + 8007ba2: f043 0301 orr.w r3, r3, #1 + 8007ba6: 65a3 str r3, [r4, #88] ; 0x58 + 8007ba8: 2300 movs r3, #0 + 8007baa: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007bae: bd10 pop {r4, pc} + 8007bb0: 2002 movs r0, #2 + 8007bb2: e7fc b.n 8007bae <HAL_ADC_Stop+0x36> + +08007bb4 <HAL_ADCEx_Calibration_Start>: + 8007bb4: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8007bb6: 2300 movs r3, #0 + 8007bb8: 9301 str r3, [sp, #4] + 8007bba: f890 3054 ldrb.w r3, [r0, #84] ; 0x54 + 8007bbe: 2b01 cmp r3, #1 + 8007bc0: 4604 mov r4, r0 + 8007bc2: d07f beq.n 8007cc4 <HAL_ADCEx_Calibration_Start+0x110> + 8007bc4: 2301 movs r3, #1 + 8007bc6: f880 3054 strb.w r3, [r0, #84] ; 0x54 + 8007bca: f7ff ff4b bl 8007a64 <ADC_Disable> + 8007bce: 6823 ldr r3, [r4, #0] + 8007bd0: 689a ldr r2, [r3, #8] + 8007bd2: f012 0201 ands.w r2, r2, #1 + 8007bd6: 4605 mov r5, r0 + 8007bd8: d007 beq.n 8007bea <HAL_ADCEx_Calibration_Start+0x36> + 8007bda: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007bdc: f043 0310 orr.w r3, r3, #16 + 8007be0: 65a3 str r3, [r4, #88] ; 0x58 + 8007be2: 2300 movs r3, #0 + 8007be4: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007be8: e02d b.n 8007c46 <HAL_ADCEx_Calibration_Start+0x92> + 8007bea: 6da1 ldr r1, [r4, #88] ; 0x58 + 8007bec: 4f36 ldr r7, [pc, #216] ; (8007cc8 <HAL_ADCEx_Calibration_Start+0x114>) + 8007bee: f421 7181 bic.w r1, r1, #258 ; 0x102 + 8007bf2: f041 0102 orr.w r1, r1, #2 + 8007bf6: 65a1 str r1, [r4, #88] ; 0x58 + 8007bf8: 68de ldr r6, [r3, #12] + 8007bfa: 68d9 ldr r1, [r3, #12] + 8007bfc: f426 46ff bic.w r6, r6, #32640 ; 0x7f80 + 8007c00: f026 067c bic.w r6, r6, #124 ; 0x7c + 8007c04: f421 4100 bic.w r1, r1, #32768 ; 0x8000 + 8007c08: 0436 lsls r6, r6, #16 + 8007c0a: f021 0103 bic.w r1, r1, #3 + 8007c0e: 0c36 lsrs r6, r6, #16 + 8007c10: 60d9 str r1, [r3, #12] + 8007c12: 2008 movs r0, #8 + 8007c14: 6899 ldr r1, [r3, #8] + 8007c16: 4039 ands r1, r7 + 8007c18: f041 4100 orr.w r1, r1, #2147483648 ; 0x80000000 + 8007c1c: 6099 str r1, [r3, #8] + 8007c1e: 6899 ldr r1, [r3, #8] + 8007c20: 2900 cmp r1, #0 + 8007c22: da13 bge.n 8007c4c <HAL_ADCEx_Calibration_Start+0x98> + 8007c24: 9901 ldr r1, [sp, #4] + 8007c26: 3101 adds r1, #1 + 8007c28: 9101 str r1, [sp, #4] + 8007c2a: 9901 ldr r1, [sp, #4] + 8007c2c: f5b1 3f2e cmp.w r1, #178176 ; 0x2b800 + 8007c30: d3f5 bcc.n 8007c1e <HAL_ADCEx_Calibration_Start+0x6a> + 8007c32: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007c34: f023 0312 bic.w r3, r3, #18 + 8007c38: f043 0310 orr.w r3, r3, #16 + 8007c3c: 65a3 str r3, [r4, #88] ; 0x58 + 8007c3e: 2300 movs r3, #0 + 8007c40: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007c44: 2501 movs r5, #1 + 8007c46: 4628 mov r0, r5 + 8007c48: b003 add sp, #12 + 8007c4a: bdf0 pop {r4, r5, r6, r7, pc} + 8007c4c: f8d3 10b4 ldr.w r1, [r3, #180] ; 0xb4 + 8007c50: 3801 subs r0, #1 + 8007c52: f001 017f and.w r1, r1, #127 ; 0x7f + 8007c56: 440a add r2, r1 + 8007c58: d1dc bne.n 8007c14 <HAL_ADCEx_Calibration_Start+0x60> + 8007c5a: 6899 ldr r1, [r3, #8] + 8007c5c: 481a ldr r0, [pc, #104] ; (8007cc8 <HAL_ADCEx_Calibration_Start+0x114>) + 8007c5e: 4001 ands r1, r0 + 8007c60: f041 0101 orr.w r1, r1, #1 + 8007c64: 6099 str r1, [r3, #8] + 8007c66: f8d3 10b4 ldr.w r1, [r3, #180] ; 0xb4 + 8007c6a: f021 017f bic.w r1, r1, #127 ; 0x7f + 8007c6e: ea41 02d2 orr.w r2, r1, r2, lsr #3 + 8007c72: f8c3 20b4 str.w r2, [r3, #180] ; 0xb4 + 8007c76: 689a ldr r2, [r3, #8] + 8007c78: 4002 ands r2, r0 + 8007c7a: f042 0202 orr.w r2, r2, #2 + 8007c7e: 609a str r2, [r3, #8] + 8007c80: f7fa ff64 bl 8002b4c <HAL_GetTick> + 8007c84: 4607 mov r7, r0 + 8007c86: 6823 ldr r3, [r4, #0] + 8007c88: 689a ldr r2, [r3, #8] + 8007c8a: 07d2 lsls r2, r2, #31 + 8007c8c: d408 bmi.n 8007ca0 <HAL_ADCEx_Calibration_Start+0xec> + 8007c8e: 68da ldr r2, [r3, #12] + 8007c90: 4332 orrs r2, r6 + 8007c92: 60da str r2, [r3, #12] + 8007c94: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007c96: f023 0303 bic.w r3, r3, #3 + 8007c9a: f043 0301 orr.w r3, r3, #1 + 8007c9e: e79f b.n 8007be0 <HAL_ADCEx_Calibration_Start+0x2c> + 8007ca0: f7fa ff54 bl 8002b4c <HAL_GetTick> + 8007ca4: 1bc0 subs r0, r0, r7 + 8007ca6: 2802 cmp r0, #2 + 8007ca8: d9ed bls.n 8007c86 <HAL_ADCEx_Calibration_Start+0xd2> + 8007caa: 6823 ldr r3, [r4, #0] + 8007cac: 689b ldr r3, [r3, #8] + 8007cae: 07d9 lsls r1, r3, #31 + 8007cb0: d5e9 bpl.n 8007c86 <HAL_ADCEx_Calibration_Start+0xd2> + 8007cb2: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007cb4: f043 0310 orr.w r3, r3, #16 + 8007cb8: 65a3 str r3, [r4, #88] ; 0x58 + 8007cba: 6de3 ldr r3, [r4, #92] ; 0x5c + 8007cbc: f043 0301 orr.w r3, r3, #1 + 8007cc0: 65e3 str r3, [r4, #92] ; 0x5c + 8007cc2: e7bf b.n 8007c44 <HAL_ADCEx_Calibration_Start+0x90> + 8007cc4: 2502 movs r5, #2 + 8007cc6: e7be b.n 8007c46 <HAL_ADCEx_Calibration_Start+0x92> + 8007cc8: 7fffffe8 .word 0x7fffffe8 + +08007ccc <HAL_NVIC_SetPriorityGrouping>: + 8007ccc: 4907 ldr r1, [pc, #28] ; (8007cec <HAL_NVIC_SetPriorityGrouping+0x20>) + 8007cce: 68ca ldr r2, [r1, #12] + 8007cd0: f422 62e0 bic.w r2, r2, #1792 ; 0x700 + 8007cd4: 0203 lsls r3, r0, #8 + 8007cd6: 0412 lsls r2, r2, #16 + 8007cd8: f403 63e0 and.w r3, r3, #1792 ; 0x700 + 8007cdc: 0c12 lsrs r2, r2, #16 + 8007cde: 4313 orrs r3, r2 + 8007ce0: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000 + 8007ce4: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8007ce8: 60cb str r3, [r1, #12] + 8007cea: 4770 bx lr + 8007cec: e000ed00 .word 0xe000ed00 + +08007cf0 <HAL_NVIC_SetPriority>: + 8007cf0: 4b16 ldr r3, [pc, #88] ; (8007d4c <HAL_NVIC_SetPriority+0x5c>) + 8007cf2: b530 push {r4, r5, lr} + 8007cf4: 68dc ldr r4, [r3, #12] + 8007cf6: f3c4 2402 ubfx r4, r4, #8, #3 + 8007cfa: f1c4 0307 rsb r3, r4, #7 + 8007cfe: 1d25 adds r5, r4, #4 + 8007d00: 2b04 cmp r3, #4 + 8007d02: bf28 it cs + 8007d04: 2304 movcs r3, #4 + 8007d06: 2d06 cmp r5, #6 + 8007d08: f04f 35ff mov.w r5, #4294967295 + 8007d0c: bf8c ite hi + 8007d0e: 3c03 subhi r4, #3 + 8007d10: 2400 movls r4, #0 + 8007d12: fa05 f303 lsl.w r3, r5, r3 + 8007d16: ea21 0303 bic.w r3, r1, r3 + 8007d1a: 40a5 lsls r5, r4 + 8007d1c: ea22 0205 bic.w r2, r2, r5 + 8007d20: 40a3 lsls r3, r4 + 8007d22: 2800 cmp r0, #0 + 8007d24: ea43 0302 orr.w r3, r3, r2 + 8007d28: bfac ite ge + 8007d2a: f100 4060 addge.w r0, r0, #3758096384 ; 0xe0000000 + 8007d2e: 4a08 ldrlt r2, [pc, #32] ; (8007d50 <HAL_NVIC_SetPriority+0x60>) + 8007d30: ea4f 1303 mov.w r3, r3, lsl #4 + 8007d34: bfb8 it lt + 8007d36: f000 000f andlt.w r0, r0, #15 + 8007d3a: b2db uxtb r3, r3 + 8007d3c: bfaa itet ge + 8007d3e: f500 4061 addge.w r0, r0, #57600 ; 0xe100 + 8007d42: 5413 strblt r3, [r2, r0] + 8007d44: f880 3300 strbge.w r3, [r0, #768] ; 0x300 + 8007d48: bd30 pop {r4, r5, pc} + 8007d4a: bf00 nop + 8007d4c: e000ed00 .word 0xe000ed00 + 8007d50: e000ed14 .word 0xe000ed14 + +08007d54 <HAL_NVIC_EnableIRQ>: + 8007d54: 2800 cmp r0, #0 + 8007d56: db07 blt.n 8007d68 <HAL_NVIC_EnableIRQ+0x14> + 8007d58: 4a04 ldr r2, [pc, #16] ; (8007d6c <HAL_NVIC_EnableIRQ+0x18>) + 8007d5a: 0941 lsrs r1, r0, #5 + 8007d5c: 2301 movs r3, #1 + 8007d5e: f000 001f and.w r0, r0, #31 + 8007d62: 4083 lsls r3, r0 + 8007d64: f842 3021 str.w r3, [r2, r1, lsl #2] + 8007d68: 4770 bx lr + 8007d6a: bf00 nop + 8007d6c: e000e100 .word 0xe000e100 + +08007d70 <HAL_NVIC_DisableIRQ>: + 8007d70: 2800 cmp r0, #0 + 8007d72: db0c blt.n 8007d8e <HAL_NVIC_DisableIRQ+0x1e> + 8007d74: 0943 lsrs r3, r0, #5 + 8007d76: 4906 ldr r1, [pc, #24] ; (8007d90 <HAL_NVIC_DisableIRQ+0x20>) + 8007d78: f000 001f and.w r0, r0, #31 + 8007d7c: 3320 adds r3, #32 + 8007d7e: 2201 movs r2, #1 + 8007d80: 4082 lsls r2, r0 + 8007d82: f841 2023 str.w r2, [r1, r3, lsl #2] + 8007d86: f3bf 8f4f dsb sy + 8007d8a: f3bf 8f6f isb sy + 8007d8e: 4770 bx lr + 8007d90: e000e100 .word 0xe000e100 + +08007d94 <DMA_SetConfig>: + 8007d94: b570 push {r4, r5, r6, lr} + 8007d96: e9d0 4513 ldrd r4, r5, [r0, #76] ; 0x4c + 8007d9a: 6065 str r5, [r4, #4] + 8007d9c: 6d44 ldr r4, [r0, #84] ; 0x54 + 8007d9e: b114 cbz r4, 8007da6 <DMA_SetConfig+0x12> + 8007da0: e9d0 4516 ldrd r4, r5, [r0, #88] ; 0x58 + 8007da4: 6065 str r5, [r4, #4] + 8007da6: e9d0 5410 ldrd r5, r4, [r0, #64] ; 0x40 + 8007daa: f004 061c and.w r6, r4, #28 + 8007dae: 2401 movs r4, #1 + 8007db0: 40b4 lsls r4, r6 + 8007db2: 606c str r4, [r5, #4] + 8007db4: 6804 ldr r4, [r0, #0] + 8007db6: 6063 str r3, [r4, #4] + 8007db8: 6883 ldr r3, [r0, #8] + 8007dba: 2b10 cmp r3, #16 + 8007dbc: bf0b itete eq + 8007dbe: 60a2 streq r2, [r4, #8] + 8007dc0: 60a1 strne r1, [r4, #8] + 8007dc2: 60e1 streq r1, [r4, #12] + 8007dc4: 60e2 strne r2, [r4, #12] + 8007dc6: bd70 pop {r4, r5, r6, pc} + +08007dc8 <DMA_CalcDMAMUXChannelBaseAndMask>: + 8007dc8: 6802 ldr r2, [r0, #0] + 8007dca: 6c41 ldr r1, [r0, #68] ; 0x44 + 8007dcc: b2d3 uxtb r3, r2 + 8007dce: b510 push {r4, lr} + 8007dd0: 3b08 subs r3, #8 + 8007dd2: 2414 movs r4, #20 + 8007dd4: fbb3 f3f4 udiv r3, r3, r4 + 8007dd8: 4c0b ldr r4, [pc, #44] ; (8007e08 <DMA_CalcDMAMUXChannelBaseAndMask+0x40>) + 8007dda: 42a2 cmp r2, r4 + 8007ddc: bf88 it hi + 8007dde: 4a0b ldrhi r2, [pc, #44] ; (8007e0c <DMA_CalcDMAMUXChannelBaseAndMask+0x44>) + 8007de0: f021 0103 bic.w r1, r1, #3 + 8007de4: bf99 ittee ls + 8007de6: f101 4280 addls.w r2, r1, #1073741824 ; 0x40000000 + 8007dea: f502 3202 addls.w r2, r2, #133120 ; 0x20800 + 8007dee: 1852 addhi r2, r2, r1 + 8007df0: 3307 addhi r3, #7 + 8007df2: 6482 str r2, [r0, #72] ; 0x48 + 8007df4: 4a06 ldr r2, [pc, #24] ; (8007e10 <DMA_CalcDMAMUXChannelBaseAndMask+0x48>) + 8007df6: 64c2 str r2, [r0, #76] ; 0x4c + 8007df8: f003 031f and.w r3, r3, #31 + 8007dfc: 2201 movs r2, #1 + 8007dfe: fa02 f303 lsl.w r3, r2, r3 + 8007e02: 6503 str r3, [r0, #80] ; 0x50 + 8007e04: bd10 pop {r4, pc} + 8007e06: bf00 nop + 8007e08: 40020407 .word 0x40020407 + 8007e0c: 4002081c .word 0x4002081c + 8007e10: 40020880 .word 0x40020880 + +08007e14 <HAL_DMA_Init>: + 8007e14: b538 push {r3, r4, r5, lr} + 8007e16: 2800 cmp r0, #0 + 8007e18: d05e beq.n 8007ed8 <HAL_DMA_Init+0xc4> + 8007e1a: 6802 ldr r2, [r0, #0] + 8007e1c: 4b2f ldr r3, [pc, #188] ; (8007edc <HAL_DMA_Init+0xc8>) + 8007e1e: 429a cmp r2, r3 + 8007e20: f04f 0114 mov.w r1, #20 + 8007e24: d84c bhi.n 8007ec0 <HAL_DMA_Init+0xac> + 8007e26: 4b2e ldr r3, [pc, #184] ; (8007ee0 <HAL_DMA_Init+0xcc>) + 8007e28: 4413 add r3, r2 + 8007e2a: fbb3 f3f1 udiv r3, r3, r1 + 8007e2e: 492d ldr r1, [pc, #180] ; (8007ee4 <HAL_DMA_Init+0xd0>) + 8007e30: 009b lsls r3, r3, #2 + 8007e32: e9c0 1310 strd r1, r3, [r0, #64] ; 0x40 + 8007e36: 2302 movs r3, #2 + 8007e38: f880 3025 strb.w r3, [r0, #37] ; 0x25 + 8007e3c: 6813 ldr r3, [r2, #0] + 8007e3e: 6905 ldr r5, [r0, #16] + 8007e40: f423 43ff bic.w r3, r3, #32640 ; 0x7f80 + 8007e44: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8007e48: 6013 str r3, [r2, #0] + 8007e4a: e9d0 4302 ldrd r4, r3, [r0, #8] + 8007e4e: 4323 orrs r3, r4 + 8007e50: 432b orrs r3, r5 + 8007e52: 6945 ldr r5, [r0, #20] + 8007e54: 6811 ldr r1, [r2, #0] + 8007e56: 432b orrs r3, r5 + 8007e58: 6985 ldr r5, [r0, #24] + 8007e5a: 432b orrs r3, r5 + 8007e5c: 69c5 ldr r5, [r0, #28] + 8007e5e: 432b orrs r3, r5 + 8007e60: 6a05 ldr r5, [r0, #32] + 8007e62: 432b orrs r3, r5 + 8007e64: 430b orrs r3, r1 + 8007e66: 6013 str r3, [r2, #0] + 8007e68: f7ff ffae bl 8007dc8 <DMA_CalcDMAMUXChannelBaseAndMask> + 8007e6c: f5b4 4f80 cmp.w r4, #16384 ; 0x4000 + 8007e70: bf04 itt eq + 8007e72: 2300 moveq r3, #0 + 8007e74: 6043 streq r3, [r0, #4] + 8007e76: 6842 ldr r2, [r0, #4] + 8007e78: 6c81 ldr r1, [r0, #72] ; 0x48 + 8007e7a: f002 037f and.w r3, r2, #127 ; 0x7f + 8007e7e: 600b str r3, [r1, #0] + 8007e80: e9d0 1413 ldrd r1, r4, [r0, #76] ; 0x4c + 8007e84: 3a01 subs r2, #1 + 8007e86: 2a03 cmp r2, #3 + 8007e88: 604c str r4, [r1, #4] + 8007e8a: d820 bhi.n 8007ece <HAL_DMA_Init+0xba> + 8007e8c: 4a16 ldr r2, [pc, #88] ; (8007ee8 <HAL_DMA_Init+0xd4>) + 8007e8e: 4917 ldr r1, [pc, #92] ; (8007eec <HAL_DMA_Init+0xd8>) + 8007e90: 6581 str r1, [r0, #88] ; 0x58 + 8007e92: 441a add r2, r3 + 8007e94: 3b01 subs r3, #1 + 8007e96: 0092 lsls r2, r2, #2 + 8007e98: 2101 movs r1, #1 + 8007e9a: f003 0303 and.w r3, r3, #3 + 8007e9e: fa01 f303 lsl.w r3, r1, r3 + 8007ea2: 2100 movs r1, #0 + 8007ea4: 6542 str r2, [r0, #84] ; 0x54 + 8007ea6: 65c3 str r3, [r0, #92] ; 0x5c + 8007ea8: 6011 str r1, [r2, #0] + 8007eaa: 4a11 ldr r2, [pc, #68] ; (8007ef0 <HAL_DMA_Init+0xdc>) + 8007eac: 6453 str r3, [r2, #68] ; 0x44 + 8007eae: 2300 movs r3, #0 + 8007eb0: 2201 movs r2, #1 + 8007eb2: 63c3 str r3, [r0, #60] ; 0x3c + 8007eb4: f880 3024 strb.w r3, [r0, #36] ; 0x24 + 8007eb8: f880 2025 strb.w r2, [r0, #37] ; 0x25 + 8007ebc: 4618 mov r0, r3 + 8007ebe: bd38 pop {r3, r4, r5, pc} + 8007ec0: 4b0c ldr r3, [pc, #48] ; (8007ef4 <HAL_DMA_Init+0xe0>) + 8007ec2: 4413 add r3, r2 + 8007ec4: fbb3 f3f1 udiv r3, r3, r1 + 8007ec8: 490b ldr r1, [pc, #44] ; (8007ef8 <HAL_DMA_Init+0xe4>) + 8007eca: 009b lsls r3, r3, #2 + 8007ecc: e7b1 b.n 8007e32 <HAL_DMA_Init+0x1e> + 8007ece: 2300 movs r3, #0 + 8007ed0: e9c0 3315 strd r3, r3, [r0, #84] ; 0x54 + 8007ed4: 65c3 str r3, [r0, #92] ; 0x5c + 8007ed6: e7ea b.n 8007eae <HAL_DMA_Init+0x9a> + 8007ed8: 2001 movs r0, #1 + 8007eda: e7f0 b.n 8007ebe <HAL_DMA_Init+0xaa> + 8007edc: 40020407 .word 0x40020407 + 8007ee0: bffdfff8 .word 0xbffdfff8 + 8007ee4: 40020000 .word 0x40020000 + 8007ee8: 1000823f .word 0x1000823f + 8007eec: 40020940 .word 0x40020940 + 8007ef0: 40020900 .word 0x40020900 + 8007ef4: bffdfbf8 .word 0xbffdfbf8 + 8007ef8: 40020400 .word 0x40020400 + +08007efc <HAL_DMA_DeInit>: + 8007efc: b538 push {r3, r4, r5, lr} + 8007efe: 2800 cmp r0, #0 + 8007f00: d041 beq.n 8007f86 <HAL_DMA_DeInit+0x8a> + 8007f02: 6802 ldr r2, [r0, #0] + 8007f04: 6813 ldr r3, [r2, #0] + 8007f06: f023 0301 bic.w r3, r3, #1 + 8007f0a: 6013 str r3, [r2, #0] + 8007f0c: 4b1f ldr r3, [pc, #124] ; (8007f8c <HAL_DMA_DeInit+0x90>) + 8007f0e: 429a cmp r2, r3 + 8007f10: f04f 0114 mov.w r1, #20 + 8007f14: d830 bhi.n 8007f78 <HAL_DMA_DeInit+0x7c> + 8007f16: 4b1e ldr r3, [pc, #120] ; (8007f90 <HAL_DMA_DeInit+0x94>) + 8007f18: 4413 add r3, r2 + 8007f1a: fbb3 f3f1 udiv r3, r3, r1 + 8007f1e: 491d ldr r1, [pc, #116] ; (8007f94 <HAL_DMA_DeInit+0x98>) + 8007f20: 009b lsls r3, r3, #2 + 8007f22: e9c0 1310 strd r1, r3, [r0, #64] ; 0x40 + 8007f26: 2401 movs r4, #1 + 8007f28: f003 031c and.w r3, r3, #28 + 8007f2c: fa04 f303 lsl.w r3, r4, r3 + 8007f30: 2500 movs r5, #0 + 8007f32: 6015 str r5, [r2, #0] + 8007f34: 604b str r3, [r1, #4] + 8007f36: f7ff ff47 bl 8007dc8 <DMA_CalcDMAMUXChannelBaseAndMask> + 8007f3a: 6c83 ldr r3, [r0, #72] ; 0x48 + 8007f3c: 6841 ldr r1, [r0, #4] + 8007f3e: 601d str r5, [r3, #0] + 8007f40: e9d0 3213 ldrd r3, r2, [r0, #76] ; 0x4c + 8007f44: 605a str r2, [r3, #4] + 8007f46: 1e4a subs r2, r1, #1 + 8007f48: 2a03 cmp r2, #3 + 8007f4a: d806 bhi.n 8007f5a <HAL_DMA_DeInit+0x5e> + 8007f4c: 4b12 ldr r3, [pc, #72] ; (8007f98 <HAL_DMA_DeInit+0x9c>) + 8007f4e: 440b add r3, r1 + 8007f50: 009b lsls r3, r3, #2 + 8007f52: 4094 lsls r4, r2 + 8007f54: 601d str r5, [r3, #0] + 8007f56: 4b11 ldr r3, [pc, #68] ; (8007f9c <HAL_DMA_DeInit+0xa0>) + 8007f58: 645c str r4, [r3, #68] ; 0x44 + 8007f5a: 2300 movs r3, #0 + 8007f5c: 63c3 str r3, [r0, #60] ; 0x3c + 8007f5e: e9c0 3315 strd r3, r3, [r0, #84] ; 0x54 + 8007f62: e9c0 330b strd r3, r3, [r0, #44] ; 0x2c + 8007f66: e9c0 330d strd r3, r3, [r0, #52] ; 0x34 + 8007f6a: 65c3 str r3, [r0, #92] ; 0x5c + 8007f6c: f880 3025 strb.w r3, [r0, #37] ; 0x25 + 8007f70: f880 3024 strb.w r3, [r0, #36] ; 0x24 + 8007f74: 4618 mov r0, r3 + 8007f76: bd38 pop {r3, r4, r5, pc} + 8007f78: 4b09 ldr r3, [pc, #36] ; (8007fa0 <HAL_DMA_DeInit+0xa4>) + 8007f7a: 4413 add r3, r2 + 8007f7c: fbb3 f3f1 udiv r3, r3, r1 + 8007f80: 4908 ldr r1, [pc, #32] ; (8007fa4 <HAL_DMA_DeInit+0xa8>) + 8007f82: 009b lsls r3, r3, #2 + 8007f84: e7cd b.n 8007f22 <HAL_DMA_DeInit+0x26> + 8007f86: 2001 movs r0, #1 + 8007f88: e7f5 b.n 8007f76 <HAL_DMA_DeInit+0x7a> + 8007f8a: bf00 nop + 8007f8c: 40020407 .word 0x40020407 + 8007f90: bffdfff8 .word 0xbffdfff8 + 8007f94: 40020000 .word 0x40020000 + 8007f98: 1000823f .word 0x1000823f + 8007f9c: 40020900 .word 0x40020900 + 8007fa0: bffdfbf8 .word 0xbffdfbf8 + 8007fa4: 40020400 .word 0x40020400 + +08007fa8 <HAL_DMA_Start_IT>: + 8007fa8: b570 push {r4, r5, r6, lr} + 8007faa: f890 5024 ldrb.w r5, [r0, #36] ; 0x24 + 8007fae: 2d01 cmp r5, #1 + 8007fb0: 4604 mov r4, r0 + 8007fb2: d03b beq.n 800802c <HAL_DMA_Start_IT+0x84> + 8007fb4: f890 6025 ldrb.w r6, [r0, #37] ; 0x25 + 8007fb8: 2501 movs r5, #1 + 8007fba: 42ae cmp r6, r5 + 8007fbc: f880 5024 strb.w r5, [r0, #36] ; 0x24 + 8007fc0: f04f 0600 mov.w r6, #0 + 8007fc4: d12c bne.n 8008020 <HAL_DMA_Start_IT+0x78> + 8007fc6: 2502 movs r5, #2 + 8007fc8: f880 5025 strb.w r5, [r0, #37] ; 0x25 + 8007fcc: 6805 ldr r5, [r0, #0] + 8007fce: 63c6 str r6, [r0, #60] ; 0x3c + 8007fd0: 682e ldr r6, [r5, #0] + 8007fd2: f026 0601 bic.w r6, r6, #1 + 8007fd6: 602e str r6, [r5, #0] + 8007fd8: f7ff fedc bl 8007d94 <DMA_SetConfig> + 8007fdc: 6b03 ldr r3, [r0, #48] ; 0x30 + 8007fde: b1bb cbz r3, 8008010 <HAL_DMA_Start_IT+0x68> + 8007fe0: 682b ldr r3, [r5, #0] + 8007fe2: f043 030e orr.w r3, r3, #14 + 8007fe6: 602b str r3, [r5, #0] + 8007fe8: 6ca3 ldr r3, [r4, #72] ; 0x48 + 8007fea: 681a ldr r2, [r3, #0] + 8007fec: 03d2 lsls r2, r2, #15 + 8007fee: bf42 ittt mi + 8007ff0: 681a ldrmi r2, [r3, #0] + 8007ff2: f442 7280 orrmi.w r2, r2, #256 ; 0x100 + 8007ff6: 601a strmi r2, [r3, #0] + 8007ff8: 6d63 ldr r3, [r4, #84] ; 0x54 + 8007ffa: b11b cbz r3, 8008004 <HAL_DMA_Start_IT+0x5c> + 8007ffc: 681a ldr r2, [r3, #0] + 8007ffe: f442 7280 orr.w r2, r2, #256 ; 0x100 + 8008002: 601a str r2, [r3, #0] + 8008004: 682b ldr r3, [r5, #0] + 8008006: f043 0301 orr.w r3, r3, #1 + 800800a: 602b str r3, [r5, #0] + 800800c: 2000 movs r0, #0 + 800800e: bd70 pop {r4, r5, r6, pc} + 8008010: 682b ldr r3, [r5, #0] + 8008012: f023 0304 bic.w r3, r3, #4 + 8008016: 602b str r3, [r5, #0] + 8008018: 682b ldr r3, [r5, #0] + 800801a: f043 030a orr.w r3, r3, #10 + 800801e: e7e2 b.n 8007fe6 <HAL_DMA_Start_IT+0x3e> + 8008020: 2380 movs r3, #128 ; 0x80 + 8008022: 63c3 str r3, [r0, #60] ; 0x3c + 8008024: f880 6024 strb.w r6, [r0, #36] ; 0x24 + 8008028: 4628 mov r0, r5 + 800802a: e7f0 b.n 800800e <HAL_DMA_Start_IT+0x66> + 800802c: 2002 movs r0, #2 + 800802e: e7ee b.n 800800e <HAL_DMA_Start_IT+0x66> + +08008030 <HAL_DMA_Abort>: + 8008030: 4603 mov r3, r0 + 8008032: b140 cbz r0, 8008046 <HAL_DMA_Abort+0x16> + 8008034: f890 2025 ldrb.w r2, [r0, #37] ; 0x25 + 8008038: 2a02 cmp r2, #2 + 800803a: d006 beq.n 800804a <HAL_DMA_Abort+0x1a> + 800803c: 2204 movs r2, #4 + 800803e: 63c2 str r2, [r0, #60] ; 0x3c + 8008040: 2200 movs r2, #0 + 8008042: f880 2024 strb.w r2, [r0, #36] ; 0x24 + 8008046: 2001 movs r0, #1 + 8008048: 4770 bx lr + 800804a: 6802 ldr r2, [r0, #0] + 800804c: 6c80 ldr r0, [r0, #72] ; 0x48 + 800804e: 6811 ldr r1, [r2, #0] + 8008050: f021 010e bic.w r1, r1, #14 + 8008054: 6011 str r1, [r2, #0] + 8008056: 6801 ldr r1, [r0, #0] + 8008058: f421 7180 bic.w r1, r1, #256 ; 0x100 + 800805c: 6001 str r1, [r0, #0] + 800805e: 6811 ldr r1, [r2, #0] + 8008060: f021 0101 bic.w r1, r1, #1 + 8008064: 6011 str r1, [r2, #0] + 8008066: e9d3 0210 ldrd r0, r2, [r3, #64] ; 0x40 + 800806a: f002 011c and.w r1, r2, #28 + 800806e: 2201 movs r2, #1 + 8008070: 408a lsls r2, r1 + 8008072: 6042 str r2, [r0, #4] + 8008074: e9d3 2113 ldrd r2, r1, [r3, #76] ; 0x4c + 8008078: 6051 str r1, [r2, #4] + 800807a: 6d5a ldr r2, [r3, #84] ; 0x54 + 800807c: b132 cbz r2, 800808c <HAL_DMA_Abort+0x5c> + 800807e: 6811 ldr r1, [r2, #0] + 8008080: f421 7180 bic.w r1, r1, #256 ; 0x100 + 8008084: 6011 str r1, [r2, #0] + 8008086: e9d3 2116 ldrd r2, r1, [r3, #88] ; 0x58 + 800808a: 6051 str r1, [r2, #4] + 800808c: 2201 movs r2, #1 + 800808e: 2000 movs r0, #0 + 8008090: f883 2025 strb.w r2, [r3, #37] ; 0x25 + 8008094: f883 0024 strb.w r0, [r3, #36] ; 0x24 + 8008098: 4770 bx lr + +0800809a <HAL_DMA_Abort_IT>: + 800809a: b510 push {r4, lr} + 800809c: f890 3025 ldrb.w r3, [r0, #37] ; 0x25 + 80080a0: 2b02 cmp r3, #2 + 80080a2: d003 beq.n 80080ac <HAL_DMA_Abort_IT+0x12> + 80080a4: 2304 movs r3, #4 + 80080a6: 63c3 str r3, [r0, #60] ; 0x3c + 80080a8: 2001 movs r0, #1 + 80080aa: bd10 pop {r4, pc} + 80080ac: 6803 ldr r3, [r0, #0] + 80080ae: 681a ldr r2, [r3, #0] + 80080b0: f022 020e bic.w r2, r2, #14 + 80080b4: 601a str r2, [r3, #0] + 80080b6: 681a ldr r2, [r3, #0] + 80080b8: f022 0201 bic.w r2, r2, #1 + 80080bc: 601a str r2, [r3, #0] + 80080be: 6c82 ldr r2, [r0, #72] ; 0x48 + 80080c0: 6813 ldr r3, [r2, #0] + 80080c2: f423 7380 bic.w r3, r3, #256 ; 0x100 + 80080c6: 6013 str r3, [r2, #0] + 80080c8: e9d0 1310 ldrd r1, r3, [r0, #64] ; 0x40 + 80080cc: f003 021c and.w r2, r3, #28 + 80080d0: 2301 movs r3, #1 + 80080d2: 4093 lsls r3, r2 + 80080d4: 604b str r3, [r1, #4] + 80080d6: e9d0 3213 ldrd r3, r2, [r0, #76] ; 0x4c + 80080da: 605a str r2, [r3, #4] + 80080dc: 6d43 ldr r3, [r0, #84] ; 0x54 + 80080de: b133 cbz r3, 80080ee <HAL_DMA_Abort_IT+0x54> + 80080e0: 681a ldr r2, [r3, #0] + 80080e2: f422 7280 bic.w r2, r2, #256 ; 0x100 + 80080e6: 601a str r2, [r3, #0] + 80080e8: e9d0 3216 ldrd r3, r2, [r0, #88] ; 0x58 + 80080ec: 605a str r2, [r3, #4] + 80080ee: 2301 movs r3, #1 + 80080f0: f880 3025 strb.w r3, [r0, #37] ; 0x25 + 80080f4: 6b83 ldr r3, [r0, #56] ; 0x38 + 80080f6: 2400 movs r4, #0 + 80080f8: f880 4024 strb.w r4, [r0, #36] ; 0x24 + 80080fc: b113 cbz r3, 8008104 <HAL_DMA_Abort_IT+0x6a> + 80080fe: 4798 blx r3 + 8008100: 4620 mov r0, r4 + 8008102: e7d2 b.n 80080aa <HAL_DMA_Abort_IT+0x10> + 8008104: 4618 mov r0, r3 + 8008106: e7d0 b.n 80080aa <HAL_DMA_Abort_IT+0x10> + +08008108 <HAL_DMA_IRQHandler>: + 8008108: b470 push {r4, r5, r6} + 800810a: 6c42 ldr r2, [r0, #68] ; 0x44 + 800810c: 6c04 ldr r4, [r0, #64] ; 0x40 + 800810e: 6803 ldr r3, [r0, #0] + 8008110: 6826 ldr r6, [r4, #0] + 8008112: 681d ldr r5, [r3, #0] + 8008114: f002 021c and.w r2, r2, #28 + 8008118: 2104 movs r1, #4 + 800811a: 4091 lsls r1, r2 + 800811c: 4231 tst r1, r6 + 800811e: d00f beq.n 8008140 <HAL_DMA_IRQHandler+0x38> + 8008120: f015 0f04 tst.w r5, #4 + 8008124: d00c beq.n 8008140 <HAL_DMA_IRQHandler+0x38> + 8008126: 681a ldr r2, [r3, #0] + 8008128: 0692 lsls r2, r2, #26 + 800812a: bf5e ittt pl + 800812c: 681a ldrpl r2, [r3, #0] + 800812e: f022 0204 bicpl.w r2, r2, #4 + 8008132: 601a strpl r2, [r3, #0] + 8008134: 6b03 ldr r3, [r0, #48] ; 0x30 + 8008136: 6061 str r1, [r4, #4] + 8008138: 2b00 cmp r3, #0 + 800813a: d033 beq.n 80081a4 <HAL_DMA_IRQHandler+0x9c> + 800813c: bc70 pop {r4, r5, r6} + 800813e: 4718 bx r3 + 8008140: 2102 movs r1, #2 + 8008142: 4091 lsls r1, r2 + 8008144: 4231 tst r1, r6 + 8008146: d017 beq.n 8008178 <HAL_DMA_IRQHandler+0x70> + 8008148: f015 0f02 tst.w r5, #2 + 800814c: d014 beq.n 8008178 <HAL_DMA_IRQHandler+0x70> + 800814e: 681a ldr r2, [r3, #0] + 8008150: 0694 lsls r4, r2, #26 + 8008152: d406 bmi.n 8008162 <HAL_DMA_IRQHandler+0x5a> + 8008154: 681a ldr r2, [r3, #0] + 8008156: f022 020a bic.w r2, r2, #10 + 800815a: 601a str r2, [r3, #0] + 800815c: 2201 movs r2, #1 + 800815e: f880 2025 strb.w r2, [r0, #37] ; 0x25 + 8008162: 4a11 ldr r2, [pc, #68] ; (80081a8 <HAL_DMA_IRQHandler+0xa0>) + 8008164: 4293 cmp r3, r2 + 8008166: bf8c ite hi + 8008168: 4b10 ldrhi r3, [pc, #64] ; (80081ac <HAL_DMA_IRQHandler+0xa4>) + 800816a: 4b11 ldrls r3, [pc, #68] ; (80081b0 <HAL_DMA_IRQHandler+0xa8>) + 800816c: 6059 str r1, [r3, #4] + 800816e: 2300 movs r3, #0 + 8008170: f880 3024 strb.w r3, [r0, #36] ; 0x24 + 8008174: 6ac3 ldr r3, [r0, #44] ; 0x2c + 8008176: e7df b.n 8008138 <HAL_DMA_IRQHandler+0x30> + 8008178: 2108 movs r1, #8 + 800817a: 4091 lsls r1, r2 + 800817c: 4231 tst r1, r6 + 800817e: d011 beq.n 80081a4 <HAL_DMA_IRQHandler+0x9c> + 8008180: 0729 lsls r1, r5, #28 + 8008182: d50f bpl.n 80081a4 <HAL_DMA_IRQHandler+0x9c> + 8008184: 6819 ldr r1, [r3, #0] + 8008186: f021 010e bic.w r1, r1, #14 + 800818a: 6019 str r1, [r3, #0] + 800818c: 2301 movs r3, #1 + 800818e: fa03 f202 lsl.w r2, r3, r2 + 8008192: 6062 str r2, [r4, #4] + 8008194: 63c3 str r3, [r0, #60] ; 0x3c + 8008196: f880 3025 strb.w r3, [r0, #37] ; 0x25 + 800819a: 2300 movs r3, #0 + 800819c: f880 3024 strb.w r3, [r0, #36] ; 0x24 + 80081a0: 6b43 ldr r3, [r0, #52] ; 0x34 + 80081a2: e7c9 b.n 8008138 <HAL_DMA_IRQHandler+0x30> + 80081a4: bc70 pop {r4, r5, r6} + 80081a6: 4770 bx lr + 80081a8: 40020080 .word 0x40020080 + 80081ac: 40020400 .word 0x40020400 + 80081b0: 40020000 .word 0x40020000 + +080081b4 <FLASH_Program_Fast>: + 80081b4: 4a0a ldr r2, [pc, #40] ; (80081e0 <FLASH_Program_Fast+0x2c>) + 80081b6: 6953 ldr r3, [r2, #20] + 80081b8: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 80081bc: b530 push {r4, r5, lr} + 80081be: 6153 str r3, [r2, #20] + 80081c0: f3ef 8410 mrs r4, PRIMASK + 80081c4: b672 cpsid i + 80081c6: 2300 movs r3, #0 + 80081c8: 58cd ldr r5, [r1, r3] + 80081ca: 50c5 str r5, [r0, r3] + 80081cc: 3304 adds r3, #4 + 80081ce: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 80081d2: d1f9 bne.n 80081c8 <FLASH_Program_Fast+0x14> + 80081d4: 6913 ldr r3, [r2, #16] + 80081d6: 03db lsls r3, r3, #15 + 80081d8: d4fc bmi.n 80081d4 <FLASH_Program_Fast+0x20> + 80081da: f384 8810 msr PRIMASK, r4 + 80081de: bd30 pop {r4, r5, pc} + 80081e0: 58004000 .word 0x58004000 + +080081e4 <HAL_FLASH_Unlock>: + 80081e4: 4b06 ldr r3, [pc, #24] ; (8008200 <HAL_FLASH_Unlock+0x1c>) + 80081e6: 695a ldr r2, [r3, #20] + 80081e8: 2a00 cmp r2, #0 + 80081ea: bfbf itttt lt + 80081ec: 4a05 ldrlt r2, [pc, #20] ; (8008204 <HAL_FLASH_Unlock+0x20>) + 80081ee: 609a strlt r2, [r3, #8] + 80081f0: f102 3288 addlt.w r2, r2, #2290649224 ; 0x88888888 + 80081f4: 609a strlt r2, [r3, #8] + 80081f6: bfba itte lt + 80081f8: 6958 ldrlt r0, [r3, #20] + 80081fa: 0fc0 lsrlt r0, r0, #31 + 80081fc: 2000 movge r0, #0 + 80081fe: 4770 bx lr + 8008200: 58004000 .word 0x58004000 + 8008204: 45670123 .word 0x45670123 + +08008208 <HAL_FLASH_Lock>: + 8008208: 4b04 ldr r3, [pc, #16] ; (800821c <HAL_FLASH_Lock+0x14>) + 800820a: 695a ldr r2, [r3, #20] + 800820c: f042 4200 orr.w r2, r2, #2147483648 ; 0x80000000 + 8008210: 615a str r2, [r3, #20] + 8008212: 6958 ldr r0, [r3, #20] + 8008214: 43c0 mvns r0, r0 + 8008216: 0fc0 lsrs r0, r0, #31 + 8008218: 4770 bx lr + 800821a: bf00 nop + 800821c: 58004000 .word 0x58004000 + +08008220 <FLASH_WaitForLastOperation>: + 8008220: b570 push {r4, r5, r6, lr} + 8008222: 4605 mov r5, r0 + 8008224: f7fa fc92 bl 8002b4c <HAL_GetTick> + 8008228: 4e12 ldr r6, [pc, #72] ; (8008274 <FLASH_WaitForLastOperation+0x54>) + 800822a: 4604 mov r4, r0 + 800822c: 6933 ldr r3, [r6, #16] + 800822e: 03d9 lsls r1, r3, #15 + 8008230: d413 bmi.n 800825a <FLASH_WaitForLastOperation+0x3a> + 8008232: 6933 ldr r3, [r6, #16] + 8008234: 07da lsls r2, r3, #31 + 8008236: bf44 itt mi + 8008238: 2201 movmi r2, #1 + 800823a: 6132 strmi r2, [r6, #16] + 800823c: f24c 32fa movw r2, #50170 ; 0xc3fa + 8008240: 4013 ands r3, r2 + 8008242: d111 bne.n 8008268 <FLASH_WaitForLastOperation+0x48> + 8008244: 4e0b ldr r6, [pc, #44] ; (8008274 <FLASH_WaitForLastOperation+0x54>) + 8008246: 6930 ldr r0, [r6, #16] + 8008248: f410 2080 ands.w r0, r0, #262144 ; 0x40000 + 800824c: d00b beq.n 8008266 <FLASH_WaitForLastOperation+0x46> + 800824e: f7fa fc7d bl 8002b4c <HAL_GetTick> + 8008252: 1b00 subs r0, r0, r4 + 8008254: 42a8 cmp r0, r5 + 8008256: d3f6 bcc.n 8008246 <FLASH_WaitForLastOperation+0x26> + 8008258: e004 b.n 8008264 <FLASH_WaitForLastOperation+0x44> + 800825a: f7fa fc77 bl 8002b4c <HAL_GetTick> + 800825e: 1b00 subs r0, r0, r4 + 8008260: 42a8 cmp r0, r5 + 8008262: d3e3 bcc.n 800822c <FLASH_WaitForLastOperation+0xc> + 8008264: 2003 movs r0, #3 + 8008266: bd70 pop {r4, r5, r6, pc} + 8008268: 4a02 ldr r2, [pc, #8] ; (8008274 <FLASH_WaitForLastOperation+0x54>) + 800826a: 6113 str r3, [r2, #16] + 800826c: 4a02 ldr r2, [pc, #8] ; (8008278 <FLASH_WaitForLastOperation+0x58>) + 800826e: 2001 movs r0, #1 + 8008270: 6053 str r3, [r2, #4] + 8008272: e7f8 b.n 8008266 <FLASH_WaitForLastOperation+0x46> + 8008274: 58004000 .word 0x58004000 + 8008278: 20000f40 .word 0x20000f40 + +0800827c <HAL_FLASH_Program>: + 800827c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8008280: 4d18 ldr r5, [pc, #96] ; (80082e4 <HAL_FLASH_Program+0x68>) + 8008282: 4698 mov r8, r3 + 8008284: 782b ldrb r3, [r5, #0] + 8008286: 2b01 cmp r3, #1 + 8008288: 4606 mov r6, r0 + 800828a: 460c mov r4, r1 + 800828c: 4617 mov r7, r2 + 800828e: d026 beq.n 80082de <HAL_FLASH_Program+0x62> + 8008290: 2301 movs r3, #1 + 8008292: 702b strb r3, [r5, #0] + 8008294: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8008298: 2300 movs r3, #0 + 800829a: 606b str r3, [r5, #4] + 800829c: f7ff ffc0 bl 8008220 <FLASH_WaitForLastOperation> + 80082a0: b9a0 cbnz r0, 80082cc <HAL_FLASH_Program+0x50> + 80082a2: 2e01 cmp r6, #1 + 80082a4: d116 bne.n 80082d4 <HAL_FLASH_Program+0x58> + 80082a6: 4a10 ldr r2, [pc, #64] ; (80082e8 <HAL_FLASH_Program+0x6c>) + 80082a8: 6953 ldr r3, [r2, #20] + 80082aa: f043 0301 orr.w r3, r3, #1 + 80082ae: 6153 str r3, [r2, #20] + 80082b0: 6027 str r7, [r4, #0] + 80082b2: f3bf 8f6f isb sy + 80082b6: f8c4 8004 str.w r8, [r4, #4] + 80082ba: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80082be: f7ff ffaf bl 8008220 <FLASH_WaitForLastOperation> + 80082c2: 4a09 ldr r2, [pc, #36] ; (80082e8 <HAL_FLASH_Program+0x6c>) + 80082c4: 6953 ldr r3, [r2, #20] + 80082c6: ea23 0306 bic.w r3, r3, r6 + 80082ca: 6153 str r3, [r2, #20] + 80082cc: 2300 movs r3, #0 + 80082ce: 702b strb r3, [r5, #0] + 80082d0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 80082d4: 4639 mov r1, r7 + 80082d6: 4620 mov r0, r4 + 80082d8: f7ff ff6c bl 80081b4 <FLASH_Program_Fast> + 80082dc: e7ed b.n 80082ba <HAL_FLASH_Program+0x3e> + 80082de: 2002 movs r0, #2 + 80082e0: e7f6 b.n 80082d0 <HAL_FLASH_Program+0x54> + 80082e2: bf00 nop + 80082e4: 20000f40 .word 0x20000f40 + 80082e8: 58004000 .word 0x58004000 + +080082ec <FLASH_PageErase>: + 80082ec: 4a05 ldr r2, [pc, #20] ; (8008304 <FLASH_PageErase+0x18>) + 80082ee: 6953 ldr r3, [r2, #20] + 80082f0: f423 737e bic.w r3, r3, #1016 ; 0x3f8 + 80082f4: ea43 00c0 orr.w r0, r3, r0, lsl #3 + 80082f8: f440 3080 orr.w r0, r0, #65536 ; 0x10000 + 80082fc: f040 0002 orr.w r0, r0, #2 + 8008300: 6150 str r0, [r2, #20] + 8008302: 4770 bx lr + 8008304: 58004000 .word 0x58004000 + +08008308 <HAL_FLASHEx_Erase>: + 8008308: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800830c: 4f23 ldr r7, [pc, #140] ; (800839c <HAL_FLASHEx_Erase+0x94>) + 800830e: 783b ldrb r3, [r7, #0] + 8008310: 2b01 cmp r3, #1 + 8008312: 4605 mov r5, r0 + 8008314: 4688 mov r8, r1 + 8008316: d03f beq.n 8008398 <HAL_FLASHEx_Erase+0x90> + 8008318: 2301 movs r3, #1 + 800831a: 703b strb r3, [r7, #0] + 800831c: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8008320: 2300 movs r3, #0 + 8008322: 607b str r3, [r7, #4] + 8008324: f7ff ff7c bl 8008220 <FLASH_WaitForLastOperation> + 8008328: 4604 mov r4, r0 + 800832a: b988 cbnz r0, 8008350 <HAL_FLASHEx_Erase+0x48> + 800832c: 682b ldr r3, [r5, #0] + 800832e: 2b04 cmp r3, #4 + 8008330: d113 bne.n 800835a <HAL_FLASHEx_Erase+0x52> + 8008332: 4a1b ldr r2, [pc, #108] ; (80083a0 <HAL_FLASHEx_Erase+0x98>) + 8008334: 6953 ldr r3, [r2, #20] + 8008336: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 800833a: f043 0304 orr.w r3, r3, #4 + 800833e: 6153 str r3, [r2, #20] + 8008340: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8008344: f7ff ff6c bl 8008220 <FLASH_WaitForLastOperation> + 8008348: 4604 mov r4, r0 + 800834a: 4b15 ldr r3, [pc, #84] ; (80083a0 <HAL_FLASHEx_Erase+0x98>) + 800834c: 681a ldr r2, [r3, #0] + 800834e: 681b ldr r3, [r3, #0] + 8008350: 2300 movs r3, #0 + 8008352: 703b strb r3, [r7, #0] + 8008354: 4620 mov r0, r4 + 8008356: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800835a: f04f 33ff mov.w r3, #4294967295 + 800835e: f8c8 3000 str.w r3, [r8] + 8008362: 686e ldr r6, [r5, #4] + 8008364: e9d5 3201 ldrd r3, r2, [r5, #4] + 8008368: 4413 add r3, r2 + 800836a: 42b3 cmp r3, r6 + 800836c: d90a bls.n 8008384 <HAL_FLASHEx_Erase+0x7c> + 800836e: 4630 mov r0, r6 + 8008370: f7ff ffbc bl 80082ec <FLASH_PageErase> + 8008374: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8008378: f7ff ff52 bl 8008220 <FLASH_WaitForLastOperation> + 800837c: b150 cbz r0, 8008394 <HAL_FLASHEx_Erase+0x8c> + 800837e: f8c8 6000 str.w r6, [r8] + 8008382: 4604 mov r4, r0 + 8008384: 4a06 ldr r2, [pc, #24] ; (80083a0 <HAL_FLASHEx_Erase+0x98>) + 8008386: 6953 ldr r3, [r2, #20] + 8008388: f423 737e bic.w r3, r3, #1016 ; 0x3f8 + 800838c: f023 0302 bic.w r3, r3, #2 + 8008390: 6153 str r3, [r2, #20] + 8008392: e7da b.n 800834a <HAL_FLASHEx_Erase+0x42> + 8008394: 3601 adds r6, #1 + 8008396: e7e5 b.n 8008364 <HAL_FLASHEx_Erase+0x5c> + 8008398: 2402 movs r4, #2 + 800839a: e7db b.n 8008354 <HAL_FLASHEx_Erase+0x4c> + 800839c: 20000f40 .word 0x20000f40 + 80083a0: 58004000 .word 0x58004000 + +080083a4 <HAL_GPIO_Init>: + 80083a4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80083a8: 4c52 ldr r4, [pc, #328] ; (80084f4 <HAL_GPIO_Init+0x150>) + 80083aa: 2300 movs r3, #0 + 80083ac: f04f 090f mov.w r9, #15 + 80083b0: 680a ldr r2, [r1, #0] + 80083b2: fa32 f503 lsrs.w r5, r2, r3 + 80083b6: d101 bne.n 80083bc <HAL_GPIO_Init+0x18> + 80083b8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80083bc: 2501 movs r5, #1 + 80083be: fa05 f803 lsl.w r8, r5, r3 + 80083c2: ea18 0202 ands.w r2, r8, r2 + 80083c6: f000 808e beq.w 80084e6 <HAL_GPIO_Init+0x142> + 80083ca: 684e ldr r6, [r1, #4] + 80083cc: 2703 movs r7, #3 + 80083ce: f006 0503 and.w r5, r6, #3 + 80083d2: ea4f 0e43 mov.w lr, r3, lsl #1 + 80083d6: fa07 fc0e lsl.w ip, r7, lr + 80083da: 1e6f subs r7, r5, #1 + 80083dc: 2f01 cmp r7, #1 + 80083de: ea6f 0c0c mvn.w ip, ip + 80083e2: d832 bhi.n 800844a <HAL_GPIO_Init+0xa6> + 80083e4: 6887 ldr r7, [r0, #8] + 80083e6: ea07 0a0c and.w sl, r7, ip + 80083ea: 68cf ldr r7, [r1, #12] + 80083ec: fa07 f70e lsl.w r7, r7, lr + 80083f0: ea47 070a orr.w r7, r7, sl + 80083f4: 6087 str r7, [r0, #8] + 80083f6: 6847 ldr r7, [r0, #4] + 80083f8: ea27 0808 bic.w r8, r7, r8 + 80083fc: f3c6 1700 ubfx r7, r6, #4, #1 + 8008400: 409f lsls r7, r3 + 8008402: ea47 0708 orr.w r7, r7, r8 + 8008406: 6047 str r7, [r0, #4] + 8008408: 68c7 ldr r7, [r0, #12] + 800840a: ea07 080c and.w r8, r7, ip + 800840e: 688f ldr r7, [r1, #8] + 8008410: fa07 f70e lsl.w r7, r7, lr + 8008414: ea47 0708 orr.w r7, r7, r8 + 8008418: 2d02 cmp r5, #2 + 800841a: 60c7 str r7, [r0, #12] + 800841c: d117 bne.n 800844e <HAL_GPIO_Init+0xaa> + 800841e: ea4f 08d3 mov.w r8, r3, lsr #3 + 8008422: eb00 0888 add.w r8, r0, r8, lsl #2 + 8008426: f003 0a07 and.w sl, r3, #7 + 800842a: f8d8 7020 ldr.w r7, [r8, #32] + 800842e: ea4f 0a8a mov.w sl, sl, lsl #2 + 8008432: fa09 fb0a lsl.w fp, r9, sl + 8008436: ea27 0b0b bic.w fp, r7, fp + 800843a: 690f ldr r7, [r1, #16] + 800843c: fa07 f70a lsl.w r7, r7, sl + 8008440: ea47 070b orr.w r7, r7, fp + 8008444: f8c8 7020 str.w r7, [r8, #32] + 8008448: e001 b.n 800844e <HAL_GPIO_Init+0xaa> + 800844a: 2d03 cmp r5, #3 + 800844c: d1dc bne.n 8008408 <HAL_GPIO_Init+0x64> + 800844e: 6807 ldr r7, [r0, #0] + 8008450: fa05 f50e lsl.w r5, r5, lr + 8008454: ea07 070c and.w r7, r7, ip + 8008458: 433d orrs r5, r7 + 800845a: f416 3f40 tst.w r6, #196608 ; 0x30000 + 800845e: 6005 str r5, [r0, #0] + 8008460: d041 beq.n 80084e6 <HAL_GPIO_Init+0x142> + 8008462: f023 0703 bic.w r7, r3, #3 + 8008466: f107 4780 add.w r7, r7, #1073741824 ; 0x40000000 + 800846a: f507 3780 add.w r7, r7, #65536 ; 0x10000 + 800846e: f003 0c03 and.w ip, r3, #3 + 8008472: 68bd ldr r5, [r7, #8] + 8008474: ea4f 0c8c mov.w ip, ip, lsl #2 + 8008478: f04f 0e07 mov.w lr, #7 + 800847c: fa0e fe0c lsl.w lr, lr, ip + 8008480: f1b0 4f90 cmp.w r0, #1207959552 ; 0x48000000 + 8008484: ea25 0e0e bic.w lr, r5, lr + 8008488: d02f beq.n 80084ea <HAL_GPIO_Init+0x146> + 800848a: 4d1b ldr r5, [pc, #108] ; (80084f8 <HAL_GPIO_Init+0x154>) + 800848c: 42a8 cmp r0, r5 + 800848e: d02e beq.n 80084ee <HAL_GPIO_Init+0x14a> + 8008490: f505 6580 add.w r5, r5, #1024 ; 0x400 + 8008494: 42a8 cmp r0, r5 + 8008496: bf0c ite eq + 8008498: 2502 moveq r5, #2 + 800849a: 2507 movne r5, #7 + 800849c: fa05 f50c lsl.w r5, r5, ip + 80084a0: ea45 050e orr.w r5, r5, lr + 80084a4: 60bd str r5, [r7, #8] + 80084a6: 6825 ldr r5, [r4, #0] + 80084a8: 43d7 mvns r7, r2 + 80084aa: f416 1f80 tst.w r6, #1048576 ; 0x100000 + 80084ae: bf0c ite eq + 80084b0: 403d andeq r5, r7 + 80084b2: 4315 orrne r5, r2 + 80084b4: 6025 str r5, [r4, #0] + 80084b6: 6865 ldr r5, [r4, #4] + 80084b8: f416 1f00 tst.w r6, #2097152 ; 0x200000 + 80084bc: bf0c ite eq + 80084be: 403d andeq r5, r7 + 80084c0: 4315 orrne r5, r2 + 80084c2: 6065 str r5, [r4, #4] + 80084c4: f8d4 5080 ldr.w r5, [r4, #128] ; 0x80 + 80084c8: f416 3f80 tst.w r6, #65536 ; 0x10000 + 80084cc: bf0c ite eq + 80084ce: 403d andeq r5, r7 + 80084d0: 4315 orrne r5, r2 + 80084d2: f8c4 5080 str.w r5, [r4, #128] ; 0x80 + 80084d6: f8d4 5084 ldr.w r5, [r4, #132] ; 0x84 + 80084da: 03b6 lsls r6, r6, #14 + 80084dc: bf54 ite pl + 80084de: 403d andpl r5, r7 + 80084e0: 4315 orrmi r5, r2 + 80084e2: f8c4 5084 str.w r5, [r4, #132] ; 0x84 + 80084e6: 3301 adds r3, #1 + 80084e8: e762 b.n 80083b0 <HAL_GPIO_Init+0xc> + 80084ea: 2500 movs r5, #0 + 80084ec: e7d6 b.n 800849c <HAL_GPIO_Init+0xf8> + 80084ee: 2501 movs r5, #1 + 80084f0: e7d4 b.n 800849c <HAL_GPIO_Init+0xf8> + 80084f2: bf00 nop + 80084f4: 58000800 .word 0x58000800 + 80084f8: 48000400 .word 0x48000400 + +080084fc <HAL_GPIO_DeInit>: + 80084fc: 4a37 ldr r2, [pc, #220] ; (80085dc <HAL_GPIO_DeInit+0xe0>) + 80084fe: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8008502: 2300 movs r3, #0 + 8008504: f04f 0a01 mov.w sl, #1 + 8008508: f04f 0b07 mov.w fp, #7 + 800850c: f04f 090f mov.w r9, #15 + 8008510: fa31 f403 lsrs.w r4, r1, r3 + 8008514: d101 bne.n 800851a <HAL_GPIO_DeInit+0x1e> + 8008516: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800851a: fa0a fc03 lsl.w ip, sl, r3 + 800851e: ea1c 0601 ands.w r6, ip, r1 + 8008522: d054 beq.n 80085ce <HAL_GPIO_DeInit+0xd2> + 8008524: f023 0403 bic.w r4, r3, #3 + 8008528: f104 4480 add.w r4, r4, #1073741824 ; 0x40000000 + 800852c: f504 3480 add.w r4, r4, #65536 ; 0x10000 + 8008530: f003 0703 and.w r7, r3, #3 + 8008534: 68a5 ldr r5, [r4, #8] + 8008536: 00bf lsls r7, r7, #2 + 8008538: fa0b f807 lsl.w r8, fp, r7 + 800853c: f1b0 4f90 cmp.w r0, #1207959552 ; 0x48000000 + 8008540: ea08 0e05 and.w lr, r8, r5 + 8008544: d045 beq.n 80085d2 <HAL_GPIO_DeInit+0xd6> + 8008546: 4d26 ldr r5, [pc, #152] ; (80085e0 <HAL_GPIO_DeInit+0xe4>) + 8008548: 42a8 cmp r0, r5 + 800854a: d044 beq.n 80085d6 <HAL_GPIO_DeInit+0xda> + 800854c: f505 6580 add.w r5, r5, #1024 ; 0x400 + 8008550: 42a8 cmp r0, r5 + 8008552: bf0c ite eq + 8008554: 2502 moveq r5, #2 + 8008556: 2507 movne r5, #7 + 8008558: 40bd lsls r5, r7 + 800855a: 4575 cmp r5, lr + 800855c: d117 bne.n 800858e <HAL_GPIO_DeInit+0x92> + 800855e: f8d2 5080 ldr.w r5, [r2, #128] ; 0x80 + 8008562: ea25 0506 bic.w r5, r5, r6 + 8008566: f8c2 5080 str.w r5, [r2, #128] ; 0x80 + 800856a: f8d2 5084 ldr.w r5, [r2, #132] ; 0x84 + 800856e: ea25 0506 bic.w r5, r5, r6 + 8008572: f8c2 5084 str.w r5, [r2, #132] ; 0x84 + 8008576: 6815 ldr r5, [r2, #0] + 8008578: ea25 0506 bic.w r5, r5, r6 + 800857c: 6015 str r5, [r2, #0] + 800857e: 6855 ldr r5, [r2, #4] + 8008580: ea25 0506 bic.w r5, r5, r6 + 8008584: 6055 str r5, [r2, #4] + 8008586: 68a5 ldr r5, [r4, #8] + 8008588: ea25 0508 bic.w r5, r5, r8 + 800858c: 60a5 str r5, [r4, #8] + 800858e: 6805 ldr r5, [r0, #0] + 8008590: 2603 movs r6, #3 + 8008592: 005c lsls r4, r3, #1 + 8008594: fa06 f404 lsl.w r4, r6, r4 + 8008598: fa23 f606 lsr.w r6, r3, r6 + 800859c: 4325 orrs r5, r4 + 800859e: eb00 0686 add.w r6, r0, r6, lsl #2 + 80085a2: 6005 str r5, [r0, #0] + 80085a4: f003 0507 and.w r5, r3, #7 + 80085a8: 6a37 ldr r7, [r6, #32] + 80085aa: 00ad lsls r5, r5, #2 + 80085ac: fa09 f505 lsl.w r5, r9, r5 + 80085b0: ea27 0705 bic.w r7, r7, r5 + 80085b4: 6237 str r7, [r6, #32] + 80085b6: 6885 ldr r5, [r0, #8] + 80085b8: ea25 0504 bic.w r5, r5, r4 + 80085bc: 6085 str r5, [r0, #8] + 80085be: 6845 ldr r5, [r0, #4] + 80085c0: ea25 050c bic.w r5, r5, ip + 80085c4: 6045 str r5, [r0, #4] + 80085c6: 68c5 ldr r5, [r0, #12] + 80085c8: ea25 0404 bic.w r4, r5, r4 + 80085cc: 60c4 str r4, [r0, #12] + 80085ce: 3301 adds r3, #1 + 80085d0: e79e b.n 8008510 <HAL_GPIO_DeInit+0x14> + 80085d2: 2500 movs r5, #0 + 80085d4: e7c0 b.n 8008558 <HAL_GPIO_DeInit+0x5c> + 80085d6: 2501 movs r5, #1 + 80085d8: e7be b.n 8008558 <HAL_GPIO_DeInit+0x5c> + 80085da: bf00 nop + 80085dc: 58000800 .word 0x58000800 + 80085e0: 48000400 .word 0x48000400 + +080085e4 <HAL_GPIO_ReadPin>: + 80085e4: 6903 ldr r3, [r0, #16] + 80085e6: 4219 tst r1, r3 + 80085e8: bf14 ite ne + 80085ea: 2001 movne r0, #1 + 80085ec: 2000 moveq r0, #0 + 80085ee: 4770 bx lr + +080085f0 <HAL_GPIO_WritePin>: + 80085f0: b10a cbz r2, 80085f6 <HAL_GPIO_WritePin+0x6> + 80085f2: 6181 str r1, [r0, #24] + 80085f4: 4770 bx lr + 80085f6: 6281 str r1, [r0, #40] ; 0x28 + 80085f8: 4770 bx lr + ... + +080085fc <HAL_GPIO_EXTI_IRQHandler>: + 80085fc: 4a04 ldr r2, [pc, #16] ; (8008610 <HAL_GPIO_EXTI_IRQHandler+0x14>) + 80085fe: 68d1 ldr r1, [r2, #12] + 8008600: 4201 tst r1, r0 + 8008602: b508 push {r3, lr} + 8008604: d002 beq.n 800860c <HAL_GPIO_EXTI_IRQHandler+0x10> + 8008606: 60d0 str r0, [r2, #12] + 8008608: f7fb f96e bl 80038e8 <HAL_GPIO_EXTI_Callback> + 800860c: bd08 pop {r3, pc} + 800860e: bf00 nop + 8008610: 58000800 .word 0x58000800 + +08008614 <I2C_Flush_TXDR>: + 8008614: 6803 ldr r3, [r0, #0] + 8008616: 699a ldr r2, [r3, #24] + 8008618: 0791 lsls r1, r2, #30 + 800861a: bf44 itt mi + 800861c: 2200 movmi r2, #0 + 800861e: 629a strmi r2, [r3, #40] ; 0x28 + 8008620: 699a ldr r2, [r3, #24] + 8008622: 07d2 lsls r2, r2, #31 + 8008624: bf5e ittt pl + 8008626: 699a ldrpl r2, [r3, #24] + 8008628: f042 0201 orrpl.w r2, r2, #1 + 800862c: 619a strpl r2, [r3, #24] + 800862e: 4770 bx lr + +08008630 <I2C_TransferConfig>: + 8008630: b530 push {r4, r5, lr} + 8008632: 9d03 ldr r5, [sp, #12] + 8008634: 6804 ldr r4, [r0, #0] + 8008636: 432b orrs r3, r5 + 8008638: ea43 4302 orr.w r3, r3, r2, lsl #16 + 800863c: 4a06 ldr r2, [pc, #24] ; (8008658 <I2C_TransferConfig+0x28>) + 800863e: 6860 ldr r0, [r4, #4] + 8008640: f3c1 0109 ubfx r1, r1, #0, #10 + 8008644: 430b orrs r3, r1 + 8008646: ea42 5255 orr.w r2, r2, r5, lsr #21 + 800864a: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 800864e: ea20 0002 bic.w r0, r0, r2 + 8008652: 4303 orrs r3, r0 + 8008654: 6063 str r3, [r4, #4] + 8008656: bd30 pop {r4, r5, pc} + 8008658: 03ff63ff .word 0x03ff63ff + +0800865c <I2C_IsErrorOccurred>: + 800865c: 6803 ldr r3, [r0, #0] + 800865e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8008662: 699c ldr r4, [r3, #24] + 8008664: f014 0410 ands.w r4, r4, #16 + 8008668: 4605 mov r5, r0 + 800866a: 460f mov r7, r1 + 800866c: 4616 mov r6, r2 + 800866e: d06f beq.n 8008750 <I2C_IsErrorOccurred+0xf4> + 8008670: 2210 movs r2, #16 + 8008672: 2400 movs r4, #0 + 8008674: 61da str r2, [r3, #28] + 8008676: 46a0 mov r8, r4 + 8008678: 682b ldr r3, [r5, #0] + 800867a: 699a ldr r2, [r3, #24] + 800867c: 0690 lsls r0, r2, #26 + 800867e: d461 bmi.n 8008744 <I2C_IsErrorOccurred+0xe8> + 8008680: f1b8 0f00 cmp.w r8, #0 + 8008684: d035 beq.n 80086f2 <I2C_IsErrorOccurred+0x96> + 8008686: f044 0404 orr.w r4, r4, #4 + 800868a: 2001 movs r0, #1 + 800868c: 682e ldr r6, [r5, #0] + 800868e: 69b3 ldr r3, [r6, #24] + 8008690: 05d9 lsls r1, r3, #23 + 8008692: bf41 itttt mi + 8008694: f44f 7280 movmi.w r2, #256 ; 0x100 + 8008698: 61f2 strmi r2, [r6, #28] + 800869a: f044 0401 orrmi.w r4, r4, #1 + 800869e: 2001 movmi r0, #1 + 80086a0: 055a lsls r2, r3, #21 + 80086a2: bf41 itttt mi + 80086a4: f44f 6280 movmi.w r2, #1024 ; 0x400 + 80086a8: f044 0408 orrmi.w r4, r4, #8 + 80086ac: 61f2 strmi r2, [r6, #28] + 80086ae: 2001 movmi r0, #1 + 80086b0: 059b lsls r3, r3, #22 + 80086b2: d54f bpl.n 8008754 <I2C_IsErrorOccurred+0xf8> + 80086b4: f44f 7300 mov.w r3, #512 ; 0x200 + 80086b8: f044 0402 orr.w r4, r4, #2 + 80086bc: 61f3 str r3, [r6, #28] + 80086be: 4628 mov r0, r5 + 80086c0: f7ff ffa8 bl 8008614 <I2C_Flush_TXDR> + 80086c4: 6873 ldr r3, [r6, #4] + 80086c6: f023 73ff bic.w r3, r3, #33423360 ; 0x1fe0000 + 80086ca: f423 338b bic.w r3, r3, #71168 ; 0x11600 + 80086ce: f423 73ff bic.w r3, r3, #510 ; 0x1fe + 80086d2: f023 0301 bic.w r3, r3, #1 + 80086d6: 6073 str r3, [r6, #4] + 80086d8: 6c6b ldr r3, [r5, #68] ; 0x44 + 80086da: 4323 orrs r3, r4 + 80086dc: 646b str r3, [r5, #68] ; 0x44 + 80086de: 2320 movs r3, #32 + 80086e0: f885 3041 strb.w r3, [r5, #65] ; 0x41 + 80086e4: 2300 movs r3, #0 + 80086e6: f885 3042 strb.w r3, [r5, #66] ; 0x42 + 80086ea: f885 3040 strb.w r3, [r5, #64] ; 0x40 + 80086ee: 2001 movs r0, #1 + 80086f0: e032 b.n 8008758 <I2C_IsErrorOccurred+0xfc> + 80086f2: 1c7a adds r2, r7, #1 + 80086f4: d0c1 beq.n 800867a <I2C_IsErrorOccurred+0x1e> + 80086f6: f7fa fa29 bl 8002b4c <HAL_GetTick> + 80086fa: 1b80 subs r0, r0, r6 + 80086fc: 42b8 cmp r0, r7 + 80086fe: d801 bhi.n 8008704 <I2C_IsErrorOccurred+0xa8> + 8008700: 2f00 cmp r7, #0 + 8008702: d1b9 bne.n 8008678 <I2C_IsErrorOccurred+0x1c> + 8008704: 682b ldr r3, [r5, #0] + 8008706: 6859 ldr r1, [r3, #4] + 8008708: f895 2042 ldrb.w r2, [r5, #66] ; 0x42 + 800870c: 6998 ldr r0, [r3, #24] + 800870e: 0400 lsls r0, r0, #16 + 8008710: b2d2 uxtb r2, r2 + 8008712: d50a bpl.n 800872a <I2C_IsErrorOccurred+0xce> + 8008714: 0449 lsls r1, r1, #17 + 8008716: d408 bmi.n 800872a <I2C_IsErrorOccurred+0xce> + 8008718: 2a20 cmp r2, #32 + 800871a: d006 beq.n 800872a <I2C_IsErrorOccurred+0xce> + 800871c: 685a ldr r2, [r3, #4] + 800871e: f442 4280 orr.w r2, r2, #16384 ; 0x4000 + 8008722: 605a str r2, [r3, #4] + 8008724: f7fa fa12 bl 8002b4c <HAL_GetTick> + 8008728: 4606 mov r6, r0 + 800872a: 682b ldr r3, [r5, #0] + 800872c: 699b ldr r3, [r3, #24] + 800872e: 069b lsls r3, r3, #26 + 8008730: d4a2 bmi.n 8008678 <I2C_IsErrorOccurred+0x1c> + 8008732: f7fa fa0b bl 8002b4c <HAL_GetTick> + 8008736: 1b80 subs r0, r0, r6 + 8008738: 2819 cmp r0, #25 + 800873a: d9f6 bls.n 800872a <I2C_IsErrorOccurred+0xce> + 800873c: 2420 movs r4, #32 + 800873e: f04f 0801 mov.w r8, #1 + 8008742: e799 b.n 8008678 <I2C_IsErrorOccurred+0x1c> + 8008744: f1b8 0f00 cmp.w r8, #0 + 8008748: d19d bne.n 8008686 <I2C_IsErrorOccurred+0x2a> + 800874a: 2220 movs r2, #32 + 800874c: 61da str r2, [r3, #28] + 800874e: e79a b.n 8008686 <I2C_IsErrorOccurred+0x2a> + 8008750: 4620 mov r0, r4 + 8008752: e79b b.n 800868c <I2C_IsErrorOccurred+0x30> + 8008754: 2800 cmp r0, #0 + 8008756: d1b2 bne.n 80086be <I2C_IsErrorOccurred+0x62> + 8008758: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +0800875c <I2C_WaitOnTXISFlagUntilTimeout>: + 800875c: b570 push {r4, r5, r6, lr} + 800875e: 4604 mov r4, r0 + 8008760: 460d mov r5, r1 + 8008762: 4616 mov r6, r2 + 8008764: 6823 ldr r3, [r4, #0] + 8008766: 699b ldr r3, [r3, #24] + 8008768: 079b lsls r3, r3, #30 + 800876a: d501 bpl.n 8008770 <I2C_WaitOnTXISFlagUntilTimeout+0x14> + 800876c: 2000 movs r0, #0 + 800876e: bd70 pop {r4, r5, r6, pc} + 8008770: 4632 mov r2, r6 + 8008772: 4629 mov r1, r5 + 8008774: 4620 mov r0, r4 + 8008776: f7ff ff71 bl 800865c <I2C_IsErrorOccurred> + 800877a: b9a0 cbnz r0, 80087a6 <I2C_WaitOnTXISFlagUntilTimeout+0x4a> + 800877c: 1c6a adds r2, r5, #1 + 800877e: d0f1 beq.n 8008764 <I2C_WaitOnTXISFlagUntilTimeout+0x8> + 8008780: f7fa f9e4 bl 8002b4c <HAL_GetTick> + 8008784: 1b80 subs r0, r0, r6 + 8008786: 42a8 cmp r0, r5 + 8008788: d801 bhi.n 800878e <I2C_WaitOnTXISFlagUntilTimeout+0x32> + 800878a: 2d00 cmp r5, #0 + 800878c: d1ea bne.n 8008764 <I2C_WaitOnTXISFlagUntilTimeout+0x8> + 800878e: 6c63 ldr r3, [r4, #68] ; 0x44 + 8008790: f043 0320 orr.w r3, r3, #32 + 8008794: 6463 str r3, [r4, #68] ; 0x44 + 8008796: 2320 movs r3, #32 + 8008798: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 800879c: 2300 movs r3, #0 + 800879e: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 80087a2: f884 3040 strb.w r3, [r4, #64] ; 0x40 + 80087a6: 2001 movs r0, #1 + 80087a8: e7e1 b.n 800876e <I2C_WaitOnTXISFlagUntilTimeout+0x12> + +080087aa <I2C_WaitOnRXNEFlagUntilTimeout>: + 80087aa: b570 push {r4, r5, r6, lr} + 80087ac: 4604 mov r4, r0 + 80087ae: 460d mov r5, r1 + 80087b0: 4616 mov r6, r2 + 80087b2: 6823 ldr r3, [r4, #0] + 80087b4: 699b ldr r3, [r3, #24] + 80087b6: 075b lsls r3, r3, #29 + 80087b8: d40e bmi.n 80087d8 <I2C_WaitOnRXNEFlagUntilTimeout+0x2e> + 80087ba: 4632 mov r2, r6 + 80087bc: 4629 mov r1, r5 + 80087be: 4620 mov r0, r4 + 80087c0: f7ff ff4c bl 800865c <I2C_IsErrorOccurred> + 80087c4: bb38 cbnz r0, 8008816 <I2C_WaitOnRXNEFlagUntilTimeout+0x6c> + 80087c6: 6823 ldr r3, [r4, #0] + 80087c8: 699a ldr r2, [r3, #24] + 80087ca: 0691 lsls r1, r2, #26 + 80087cc: d525 bpl.n 800881a <I2C_WaitOnRXNEFlagUntilTimeout+0x70> + 80087ce: 699a ldr r2, [r3, #24] + 80087d0: 0752 lsls r2, r2, #29 + 80087d2: d503 bpl.n 80087dc <I2C_WaitOnRXNEFlagUntilTimeout+0x32> + 80087d4: 8d22 ldrh r2, [r4, #40] ; 0x28 + 80087d6: b10a cbz r2, 80087dc <I2C_WaitOnRXNEFlagUntilTimeout+0x32> + 80087d8: 2000 movs r0, #0 + 80087da: bd70 pop {r4, r5, r6, pc} + 80087dc: 699a ldr r2, [r3, #24] + 80087de: f012 0210 ands.w r2, r2, #16 + 80087e2: bf1c itt ne + 80087e4: 2210 movne r2, #16 + 80087e6: 61da strne r2, [r3, #28] + 80087e8: f04f 0120 mov.w r1, #32 + 80087ec: bf18 it ne + 80087ee: 2204 movne r2, #4 + 80087f0: 6462 str r2, [r4, #68] ; 0x44 + 80087f2: 61d9 str r1, [r3, #28] + 80087f4: 685a ldr r2, [r3, #4] + 80087f6: f022 72ff bic.w r2, r2, #33423360 ; 0x1fe0000 + 80087fa: f422 328b bic.w r2, r2, #71168 ; 0x11600 + 80087fe: f422 72ff bic.w r2, r2, #510 ; 0x1fe + 8008802: f022 0201 bic.w r2, r2, #1 + 8008806: 605a str r2, [r3, #4] + 8008808: 2300 movs r3, #0 + 800880a: f884 1041 strb.w r1, [r4, #65] ; 0x41 + 800880e: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 8008812: f884 3040 strb.w r3, [r4, #64] ; 0x40 + 8008816: 2001 movs r0, #1 + 8008818: e7df b.n 80087da <I2C_WaitOnRXNEFlagUntilTimeout+0x30> + 800881a: f7fa f997 bl 8002b4c <HAL_GetTick> + 800881e: 1b80 subs r0, r0, r6 + 8008820: 42a8 cmp r0, r5 + 8008822: d801 bhi.n 8008828 <I2C_WaitOnRXNEFlagUntilTimeout+0x7e> + 8008824: 2d00 cmp r5, #0 + 8008826: d1c4 bne.n 80087b2 <I2C_WaitOnRXNEFlagUntilTimeout+0x8> + 8008828: 6c63 ldr r3, [r4, #68] ; 0x44 + 800882a: f043 0320 orr.w r3, r3, #32 + 800882e: 6463 str r3, [r4, #68] ; 0x44 + 8008830: 2320 movs r3, #32 + 8008832: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 8008836: 2300 movs r3, #0 + 8008838: e7eb b.n 8008812 <I2C_WaitOnRXNEFlagUntilTimeout+0x68> + +0800883a <I2C_WaitOnFlagUntilTimeout>: + 800883a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800883e: 9f06 ldr r7, [sp, #24] + 8008840: 4604 mov r4, r0 + 8008842: 4688 mov r8, r1 + 8008844: 4616 mov r6, r2 + 8008846: 461d mov r5, r3 + 8008848: 6822 ldr r2, [r4, #0] + 800884a: 6993 ldr r3, [r2, #24] + 800884c: ea38 0303 bics.w r3, r8, r3 + 8008850: bf0c ite eq + 8008852: 2301 moveq r3, #1 + 8008854: 2300 movne r3, #0 + 8008856: 42b3 cmp r3, r6 + 8008858: d001 beq.n 800885e <I2C_WaitOnFlagUntilTimeout+0x24> + 800885a: 2000 movs r0, #0 + 800885c: e015 b.n 800888a <I2C_WaitOnFlagUntilTimeout+0x50> + 800885e: 1c6b adds r3, r5, #1 + 8008860: d0f3 beq.n 800884a <I2C_WaitOnFlagUntilTimeout+0x10> + 8008862: f7fa f973 bl 8002b4c <HAL_GetTick> + 8008866: 1bc0 subs r0, r0, r7 + 8008868: 42a8 cmp r0, r5 + 800886a: d801 bhi.n 8008870 <I2C_WaitOnFlagUntilTimeout+0x36> + 800886c: 2d00 cmp r5, #0 + 800886e: d1eb bne.n 8008848 <I2C_WaitOnFlagUntilTimeout+0xe> + 8008870: 6c63 ldr r3, [r4, #68] ; 0x44 + 8008872: f043 0320 orr.w r3, r3, #32 + 8008876: 6463 str r3, [r4, #68] ; 0x44 + 8008878: 2320 movs r3, #32 + 800887a: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 800887e: 2300 movs r3, #0 + 8008880: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 8008884: f884 3040 strb.w r3, [r4, #64] ; 0x40 + 8008888: 2001 movs r0, #1 + 800888a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +0800888e <I2C_WaitOnSTOPFlagUntilTimeout>: + 800888e: b570 push {r4, r5, r6, lr} + 8008890: 4604 mov r4, r0 + 8008892: 460d mov r5, r1 + 8008894: 4616 mov r6, r2 + 8008896: 6823 ldr r3, [r4, #0] + 8008898: 699b ldr r3, [r3, #24] + 800889a: 069b lsls r3, r3, #26 + 800889c: d501 bpl.n 80088a2 <I2C_WaitOnSTOPFlagUntilTimeout+0x14> + 800889e: 2000 movs r0, #0 + 80088a0: bd70 pop {r4, r5, r6, pc} + 80088a2: 4632 mov r2, r6 + 80088a4: 4629 mov r1, r5 + 80088a6: 4620 mov r0, r4 + 80088a8: f7ff fed8 bl 800865c <I2C_IsErrorOccurred> + 80088ac: b990 cbnz r0, 80088d4 <I2C_WaitOnSTOPFlagUntilTimeout+0x46> + 80088ae: f7fa f94d bl 8002b4c <HAL_GetTick> + 80088b2: 1b80 subs r0, r0, r6 + 80088b4: 42a8 cmp r0, r5 + 80088b6: d801 bhi.n 80088bc <I2C_WaitOnSTOPFlagUntilTimeout+0x2e> + 80088b8: 2d00 cmp r5, #0 + 80088ba: d1ec bne.n 8008896 <I2C_WaitOnSTOPFlagUntilTimeout+0x8> + 80088bc: 6c63 ldr r3, [r4, #68] ; 0x44 + 80088be: f043 0320 orr.w r3, r3, #32 + 80088c2: 6463 str r3, [r4, #68] ; 0x44 + 80088c4: 2320 movs r3, #32 + 80088c6: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 80088ca: 2300 movs r3, #0 + 80088cc: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 80088d0: f884 3040 strb.w r3, [r4, #64] ; 0x40 + 80088d4: 2001 movs r0, #1 + 80088d6: e7e3 b.n 80088a0 <I2C_WaitOnSTOPFlagUntilTimeout+0x12> + +080088d8 <HAL_I2C_Init>: + 80088d8: b510 push {r4, lr} + 80088da: 4604 mov r4, r0 + 80088dc: 2800 cmp r0, #0 + 80088de: d04a beq.n 8008976 <HAL_I2C_Init+0x9e> + 80088e0: f890 3041 ldrb.w r3, [r0, #65] ; 0x41 + 80088e4: f003 02ff and.w r2, r3, #255 ; 0xff + 80088e8: b91b cbnz r3, 80088f2 <HAL_I2C_Init+0x1a> + 80088ea: f880 2040 strb.w r2, [r0, #64] ; 0x40 + 80088ee: f7f9 fe05 bl 80024fc <HAL_I2C_MspInit> + 80088f2: 2324 movs r3, #36 ; 0x24 + 80088f4: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 80088f8: 6823 ldr r3, [r4, #0] + 80088fa: 681a ldr r2, [r3, #0] + 80088fc: f022 0201 bic.w r2, r2, #1 + 8008900: 601a str r2, [r3, #0] + 8008902: 6862 ldr r2, [r4, #4] + 8008904: f022 6270 bic.w r2, r2, #251658240 ; 0xf000000 + 8008908: 611a str r2, [r3, #16] + 800890a: 689a ldr r2, [r3, #8] + 800890c: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 8008910: 609a str r2, [r3, #8] + 8008912: e9d4 2102 ldrd r2, r1, [r4, #8] + 8008916: 2901 cmp r1, #1 + 8008918: d124 bne.n 8008964 <HAL_I2C_Init+0x8c> + 800891a: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 800891e: 609a str r2, [r3, #8] + 8008920: 685a ldr r2, [r3, #4] + 8008922: f042 7200 orr.w r2, r2, #33554432 ; 0x2000000 + 8008926: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 800892a: 605a str r2, [r3, #4] + 800892c: 68da ldr r2, [r3, #12] + 800892e: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 8008932: 60da str r2, [r3, #12] + 8008934: e9d4 2104 ldrd r2, r1, [r4, #16] + 8008938: 430a orrs r2, r1 + 800893a: 69a1 ldr r1, [r4, #24] + 800893c: ea42 2201 orr.w r2, r2, r1, lsl #8 + 8008940: 60da str r2, [r3, #12] + 8008942: e9d4 2107 ldrd r2, r1, [r4, #28] + 8008946: 430a orrs r2, r1 + 8008948: 601a str r2, [r3, #0] + 800894a: 681a ldr r2, [r3, #0] + 800894c: f042 0201 orr.w r2, r2, #1 + 8008950: 601a str r2, [r3, #0] + 8008952: 2000 movs r0, #0 + 8008954: 2320 movs r3, #32 + 8008956: 6460 str r0, [r4, #68] ; 0x44 + 8008958: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 800895c: 6320 str r0, [r4, #48] ; 0x30 + 800895e: f884 0042 strb.w r0, [r4, #66] ; 0x42 + 8008962: bd10 pop {r4, pc} + 8008964: f442 4204 orr.w r2, r2, #33792 ; 0x8400 + 8008968: 2902 cmp r1, #2 + 800896a: 609a str r2, [r3, #8] + 800896c: bf04 itt eq + 800896e: f44f 6200 moveq.w r2, #2048 ; 0x800 + 8008972: 605a streq r2, [r3, #4] + 8008974: e7d4 b.n 8008920 <HAL_I2C_Init+0x48> + 8008976: 2001 movs r0, #1 + 8008978: e7f3 b.n 8008962 <HAL_I2C_Init+0x8a> + ... + +0800897c <HAL_I2C_Master_Transmit>: + 800897c: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} + 8008980: 4698 mov r8, r3 + 8008982: f890 3041 ldrb.w r3, [r0, #65] ; 0x41 + 8008986: 9f0a ldr r7, [sp, #40] ; 0x28 + 8008988: 2b20 cmp r3, #32 + 800898a: 4604 mov r4, r0 + 800898c: 460e mov r6, r1 + 800898e: 4691 mov r9, r2 + 8008990: f040 8086 bne.w 8008aa0 <HAL_I2C_Master_Transmit+0x124> + 8008994: f890 3040 ldrb.w r3, [r0, #64] ; 0x40 + 8008998: 2b01 cmp r3, #1 + 800899a: f000 8081 beq.w 8008aa0 <HAL_I2C_Master_Transmit+0x124> + 800899e: f04f 0a01 mov.w sl, #1 + 80089a2: f880 a040 strb.w sl, [r0, #64] ; 0x40 + 80089a6: f7fa f8d1 bl 8002b4c <HAL_GetTick> + 80089aa: 2319 movs r3, #25 + 80089ac: 4605 mov r5, r0 + 80089ae: 9000 str r0, [sp, #0] + 80089b0: 4652 mov r2, sl + 80089b2: f44f 4100 mov.w r1, #32768 ; 0x8000 + 80089b6: 4620 mov r0, r4 + 80089b8: f7ff ff3f bl 800883a <I2C_WaitOnFlagUntilTimeout> + 80089bc: b118 cbz r0, 80089c6 <HAL_I2C_Master_Transmit+0x4a> + 80089be: 2001 movs r0, #1 + 80089c0: b002 add sp, #8 + 80089c2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 80089c6: 2321 movs r3, #33 ; 0x21 + 80089c8: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 80089cc: 2310 movs r3, #16 + 80089ce: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 80089d2: 6460 str r0, [r4, #68] ; 0x44 + 80089d4: f8a4 802a strh.w r8, [r4, #42] ; 0x2a + 80089d8: 8d63 ldrh r3, [r4, #42] ; 0x2a + 80089da: f8c4 9024 str.w r9, [r4, #36] ; 0x24 + 80089de: b29b uxth r3, r3 + 80089e0: 2bff cmp r3, #255 ; 0xff + 80089e2: 6360 str r0, [r4, #52] ; 0x34 + 80089e4: 4b2f ldr r3, [pc, #188] ; (8008aa4 <HAL_I2C_Master_Transmit+0x128>) + 80089e6: d926 bls.n 8008a36 <HAL_I2C_Master_Transmit+0xba> + 80089e8: 22ff movs r2, #255 ; 0xff + 80089ea: 8522 strh r2, [r4, #40] ; 0x28 + 80089ec: 9300 str r3, [sp, #0] + 80089ee: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + 80089f2: 4631 mov r1, r6 + 80089f4: 4620 mov r0, r4 + 80089f6: f7ff fe1b bl 8008630 <I2C_TransferConfig> + 80089fa: 8d63 ldrh r3, [r4, #42] ; 0x2a + 80089fc: b29b uxth r3, r3 + 80089fe: 462a mov r2, r5 + 8008a00: 4639 mov r1, r7 + 8008a02: 4620 mov r0, r4 + 8008a04: b9fb cbnz r3, 8008a46 <HAL_I2C_Master_Transmit+0xca> + 8008a06: f7ff ff42 bl 800888e <I2C_WaitOnSTOPFlagUntilTimeout> + 8008a0a: 2800 cmp r0, #0 + 8008a0c: d1d7 bne.n 80089be <HAL_I2C_Master_Transmit+0x42> + 8008a0e: 6823 ldr r3, [r4, #0] + 8008a10: 2120 movs r1, #32 + 8008a12: 61d9 str r1, [r3, #28] + 8008a14: 685a ldr r2, [r3, #4] + 8008a16: f022 72ff bic.w r2, r2, #33423360 ; 0x1fe0000 + 8008a1a: f422 328b bic.w r2, r2, #71168 ; 0x11600 + 8008a1e: f422 72ff bic.w r2, r2, #510 ; 0x1fe + 8008a22: f022 0201 bic.w r2, r2, #1 + 8008a26: 605a str r2, [r3, #4] + 8008a28: f884 1041 strb.w r1, [r4, #65] ; 0x41 + 8008a2c: f884 0040 strb.w r0, [r4, #64] ; 0x40 + 8008a30: f884 0042 strb.w r0, [r4, #66] ; 0x42 + 8008a34: e7c4 b.n 80089c0 <HAL_I2C_Master_Transmit+0x44> + 8008a36: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8008a38: 9300 str r3, [sp, #0] + 8008a3a: b292 uxth r2, r2 + 8008a3c: 8522 strh r2, [r4, #40] ; 0x28 + 8008a3e: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + 8008a42: b2d2 uxtb r2, r2 + 8008a44: e7d5 b.n 80089f2 <HAL_I2C_Master_Transmit+0x76> + 8008a46: f7ff fe89 bl 800875c <I2C_WaitOnTXISFlagUntilTimeout> + 8008a4a: 2800 cmp r0, #0 + 8008a4c: d1b7 bne.n 80089be <HAL_I2C_Master_Transmit+0x42> + 8008a4e: 6a63 ldr r3, [r4, #36] ; 0x24 + 8008a50: 6822 ldr r2, [r4, #0] + 8008a52: f813 1b01 ldrb.w r1, [r3], #1 + 8008a56: 6291 str r1, [r2, #40] ; 0x28 + 8008a58: 6263 str r3, [r4, #36] ; 0x24 + 8008a5a: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008a5c: 8d22 ldrh r2, [r4, #40] ; 0x28 + 8008a5e: 3b01 subs r3, #1 + 8008a60: b29b uxth r3, r3 + 8008a62: 8563 strh r3, [r4, #42] ; 0x2a + 8008a64: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008a66: 3a01 subs r2, #1 + 8008a68: b292 uxth r2, r2 + 8008a6a: b29b uxth r3, r3 + 8008a6c: 8522 strh r2, [r4, #40] ; 0x28 + 8008a6e: 2b00 cmp r3, #0 + 8008a70: d0c3 beq.n 80089fa <HAL_I2C_Master_Transmit+0x7e> + 8008a72: 2a00 cmp r2, #0 + 8008a74: d1c1 bne.n 80089fa <HAL_I2C_Master_Transmit+0x7e> + 8008a76: 9500 str r5, [sp, #0] + 8008a78: 463b mov r3, r7 + 8008a7a: 2180 movs r1, #128 ; 0x80 + 8008a7c: 4620 mov r0, r4 + 8008a7e: f7ff fedc bl 800883a <I2C_WaitOnFlagUntilTimeout> + 8008a82: 2800 cmp r0, #0 + 8008a84: d19b bne.n 80089be <HAL_I2C_Master_Transmit+0x42> + 8008a86: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008a88: b29b uxth r3, r3 + 8008a8a: 2bff cmp r3, #255 ; 0xff + 8008a8c: d903 bls.n 8008a96 <HAL_I2C_Master_Transmit+0x11a> + 8008a8e: 22ff movs r2, #255 ; 0xff + 8008a90: 8522 strh r2, [r4, #40] ; 0x28 + 8008a92: 9000 str r0, [sp, #0] + 8008a94: e7ab b.n 80089ee <HAL_I2C_Master_Transmit+0x72> + 8008a96: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8008a98: 9000 str r0, [sp, #0] + 8008a9a: b292 uxth r2, r2 + 8008a9c: 8522 strh r2, [r4, #40] ; 0x28 + 8008a9e: e7ce b.n 8008a3e <HAL_I2C_Master_Transmit+0xc2> + 8008aa0: 2002 movs r0, #2 + 8008aa2: e78d b.n 80089c0 <HAL_I2C_Master_Transmit+0x44> + 8008aa4: 80002000 .word 0x80002000 + +08008aa8 <HAL_I2C_Master_Receive>: + 8008aa8: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} + 8008aac: 4698 mov r8, r3 + 8008aae: f890 3041 ldrb.w r3, [r0, #65] ; 0x41 + 8008ab2: 9f0a ldr r7, [sp, #40] ; 0x28 + 8008ab4: 2b20 cmp r3, #32 + 8008ab6: 4604 mov r4, r0 + 8008ab8: 460e mov r6, r1 + 8008aba: 4691 mov r9, r2 + 8008abc: f040 8087 bne.w 8008bce <HAL_I2C_Master_Receive+0x126> + 8008ac0: f890 3040 ldrb.w r3, [r0, #64] ; 0x40 + 8008ac4: 2b01 cmp r3, #1 + 8008ac6: f000 8082 beq.w 8008bce <HAL_I2C_Master_Receive+0x126> + 8008aca: f04f 0a01 mov.w sl, #1 + 8008ace: f880 a040 strb.w sl, [r0, #64] ; 0x40 + 8008ad2: f7fa f83b bl 8002b4c <HAL_GetTick> + 8008ad6: 2319 movs r3, #25 + 8008ad8: 4605 mov r5, r0 + 8008ada: 9000 str r0, [sp, #0] + 8008adc: 4652 mov r2, sl + 8008ade: f44f 4100 mov.w r1, #32768 ; 0x8000 + 8008ae2: 4620 mov r0, r4 + 8008ae4: f7ff fea9 bl 800883a <I2C_WaitOnFlagUntilTimeout> + 8008ae8: b118 cbz r0, 8008af2 <HAL_I2C_Master_Receive+0x4a> + 8008aea: 2001 movs r0, #1 + 8008aec: b002 add sp, #8 + 8008aee: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8008af2: 2322 movs r3, #34 ; 0x22 + 8008af4: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 8008af8: 2310 movs r3, #16 + 8008afa: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 8008afe: 6460 str r0, [r4, #68] ; 0x44 + 8008b00: f8a4 802a strh.w r8, [r4, #42] ; 0x2a + 8008b04: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008b06: f8c4 9024 str.w r9, [r4, #36] ; 0x24 + 8008b0a: b29b uxth r3, r3 + 8008b0c: 2bff cmp r3, #255 ; 0xff + 8008b0e: 6360 str r0, [r4, #52] ; 0x34 + 8008b10: 4b30 ldr r3, [pc, #192] ; (8008bd4 <HAL_I2C_Master_Receive+0x12c>) + 8008b12: d926 bls.n 8008b62 <HAL_I2C_Master_Receive+0xba> + 8008b14: 22ff movs r2, #255 ; 0xff + 8008b16: 8522 strh r2, [r4, #40] ; 0x28 + 8008b18: 9300 str r3, [sp, #0] + 8008b1a: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + 8008b1e: 4631 mov r1, r6 + 8008b20: 4620 mov r0, r4 + 8008b22: f7ff fd85 bl 8008630 <I2C_TransferConfig> + 8008b26: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008b28: b29b uxth r3, r3 + 8008b2a: 462a mov r2, r5 + 8008b2c: 4639 mov r1, r7 + 8008b2e: 4620 mov r0, r4 + 8008b30: b9fb cbnz r3, 8008b72 <HAL_I2C_Master_Receive+0xca> + 8008b32: f7ff feac bl 800888e <I2C_WaitOnSTOPFlagUntilTimeout> + 8008b36: 2800 cmp r0, #0 + 8008b38: d1d7 bne.n 8008aea <HAL_I2C_Master_Receive+0x42> + 8008b3a: 6823 ldr r3, [r4, #0] + 8008b3c: 2120 movs r1, #32 + 8008b3e: 61d9 str r1, [r3, #28] + 8008b40: 685a ldr r2, [r3, #4] + 8008b42: f022 72ff bic.w r2, r2, #33423360 ; 0x1fe0000 + 8008b46: f422 328b bic.w r2, r2, #71168 ; 0x11600 + 8008b4a: f422 72ff bic.w r2, r2, #510 ; 0x1fe + 8008b4e: f022 0201 bic.w r2, r2, #1 + 8008b52: 605a str r2, [r3, #4] + 8008b54: f884 1041 strb.w r1, [r4, #65] ; 0x41 + 8008b58: f884 0040 strb.w r0, [r4, #64] ; 0x40 + 8008b5c: f884 0042 strb.w r0, [r4, #66] ; 0x42 + 8008b60: e7c4 b.n 8008aec <HAL_I2C_Master_Receive+0x44> + 8008b62: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8008b64: 9300 str r3, [sp, #0] + 8008b66: b292 uxth r2, r2 + 8008b68: 8522 strh r2, [r4, #40] ; 0x28 + 8008b6a: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + 8008b6e: b2d2 uxtb r2, r2 + 8008b70: e7d5 b.n 8008b1e <HAL_I2C_Master_Receive+0x76> + 8008b72: f7ff fe1a bl 80087aa <I2C_WaitOnRXNEFlagUntilTimeout> + 8008b76: 2800 cmp r0, #0 + 8008b78: d1b7 bne.n 8008aea <HAL_I2C_Master_Receive+0x42> + 8008b7a: 6823 ldr r3, [r4, #0] + 8008b7c: 6a5a ldr r2, [r3, #36] ; 0x24 + 8008b7e: 6a63 ldr r3, [r4, #36] ; 0x24 + 8008b80: 701a strb r2, [r3, #0] + 8008b82: 6a63 ldr r3, [r4, #36] ; 0x24 + 8008b84: 8d22 ldrh r2, [r4, #40] ; 0x28 + 8008b86: 3301 adds r3, #1 + 8008b88: 6263 str r3, [r4, #36] ; 0x24 + 8008b8a: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008b8c: 3b01 subs r3, #1 + 8008b8e: b29b uxth r3, r3 + 8008b90: 8563 strh r3, [r4, #42] ; 0x2a + 8008b92: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008b94: 3a01 subs r2, #1 + 8008b96: b292 uxth r2, r2 + 8008b98: b29b uxth r3, r3 + 8008b9a: 8522 strh r2, [r4, #40] ; 0x28 + 8008b9c: 2b00 cmp r3, #0 + 8008b9e: d0c2 beq.n 8008b26 <HAL_I2C_Master_Receive+0x7e> + 8008ba0: 2a00 cmp r2, #0 + 8008ba2: d1c0 bne.n 8008b26 <HAL_I2C_Master_Receive+0x7e> + 8008ba4: 9500 str r5, [sp, #0] + 8008ba6: 463b mov r3, r7 + 8008ba8: 2180 movs r1, #128 ; 0x80 + 8008baa: 4620 mov r0, r4 + 8008bac: f7ff fe45 bl 800883a <I2C_WaitOnFlagUntilTimeout> + 8008bb0: 2800 cmp r0, #0 + 8008bb2: d19a bne.n 8008aea <HAL_I2C_Master_Receive+0x42> + 8008bb4: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008bb6: b29b uxth r3, r3 + 8008bb8: 2bff cmp r3, #255 ; 0xff + 8008bba: d903 bls.n 8008bc4 <HAL_I2C_Master_Receive+0x11c> + 8008bbc: 22ff movs r2, #255 ; 0xff + 8008bbe: 8522 strh r2, [r4, #40] ; 0x28 + 8008bc0: 9000 str r0, [sp, #0] + 8008bc2: e7aa b.n 8008b1a <HAL_I2C_Master_Receive+0x72> + 8008bc4: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8008bc6: 9000 str r0, [sp, #0] + 8008bc8: b292 uxth r2, r2 + 8008bca: 8522 strh r2, [r4, #40] ; 0x28 + 8008bcc: e7cd b.n 8008b6a <HAL_I2C_Master_Receive+0xc2> + 8008bce: 2002 movs r0, #2 + 8008bd0: e78c b.n 8008aec <HAL_I2C_Master_Receive+0x44> + 8008bd2: bf00 nop + 8008bd4: 80002400 .word 0x80002400 + +08008bd8 <HAL_I2CEx_ConfigAnalogFilter>: + 8008bd8: b510 push {r4, lr} + 8008bda: f890 2041 ldrb.w r2, [r0, #65] ; 0x41 + 8008bde: 2a20 cmp r2, #32 + 8008be0: 4603 mov r3, r0 + 8008be2: b2d4 uxtb r4, r2 + 8008be4: d11c bne.n 8008c20 <HAL_I2CEx_ConfigAnalogFilter+0x48> + 8008be6: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 + 8008bea: 2a01 cmp r2, #1 + 8008bec: d018 beq.n 8008c20 <HAL_I2CEx_ConfigAnalogFilter+0x48> + 8008bee: 2224 movs r2, #36 ; 0x24 + 8008bf0: f880 2041 strb.w r2, [r0, #65] ; 0x41 + 8008bf4: 6802 ldr r2, [r0, #0] + 8008bf6: 6810 ldr r0, [r2, #0] + 8008bf8: f020 0001 bic.w r0, r0, #1 + 8008bfc: 6010 str r0, [r2, #0] + 8008bfe: 6810 ldr r0, [r2, #0] + 8008c00: f420 5080 bic.w r0, r0, #4096 ; 0x1000 + 8008c04: 6010 str r0, [r2, #0] + 8008c06: 6810 ldr r0, [r2, #0] + 8008c08: 4301 orrs r1, r0 + 8008c0a: 6011 str r1, [r2, #0] + 8008c0c: 6811 ldr r1, [r2, #0] + 8008c0e: 2000 movs r0, #0 + 8008c10: f041 0101 orr.w r1, r1, #1 + 8008c14: 6011 str r1, [r2, #0] + 8008c16: f883 4041 strb.w r4, [r3, #65] ; 0x41 + 8008c1a: f883 0040 strb.w r0, [r3, #64] ; 0x40 + 8008c1e: bd10 pop {r4, pc} + 8008c20: 2002 movs r0, #2 + 8008c22: e7fc b.n 8008c1e <HAL_I2CEx_ConfigAnalogFilter+0x46> + +08008c24 <HAL_I2CEx_ConfigDigitalFilter>: + 8008c24: b510 push {r4, lr} + 8008c26: f890 2041 ldrb.w r2, [r0, #65] ; 0x41 + 8008c2a: 2a20 cmp r2, #32 + 8008c2c: 4603 mov r3, r0 + 8008c2e: b2d4 uxtb r4, r2 + 8008c30: d11b bne.n 8008c6a <HAL_I2CEx_ConfigDigitalFilter+0x46> + 8008c32: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 + 8008c36: 2a01 cmp r2, #1 + 8008c38: d017 beq.n 8008c6a <HAL_I2CEx_ConfigDigitalFilter+0x46> + 8008c3a: 2224 movs r2, #36 ; 0x24 + 8008c3c: f880 2041 strb.w r2, [r0, #65] ; 0x41 + 8008c40: 6802 ldr r2, [r0, #0] + 8008c42: 6810 ldr r0, [r2, #0] + 8008c44: f020 0001 bic.w r0, r0, #1 + 8008c48: 6010 str r0, [r2, #0] + 8008c4a: 6810 ldr r0, [r2, #0] + 8008c4c: f420 6070 bic.w r0, r0, #3840 ; 0xf00 + 8008c50: ea40 2101 orr.w r1, r0, r1, lsl #8 + 8008c54: 6011 str r1, [r2, #0] + 8008c56: 6811 ldr r1, [r2, #0] + 8008c58: 2000 movs r0, #0 + 8008c5a: f041 0101 orr.w r1, r1, #1 + 8008c5e: 6011 str r1, [r2, #0] + 8008c60: f883 4041 strb.w r4, [r3, #65] ; 0x41 + 8008c64: f883 0040 strb.w r0, [r3, #64] ; 0x40 + 8008c68: bd10 pop {r4, pc} + 8008c6a: 2002 movs r0, #2 + 8008c6c: e7fc b.n 8008c68 <HAL_I2CEx_ConfigDigitalFilter+0x44> + ... + +08008c70 <HAL_PWR_EnableBkUpAccess>: + 8008c70: 4a02 ldr r2, [pc, #8] ; (8008c7c <HAL_PWR_EnableBkUpAccess+0xc>) + 8008c72: 6813 ldr r3, [r2, #0] + 8008c74: f443 7380 orr.w r3, r3, #256 ; 0x100 + 8008c78: 6013 str r3, [r2, #0] + 8008c7a: 4770 bx lr + 8008c7c: 58000400 .word 0x58000400 + +08008c80 <HAL_PWR_EnterSLEEPMode>: + 8008c80: 4b0d ldr r3, [pc, #52] ; (8008cb8 <HAL_PWR_EnterSLEEPMode+0x38>) + 8008c82: b510 push {r4, lr} + 8008c84: 695b ldr r3, [r3, #20] + 8008c86: 460c mov r4, r1 + 8008c88: b928 cbnz r0, 8008c96 <HAL_PWR_EnterSLEEPMode+0x16> + 8008c8a: 059a lsls r2, r3, #22 + 8008c8c: d507 bpl.n 8008c9e <HAL_PWR_EnterSLEEPMode+0x1e> + 8008c8e: f000 f827 bl 8008ce0 <HAL_PWREx_DisableLowPowerRunMode> + 8008c92: b120 cbz r0, 8008c9e <HAL_PWR_EnterSLEEPMode+0x1e> + 8008c94: bd10 pop {r4, pc} + 8008c96: 059b lsls r3, r3, #22 + 8008c98: d401 bmi.n 8008c9e <HAL_PWR_EnterSLEEPMode+0x1e> + 8008c9a: f000 f819 bl 8008cd0 <HAL_PWREx_EnableLowPowerRunMode> + 8008c9e: 4a07 ldr r2, [pc, #28] ; (8008cbc <HAL_PWR_EnterSLEEPMode+0x3c>) + 8008ca0: 6913 ldr r3, [r2, #16] + 8008ca2: 2c01 cmp r4, #1 + 8008ca4: f023 0304 bic.w r3, r3, #4 + 8008ca8: 6113 str r3, [r2, #16] + 8008caa: d101 bne.n 8008cb0 <HAL_PWR_EnterSLEEPMode+0x30> + 8008cac: bf30 wfi + 8008cae: e7f1 b.n 8008c94 <HAL_PWR_EnterSLEEPMode+0x14> + 8008cb0: bf40 sev + 8008cb2: bf20 wfe + 8008cb4: bf20 wfe + 8008cb6: e7ed b.n 8008c94 <HAL_PWR_EnterSLEEPMode+0x14> + 8008cb8: 58000400 .word 0x58000400 + 8008cbc: e000ed00 .word 0xe000ed00 + +08008cc0 <HAL_PWREx_GetVoltageRange>: + 8008cc0: 4b02 ldr r3, [pc, #8] ; (8008ccc <HAL_PWREx_GetVoltageRange+0xc>) + 8008cc2: 6818 ldr r0, [r3, #0] + 8008cc4: f400 60c0 and.w r0, r0, #1536 ; 0x600 + 8008cc8: 4770 bx lr + 8008cca: bf00 nop + 8008ccc: 58000400 .word 0x58000400 + +08008cd0 <HAL_PWREx_EnableLowPowerRunMode>: + 8008cd0: 4a02 ldr r2, [pc, #8] ; (8008cdc <HAL_PWREx_EnableLowPowerRunMode+0xc>) + 8008cd2: 6813 ldr r3, [r2, #0] + 8008cd4: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 8008cd8: 6013 str r3, [r2, #0] + 8008cda: 4770 bx lr + 8008cdc: 58000400 .word 0x58000400 + +08008ce0 <HAL_PWREx_DisableLowPowerRunMode>: + 8008ce0: 4a0c ldr r2, [pc, #48] ; (8008d14 <HAL_PWREx_DisableLowPowerRunMode+0x34>) + 8008ce2: 6813 ldr r3, [r2, #0] + 8008ce4: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 8008ce8: 6013 str r3, [r2, #0] + 8008cea: 4b0b ldr r3, [pc, #44] ; (8008d18 <HAL_PWREx_DisableLowPowerRunMode+0x38>) + 8008cec: 681b ldr r3, [r3, #0] + 8008cee: 2132 movs r1, #50 ; 0x32 + 8008cf0: 434b muls r3, r1 + 8008cf2: 490a ldr r1, [pc, #40] ; (8008d1c <HAL_PWREx_DisableLowPowerRunMode+0x3c>) + 8008cf4: fbb3 f3f1 udiv r3, r3, r1 + 8008cf8: 6951 ldr r1, [r2, #20] + 8008cfa: 0589 lsls r1, r1, #22 + 8008cfc: d500 bpl.n 8008d00 <HAL_PWREx_DisableLowPowerRunMode+0x20> + 8008cfe: b933 cbnz r3, 8008d0e <HAL_PWREx_DisableLowPowerRunMode+0x2e> + 8008d00: 6953 ldr r3, [r2, #20] + 8008d02: f413 7f00 tst.w r3, #512 ; 0x200 + 8008d06: bf14 ite ne + 8008d08: 2003 movne r0, #3 + 8008d0a: 2000 moveq r0, #0 + 8008d0c: 4770 bx lr + 8008d0e: 3b01 subs r3, #1 + 8008d10: e7f2 b.n 8008cf8 <HAL_PWREx_DisableLowPowerRunMode+0x18> + 8008d12: bf00 nop + 8008d14: 58000400 .word 0x58000400 + 8008d18: 20000828 .word 0x20000828 + 8008d1c: 000f4240 .word 0x000f4240 + +08008d20 <HAL_PWREx_EnterSTOP2Mode>: + 8008d20: 4a0b ldr r2, [pc, #44] ; (8008d50 <HAL_PWREx_EnterSTOP2Mode+0x30>) + 8008d22: 6813 ldr r3, [r2, #0] + 8008d24: f023 0307 bic.w r3, r3, #7 + 8008d28: f043 0302 orr.w r3, r3, #2 + 8008d2c: 6013 str r3, [r2, #0] + 8008d2e: 4b09 ldr r3, [pc, #36] ; (8008d54 <HAL_PWREx_EnterSTOP2Mode+0x34>) + 8008d30: 691a ldr r2, [r3, #16] + 8008d32: 2801 cmp r0, #1 + 8008d34: f042 0204 orr.w r2, r2, #4 + 8008d38: 611a str r2, [r3, #16] + 8008d3a: d105 bne.n 8008d48 <HAL_PWREx_EnterSTOP2Mode+0x28> + 8008d3c: bf30 wfi + 8008d3e: 691a ldr r2, [r3, #16] + 8008d40: f022 0204 bic.w r2, r2, #4 + 8008d44: 611a str r2, [r3, #16] + 8008d46: 4770 bx lr + 8008d48: bf40 sev + 8008d4a: bf20 wfe + 8008d4c: bf20 wfe + 8008d4e: e7f6 b.n 8008d3e <HAL_PWREx_EnterSTOP2Mode+0x1e> + 8008d50: 58000400 .word 0x58000400 + 8008d54: e000ed00 .word 0xe000ed00 + +08008d58 <LL_RCC_HSE_IsReady>: + 8008d58: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008d5c: 6818 ldr r0, [r3, #0] + 8008d5e: f3c0 4040 ubfx r0, r0, #17, #1 + 8008d62: 4770 bx lr + +08008d64 <LL_RCC_MSI_IsReady>: + 8008d64: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008d68: 6818 ldr r0, [r3, #0] + 8008d6a: f3c0 0040 ubfx r0, r0, #1, #1 + 8008d6e: 4770 bx lr + +08008d70 <LL_RCC_MSI_SetCalibTrimming>: + 8008d70: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8008d74: 6853 ldr r3, [r2, #4] + 8008d76: f423 437f bic.w r3, r3, #65280 ; 0xff00 + 8008d7a: ea43 2300 orr.w r3, r3, r0, lsl #8 + 8008d7e: 6053 str r3, [r2, #4] + 8008d80: 4770 bx lr + +08008d82 <LL_RCC_PLL_IsReady>: + 8008d82: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008d86: 6818 ldr r0, [r3, #0] + 8008d88: f3c0 6040 ubfx r0, r0, #25, #1 + 8008d8c: 4770 bx lr + ... + +08008d90 <RCC_SetFlashLatencyFromMSIRange>: + 8008d90: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} + 8008d92: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008d96: 4a2c ldr r2, [pc, #176] ; (8008e48 <RCC_SetFlashLatencyFromMSIRange+0xb8>) + 8008d98: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 8008d9c: f3c0 1003 ubfx r0, r0, #4, #4 + 8008da0: f003 030f and.w r3, r3, #15 + 8008da4: f852 4020 ldr.w r4, [r2, r0, lsl #2] + 8008da8: 4a28 ldr r2, [pc, #160] ; (8008e4c <RCC_SetFlashLatencyFromMSIRange+0xbc>) + 8008daa: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8008dae: fbb4 f4f3 udiv r4, r4, r3 + 8008db2: f7ff ff85 bl 8008cc0 <HAL_PWREx_GetVoltageRange> + 8008db6: 4b26 ldr r3, [pc, #152] ; (8008e50 <RCC_SetFlashLatencyFromMSIRange+0xc0>) + 8008db8: 4605 mov r5, r0 + 8008dba: e893 0007 ldmia.w r3, {r0, r1, r2} + 8008dbe: f5b5 7f00 cmp.w r5, #512 ; 0x200 + 8008dc2: ab04 add r3, sp, #16 + 8008dc4: e903 0007 stmdb r3, {r0, r1, r2} + 8008dc8: d010 beq.n 8008dec <RCC_SetFlashLatencyFromMSIRange+0x5c> + 8008dca: 4b22 ldr r3, [pc, #136] ; (8008e54 <RCC_SetFlashLatencyFromMSIRange+0xc4>) + 8008dcc: 429c cmp r4, r3 + 8008dce: d318 bcc.n 8008e02 <RCC_SetFlashLatencyFromMSIRange+0x72> + 8008dd0: f503 03b7 add.w r3, r3, #5996544 ; 0x5b8000 + 8008dd4: f603 537f addw r3, r3, #3455 ; 0xd7f + 8008dd8: 429c cmp r4, r3 + 8008dda: d929 bls.n 8008e30 <RCC_SetFlashLatencyFromMSIRange+0xa0> + 8008ddc: f503 1374 add.w r3, r3, #3997696 ; 0x3d0000 + 8008de0: f503 6310 add.w r3, r3, #2304 ; 0x900 + 8008de4: 429c cmp r4, r3 + 8008de6: d825 bhi.n 8008e34 <RCC_SetFlashLatencyFromMSIRange+0xa4> + 8008de8: 2302 movs r3, #2 + 8008dea: e00b b.n 8008e04 <RCC_SetFlashLatencyFromMSIRange+0x74> + 8008dec: 4b1a ldr r3, [pc, #104] ; (8008e58 <RCC_SetFlashLatencyFromMSIRange+0xc8>) + 8008dee: 429c cmp r4, r3 + 8008df0: d907 bls.n 8008e02 <RCC_SetFlashLatencyFromMSIRange+0x72> + 8008df2: 4b1a ldr r3, [pc, #104] ; (8008e5c <RCC_SetFlashLatencyFromMSIRange+0xcc>) + 8008df4: 429c cmp r4, r3 + 8008df6: d91b bls.n 8008e30 <RCC_SetFlashLatencyFromMSIRange+0xa0> + 8008df8: f503 0337 add.w r3, r3, #11993088 ; 0xb70000 + 8008dfc: f503 53d8 add.w r3, r3, #6912 ; 0x1b00 + 8008e00: e7f0 b.n 8008de4 <RCC_SetFlashLatencyFromMSIRange+0x54> + 8008e02: 2300 movs r3, #0 + 8008e04: aa04 add r2, sp, #16 + 8008e06: eb02 0383 add.w r3, r2, r3, lsl #2 + 8008e0a: f853 4c0c ldr.w r4, [r3, #-12] + 8008e0e: 4d14 ldr r5, [pc, #80] ; (8008e60 <RCC_SetFlashLatencyFromMSIRange+0xd0>) + 8008e10: 682b ldr r3, [r5, #0] + 8008e12: f023 0307 bic.w r3, r3, #7 + 8008e16: 4323 orrs r3, r4 + 8008e18: 602b str r3, [r5, #0] + 8008e1a: f7f9 fe97 bl 8002b4c <HAL_GetTick> + 8008e1e: 4606 mov r6, r0 + 8008e20: 682b ldr r3, [r5, #0] + 8008e22: f003 0307 and.w r3, r3, #7 + 8008e26: 429c cmp r4, r3 + 8008e28: d106 bne.n 8008e38 <RCC_SetFlashLatencyFromMSIRange+0xa8> + 8008e2a: 2000 movs r0, #0 + 8008e2c: b004 add sp, #16 + 8008e2e: bd70 pop {r4, r5, r6, pc} + 8008e30: 2301 movs r3, #1 + 8008e32: e7e7 b.n 8008e04 <RCC_SetFlashLatencyFromMSIRange+0x74> + 8008e34: 2400 movs r4, #0 + 8008e36: e7ea b.n 8008e0e <RCC_SetFlashLatencyFromMSIRange+0x7e> + 8008e38: f7f9 fe88 bl 8002b4c <HAL_GetTick> + 8008e3c: 1b80 subs r0, r0, r6 + 8008e3e: 2802 cmp r0, #2 + 8008e40: d9ee bls.n 8008e20 <RCC_SetFlashLatencyFromMSIRange+0x90> + 8008e42: 2003 movs r0, #3 + 8008e44: e7f2 b.n 8008e2c <RCC_SetFlashLatencyFromMSIRange+0x9c> + 8008e46: bf00 nop + 8008e48: 08015004 .word 0x08015004 + 8008e4c: 08014fa4 .word 0x08014fa4 + 8008e50: 08014400 .word 0x08014400 + 8008e54: 006acfc0 .word 0x006acfc0 + 8008e58: 0121eabf .word 0x0121eabf + 8008e5c: 0234933f .word 0x0234933f + 8008e60: 58004000 .word 0x58004000 + +08008e64 <HAL_RCC_GetSysClockFreq>: + 8008e64: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008e68: b510 push {r4, lr} + 8008e6a: 689a ldr r2, [r3, #8] + 8008e6c: 68d9 ldr r1, [r3, #12] + 8008e6e: f012 020c ands.w r2, r2, #12 + 8008e72: d005 beq.n 8008e80 <HAL_RCC_GetSysClockFreq+0x1c> + 8008e74: 2a0c cmp r2, #12 + 8008e76: d14a bne.n 8008f0e <HAL_RCC_GetSysClockFreq+0xaa> + 8008e78: f001 0303 and.w r3, r1, #3 + 8008e7c: 2b01 cmp r3, #1 + 8008e7e: d150 bne.n 8008f22 <HAL_RCC_GetSysClockFreq+0xbe> + 8008e80: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8008e84: 482b ldr r0, [pc, #172] ; (8008f34 <HAL_RCC_GetSysClockFreq+0xd0>) + 8008e86: 680b ldr r3, [r1, #0] + 8008e88: f013 0308 ands.w r3, r3, #8 + 8008e8c: d006 beq.n 8008e9c <HAL_RCC_GetSysClockFreq+0x38> + 8008e8e: 680b ldr r3, [r1, #0] + 8008e90: f013 0308 ands.w r3, r3, #8 + 8008e94: d137 bne.n 8008f06 <HAL_RCC_GetSysClockFreq+0xa2> + 8008e96: f8d1 1094 ldr.w r1, [r1, #148] ; 0x94 + 8008e9a: e007 b.n 8008eac <HAL_RCC_GetSysClockFreq+0x48> + 8008e9c: 680c ldr r4, [r1, #0] + 8008e9e: 0724 lsls r4, r4, #28 + 8008ea0: bf56 itet pl + 8008ea2: f8d1 3094 ldrpl.w r3, [r1, #148] ; 0x94 + 8008ea6: 6809 ldrmi r1, [r1, #0] + 8008ea8: f3c3 2303 ubfxpl r3, r3, #8, #4 + 8008eac: f850 3023 ldr.w r3, [r0, r3, lsl #2] + 8008eb0: 2a00 cmp r2, #0 + 8008eb2: bf0c ite eq + 8008eb4: 4618 moveq r0, r3 + 8008eb6: 2000 movne r0, #0 + 8008eb8: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8008ebc: 688a ldr r2, [r1, #8] + 8008ebe: f002 020c and.w r2, r2, #12 + 8008ec2: 2a0c cmp r2, #12 + 8008ec4: d11e bne.n 8008f04 <HAL_RCC_GetSysClockFreq+0xa0> + 8008ec6: 68ca ldr r2, [r1, #12] + 8008ec8: f002 0203 and.w r2, r2, #3 + 8008ecc: 2a02 cmp r2, #2 + 8008ece: d02e beq.n 8008f2e <HAL_RCC_GetSysClockFreq+0xca> + 8008ed0: 2a03 cmp r2, #3 + 8008ed2: d106 bne.n 8008ee2 <HAL_RCC_GetSysClockFreq+0x7e> + 8008ed4: 680b ldr r3, [r1, #0] + 8008ed6: 4a18 ldr r2, [pc, #96] ; (8008f38 <HAL_RCC_GetSysClockFreq+0xd4>) + 8008ed8: f413 1f80 tst.w r3, #1048576 ; 0x100000 + 8008edc: 4b17 ldr r3, [pc, #92] ; (8008f3c <HAL_RCC_GetSysClockFreq+0xd8>) + 8008ede: bf18 it ne + 8008ee0: 4613 movne r3, r2 + 8008ee2: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8008ee6: 68d0 ldr r0, [r2, #12] + 8008ee8: 68d1 ldr r1, [r2, #12] + 8008eea: 68d2 ldr r2, [r2, #12] + 8008eec: f3c0 2006 ubfx r0, r0, #8, #7 + 8008ef0: 4358 muls r0, r3 + 8008ef2: f3c1 1302 ubfx r3, r1, #4, #3 + 8008ef6: 3301 adds r3, #1 + 8008ef8: fbb0 f0f3 udiv r0, r0, r3 + 8008efc: 0f53 lsrs r3, r2, #29 + 8008efe: 3301 adds r3, #1 + 8008f00: fbb0 f0f3 udiv r0, r0, r3 + 8008f04: bd10 pop {r4, pc} + 8008f06: 680b ldr r3, [r1, #0] + 8008f08: f3c3 1303 ubfx r3, r3, #4, #4 + 8008f0c: e7ce b.n 8008eac <HAL_RCC_GetSysClockFreq+0x48> + 8008f0e: 2a04 cmp r2, #4 + 8008f10: d00a beq.n 8008f28 <HAL_RCC_GetSysClockFreq+0xc4> + 8008f12: 2a08 cmp r2, #8 + 8008f14: d105 bne.n 8008f22 <HAL_RCC_GetSysClockFreq+0xbe> + 8008f16: 681b ldr r3, [r3, #0] + 8008f18: f413 1380 ands.w r3, r3, #1048576 ; 0x100000 + 8008f1c: d104 bne.n 8008f28 <HAL_RCC_GetSysClockFreq+0xc4> + 8008f1e: 4807 ldr r0, [pc, #28] ; (8008f3c <HAL_RCC_GetSysClockFreq+0xd8>) + 8008f20: e7ca b.n 8008eb8 <HAL_RCC_GetSysClockFreq+0x54> + 8008f22: 2300 movs r3, #0 + 8008f24: 4618 mov r0, r3 + 8008f26: e7c7 b.n 8008eb8 <HAL_RCC_GetSysClockFreq+0x54> + 8008f28: 4803 ldr r0, [pc, #12] ; (8008f38 <HAL_RCC_GetSysClockFreq+0xd4>) + 8008f2a: 2300 movs r3, #0 + 8008f2c: e7c4 b.n 8008eb8 <HAL_RCC_GetSysClockFreq+0x54> + 8008f2e: 4b02 ldr r3, [pc, #8] ; (8008f38 <HAL_RCC_GetSysClockFreq+0xd4>) + 8008f30: e7d7 b.n 8008ee2 <HAL_RCC_GetSysClockFreq+0x7e> + 8008f32: bf00 nop + 8008f34: 08015004 .word 0x08015004 + 8008f38: 00f42400 .word 0x00f42400 + 8008f3c: 01e84800 .word 0x01e84800 + +08008f40 <HAL_RCC_GetHCLKFreq>: + 8008f40: b508 push {r3, lr} + 8008f42: f7ff ff8f bl 8008e64 <HAL_RCC_GetSysClockFreq> + 8008f46: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008f4a: 4a04 ldr r2, [pc, #16] ; (8008f5c <HAL_RCC_GetHCLKFreq+0x1c>) + 8008f4c: 689b ldr r3, [r3, #8] + 8008f4e: f3c3 1303 ubfx r3, r3, #4, #4 + 8008f52: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8008f56: fbb0 f0f3 udiv r0, r0, r3 + 8008f5a: bd08 pop {r3, pc} + 8008f5c: 08014fa4 .word 0x08014fa4 + +08008f60 <HAL_RCC_OscConfig>: + 8008f60: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8008f64: 4604 mov r4, r0 + 8008f66: 2800 cmp r0, #0 + 8008f68: d053 beq.n 8009012 <HAL_RCC_OscConfig+0xb2> + 8008f6a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008f6e: 689d ldr r5, [r3, #8] + 8008f70: 68de ldr r6, [r3, #12] + 8008f72: 6803 ldr r3, [r0, #0] + 8008f74: 069b lsls r3, r3, #26 + 8008f76: f005 050c and.w r5, r5, #12 + 8008f7a: f006 0603 and.w r6, r6, #3 + 8008f7e: d568 bpl.n 8009052 <HAL_RCC_OscConfig+0xf2> + 8008f80: 6a02 ldr r2, [r0, #32] + 8008f82: b11d cbz r5, 8008f8c <HAL_RCC_OscConfig+0x2c> + 8008f84: 2d0c cmp r5, #12 + 8008f86: d146 bne.n 8009016 <HAL_RCC_OscConfig+0xb6> + 8008f88: 2e01 cmp r6, #1 + 8008f8a: d144 bne.n 8009016 <HAL_RCC_OscConfig+0xb6> + 8008f8c: 2a00 cmp r2, #0 + 8008f8e: d040 beq.n 8009012 <HAL_RCC_OscConfig+0xb2> + 8008f90: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008f94: 6aa1 ldr r1, [r4, #40] ; 0x28 + 8008f96: 681a ldr r2, [r3, #0] + 8008f98: 0717 lsls r7, r2, #28 + 8008f9a: bf56 itet pl + 8008f9c: f8d3 3094 ldrpl.w r3, [r3, #148] ; 0x94 + 8008fa0: 681b ldrmi r3, [r3, #0] + 8008fa2: 091b lsrpl r3, r3, #4 + 8008fa4: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8008fa8: 4299 cmp r1, r3 + 8008faa: d91f bls.n 8008fec <HAL_RCC_OscConfig+0x8c> + 8008fac: 4608 mov r0, r1 + 8008fae: f7ff feef bl 8008d90 <RCC_SetFlashLatencyFromMSIRange> + 8008fb2: 2800 cmp r0, #0 + 8008fb4: d12d bne.n 8009012 <HAL_RCC_OscConfig+0xb2> + 8008fb6: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8008fba: 6813 ldr r3, [r2, #0] + 8008fbc: f043 0308 orr.w r3, r3, #8 + 8008fc0: 6013 str r3, [r2, #0] + 8008fc2: 6813 ldr r3, [r2, #0] + 8008fc4: 6aa1 ldr r1, [r4, #40] ; 0x28 + 8008fc6: f023 03f0 bic.w r3, r3, #240 ; 0xf0 + 8008fca: 430b orrs r3, r1 + 8008fcc: 6013 str r3, [r2, #0] + 8008fce: 6a60 ldr r0, [r4, #36] ; 0x24 + 8008fd0: f7ff fece bl 8008d70 <LL_RCC_MSI_SetCalibTrimming> + 8008fd4: f7ff ffb4 bl 8008f40 <HAL_RCC_GetHCLKFreq> + 8008fd8: 4bab ldr r3, [pc, #684] ; (8009288 <HAL_RCC_OscConfig+0x328>) + 8008fda: 6018 str r0, [r3, #0] + 8008fdc: 4bab ldr r3, [pc, #684] ; (800928c <HAL_RCC_OscConfig+0x32c>) + 8008fde: 6818 ldr r0, [r3, #0] + 8008fe0: f7f9 fdb2 bl 8002b48 <HAL_InitTick> + 8008fe4: 2800 cmp r0, #0 + 8008fe6: d034 beq.n 8009052 <HAL_RCC_OscConfig+0xf2> + 8008fe8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8008fec: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8008ff0: 6813 ldr r3, [r2, #0] + 8008ff2: f043 0308 orr.w r3, r3, #8 + 8008ff6: 6013 str r3, [r2, #0] + 8008ff8: 6813 ldr r3, [r2, #0] + 8008ffa: f023 03f0 bic.w r3, r3, #240 ; 0xf0 + 8008ffe: 430b orrs r3, r1 + 8009000: 6013 str r3, [r2, #0] + 8009002: 6a60 ldr r0, [r4, #36] ; 0x24 + 8009004: f7ff feb4 bl 8008d70 <LL_RCC_MSI_SetCalibTrimming> + 8009008: 4608 mov r0, r1 + 800900a: f7ff fec1 bl 8008d90 <RCC_SetFlashLatencyFromMSIRange> + 800900e: 2800 cmp r0, #0 + 8009010: d0e0 beq.n 8008fd4 <HAL_RCC_OscConfig+0x74> + 8009012: 2001 movs r0, #1 + 8009014: e7e8 b.n 8008fe8 <HAL_RCC_OscConfig+0x88> + 8009016: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800901a: 2a00 cmp r2, #0 + 800901c: d054 beq.n 80090c8 <HAL_RCC_OscConfig+0x168> + 800901e: 681a ldr r2, [r3, #0] + 8009020: f042 0201 orr.w r2, r2, #1 + 8009024: 601a str r2, [r3, #0] + 8009026: f7f9 fd91 bl 8002b4c <HAL_GetTick> + 800902a: 4607 mov r7, r0 + 800902c: f7ff fe9a bl 8008d64 <LL_RCC_MSI_IsReady> + 8009030: 2800 cmp r0, #0 + 8009032: d042 beq.n 80090ba <HAL_RCC_OscConfig+0x15a> + 8009034: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009038: 6813 ldr r3, [r2, #0] + 800903a: f043 0308 orr.w r3, r3, #8 + 800903e: 6013 str r3, [r2, #0] + 8009040: 6813 ldr r3, [r2, #0] + 8009042: 6aa1 ldr r1, [r4, #40] ; 0x28 + 8009044: f023 03f0 bic.w r3, r3, #240 ; 0xf0 + 8009048: 430b orrs r3, r1 + 800904a: 6013 str r3, [r2, #0] + 800904c: 6a60 ldr r0, [r4, #36] ; 0x24 + 800904e: f7ff fe8f bl 8008d70 <LL_RCC_MSI_SetCalibTrimming> + 8009052: 6823 ldr r3, [r4, #0] + 8009054: 07d8 lsls r0, r3, #31 + 8009056: d448 bmi.n 80090ea <HAL_RCC_OscConfig+0x18a> + 8009058: 6823 ldr r3, [r4, #0] + 800905a: 0799 lsls r1, r3, #30 + 800905c: f100 808c bmi.w 8009178 <HAL_RCC_OscConfig+0x218> + 8009060: 6823 ldr r3, [r4, #0] + 8009062: 071e lsls r6, r3, #28 + 8009064: f140 80fa bpl.w 800925c <HAL_RCC_OscConfig+0x2fc> + 8009068: 69a3 ldr r3, [r4, #24] + 800906a: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 800906e: 2b00 cmp r3, #0 + 8009070: f000 80e1 beq.w 8009236 <HAL_RCC_OscConfig+0x2d6> + 8009074: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 8009078: 69e1 ldr r1, [r4, #28] + 800907a: f003 0210 and.w r2, r3, #16 + 800907e: 4291 cmp r1, r2 + 8009080: f000 80c4 beq.w 800920c <HAL_RCC_OscConfig+0x2ac> + 8009084: f003 0203 and.w r2, r3, #3 + 8009088: 2a02 cmp r2, #2 + 800908a: d0c2 beq.n 8009012 <HAL_RCC_OscConfig+0xb2> + 800908c: 07d8 lsls r0, r3, #31 + 800908e: f140 80b3 bpl.w 80091f8 <HAL_RCC_OscConfig+0x298> + 8009092: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 8009096: f023 0301 bic.w r3, r3, #1 + 800909a: f8c6 3094 str.w r3, [r6, #148] ; 0x94 + 800909e: f7f9 fd55 bl 8002b4c <HAL_GetTick> + 80090a2: 4607 mov r7, r0 + 80090a4: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 80090a8: 0799 lsls r1, r3, #30 + 80090aa: f140 80a5 bpl.w 80091f8 <HAL_RCC_OscConfig+0x298> + 80090ae: f7f9 fd4d bl 8002b4c <HAL_GetTick> + 80090b2: 1bc3 subs r3, r0, r7 + 80090b4: 2b11 cmp r3, #17 + 80090b6: d9f5 bls.n 80090a4 <HAL_RCC_OscConfig+0x144> + 80090b8: e004 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 80090ba: f7f9 fd47 bl 8002b4c <HAL_GetTick> + 80090be: 1bc0 subs r0, r0, r7 + 80090c0: 2802 cmp r0, #2 + 80090c2: d9b3 bls.n 800902c <HAL_RCC_OscConfig+0xcc> + 80090c4: 2003 movs r0, #3 + 80090c6: e78f b.n 8008fe8 <HAL_RCC_OscConfig+0x88> + 80090c8: 681a ldr r2, [r3, #0] + 80090ca: f022 0201 bic.w r2, r2, #1 + 80090ce: 601a str r2, [r3, #0] + 80090d0: f7f9 fd3c bl 8002b4c <HAL_GetTick> + 80090d4: 4607 mov r7, r0 + 80090d6: f7ff fe45 bl 8008d64 <LL_RCC_MSI_IsReady> + 80090da: 2800 cmp r0, #0 + 80090dc: d0b9 beq.n 8009052 <HAL_RCC_OscConfig+0xf2> + 80090de: f7f9 fd35 bl 8002b4c <HAL_GetTick> + 80090e2: 1bc0 subs r0, r0, r7 + 80090e4: 2802 cmp r0, #2 + 80090e6: d9f6 bls.n 80090d6 <HAL_RCC_OscConfig+0x176> + 80090e8: e7ec b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 80090ea: 2d08 cmp r5, #8 + 80090ec: d003 beq.n 80090f6 <HAL_RCC_OscConfig+0x196> + 80090ee: 2d0c cmp r5, #12 + 80090f0: d105 bne.n 80090fe <HAL_RCC_OscConfig+0x19e> + 80090f2: 2e03 cmp r6, #3 + 80090f4: d103 bne.n 80090fe <HAL_RCC_OscConfig+0x19e> + 80090f6: 6863 ldr r3, [r4, #4] + 80090f8: 2b00 cmp r3, #0 + 80090fa: d1ad bne.n 8009058 <HAL_RCC_OscConfig+0xf8> + 80090fc: e789 b.n 8009012 <HAL_RCC_OscConfig+0xb2> + 80090fe: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009102: 68a1 ldr r1, [r4, #8] + 8009104: 681a ldr r2, [r3, #0] + 8009106: f422 1280 bic.w r2, r2, #1048576 ; 0x100000 + 800910a: 430a orrs r2, r1 + 800910c: 601a str r2, [r3, #0] + 800910e: 6862 ldr r2, [r4, #4] + 8009110: f5b2 3f80 cmp.w r2, #65536 ; 0x10000 + 8009114: d110 bne.n 8009138 <HAL_RCC_OscConfig+0x1d8> + 8009116: 681a ldr r2, [r3, #0] + 8009118: f442 3280 orr.w r2, r2, #65536 ; 0x10000 + 800911c: 601a str r2, [r3, #0] + 800911e: f7f9 fd15 bl 8002b4c <HAL_GetTick> + 8009122: 4607 mov r7, r0 + 8009124: f7ff fe18 bl 8008d58 <LL_RCC_HSE_IsReady> + 8009128: 2800 cmp r0, #0 + 800912a: d195 bne.n 8009058 <HAL_RCC_OscConfig+0xf8> + 800912c: f7f9 fd0e bl 8002b4c <HAL_GetTick> + 8009130: 1bc0 subs r0, r0, r7 + 8009132: 2864 cmp r0, #100 ; 0x64 + 8009134: d9f6 bls.n 8009124 <HAL_RCC_OscConfig+0x1c4> + 8009136: e7c5 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 8009138: f5b2 1f04 cmp.w r2, #2162688 ; 0x210000 + 800913c: d104 bne.n 8009148 <HAL_RCC_OscConfig+0x1e8> + 800913e: 681a ldr r2, [r3, #0] + 8009140: f442 1200 orr.w r2, r2, #2097152 ; 0x200000 + 8009144: 601a str r2, [r3, #0] + 8009146: e7e6 b.n 8009116 <HAL_RCC_OscConfig+0x1b6> + 8009148: 6819 ldr r1, [r3, #0] + 800914a: f421 3180 bic.w r1, r1, #65536 ; 0x10000 + 800914e: 6019 str r1, [r3, #0] + 8009150: 6819 ldr r1, [r3, #0] + 8009152: f421 1100 bic.w r1, r1, #2097152 ; 0x200000 + 8009156: 6019 str r1, [r3, #0] + 8009158: 2a00 cmp r2, #0 + 800915a: d1e0 bne.n 800911e <HAL_RCC_OscConfig+0x1be> + 800915c: f7f9 fcf6 bl 8002b4c <HAL_GetTick> + 8009160: 4607 mov r7, r0 + 8009162: f7ff fdf9 bl 8008d58 <LL_RCC_HSE_IsReady> + 8009166: 2800 cmp r0, #0 + 8009168: f43f af76 beq.w 8009058 <HAL_RCC_OscConfig+0xf8> + 800916c: f7f9 fcee bl 8002b4c <HAL_GetTick> + 8009170: 1bc0 subs r0, r0, r7 + 8009172: 2864 cmp r0, #100 ; 0x64 + 8009174: d9f5 bls.n 8009162 <HAL_RCC_OscConfig+0x202> + 8009176: e7a5 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 8009178: 2d04 cmp r5, #4 + 800917a: 6923 ldr r3, [r4, #16] + 800917c: d003 beq.n 8009186 <HAL_RCC_OscConfig+0x226> + 800917e: 2d0c cmp r5, #12 + 8009180: d10e bne.n 80091a0 <HAL_RCC_OscConfig+0x240> + 8009182: 2e02 cmp r6, #2 + 8009184: d10c bne.n 80091a0 <HAL_RCC_OscConfig+0x240> + 8009186: 2b00 cmp r3, #0 + 8009188: f43f af43 beq.w 8009012 <HAL_RCC_OscConfig+0xb2> + 800918c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009190: 6961 ldr r1, [r4, #20] + 8009192: 6853 ldr r3, [r2, #4] + 8009194: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000 + 8009198: ea43 6301 orr.w r3, r3, r1, lsl #24 + 800919c: 6053 str r3, [r2, #4] + 800919e: e75f b.n 8009060 <HAL_RCC_OscConfig+0x100> + 80091a0: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 80091a4: b1bb cbz r3, 80091d6 <HAL_RCC_OscConfig+0x276> + 80091a6: 6833 ldr r3, [r6, #0] + 80091a8: f443 7380 orr.w r3, r3, #256 ; 0x100 + 80091ac: 6033 str r3, [r6, #0] + 80091ae: f7f9 fccd bl 8002b4c <HAL_GetTick> + 80091b2: 4607 mov r7, r0 + 80091b4: 6833 ldr r3, [r6, #0] + 80091b6: 055a lsls r2, r3, #21 + 80091b8: d507 bpl.n 80091ca <HAL_RCC_OscConfig+0x26a> + 80091ba: 6873 ldr r3, [r6, #4] + 80091bc: 6962 ldr r2, [r4, #20] + 80091be: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000 + 80091c2: ea43 6302 orr.w r3, r3, r2, lsl #24 + 80091c6: 6073 str r3, [r6, #4] + 80091c8: e74a b.n 8009060 <HAL_RCC_OscConfig+0x100> + 80091ca: f7f9 fcbf bl 8002b4c <HAL_GetTick> + 80091ce: 1bc3 subs r3, r0, r7 + 80091d0: 2b02 cmp r3, #2 + 80091d2: d9ef bls.n 80091b4 <HAL_RCC_OscConfig+0x254> + 80091d4: e776 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 80091d6: 6833 ldr r3, [r6, #0] + 80091d8: f423 7380 bic.w r3, r3, #256 ; 0x100 + 80091dc: 6033 str r3, [r6, #0] + 80091de: f7f9 fcb5 bl 8002b4c <HAL_GetTick> + 80091e2: 4607 mov r7, r0 + 80091e4: 6833 ldr r3, [r6, #0] + 80091e6: 055b lsls r3, r3, #21 + 80091e8: f57f af3a bpl.w 8009060 <HAL_RCC_OscConfig+0x100> + 80091ec: f7f9 fcae bl 8002b4c <HAL_GetTick> + 80091f0: 1bc3 subs r3, r0, r7 + 80091f2: 2b02 cmp r3, #2 + 80091f4: d9f6 bls.n 80091e4 <HAL_RCC_OscConfig+0x284> + 80091f6: e765 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 80091f8: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80091fc: 69e1 ldr r1, [r4, #28] + 80091fe: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 8009202: f023 0310 bic.w r3, r3, #16 + 8009206: 430b orrs r3, r1 + 8009208: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + 800920c: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 8009210: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 8009214: f043 0301 orr.w r3, r3, #1 + 8009218: f8c7 3094 str.w r3, [r7, #148] ; 0x94 + 800921c: f7f9 fc96 bl 8002b4c <HAL_GetTick> + 8009220: 4606 mov r6, r0 + 8009222: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 8009226: 079a lsls r2, r3, #30 + 8009228: d418 bmi.n 800925c <HAL_RCC_OscConfig+0x2fc> + 800922a: f7f9 fc8f bl 8002b4c <HAL_GetTick> + 800922e: 1b83 subs r3, r0, r6 + 8009230: 2b11 cmp r3, #17 + 8009232: d9f6 bls.n 8009222 <HAL_RCC_OscConfig+0x2c2> + 8009234: e746 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 8009236: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 800923a: f023 0301 bic.w r3, r3, #1 + 800923e: f8c6 3094 str.w r3, [r6, #148] ; 0x94 + 8009242: f7f9 fc83 bl 8002b4c <HAL_GetTick> + 8009246: 4607 mov r7, r0 + 8009248: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 800924c: 079b lsls r3, r3, #30 + 800924e: d505 bpl.n 800925c <HAL_RCC_OscConfig+0x2fc> + 8009250: f7f9 fc7c bl 8002b4c <HAL_GetTick> + 8009254: 1bc3 subs r3, r0, r7 + 8009256: 2b11 cmp r3, #17 + 8009258: d9f6 bls.n 8009248 <HAL_RCC_OscConfig+0x2e8> + 800925a: e733 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 800925c: 6823 ldr r3, [r4, #0] + 800925e: 0758 lsls r0, r3, #29 + 8009260: d554 bpl.n 800930c <HAL_RCC_OscConfig+0x3ac> + 8009262: 4f0b ldr r7, [pc, #44] ; (8009290 <HAL_RCC_OscConfig+0x330>) + 8009264: 683b ldr r3, [r7, #0] + 8009266: 05d9 lsls r1, r3, #23 + 8009268: d414 bmi.n 8009294 <HAL_RCC_OscConfig+0x334> + 800926a: f7ff fd01 bl 8008c70 <HAL_PWR_EnableBkUpAccess> + 800926e: f7f9 fc6d bl 8002b4c <HAL_GetTick> + 8009272: 4606 mov r6, r0 + 8009274: 683b ldr r3, [r7, #0] + 8009276: 05da lsls r2, r3, #23 + 8009278: d40c bmi.n 8009294 <HAL_RCC_OscConfig+0x334> + 800927a: f7f9 fc67 bl 8002b4c <HAL_GetTick> + 800927e: 1b83 subs r3, r0, r6 + 8009280: 2b02 cmp r3, #2 + 8009282: d9f7 bls.n 8009274 <HAL_RCC_OscConfig+0x314> + 8009284: e71e b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 8009286: bf00 nop + 8009288: 20000828 .word 0x20000828 + 800928c: 2000082c .word 0x2000082c + 8009290: 58000400 .word 0x58000400 + 8009294: 68e3 ldr r3, [r4, #12] + 8009296: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 800929a: 2b00 cmp r3, #0 + 800929c: d058 beq.n 8009350 <HAL_RCC_OscConfig+0x3f0> + 800929e: f023 0380 bic.w r3, r3, #128 ; 0x80 + 80092a2: 2b05 cmp r3, #5 + 80092a4: bf02 ittt eq + 80092a6: f8d6 3090 ldreq.w r3, [r6, #144] ; 0x90 + 80092aa: f043 0304 orreq.w r3, r3, #4 + 80092ae: f8c6 3090 streq.w r3, [r6, #144] ; 0x90 + 80092b2: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 80092b6: f7f9 fc49 bl 8002b4c <HAL_GetTick> + 80092ba: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 80092be: f043 0301 orr.w r3, r3, #1 + 80092c2: 4607 mov r7, r0 + 80092c4: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 80092c8: f241 3888 movw r8, #5000 ; 0x1388 + 80092cc: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 80092d0: 079b lsls r3, r3, #30 + 80092d2: d405 bmi.n 80092e0 <HAL_RCC_OscConfig+0x380> + 80092d4: f7f9 fc3a bl 8002b4c <HAL_GetTick> + 80092d8: 1bc3 subs r3, r0, r7 + 80092da: 4543 cmp r3, r8 + 80092dc: d9f6 bls.n 80092cc <HAL_RCC_OscConfig+0x36c> + 80092de: e6f1 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 80092e0: 68e3 ldr r3, [r4, #12] + 80092e2: f023 0304 bic.w r3, r3, #4 + 80092e6: 2b81 cmp r3, #129 ; 0x81 + 80092e8: d11b bne.n 8009322 <HAL_RCC_OscConfig+0x3c2> + 80092ea: f7f9 fc2f bl 8002b4c <HAL_GetTick> + 80092ee: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 80092f2: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80092f6: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 80092fa: 4607 mov r7, r0 + 80092fc: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 8009300: f241 3888 movw r8, #5000 ; 0x1388 + 8009304: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 8009308: 0518 lsls r0, r3, #20 + 800930a: d504 bpl.n 8009316 <HAL_RCC_OscConfig+0x3b6> + 800930c: 6ae0 ldr r0, [r4, #44] ; 0x2c + 800930e: 2800 cmp r0, #0 + 8009310: d14a bne.n 80093a8 <HAL_RCC_OscConfig+0x448> + 8009312: 2000 movs r0, #0 + 8009314: e668 b.n 8008fe8 <HAL_RCC_OscConfig+0x88> + 8009316: f7f9 fc19 bl 8002b4c <HAL_GetTick> + 800931a: 1bc0 subs r0, r0, r7 + 800931c: 4540 cmp r0, r8 + 800931e: d9f1 bls.n 8009304 <HAL_RCC_OscConfig+0x3a4> + 8009320: e6d0 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 8009322: f7f9 fc13 bl 8002b4c <HAL_GetTick> + 8009326: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 800932a: f023 0380 bic.w r3, r3, #128 ; 0x80 + 800932e: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 8009332: 4607 mov r7, r0 + 8009334: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 8009338: f241 3888 movw r8, #5000 ; 0x1388 + 800933c: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 8009340: 0519 lsls r1, r3, #20 + 8009342: d5e3 bpl.n 800930c <HAL_RCC_OscConfig+0x3ac> + 8009344: f7f9 fc02 bl 8002b4c <HAL_GetTick> + 8009348: 1bc0 subs r0, r0, r7 + 800934a: 4540 cmp r0, r8 + 800934c: d9f6 bls.n 800933c <HAL_RCC_OscConfig+0x3dc> + 800934e: e6b9 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 8009350: f7f9 fbfc bl 8002b4c <HAL_GetTick> + 8009354: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 8009358: f023 0380 bic.w r3, r3, #128 ; 0x80 + 800935c: 4607 mov r7, r0 + 800935e: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 8009362: f241 3888 movw r8, #5000 ; 0x1388 + 8009366: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 800936a: 051a lsls r2, r3, #20 + 800936c: d416 bmi.n 800939c <HAL_RCC_OscConfig+0x43c> + 800936e: f7f9 fbed bl 8002b4c <HAL_GetTick> + 8009372: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 8009376: f023 0301 bic.w r3, r3, #1 + 800937a: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 800937e: 4607 mov r7, r0 + 8009380: f04f 48b0 mov.w r8, #1476395008 ; 0x58000000 + 8009384: f241 3688 movw r6, #5000 ; 0x1388 + 8009388: f8d8 3090 ldr.w r3, [r8, #144] ; 0x90 + 800938c: 079b lsls r3, r3, #30 + 800938e: d5bd bpl.n 800930c <HAL_RCC_OscConfig+0x3ac> + 8009390: f7f9 fbdc bl 8002b4c <HAL_GetTick> + 8009394: 1bc3 subs r3, r0, r7 + 8009396: 42b3 cmp r3, r6 + 8009398: d9f6 bls.n 8009388 <HAL_RCC_OscConfig+0x428> + 800939a: e693 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 800939c: f7f9 fbd6 bl 8002b4c <HAL_GetTick> + 80093a0: 1bc0 subs r0, r0, r7 + 80093a2: 4540 cmp r0, r8 + 80093a4: d9df bls.n 8009366 <HAL_RCC_OscConfig+0x406> + 80093a6: e68d b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 80093a8: 2d0c cmp r5, #12 + 80093aa: d04e beq.n 800944a <HAL_RCC_OscConfig+0x4ea> + 80093ac: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80093b0: 2802 cmp r0, #2 + 80093b2: 681a ldr r2, [r3, #0] + 80093b4: f022 7280 bic.w r2, r2, #16777216 ; 0x1000000 + 80093b8: 601a str r2, [r3, #0] + 80093ba: d133 bne.n 8009424 <HAL_RCC_OscConfig+0x4c4> + 80093bc: f7f9 fbc6 bl 8002b4c <HAL_GetTick> + 80093c0: 4605 mov r5, r0 + 80093c2: f7ff fcde bl 8008d82 <LL_RCC_PLL_IsReady> + 80093c6: bb38 cbnz r0, 8009418 <HAL_RCC_OscConfig+0x4b8> + 80093c8: e9d4 310c ldrd r3, r1, [r4, #48] ; 0x30 + 80093cc: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80093d0: 430b orrs r3, r1 + 80093d2: 68d0 ldr r0, [r2, #12] + 80093d4: 492d ldr r1, [pc, #180] ; (800948c <HAL_RCC_OscConfig+0x52c>) + 80093d6: 4001 ands r1, r0 + 80093d8: 430b orrs r3, r1 + 80093da: 6be1 ldr r1, [r4, #60] ; 0x3c + 80093dc: 430b orrs r3, r1 + 80093de: 6c21 ldr r1, [r4, #64] ; 0x40 + 80093e0: 430b orrs r3, r1 + 80093e2: 6c61 ldr r1, [r4, #68] ; 0x44 + 80093e4: 430b orrs r3, r1 + 80093e6: 6ba1 ldr r1, [r4, #56] ; 0x38 + 80093e8: ea43 2301 orr.w r3, r3, r1, lsl #8 + 80093ec: 60d3 str r3, [r2, #12] + 80093ee: 6813 ldr r3, [r2, #0] + 80093f0: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 80093f4: 6013 str r3, [r2, #0] + 80093f6: 68d3 ldr r3, [r2, #12] + 80093f8: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 80093fc: 60d3 str r3, [r2, #12] + 80093fe: f7f9 fba5 bl 8002b4c <HAL_GetTick> + 8009402: 4604 mov r4, r0 + 8009404: f7ff fcbd bl 8008d82 <LL_RCC_PLL_IsReady> + 8009408: 2800 cmp r0, #0 + 800940a: d182 bne.n 8009312 <HAL_RCC_OscConfig+0x3b2> + 800940c: f7f9 fb9e bl 8002b4c <HAL_GetTick> + 8009410: 1b00 subs r0, r0, r4 + 8009412: 280a cmp r0, #10 + 8009414: d9f6 bls.n 8009404 <HAL_RCC_OscConfig+0x4a4> + 8009416: e655 b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 8009418: f7f9 fb98 bl 8002b4c <HAL_GetTick> + 800941c: 1b40 subs r0, r0, r5 + 800941e: 280a cmp r0, #10 + 8009420: d9cf bls.n 80093c2 <HAL_RCC_OscConfig+0x462> + 8009422: e64f b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 8009424: f7f9 fb92 bl 8002b4c <HAL_GetTick> + 8009428: 4604 mov r4, r0 + 800942a: f7ff fcaa bl 8008d82 <LL_RCC_PLL_IsReady> + 800942e: b930 cbnz r0, 800943e <HAL_RCC_OscConfig+0x4de> + 8009430: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009434: 4b16 ldr r3, [pc, #88] ; (8009490 <HAL_RCC_OscConfig+0x530>) + 8009436: 68d1 ldr r1, [r2, #12] + 8009438: 400b ands r3, r1 + 800943a: 60d3 str r3, [r2, #12] + 800943c: e5d4 b.n 8008fe8 <HAL_RCC_OscConfig+0x88> + 800943e: f7f9 fb85 bl 8002b4c <HAL_GetTick> + 8009442: 1b00 subs r0, r0, r4 + 8009444: 280a cmp r0, #10 + 8009446: d9f0 bls.n 800942a <HAL_RCC_OscConfig+0x4ca> + 8009448: e63c b.n 80090c4 <HAL_RCC_OscConfig+0x164> + 800944a: 2801 cmp r0, #1 + 800944c: f43f adcc beq.w 8008fe8 <HAL_RCC_OscConfig+0x88> + 8009450: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009454: 6b22 ldr r2, [r4, #48] ; 0x30 + 8009456: 68db ldr r3, [r3, #12] + 8009458: f003 0103 and.w r1, r3, #3 + 800945c: 4291 cmp r1, r2 + 800945e: f47f add8 bne.w 8009012 <HAL_RCC_OscConfig+0xb2> + 8009462: 6b61 ldr r1, [r4, #52] ; 0x34 + 8009464: f003 0270 and.w r2, r3, #112 ; 0x70 + 8009468: 428a cmp r2, r1 + 800946a: f47f add2 bne.w 8009012 <HAL_RCC_OscConfig+0xb2> + 800946e: 6ba1 ldr r1, [r4, #56] ; 0x38 + 8009470: f403 42fe and.w r2, r3, #32512 ; 0x7f00 + 8009474: ebb2 2f01 cmp.w r2, r1, lsl #8 + 8009478: f47f adcb bne.w 8009012 <HAL_RCC_OscConfig+0xb2> + 800947c: 6c62 ldr r2, [r4, #68] ; 0x44 + 800947e: f003 4360 and.w r3, r3, #3758096384 ; 0xe0000000 + 8009482: 4293 cmp r3, r2 + 8009484: f43f af45 beq.w 8009312 <HAL_RCC_OscConfig+0x3b2> + 8009488: e5c3 b.n 8009012 <HAL_RCC_OscConfig+0xb2> + 800948a: bf00 nop + 800948c: 11c1808c .word 0x11c1808c + 8009490: eefefffc .word 0xeefefffc + +08009494 <HAL_RCC_ClockConfig>: + 8009494: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8009498: 460d mov r5, r1 + 800949a: 4604 mov r4, r0 + 800949c: b910 cbnz r0, 80094a4 <HAL_RCC_ClockConfig+0x10> + 800949e: 2001 movs r0, #1 + 80094a0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 80094a4: 4e68 ldr r6, [pc, #416] ; (8009648 <HAL_RCC_ClockConfig+0x1b4>) + 80094a6: 6833 ldr r3, [r6, #0] + 80094a8: f003 0307 and.w r3, r3, #7 + 80094ac: 428b cmp r3, r1 + 80094ae: d316 bcc.n 80094de <HAL_RCC_ClockConfig+0x4a> + 80094b0: 6823 ldr r3, [r4, #0] + 80094b2: 079a lsls r2, r3, #30 + 80094b4: d527 bpl.n 8009506 <HAL_RCC_ClockConfig+0x72> + 80094b6: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 80094ba: 68a2 ldr r2, [r4, #8] + 80094bc: 68bb ldr r3, [r7, #8] + 80094be: f023 03f0 bic.w r3, r3, #240 ; 0xf0 + 80094c2: 4313 orrs r3, r2 + 80094c4: 60bb str r3, [r7, #8] + 80094c6: f7f9 fb41 bl 8002b4c <HAL_GetTick> + 80094ca: 4606 mov r6, r0 + 80094cc: 68bb ldr r3, [r7, #8] + 80094ce: 03db lsls r3, r3, #15 + 80094d0: d419 bmi.n 8009506 <HAL_RCC_ClockConfig+0x72> + 80094d2: f7f9 fb3b bl 8002b4c <HAL_GetTick> + 80094d6: 1b83 subs r3, r0, r6 + 80094d8: 2b02 cmp r3, #2 + 80094da: d9f7 bls.n 80094cc <HAL_RCC_ClockConfig+0x38> + 80094dc: e011 b.n 8009502 <HAL_RCC_ClockConfig+0x6e> + 80094de: 6833 ldr r3, [r6, #0] + 80094e0: f023 0307 bic.w r3, r3, #7 + 80094e4: 430b orrs r3, r1 + 80094e6: 6033 str r3, [r6, #0] + 80094e8: f7f9 fb30 bl 8002b4c <HAL_GetTick> + 80094ec: 4607 mov r7, r0 + 80094ee: 6833 ldr r3, [r6, #0] + 80094f0: f003 0307 and.w r3, r3, #7 + 80094f4: 42ab cmp r3, r5 + 80094f6: d0db beq.n 80094b0 <HAL_RCC_ClockConfig+0x1c> + 80094f8: f7f9 fb28 bl 8002b4c <HAL_GetTick> + 80094fc: 1bc0 subs r0, r0, r7 + 80094fe: 2802 cmp r0, #2 + 8009500: d9f5 bls.n 80094ee <HAL_RCC_ClockConfig+0x5a> + 8009502: 2003 movs r0, #3 + 8009504: e7cc b.n 80094a0 <HAL_RCC_ClockConfig+0xc> + 8009506: 6823 ldr r3, [r4, #0] + 8009508: 0658 lsls r0, r3, #25 + 800950a: d517 bpl.n 800953c <HAL_RCC_ClockConfig+0xa8> + 800950c: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 8009510: 6962 ldr r2, [r4, #20] + 8009512: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 + 8009516: f023 030f bic.w r3, r3, #15 + 800951a: ea43 1312 orr.w r3, r3, r2, lsr #4 + 800951e: f8c7 3108 str.w r3, [r7, #264] ; 0x108 + 8009522: f7f9 fb13 bl 8002b4c <HAL_GetTick> + 8009526: 4606 mov r6, r0 + 8009528: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 + 800952c: 03d9 lsls r1, r3, #15 + 800952e: d405 bmi.n 800953c <HAL_RCC_ClockConfig+0xa8> + 8009530: f7f9 fb0c bl 8002b4c <HAL_GetTick> + 8009534: 1b83 subs r3, r0, r6 + 8009536: 2b02 cmp r3, #2 + 8009538: d9f6 bls.n 8009528 <HAL_RCC_ClockConfig+0x94> + 800953a: e7e2 b.n 8009502 <HAL_RCC_ClockConfig+0x6e> + 800953c: 6823 ldr r3, [r4, #0] + 800953e: 075a lsls r2, r3, #29 + 8009540: d513 bpl.n 800956a <HAL_RCC_ClockConfig+0xd6> + 8009542: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 8009546: 68e2 ldr r2, [r4, #12] + 8009548: 68bb ldr r3, [r7, #8] + 800954a: f423 63e0 bic.w r3, r3, #1792 ; 0x700 + 800954e: 4313 orrs r3, r2 + 8009550: 60bb str r3, [r7, #8] + 8009552: f7f9 fafb bl 8002b4c <HAL_GetTick> + 8009556: 4606 mov r6, r0 + 8009558: 68bb ldr r3, [r7, #8] + 800955a: 039b lsls r3, r3, #14 + 800955c: d405 bmi.n 800956a <HAL_RCC_ClockConfig+0xd6> + 800955e: f7f9 faf5 bl 8002b4c <HAL_GetTick> + 8009562: 1b83 subs r3, r0, r6 + 8009564: 2b02 cmp r3, #2 + 8009566: d9f7 bls.n 8009558 <HAL_RCC_ClockConfig+0xc4> + 8009568: e7cb b.n 8009502 <HAL_RCC_ClockConfig+0x6e> + 800956a: 6823 ldr r3, [r4, #0] + 800956c: 0718 lsls r0, r3, #28 + 800956e: d514 bpl.n 800959a <HAL_RCC_ClockConfig+0x106> + 8009570: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 8009574: 6922 ldr r2, [r4, #16] + 8009576: 68bb ldr r3, [r7, #8] + 8009578: f423 5360 bic.w r3, r3, #14336 ; 0x3800 + 800957c: ea43 03c2 orr.w r3, r3, r2, lsl #3 + 8009580: 60bb str r3, [r7, #8] + 8009582: f7f9 fae3 bl 8002b4c <HAL_GetTick> + 8009586: 4606 mov r6, r0 + 8009588: 68bb ldr r3, [r7, #8] + 800958a: 0359 lsls r1, r3, #13 + 800958c: d405 bmi.n 800959a <HAL_RCC_ClockConfig+0x106> + 800958e: f7f9 fadd bl 8002b4c <HAL_GetTick> + 8009592: 1b83 subs r3, r0, r6 + 8009594: 2b02 cmp r3, #2 + 8009596: d9f7 bls.n 8009588 <HAL_RCC_ClockConfig+0xf4> + 8009598: e7b3 b.n 8009502 <HAL_RCC_ClockConfig+0x6e> + 800959a: 6823 ldr r3, [r4, #0] + 800959c: 07da lsls r2, r3, #31 + 800959e: d40f bmi.n 80095c0 <HAL_RCC_ClockConfig+0x12c> + 80095a0: 4c29 ldr r4, [pc, #164] ; (8009648 <HAL_RCC_ClockConfig+0x1b4>) + 80095a2: 6823 ldr r3, [r4, #0] + 80095a4: f003 0307 and.w r3, r3, #7 + 80095a8: 42ab cmp r3, r5 + 80095aa: d839 bhi.n 8009620 <HAL_RCC_ClockConfig+0x18c> + 80095ac: f7ff fcc8 bl 8008f40 <HAL_RCC_GetHCLKFreq> + 80095b0: 4b26 ldr r3, [pc, #152] ; (800964c <HAL_RCC_ClockConfig+0x1b8>) + 80095b2: 6018 str r0, [r3, #0] + 80095b4: 4b26 ldr r3, [pc, #152] ; (8009650 <HAL_RCC_ClockConfig+0x1bc>) + 80095b6: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 80095ba: 6818 ldr r0, [r3, #0] + 80095bc: f7f9 bac4 b.w 8002b48 <HAL_InitTick> + 80095c0: 6862 ldr r2, [r4, #4] + 80095c2: 2a02 cmp r2, #2 + 80095c4: d11d bne.n 8009602 <HAL_RCC_ClockConfig+0x16e> + 80095c6: f7ff fbc7 bl 8008d58 <LL_RCC_HSE_IsReady> + 80095ca: 2800 cmp r0, #0 + 80095cc: f43f af67 beq.w 800949e <HAL_RCC_ClockConfig+0xa> + 80095d0: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 80095d4: f241 3888 movw r8, #5000 ; 0x1388 + 80095d8: 68b3 ldr r3, [r6, #8] + 80095da: f023 0303 bic.w r3, r3, #3 + 80095de: 4313 orrs r3, r2 + 80095e0: 60b3 str r3, [r6, #8] + 80095e2: f7f9 fab3 bl 8002b4c <HAL_GetTick> + 80095e6: 4607 mov r7, r0 + 80095e8: 68b3 ldr r3, [r6, #8] + 80095ea: 6862 ldr r2, [r4, #4] + 80095ec: f003 030c and.w r3, r3, #12 + 80095f0: ebb3 0f82 cmp.w r3, r2, lsl #2 + 80095f4: d0d4 beq.n 80095a0 <HAL_RCC_ClockConfig+0x10c> + 80095f6: f7f9 faa9 bl 8002b4c <HAL_GetTick> + 80095fa: 1bc0 subs r0, r0, r7 + 80095fc: 4540 cmp r0, r8 + 80095fe: d9f3 bls.n 80095e8 <HAL_RCC_ClockConfig+0x154> + 8009600: e77f b.n 8009502 <HAL_RCC_ClockConfig+0x6e> + 8009602: 2a03 cmp r2, #3 + 8009604: d102 bne.n 800960c <HAL_RCC_ClockConfig+0x178> + 8009606: f7ff fbbc bl 8008d82 <LL_RCC_PLL_IsReady> + 800960a: e7de b.n 80095ca <HAL_RCC_ClockConfig+0x136> + 800960c: b912 cbnz r2, 8009614 <HAL_RCC_ClockConfig+0x180> + 800960e: f7ff fba9 bl 8008d64 <LL_RCC_MSI_IsReady> + 8009612: e7da b.n 80095ca <HAL_RCC_ClockConfig+0x136> + 8009614: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009618: 681b ldr r3, [r3, #0] + 800961a: 055b lsls r3, r3, #21 + 800961c: d4d8 bmi.n 80095d0 <HAL_RCC_ClockConfig+0x13c> + 800961e: e73e b.n 800949e <HAL_RCC_ClockConfig+0xa> + 8009620: 6823 ldr r3, [r4, #0] + 8009622: f023 0307 bic.w r3, r3, #7 + 8009626: 432b orrs r3, r5 + 8009628: 6023 str r3, [r4, #0] + 800962a: f7f9 fa8f bl 8002b4c <HAL_GetTick> + 800962e: 4606 mov r6, r0 + 8009630: 6823 ldr r3, [r4, #0] + 8009632: f003 0307 and.w r3, r3, #7 + 8009636: 42ab cmp r3, r5 + 8009638: d0b8 beq.n 80095ac <HAL_RCC_ClockConfig+0x118> + 800963a: f7f9 fa87 bl 8002b4c <HAL_GetTick> + 800963e: 1b80 subs r0, r0, r6 + 8009640: 2802 cmp r0, #2 + 8009642: d9f5 bls.n 8009630 <HAL_RCC_ClockConfig+0x19c> + 8009644: e75d b.n 8009502 <HAL_RCC_ClockConfig+0x6e> + 8009646: bf00 nop + 8009648: 58004000 .word 0x58004000 + 800964c: 20000828 .word 0x20000828 + 8009650: 2000082c .word 0x2000082c + +08009654 <HAL_RCC_GetPCLK1Freq>: + 8009654: b508 push {r3, lr} + 8009656: f7ff fc73 bl 8008f40 <HAL_RCC_GetHCLKFreq> + 800965a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800965e: 4a04 ldr r2, [pc, #16] ; (8009670 <HAL_RCC_GetPCLK1Freq+0x1c>) + 8009660: 689b ldr r3, [r3, #8] + 8009662: f3c3 2302 ubfx r3, r3, #8, #3 + 8009666: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 800966a: 40d8 lsrs r0, r3 + 800966c: bd08 pop {r3, pc} + 800966e: bf00 nop + 8009670: 08014fe4 .word 0x08014fe4 + +08009674 <HAL_RCC_GetPCLK2Freq>: + 8009674: b508 push {r3, lr} + 8009676: f7ff fc63 bl 8008f40 <HAL_RCC_GetHCLKFreq> + 800967a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800967e: 4a04 ldr r2, [pc, #16] ; (8009690 <HAL_RCC_GetPCLK2Freq+0x1c>) + 8009680: 689b ldr r3, [r3, #8] + 8009682: f3c3 23c2 ubfx r3, r3, #11, #3 + 8009686: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 800968a: 40d8 lsrs r0, r3 + 800968c: bd08 pop {r3, pc} + 800968e: bf00 nop + 8009690: 08014fe4 .word 0x08014fe4 + +08009694 <LL_RCC_LSE_IsReady>: + 8009694: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009698: f8d3 0090 ldr.w r0, [r3, #144] ; 0x90 + 800969c: f3c0 0040 ubfx r0, r0, #1, #1 + 80096a0: 4770 bx lr + +080096a2 <LL_RCC_SetI2CClockSource>: + 80096a2: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80096a6: 0902 lsrs r2, r0, #4 + 80096a8: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 80096ac: f402 227f and.w r2, r2, #1044480 ; 0xff000 + 80096b0: 0100 lsls r0, r0, #4 + 80096b2: ea23 0302 bic.w r3, r3, r2 + 80096b6: f400 207f and.w r0, r0, #1044480 ; 0xff000 + 80096ba: 4303 orrs r3, r0 + 80096bc: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + 80096c0: 4770 bx lr + +080096c2 <LL_RCC_SetLPTIMClockSource>: + 80096c2: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 80096c6: 0c02 lsrs r2, r0, #16 + 80096c8: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 80096cc: 0412 lsls r2, r2, #16 + 80096ce: ea23 0302 bic.w r3, r3, r2 + 80096d2: ea43 4000 orr.w r0, r3, r0, lsl #16 + 80096d6: f8c1 0088 str.w r0, [r1, #136] ; 0x88 + 80096da: 4770 bx lr + +080096dc <HAL_RCCEx_PeriphCLKConfig>: + 80096dc: b570 push {r4, r5, r6, lr} + 80096de: 6806 ldr r6, [r0, #0] + 80096e0: f416 3680 ands.w r6, r6, #65536 ; 0x10000 + 80096e4: 4604 mov r4, r0 + 80096e6: d038 beq.n 800975a <HAL_RCCEx_PeriphCLKConfig+0x7e> + 80096e8: f7ff fac2 bl 8008c70 <HAL_PWR_EnableBkUpAccess> + 80096ec: f7f9 fa2e bl 8002b4c <HAL_GetTick> + 80096f0: 4e61 ldr r6, [pc, #388] ; (8009878 <HAL_RCCEx_PeriphCLKConfig+0x19c>) + 80096f2: 4605 mov r5, r0 + 80096f4: 6833 ldr r3, [r6, #0] + 80096f6: 05db lsls r3, r3, #23 + 80096f8: d529 bpl.n 800974e <HAL_RCCEx_PeriphCLKConfig+0x72> + 80096fa: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80096fe: 6b61 ldr r1, [r4, #52] ; 0x34 + 8009700: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 8009704: f402 7240 and.w r2, r2, #768 ; 0x300 + 8009708: 4291 cmp r1, r2 + 800970a: d014 beq.n 8009736 <HAL_RCCEx_PeriphCLKConfig+0x5a> + 800970c: f8d3 1090 ldr.w r1, [r3, #144] ; 0x90 + 8009710: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 8009714: f442 3280 orr.w r2, r2, #65536 ; 0x10000 + 8009718: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 800971c: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 8009720: f421 7040 bic.w r0, r1, #768 ; 0x300 + 8009724: f422 3280 bic.w r2, r2, #65536 ; 0x10000 + 8009728: 078d lsls r5, r1, #30 + 800972a: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 800972e: f8c3 0090 str.w r0, [r3, #144] ; 0x90 + 8009732: f100 8090 bmi.w 8009856 <HAL_RCCEx_PeriphCLKConfig+0x17a> + 8009736: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800973a: 6b61 ldr r1, [r4, #52] ; 0x34 + 800973c: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8009740: f423 7340 bic.w r3, r3, #768 ; 0x300 + 8009744: 430b orrs r3, r1 + 8009746: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 800974a: 2600 movs r6, #0 + 800974c: e005 b.n 800975a <HAL_RCCEx_PeriphCLKConfig+0x7e> + 800974e: f7f9 f9fd bl 8002b4c <HAL_GetTick> + 8009752: 1b40 subs r0, r0, r5 + 8009754: 2802 cmp r0, #2 + 8009756: d9cd bls.n 80096f4 <HAL_RCCEx_PeriphCLKConfig+0x18> + 8009758: 2603 movs r6, #3 + 800975a: 6825 ldr r5, [r4, #0] + 800975c: 07e8 lsls r0, r5, #31 + 800975e: d50a bpl.n 8009776 <HAL_RCCEx_PeriphCLKConfig+0x9a> + 8009760: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8009764: 6862 ldr r2, [r4, #4] + 8009766: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 800976a: ea23 4312 bic.w r3, r3, r2, lsr #16 + 800976e: b292 uxth r2, r2 + 8009770: 4313 orrs r3, r2 + 8009772: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + 8009776: 07a9 lsls r1, r5, #30 + 8009778: d50a bpl.n 8009790 <HAL_RCCEx_PeriphCLKConfig+0xb4> + 800977a: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800977e: 68a2 ldr r2, [r4, #8] + 8009780: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 8009784: ea23 4312 bic.w r3, r3, r2, lsr #16 + 8009788: b292 uxth r2, r2 + 800978a: 4313 orrs r3, r2 + 800978c: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + 8009790: 06aa lsls r2, r5, #26 + 8009792: d509 bpl.n 80097a8 <HAL_RCCEx_PeriphCLKConfig+0xcc> + 8009794: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009798: 6921 ldr r1, [r4, #16] + 800979a: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88 + 800979e: f423 6340 bic.w r3, r3, #3072 ; 0xc00 + 80097a2: 430b orrs r3, r1 + 80097a4: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 80097a8: 05ab lsls r3, r5, #22 + 80097aa: d502 bpl.n 80097b2 <HAL_RCCEx_PeriphCLKConfig+0xd6> + 80097ac: 6a20 ldr r0, [r4, #32] + 80097ae: f7ff ff88 bl 80096c2 <LL_RCC_SetLPTIMClockSource> + 80097b2: 0568 lsls r0, r5, #21 + 80097b4: d502 bpl.n 80097bc <HAL_RCCEx_PeriphCLKConfig+0xe0> + 80097b6: 6a60 ldr r0, [r4, #36] ; 0x24 + 80097b8: f7ff ff83 bl 80096c2 <LL_RCC_SetLPTIMClockSource> + 80097bc: 0529 lsls r1, r5, #20 + 80097be: d502 bpl.n 80097c6 <HAL_RCCEx_PeriphCLKConfig+0xea> + 80097c0: 6aa0 ldr r0, [r4, #40] ; 0x28 + 80097c2: f7ff ff7e bl 80096c2 <LL_RCC_SetLPTIMClockSource> + 80097c6: 066a lsls r2, r5, #25 + 80097c8: d502 bpl.n 80097d0 <HAL_RCCEx_PeriphCLKConfig+0xf4> + 80097ca: 6960 ldr r0, [r4, #20] + 80097cc: f7ff ff69 bl 80096a2 <LL_RCC_SetI2CClockSource> + 80097d0: 062b lsls r3, r5, #24 + 80097d2: d502 bpl.n 80097da <HAL_RCCEx_PeriphCLKConfig+0xfe> + 80097d4: 69a0 ldr r0, [r4, #24] + 80097d6: f7ff ff64 bl 80096a2 <LL_RCC_SetI2CClockSource> + 80097da: 05e8 lsls r0, r5, #23 + 80097dc: d502 bpl.n 80097e4 <HAL_RCCEx_PeriphCLKConfig+0x108> + 80097de: 69e0 ldr r0, [r4, #28] + 80097e0: f7ff ff5f bl 80096a2 <LL_RCC_SetI2CClockSource> + 80097e4: 06e9 lsls r1, r5, #27 + 80097e6: d510 bpl.n 800980a <HAL_RCCEx_PeriphCLKConfig+0x12e> + 80097e8: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80097ec: 68e1 ldr r1, [r4, #12] + 80097ee: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88 + 80097f2: f423 7340 bic.w r3, r3, #768 ; 0x300 + 80097f6: 430b orrs r3, r1 + 80097f8: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 80097fc: f5b1 7f80 cmp.w r1, #256 ; 0x100 + 8009800: bf02 ittt eq + 8009802: 68d3 ldreq r3, [r2, #12] + 8009804: f043 7380 orreq.w r3, r3, #16777216 ; 0x1000000 + 8009808: 60d3 streq r3, [r2, #12] + 800980a: 042a lsls r2, r5, #16 + 800980c: d50e bpl.n 800982c <HAL_RCCEx_PeriphCLKConfig+0x150> + 800980e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009812: 6b21 ldr r1, [r4, #48] ; 0x30 + 8009814: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88 + 8009818: f023 4340 bic.w r3, r3, #3221225472 ; 0xc0000000 + 800981c: 430b orrs r3, r1 + 800981e: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 8009822: b919 cbnz r1, 800982c <HAL_RCCEx_PeriphCLKConfig+0x150> + 8009824: 68d3 ldr r3, [r2, #12] + 8009826: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 800982a: 60d3 str r3, [r2, #12] + 800982c: 046b lsls r3, r5, #17 + 800982e: d510 bpl.n 8009852 <HAL_RCCEx_PeriphCLKConfig+0x176> + 8009830: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009834: 6ae1 ldr r1, [r4, #44] ; 0x2c + 8009836: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88 + 800983a: f023 5340 bic.w r3, r3, #805306368 ; 0x30000000 + 800983e: 430b orrs r3, r1 + 8009840: f1b1 5f00 cmp.w r1, #536870912 ; 0x20000000 + 8009844: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 8009848: d103 bne.n 8009852 <HAL_RCCEx_PeriphCLKConfig+0x176> + 800984a: 68d3 ldr r3, [r2, #12] + 800984c: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8009850: 60d3 str r3, [r2, #12] + 8009852: 4630 mov r0, r6 + 8009854: bd70 pop {r4, r5, r6, pc} + 8009856: f7f9 f979 bl 8002b4c <HAL_GetTick> + 800985a: f241 3688 movw r6, #5000 ; 0x1388 + 800985e: 4605 mov r5, r0 + 8009860: f7ff ff18 bl 8009694 <LL_RCC_LSE_IsReady> + 8009864: 2801 cmp r0, #1 + 8009866: f43f af66 beq.w 8009736 <HAL_RCCEx_PeriphCLKConfig+0x5a> + 800986a: f7f9 f96f bl 8002b4c <HAL_GetTick> + 800986e: 1b40 subs r0, r0, r5 + 8009870: 42b0 cmp r0, r6 + 8009872: d9f5 bls.n 8009860 <HAL_RCCEx_PeriphCLKConfig+0x184> + 8009874: e770 b.n 8009758 <HAL_RCCEx_PeriphCLKConfig+0x7c> + 8009876: bf00 nop + 8009878: 58000400 .word 0x58000400 + +0800987c <HAL_RTC_DeactivateAlarm>: + 800987c: b530 push {r4, r5, lr} + 800987e: f890 302c ldrb.w r3, [r0, #44] ; 0x2c + 8009882: 2b01 cmp r3, #1 + 8009884: 4602 mov r2, r0 + 8009886: f04f 0002 mov.w r0, #2 + 800988a: d022 beq.n 80098d2 <HAL_RTC_DeactivateAlarm+0x56> + 800988c: 4b17 ldr r3, [pc, #92] ; (80098ec <HAL_RTC_DeactivateAlarm+0x70>) + 800988e: f882 002d strb.w r0, [r2, #45] ; 0x2d + 8009892: 24ca movs r4, #202 ; 0xca + 8009894: 2501 movs r5, #1 + 8009896: f882 502c strb.w r5, [r2, #44] ; 0x2c + 800989a: 625c str r4, [r3, #36] ; 0x24 + 800989c: 2453 movs r4, #83 ; 0x53 + 800989e: 625c str r4, [r3, #36] ; 0x24 + 80098a0: f5b1 7f80 cmp.w r1, #256 ; 0x100 + 80098a4: 6b14 ldr r4, [r2, #48] ; 0x30 + 80098a6: 6999 ldr r1, [r3, #24] + 80098a8: d114 bne.n 80098d4 <HAL_RTC_DeactivateAlarm+0x58> + 80098aa: f421 5188 bic.w r1, r1, #4352 ; 0x1100 + 80098ae: 6199 str r1, [r3, #24] + 80098b0: 6c59 ldr r1, [r3, #68] ; 0x44 + 80098b2: f024 0401 bic.w r4, r4, #1 + 80098b6: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 80098ba: 6459 str r1, [r3, #68] ; 0x44 + 80098bc: 6314 str r4, [r2, #48] ; 0x30 + 80098be: 65dd str r5, [r3, #92] ; 0x5c + 80098c0: 4b0a ldr r3, [pc, #40] ; (80098ec <HAL_RTC_DeactivateAlarm+0x70>) + 80098c2: 21ff movs r1, #255 ; 0xff + 80098c4: 6259 str r1, [r3, #36] ; 0x24 + 80098c6: 2000 movs r0, #0 + 80098c8: 2301 movs r3, #1 + 80098ca: f882 302d strb.w r3, [r2, #45] ; 0x2d + 80098ce: f882 002c strb.w r0, [r2, #44] ; 0x2c + 80098d2: bd30 pop {r4, r5, pc} + 80098d4: f421 5108 bic.w r1, r1, #8704 ; 0x2200 + 80098d8: 6199 str r1, [r3, #24] + 80098da: 6cd9 ldr r1, [r3, #76] ; 0x4c + 80098dc: f024 0402 bic.w r4, r4, #2 + 80098e0: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 80098e4: 64d9 str r1, [r3, #76] ; 0x4c + 80098e6: 6314 str r4, [r2, #48] ; 0x30 + 80098e8: 65d8 str r0, [r3, #92] ; 0x5c + 80098ea: e7e9 b.n 80098c0 <HAL_RTC_DeactivateAlarm+0x44> + 80098ec: 40002800 .word 0x40002800 + +080098f0 <HAL_RTC_AlarmIRQHandler>: + 80098f0: b570 push {r4, r5, r6, lr} + 80098f2: 4e0b ldr r6, [pc, #44] ; (8009920 <HAL_RTC_AlarmIRQHandler+0x30>) + 80098f4: 6b03 ldr r3, [r0, #48] ; 0x30 + 80098f6: 6d75 ldr r5, [r6, #84] ; 0x54 + 80098f8: 401d ands r5, r3 + 80098fa: 07ea lsls r2, r5, #31 + 80098fc: 4604 mov r4, r0 + 80098fe: d503 bpl.n 8009908 <HAL_RTC_AlarmIRQHandler+0x18> + 8009900: 2301 movs r3, #1 + 8009902: 65f3 str r3, [r6, #92] ; 0x5c + 8009904: f7f9 fa9d bl 8002e42 <HAL_RTC_AlarmAEventCallback> + 8009908: 07ab lsls r3, r5, #30 + 800990a: d504 bpl.n 8009916 <HAL_RTC_AlarmIRQHandler+0x26> + 800990c: 2302 movs r3, #2 + 800990e: 65f3 str r3, [r6, #92] ; 0x5c + 8009910: 4620 mov r0, r4 + 8009912: f000 f9cb bl 8009cac <HAL_RTCEx_AlarmBEventCallback> + 8009916: 2301 movs r3, #1 + 8009918: f884 302d strb.w r3, [r4, #45] ; 0x2d + 800991c: bd70 pop {r4, r5, r6, pc} + 800991e: bf00 nop + 8009920: 40002800 .word 0x40002800 + +08009924 <HAL_RTC_WaitForSynchro>: + 8009924: b538 push {r3, r4, r5, lr} + 8009926: 4c0a ldr r4, [pc, #40] ; (8009950 <HAL_RTC_WaitForSynchro+0x2c>) + 8009928: 68e3 ldr r3, [r4, #12] + 800992a: f023 0320 bic.w r3, r3, #32 + 800992e: 60e3 str r3, [r4, #12] + 8009930: f7f9 f90c bl 8002b4c <HAL_GetTick> + 8009934: 4605 mov r5, r0 + 8009936: 68e3 ldr r3, [r4, #12] + 8009938: 069b lsls r3, r3, #26 + 800993a: d501 bpl.n 8009940 <HAL_RTC_WaitForSynchro+0x1c> + 800993c: 2000 movs r0, #0 + 800993e: bd38 pop {r3, r4, r5, pc} + 8009940: f7f9 f904 bl 8002b4c <HAL_GetTick> + 8009944: 1b40 subs r0, r0, r5 + 8009946: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8 + 800994a: d9f4 bls.n 8009936 <HAL_RTC_WaitForSynchro+0x12> + 800994c: 2003 movs r0, #3 + 800994e: e7f6 b.n 800993e <HAL_RTC_WaitForSynchro+0x1a> + 8009950: 40002800 .word 0x40002800 + +08009954 <RTC_EnterInitMode>: + 8009954: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8009958: 4d11 ldr r5, [pc, #68] ; (80099a0 <RTC_EnterInitMode+0x4c>) + 800995a: 68ec ldr r4, [r5, #12] + 800995c: f014 0440 ands.w r4, r4, #64 ; 0x40 + 8009960: 4607 mov r7, r0 + 8009962: d11a bne.n 800999a <RTC_EnterInitMode+0x46> + 8009964: 68eb ldr r3, [r5, #12] + 8009966: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800996a: 60eb str r3, [r5, #12] + 800996c: f7f9 f8ee bl 8002b4c <HAL_GetTick> + 8009970: f04f 0803 mov.w r8, #3 + 8009974: 4606 mov r6, r0 + 8009976: 68eb ldr r3, [r5, #12] + 8009978: 065b lsls r3, r3, #25 + 800997a: d401 bmi.n 8009980 <RTC_EnterInitMode+0x2c> + 800997c: 2c03 cmp r4, #3 + 800997e: d102 bne.n 8009986 <RTC_EnterInitMode+0x32> + 8009980: 4620 mov r0, r4 + 8009982: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8009986: f7f9 f8e1 bl 8002b4c <HAL_GetTick> + 800998a: 1b80 subs r0, r0, r6 + 800998c: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8 + 8009990: bf84 itt hi + 8009992: f887 802d strbhi.w r8, [r7, #45] ; 0x2d + 8009996: 2403 movhi r4, #3 + 8009998: e7ed b.n 8009976 <RTC_EnterInitMode+0x22> + 800999a: 2400 movs r4, #0 + 800999c: e7f0 b.n 8009980 <RTC_EnterInitMode+0x2c> + 800999e: bf00 nop + 80099a0: 40002800 .word 0x40002800 + +080099a4 <RTC_ExitInitMode>: + 80099a4: b538 push {r3, r4, r5, lr} + 80099a6: 4c0f ldr r4, [pc, #60] ; (80099e4 <RTC_ExitInitMode+0x40>) + 80099a8: 68e3 ldr r3, [r4, #12] + 80099aa: f023 0380 bic.w r3, r3, #128 ; 0x80 + 80099ae: 60e3 str r3, [r4, #12] + 80099b0: 69a3 ldr r3, [r4, #24] + 80099b2: 069b lsls r3, r3, #26 + 80099b4: 4605 mov r5, r0 + 80099b6: d406 bmi.n 80099c6 <RTC_ExitInitMode+0x22> + 80099b8: f7ff ffb4 bl 8009924 <HAL_RTC_WaitForSynchro> + 80099bc: b110 cbz r0, 80099c4 <RTC_ExitInitMode+0x20> + 80099be: 2003 movs r0, #3 + 80099c0: f885 002d strb.w r0, [r5, #45] ; 0x2d + 80099c4: bd38 pop {r3, r4, r5, pc} + 80099c6: 69a3 ldr r3, [r4, #24] + 80099c8: f023 0320 bic.w r3, r3, #32 + 80099cc: 61a3 str r3, [r4, #24] + 80099ce: f7ff ffa9 bl 8009924 <HAL_RTC_WaitForSynchro> + 80099d2: b110 cbz r0, 80099da <RTC_ExitInitMode+0x36> + 80099d4: 2003 movs r0, #3 + 80099d6: f885 002d strb.w r0, [r5, #45] ; 0x2d + 80099da: 69a3 ldr r3, [r4, #24] + 80099dc: f043 0320 orr.w r3, r3, #32 + 80099e0: 61a3 str r3, [r4, #24] + 80099e2: e7ef b.n 80099c4 <RTC_ExitInitMode+0x20> + 80099e4: 40002800 .word 0x40002800 + +080099e8 <HAL_RTC_Init>: + 80099e8: b538 push {r3, r4, r5, lr} + 80099ea: 4604 mov r4, r0 + 80099ec: 2800 cmp r0, #0 + 80099ee: d04b beq.n 8009a88 <HAL_RTC_Init+0xa0> + 80099f0: f890 302d ldrb.w r3, [r0, #45] ; 0x2d + 80099f4: f003 02ff and.w r2, r3, #255 ; 0xff + 80099f8: b91b cbnz r3, 8009a02 <HAL_RTC_Init+0x1a> + 80099fa: f880 202c strb.w r2, [r0, #44] ; 0x2c + 80099fe: f7f8 fe8d bl 800271c <HAL_RTC_MspInit> + 8009a02: 2302 movs r3, #2 + 8009a04: 4d21 ldr r5, [pc, #132] ; (8009a8c <HAL_RTC_Init+0xa4>) + 8009a06: f884 302d strb.w r3, [r4, #45] ; 0x2d + 8009a0a: 68eb ldr r3, [r5, #12] + 8009a0c: 06db lsls r3, r3, #27 + 8009a0e: d432 bmi.n 8009a76 <HAL_RTC_Init+0x8e> + 8009a10: 23ca movs r3, #202 ; 0xca + 8009a12: 626b str r3, [r5, #36] ; 0x24 + 8009a14: 2353 movs r3, #83 ; 0x53 + 8009a16: 626b str r3, [r5, #36] ; 0x24 + 8009a18: 4620 mov r0, r4 + 8009a1a: f7ff ff9b bl 8009954 <RTC_EnterInitMode> + 8009a1e: bb78 cbnz r0, 8009a80 <HAL_RTC_Init+0x98> + 8009a20: 69ab ldr r3, [r5, #24] + 8009a22: f023 638e bic.w r3, r3, #74448896 ; 0x4700000 + 8009a26: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8009a2a: 61ab str r3, [r5, #24] + 8009a2c: 6921 ldr r1, [r4, #16] + 8009a2e: 6863 ldr r3, [r4, #4] + 8009a30: 69aa ldr r2, [r5, #24] + 8009a32: 430b orrs r3, r1 + 8009a34: 4313 orrs r3, r2 + 8009a36: 69a2 ldr r2, [r4, #24] + 8009a38: 4313 orrs r3, r2 + 8009a3a: 61ab str r3, [r5, #24] + 8009a3c: e9d4 2302 ldrd r2, r3, [r4, #8] + 8009a40: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8009a44: 612b str r3, [r5, #16] + 8009a46: e9d4 3109 ldrd r3, r1, [r4, #36] ; 0x24 + 8009a4a: 68ea ldr r2, [r5, #12] + 8009a4c: 430b orrs r3, r1 + 8009a4e: f422 52f8 bic.w r2, r2, #7936 ; 0x1f00 + 8009a52: 4313 orrs r3, r2 + 8009a54: 60eb str r3, [r5, #12] + 8009a56: 4620 mov r0, r4 + 8009a58: f7ff ffa4 bl 80099a4 <RTC_ExitInitMode> + 8009a5c: b980 cbnz r0, 8009a80 <HAL_RTC_Init+0x98> + 8009a5e: e9d4 1307 ldrd r1, r3, [r4, #28] + 8009a62: 69aa ldr r2, [r5, #24] + 8009a64: 430b orrs r3, r1 + 8009a66: f022 4260 bic.w r2, r2, #3758096384 ; 0xe0000000 + 8009a6a: 4313 orrs r3, r2 + 8009a6c: 6962 ldr r2, [r4, #20] + 8009a6e: 4313 orrs r3, r2 + 8009a70: 61ab str r3, [r5, #24] + 8009a72: 23ff movs r3, #255 ; 0xff + 8009a74: 626b str r3, [r5, #36] ; 0x24 + 8009a76: 2301 movs r3, #1 + 8009a78: f884 302d strb.w r3, [r4, #45] ; 0x2d + 8009a7c: 2000 movs r0, #0 + 8009a7e: e002 b.n 8009a86 <HAL_RTC_Init+0x9e> + 8009a80: 4b02 ldr r3, [pc, #8] ; (8009a8c <HAL_RTC_Init+0xa4>) + 8009a82: 22ff movs r2, #255 ; 0xff + 8009a84: 625a str r2, [r3, #36] ; 0x24 + 8009a86: bd38 pop {r3, r4, r5, pc} + 8009a88: 2001 movs r0, #1 + 8009a8a: e7fc b.n 8009a86 <HAL_RTC_Init+0x9e> + 8009a8c: 40002800 .word 0x40002800 + +08009a90 <RTC_ByteToBcd2>: + 8009a90: 2300 movs r3, #0 + 8009a92: 2809 cmp r0, #9 + 8009a94: d803 bhi.n 8009a9e <RTC_ByteToBcd2+0xe> + 8009a96: ea40 1003 orr.w r0, r0, r3, lsl #4 + 8009a9a: b2c0 uxtb r0, r0 + 8009a9c: 4770 bx lr + 8009a9e: 380a subs r0, #10 + 8009aa0: 3301 adds r3, #1 + 8009aa2: b2c0 uxtb r0, r0 + 8009aa4: e7f5 b.n 8009a92 <RTC_ByteToBcd2+0x2> + ... + +08009aa8 <HAL_RTC_SetAlarm_IT>: + 8009aa8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8009aac: f890 302c ldrb.w r3, [r0, #44] ; 0x2c + 8009ab0: 2b01 cmp r3, #1 + 8009ab2: 4605 mov r5, r0 + 8009ab4: f04f 0002 mov.w r0, #2 + 8009ab8: d069 beq.n 8009b8e <HAL_RTC_SetAlarm_IT+0xe6> + 8009aba: 2301 movs r3, #1 + 8009abc: f885 302c strb.w r3, [r5, #44] ; 0x2c + 8009ac0: 4b4e ldr r3, [pc, #312] ; (8009bfc <HAL_RTC_SetAlarm_IT+0x154>) + 8009ac2: f885 002d strb.w r0, [r5, #45] ; 0x2d + 8009ac6: 68de ldr r6, [r3, #12] + 8009ac8: f406 7640 and.w r6, r6, #768 ; 0x300 + 8009acc: f5b6 7f80 cmp.w r6, #256 ; 0x100 + 8009ad0: d078 beq.n 8009bc4 <HAL_RTC_SetAlarm_IT+0x11c> + 8009ad2: 694c ldr r4, [r1, #20] + 8009ad4: 7808 ldrb r0, [r1, #0] + 8009ad6: f891 9001 ldrb.w r9, [r1, #1] + 8009ada: f891 a002 ldrb.w sl, [r1, #2] + 8009ade: f891 7024 ldrb.w r7, [r1, #36] ; 0x24 + 8009ae2: 2a00 cmp r2, #0 + 8009ae4: d155 bne.n 8009b92 <HAL_RTC_SetAlarm_IT+0xea> + 8009ae6: 699b ldr r3, [r3, #24] + 8009ae8: f013 0340 ands.w r3, r3, #64 ; 0x40 + 8009aec: bf08 it eq + 8009aee: 70cb strbeq r3, [r1, #3] + 8009af0: f7ff ffce bl 8009a90 <RTC_ByteToBcd2> + 8009af4: 4680 mov r8, r0 + 8009af6: 4648 mov r0, r9 + 8009af8: f7ff ffca bl 8009a90 <RTC_ByteToBcd2> + 8009afc: 4602 mov r2, r0 + 8009afe: 4650 mov r0, sl + 8009b00: f7ff ffc6 bl 8009a90 <RTC_ByteToBcd2> + 8009b04: 4681 mov r9, r0 + 8009b06: 4638 mov r0, r7 + 8009b08: f7ff ffc2 bl 8009a90 <RTC_ByteToBcd2> + 8009b0c: 6a0b ldr r3, [r1, #32] + 8009b0e: 78cf ldrb r7, [r1, #3] + 8009b10: 4323 orrs r3, r4 + 8009b12: ea43 5387 orr.w r3, r3, r7, lsl #22 + 8009b16: ea43 0309 orr.w r3, r3, r9 + 8009b1a: ea43 4308 orr.w r3, r3, r8, lsl #16 + 8009b1e: ea43 2302 orr.w r3, r3, r2, lsl #8 + 8009b22: ea43 6300 orr.w r3, r3, r0, lsl #24 + 8009b26: 4a35 ldr r2, [pc, #212] ; (8009bfc <HAL_RTC_SetAlarm_IT+0x154>) + 8009b28: 20ca movs r0, #202 ; 0xca + 8009b2a: 6250 str r0, [r2, #36] ; 0x24 + 8009b2c: 2053 movs r0, #83 ; 0x53 + 8009b2e: 6250 str r0, [r2, #36] ; 0x24 + 8009b30: 6a8c ldr r4, [r1, #40] ; 0x28 + 8009b32: 6988 ldr r0, [r1, #24] + 8009b34: f5b4 7f80 cmp.w r4, #256 ; 0x100 + 8009b38: 6994 ldr r4, [r2, #24] + 8009b3a: d145 bne.n 8009bc8 <HAL_RTC_SetAlarm_IT+0x120> + 8009b3c: f424 5488 bic.w r4, r4, #4352 ; 0x1100 + 8009b40: 6194 str r4, [r2, #24] + 8009b42: 2401 movs r4, #1 + 8009b44: 65d4 str r4, [r2, #92] ; 0x5c + 8009b46: f5b6 7f80 cmp.w r6, #256 ; 0x100 + 8009b4a: bf09 itett eq + 8009b4c: 69cb ldreq r3, [r1, #28] + 8009b4e: 6413 strne r3, [r2, #64] ; 0x40 + 8009b50: 4303 orreq r3, r0 + 8009b52: 6453 streq r3, [r2, #68] ; 0x44 + 8009b54: bf18 it ne + 8009b56: 6450 strne r0, [r2, #68] ; 0x44 + 8009b58: 4b28 ldr r3, [pc, #160] ; (8009bfc <HAL_RTC_SetAlarm_IT+0x154>) + 8009b5a: 684a ldr r2, [r1, #4] + 8009b5c: 671a str r2, [r3, #112] ; 0x70 + 8009b5e: 6b2a ldr r2, [r5, #48] ; 0x30 + 8009b60: f042 0201 orr.w r2, r2, #1 + 8009b64: 632a str r2, [r5, #48] ; 0x30 + 8009b66: 699a ldr r2, [r3, #24] + 8009b68: f442 5288 orr.w r2, r2, #4352 ; 0x1100 + 8009b6c: 619a str r2, [r3, #24] + 8009b6e: 4a24 ldr r2, [pc, #144] ; (8009c00 <HAL_RTC_SetAlarm_IT+0x158>) + 8009b70: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 + 8009b74: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8009b78: f8c2 3080 str.w r3, [r2, #128] ; 0x80 + 8009b7c: 4b1f ldr r3, [pc, #124] ; (8009bfc <HAL_RTC_SetAlarm_IT+0x154>) + 8009b7e: 22ff movs r2, #255 ; 0xff + 8009b80: 625a str r2, [r3, #36] ; 0x24 + 8009b82: 2000 movs r0, #0 + 8009b84: 2301 movs r3, #1 + 8009b86: f885 302d strb.w r3, [r5, #45] ; 0x2d + 8009b8a: f885 002c strb.w r0, [r5, #44] ; 0x2c + 8009b8e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8009b92: f1b4 3f80 cmp.w r4, #2155905152 ; 0x80808080 + 8009b96: d007 beq.n 8009ba8 <HAL_RTC_SetAlarm_IT+0x100> + 8009b98: f5b4 0f00 cmp.w r4, #8388608 ; 0x800000 + 8009b9c: d004 beq.n 8009ba8 <HAL_RTC_SetAlarm_IT+0x100> + 8009b9e: 699b ldr r3, [r3, #24] + 8009ba0: f013 0340 ands.w r3, r3, #64 ; 0x40 + 8009ba4: bf08 it eq + 8009ba6: 70cb strbeq r3, [r1, #3] + 8009ba8: 6a0b ldr r3, [r1, #32] + 8009baa: 78ca ldrb r2, [r1, #3] + 8009bac: 431c orrs r4, r3 + 8009bae: ea44 040a orr.w r4, r4, sl + 8009bb2: ea44 4300 orr.w r3, r4, r0, lsl #16 + 8009bb6: ea43 2309 orr.w r3, r3, r9, lsl #8 + 8009bba: ea43 5382 orr.w r3, r3, r2, lsl #22 + 8009bbe: ea43 6307 orr.w r3, r3, r7, lsl #24 + 8009bc2: e7b0 b.n 8009b26 <HAL_RTC_SetAlarm_IT+0x7e> + 8009bc4: 2300 movs r3, #0 + 8009bc6: e7ae b.n 8009b26 <HAL_RTC_SetAlarm_IT+0x7e> + 8009bc8: f424 5408 bic.w r4, r4, #8704 ; 0x2200 + 8009bcc: 6194 str r4, [r2, #24] + 8009bce: 2402 movs r4, #2 + 8009bd0: 65d4 str r4, [r2, #92] ; 0x5c + 8009bd2: f5b6 7f80 cmp.w r6, #256 ; 0x100 + 8009bd6: bf09 itett eq + 8009bd8: 69cb ldreq r3, [r1, #28] + 8009bda: 6493 strne r3, [r2, #72] ; 0x48 + 8009bdc: 4303 orreq r3, r0 + 8009bde: 64d3 streq r3, [r2, #76] ; 0x4c + 8009be0: bf18 it ne + 8009be2: 64d0 strne r0, [r2, #76] ; 0x4c + 8009be4: 4b05 ldr r3, [pc, #20] ; (8009bfc <HAL_RTC_SetAlarm_IT+0x154>) + 8009be6: 684a ldr r2, [r1, #4] + 8009be8: 675a str r2, [r3, #116] ; 0x74 + 8009bea: 6b2a ldr r2, [r5, #48] ; 0x30 + 8009bec: f042 0202 orr.w r2, r2, #2 + 8009bf0: 632a str r2, [r5, #48] ; 0x30 + 8009bf2: 699a ldr r2, [r3, #24] + 8009bf4: f442 5208 orr.w r2, r2, #8704 ; 0x2200 + 8009bf8: e7b8 b.n 8009b6c <HAL_RTC_SetAlarm_IT+0xc4> + 8009bfa: bf00 nop + 8009bfc: 40002800 .word 0x40002800 + 8009c00: 58000800 .word 0x58000800 + +08009c04 <HAL_RTCEx_EnableBypassShadow>: + 8009c04: f890 202c ldrb.w r2, [r0, #44] ; 0x2c + 8009c08: 2a01 cmp r2, #1 + 8009c0a: 4603 mov r3, r0 + 8009c0c: f04f 0002 mov.w r0, #2 + 8009c10: d012 beq.n 8009c38 <HAL_RTCEx_EnableBypassShadow+0x34> + 8009c12: 4a0a ldr r2, [pc, #40] ; (8009c3c <HAL_RTCEx_EnableBypassShadow+0x38>) + 8009c14: f883 002d strb.w r0, [r3, #45] ; 0x2d + 8009c18: 21ca movs r1, #202 ; 0xca + 8009c1a: 6251 str r1, [r2, #36] ; 0x24 + 8009c1c: 2153 movs r1, #83 ; 0x53 + 8009c1e: 6251 str r1, [r2, #36] ; 0x24 + 8009c20: 6991 ldr r1, [r2, #24] + 8009c22: f041 0120 orr.w r1, r1, #32 + 8009c26: 6191 str r1, [r2, #24] + 8009c28: 21ff movs r1, #255 ; 0xff + 8009c2a: 6251 str r1, [r2, #36] ; 0x24 + 8009c2c: 2000 movs r0, #0 + 8009c2e: 2201 movs r2, #1 + 8009c30: f883 202d strb.w r2, [r3, #45] ; 0x2d + 8009c34: f883 002c strb.w r0, [r3, #44] ; 0x2c + 8009c38: 4770 bx lr + 8009c3a: bf00 nop + 8009c3c: 40002800 .word 0x40002800 + +08009c40 <HAL_RTCEx_SetSSRU_IT>: + 8009c40: f890 202c ldrb.w r2, [r0, #44] ; 0x2c + 8009c44: 2a01 cmp r2, #1 + 8009c46: 4603 mov r3, r0 + 8009c48: f04f 0002 mov.w r0, #2 + 8009c4c: d019 beq.n 8009c82 <HAL_RTCEx_SetSSRU_IT+0x42> + 8009c4e: 4a0d ldr r2, [pc, #52] ; (8009c84 <HAL_RTCEx_SetSSRU_IT+0x44>) + 8009c50: f883 002d strb.w r0, [r3, #45] ; 0x2d + 8009c54: 21ca movs r1, #202 ; 0xca + 8009c56: 6251 str r1, [r2, #36] ; 0x24 + 8009c58: 2153 movs r1, #83 ; 0x53 + 8009c5a: 6251 str r1, [r2, #36] ; 0x24 + 8009c5c: 6991 ldr r1, [r2, #24] + 8009c5e: 480a ldr r0, [pc, #40] ; (8009c88 <HAL_RTCEx_SetSSRU_IT+0x48>) + 8009c60: f041 0180 orr.w r1, r1, #128 ; 0x80 + 8009c64: 6191 str r1, [r2, #24] + 8009c66: f8d0 1080 ldr.w r1, [r0, #128] ; 0x80 + 8009c6a: f441 2180 orr.w r1, r1, #262144 ; 0x40000 + 8009c6e: f8c0 1080 str.w r1, [r0, #128] ; 0x80 + 8009c72: 21ff movs r1, #255 ; 0xff + 8009c74: 6251 str r1, [r2, #36] ; 0x24 + 8009c76: 2000 movs r0, #0 + 8009c78: 2201 movs r2, #1 + 8009c7a: f883 202d strb.w r2, [r3, #45] ; 0x2d + 8009c7e: f883 002c strb.w r0, [r3, #44] ; 0x2c + 8009c82: 4770 bx lr + 8009c84: 40002800 .word 0x40002800 + 8009c88: 58000800 .word 0x58000800 + +08009c8c <HAL_RTCEx_SSRUIRQHandler>: + 8009c8c: 4b06 ldr r3, [pc, #24] ; (8009ca8 <HAL_RTCEx_SSRUIRQHandler+0x1c>) + 8009c8e: 6d5a ldr r2, [r3, #84] ; 0x54 + 8009c90: 0652 lsls r2, r2, #25 + 8009c92: b510 push {r4, lr} + 8009c94: 4604 mov r4, r0 + 8009c96: d503 bpl.n 8009ca0 <HAL_RTCEx_SSRUIRQHandler+0x14> + 8009c98: 2240 movs r2, #64 ; 0x40 + 8009c9a: 65da str r2, [r3, #92] ; 0x5c + 8009c9c: f7f9 f8d4 bl 8002e48 <HAL_RTCEx_SSRUEventCallback> + 8009ca0: 2301 movs r3, #1 + 8009ca2: f884 302d strb.w r3, [r4, #45] ; 0x2d + 8009ca6: bd10 pop {r4, pc} + 8009ca8: 40002800 .word 0x40002800 + +08009cac <HAL_RTCEx_AlarmBEventCallback>: + 8009cac: 4770 bx lr + +08009cae <HAL_RTCEx_BKUPWrite>: + 8009cae: 0089 lsls r1, r1, #2 + 8009cb0: f101 4180 add.w r1, r1, #1073741824 ; 0x40000000 + 8009cb4: f501 4131 add.w r1, r1, #45312 ; 0xb100 + 8009cb8: 600a str r2, [r1, #0] + 8009cba: 4770 bx lr + +08009cbc <HAL_RTCEx_BKUPRead>: + 8009cbc: 0089 lsls r1, r1, #2 + 8009cbe: f101 4180 add.w r1, r1, #1073741824 ; 0x40000000 + 8009cc2: f501 4131 add.w r1, r1, #45312 ; 0xb100 + 8009cc6: 6808 ldr r0, [r1, #0] + 8009cc8: 4770 bx lr + ... + +08009ccc <LL_PWR_UnselectSUBGHZSPI_NSS>: + 8009ccc: 4a03 ldr r2, [pc, #12] ; (8009cdc <LL_PWR_UnselectSUBGHZSPI_NSS+0x10>) + 8009cce: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8009cd2: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8009cd6: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8009cda: 4770 bx lr + 8009cdc: 58000400 .word 0x58000400 + +08009ce0 <LL_PWR_SelectSUBGHZSPI_NSS>: + 8009ce0: 4a03 ldr r2, [pc, #12] ; (8009cf0 <LL_PWR_SelectSUBGHZSPI_NSS+0x10>) + 8009ce2: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8009ce6: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8009cea: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8009cee: 4770 bx lr + 8009cf0: 58000400 .word 0x58000400 + +08009cf4 <SUBGHZSPI_Init>: + 8009cf4: 4b07 ldr r3, [pc, #28] ; (8009d14 <SUBGHZSPI_Init+0x20>) + 8009cf6: 681a ldr r2, [r3, #0] + 8009cf8: f022 0240 bic.w r2, r2, #64 ; 0x40 + 8009cfc: 601a str r2, [r3, #0] + 8009cfe: f440 7041 orr.w r0, r0, #772 ; 0x304 + 8009d02: f44f 52b8 mov.w r2, #5888 ; 0x1700 + 8009d06: 6018 str r0, [r3, #0] + 8009d08: 605a str r2, [r3, #4] + 8009d0a: 681a ldr r2, [r3, #0] + 8009d0c: f042 0240 orr.w r2, r2, #64 ; 0x40 + 8009d10: 601a str r2, [r3, #0] + 8009d12: 4770 bx lr + 8009d14: 58010000 .word 0x58010000 + +08009d18 <HAL_SUBGHZ_Init>: + 8009d18: b537 push {r0, r1, r2, r4, r5, lr} + 8009d1a: 4605 mov r5, r0 + 8009d1c: 2800 cmp r0, #0 + 8009d1e: d04e beq.n 8009dbe <HAL_SUBGHZ_Init+0xa6> + 8009d20: 7983 ldrb r3, [r0, #6] + 8009d22: f003 04ff and.w r4, r3, #255 ; 0xff + 8009d26: b16b cbz r3, 8009d44 <HAL_SUBGHZ_Init+0x2c> + 8009d28: 2c03 cmp r4, #3 + 8009d2a: d00b beq.n 8009d44 <HAL_SUBGHZ_Init+0x2c> + 8009d2c: 4b25 ldr r3, [pc, #148] ; (8009dc4 <HAL_SUBGHZ_Init+0xac>) + 8009d2e: f44f 6200 mov.w r2, #2048 ; 0x800 + 8009d32: 619a str r2, [r3, #24] + 8009d34: 6828 ldr r0, [r5, #0] + 8009d36: f7ff ffdd bl 8009cf4 <SUBGHZSPI_Init> + 8009d3a: 2400 movs r4, #0 + 8009d3c: 2301 movs r3, #1 + 8009d3e: 712b strb r3, [r5, #4] + 8009d40: 60ac str r4, [r5, #8] + 8009d42: e02f b.n 8009da4 <HAL_SUBGHZ_Init+0x8c> + 8009d44: 2300 movs r3, #0 + 8009d46: 716b strb r3, [r5, #5] + 8009d48: 4628 mov r0, r5 + 8009d4a: f7f8 fe17 bl 800297c <HAL_SUBGHZ_MspInit> + 8009d4e: 4a1e ldr r2, [pc, #120] ; (8009dc8 <HAL_SUBGHZ_Init+0xb0>) + 8009d50: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8009d54: f443 5380 orr.w r3, r3, #4096 ; 0x1000 + 8009d58: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8009d5c: 2c00 cmp r4, #0 + 8009d5e: d1e5 bne.n 8009d2c <HAL_SUBGHZ_Init+0x14> + 8009d60: 2302 movs r3, #2 + 8009d62: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009d66: 71ab strb r3, [r5, #6] + 8009d68: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 8009d6c: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8009d70: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + 8009d74: 4b15 ldr r3, [pc, #84] ; (8009dcc <HAL_SUBGHZ_Init+0xb4>) + 8009d76: 681b ldr r3, [r3, #0] + 8009d78: 211c movs r1, #28 + 8009d7a: 434b muls r3, r1 + 8009d7c: 0cdb lsrs r3, r3, #19 + 8009d7e: 2164 movs r1, #100 ; 0x64 + 8009d80: 434b muls r3, r1 + 8009d82: 9301 str r3, [sp, #4] + 8009d84: 9b01 ldr r3, [sp, #4] + 8009d86: b993 cbnz r3, 8009dae <HAL_SUBGHZ_Init+0x96> + 8009d88: 2401 movs r4, #1 + 8009d8a: 60ac str r4, [r5, #8] + 8009d8c: f7ff ff9e bl 8009ccc <LL_PWR_UnselectSUBGHZSPI_NSS> + 8009d90: 4b0c ldr r3, [pc, #48] ; (8009dc4 <HAL_SUBGHZ_Init+0xac>) + 8009d92: 689a ldr r2, [r3, #8] + 8009d94: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 8009d98: 609a str r2, [r3, #8] + 8009d9a: f44f 6200 mov.w r2, #2048 ; 0x800 + 8009d9e: 619a str r2, [r3, #24] + 8009da0: 2c00 cmp r4, #0 + 8009da2: d0c7 beq.n 8009d34 <HAL_SUBGHZ_Init+0x1c> + 8009da4: 2301 movs r3, #1 + 8009da6: 71ab strb r3, [r5, #6] + 8009da8: 4620 mov r0, r4 + 8009daa: b003 add sp, #12 + 8009dac: bd30 pop {r4, r5, pc} + 8009dae: 9b01 ldr r3, [sp, #4] + 8009db0: 3b01 subs r3, #1 + 8009db2: 9301 str r3, [sp, #4] + 8009db4: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 8009db8: 045b lsls r3, r3, #17 + 8009dba: d4e3 bmi.n 8009d84 <HAL_SUBGHZ_Init+0x6c> + 8009dbc: e7e6 b.n 8009d8c <HAL_SUBGHZ_Init+0x74> + 8009dbe: 2401 movs r4, #1 + 8009dc0: e7f2 b.n 8009da8 <HAL_SUBGHZ_Init+0x90> + 8009dc2: bf00 nop + 8009dc4: 58000400 .word 0x58000400 + 8009dc8: 58000800 .word 0x58000800 + 8009dcc: 20000828 .word 0x20000828 + +08009dd0 <SUBGHZSPI_Transmit>: + 8009dd0: b537 push {r0, r1, r2, r4, r5, lr} + 8009dd2: 4d17 ldr r5, [pc, #92] ; (8009e30 <SUBGHZSPI_Transmit+0x60>) + 8009dd4: 682b ldr r3, [r5, #0] + 8009dd6: 4602 mov r2, r0 + 8009dd8: 201c movs r0, #28 + 8009dda: 4343 muls r3, r0 + 8009ddc: 0cdb lsrs r3, r3, #19 + 8009dde: 2064 movs r0, #100 ; 0x64 + 8009de0: 4343 muls r3, r0 + 8009de2: 4814 ldr r0, [pc, #80] ; (8009e34 <SUBGHZSPI_Transmit+0x64>) + 8009de4: 9301 str r3, [sp, #4] + 8009de6: 9b01 ldr r3, [sp, #4] + 8009de8: b993 cbnz r3, 8009e10 <SUBGHZSPI_Transmit+0x40> + 8009dea: 2001 movs r0, #1 + 8009dec: 6090 str r0, [r2, #8] + 8009dee: 4c11 ldr r4, [pc, #68] ; (8009e34 <SUBGHZSPI_Transmit+0x64>) + 8009df0: 7321 strb r1, [r4, #12] + 8009df2: 682b ldr r3, [r5, #0] + 8009df4: 211c movs r1, #28 + 8009df6: 434b muls r3, r1 + 8009df8: 0cdb lsrs r3, r3, #19 + 8009dfa: 2164 movs r1, #100 ; 0x64 + 8009dfc: 434b muls r3, r1 + 8009dfe: 9301 str r3, [sp, #4] + 8009e00: 9b01 ldr r3, [sp, #4] + 8009e02: b96b cbnz r3, 8009e20 <SUBGHZSPI_Transmit+0x50> + 8009e04: 2001 movs r0, #1 + 8009e06: 6090 str r0, [r2, #8] + 8009e08: 4b0a ldr r3, [pc, #40] ; (8009e34 <SUBGHZSPI_Transmit+0x64>) + 8009e0a: 68db ldr r3, [r3, #12] + 8009e0c: b003 add sp, #12 + 8009e0e: bd30 pop {r4, r5, pc} + 8009e10: 9b01 ldr r3, [sp, #4] + 8009e12: 3b01 subs r3, #1 + 8009e14: 9301 str r3, [sp, #4] + 8009e16: 6883 ldr r3, [r0, #8] + 8009e18: 079c lsls r4, r3, #30 + 8009e1a: d5e4 bpl.n 8009de6 <SUBGHZSPI_Transmit+0x16> + 8009e1c: 2000 movs r0, #0 + 8009e1e: e7e6 b.n 8009dee <SUBGHZSPI_Transmit+0x1e> + 8009e20: 9b01 ldr r3, [sp, #4] + 8009e22: 3b01 subs r3, #1 + 8009e24: 9301 str r3, [sp, #4] + 8009e26: 68a3 ldr r3, [r4, #8] + 8009e28: 07db lsls r3, r3, #31 + 8009e2a: d5e9 bpl.n 8009e00 <SUBGHZSPI_Transmit+0x30> + 8009e2c: e7ec b.n 8009e08 <SUBGHZSPI_Transmit+0x38> + 8009e2e: bf00 nop + 8009e30: 20000828 .word 0x20000828 + 8009e34: 58010000 .word 0x58010000 + +08009e38 <SUBGHZSPI_Receive>: + 8009e38: b537 push {r0, r1, r2, r4, r5, lr} + 8009e3a: 4d18 ldr r5, [pc, #96] ; (8009e9c <SUBGHZSPI_Receive+0x64>) + 8009e3c: 682b ldr r3, [r5, #0] + 8009e3e: 4602 mov r2, r0 + 8009e40: 201c movs r0, #28 + 8009e42: 4343 muls r3, r0 + 8009e44: 0cdb lsrs r3, r3, #19 + 8009e46: 2064 movs r0, #100 ; 0x64 + 8009e48: 4343 muls r3, r0 + 8009e4a: 4815 ldr r0, [pc, #84] ; (8009ea0 <SUBGHZSPI_Receive+0x68>) + 8009e4c: 9301 str r3, [sp, #4] + 8009e4e: 9b01 ldr r3, [sp, #4] + 8009e50: b9a3 cbnz r3, 8009e7c <SUBGHZSPI_Receive+0x44> + 8009e52: 2001 movs r0, #1 + 8009e54: 6090 str r0, [r2, #8] + 8009e56: 4c12 ldr r4, [pc, #72] ; (8009ea0 <SUBGHZSPI_Receive+0x68>) + 8009e58: 23ff movs r3, #255 ; 0xff + 8009e5a: 7323 strb r3, [r4, #12] + 8009e5c: 682b ldr r3, [r5, #0] + 8009e5e: 251c movs r5, #28 + 8009e60: 436b muls r3, r5 + 8009e62: 0cdb lsrs r3, r3, #19 + 8009e64: 2564 movs r5, #100 ; 0x64 + 8009e66: 436b muls r3, r5 + 8009e68: 9301 str r3, [sp, #4] + 8009e6a: 9b01 ldr r3, [sp, #4] + 8009e6c: b973 cbnz r3, 8009e8c <SUBGHZSPI_Receive+0x54> + 8009e6e: 2001 movs r0, #1 + 8009e70: 6090 str r0, [r2, #8] + 8009e72: 4b0b ldr r3, [pc, #44] ; (8009ea0 <SUBGHZSPI_Receive+0x68>) + 8009e74: 68db ldr r3, [r3, #12] + 8009e76: 700b strb r3, [r1, #0] + 8009e78: b003 add sp, #12 + 8009e7a: bd30 pop {r4, r5, pc} + 8009e7c: 9b01 ldr r3, [sp, #4] + 8009e7e: 3b01 subs r3, #1 + 8009e80: 9301 str r3, [sp, #4] + 8009e82: 6883 ldr r3, [r0, #8] + 8009e84: 079c lsls r4, r3, #30 + 8009e86: d5e2 bpl.n 8009e4e <SUBGHZSPI_Receive+0x16> + 8009e88: 2000 movs r0, #0 + 8009e8a: e7e4 b.n 8009e56 <SUBGHZSPI_Receive+0x1e> + 8009e8c: 9b01 ldr r3, [sp, #4] + 8009e8e: 3b01 subs r3, #1 + 8009e90: 9301 str r3, [sp, #4] + 8009e92: 68a3 ldr r3, [r4, #8] + 8009e94: 07db lsls r3, r3, #31 + 8009e96: d5e8 bpl.n 8009e6a <SUBGHZSPI_Receive+0x32> + 8009e98: e7eb b.n 8009e72 <SUBGHZSPI_Receive+0x3a> + 8009e9a: bf00 nop + 8009e9c: 20000828 .word 0x20000828 + 8009ea0: 58010000 .word 0x58010000 + +08009ea4 <SUBGHZ_WaitOnBusy>: + 8009ea4: 4b0f ldr r3, [pc, #60] ; (8009ee4 <SUBGHZ_WaitOnBusy+0x40>) + 8009ea6: b513 push {r0, r1, r4, lr} + 8009ea8: 681b ldr r3, [r3, #0] + 8009eaa: 4c0f ldr r4, [pc, #60] ; (8009ee8 <SUBGHZ_WaitOnBusy+0x44>) + 8009eac: 2218 movs r2, #24 + 8009eae: 4353 muls r3, r2 + 8009eb0: 0d1b lsrs r3, r3, #20 + 8009eb2: 2264 movs r2, #100 ; 0x64 + 8009eb4: 4353 muls r3, r2 + 8009eb6: 4601 mov r1, r0 + 8009eb8: 9301 str r3, [sp, #4] + 8009eba: 6962 ldr r2, [r4, #20] + 8009ebc: 9b01 ldr r3, [sp, #4] + 8009ebe: f002 0204 and.w r2, r2, #4 + 8009ec2: b923 cbnz r3, 8009ece <SUBGHZ_WaitOnBusy+0x2a> + 8009ec4: 2302 movs r3, #2 + 8009ec6: 608b str r3, [r1, #8] + 8009ec8: 2001 movs r0, #1 + 8009eca: b002 add sp, #8 + 8009ecc: bd10 pop {r4, pc} + 8009ece: 9b01 ldr r3, [sp, #4] + 8009ed0: 3b01 subs r3, #1 + 8009ed2: 9301 str r3, [sp, #4] + 8009ed4: 6960 ldr r0, [r4, #20] + 8009ed6: f010 0002 ands.w r0, r0, #2 + 8009eda: d0f6 beq.n 8009eca <SUBGHZ_WaitOnBusy+0x26> + 8009edc: 2a00 cmp r2, #0 + 8009ede: d1ec bne.n 8009eba <SUBGHZ_WaitOnBusy+0x16> + 8009ee0: 4610 mov r0, r2 + 8009ee2: e7f2 b.n 8009eca <SUBGHZ_WaitOnBusy+0x26> + 8009ee4: 20000828 .word 0x20000828 + 8009ee8: 58000400 .word 0x58000400 + +08009eec <SUBGHZ_CheckDeviceReady>: + 8009eec: b507 push {r0, r1, r2, lr} + 8009eee: 7903 ldrb r3, [r0, #4] + 8009ef0: 2b01 cmp r3, #1 + 8009ef2: d10f bne.n 8009f14 <SUBGHZ_CheckDeviceReady+0x28> + 8009ef4: 4b0a ldr r3, [pc, #40] ; (8009f20 <SUBGHZ_CheckDeviceReady+0x34>) + 8009ef6: 681b ldr r3, [r3, #0] + 8009ef8: 2218 movs r2, #24 + 8009efa: 4353 muls r3, r2 + 8009efc: 0c1b lsrs r3, r3, #16 + 8009efe: 9301 str r3, [sp, #4] + 8009f00: f7ff feee bl 8009ce0 <LL_PWR_SelectSUBGHZSPI_NSS> + 8009f04: 9b01 ldr r3, [sp, #4] + 8009f06: 3b01 subs r3, #1 + 8009f08: 9301 str r3, [sp, #4] + 8009f0a: 9b01 ldr r3, [sp, #4] + 8009f0c: 2b00 cmp r3, #0 + 8009f0e: d1f9 bne.n 8009f04 <SUBGHZ_CheckDeviceReady+0x18> + 8009f10: f7ff fedc bl 8009ccc <LL_PWR_UnselectSUBGHZSPI_NSS> + 8009f14: b003 add sp, #12 + 8009f16: f85d eb04 ldr.w lr, [sp], #4 + 8009f1a: f7ff bfc3 b.w 8009ea4 <SUBGHZ_WaitOnBusy> + 8009f1e: bf00 nop + 8009f20: 20000828 .word 0x20000828 + +08009f24 <HAL_SUBGHZ_WriteRegisters>: + 8009f24: b5f8 push {r3, r4, r5, r6, r7, lr} + 8009f26: 461e mov r6, r3 + 8009f28: 7983 ldrb r3, [r0, #6] + 8009f2a: 2b01 cmp r3, #1 + 8009f2c: 4615 mov r5, r2 + 8009f2e: 4604 mov r4, r0 + 8009f30: 460f mov r7, r1 + 8009f32: b2da uxtb r2, r3 + 8009f34: d12d bne.n 8009f92 <HAL_SUBGHZ_WriteRegisters+0x6e> + 8009f36: 7943 ldrb r3, [r0, #5] + 8009f38: 2b01 cmp r3, #1 + 8009f3a: d02a beq.n 8009f92 <HAL_SUBGHZ_WriteRegisters+0x6e> + 8009f3c: 2302 movs r3, #2 + 8009f3e: 7142 strb r2, [r0, #5] + 8009f40: 7183 strb r3, [r0, #6] + 8009f42: f7ff ffd3 bl 8009eec <SUBGHZ_CheckDeviceReady> + 8009f46: 210d movs r1, #13 + 8009f48: 4620 mov r0, r4 + 8009f4a: f7ff fec9 bl 8009ce0 <LL_PWR_SelectSUBGHZSPI_NSS> + 8009f4e: f7ff ff3f bl 8009dd0 <SUBGHZSPI_Transmit> + 8009f52: 0a39 lsrs r1, r7, #8 + 8009f54: 4620 mov r0, r4 + 8009f56: f7ff ff3b bl 8009dd0 <SUBGHZSPI_Transmit> + 8009f5a: b2f9 uxtb r1, r7 + 8009f5c: 4620 mov r0, r4 + 8009f5e: f7ff ff37 bl 8009dd0 <SUBGHZSPI_Transmit> + 8009f62: 442e add r6, r5 + 8009f64: 42b5 cmp r5, r6 + 8009f66: d10e bne.n 8009f86 <HAL_SUBGHZ_WriteRegisters+0x62> + 8009f68: 4620 mov r0, r4 + 8009f6a: f7ff feaf bl 8009ccc <LL_PWR_UnselectSUBGHZSPI_NSS> + 8009f6e: f7ff ff99 bl 8009ea4 <SUBGHZ_WaitOnBusy> + 8009f72: 68a0 ldr r0, [r4, #8] + 8009f74: 2301 movs r3, #1 + 8009f76: 3800 subs r0, #0 + 8009f78: 71a3 strb r3, [r4, #6] + 8009f7a: f04f 0300 mov.w r3, #0 + 8009f7e: bf18 it ne + 8009f80: 2001 movne r0, #1 + 8009f82: 7163 strb r3, [r4, #5] + 8009f84: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8009f86: f815 1b01 ldrb.w r1, [r5], #1 + 8009f8a: 4620 mov r0, r4 + 8009f8c: f7ff ff20 bl 8009dd0 <SUBGHZSPI_Transmit> + 8009f90: e7e8 b.n 8009f64 <HAL_SUBGHZ_WriteRegisters+0x40> + 8009f92: 2002 movs r0, #2 + 8009f94: e7f6 b.n 8009f84 <HAL_SUBGHZ_WriteRegisters+0x60> + +08009f96 <HAL_SUBGHZ_ReadRegisters>: + 8009f96: b5f8 push {r3, r4, r5, r6, r7, lr} + 8009f98: 461e mov r6, r3 + 8009f9a: 7983 ldrb r3, [r0, #6] + 8009f9c: 2b01 cmp r3, #1 + 8009f9e: 4615 mov r5, r2 + 8009fa0: 4604 mov r4, r0 + 8009fa2: 460f mov r7, r1 + 8009fa4: b2da uxtb r2, r3 + 8009fa6: d12f bne.n 800a008 <HAL_SUBGHZ_ReadRegisters+0x72> + 8009fa8: 7943 ldrb r3, [r0, #5] + 8009faa: 2b01 cmp r3, #1 + 8009fac: d02c beq.n 800a008 <HAL_SUBGHZ_ReadRegisters+0x72> + 8009fae: 7142 strb r2, [r0, #5] + 8009fb0: f7ff ff9c bl 8009eec <SUBGHZ_CheckDeviceReady> + 8009fb4: 211d movs r1, #29 + 8009fb6: 4620 mov r0, r4 + 8009fb8: f7ff fe92 bl 8009ce0 <LL_PWR_SelectSUBGHZSPI_NSS> + 8009fbc: f7ff ff08 bl 8009dd0 <SUBGHZSPI_Transmit> + 8009fc0: 0a39 lsrs r1, r7, #8 + 8009fc2: 4620 mov r0, r4 + 8009fc4: f7ff ff04 bl 8009dd0 <SUBGHZSPI_Transmit> + 8009fc8: b2f9 uxtb r1, r7 + 8009fca: 4620 mov r0, r4 + 8009fcc: f7ff ff00 bl 8009dd0 <SUBGHZSPI_Transmit> + 8009fd0: 2100 movs r1, #0 + 8009fd2: 4620 mov r0, r4 + 8009fd4: f7ff fefc bl 8009dd0 <SUBGHZSPI_Transmit> + 8009fd8: 442e add r6, r5 + 8009fda: 42b5 cmp r5, r6 + 8009fdc: d10e bne.n 8009ffc <HAL_SUBGHZ_ReadRegisters+0x66> + 8009fde: 4620 mov r0, r4 + 8009fe0: f7ff fe74 bl 8009ccc <LL_PWR_UnselectSUBGHZSPI_NSS> + 8009fe4: f7ff ff5e bl 8009ea4 <SUBGHZ_WaitOnBusy> + 8009fe8: 68a0 ldr r0, [r4, #8] + 8009fea: 2301 movs r3, #1 + 8009fec: 3800 subs r0, #0 + 8009fee: 71a3 strb r3, [r4, #6] + 8009ff0: f04f 0300 mov.w r3, #0 + 8009ff4: bf18 it ne + 8009ff6: 2001 movne r0, #1 + 8009ff8: 7163 strb r3, [r4, #5] + 8009ffa: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8009ffc: 4629 mov r1, r5 + 8009ffe: 4620 mov r0, r4 + 800a000: f7ff ff1a bl 8009e38 <SUBGHZSPI_Receive> + 800a004: 3501 adds r5, #1 + 800a006: e7e8 b.n 8009fda <HAL_SUBGHZ_ReadRegisters+0x44> + 800a008: 2002 movs r0, #2 + 800a00a: e7f6 b.n 8009ffa <HAL_SUBGHZ_ReadRegisters+0x64> + +0800a00c <HAL_SUBGHZ_ExecSetCmd>: + 800a00c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a00e: 461f mov r7, r3 + 800a010: 7983 ldrb r3, [r0, #6] + 800a012: 2b01 cmp r3, #1 + 800a014: 4615 mov r5, r2 + 800a016: 4604 mov r4, r0 + 800a018: 460e mov r6, r1 + 800a01a: b2da uxtb r2, r3 + 800a01c: d12c bne.n 800a078 <HAL_SUBGHZ_ExecSetCmd+0x6c> + 800a01e: 7943 ldrb r3, [r0, #5] + 800a020: 2b01 cmp r3, #1 + 800a022: d029 beq.n 800a078 <HAL_SUBGHZ_ExecSetCmd+0x6c> + 800a024: 7142 strb r2, [r0, #5] + 800a026: f7ff ff61 bl 8009eec <SUBGHZ_CheckDeviceReady> + 800a02a: f006 03ef and.w r3, r6, #239 ; 0xef + 800a02e: f1a3 0284 sub.w r2, r3, #132 ; 0x84 + 800a032: 4253 negs r3, r2 + 800a034: 4153 adcs r3, r2 + 800a036: 7123 strb r3, [r4, #4] + 800a038: 4631 mov r1, r6 + 800a03a: 4620 mov r0, r4 + 800a03c: f7ff fe50 bl 8009ce0 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a040: f7ff fec6 bl 8009dd0 <SUBGHZSPI_Transmit> + 800a044: 442f add r7, r5 + 800a046: 42af cmp r7, r5 + 800a048: d110 bne.n 800a06c <HAL_SUBGHZ_ExecSetCmd+0x60> + 800a04a: f7ff fe3f bl 8009ccc <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a04e: 2e84 cmp r6, #132 ; 0x84 + 800a050: d002 beq.n 800a058 <HAL_SUBGHZ_ExecSetCmd+0x4c> + 800a052: 4620 mov r0, r4 + 800a054: f7ff ff26 bl 8009ea4 <SUBGHZ_WaitOnBusy> + 800a058: 68a0 ldr r0, [r4, #8] + 800a05a: 2301 movs r3, #1 + 800a05c: 3800 subs r0, #0 + 800a05e: 71a3 strb r3, [r4, #6] + 800a060: f04f 0300 mov.w r3, #0 + 800a064: bf18 it ne + 800a066: 2001 movne r0, #1 + 800a068: 7163 strb r3, [r4, #5] + 800a06a: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a06c: f815 1b01 ldrb.w r1, [r5], #1 + 800a070: 4620 mov r0, r4 + 800a072: f7ff fead bl 8009dd0 <SUBGHZSPI_Transmit> + 800a076: e7e6 b.n 800a046 <HAL_SUBGHZ_ExecSetCmd+0x3a> + 800a078: 2002 movs r0, #2 + 800a07a: e7f6 b.n 800a06a <HAL_SUBGHZ_ExecSetCmd+0x5e> + +0800a07c <HAL_SUBGHZ_ExecGetCmd>: + 800a07c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a07e: 461e mov r6, r3 + 800a080: 7983 ldrb r3, [r0, #6] + 800a082: 2b01 cmp r3, #1 + 800a084: 4615 mov r5, r2 + 800a086: 4604 mov r4, r0 + 800a088: 460f mov r7, r1 + 800a08a: b2da uxtb r2, r3 + 800a08c: d127 bne.n 800a0de <HAL_SUBGHZ_ExecGetCmd+0x62> + 800a08e: 7943 ldrb r3, [r0, #5] + 800a090: 2b01 cmp r3, #1 + 800a092: d024 beq.n 800a0de <HAL_SUBGHZ_ExecGetCmd+0x62> + 800a094: 7142 strb r2, [r0, #5] + 800a096: f7ff ff29 bl 8009eec <SUBGHZ_CheckDeviceReady> + 800a09a: 4639 mov r1, r7 + 800a09c: 4620 mov r0, r4 + 800a09e: f7ff fe1f bl 8009ce0 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a0a2: f7ff fe95 bl 8009dd0 <SUBGHZSPI_Transmit> + 800a0a6: 2100 movs r1, #0 + 800a0a8: 4620 mov r0, r4 + 800a0aa: f7ff fe91 bl 8009dd0 <SUBGHZSPI_Transmit> + 800a0ae: 442e add r6, r5 + 800a0b0: 42b5 cmp r5, r6 + 800a0b2: d10e bne.n 800a0d2 <HAL_SUBGHZ_ExecGetCmd+0x56> + 800a0b4: 4620 mov r0, r4 + 800a0b6: f7ff fe09 bl 8009ccc <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a0ba: f7ff fef3 bl 8009ea4 <SUBGHZ_WaitOnBusy> + 800a0be: 68a0 ldr r0, [r4, #8] + 800a0c0: 2301 movs r3, #1 + 800a0c2: 3800 subs r0, #0 + 800a0c4: 71a3 strb r3, [r4, #6] + 800a0c6: f04f 0300 mov.w r3, #0 + 800a0ca: bf18 it ne + 800a0cc: 2001 movne r0, #1 + 800a0ce: 7163 strb r3, [r4, #5] + 800a0d0: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a0d2: 4629 mov r1, r5 + 800a0d4: 4620 mov r0, r4 + 800a0d6: f7ff feaf bl 8009e38 <SUBGHZSPI_Receive> + 800a0da: 3501 adds r5, #1 + 800a0dc: e7e8 b.n 800a0b0 <HAL_SUBGHZ_ExecGetCmd+0x34> + 800a0de: 2002 movs r0, #2 + 800a0e0: e7f6 b.n 800a0d0 <HAL_SUBGHZ_ExecGetCmd+0x54> + +0800a0e2 <HAL_SUBGHZ_IRQHandler>: + 800a0e2: b537 push {r0, r1, r2, r4, r5, lr} + 800a0e4: 2300 movs r3, #0 + 800a0e6: f8ad 3004 strh.w r3, [sp, #4] + 800a0ea: aa01 add r2, sp, #4 + 800a0ec: 2302 movs r3, #2 + 800a0ee: 2112 movs r1, #18 + 800a0f0: 4605 mov r5, r0 + 800a0f2: f7ff ffc3 bl 800a07c <HAL_SUBGHZ_ExecGetCmd> + 800a0f6: f8bd 4004 ldrh.w r4, [sp, #4] + 800a0fa: 2302 movs r3, #2 + 800a0fc: ba64 rev16 r4, r4 + 800a0fe: aa01 add r2, sp, #4 + 800a100: b2a4 uxth r4, r4 + 800a102: 4619 mov r1, r3 + 800a104: 4628 mov r0, r5 + 800a106: f7ff ff81 bl 800a00c <HAL_SUBGHZ_ExecSetCmd> + 800a10a: 07e2 lsls r2, r4, #31 + 800a10c: d502 bpl.n 800a114 <HAL_SUBGHZ_IRQHandler+0x32> + 800a10e: 4628 mov r0, r5 + 800a110: f009 f9f6 bl 8013500 <HAL_SUBGHZ_TxCpltCallback> + 800a114: 07a3 lsls r3, r4, #30 + 800a116: d502 bpl.n 800a11e <HAL_SUBGHZ_IRQHandler+0x3c> + 800a118: 4628 mov r0, r5 + 800a11a: f009 f9f7 bl 801350c <HAL_SUBGHZ_RxCpltCallback> + 800a11e: 0760 lsls r0, r4, #29 + 800a120: d502 bpl.n 800a128 <HAL_SUBGHZ_IRQHandler+0x46> + 800a122: 4628 mov r0, r5 + 800a124: f009 fa1c bl 8013560 <HAL_SUBGHZ_PreambleDetectedCallback> + 800a128: 0721 lsls r1, r4, #28 + 800a12a: d502 bpl.n 800a132 <HAL_SUBGHZ_IRQHandler+0x50> + 800a12c: 4628 mov r0, r5 + 800a12e: f009 fa1d bl 801356c <HAL_SUBGHZ_SyncWordValidCallback> + 800a132: 06e2 lsls r2, r4, #27 + 800a134: d502 bpl.n 800a13c <HAL_SUBGHZ_IRQHandler+0x5a> + 800a136: 4628 mov r0, r5 + 800a138: f009 fa1e bl 8013578 <HAL_SUBGHZ_HeaderValidCallback> + 800a13c: 06a3 lsls r3, r4, #26 + 800a13e: d502 bpl.n 800a146 <HAL_SUBGHZ_IRQHandler+0x64> + 800a140: 4628 mov r0, r5 + 800a142: f009 fa07 bl 8013554 <HAL_SUBGHZ_HeaderErrorCallback> + 800a146: 0660 lsls r0, r4, #25 + 800a148: d502 bpl.n 800a150 <HAL_SUBGHZ_IRQHandler+0x6e> + 800a14a: 4628 mov r0, r5 + 800a14c: f009 f9e4 bl 8013518 <HAL_SUBGHZ_CRCErrorCallback> + 800a150: 0621 lsls r1, r4, #24 + 800a152: d506 bpl.n 800a162 <HAL_SUBGHZ_IRQHandler+0x80> + 800a154: f414 7180 ands.w r1, r4, #256 ; 0x100 + 800a158: bf18 it ne + 800a15a: 2101 movne r1, #1 + 800a15c: 4628 mov r0, r5 + 800a15e: f009 f9e1 bl 8013524 <HAL_SUBGHZ_CADStatusCallback> + 800a162: 05a2 lsls r2, r4, #22 + 800a164: d502 bpl.n 800a16c <HAL_SUBGHZ_IRQHandler+0x8a> + 800a166: 4628 mov r0, r5 + 800a168: f009 f9ec bl 8013544 <HAL_SUBGHZ_RxTxTimeoutCallback> + 800a16c: 0463 lsls r3, r4, #17 + 800a16e: d502 bpl.n 800a176 <HAL_SUBGHZ_IRQHandler+0x94> + 800a170: 4628 mov r0, r5 + 800a172: f009 fa07 bl 8013584 <HAL_SUBGHZ_LrFhssHopCallback> + 800a176: b003 add sp, #12 + 800a178: bd30 pop {r4, r5, pc} + +0800a17a <HAL_SUBGHZ_WriteBuffer>: + 800a17a: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a17c: 461e mov r6, r3 + 800a17e: 7983 ldrb r3, [r0, #6] + 800a180: 2b01 cmp r3, #1 + 800a182: 4615 mov r5, r2 + 800a184: 4604 mov r4, r0 + 800a186: 460f mov r7, r1 + 800a188: b2da uxtb r2, r3 + 800a18a: d127 bne.n 800a1dc <HAL_SUBGHZ_WriteBuffer+0x62> + 800a18c: 7943 ldrb r3, [r0, #5] + 800a18e: 2b01 cmp r3, #1 + 800a190: d024 beq.n 800a1dc <HAL_SUBGHZ_WriteBuffer+0x62> + 800a192: 7142 strb r2, [r0, #5] + 800a194: f7ff feaa bl 8009eec <SUBGHZ_CheckDeviceReady> + 800a198: 210e movs r1, #14 + 800a19a: 4620 mov r0, r4 + 800a19c: f7ff fda0 bl 8009ce0 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a1a0: f7ff fe16 bl 8009dd0 <SUBGHZSPI_Transmit> + 800a1a4: 4639 mov r1, r7 + 800a1a6: 4620 mov r0, r4 + 800a1a8: f7ff fe12 bl 8009dd0 <SUBGHZSPI_Transmit> + 800a1ac: 442e add r6, r5 + 800a1ae: 42b5 cmp r5, r6 + 800a1b0: d10e bne.n 800a1d0 <HAL_SUBGHZ_WriteBuffer+0x56> + 800a1b2: 4620 mov r0, r4 + 800a1b4: f7ff fd8a bl 8009ccc <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a1b8: f7ff fe74 bl 8009ea4 <SUBGHZ_WaitOnBusy> + 800a1bc: 68a0 ldr r0, [r4, #8] + 800a1be: 2301 movs r3, #1 + 800a1c0: 3800 subs r0, #0 + 800a1c2: 71a3 strb r3, [r4, #6] + 800a1c4: f04f 0300 mov.w r3, #0 + 800a1c8: bf18 it ne + 800a1ca: 2001 movne r0, #1 + 800a1cc: 7163 strb r3, [r4, #5] + 800a1ce: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a1d0: f815 1b01 ldrb.w r1, [r5], #1 + 800a1d4: 4620 mov r0, r4 + 800a1d6: f7ff fdfb bl 8009dd0 <SUBGHZSPI_Transmit> + 800a1da: e7e8 b.n 800a1ae <HAL_SUBGHZ_WriteBuffer+0x34> + 800a1dc: 2002 movs r0, #2 + 800a1de: e7f6 b.n 800a1ce <HAL_SUBGHZ_WriteBuffer+0x54> + +0800a1e0 <HAL_SUBGHZ_ReadBuffer>: + 800a1e0: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a1e2: 461e mov r6, r3 + 800a1e4: 7983 ldrb r3, [r0, #6] + 800a1e6: 2b01 cmp r3, #1 + 800a1e8: 4615 mov r5, r2 + 800a1ea: 4604 mov r4, r0 + 800a1ec: 460f mov r7, r1 + 800a1ee: b2da uxtb r2, r3 + 800a1f0: d12b bne.n 800a24a <HAL_SUBGHZ_ReadBuffer+0x6a> + 800a1f2: 7943 ldrb r3, [r0, #5] + 800a1f4: 2b01 cmp r3, #1 + 800a1f6: d028 beq.n 800a24a <HAL_SUBGHZ_ReadBuffer+0x6a> + 800a1f8: 7142 strb r2, [r0, #5] + 800a1fa: f7ff fe77 bl 8009eec <SUBGHZ_CheckDeviceReady> + 800a1fe: 211e movs r1, #30 + 800a200: 4620 mov r0, r4 + 800a202: f7ff fd6d bl 8009ce0 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a206: f7ff fde3 bl 8009dd0 <SUBGHZSPI_Transmit> + 800a20a: 4639 mov r1, r7 + 800a20c: 4620 mov r0, r4 + 800a20e: f7ff fddf bl 8009dd0 <SUBGHZSPI_Transmit> + 800a212: 2100 movs r1, #0 + 800a214: 4620 mov r0, r4 + 800a216: f7ff fddb bl 8009dd0 <SUBGHZSPI_Transmit> + 800a21a: 442e add r6, r5 + 800a21c: 42b5 cmp r5, r6 + 800a21e: d10e bne.n 800a23e <HAL_SUBGHZ_ReadBuffer+0x5e> + 800a220: 4620 mov r0, r4 + 800a222: f7ff fd53 bl 8009ccc <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a226: f7ff fe3d bl 8009ea4 <SUBGHZ_WaitOnBusy> + 800a22a: 68a0 ldr r0, [r4, #8] + 800a22c: 2301 movs r3, #1 + 800a22e: 3800 subs r0, #0 + 800a230: 71a3 strb r3, [r4, #6] + 800a232: f04f 0300 mov.w r3, #0 + 800a236: bf18 it ne + 800a238: 2001 movne r0, #1 + 800a23a: 7163 strb r3, [r4, #5] + 800a23c: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a23e: 4629 mov r1, r5 + 800a240: 4620 mov r0, r4 + 800a242: f7ff fdf9 bl 8009e38 <SUBGHZSPI_Receive> + 800a246: 3501 adds r5, #1 + 800a248: e7e8 b.n 800a21c <HAL_SUBGHZ_ReadBuffer+0x3c> + 800a24a: 2002 movs r0, #2 + 800a24c: e7f6 b.n 800a23c <HAL_SUBGHZ_ReadBuffer+0x5c> + +0800a24e <UART_EndTxTransfer>: + 800a24e: 6802 ldr r2, [r0, #0] + 800a250: e852 3f00 ldrex r3, [r2] + 800a254: f023 03c0 bic.w r3, r3, #192 ; 0xc0 + 800a258: e842 3100 strex r1, r3, [r2] + 800a25c: 6802 ldr r2, [r0, #0] + 800a25e: 2900 cmp r1, #0 + 800a260: d1f5 bne.n 800a24e <UART_EndTxTransfer> + 800a262: f102 0308 add.w r3, r2, #8 + 800a266: e853 3f00 ldrex r3, [r3] + 800a26a: f423 0300 bic.w r3, r3, #8388608 ; 0x800000 + 800a26e: f102 0c08 add.w ip, r2, #8 + 800a272: e84c 3100 strex r1, r3, [ip] + 800a276: 2900 cmp r1, #0 + 800a278: d1f3 bne.n 800a262 <UART_EndTxTransfer+0x14> + 800a27a: 2320 movs r3, #32 + 800a27c: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800a280: 4770 bx lr + ... + +0800a284 <UART_EndRxTransfer>: + 800a284: b510 push {r4, lr} + 800a286: 6802 ldr r2, [r0, #0] + 800a288: e852 3f00 ldrex r3, [r2] + 800a28c: f423 7390 bic.w r3, r3, #288 ; 0x120 + 800a290: e842 3100 strex r1, r3, [r2] + 800a294: 6802 ldr r2, [r0, #0] + 800a296: 2900 cmp r1, #0 + 800a298: d1f5 bne.n 800a286 <UART_EndRxTransfer+0x2> + 800a29a: 4c0f ldr r4, [pc, #60] ; (800a2d8 <UART_EndRxTransfer+0x54>) + 800a29c: f102 0308 add.w r3, r2, #8 + 800a2a0: e853 3f00 ldrex r3, [r3] + 800a2a4: 4023 ands r3, r4 + 800a2a6: f102 0c08 add.w ip, r2, #8 + 800a2aa: e84c 3100 strex r1, r3, [ip] + 800a2ae: 2900 cmp r1, #0 + 800a2b0: d1f4 bne.n 800a29c <UART_EndRxTransfer+0x18> + 800a2b2: 6ec3 ldr r3, [r0, #108] ; 0x6c + 800a2b4: 2b01 cmp r3, #1 + 800a2b6: d107 bne.n 800a2c8 <UART_EndRxTransfer+0x44> + 800a2b8: e852 3f00 ldrex r3, [r2] + 800a2bc: f023 0310 bic.w r3, r3, #16 + 800a2c0: e842 3100 strex r1, r3, [r2] + 800a2c4: 2900 cmp r1, #0 + 800a2c6: d1f7 bne.n 800a2b8 <UART_EndRxTransfer+0x34> + 800a2c8: 2320 movs r3, #32 + 800a2ca: f8c0 308c str.w r3, [r0, #140] ; 0x8c + 800a2ce: 2300 movs r3, #0 + 800a2d0: 66c3 str r3, [r0, #108] ; 0x6c + 800a2d2: 6743 str r3, [r0, #116] ; 0x74 + 800a2d4: bd10 pop {r4, pc} + 800a2d6: bf00 nop + 800a2d8: effffffe .word 0xeffffffe + +0800a2dc <HAL_UART_Transmit_DMA>: + 800a2dc: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a2de: 4604 mov r4, r0 + 800a2e0: 4613 mov r3, r2 + 800a2e2: f8d4 5088 ldr.w r5, [r4, #136] ; 0x88 + 800a2e6: 2d20 cmp r5, #32 + 800a2e8: d132 bne.n 800a350 <HAL_UART_Transmit_DMA+0x74> + 800a2ea: b1f1 cbz r1, 800a32a <HAL_UART_Transmit_DMA+0x4e> + 800a2ec: b1ea cbz r2, 800a32a <HAL_UART_Transmit_DMA+0x4e> + 800a2ee: 6fe0 ldr r0, [r4, #124] ; 0x7c + 800a2f0: f8a4 2056 strh.w r2, [r4, #86] ; 0x56 + 800a2f4: f8a4 2054 strh.w r2, [r4, #84] ; 0x54 + 800a2f8: 2600 movs r6, #0 + 800a2fa: 2221 movs r2, #33 ; 0x21 + 800a2fc: f8c4 6090 str.w r6, [r4, #144] ; 0x90 + 800a300: 6521 str r1, [r4, #80] ; 0x50 + 800a302: f8c4 2088 str.w r2, [r4, #136] ; 0x88 + 800a306: 6822 ldr r2, [r4, #0] + 800a308: b188 cbz r0, 800a32e <HAL_UART_Transmit_DMA+0x52> + 800a30a: 4f12 ldr r7, [pc, #72] ; (800a354 <HAL_UART_Transmit_DMA+0x78>) + 800a30c: 62c7 str r7, [r0, #44] ; 0x2c + 800a30e: 4f12 ldr r7, [pc, #72] ; (800a358 <HAL_UART_Transmit_DMA+0x7c>) + 800a310: 6307 str r7, [r0, #48] ; 0x30 + 800a312: 4f12 ldr r7, [pc, #72] ; (800a35c <HAL_UART_Transmit_DMA+0x80>) + 800a314: 3228 adds r2, #40 ; 0x28 + 800a316: e9c0 760d strd r7, r6, [r0, #52] ; 0x34 + 800a31a: f7fd fe45 bl 8007fa8 <HAL_DMA_Start_IT> + 800a31e: b130 cbz r0, 800a32e <HAL_UART_Transmit_DMA+0x52> + 800a320: 2310 movs r3, #16 + 800a322: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800a326: f8c4 5088 str.w r5, [r4, #136] ; 0x88 + 800a32a: 2001 movs r0, #1 + 800a32c: e00f b.n 800a34e <HAL_UART_Transmit_DMA+0x72> + 800a32e: 6823 ldr r3, [r4, #0] + 800a330: 2240 movs r2, #64 ; 0x40 + 800a332: 621a str r2, [r3, #32] + 800a334: 6822 ldr r2, [r4, #0] + 800a336: f102 0308 add.w r3, r2, #8 + 800a33a: e853 3f00 ldrex r3, [r3] + 800a33e: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800a342: f102 0108 add.w r1, r2, #8 + 800a346: e841 3000 strex r0, r3, [r1] + 800a34a: 2800 cmp r0, #0 + 800a34c: d1f3 bne.n 800a336 <HAL_UART_Transmit_DMA+0x5a> + 800a34e: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a350: 2002 movs r0, #2 + 800a352: e7fc b.n 800a34e <HAL_UART_Transmit_DMA+0x72> + 800a354: 0800a361 .word 0x0800a361 + 800a358: 0800a3a9 .word 0x0800a3a9 + 800a35c: 0800a3b5 .word 0x0800a3b5 + +0800a360 <UART_DMATransmitCplt>: + 800a360: b508 push {r3, lr} + 800a362: 4603 mov r3, r0 + 800a364: 6a80 ldr r0, [r0, #40] ; 0x28 + 800a366: 681b ldr r3, [r3, #0] + 800a368: 681b ldr r3, [r3, #0] + 800a36a: f013 0320 ands.w r3, r3, #32 + 800a36e: d117 bne.n 800a3a0 <UART_DMATransmitCplt+0x40> + 800a370: f8a0 3056 strh.w r3, [r0, #86] ; 0x56 + 800a374: 6802 ldr r2, [r0, #0] + 800a376: f102 0308 add.w r3, r2, #8 + 800a37a: e853 3f00 ldrex r3, [r3] + 800a37e: f023 0380 bic.w r3, r3, #128 ; 0x80 + 800a382: 3208 adds r2, #8 + 800a384: e842 3100 strex r1, r3, [r2] + 800a388: 6802 ldr r2, [r0, #0] + 800a38a: 2900 cmp r1, #0 + 800a38c: d1f2 bne.n 800a374 <UART_DMATransmitCplt+0x14> + 800a38e: e852 3f00 ldrex r3, [r2] + 800a392: f043 0340 orr.w r3, r3, #64 ; 0x40 + 800a396: e842 3100 strex r1, r3, [r2] + 800a39a: 2900 cmp r1, #0 + 800a39c: d1f7 bne.n 800a38e <UART_DMATransmitCplt+0x2e> + 800a39e: bd08 pop {r3, pc} + 800a3a0: f7f8 fea8 bl 80030f4 <HAL_UART_TxCpltCallback> + 800a3a4: e7fb b.n 800a39e <UART_DMATransmitCplt+0x3e> + +0800a3a6 <HAL_UART_TxHalfCpltCallback>: + 800a3a6: 4770 bx lr + +0800a3a8 <UART_DMATxHalfCplt>: + 800a3a8: b508 push {r3, lr} + 800a3aa: 6a80 ldr r0, [r0, #40] ; 0x28 + 800a3ac: f7ff fffb bl 800a3a6 <HAL_UART_TxHalfCpltCallback> + 800a3b0: bd08 pop {r3, pc} + +0800a3b2 <HAL_UART_ErrorCallback>: + 800a3b2: 4770 bx lr + +0800a3b4 <UART_DMAError>: + 800a3b4: 6a80 ldr r0, [r0, #40] ; 0x28 + 800a3b6: b538 push {r3, r4, r5, lr} + 800a3b8: 6804 ldr r4, [r0, #0] + 800a3ba: f8d0 3088 ldr.w r3, [r0, #136] ; 0x88 + 800a3be: f8d0 508c ldr.w r5, [r0, #140] ; 0x8c + 800a3c2: 68a2 ldr r2, [r4, #8] + 800a3c4: 0612 lsls r2, r2, #24 + 800a3c6: d506 bpl.n 800a3d6 <UART_DMAError+0x22> + 800a3c8: 2b21 cmp r3, #33 ; 0x21 + 800a3ca: d104 bne.n 800a3d6 <UART_DMAError+0x22> + 800a3cc: 2300 movs r3, #0 + 800a3ce: f8a0 3056 strh.w r3, [r0, #86] ; 0x56 + 800a3d2: f7ff ff3c bl 800a24e <UART_EndTxTransfer> + 800a3d6: 68a3 ldr r3, [r4, #8] + 800a3d8: 065b lsls r3, r3, #25 + 800a3da: d506 bpl.n 800a3ea <UART_DMAError+0x36> + 800a3dc: 2d22 cmp r5, #34 ; 0x22 + 800a3de: d104 bne.n 800a3ea <UART_DMAError+0x36> + 800a3e0: 2300 movs r3, #0 + 800a3e2: f8a0 305e strh.w r3, [r0, #94] ; 0x5e + 800a3e6: f7ff ff4d bl 800a284 <UART_EndRxTransfer> + 800a3ea: f8d0 3090 ldr.w r3, [r0, #144] ; 0x90 + 800a3ee: f043 0310 orr.w r3, r3, #16 + 800a3f2: f8c0 3090 str.w r3, [r0, #144] ; 0x90 + 800a3f6: f7ff ffdc bl 800a3b2 <HAL_UART_ErrorCallback> + 800a3fa: bd38 pop {r3, r4, r5, pc} + +0800a3fc <UART_DMAAbortOnError>: + 800a3fc: b508 push {r3, lr} + 800a3fe: 6a80 ldr r0, [r0, #40] ; 0x28 + 800a400: 2300 movs r3, #0 + 800a402: f8a0 305e strh.w r3, [r0, #94] ; 0x5e + 800a406: f8a0 3056 strh.w r3, [r0, #86] ; 0x56 + 800a40a: f7ff ffd2 bl 800a3b2 <HAL_UART_ErrorCallback> + 800a40e: bd08 pop {r3, pc} + +0800a410 <HAL_UARTEx_RxEventCallback>: + 800a410: 4770 bx lr + ... + +0800a414 <HAL_UART_IRQHandler>: + 800a414: 6803 ldr r3, [r0, #0] + 800a416: 69d9 ldr r1, [r3, #28] + 800a418: 681a ldr r2, [r3, #0] + 800a41a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800a41e: f640 060f movw r6, #2063 ; 0x80f + 800a422: 4231 tst r1, r6 + 800a424: 689d ldr r5, [r3, #8] + 800a426: 4604 mov r4, r0 + 800a428: d110 bne.n 800a44c <HAL_UART_IRQHandler+0x38> + 800a42a: 068e lsls r6, r1, #26 + 800a42c: f140 8097 bpl.w 800a55e <HAL_UART_IRQHandler+0x14a> + 800a430: f002 0620 and.w r6, r2, #32 + 800a434: f005 5780 and.w r7, r5, #268435456 ; 0x10000000 + 800a438: 433e orrs r6, r7 + 800a43a: f000 8090 beq.w 800a55e <HAL_UART_IRQHandler+0x14a> + 800a43e: 6f43 ldr r3, [r0, #116] ; 0x74 + 800a440: 2b00 cmp r3, #0 + 800a442: f000 8085 beq.w 800a550 <HAL_UART_IRQHandler+0x13c> + 800a446: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800a44a: 4718 bx r3 + 800a44c: 4eab ldr r6, [pc, #684] ; (800a6fc <HAL_UART_IRQHandler+0x2e8>) + 800a44e: 48ac ldr r0, [pc, #688] ; (800a700 <HAL_UART_IRQHandler+0x2ec>) + 800a450: 402e ands r6, r5 + 800a452: 4010 ands r0, r2 + 800a454: 4330 orrs r0, r6 + 800a456: f000 8082 beq.w 800a55e <HAL_UART_IRQHandler+0x14a> + 800a45a: 07cf lsls r7, r1, #31 + 800a45c: d509 bpl.n 800a472 <HAL_UART_IRQHandler+0x5e> + 800a45e: 05d0 lsls r0, r2, #23 + 800a460: d507 bpl.n 800a472 <HAL_UART_IRQHandler+0x5e> + 800a462: 2001 movs r0, #1 + 800a464: 6218 str r0, [r3, #32] + 800a466: f8d4 0090 ldr.w r0, [r4, #144] ; 0x90 + 800a46a: f040 0001 orr.w r0, r0, #1 + 800a46e: f8c4 0090 str.w r0, [r4, #144] ; 0x90 + 800a472: 078f lsls r7, r1, #30 + 800a474: d509 bpl.n 800a48a <HAL_UART_IRQHandler+0x76> + 800a476: 07e8 lsls r0, r5, #31 + 800a478: d507 bpl.n 800a48a <HAL_UART_IRQHandler+0x76> + 800a47a: 2002 movs r0, #2 + 800a47c: 6218 str r0, [r3, #32] + 800a47e: f8d4 0090 ldr.w r0, [r4, #144] ; 0x90 + 800a482: f040 0004 orr.w r0, r0, #4 + 800a486: f8c4 0090 str.w r0, [r4, #144] ; 0x90 + 800a48a: 074f lsls r7, r1, #29 + 800a48c: d509 bpl.n 800a4a2 <HAL_UART_IRQHandler+0x8e> + 800a48e: 07e8 lsls r0, r5, #31 + 800a490: d507 bpl.n 800a4a2 <HAL_UART_IRQHandler+0x8e> + 800a492: 2004 movs r0, #4 + 800a494: 6218 str r0, [r3, #32] + 800a496: f8d4 0090 ldr.w r0, [r4, #144] ; 0x90 + 800a49a: f040 0002 orr.w r0, r0, #2 + 800a49e: f8c4 0090 str.w r0, [r4, #144] ; 0x90 + 800a4a2: 070f lsls r7, r1, #28 + 800a4a4: d50b bpl.n 800a4be <HAL_UART_IRQHandler+0xaa> + 800a4a6: f002 0020 and.w r0, r2, #32 + 800a4aa: 4330 orrs r0, r6 + 800a4ac: d007 beq.n 800a4be <HAL_UART_IRQHandler+0xaa> + 800a4ae: 2008 movs r0, #8 + 800a4b0: 6218 str r0, [r3, #32] + 800a4b2: f8d4 0090 ldr.w r0, [r4, #144] ; 0x90 + 800a4b6: f040 0008 orr.w r0, r0, #8 + 800a4ba: f8c4 0090 str.w r0, [r4, #144] ; 0x90 + 800a4be: 050e lsls r6, r1, #20 + 800a4c0: d50a bpl.n 800a4d8 <HAL_UART_IRQHandler+0xc4> + 800a4c2: 0150 lsls r0, r2, #5 + 800a4c4: d508 bpl.n 800a4d8 <HAL_UART_IRQHandler+0xc4> + 800a4c6: f44f 6000 mov.w r0, #2048 ; 0x800 + 800a4ca: 6218 str r0, [r3, #32] + 800a4cc: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800a4d0: f043 0320 orr.w r3, r3, #32 + 800a4d4: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800a4d8: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800a4dc: 2b00 cmp r3, #0 + 800a4de: d037 beq.n 800a550 <HAL_UART_IRQHandler+0x13c> + 800a4e0: 068b lsls r3, r1, #26 + 800a4e2: d509 bpl.n 800a4f8 <HAL_UART_IRQHandler+0xe4> + 800a4e4: f002 0220 and.w r2, r2, #32 + 800a4e8: f005 5580 and.w r5, r5, #268435456 ; 0x10000000 + 800a4ec: 432a orrs r2, r5 + 800a4ee: d003 beq.n 800a4f8 <HAL_UART_IRQHandler+0xe4> + 800a4f0: 6f63 ldr r3, [r4, #116] ; 0x74 + 800a4f2: b10b cbz r3, 800a4f8 <HAL_UART_IRQHandler+0xe4> + 800a4f4: 4620 mov r0, r4 + 800a4f6: 4798 blx r3 + 800a4f8: 6826 ldr r6, [r4, #0] + 800a4fa: f8d4 2090 ldr.w r2, [r4, #144] ; 0x90 + 800a4fe: 68b3 ldr r3, [r6, #8] + 800a500: f002 0228 and.w r2, r2, #40 ; 0x28 + 800a504: f003 0340 and.w r3, r3, #64 ; 0x40 + 800a508: ea53 0502 orrs.w r5, r3, r2 + 800a50c: 4620 mov r0, r4 + 800a50e: d021 beq.n 800a554 <HAL_UART_IRQHandler+0x140> + 800a510: f7ff feb8 bl 800a284 <UART_EndRxTransfer> + 800a514: 68b3 ldr r3, [r6, #8] + 800a516: 065f lsls r7, r3, #25 + 800a518: d517 bpl.n 800a54a <HAL_UART_IRQHandler+0x136> + 800a51a: 6822 ldr r2, [r4, #0] + 800a51c: f102 0308 add.w r3, r2, #8 + 800a520: e853 3f00 ldrex r3, [r3] + 800a524: f023 0340 bic.w r3, r3, #64 ; 0x40 + 800a528: 3208 adds r2, #8 + 800a52a: e842 3100 strex r1, r3, [r2] + 800a52e: 2900 cmp r1, #0 + 800a530: d1f3 bne.n 800a51a <HAL_UART_IRQHandler+0x106> + 800a532: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800a536: b140 cbz r0, 800a54a <HAL_UART_IRQHandler+0x136> + 800a538: 4b72 ldr r3, [pc, #456] ; (800a704 <HAL_UART_IRQHandler+0x2f0>) + 800a53a: 6383 str r3, [r0, #56] ; 0x38 + 800a53c: f7fd fdad bl 800809a <HAL_DMA_Abort_IT> + 800a540: b130 cbz r0, 800a550 <HAL_UART_IRQHandler+0x13c> + 800a542: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800a546: 6b83 ldr r3, [r0, #56] ; 0x38 + 800a548: e77d b.n 800a446 <HAL_UART_IRQHandler+0x32> + 800a54a: 4620 mov r0, r4 + 800a54c: f7ff ff31 bl 800a3b2 <HAL_UART_ErrorCallback> + 800a550: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800a554: f7ff ff2d bl 800a3b2 <HAL_UART_ErrorCallback> + 800a558: f8c4 5090 str.w r5, [r4, #144] ; 0x90 + 800a55c: e7f8 b.n 800a550 <HAL_UART_IRQHandler+0x13c> + 800a55e: 6ee0 ldr r0, [r4, #108] ; 0x6c + 800a560: 2801 cmp r0, #1 + 800a562: f040 8089 bne.w 800a678 <HAL_UART_IRQHandler+0x264> + 800a566: 06ce lsls r6, r1, #27 + 800a568: f140 8086 bpl.w 800a678 <HAL_UART_IRQHandler+0x264> + 800a56c: 06d0 lsls r0, r2, #27 + 800a56e: f140 8083 bpl.w 800a678 <HAL_UART_IRQHandler+0x264> + 800a572: 2210 movs r2, #16 + 800a574: 621a str r2, [r3, #32] + 800a576: 689a ldr r2, [r3, #8] + 800a578: 0651 lsls r1, r2, #25 + 800a57a: d54b bpl.n 800a614 <HAL_UART_IRQHandler+0x200> + 800a57c: f8d4 2080 ldr.w r2, [r4, #128] ; 0x80 + 800a580: 6811 ldr r1, [r2, #0] + 800a582: 684a ldr r2, [r1, #4] + 800a584: b292 uxth r2, r2 + 800a586: 2a00 cmp r2, #0 + 800a588: d0e2 beq.n 800a550 <HAL_UART_IRQHandler+0x13c> + 800a58a: f8b4 005c ldrh.w r0, [r4, #92] ; 0x5c + 800a58e: 4290 cmp r0, r2 + 800a590: d9de bls.n 800a550 <HAL_UART_IRQHandler+0x13c> + 800a592: f8a4 205e strh.w r2, [r4, #94] ; 0x5e + 800a596: 680a ldr r2, [r1, #0] + 800a598: 0692 lsls r2, r2, #26 + 800a59a: d42f bmi.n 800a5fc <HAL_UART_IRQHandler+0x1e8> + 800a59c: e853 2f00 ldrex r2, [r3] + 800a5a0: f422 7280 bic.w r2, r2, #256 ; 0x100 + 800a5a4: e843 2100 strex r1, r2, [r3] + 800a5a8: 2900 cmp r1, #0 + 800a5aa: d1f7 bne.n 800a59c <HAL_UART_IRQHandler+0x188> + 800a5ac: f103 0208 add.w r2, r3, #8 + 800a5b0: e852 2f00 ldrex r2, [r2] + 800a5b4: f022 0201 bic.w r2, r2, #1 + 800a5b8: f103 0008 add.w r0, r3, #8 + 800a5bc: e840 2100 strex r1, r2, [r0] + 800a5c0: 2900 cmp r1, #0 + 800a5c2: d1f3 bne.n 800a5ac <HAL_UART_IRQHandler+0x198> + 800a5c4: f103 0208 add.w r2, r3, #8 + 800a5c8: e852 2f00 ldrex r2, [r2] + 800a5cc: f022 0240 bic.w r2, r2, #64 ; 0x40 + 800a5d0: f103 0008 add.w r0, r3, #8 + 800a5d4: e840 2100 strex r1, r2, [r0] + 800a5d8: 2900 cmp r1, #0 + 800a5da: d1f3 bne.n 800a5c4 <HAL_UART_IRQHandler+0x1b0> + 800a5dc: 2220 movs r2, #32 + 800a5de: f8c4 208c str.w r2, [r4, #140] ; 0x8c + 800a5e2: 66e1 str r1, [r4, #108] ; 0x6c + 800a5e4: e853 2f00 ldrex r2, [r3] + 800a5e8: f022 0210 bic.w r2, r2, #16 + 800a5ec: e843 2100 strex r1, r2, [r3] + 800a5f0: 2900 cmp r1, #0 + 800a5f2: d1f7 bne.n 800a5e4 <HAL_UART_IRQHandler+0x1d0> + 800a5f4: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800a5f8: f7fd fd1a bl 8008030 <HAL_DMA_Abort> + 800a5fc: 2302 movs r3, #2 + 800a5fe: 6723 str r3, [r4, #112] ; 0x70 + 800a600: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800a604: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800a608: 1ac9 subs r1, r1, r3 + 800a60a: b289 uxth r1, r1 + 800a60c: 4620 mov r0, r4 + 800a60e: f7ff feff bl 800a410 <HAL_UARTEx_RxEventCallback> + 800a612: e79d b.n 800a550 <HAL_UART_IRQHandler+0x13c> + 800a614: f8b4 205e ldrh.w r2, [r4, #94] ; 0x5e + 800a618: f8b4 005e ldrh.w r0, [r4, #94] ; 0x5e + 800a61c: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800a620: b280 uxth r0, r0 + 800a622: b292 uxth r2, r2 + 800a624: 2800 cmp r0, #0 + 800a626: d093 beq.n 800a550 <HAL_UART_IRQHandler+0x13c> + 800a628: 1a89 subs r1, r1, r2 + 800a62a: b289 uxth r1, r1 + 800a62c: 2900 cmp r1, #0 + 800a62e: d08f beq.n 800a550 <HAL_UART_IRQHandler+0x13c> + 800a630: e853 2f00 ldrex r2, [r3] + 800a634: f422 7290 bic.w r2, r2, #288 ; 0x120 + 800a638: e843 2000 strex r0, r2, [r3] + 800a63c: 2800 cmp r0, #0 + 800a63e: d1f7 bne.n 800a630 <HAL_UART_IRQHandler+0x21c> + 800a640: 4d31 ldr r5, [pc, #196] ; (800a708 <HAL_UART_IRQHandler+0x2f4>) + 800a642: f103 0208 add.w r2, r3, #8 + 800a646: e852 2f00 ldrex r2, [r2] + 800a64a: 402a ands r2, r5 + 800a64c: f103 0608 add.w r6, r3, #8 + 800a650: e846 2000 strex r0, r2, [r6] + 800a654: 2800 cmp r0, #0 + 800a656: d1f4 bne.n 800a642 <HAL_UART_IRQHandler+0x22e> + 800a658: 2220 movs r2, #32 + 800a65a: f8c4 208c str.w r2, [r4, #140] ; 0x8c + 800a65e: 6760 str r0, [r4, #116] ; 0x74 + 800a660: 66e0 str r0, [r4, #108] ; 0x6c + 800a662: e853 2f00 ldrex r2, [r3] + 800a666: f022 0210 bic.w r2, r2, #16 + 800a66a: e843 2000 strex r0, r2, [r3] + 800a66e: 2800 cmp r0, #0 + 800a670: d1f7 bne.n 800a662 <HAL_UART_IRQHandler+0x24e> + 800a672: 2302 movs r3, #2 + 800a674: 6723 str r3, [r4, #112] ; 0x70 + 800a676: e7c9 b.n 800a60c <HAL_UART_IRQHandler+0x1f8> + 800a678: 02cf lsls r7, r1, #11 + 800a67a: d509 bpl.n 800a690 <HAL_UART_IRQHandler+0x27c> + 800a67c: 026e lsls r6, r5, #9 + 800a67e: d507 bpl.n 800a690 <HAL_UART_IRQHandler+0x27c> + 800a680: f44f 1280 mov.w r2, #1048576 ; 0x100000 + 800a684: 4620 mov r0, r4 + 800a686: 621a str r2, [r3, #32] + 800a688: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800a68c: f000 bda0 b.w 800b1d0 <HAL_UARTEx_WakeupCallback> + 800a690: 0608 lsls r0, r1, #24 + 800a692: d50b bpl.n 800a6ac <HAL_UART_IRQHandler+0x298> + 800a694: f002 0080 and.w r0, r2, #128 ; 0x80 + 800a698: f405 0500 and.w r5, r5, #8388608 ; 0x800000 + 800a69c: 4328 orrs r0, r5 + 800a69e: d005 beq.n 800a6ac <HAL_UART_IRQHandler+0x298> + 800a6a0: 6fa3 ldr r3, [r4, #120] ; 0x78 + 800a6a2: 2b00 cmp r3, #0 + 800a6a4: f43f af54 beq.w 800a550 <HAL_UART_IRQHandler+0x13c> + 800a6a8: 4620 mov r0, r4 + 800a6aa: e6cc b.n 800a446 <HAL_UART_IRQHandler+0x32> + 800a6ac: 064f lsls r7, r1, #25 + 800a6ae: d511 bpl.n 800a6d4 <HAL_UART_IRQHandler+0x2c0> + 800a6b0: 0656 lsls r6, r2, #25 + 800a6b2: d50f bpl.n 800a6d4 <HAL_UART_IRQHandler+0x2c0> + 800a6b4: e853 2f00 ldrex r2, [r3] + 800a6b8: f022 0240 bic.w r2, r2, #64 ; 0x40 + 800a6bc: e843 2100 strex r1, r2, [r3] + 800a6c0: 2900 cmp r1, #0 + 800a6c2: d1f7 bne.n 800a6b4 <HAL_UART_IRQHandler+0x2a0> + 800a6c4: 2320 movs r3, #32 + 800a6c6: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800a6ca: 67a1 str r1, [r4, #120] ; 0x78 + 800a6cc: 4620 mov r0, r4 + 800a6ce: f7f8 fd11 bl 80030f4 <HAL_UART_TxCpltCallback> + 800a6d2: e73d b.n 800a550 <HAL_UART_IRQHandler+0x13c> + 800a6d4: 020d lsls r5, r1, #8 + 800a6d6: d506 bpl.n 800a6e6 <HAL_UART_IRQHandler+0x2d2> + 800a6d8: 0050 lsls r0, r2, #1 + 800a6da: d504 bpl.n 800a6e6 <HAL_UART_IRQHandler+0x2d2> + 800a6dc: 4620 mov r0, r4 + 800a6de: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800a6e2: f000 bd77 b.w 800b1d4 <HAL_UARTEx_TxFifoEmptyCallback> + 800a6e6: 01cb lsls r3, r1, #7 + 800a6e8: f57f af32 bpl.w 800a550 <HAL_UART_IRQHandler+0x13c> + 800a6ec: 2a00 cmp r2, #0 + 800a6ee: f6bf af2f bge.w 800a550 <HAL_UART_IRQHandler+0x13c> + 800a6f2: 4620 mov r0, r4 + 800a6f4: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800a6f8: f000 bd6b b.w 800b1d2 <HAL_UARTEx_RxFifoFullCallback> + 800a6fc: 10000001 .word 0x10000001 + 800a700: 04000120 .word 0x04000120 + 800a704: 0800a3fd .word 0x0800a3fd + 800a708: effffffe .word 0xeffffffe + +0800a70c <UART_RxISR_8BIT>: + 800a70c: f8d0 208c ldr.w r2, [r0, #140] ; 0x8c + 800a710: f8b0 1060 ldrh.w r1, [r0, #96] ; 0x60 + 800a714: 2a22 cmp r2, #34 ; 0x22 + 800a716: b508 push {r3, lr} + 800a718: 6803 ldr r3, [r0, #0] + 800a71a: d155 bne.n 800a7c8 <UART_RxISR_8BIT+0xbc> + 800a71c: 6a5b ldr r3, [r3, #36] ; 0x24 + 800a71e: 6d82 ldr r2, [r0, #88] ; 0x58 + 800a720: 400b ands r3, r1 + 800a722: 7013 strb r3, [r2, #0] + 800a724: 6d83 ldr r3, [r0, #88] ; 0x58 + 800a726: 3301 adds r3, #1 + 800a728: 6583 str r3, [r0, #88] ; 0x58 + 800a72a: f8b0 305e ldrh.w r3, [r0, #94] ; 0x5e + 800a72e: 3b01 subs r3, #1 + 800a730: b29b uxth r3, r3 + 800a732: f8a0 305e strh.w r3, [r0, #94] ; 0x5e + 800a736: f8b0 305e ldrh.w r3, [r0, #94] ; 0x5e + 800a73a: b29b uxth r3, r3 + 800a73c: 2b00 cmp r3, #0 + 800a73e: d142 bne.n 800a7c6 <UART_RxISR_8BIT+0xba> + 800a740: 6802 ldr r2, [r0, #0] + 800a742: e852 3f00 ldrex r3, [r2] + 800a746: f423 7390 bic.w r3, r3, #288 ; 0x120 + 800a74a: e842 3100 strex r1, r3, [r2] + 800a74e: 6803 ldr r3, [r0, #0] + 800a750: 2900 cmp r1, #0 + 800a752: d1f5 bne.n 800a740 <UART_RxISR_8BIT+0x34> + 800a754: f103 0208 add.w r2, r3, #8 + 800a758: e852 2f00 ldrex r2, [r2] + 800a75c: f022 0201 bic.w r2, r2, #1 + 800a760: f103 0c08 add.w ip, r3, #8 + 800a764: e84c 2100 strex r1, r2, [ip] + 800a768: 2900 cmp r1, #0 + 800a76a: d1f3 bne.n 800a754 <UART_RxISR_8BIT+0x48> + 800a76c: 2220 movs r2, #32 + 800a76e: f8c0 208c str.w r2, [r0, #140] ; 0x8c + 800a772: 4a18 ldr r2, [pc, #96] ; (800a7d4 <UART_RxISR_8BIT+0xc8>) + 800a774: 6741 str r1, [r0, #116] ; 0x74 + 800a776: 4293 cmp r3, r2 + 800a778: 6701 str r1, [r0, #112] ; 0x70 + 800a77a: d105 bne.n 800a788 <UART_RxISR_8BIT+0x7c> + 800a77c: 6ec2 ldr r2, [r0, #108] ; 0x6c + 800a77e: 2a01 cmp r2, #1 + 800a780: d00e beq.n 800a7a0 <UART_RxISR_8BIT+0x94> + 800a782: f7f8 fcc5 bl 8003110 <HAL_UART_RxCpltCallback> + 800a786: e01e b.n 800a7c6 <UART_RxISR_8BIT+0xba> + 800a788: 685a ldr r2, [r3, #4] + 800a78a: 0211 lsls r1, r2, #8 + 800a78c: d5f6 bpl.n 800a77c <UART_RxISR_8BIT+0x70> + 800a78e: e853 2f00 ldrex r2, [r3] + 800a792: f022 6280 bic.w r2, r2, #67108864 ; 0x4000000 + 800a796: e843 2100 strex r1, r2, [r3] + 800a79a: 2900 cmp r1, #0 + 800a79c: d1f7 bne.n 800a78e <UART_RxISR_8BIT+0x82> + 800a79e: e7ed b.n 800a77c <UART_RxISR_8BIT+0x70> + 800a7a0: 2200 movs r2, #0 + 800a7a2: 66c2 str r2, [r0, #108] ; 0x6c + 800a7a4: e853 2f00 ldrex r2, [r3] + 800a7a8: f022 0210 bic.w r2, r2, #16 + 800a7ac: e843 2100 strex r1, r2, [r3] + 800a7b0: 2900 cmp r1, #0 + 800a7b2: d1f7 bne.n 800a7a4 <UART_RxISR_8BIT+0x98> + 800a7b4: 69da ldr r2, [r3, #28] + 800a7b6: f8b0 105c ldrh.w r1, [r0, #92] ; 0x5c + 800a7ba: 06d2 lsls r2, r2, #27 + 800a7bc: bf44 itt mi + 800a7be: 2210 movmi r2, #16 + 800a7c0: 621a strmi r2, [r3, #32] + 800a7c2: f7ff fe25 bl 800a410 <HAL_UARTEx_RxEventCallback> + 800a7c6: bd08 pop {r3, pc} + 800a7c8: 699a ldr r2, [r3, #24] + 800a7ca: f042 0208 orr.w r2, r2, #8 + 800a7ce: 619a str r2, [r3, #24] + 800a7d0: e7f9 b.n 800a7c6 <UART_RxISR_8BIT+0xba> + 800a7d2: bf00 nop + 800a7d4: 40008000 .word 0x40008000 + +0800a7d8 <UART_RxISR_16BIT>: + 800a7d8: f8d0 208c ldr.w r2, [r0, #140] ; 0x8c + 800a7dc: f8b0 1060 ldrh.w r1, [r0, #96] ; 0x60 + 800a7e0: 2a22 cmp r2, #34 ; 0x22 + 800a7e2: b508 push {r3, lr} + 800a7e4: 6803 ldr r3, [r0, #0] + 800a7e6: d152 bne.n 800a88e <UART_RxISR_16BIT+0xb6> + 800a7e8: 6a5a ldr r2, [r3, #36] ; 0x24 + 800a7ea: 4011 ands r1, r2 + 800a7ec: 6d82 ldr r2, [r0, #88] ; 0x58 + 800a7ee: f822 1b02 strh.w r1, [r2], #2 + 800a7f2: 6582 str r2, [r0, #88] ; 0x58 + 800a7f4: f8b0 205e ldrh.w r2, [r0, #94] ; 0x5e + 800a7f8: 3a01 subs r2, #1 + 800a7fa: b292 uxth r2, r2 + 800a7fc: f8a0 205e strh.w r2, [r0, #94] ; 0x5e + 800a800: f8b0 205e ldrh.w r2, [r0, #94] ; 0x5e + 800a804: b292 uxth r2, r2 + 800a806: 2a00 cmp r2, #0 + 800a808: d140 bne.n 800a88c <UART_RxISR_16BIT+0xb4> + 800a80a: e853 2f00 ldrex r2, [r3] + 800a80e: f422 7290 bic.w r2, r2, #288 ; 0x120 + 800a812: e843 2100 strex r1, r2, [r3] + 800a816: 2900 cmp r1, #0 + 800a818: d1f7 bne.n 800a80a <UART_RxISR_16BIT+0x32> + 800a81a: f103 0208 add.w r2, r3, #8 + 800a81e: e852 2f00 ldrex r2, [r2] + 800a822: f022 0201 bic.w r2, r2, #1 + 800a826: f103 0c08 add.w ip, r3, #8 + 800a82a: e84c 2100 strex r1, r2, [ip] + 800a82e: 2900 cmp r1, #0 + 800a830: d1f3 bne.n 800a81a <UART_RxISR_16BIT+0x42> + 800a832: 2220 movs r2, #32 + 800a834: f8c0 208c str.w r2, [r0, #140] ; 0x8c + 800a838: 4a17 ldr r2, [pc, #92] ; (800a898 <UART_RxISR_16BIT+0xc0>) + 800a83a: 6741 str r1, [r0, #116] ; 0x74 + 800a83c: 4293 cmp r3, r2 + 800a83e: 6701 str r1, [r0, #112] ; 0x70 + 800a840: d105 bne.n 800a84e <UART_RxISR_16BIT+0x76> + 800a842: 6ec2 ldr r2, [r0, #108] ; 0x6c + 800a844: 2a01 cmp r2, #1 + 800a846: d00e beq.n 800a866 <UART_RxISR_16BIT+0x8e> + 800a848: f7f8 fc62 bl 8003110 <HAL_UART_RxCpltCallback> + 800a84c: e01e b.n 800a88c <UART_RxISR_16BIT+0xb4> + 800a84e: 685a ldr r2, [r3, #4] + 800a850: 0211 lsls r1, r2, #8 + 800a852: d5f6 bpl.n 800a842 <UART_RxISR_16BIT+0x6a> + 800a854: e853 2f00 ldrex r2, [r3] + 800a858: f022 6280 bic.w r2, r2, #67108864 ; 0x4000000 + 800a85c: e843 2100 strex r1, r2, [r3] + 800a860: 2900 cmp r1, #0 + 800a862: d1f7 bne.n 800a854 <UART_RxISR_16BIT+0x7c> + 800a864: e7ed b.n 800a842 <UART_RxISR_16BIT+0x6a> + 800a866: 2200 movs r2, #0 + 800a868: 66c2 str r2, [r0, #108] ; 0x6c + 800a86a: e853 2f00 ldrex r2, [r3] + 800a86e: f022 0210 bic.w r2, r2, #16 + 800a872: e843 2100 strex r1, r2, [r3] + 800a876: 2900 cmp r1, #0 + 800a878: d1f7 bne.n 800a86a <UART_RxISR_16BIT+0x92> + 800a87a: 69da ldr r2, [r3, #28] + 800a87c: f8b0 105c ldrh.w r1, [r0, #92] ; 0x5c + 800a880: 06d2 lsls r2, r2, #27 + 800a882: bf44 itt mi + 800a884: 2210 movmi r2, #16 + 800a886: 621a strmi r2, [r3, #32] + 800a888: f7ff fdc2 bl 800a410 <HAL_UARTEx_RxEventCallback> + 800a88c: bd08 pop {r3, pc} + 800a88e: 699a ldr r2, [r3, #24] + 800a890: f042 0208 orr.w r2, r2, #8 + 800a894: 619a str r2, [r3, #24] + 800a896: e7f9 b.n 800a88c <UART_RxISR_16BIT+0xb4> + 800a898: 40008000 .word 0x40008000 + +0800a89c <UART_RxISR_8BIT_FIFOEN>: + 800a89c: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800a8a0: 6803 ldr r3, [r0, #0] + 800a8a2: f8b0 8060 ldrh.w r8, [r0, #96] ; 0x60 + 800a8a6: 69df ldr r7, [r3, #28] + 800a8a8: 681a ldr r2, [r3, #0] + 800a8aa: 689d ldr r5, [r3, #8] + 800a8ac: f8d0 108c ldr.w r1, [r0, #140] ; 0x8c + 800a8b0: 9201 str r2, [sp, #4] + 800a8b2: 2922 cmp r1, #34 ; 0x22 + 800a8b4: 4604 mov r4, r0 + 800a8b6: f040 80b4 bne.w 800aa22 <UART_RxISR_8BIT_FIFOEN+0x186> + 800a8ba: f8b0 9068 ldrh.w r9, [r0, #104] ; 0x68 + 800a8be: f8df a16c ldr.w sl, [pc, #364] ; 800aa2c <UART_RxISR_8BIT_FIFOEN+0x190> + 800a8c2: f8df b16c ldr.w fp, [pc, #364] ; 800aa30 <UART_RxISR_8BIT_FIFOEN+0x194> + 800a8c6: 2600 movs r6, #0 + 800a8c8: f1b9 0f00 cmp.w r9, #0 + 800a8cc: d001 beq.n 800a8d2 <UART_RxISR_8BIT_FIFOEN+0x36> + 800a8ce: 06bb lsls r3, r7, #26 + 800a8d0: d421 bmi.n 800a916 <UART_RxISR_8BIT_FIFOEN+0x7a> + 800a8d2: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800a8d6: b29b uxth r3, r3 + 800a8d8: b1d3 cbz r3, 800a910 <UART_RxISR_8BIT_FIFOEN+0x74> + 800a8da: f8b4 2068 ldrh.w r2, [r4, #104] ; 0x68 + 800a8de: 429a cmp r2, r3 + 800a8e0: d916 bls.n 800a910 <UART_RxISR_8BIT_FIFOEN+0x74> + 800a8e2: 6822 ldr r2, [r4, #0] + 800a8e4: f102 0308 add.w r3, r2, #8 + 800a8e8: e853 3f00 ldrex r3, [r3] + 800a8ec: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 800a8f0: 3208 adds r2, #8 + 800a8f2: e842 3100 strex r1, r3, [r2] + 800a8f6: 6822 ldr r2, [r4, #0] + 800a8f8: 2900 cmp r1, #0 + 800a8fa: d1f2 bne.n 800a8e2 <UART_RxISR_8BIT_FIFOEN+0x46> + 800a8fc: 4b4d ldr r3, [pc, #308] ; (800aa34 <UART_RxISR_8BIT_FIFOEN+0x198>) + 800a8fe: 6763 str r3, [r4, #116] ; 0x74 + 800a900: e852 3f00 ldrex r3, [r2] + 800a904: f043 0320 orr.w r3, r3, #32 + 800a908: e842 3100 strex r1, r3, [r2] + 800a90c: 2900 cmp r1, #0 + 800a90e: d1f7 bne.n 800a900 <UART_RxISR_8BIT_FIFOEN+0x64> + 800a910: b003 add sp, #12 + 800a912: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800a916: 6823 ldr r3, [r4, #0] + 800a918: 6da2 ldr r2, [r4, #88] ; 0x58 + 800a91a: 6a5b ldr r3, [r3, #36] ; 0x24 + 800a91c: ea03 0308 and.w r3, r3, r8 + 800a920: 7013 strb r3, [r2, #0] + 800a922: 6da3 ldr r3, [r4, #88] ; 0x58 + 800a924: 3301 adds r3, #1 + 800a926: 65a3 str r3, [r4, #88] ; 0x58 + 800a928: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800a92c: 3b01 subs r3, #1 + 800a92e: b29b uxth r3, r3 + 800a930: f8a4 305e strh.w r3, [r4, #94] ; 0x5e + 800a934: 6823 ldr r3, [r4, #0] + 800a936: 69df ldr r7, [r3, #28] + 800a938: 0778 lsls r0, r7, #29 + 800a93a: d02c beq.n 800a996 <UART_RxISR_8BIT_FIFOEN+0xfa> + 800a93c: 07f9 lsls r1, r7, #31 + 800a93e: d50a bpl.n 800a956 <UART_RxISR_8BIT_FIFOEN+0xba> + 800a940: 9a01 ldr r2, [sp, #4] + 800a942: 05d2 lsls r2, r2, #23 + 800a944: d507 bpl.n 800a956 <UART_RxISR_8BIT_FIFOEN+0xba> + 800a946: 2101 movs r1, #1 + 800a948: 6219 str r1, [r3, #32] + 800a94a: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800a94e: f041 0101 orr.w r1, r1, #1 + 800a952: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + 800a956: 07b8 lsls r0, r7, #30 + 800a958: d509 bpl.n 800a96e <UART_RxISR_8BIT_FIFOEN+0xd2> + 800a95a: 07e9 lsls r1, r5, #31 + 800a95c: d507 bpl.n 800a96e <UART_RxISR_8BIT_FIFOEN+0xd2> + 800a95e: 2102 movs r1, #2 + 800a960: 6219 str r1, [r3, #32] + 800a962: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800a966: f041 0104 orr.w r1, r1, #4 + 800a96a: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + 800a96e: 077a lsls r2, r7, #29 + 800a970: d509 bpl.n 800a986 <UART_RxISR_8BIT_FIFOEN+0xea> + 800a972: 07e8 lsls r0, r5, #31 + 800a974: d507 bpl.n 800a986 <UART_RxISR_8BIT_FIFOEN+0xea> + 800a976: 2104 movs r1, #4 + 800a978: 6219 str r1, [r3, #32] + 800a97a: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800a97e: f043 0302 orr.w r3, r3, #2 + 800a982: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800a986: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800a98a: b123 cbz r3, 800a996 <UART_RxISR_8BIT_FIFOEN+0xfa> + 800a98c: 4620 mov r0, r4 + 800a98e: f7ff fd10 bl 800a3b2 <HAL_UART_ErrorCallback> + 800a992: f8c4 6090 str.w r6, [r4, #144] ; 0x90 + 800a996: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800a99a: b29b uxth r3, r3 + 800a99c: 2b00 cmp r3, #0 + 800a99e: d193 bne.n 800a8c8 <UART_RxISR_8BIT_FIFOEN+0x2c> + 800a9a0: 6821 ldr r1, [r4, #0] + 800a9a2: e851 3f00 ldrex r3, [r1] + 800a9a6: f423 7380 bic.w r3, r3, #256 ; 0x100 + 800a9aa: e841 3000 strex r0, r3, [r1] + 800a9ae: 6823 ldr r3, [r4, #0] + 800a9b0: 2800 cmp r0, #0 + 800a9b2: d1f5 bne.n 800a9a0 <UART_RxISR_8BIT_FIFOEN+0x104> + 800a9b4: f103 0208 add.w r2, r3, #8 + 800a9b8: e852 1f00 ldrex r1, [r2] + 800a9bc: ea01 010a and.w r1, r1, sl + 800a9c0: e842 1000 strex r0, r1, [r2] + 800a9c4: 2800 cmp r0, #0 + 800a9c6: d1f5 bne.n 800a9b4 <UART_RxISR_8BIT_FIFOEN+0x118> + 800a9c8: 2120 movs r1, #32 + 800a9ca: 455b cmp r3, fp + 800a9cc: f8c4 108c str.w r1, [r4, #140] ; 0x8c + 800a9d0: 6760 str r0, [r4, #116] ; 0x74 + 800a9d2: 6720 str r0, [r4, #112] ; 0x70 + 800a9d4: d00a beq.n 800a9ec <UART_RxISR_8BIT_FIFOEN+0x150> + 800a9d6: 6859 ldr r1, [r3, #4] + 800a9d8: 0209 lsls r1, r1, #8 + 800a9da: d507 bpl.n 800a9ec <UART_RxISR_8BIT_FIFOEN+0x150> + 800a9dc: e853 1f00 ldrex r1, [r3] + 800a9e0: f021 6180 bic.w r1, r1, #67108864 ; 0x4000000 + 800a9e4: e843 1000 strex r0, r1, [r3] + 800a9e8: 2800 cmp r0, #0 + 800a9ea: d1f7 bne.n 800a9dc <UART_RxISR_8BIT_FIFOEN+0x140> + 800a9ec: 6ee1 ldr r1, [r4, #108] ; 0x6c + 800a9ee: 2901 cmp r1, #1 + 800a9f0: d113 bne.n 800aa1a <UART_RxISR_8BIT_FIFOEN+0x17e> + 800a9f2: 66e6 str r6, [r4, #108] ; 0x6c + 800a9f4: e853 1f00 ldrex r1, [r3] + 800a9f8: f021 0110 bic.w r1, r1, #16 + 800a9fc: e843 1000 strex r0, r1, [r3] + 800aa00: 2800 cmp r0, #0 + 800aa02: d1f7 bne.n 800a9f4 <UART_RxISR_8BIT_FIFOEN+0x158> + 800aa04: 69d9 ldr r1, [r3, #28] + 800aa06: 06ca lsls r2, r1, #27 + 800aa08: bf44 itt mi + 800aa0a: 2110 movmi r1, #16 + 800aa0c: 6219 strmi r1, [r3, #32] + 800aa0e: 4620 mov r0, r4 + 800aa10: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800aa14: f7ff fcfc bl 800a410 <HAL_UARTEx_RxEventCallback> + 800aa18: e756 b.n 800a8c8 <UART_RxISR_8BIT_FIFOEN+0x2c> + 800aa1a: 4620 mov r0, r4 + 800aa1c: f7f8 fb78 bl 8003110 <HAL_UART_RxCpltCallback> + 800aa20: e752 b.n 800a8c8 <UART_RxISR_8BIT_FIFOEN+0x2c> + 800aa22: 699a ldr r2, [r3, #24] + 800aa24: f042 0208 orr.w r2, r2, #8 + 800aa28: 619a str r2, [r3, #24] + 800aa2a: e771 b.n 800a910 <UART_RxISR_8BIT_FIFOEN+0x74> + 800aa2c: effffffe .word 0xeffffffe + 800aa30: 40008000 .word 0x40008000 + 800aa34: 0800a70d .word 0x0800a70d + +0800aa38 <UART_RxISR_16BIT_FIFOEN>: + 800aa38: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800aa3c: 6803 ldr r3, [r0, #0] + 800aa3e: f8b0 8060 ldrh.w r8, [r0, #96] ; 0x60 + 800aa42: 69df ldr r7, [r3, #28] + 800aa44: 681a ldr r2, [r3, #0] + 800aa46: 689d ldr r5, [r3, #8] + 800aa48: f8d0 108c ldr.w r1, [r0, #140] ; 0x8c + 800aa4c: 9201 str r2, [sp, #4] + 800aa4e: 2922 cmp r1, #34 ; 0x22 + 800aa50: 4604 mov r4, r0 + 800aa52: f040 80b2 bne.w 800abba <UART_RxISR_16BIT_FIFOEN+0x182> + 800aa56: f8b0 9068 ldrh.w r9, [r0, #104] ; 0x68 + 800aa5a: f8df a168 ldr.w sl, [pc, #360] ; 800abc4 <UART_RxISR_16BIT_FIFOEN+0x18c> + 800aa5e: f8df b168 ldr.w fp, [pc, #360] ; 800abc8 <UART_RxISR_16BIT_FIFOEN+0x190> + 800aa62: 2600 movs r6, #0 + 800aa64: f1b9 0f00 cmp.w r9, #0 + 800aa68: d001 beq.n 800aa6e <UART_RxISR_16BIT_FIFOEN+0x36> + 800aa6a: 06bb lsls r3, r7, #26 + 800aa6c: d421 bmi.n 800aab2 <UART_RxISR_16BIT_FIFOEN+0x7a> + 800aa6e: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800aa72: b29b uxth r3, r3 + 800aa74: b1d3 cbz r3, 800aaac <UART_RxISR_16BIT_FIFOEN+0x74> + 800aa76: f8b4 2068 ldrh.w r2, [r4, #104] ; 0x68 + 800aa7a: 429a cmp r2, r3 + 800aa7c: d916 bls.n 800aaac <UART_RxISR_16BIT_FIFOEN+0x74> + 800aa7e: 6822 ldr r2, [r4, #0] + 800aa80: f102 0308 add.w r3, r2, #8 + 800aa84: e853 3f00 ldrex r3, [r3] + 800aa88: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 800aa8c: 3208 adds r2, #8 + 800aa8e: e842 3100 strex r1, r3, [r2] + 800aa92: 6822 ldr r2, [r4, #0] + 800aa94: 2900 cmp r1, #0 + 800aa96: d1f2 bne.n 800aa7e <UART_RxISR_16BIT_FIFOEN+0x46> + 800aa98: 4b4c ldr r3, [pc, #304] ; (800abcc <UART_RxISR_16BIT_FIFOEN+0x194>) + 800aa9a: 6763 str r3, [r4, #116] ; 0x74 + 800aa9c: e852 3f00 ldrex r3, [r2] + 800aaa0: f043 0320 orr.w r3, r3, #32 + 800aaa4: e842 3100 strex r1, r3, [r2] + 800aaa8: 2900 cmp r1, #0 + 800aaaa: d1f7 bne.n 800aa9c <UART_RxISR_16BIT_FIFOEN+0x64> + 800aaac: b003 add sp, #12 + 800aaae: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800aab2: 6823 ldr r3, [r4, #0] + 800aab4: 6da2 ldr r2, [r4, #88] ; 0x58 + 800aab6: 6a59 ldr r1, [r3, #36] ; 0x24 + 800aab8: ea08 0101 and.w r1, r8, r1 + 800aabc: f822 1b02 strh.w r1, [r2], #2 + 800aac0: 65a2 str r2, [r4, #88] ; 0x58 + 800aac2: f8b4 205e ldrh.w r2, [r4, #94] ; 0x5e + 800aac6: 3a01 subs r2, #1 + 800aac8: b292 uxth r2, r2 + 800aaca: f8a4 205e strh.w r2, [r4, #94] ; 0x5e + 800aace: 69df ldr r7, [r3, #28] + 800aad0: 0778 lsls r0, r7, #29 + 800aad2: d02c beq.n 800ab2e <UART_RxISR_16BIT_FIFOEN+0xf6> + 800aad4: 07f9 lsls r1, r7, #31 + 800aad6: d50a bpl.n 800aaee <UART_RxISR_16BIT_FIFOEN+0xb6> + 800aad8: 9a01 ldr r2, [sp, #4] + 800aada: 05d2 lsls r2, r2, #23 + 800aadc: d507 bpl.n 800aaee <UART_RxISR_16BIT_FIFOEN+0xb6> + 800aade: 2101 movs r1, #1 + 800aae0: 6219 str r1, [r3, #32] + 800aae2: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800aae6: f041 0101 orr.w r1, r1, #1 + 800aaea: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + 800aaee: 07b8 lsls r0, r7, #30 + 800aaf0: d509 bpl.n 800ab06 <UART_RxISR_16BIT_FIFOEN+0xce> + 800aaf2: 07e9 lsls r1, r5, #31 + 800aaf4: d507 bpl.n 800ab06 <UART_RxISR_16BIT_FIFOEN+0xce> + 800aaf6: 2102 movs r1, #2 + 800aaf8: 6219 str r1, [r3, #32] + 800aafa: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800aafe: f041 0104 orr.w r1, r1, #4 + 800ab02: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + 800ab06: 077a lsls r2, r7, #29 + 800ab08: d509 bpl.n 800ab1e <UART_RxISR_16BIT_FIFOEN+0xe6> + 800ab0a: 07e8 lsls r0, r5, #31 + 800ab0c: d507 bpl.n 800ab1e <UART_RxISR_16BIT_FIFOEN+0xe6> + 800ab0e: 2104 movs r1, #4 + 800ab10: 6219 str r1, [r3, #32] + 800ab12: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800ab16: f043 0302 orr.w r3, r3, #2 + 800ab1a: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800ab1e: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800ab22: b123 cbz r3, 800ab2e <UART_RxISR_16BIT_FIFOEN+0xf6> + 800ab24: 4620 mov r0, r4 + 800ab26: f7ff fc44 bl 800a3b2 <HAL_UART_ErrorCallback> + 800ab2a: f8c4 6090 str.w r6, [r4, #144] ; 0x90 + 800ab2e: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800ab32: b29b uxth r3, r3 + 800ab34: 2b00 cmp r3, #0 + 800ab36: d195 bne.n 800aa64 <UART_RxISR_16BIT_FIFOEN+0x2c> + 800ab38: 6821 ldr r1, [r4, #0] + 800ab3a: e851 3f00 ldrex r3, [r1] + 800ab3e: f423 7380 bic.w r3, r3, #256 ; 0x100 + 800ab42: e841 3000 strex r0, r3, [r1] + 800ab46: 6823 ldr r3, [r4, #0] + 800ab48: 2800 cmp r0, #0 + 800ab4a: d1f5 bne.n 800ab38 <UART_RxISR_16BIT_FIFOEN+0x100> + 800ab4c: f103 0208 add.w r2, r3, #8 + 800ab50: e852 1f00 ldrex r1, [r2] + 800ab54: ea01 010a and.w r1, r1, sl + 800ab58: e842 1000 strex r0, r1, [r2] + 800ab5c: 2800 cmp r0, #0 + 800ab5e: d1f5 bne.n 800ab4c <UART_RxISR_16BIT_FIFOEN+0x114> + 800ab60: 2120 movs r1, #32 + 800ab62: 455b cmp r3, fp + 800ab64: f8c4 108c str.w r1, [r4, #140] ; 0x8c + 800ab68: 6760 str r0, [r4, #116] ; 0x74 + 800ab6a: 6720 str r0, [r4, #112] ; 0x70 + 800ab6c: d00a beq.n 800ab84 <UART_RxISR_16BIT_FIFOEN+0x14c> + 800ab6e: 6859 ldr r1, [r3, #4] + 800ab70: 0209 lsls r1, r1, #8 + 800ab72: d507 bpl.n 800ab84 <UART_RxISR_16BIT_FIFOEN+0x14c> + 800ab74: e853 1f00 ldrex r1, [r3] + 800ab78: f021 6180 bic.w r1, r1, #67108864 ; 0x4000000 + 800ab7c: e843 1000 strex r0, r1, [r3] + 800ab80: 2800 cmp r0, #0 + 800ab82: d1f7 bne.n 800ab74 <UART_RxISR_16BIT_FIFOEN+0x13c> + 800ab84: 6ee1 ldr r1, [r4, #108] ; 0x6c + 800ab86: 2901 cmp r1, #1 + 800ab88: d113 bne.n 800abb2 <UART_RxISR_16BIT_FIFOEN+0x17a> + 800ab8a: 66e6 str r6, [r4, #108] ; 0x6c + 800ab8c: e853 1f00 ldrex r1, [r3] + 800ab90: f021 0110 bic.w r1, r1, #16 + 800ab94: e843 1000 strex r0, r1, [r3] + 800ab98: 2800 cmp r0, #0 + 800ab9a: d1f7 bne.n 800ab8c <UART_RxISR_16BIT_FIFOEN+0x154> + 800ab9c: 69d9 ldr r1, [r3, #28] + 800ab9e: 06ca lsls r2, r1, #27 + 800aba0: bf44 itt mi + 800aba2: 2110 movmi r1, #16 + 800aba4: 6219 strmi r1, [r3, #32] + 800aba6: 4620 mov r0, r4 + 800aba8: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800abac: f7ff fc30 bl 800a410 <HAL_UARTEx_RxEventCallback> + 800abb0: e758 b.n 800aa64 <UART_RxISR_16BIT_FIFOEN+0x2c> + 800abb2: 4620 mov r0, r4 + 800abb4: f7f8 faac bl 8003110 <HAL_UART_RxCpltCallback> + 800abb8: e754 b.n 800aa64 <UART_RxISR_16BIT_FIFOEN+0x2c> + 800abba: 699a ldr r2, [r3, #24] + 800abbc: f042 0208 orr.w r2, r2, #8 + 800abc0: 619a str r2, [r3, #24] + 800abc2: e773 b.n 800aaac <UART_RxISR_16BIT_FIFOEN+0x74> + 800abc4: effffffe .word 0xeffffffe + 800abc8: 40008000 .word 0x40008000 + 800abcc: 0800a7d9 .word 0x0800a7d9 + +0800abd0 <UART_SetConfig>: + 800abd0: b538 push {r3, r4, r5, lr} + 800abd2: 4604 mov r4, r0 + 800abd4: 6803 ldr r3, [r0, #0] + 800abd6: 6921 ldr r1, [r4, #16] + 800abd8: 68a2 ldr r2, [r4, #8] + 800abda: 681d ldr r5, [r3, #0] + 800abdc: 69c0 ldr r0, [r0, #28] + 800abde: 430a orrs r2, r1 + 800abe0: 6961 ldr r1, [r4, #20] + 800abe2: 430a orrs r2, r1 + 800abe4: 497d ldr r1, [pc, #500] ; (800addc <UART_SetConfig+0x20c>) + 800abe6: 4302 orrs r2, r0 + 800abe8: 4029 ands r1, r5 + 800abea: 430a orrs r2, r1 + 800abec: 601a str r2, [r3, #0] + 800abee: 685a ldr r2, [r3, #4] + 800abf0: 68e1 ldr r1, [r4, #12] + 800abf2: f422 5240 bic.w r2, r2, #12288 ; 0x3000 + 800abf6: 430a orrs r2, r1 + 800abf8: 605a str r2, [r3, #4] + 800abfa: 4a79 ldr r2, [pc, #484] ; (800ade0 <UART_SetConfig+0x210>) + 800abfc: 69a1 ldr r1, [r4, #24] + 800abfe: 4293 cmp r3, r2 + 800ac00: bf1c itt ne + 800ac02: 6a22 ldrne r2, [r4, #32] + 800ac04: 4311 orrne r1, r2 + 800ac06: 689a ldr r2, [r3, #8] + 800ac08: f022 426e bic.w r2, r2, #3992977408 ; 0xee000000 + 800ac0c: f422 6230 bic.w r2, r2, #2816 ; 0xb00 + 800ac10: 430a orrs r2, r1 + 800ac12: 609a str r2, [r3, #8] + 800ac14: 6ada ldr r2, [r3, #44] ; 0x2c + 800ac16: 6a61 ldr r1, [r4, #36] ; 0x24 + 800ac18: f022 020f bic.w r2, r2, #15 + 800ac1c: 430a orrs r2, r1 + 800ac1e: 62da str r2, [r3, #44] ; 0x2c + 800ac20: 4a70 ldr r2, [pc, #448] ; (800ade4 <UART_SetConfig+0x214>) + 800ac22: 4293 cmp r3, r2 + 800ac24: d11c bne.n 800ac60 <UART_SetConfig+0x90> + 800ac26: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800ac2a: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 800ac2e: f003 0303 and.w r3, r3, #3 + 800ac32: f443 3340 orr.w r3, r3, #196608 ; 0x30000 + 800ac36: f5a3 3340 sub.w r3, r3, #196608 ; 0x30000 + 800ac3a: 3b01 subs r3, #1 + 800ac3c: 2b02 cmp r3, #2 + 800ac3e: f200 80c7 bhi.w 800add0 <UART_SetConfig+0x200> + 800ac42: 4a69 ldr r2, [pc, #420] ; (800ade8 <UART_SetConfig+0x218>) + 800ac44: 5c9b ldrb r3, [r3, r2] + 800ac46: f5b0 4f00 cmp.w r0, #32768 ; 0x8000 + 800ac4a: f040 8089 bne.w 800ad60 <UART_SetConfig+0x190> + 800ac4e: 2b08 cmp r3, #8 + 800ac50: d824 bhi.n 800ac9c <UART_SetConfig+0xcc> + 800ac52: e8df f003 tbb [pc, r3] + 800ac56: c061 .short 0xc061 + 800ac58: 23802383 .word 0x23802383 + 800ac5c: 2323 .short 0x2323 + 800ac5e: 65 .byte 0x65 + 800ac5f: 00 .byte 0x00 + 800ac60: 4a62 ldr r2, [pc, #392] ; (800adec <UART_SetConfig+0x21c>) + 800ac62: 4293 cmp r3, r2 + 800ac64: d109 bne.n 800ac7a <UART_SetConfig+0xaa> + 800ac66: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800ac6a: 4a61 ldr r2, [pc, #388] ; (800adf0 <UART_SetConfig+0x220>) + 800ac6c: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 800ac70: f003 030c and.w r3, r3, #12 + 800ac74: f443 2340 orr.w r3, r3, #786432 ; 0xc0000 + 800ac78: e7e4 b.n 800ac44 <UART_SetConfig+0x74> + 800ac7a: 4a59 ldr r2, [pc, #356] ; (800ade0 <UART_SetConfig+0x210>) + 800ac7c: 4293 cmp r3, r2 + 800ac7e: d10d bne.n 800ac9c <UART_SetConfig+0xcc> + 800ac80: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800ac84: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 800ac88: f403 6340 and.w r3, r3, #3072 ; 0xc00 + 800ac8c: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 800ac90: d01a beq.n 800acc8 <UART_SetConfig+0xf8> + 800ac92: d805 bhi.n 800aca0 <UART_SetConfig+0xd0> + 800ac94: b153 cbz r3, 800acac <UART_SetConfig+0xdc> + 800ac96: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 800ac9a: d012 beq.n 800acc2 <UART_SetConfig+0xf2> + 800ac9c: 2001 movs r0, #1 + 800ac9e: e009 b.n 800acb4 <UART_SetConfig+0xe4> + 800aca0: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 + 800aca4: d1fa bne.n 800ac9c <UART_SetConfig+0xcc> + 800aca6: f44f 4000 mov.w r0, #32768 ; 0x8000 + 800acaa: e00e b.n 800acca <UART_SetConfig+0xfa> + 800acac: f7fe fcd2 bl 8009654 <HAL_RCC_GetPCLK1Freq> + 800acb0: b958 cbnz r0, 800acca <UART_SetConfig+0xfa> + 800acb2: 2000 movs r0, #0 + 800acb4: f04f 1301 mov.w r3, #65537 ; 0x10001 + 800acb8: 66a3 str r3, [r4, #104] ; 0x68 + 800acba: 2300 movs r3, #0 + 800acbc: e9c4 331d strd r3, r3, [r4, #116] ; 0x74 + 800acc0: bd38 pop {r3, r4, r5, pc} + 800acc2: f7fe f8cf bl 8008e64 <HAL_RCC_GetSysClockFreq> + 800acc6: e7f3 b.n 800acb0 <UART_SetConfig+0xe0> + 800acc8: 484a ldr r0, [pc, #296] ; (800adf4 <UART_SetConfig+0x224>) + 800acca: 6865 ldr r5, [r4, #4] + 800accc: 4b4a ldr r3, [pc, #296] ; (800adf8 <UART_SetConfig+0x228>) + 800acce: 6a62 ldr r2, [r4, #36] ; 0x24 + 800acd0: eb05 0145 add.w r1, r5, r5, lsl #1 + 800acd4: f833 2012 ldrh.w r2, [r3, r2, lsl #1] + 800acd8: fbb0 f3f2 udiv r3, r0, r2 + 800acdc: 4299 cmp r1, r3 + 800acde: d8dd bhi.n 800ac9c <UART_SetConfig+0xcc> + 800ace0: ebb3 3f05 cmp.w r3, r5, lsl #12 + 800ace4: d8da bhi.n 800ac9c <UART_SetConfig+0xcc> + 800ace6: 2300 movs r3, #0 + 800ace8: 4619 mov r1, r3 + 800acea: f7f6 ff11 bl 8001b10 <__aeabi_uldivmod> + 800acee: 0209 lsls r1, r1, #8 + 800acf0: ea41 6110 orr.w r1, r1, r0, lsr #24 + 800acf4: 086b lsrs r3, r5, #1 + 800acf6: 0200 lsls r0, r0, #8 + 800acf8: 18c0 adds r0, r0, r3 + 800acfa: 462a mov r2, r5 + 800acfc: f04f 0300 mov.w r3, #0 + 800ad00: f141 0100 adc.w r1, r1, #0 + 800ad04: f7f6 ff04 bl 8001b10 <__aeabi_uldivmod> + 800ad08: 4b3c ldr r3, [pc, #240] ; (800adfc <UART_SetConfig+0x22c>) + 800ad0a: f5a0 7240 sub.w r2, r0, #768 ; 0x300 + 800ad0e: 429a cmp r2, r3 + 800ad10: d8c4 bhi.n 800ac9c <UART_SetConfig+0xcc> + 800ad12: 6823 ldr r3, [r4, #0] + 800ad14: 60d8 str r0, [r3, #12] + 800ad16: e7cc b.n 800acb2 <UART_SetConfig+0xe2> + 800ad18: f7fe fc9c bl 8009654 <HAL_RCC_GetPCLK1Freq> + 800ad1c: 2800 cmp r0, #0 + 800ad1e: d0c8 beq.n 800acb2 <UART_SetConfig+0xe2> + 800ad20: 6861 ldr r1, [r4, #4] + 800ad22: 4b35 ldr r3, [pc, #212] ; (800adf8 <UART_SetConfig+0x228>) + 800ad24: 6a62 ldr r2, [r4, #36] ; 0x24 + 800ad26: f833 2012 ldrh.w r2, [r3, r2, lsl #1] + 800ad2a: fbb0 f2f2 udiv r2, r0, r2 + 800ad2e: 084b lsrs r3, r1, #1 + 800ad30: eb03 0342 add.w r3, r3, r2, lsl #1 + 800ad34: f64f 72ef movw r2, #65519 ; 0xffef + 800ad38: fbb3 f3f1 udiv r3, r3, r1 + 800ad3c: f1a3 0110 sub.w r1, r3, #16 + 800ad40: 4291 cmp r1, r2 + 800ad42: d8ab bhi.n 800ac9c <UART_SetConfig+0xcc> + 800ad44: f023 020f bic.w r2, r3, #15 + 800ad48: 6821 ldr r1, [r4, #0] + 800ad4a: b292 uxth r2, r2 + 800ad4c: f3c3 0342 ubfx r3, r3, #1, #3 + 800ad50: 4313 orrs r3, r2 + 800ad52: 60cb str r3, [r1, #12] + 800ad54: e7ad b.n 800acb2 <UART_SetConfig+0xe2> + 800ad56: f7fe f885 bl 8008e64 <HAL_RCC_GetSysClockFreq> + 800ad5a: e7df b.n 800ad1c <UART_SetConfig+0x14c> + 800ad5c: 4825 ldr r0, [pc, #148] ; (800adf4 <UART_SetConfig+0x224>) + 800ad5e: e7df b.n 800ad20 <UART_SetConfig+0x150> + 800ad60: 2b08 cmp r3, #8 + 800ad62: d89b bhi.n 800ac9c <UART_SetConfig+0xcc> + 800ad64: a201 add r2, pc, #4 ; (adr r2, 800ad6c <UART_SetConfig+0x19c>) + 800ad66: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 800ad6a: bf00 nop + 800ad6c: 0800adb5 .word 0x0800adb5 + 800ad70: 0800adc1 .word 0x0800adc1 + 800ad74: 0800adcd .word 0x0800adcd + 800ad78: 0800ac9d .word 0x0800ac9d + 800ad7c: 0800adc7 .word 0x0800adc7 + 800ad80: 0800ac9d .word 0x0800ac9d + 800ad84: 0800ac9d .word 0x0800ac9d + 800ad88: 0800ac9d .word 0x0800ac9d + 800ad8c: 0800ad91 .word 0x0800ad91 + 800ad90: f44f 4000 mov.w r0, #32768 ; 0x8000 + 800ad94: 6863 ldr r3, [r4, #4] + 800ad96: 6a61 ldr r1, [r4, #36] ; 0x24 + 800ad98: 4a17 ldr r2, [pc, #92] ; (800adf8 <UART_SetConfig+0x228>) + 800ad9a: f832 2011 ldrh.w r2, [r2, r1, lsl #1] + 800ad9e: fbb0 f0f2 udiv r0, r0, r2 + 800ada2: eb00 0053 add.w r0, r0, r3, lsr #1 + 800ada6: fbb0 f0f3 udiv r0, r0, r3 + 800adaa: f64f 73ef movw r3, #65519 ; 0xffef + 800adae: f1a0 0210 sub.w r2, r0, #16 + 800adb2: e7ac b.n 800ad0e <UART_SetConfig+0x13e> + 800adb4: f7fe fc4e bl 8009654 <HAL_RCC_GetPCLK1Freq> + 800adb8: 2800 cmp r0, #0 + 800adba: f43f af7a beq.w 800acb2 <UART_SetConfig+0xe2> + 800adbe: e7e9 b.n 800ad94 <UART_SetConfig+0x1c4> + 800adc0: f7fe fc58 bl 8009674 <HAL_RCC_GetPCLK2Freq> + 800adc4: e7f8 b.n 800adb8 <UART_SetConfig+0x1e8> + 800adc6: f7fe f84d bl 8008e64 <HAL_RCC_GetSysClockFreq> + 800adca: e7f5 b.n 800adb8 <UART_SetConfig+0x1e8> + 800adcc: 4809 ldr r0, [pc, #36] ; (800adf4 <UART_SetConfig+0x224>) + 800adce: e7e1 b.n 800ad94 <UART_SetConfig+0x1c4> + 800add0: f5b0 4f00 cmp.w r0, #32768 ; 0x8000 + 800add4: d1f4 bne.n 800adc0 <UART_SetConfig+0x1f0> + 800add6: f7fe fc4d bl 8009674 <HAL_RCC_GetPCLK2Freq> + 800adda: e79f b.n 800ad1c <UART_SetConfig+0x14c> + 800addc: cfff69f3 .word 0xcfff69f3 + 800ade0: 40008000 .word 0x40008000 + 800ade4: 40013800 .word 0x40013800 + 800ade8: 08015044 .word 0x08015044 + 800adec: 40004400 .word 0x40004400 + 800adf0: 07f55047 .word 0x07f55047 + 800adf4: 00f42400 .word 0x00f42400 + 800adf8: 08015054 .word 0x08015054 + 800adfc: 000ffcff .word 0x000ffcff + +0800ae00 <UART_AdvFeatureConfig>: + 800ae00: 6a83 ldr r3, [r0, #40] ; 0x28 + 800ae02: 07da lsls r2, r3, #31 + 800ae04: b510 push {r4, lr} + 800ae06: d506 bpl.n 800ae16 <UART_AdvFeatureConfig+0x16> + 800ae08: 6801 ldr r1, [r0, #0] + 800ae0a: 6ac4 ldr r4, [r0, #44] ; 0x2c + 800ae0c: 684a ldr r2, [r1, #4] + 800ae0e: f422 3200 bic.w r2, r2, #131072 ; 0x20000 + 800ae12: 4322 orrs r2, r4 + 800ae14: 604a str r2, [r1, #4] + 800ae16: 079c lsls r4, r3, #30 + 800ae18: d506 bpl.n 800ae28 <UART_AdvFeatureConfig+0x28> + 800ae1a: 6801 ldr r1, [r0, #0] + 800ae1c: 6b04 ldr r4, [r0, #48] ; 0x30 + 800ae1e: 684a ldr r2, [r1, #4] + 800ae20: f422 3280 bic.w r2, r2, #65536 ; 0x10000 + 800ae24: 4322 orrs r2, r4 + 800ae26: 604a str r2, [r1, #4] + 800ae28: 0759 lsls r1, r3, #29 + 800ae2a: d506 bpl.n 800ae3a <UART_AdvFeatureConfig+0x3a> + 800ae2c: 6801 ldr r1, [r0, #0] + 800ae2e: 6b44 ldr r4, [r0, #52] ; 0x34 + 800ae30: 684a ldr r2, [r1, #4] + 800ae32: f422 2280 bic.w r2, r2, #262144 ; 0x40000 + 800ae36: 4322 orrs r2, r4 + 800ae38: 604a str r2, [r1, #4] + 800ae3a: 071a lsls r2, r3, #28 + 800ae3c: d506 bpl.n 800ae4c <UART_AdvFeatureConfig+0x4c> + 800ae3e: 6801 ldr r1, [r0, #0] + 800ae40: 6b84 ldr r4, [r0, #56] ; 0x38 + 800ae42: 684a ldr r2, [r1, #4] + 800ae44: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 800ae48: 4322 orrs r2, r4 + 800ae4a: 604a str r2, [r1, #4] + 800ae4c: 06dc lsls r4, r3, #27 + 800ae4e: d506 bpl.n 800ae5e <UART_AdvFeatureConfig+0x5e> + 800ae50: 6801 ldr r1, [r0, #0] + 800ae52: 6bc4 ldr r4, [r0, #60] ; 0x3c + 800ae54: 688a ldr r2, [r1, #8] + 800ae56: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 800ae5a: 4322 orrs r2, r4 + 800ae5c: 608a str r2, [r1, #8] + 800ae5e: 0699 lsls r1, r3, #26 + 800ae60: d506 bpl.n 800ae70 <UART_AdvFeatureConfig+0x70> + 800ae62: 6801 ldr r1, [r0, #0] + 800ae64: 6c04 ldr r4, [r0, #64] ; 0x40 + 800ae66: 688a ldr r2, [r1, #8] + 800ae68: f422 5200 bic.w r2, r2, #8192 ; 0x2000 + 800ae6c: 4322 orrs r2, r4 + 800ae6e: 608a str r2, [r1, #8] + 800ae70: 065a lsls r2, r3, #25 + 800ae72: d50f bpl.n 800ae94 <UART_AdvFeatureConfig+0x94> + 800ae74: 6801 ldr r1, [r0, #0] + 800ae76: 6c44 ldr r4, [r0, #68] ; 0x44 + 800ae78: 684a ldr r2, [r1, #4] + 800ae7a: f422 1280 bic.w r2, r2, #1048576 ; 0x100000 + 800ae7e: 4322 orrs r2, r4 + 800ae80: f5b4 1f80 cmp.w r4, #1048576 ; 0x100000 + 800ae84: 604a str r2, [r1, #4] + 800ae86: d105 bne.n 800ae94 <UART_AdvFeatureConfig+0x94> + 800ae88: 684a ldr r2, [r1, #4] + 800ae8a: 6c84 ldr r4, [r0, #72] ; 0x48 + 800ae8c: f422 02c0 bic.w r2, r2, #6291456 ; 0x600000 + 800ae90: 4322 orrs r2, r4 + 800ae92: 604a str r2, [r1, #4] + 800ae94: 061b lsls r3, r3, #24 + 800ae96: d506 bpl.n 800aea6 <UART_AdvFeatureConfig+0xa6> + 800ae98: 6802 ldr r2, [r0, #0] + 800ae9a: 6cc1 ldr r1, [r0, #76] ; 0x4c + 800ae9c: 6853 ldr r3, [r2, #4] + 800ae9e: f423 2300 bic.w r3, r3, #524288 ; 0x80000 + 800aea2: 430b orrs r3, r1 + 800aea4: 6053 str r3, [r2, #4] + 800aea6: bd10 pop {r4, pc} + +0800aea8 <UART_WaitOnFlagUntilTimeout>: + 800aea8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800aeac: f8dd 8018 ldr.w r8, [sp, #24] + 800aeb0: 4604 mov r4, r0 + 800aeb2: 460e mov r6, r1 + 800aeb4: 4615 mov r5, r2 + 800aeb6: 461f mov r7, r3 + 800aeb8: 6822 ldr r2, [r4, #0] + 800aeba: 69d3 ldr r3, [r2, #28] + 800aebc: ea36 0303 bics.w r3, r6, r3 + 800aec0: bf0c ite eq + 800aec2: 2301 moveq r3, #1 + 800aec4: 2300 movne r3, #0 + 800aec6: 42ab cmp r3, r5 + 800aec8: d001 beq.n 800aece <UART_WaitOnFlagUntilTimeout+0x26> + 800aeca: 2000 movs r0, #0 + 800aecc: e027 b.n 800af1e <UART_WaitOnFlagUntilTimeout+0x76> + 800aece: f1b8 3fff cmp.w r8, #4294967295 + 800aed2: d0f2 beq.n 800aeba <UART_WaitOnFlagUntilTimeout+0x12> + 800aed4: f7f7 fe3a bl 8002b4c <HAL_GetTick> + 800aed8: 1bc0 subs r0, r0, r7 + 800aeda: 4540 cmp r0, r8 + 800aedc: 6820 ldr r0, [r4, #0] + 800aede: d802 bhi.n 800aee6 <UART_WaitOnFlagUntilTimeout+0x3e> + 800aee0: f1b8 0f00 cmp.w r8, #0 + 800aee4: d11d bne.n 800af22 <UART_WaitOnFlagUntilTimeout+0x7a> + 800aee6: e850 3f00 ldrex r3, [r0] + 800aeea: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + 800aeee: e840 3200 strex r2, r3, [r0] + 800aef2: 2a00 cmp r2, #0 + 800aef4: d1f7 bne.n 800aee6 <UART_WaitOnFlagUntilTimeout+0x3e> + 800aef6: f100 0308 add.w r3, r0, #8 + 800aefa: e853 3f00 ldrex r3, [r3] + 800aefe: f023 0301 bic.w r3, r3, #1 + 800af02: f100 0108 add.w r1, r0, #8 + 800af06: e841 3200 strex r2, r3, [r1] + 800af0a: 2a00 cmp r2, #0 + 800af0c: d1f3 bne.n 800aef6 <UART_WaitOnFlagUntilTimeout+0x4e> + 800af0e: 2320 movs r3, #32 + 800af10: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800af14: f8c4 308c str.w r3, [r4, #140] ; 0x8c + 800af18: f884 2084 strb.w r2, [r4, #132] ; 0x84 + 800af1c: 2003 movs r0, #3 + 800af1e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800af22: 6803 ldr r3, [r0, #0] + 800af24: 075a lsls r2, r3, #29 + 800af26: d5c7 bpl.n 800aeb8 <UART_WaitOnFlagUntilTimeout+0x10> + 800af28: 69c3 ldr r3, [r0, #28] + 800af2a: 051b lsls r3, r3, #20 + 800af2c: d5c4 bpl.n 800aeb8 <UART_WaitOnFlagUntilTimeout+0x10> + 800af2e: f44f 6300 mov.w r3, #2048 ; 0x800 + 800af32: 6203 str r3, [r0, #32] + 800af34: e850 3f00 ldrex r3, [r0] + 800af38: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + 800af3c: e840 3200 strex r2, r3, [r0] + 800af40: 2a00 cmp r2, #0 + 800af42: d1f7 bne.n 800af34 <UART_WaitOnFlagUntilTimeout+0x8c> + 800af44: f100 0308 add.w r3, r0, #8 + 800af48: e853 3f00 ldrex r3, [r3] + 800af4c: f023 0301 bic.w r3, r3, #1 + 800af50: f100 0108 add.w r1, r0, #8 + 800af54: e841 3200 strex r2, r3, [r1] + 800af58: 2a00 cmp r2, #0 + 800af5a: d1f3 bne.n 800af44 <UART_WaitOnFlagUntilTimeout+0x9c> + 800af5c: 2320 movs r3, #32 + 800af5e: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800af62: f8c4 308c str.w r3, [r4, #140] ; 0x8c + 800af66: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800af6a: e7d5 b.n 800af18 <UART_WaitOnFlagUntilTimeout+0x70> + +0800af6c <UART_CheckIdleState>: + 800af6c: b573 push {r0, r1, r4, r5, r6, lr} + 800af6e: 4604 mov r4, r0 + 800af70: 2600 movs r6, #0 + 800af72: f8c0 6090 str.w r6, [r0, #144] ; 0x90 + 800af76: f7f7 fde9 bl 8002b4c <HAL_GetTick> + 800af7a: 6823 ldr r3, [r4, #0] + 800af7c: 681b ldr r3, [r3, #0] + 800af7e: 071a lsls r2, r3, #28 + 800af80: 4605 mov r5, r0 + 800af82: d419 bmi.n 800afb8 <UART_CheckIdleState+0x4c> + 800af84: 6823 ldr r3, [r4, #0] + 800af86: 681b ldr r3, [r3, #0] + 800af88: 075b lsls r3, r3, #29 + 800af8a: d50a bpl.n 800afa2 <UART_CheckIdleState+0x36> + 800af8c: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 800af90: 9300 str r3, [sp, #0] + 800af92: 2200 movs r2, #0 + 800af94: 462b mov r3, r5 + 800af96: f44f 0180 mov.w r1, #4194304 ; 0x400000 + 800af9a: 4620 mov r0, r4 + 800af9c: f7ff ff84 bl 800aea8 <UART_WaitOnFlagUntilTimeout> + 800afa0: b9b0 cbnz r0, 800afd0 <UART_CheckIdleState+0x64> + 800afa2: 2000 movs r0, #0 + 800afa4: 2320 movs r3, #32 + 800afa6: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800afaa: f884 0084 strb.w r0, [r4, #132] ; 0x84 + 800afae: f8c4 308c str.w r3, [r4, #140] ; 0x8c + 800afb2: 66e0 str r0, [r4, #108] ; 0x6c + 800afb4: 6720 str r0, [r4, #112] ; 0x70 + 800afb6: e00c b.n 800afd2 <UART_CheckIdleState+0x66> + 800afb8: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 800afbc: 9300 str r3, [sp, #0] + 800afbe: 4632 mov r2, r6 + 800afc0: 4603 mov r3, r0 + 800afc2: f44f 1100 mov.w r1, #2097152 ; 0x200000 + 800afc6: 4620 mov r0, r4 + 800afc8: f7ff ff6e bl 800aea8 <UART_WaitOnFlagUntilTimeout> + 800afcc: 2800 cmp r0, #0 + 800afce: d0d9 beq.n 800af84 <UART_CheckIdleState+0x18> + 800afd0: 2003 movs r0, #3 + 800afd2: b002 add sp, #8 + 800afd4: bd70 pop {r4, r5, r6, pc} + +0800afd6 <HAL_UART_Init>: + 800afd6: b510 push {r4, lr} + 800afd8: 4604 mov r4, r0 + 800afda: b350 cbz r0, 800b032 <HAL_UART_Init+0x5c> + 800afdc: f8d0 3088 ldr.w r3, [r0, #136] ; 0x88 + 800afe0: b91b cbnz r3, 800afea <HAL_UART_Init+0x14> + 800afe2: f880 3084 strb.w r3, [r0, #132] ; 0x84 + 800afe6: f7f7 ff71 bl 8002ecc <HAL_UART_MspInit> + 800afea: 6822 ldr r2, [r4, #0] + 800afec: 2324 movs r3, #36 ; 0x24 + 800afee: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800aff2: 6813 ldr r3, [r2, #0] + 800aff4: f023 0301 bic.w r3, r3, #1 + 800aff8: 6013 str r3, [r2, #0] + 800affa: 4620 mov r0, r4 + 800affc: f7ff fde8 bl 800abd0 <UART_SetConfig> + 800b000: 2801 cmp r0, #1 + 800b002: d016 beq.n 800b032 <HAL_UART_Init+0x5c> + 800b004: 6aa3 ldr r3, [r4, #40] ; 0x28 + 800b006: b113 cbz r3, 800b00e <HAL_UART_Init+0x38> + 800b008: 4620 mov r0, r4 + 800b00a: f7ff fef9 bl 800ae00 <UART_AdvFeatureConfig> + 800b00e: 6823 ldr r3, [r4, #0] + 800b010: 685a ldr r2, [r3, #4] + 800b012: f422 4290 bic.w r2, r2, #18432 ; 0x4800 + 800b016: 605a str r2, [r3, #4] + 800b018: 689a ldr r2, [r3, #8] + 800b01a: f022 022a bic.w r2, r2, #42 ; 0x2a + 800b01e: 609a str r2, [r3, #8] + 800b020: 681a ldr r2, [r3, #0] + 800b022: f042 0201 orr.w r2, r2, #1 + 800b026: 4620 mov r0, r4 + 800b028: 601a str r2, [r3, #0] + 800b02a: e8bd 4010 ldmia.w sp!, {r4, lr} + 800b02e: f7ff bf9d b.w 800af6c <UART_CheckIdleState> + 800b032: 2001 movs r0, #1 + 800b034: bd10 pop {r4, pc} + ... + +0800b038 <UART_Start_Receive_IT>: + 800b038: b530 push {r4, r5, lr} + 800b03a: 6581 str r1, [r0, #88] ; 0x58 + 800b03c: 6881 ldr r1, [r0, #8] + 800b03e: f8a0 205c strh.w r2, [r0, #92] ; 0x5c + 800b042: 2300 movs r3, #0 + 800b044: f5b1 5f80 cmp.w r1, #4096 ; 0x1000 + 800b048: f8a0 205e strh.w r2, [r0, #94] ; 0x5e + 800b04c: 6743 str r3, [r0, #116] ; 0x74 + 800b04e: d135 bne.n 800b0bc <UART_Start_Receive_IT+0x84> + 800b050: 6903 ldr r3, [r0, #16] + 800b052: 2b00 cmp r3, #0 + 800b054: f240 13ff movw r3, #511 ; 0x1ff + 800b058: bf18 it ne + 800b05a: 23ff movne r3, #255 ; 0xff + 800b05c: f8a0 3060 strh.w r3, [r0, #96] ; 0x60 + 800b060: 2300 movs r3, #0 + 800b062: f8c0 3090 str.w r3, [r0, #144] ; 0x90 + 800b066: 2322 movs r3, #34 ; 0x22 + 800b068: f8c0 308c str.w r3, [r0, #140] ; 0x8c + 800b06c: 6801 ldr r1, [r0, #0] + 800b06e: f101 0308 add.w r3, r1, #8 + 800b072: e853 3f00 ldrex r3, [r3] + 800b076: f043 0301 orr.w r3, r3, #1 + 800b07a: 3108 adds r1, #8 + 800b07c: e841 3400 strex r4, r3, [r1] + 800b080: 6803 ldr r3, [r0, #0] + 800b082: 2c00 cmp r4, #0 + 800b084: d1f2 bne.n 800b06c <UART_Start_Receive_IT+0x34> + 800b086: 6e45 ldr r5, [r0, #100] ; 0x64 + 800b088: 6884 ldr r4, [r0, #8] + 800b08a: 6901 ldr r1, [r0, #16] + 800b08c: f1b5 5f00 cmp.w r5, #536870912 ; 0x20000000 + 800b090: d134 bne.n 800b0fc <UART_Start_Receive_IT+0xc4> + 800b092: f8b0 5068 ldrh.w r5, [r0, #104] ; 0x68 + 800b096: 4295 cmp r5, r2 + 800b098: d830 bhi.n 800b0fc <UART_Start_Receive_IT+0xc4> + 800b09a: f5b4 5f80 cmp.w r4, #4096 ; 0x1000 + 800b09e: d11d bne.n 800b0dc <UART_Start_Receive_IT+0xa4> + 800b0a0: 4a25 ldr r2, [pc, #148] ; (800b138 <UART_Start_Receive_IT+0x100>) + 800b0a2: 4c26 ldr r4, [pc, #152] ; (800b13c <UART_Start_Receive_IT+0x104>) + 800b0a4: 2900 cmp r1, #0 + 800b0a6: bf18 it ne + 800b0a8: 4622 movne r2, r4 + 800b0aa: 6742 str r2, [r0, #116] ; 0x74 + 800b0ac: b1c1 cbz r1, 800b0e0 <UART_Start_Receive_IT+0xa8> + 800b0ae: e853 2f00 ldrex r2, [r3] + 800b0b2: f442 7280 orr.w r2, r2, #256 ; 0x100 + 800b0b6: e843 2100 strex r1, r2, [r3] + 800b0ba: e7f7 b.n 800b0ac <UART_Start_Receive_IT+0x74> + 800b0bc: b929 cbnz r1, 800b0ca <UART_Start_Receive_IT+0x92> + 800b0be: 6903 ldr r3, [r0, #16] + 800b0c0: 2b00 cmp r3, #0 + 800b0c2: bf14 ite ne + 800b0c4: 237f movne r3, #127 ; 0x7f + 800b0c6: 23ff moveq r3, #255 ; 0xff + 800b0c8: e7c8 b.n 800b05c <UART_Start_Receive_IT+0x24> + 800b0ca: f1b1 5f80 cmp.w r1, #268435456 ; 0x10000000 + 800b0ce: d1c5 bne.n 800b05c <UART_Start_Receive_IT+0x24> + 800b0d0: 6903 ldr r3, [r0, #16] + 800b0d2: 2b00 cmp r3, #0 + 800b0d4: bf0c ite eq + 800b0d6: 237f moveq r3, #127 ; 0x7f + 800b0d8: 233f movne r3, #63 ; 0x3f + 800b0da: e7bf b.n 800b05c <UART_Start_Receive_IT+0x24> + 800b0dc: 4a17 ldr r2, [pc, #92] ; (800b13c <UART_Start_Receive_IT+0x104>) + 800b0de: e7e4 b.n 800b0aa <UART_Start_Receive_IT+0x72> + 800b0e0: f103 0208 add.w r2, r3, #8 + 800b0e4: e852 2f00 ldrex r2, [r2] + 800b0e8: f042 5280 orr.w r2, r2, #268435456 ; 0x10000000 + 800b0ec: f103 0008 add.w r0, r3, #8 + 800b0f0: e840 2100 strex r1, r2, [r0] + 800b0f4: 2900 cmp r1, #0 + 800b0f6: d1f3 bne.n 800b0e0 <UART_Start_Receive_IT+0xa8> + 800b0f8: 2000 movs r0, #0 + 800b0fa: bd30 pop {r4, r5, pc} + 800b0fc: f5b4 5f80 cmp.w r4, #4096 ; 0x1000 + 800b100: d10f bne.n 800b122 <UART_Start_Receive_IT+0xea> + 800b102: 4a0f ldr r2, [pc, #60] ; (800b140 <UART_Start_Receive_IT+0x108>) + 800b104: 4c0f ldr r4, [pc, #60] ; (800b144 <UART_Start_Receive_IT+0x10c>) + 800b106: 2900 cmp r1, #0 + 800b108: bf18 it ne + 800b10a: 4622 movne r2, r4 + 800b10c: 6742 str r2, [r0, #116] ; 0x74 + 800b10e: b151 cbz r1, 800b126 <UART_Start_Receive_IT+0xee> + 800b110: e853 2f00 ldrex r2, [r3] + 800b114: f442 7290 orr.w r2, r2, #288 ; 0x120 + 800b118: e843 2100 strex r1, r2, [r3] + 800b11c: 2900 cmp r1, #0 + 800b11e: d1f7 bne.n 800b110 <UART_Start_Receive_IT+0xd8> + 800b120: e7ea b.n 800b0f8 <UART_Start_Receive_IT+0xc0> + 800b122: 4a08 ldr r2, [pc, #32] ; (800b144 <UART_Start_Receive_IT+0x10c>) + 800b124: e7f2 b.n 800b10c <UART_Start_Receive_IT+0xd4> + 800b126: e853 2f00 ldrex r2, [r3] + 800b12a: f042 0220 orr.w r2, r2, #32 + 800b12e: e843 2100 strex r1, r2, [r3] + 800b132: 2900 cmp r1, #0 + 800b134: d1f7 bne.n 800b126 <UART_Start_Receive_IT+0xee> + 800b136: e7df b.n 800b0f8 <UART_Start_Receive_IT+0xc0> + 800b138: 0800aa39 .word 0x0800aa39 + 800b13c: 0800a89d .word 0x0800a89d + 800b140: 0800a7d9 .word 0x0800a7d9 + 800b144: 0800a70d .word 0x0800a70d + +0800b148 <HAL_UART_Receive_IT>: + 800b148: f8d0 308c ldr.w r3, [r0, #140] ; 0x8c + 800b14c: 2b20 cmp r3, #32 + 800b14e: b430 push {r4, r5} + 800b150: d115 bne.n 800b17e <HAL_UART_Receive_IT+0x36> + 800b152: b1b9 cbz r1, 800b184 <HAL_UART_Receive_IT+0x3c> + 800b154: b1b2 cbz r2, 800b184 <HAL_UART_Receive_IT+0x3c> + 800b156: 2300 movs r3, #0 + 800b158: 6804 ldr r4, [r0, #0] + 800b15a: 66c3 str r3, [r0, #108] ; 0x6c + 800b15c: 4b0a ldr r3, [pc, #40] ; (800b188 <HAL_UART_Receive_IT+0x40>) + 800b15e: 429c cmp r4, r3 + 800b160: d00a beq.n 800b178 <HAL_UART_Receive_IT+0x30> + 800b162: 6863 ldr r3, [r4, #4] + 800b164: 021b lsls r3, r3, #8 + 800b166: d507 bpl.n 800b178 <HAL_UART_Receive_IT+0x30> + 800b168: e854 3f00 ldrex r3, [r4] + 800b16c: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 + 800b170: e844 3500 strex r5, r3, [r4] + 800b174: 2d00 cmp r5, #0 + 800b176: d1f7 bne.n 800b168 <HAL_UART_Receive_IT+0x20> + 800b178: bc30 pop {r4, r5} + 800b17a: f7ff bf5d b.w 800b038 <UART_Start_Receive_IT> + 800b17e: 2002 movs r0, #2 + 800b180: bc30 pop {r4, r5} + 800b182: 4770 bx lr + 800b184: 2001 movs r0, #1 + 800b186: e7fb b.n 800b180 <HAL_UART_Receive_IT+0x38> + 800b188: 40008000 .word 0x40008000 + +0800b18c <UARTEx_SetNbDataToProcess>: + 800b18c: 6e43 ldr r3, [r0, #100] ; 0x64 + 800b18e: b530 push {r4, r5, lr} + 800b190: b92b cbnz r3, 800b19e <UARTEx_SetNbDataToProcess+0x12> + 800b192: 2301 movs r3, #1 + 800b194: f8a0 306a strh.w r3, [r0, #106] ; 0x6a + 800b198: f8a0 3068 strh.w r3, [r0, #104] ; 0x68 + 800b19c: bd30 pop {r4, r5, pc} + 800b19e: 6803 ldr r3, [r0, #0] + 800b1a0: 4d09 ldr r5, [pc, #36] ; (800b1c8 <UARTEx_SetNbDataToProcess+0x3c>) + 800b1a2: 689a ldr r2, [r3, #8] + 800b1a4: 6899 ldr r1, [r3, #8] + 800b1a6: 4c09 ldr r4, [pc, #36] ; (800b1cc <UARTEx_SetNbDataToProcess+0x40>) + 800b1a8: 0f49 lsrs r1, r1, #29 + 800b1aa: f3c2 6242 ubfx r2, r2, #25, #3 + 800b1ae: 5c6b ldrb r3, [r5, r1] + 800b1b0: 5c61 ldrb r1, [r4, r1] + 800b1b2: 00db lsls r3, r3, #3 + 800b1b4: fbb3 f3f1 udiv r3, r3, r1 + 800b1b8: f8a0 306a strh.w r3, [r0, #106] ; 0x6a + 800b1bc: 5cab ldrb r3, [r5, r2] + 800b1be: 5ca2 ldrb r2, [r4, r2] + 800b1c0: 00db lsls r3, r3, #3 + 800b1c2: fbb3 f3f2 udiv r3, r3, r2 + 800b1c6: e7e7 b.n 800b198 <UARTEx_SetNbDataToProcess+0xc> + 800b1c8: 08015074 .word 0x08015074 + 800b1cc: 0801506c .word 0x0801506c + +0800b1d0 <HAL_UARTEx_WakeupCallback>: + 800b1d0: 4770 bx lr + +0800b1d2 <HAL_UARTEx_RxFifoFullCallback>: + 800b1d2: 4770 bx lr + +0800b1d4 <HAL_UARTEx_TxFifoEmptyCallback>: + 800b1d4: 4770 bx lr + +0800b1d6 <HAL_UARTEx_StopModeWakeUpSourceConfig>: + 800b1d6: b51f push {r0, r1, r2, r3, r4, lr} + 800b1d8: ab04 add r3, sp, #16 + 800b1da: e903 0006 stmdb r3, {r1, r2} + 800b1de: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b1e2: 2b01 cmp r3, #1 + 800b1e4: 4604 mov r4, r0 + 800b1e6: d03a beq.n 800b25e <HAL_UARTEx_StopModeWakeUpSourceConfig+0x88> + 800b1e8: 2301 movs r3, #1 + 800b1ea: f880 3084 strb.w r3, [r0, #132] ; 0x84 + 800b1ee: 2324 movs r3, #36 ; 0x24 + 800b1f0: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b1f4: 6803 ldr r3, [r0, #0] + 800b1f6: 681a ldr r2, [r3, #0] + 800b1f8: f022 0201 bic.w r2, r2, #1 + 800b1fc: 601a str r2, [r3, #0] + 800b1fe: 689a ldr r2, [r3, #8] + 800b200: f422 1240 bic.w r2, r2, #3145728 ; 0x300000 + 800b204: 430a orrs r2, r1 + 800b206: 609a str r2, [r3, #8] + 800b208: b971 cbnz r1, 800b228 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x52> + 800b20a: 685a ldr r2, [r3, #4] + 800b20c: f8bd 000c ldrh.w r0, [sp, #12] + 800b210: f89d 100e ldrb.w r1, [sp, #14] + 800b214: f022 0210 bic.w r2, r2, #16 + 800b218: 4302 orrs r2, r0 + 800b21a: 605a str r2, [r3, #4] + 800b21c: 685a ldr r2, [r3, #4] + 800b21e: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 + 800b222: ea42 6201 orr.w r2, r2, r1, lsl #24 + 800b226: 605a str r2, [r3, #4] + 800b228: 681a ldr r2, [r3, #0] + 800b22a: f042 0201 orr.w r2, r2, #1 + 800b22e: 601a str r2, [r3, #0] + 800b230: f7f7 fc8c bl 8002b4c <HAL_GetTick> + 800b234: f06f 427e mvn.w r2, #4261412864 ; 0xfe000000 + 800b238: 4603 mov r3, r0 + 800b23a: 9200 str r2, [sp, #0] + 800b23c: f44f 0180 mov.w r1, #4194304 ; 0x400000 + 800b240: 2200 movs r2, #0 + 800b242: 4620 mov r0, r4 + 800b244: f7ff fe30 bl 800aea8 <UART_WaitOnFlagUntilTimeout> + 800b248: b938 cbnz r0, 800b25a <HAL_UARTEx_StopModeWakeUpSourceConfig+0x84> + 800b24a: 2320 movs r3, #32 + 800b24c: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800b250: 2300 movs r3, #0 + 800b252: f884 3084 strb.w r3, [r4, #132] ; 0x84 + 800b256: b004 add sp, #16 + 800b258: bd10 pop {r4, pc} + 800b25a: 2003 movs r0, #3 + 800b25c: e7f8 b.n 800b250 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x7a> + 800b25e: 2002 movs r0, #2 + 800b260: e7f9 b.n 800b256 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x80> + +0800b262 <HAL_UARTEx_EnableStopMode>: + 800b262: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b266: 2b01 cmp r3, #1 + 800b268: d00f beq.n 800b28a <HAL_UARTEx_EnableStopMode+0x28> + 800b26a: 2301 movs r3, #1 + 800b26c: f880 3084 strb.w r3, [r0, #132] ; 0x84 + 800b270: 6801 ldr r1, [r0, #0] + 800b272: e851 2f00 ldrex r2, [r1] + 800b276: f042 0202 orr.w r2, r2, #2 + 800b27a: e841 2300 strex r3, r2, [r1] + 800b27e: 2b00 cmp r3, #0 + 800b280: d1f6 bne.n 800b270 <HAL_UARTEx_EnableStopMode+0xe> + 800b282: f880 3084 strb.w r3, [r0, #132] ; 0x84 + 800b286: 4618 mov r0, r3 + 800b288: 4770 bx lr + 800b28a: 2002 movs r0, #2 + 800b28c: 4770 bx lr + +0800b28e <HAL_UARTEx_EnableFifoMode>: + 800b28e: b510 push {r4, lr} + 800b290: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b294: 2b01 cmp r3, #1 + 800b296: 4604 mov r4, r0 + 800b298: d017 beq.n 800b2ca <HAL_UARTEx_EnableFifoMode+0x3c> + 800b29a: 2324 movs r3, #36 ; 0x24 + 800b29c: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b2a0: 6803 ldr r3, [r0, #0] + 800b2a2: 681a ldr r2, [r3, #0] + 800b2a4: 6819 ldr r1, [r3, #0] + 800b2a6: f021 0101 bic.w r1, r1, #1 + 800b2aa: 6019 str r1, [r3, #0] + 800b2ac: f042 5200 orr.w r2, r2, #536870912 ; 0x20000000 + 800b2b0: f04f 5100 mov.w r1, #536870912 ; 0x20000000 + 800b2b4: 6641 str r1, [r0, #100] ; 0x64 + 800b2b6: 601a str r2, [r3, #0] + 800b2b8: f7ff ff68 bl 800b18c <UARTEx_SetNbDataToProcess> + 800b2bc: 2320 movs r3, #32 + 800b2be: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b2c2: 2000 movs r0, #0 + 800b2c4: f884 0084 strb.w r0, [r4, #132] ; 0x84 + 800b2c8: bd10 pop {r4, pc} + 800b2ca: 2002 movs r0, #2 + 800b2cc: e7fc b.n 800b2c8 <HAL_UARTEx_EnableFifoMode+0x3a> + +0800b2ce <HAL_UARTEx_SetTxFifoThreshold>: + 800b2ce: b570 push {r4, r5, r6, lr} + 800b2d0: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b2d4: 2b01 cmp r3, #1 + 800b2d6: 4604 mov r4, r0 + 800b2d8: d017 beq.n 800b30a <HAL_UARTEx_SetTxFifoThreshold+0x3c> + 800b2da: 6805 ldr r5, [r0, #0] + 800b2dc: 2324 movs r3, #36 ; 0x24 + 800b2de: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b2e2: 682e ldr r6, [r5, #0] + 800b2e4: 682b ldr r3, [r5, #0] + 800b2e6: f023 0301 bic.w r3, r3, #1 + 800b2ea: 602b str r3, [r5, #0] + 800b2ec: 68ab ldr r3, [r5, #8] + 800b2ee: f023 4360 bic.w r3, r3, #3758096384 ; 0xe0000000 + 800b2f2: 4319 orrs r1, r3 + 800b2f4: 60a9 str r1, [r5, #8] + 800b2f6: f7ff ff49 bl 800b18c <UARTEx_SetNbDataToProcess> + 800b2fa: 2320 movs r3, #32 + 800b2fc: 602e str r6, [r5, #0] + 800b2fe: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b302: 2000 movs r0, #0 + 800b304: f884 0084 strb.w r0, [r4, #132] ; 0x84 + 800b308: bd70 pop {r4, r5, r6, pc} + 800b30a: 2002 movs r0, #2 + 800b30c: e7fc b.n 800b308 <HAL_UARTEx_SetTxFifoThreshold+0x3a> + +0800b30e <HAL_UARTEx_SetRxFifoThreshold>: + 800b30e: b570 push {r4, r5, r6, lr} + 800b310: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b314: 2b01 cmp r3, #1 + 800b316: 4604 mov r4, r0 + 800b318: d017 beq.n 800b34a <HAL_UARTEx_SetRxFifoThreshold+0x3c> + 800b31a: 6805 ldr r5, [r0, #0] + 800b31c: 2324 movs r3, #36 ; 0x24 + 800b31e: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b322: 682e ldr r6, [r5, #0] + 800b324: 682b ldr r3, [r5, #0] + 800b326: f023 0301 bic.w r3, r3, #1 + 800b32a: 602b str r3, [r5, #0] + 800b32c: 68ab ldr r3, [r5, #8] + 800b32e: f023 6360 bic.w r3, r3, #234881024 ; 0xe000000 + 800b332: 4319 orrs r1, r3 + 800b334: 60a9 str r1, [r5, #8] + 800b336: f7ff ff29 bl 800b18c <UARTEx_SetNbDataToProcess> + 800b33a: 2320 movs r3, #32 + 800b33c: 602e str r6, [r5, #0] + 800b33e: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b342: 2000 movs r0, #0 + 800b344: f884 0084 strb.w r0, [r4, #132] ; 0x84 + 800b348: bd70 pop {r4, r5, r6, pc} + 800b34a: 2002 movs r0, #2 + 800b34c: e7fc b.n 800b348 <HAL_UARTEx_SetRxFifoThreshold+0x3a> + ... + +0800b350 <LmHandlerPackageIsTxPending>: + 800b350: b538 push {r3, r4, r5, lr} + 800b352: 4d09 ldr r5, [pc, #36] ; (800b378 <LmHandlerPackageIsTxPending+0x28>) + 800b354: 2400 movs r4, #0 + 800b356: f855 3b04 ldr.w r3, [r5], #4 + 800b35a: b933 cbnz r3, 800b36a <LmHandlerPackageIsTxPending+0x1a> + 800b35c: 3401 adds r4, #1 + 800b35e: b2e3 uxtb r3, r4 + 800b360: 2b05 cmp r3, #5 + 800b362: b264 sxtb r4, r4 + 800b364: d1f7 bne.n 800b356 <LmHandlerPackageIsTxPending+0x6> + 800b366: 2000 movs r0, #0 + 800b368: bd38 pop {r3, r4, r5, pc} + 800b36a: 2c00 cmp r4, #0 + 800b36c: d0f6 beq.n 800b35c <LmHandlerPackageIsTxPending+0xc> + 800b36e: 691b ldr r3, [r3, #16] + 800b370: 4798 blx r3 + 800b372: 2800 cmp r0, #0 + 800b374: d0f2 beq.n 800b35c <LmHandlerPackageIsTxPending+0xc> + 800b376: e7f7 b.n 800b368 <LmHandlerPackageIsTxPending+0x18> + 800b378: 20001070 .word 0x20001070 + +0800b37c <LmHandlerDeviceTimeReq>: + 800b37c: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} + 800b37e: 230a movs r3, #10 + 800b380: a801 add r0, sp, #4 + 800b382: f88d 3004 strb.w r3, [sp, #4] + 800b386: f003 f8d9 bl 800e53c <LoRaMacMlmeRequest> + 800b38a: 3800 subs r0, #0 + 800b38c: 4b04 ldr r3, [pc, #16] ; (800b3a0 <LmHandlerDeviceTimeReq+0x24>) + 800b38e: 9a05 ldr r2, [sp, #20] + 800b390: 601a str r2, [r3, #0] + 800b392: bf18 it ne + 800b394: 2001 movne r0, #1 + 800b396: 4240 negs r0, r0 + 800b398: b007 add sp, #28 + 800b39a: f85d fb04 ldr.w pc, [sp], #4 + 800b39e: bf00 nop + 800b3a0: 20001068 .word 0x20001068 + +0800b3a4 <MlmeIndication>: + 800b3a4: b570 push {r4, r5, r6, lr} + 800b3a6: 4604 mov r4, r0 + 800b3a8: 460b mov r3, r1 + 800b3aa: 4914 ldr r1, [pc, #80] ; (800b3fc <MlmeIndication+0x58>) + 800b3ac: 7862 ldrb r2, [r4, #1] + 800b3ae: 704a strb r2, [r1, #1] + 800b3b0: 2000 movs r0, #0 + 800b3b2: 78a2 ldrb r2, [r4, #2] + 800b3b4: 720a strb r2, [r1, #8] + 800b3b6: 7008 strb r0, [r1, #0] + 800b3b8: 881a ldrh r2, [r3, #0] + 800b3ba: 724a strb r2, [r1, #9] + 800b3bc: 789a ldrb r2, [r3, #2] + 800b3be: 728a strb r2, [r1, #10] + 800b3c0: 78db ldrb r3, [r3, #3] + 800b3c2: 740b strb r3, [r1, #16] + 800b3c4: 6863 ldr r3, [r4, #4] + 800b3c6: 60cb str r3, [r1, #12] + 800b3c8: 4b0d ldr r3, [pc, #52] ; (800b400 <MlmeIndication+0x5c>) + 800b3ca: 681b ldr r3, [r3, #0] + 800b3cc: 6ada ldr r2, [r3, #44] ; 0x2c + 800b3ce: b12a cbz r2, 800b3dc <MlmeIndication+0x38> + 800b3d0: 7823 ldrb r3, [r4, #0] + 800b3d2: f003 03fb and.w r3, r3, #251 ; 0xfb + 800b3d6: 2b0b cmp r3, #11 + 800b3d8: d000 beq.n 800b3dc <MlmeIndication+0x38> + 800b3da: 4790 blx r2 + 800b3dc: 4e09 ldr r6, [pc, #36] ; (800b404 <MlmeIndication+0x60>) + 800b3de: 2500 movs r5, #0 + 800b3e0: f856 3b04 ldr.w r3, [r6], #4 + 800b3e4: b11b cbz r3, 800b3ee <MlmeIndication+0x4a> + 800b3e6: 6a9b ldr r3, [r3, #40] ; 0x28 + 800b3e8: b10b cbz r3, 800b3ee <MlmeIndication+0x4a> + 800b3ea: 4620 mov r0, r4 + 800b3ec: 4798 blx r3 + 800b3ee: 3501 adds r5, #1 + 800b3f0: b2eb uxtb r3, r5 + 800b3f2: 2b05 cmp r3, #5 + 800b3f4: b26d sxtb r5, r5 + 800b3f6: d1f3 bne.n 800b3e0 <MlmeIndication+0x3c> + 800b3f8: bd70 pop {r4, r5, r6, pc} + 800b3fa: bf00 nop + 800b3fc: 20000848 .word 0x20000848 + 800b400: 2000106c .word 0x2000106c + 800b404: 20001070 .word 0x20001070 + +0800b408 <McpsConfirm>: + 800b408: b570 push {r4, r5, r6, lr} + 800b40a: 4604 mov r4, r0 + 800b40c: 4811 ldr r0, [pc, #68] ; (800b454 <McpsConfirm+0x4c>) + 800b40e: 2301 movs r3, #1 + 800b410: 7003 strb r3, [r0, #0] + 800b412: 7863 ldrb r3, [r4, #1] + 800b414: 7043 strb r3, [r0, #1] + 800b416: 78a3 ldrb r3, [r4, #2] + 800b418: 7283 strb r3, [r0, #10] + 800b41a: 68e3 ldr r3, [r4, #12] + 800b41c: 60c3 str r3, [r0, #12] + 800b41e: 78e3 ldrb r3, [r4, #3] + 800b420: 7603 strb r3, [r0, #24] + 800b422: 6923 ldr r3, [r4, #16] + 800b424: 7643 strb r3, [r0, #25] + 800b426: 7923 ldrb r3, [r4, #4] + 800b428: 7243 strb r3, [r0, #9] + 800b42a: 4b0b ldr r3, [pc, #44] ; (800b458 <McpsConfirm+0x50>) + 800b42c: 681b ldr r3, [r3, #0] + 800b42e: 6a9b ldr r3, [r3, #40] ; 0x28 + 800b430: b103 cbz r3, 800b434 <McpsConfirm+0x2c> + 800b432: 4798 blx r3 + 800b434: 4e09 ldr r6, [pc, #36] ; (800b45c <McpsConfirm+0x54>) + 800b436: 2500 movs r5, #0 + 800b438: f856 3b04 ldr.w r3, [r6], #4 + 800b43c: b11b cbz r3, 800b446 <McpsConfirm+0x3e> + 800b43e: 69db ldr r3, [r3, #28] + 800b440: b10b cbz r3, 800b446 <McpsConfirm+0x3e> + 800b442: 4620 mov r0, r4 + 800b444: 4798 blx r3 + 800b446: 3501 adds r5, #1 + 800b448: b2eb uxtb r3, r5 + 800b44a: 2b05 cmp r3, #5 + 800b44c: b26d sxtb r5, r5 + 800b44e: d1f3 bne.n 800b438 <McpsConfirm+0x30> + 800b450: bd70 pop {r4, r5, r6, pc} + 800b452: bf00 nop + 800b454: 2000085c .word 0x2000085c + 800b458: 2000106c .word 0x2000106c + 800b45c: 20001070 .word 0x20001070 + +0800b460 <LmHandlerProcess>: + 800b460: b538 push {r3, r4, r5, lr} + 800b462: f001 fe11 bl 800d088 <LoRaMacProcess> + 800b466: 4d0c ldr r5, [pc, #48] ; (800b498 <LmHandlerProcess+0x38>) + 800b468: 2405 movs r4, #5 + 800b46a: f855 3b04 ldr.w r3, [r5], #4 + 800b46e: b15b cbz r3, 800b488 <LmHandlerProcess+0x28> + 800b470: 695b ldr r3, [r3, #20] + 800b472: b14b cbz r3, 800b488 <LmHandlerProcess+0x28> + 800b474: f855 3c04 ldr.w r3, [r5, #-4] + 800b478: 689b ldr r3, [r3, #8] + 800b47a: b12b cbz r3, 800b488 <LmHandlerProcess+0x28> + 800b47c: 4798 blx r3 + 800b47e: b118 cbz r0, 800b488 <LmHandlerProcess+0x28> + 800b480: f855 3c04 ldr.w r3, [r5, #-4] + 800b484: 695b ldr r3, [r3, #20] + 800b486: 4798 blx r3 + 800b488: 3c01 subs r4, #1 + 800b48a: f014 04ff ands.w r4, r4, #255 ; 0xff + 800b48e: d1ec bne.n 800b46a <LmHandlerProcess+0xa> + 800b490: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 800b494: f7ff bf5c b.w 800b350 <LmHandlerPackageIsTxPending> + 800b498: 20001070 .word 0x20001070 + +0800b49c <LmHandlerGetDutyCycleWaitTime>: + 800b49c: 4b01 ldr r3, [pc, #4] ; (800b4a4 <LmHandlerGetDutyCycleWaitTime+0x8>) + 800b49e: 6818 ldr r0, [r3, #0] + 800b4a0: 4770 bx lr + 800b4a2: bf00 nop + 800b4a4: 20001068 .word 0x20001068 + +0800b4a8 <LmHandlerJoinStatus>: + 800b4a8: b500 push {lr} + 800b4aa: b08b sub sp, #44 ; 0x2c + 800b4ac: 2301 movs r3, #1 + 800b4ae: 4668 mov r0, sp + 800b4b0: f88d 3000 strb.w r3, [sp] + 800b4b4: f002 fcbc bl 800de30 <LoRaMacMibGetRequestConfirm> + 800b4b8: b938 cbnz r0, 800b4ca <LmHandlerJoinStatus+0x22> + 800b4ba: f89d 0004 ldrb.w r0, [sp, #4] + 800b4be: 3800 subs r0, #0 + 800b4c0: bf18 it ne + 800b4c2: 2001 movne r0, #1 + 800b4c4: b00b add sp, #44 ; 0x2c + 800b4c6: f85d fb04 ldr.w pc, [sp], #4 + 800b4ca: 2000 movs r0, #0 + 800b4cc: e7fa b.n 800b4c4 <LmHandlerJoinStatus+0x1c> + ... + +0800b4d0 <LmHandlerRequestClass>: + 800b4d0: b530 push {r4, r5, lr} + 800b4d2: b08b sub sp, #44 ; 0x2c + 800b4d4: 4605 mov r5, r0 + 800b4d6: f001 fdbb bl 800d050 <LoRaMacIsBusy> + 800b4da: 4604 mov r4, r0 + 800b4dc: 2800 cmp r0, #0 + 800b4de: d139 bne.n 800b554 <LmHandlerRequestClass+0x84> + 800b4e0: f7ff ffe2 bl 800b4a8 <LmHandlerJoinStatus> + 800b4e4: 2801 cmp r0, #1 + 800b4e6: d138 bne.n 800b55a <LmHandlerRequestClass+0x8a> + 800b4e8: 4668 mov r0, sp + 800b4ea: f88d 4000 strb.w r4, [sp] + 800b4ee: f002 fc9f bl 800de30 <LoRaMacMibGetRequestConfirm> + 800b4f2: b110 cbz r0, 800b4fa <LmHandlerRequestClass+0x2a> + 800b4f4: f04f 30ff mov.w r0, #4294967295 + 800b4f8: e004 b.n 800b504 <LmHandlerRequestClass+0x34> + 800b4fa: f89d 3004 ldrb.w r3, [sp, #4] + 800b4fe: 42ab cmp r3, r5 + 800b500: d102 bne.n 800b508 <LmHandlerRequestClass+0x38> + 800b502: 2000 movs r0, #0 + 800b504: b00b add sp, #44 ; 0x2c + 800b506: bd30 pop {r4, r5, pc} + 800b508: 2d01 cmp r5, #1 + 800b50a: d0f3 beq.n 800b4f4 <LmHandlerRequestClass+0x24> + 800b50c: 2d02 cmp r5, #2 + 800b50e: d011 beq.n 800b534 <LmHandlerRequestClass+0x64> + 800b510: 2d00 cmp r5, #0 + 800b512: d1f7 bne.n 800b504 <LmHandlerRequestClass+0x34> + 800b514: 2b00 cmp r3, #0 + 800b516: d0f4 beq.n 800b502 <LmHandlerRequestClass+0x32> + 800b518: 4668 mov r0, sp + 800b51a: f88d 5004 strb.w r5, [sp, #4] + 800b51e: f002 fd99 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b522: 2800 cmp r0, #0 + 800b524: d1e6 bne.n 800b4f4 <LmHandlerRequestClass+0x24> + 800b526: 4b0e ldr r3, [pc, #56] ; (800b560 <LmHandlerRequestClass+0x90>) + 800b528: 681b ldr r3, [r3, #0] + 800b52a: 6b1b ldr r3, [r3, #48] ; 0x30 + 800b52c: 2b00 cmp r3, #0 + 800b52e: d0e8 beq.n 800b502 <LmHandlerRequestClass+0x32> + 800b530: 4798 blx r3 + 800b532: e7e6 b.n 800b502 <LmHandlerRequestClass+0x32> + 800b534: 2b00 cmp r3, #0 + 800b536: d1dd bne.n 800b4f4 <LmHandlerRequestClass+0x24> + 800b538: 4668 mov r0, sp + 800b53a: f88d 5004 strb.w r5, [sp, #4] + 800b53e: f002 fd89 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b542: 2800 cmp r0, #0 + 800b544: d1d6 bne.n 800b4f4 <LmHandlerRequestClass+0x24> + 800b546: 4b06 ldr r3, [pc, #24] ; (800b560 <LmHandlerRequestClass+0x90>) + 800b548: 681b ldr r3, [r3, #0] + 800b54a: 6b1b ldr r3, [r3, #48] ; 0x30 + 800b54c: 2b00 cmp r3, #0 + 800b54e: d0d8 beq.n 800b502 <LmHandlerRequestClass+0x32> + 800b550: 4628 mov r0, r5 + 800b552: e7ed b.n 800b530 <LmHandlerRequestClass+0x60> + 800b554: f06f 0001 mvn.w r0, #1 + 800b558: e7d4 b.n 800b504 <LmHandlerRequestClass+0x34> + 800b55a: f06f 0002 mvn.w r0, #2 + 800b55e: e7d1 b.n 800b504 <LmHandlerRequestClass+0x34> + 800b560: 2000106c .word 0x2000106c + +0800b564 <LmHandlerJoin>: + 800b564: b570 push {r4, r5, r6, lr} + 800b566: 4c32 ldr r4, [pc, #200] ; (800b630 <LmHandlerJoin+0xcc>) + 800b568: 4b32 ldr r3, [pc, #200] ; (800b634 <LmHandlerJoin+0xd0>) + 800b56a: f994 2004 ldrsb.w r2, [r4, #4] + 800b56e: f994 5005 ldrsb.w r5, [r4, #5] + 800b572: b090 sub sp, #64 ; 0x40 + 800b574: 2601 movs r6, #1 + 800b576: 2802 cmp r0, #2 + 800b578: f88d 6004 strb.w r6, [sp, #4] + 800b57c: f88d 2009 strb.w r2, [sp, #9] + 800b580: f88d 500a strb.w r5, [sp, #10] + 800b584: d10a bne.n 800b59c <LmHandlerJoin+0x38> + 800b586: f88d 0008 strb.w r0, [sp, #8] + 800b58a: 71d8 strb r0, [r3, #7] + 800b58c: 7219 strb r1, [r3, #8] + 800b58e: f002 fb9f bl 800dcd0 <LoRaMacStart> + 800b592: a801 add r0, sp, #4 + 800b594: f002 ffd2 bl 800e53c <LoRaMacMlmeRequest> + 800b598: b010 add sp, #64 ; 0x40 + 800b59a: bd70 pop {r4, r5, r6, pc} + 800b59c: f44f 7080 mov.w r0, #256 ; 0x100 + 800b5a0: 711a strb r2, [r3, #4] + 800b5a2: 715d strb r5, [r3, #5] + 800b5a4: 80d8 strh r0, [r3, #6] + 800b5a6: 7219 strb r1, [r3, #8] + 800b5a8: 4b23 ldr r3, [pc, #140] ; (800b638 <LmHandlerJoin+0xd4>) + 800b5aa: f88d 6008 strb.w r6, [sp, #8] + 800b5ae: 781b ldrb r3, [r3, #0] + 800b5b0: bb53 cbnz r3, 800b608 <LmHandlerJoin+0xa4> + 800b5b2: 231e movs r3, #30 + 800b5b4: a806 add r0, sp, #24 + 800b5b6: f88d 201c strb.w r2, [sp, #28] + 800b5ba: f88d 3018 strb.w r3, [sp, #24] + 800b5be: f002 fd49 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b5c2: 231f movs r3, #31 + 800b5c4: f88d 3018 strb.w r3, [sp, #24] + 800b5c8: a806 add r0, sp, #24 + 800b5ca: 7923 ldrb r3, [r4, #4] + 800b5cc: f88d 301c strb.w r3, [sp, #28] + 800b5d0: f002 fd40 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b5d4: 2321 movs r3, #33 ; 0x21 + 800b5d6: f88d 3018 strb.w r3, [sp, #24] + 800b5da: a806 add r0, sp, #24 + 800b5dc: 7963 ldrb r3, [r4, #5] + 800b5de: f88d 301c strb.w r3, [sp, #28] + 800b5e2: f002 fd37 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b5e6: 2320 movs r3, #32 + 800b5e8: f88d 3018 strb.w r3, [sp, #24] + 800b5ec: a806 add r0, sp, #24 + 800b5ee: 7963 ldrb r3, [r4, #5] + 800b5f0: f88d 301c strb.w r3, [sp, #28] + 800b5f4: f002 fd2e bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b5f8: 2328 movs r3, #40 ; 0x28 + 800b5fa: f88d 3018 strb.w r3, [sp, #24] + 800b5fe: a806 add r0, sp, #24 + 800b600: 4b0e ldr r3, [pc, #56] ; (800b63c <LmHandlerJoin+0xd8>) + 800b602: 9307 str r3, [sp, #28] + 800b604: f002 fd26 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b608: f002 fb62 bl 800dcd0 <LoRaMacStart> + 800b60c: 2301 movs r3, #1 + 800b60e: a806 add r0, sp, #24 + 800b610: f88d 3018 strb.w r3, [sp, #24] + 800b614: f88d 301c strb.w r3, [sp, #28] + 800b618: f002 fd1c bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b61c: 4b08 ldr r3, [pc, #32] ; (800b640 <LmHandlerJoin+0xdc>) + 800b61e: 681b ldr r3, [r3, #0] + 800b620: 6a5b ldr r3, [r3, #36] ; 0x24 + 800b622: b10b cbz r3, 800b628 <LmHandlerJoin+0xc4> + 800b624: 4803 ldr r0, [pc, #12] ; (800b634 <LmHandlerJoin+0xd0>) + 800b626: 4798 blx r3 + 800b628: 7860 ldrb r0, [r4, #1] + 800b62a: f7ff ff51 bl 800b4d0 <LmHandlerRequestClass> + 800b62e: e7b3 b.n 800b598 <LmHandlerJoin+0x34> + 800b630: 20001084 .word 0x20001084 + 800b634: 20000830 .word 0x20000830 + 800b638: 20001064 .word 0x20001064 + 800b63c: 01000300 .word 0x01000300 + 800b640: 2000106c .word 0x2000106c + +0800b644 <LmHandlerIsBusy>: + 800b644: b508 push {r3, lr} + 800b646: f001 fd03 bl 800d050 <LoRaMacIsBusy> + 800b64a: b940 cbnz r0, 800b65e <LmHandlerIsBusy+0x1a> + 800b64c: f7ff ff2c bl 800b4a8 <LmHandlerJoinStatus> + 800b650: 2801 cmp r0, #1 + 800b652: d006 beq.n 800b662 <LmHandlerIsBusy+0x1e> + 800b654: 4b08 ldr r3, [pc, #32] ; (800b678 <LmHandlerIsBusy+0x34>) + 800b656: 7a19 ldrb r1, [r3, #8] + 800b658: 79d8 ldrb r0, [r3, #7] + 800b65a: f7ff ff83 bl 800b564 <LmHandlerJoin> + 800b65e: 2001 movs r0, #1 + 800b660: bd08 pop {r3, pc} + 800b662: 4b06 ldr r3, [pc, #24] ; (800b67c <LmHandlerIsBusy+0x38>) + 800b664: 681b ldr r3, [r3, #0] + 800b666: 68db ldr r3, [r3, #12] + 800b668: 4798 blx r3 + 800b66a: 2800 cmp r0, #0 + 800b66c: d1f7 bne.n 800b65e <LmHandlerIsBusy+0x1a> + 800b66e: e8bd 4008 ldmia.w sp!, {r3, lr} + 800b672: f7ff be6d b.w 800b350 <LmHandlerPackageIsTxPending> + 800b676: bf00 nop + 800b678: 20000830 .word 0x20000830 + 800b67c: 20001070 .word 0x20001070 + +0800b680 <LmHandlerSend>: + 800b680: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800b684: b086 sub sp, #24 + 800b686: 4605 mov r5, r0 + 800b688: 460c mov r4, r1 + 800b68a: 4616 mov r6, r2 + 800b68c: f001 fce0 bl 800d050 <LoRaMacIsBusy> + 800b690: 2800 cmp r0, #0 + 800b692: f040 808d bne.w 800b7b0 <LmHandlerSend+0x130> + 800b696: f001 fced bl 800d074 <LoRaMacIsStopped> + 800b69a: b940 cbnz r0, 800b6ae <LmHandlerSend+0x2e> + 800b69c: f7ff ff04 bl 800b4a8 <LmHandlerJoinStatus> + 800b6a0: 2801 cmp r0, #1 + 800b6a2: d007 beq.n 800b6b4 <LmHandlerSend+0x34> + 800b6a4: 4b44 ldr r3, [pc, #272] ; (800b7b8 <LmHandlerSend+0x138>) + 800b6a6: 7a19 ldrb r1, [r3, #8] + 800b6a8: 79d8 ldrb r0, [r3, #7] + 800b6aa: f7ff ff5b bl 800b564 <LmHandlerJoin> + 800b6ae: f06f 0402 mvn.w r4, #2 + 800b6b2: e06d b.n 800b790 <LmHandlerSend+0x110> + 800b6b4: 4f41 ldr r7, [pc, #260] ; (800b7bc <LmHandlerSend+0x13c>) + 800b6b6: 683b ldr r3, [r7, #0] + 800b6b8: 68db ldr r3, [r3, #12] + 800b6ba: 4798 blx r3 + 800b6bc: b130 cbz r0, 800b6cc <LmHandlerSend+0x4c> + 800b6be: 683a ldr r2, [r7, #0] + 800b6c0: 782b ldrb r3, [r5, #0] + 800b6c2: 7812 ldrb r2, [r2, #0] + 800b6c4: 429a cmp r2, r3 + 800b6c6: d001 beq.n 800b6cc <LmHandlerSend+0x4c> + 800b6c8: 2b00 cmp r3, #0 + 800b6ca: d16e bne.n 800b7aa <LmHandlerSend+0x12a> + 800b6cc: 4f3c ldr r7, [pc, #240] ; (800b7c0 <LmHandlerSend+0x140>) + 800b6ce: f8df 80f4 ldr.w r8, [pc, #244] ; 800b7c4 <LmHandlerSend+0x144> + 800b6d2: 723c strb r4, [r7, #8] + 800b6d4: 3c00 subs r4, #0 + 800b6d6: bf18 it ne + 800b6d8: 2401 movne r4, #1 + 800b6da: f898 3004 ldrb.w r3, [r8, #4] + 800b6de: 7868 ldrb r0, [r5, #1] + 800b6e0: f88d 4004 strb.w r4, [sp, #4] + 800b6e4: 4669 mov r1, sp + 800b6e6: f88d 3012 strb.w r3, [sp, #18] + 800b6ea: f002 fb49 bl 800dd80 <LoRaMacQueryTxPossible> + 800b6ee: 2800 cmp r0, #0 + 800b6f0: d040 beq.n 800b774 <LmHandlerSend+0xf4> + 800b6f2: 2300 movs r3, #0 + 800b6f4: f88d 3004 strb.w r3, [sp, #4] + 800b6f8: 9303 str r3, [sp, #12] + 800b6fa: f8ad 3010 strh.w r3, [sp, #16] + 800b6fe: f06f 0406 mvn.w r4, #6 + 800b702: e895 0003 ldmia.w r5, {r0, r1} + 800b706: 4b30 ldr r3, [pc, #192] ; (800b7c8 <LmHandlerSend+0x148>) + 800b708: e883 0003 stmia.w r3, {r0, r1} + 800b70c: f898 3004 ldrb.w r3, [r8, #4] + 800b710: 72bb strb r3, [r7, #10] + 800b712: 4631 mov r1, r6 + 800b714: a801 add r0, sp, #4 + 800b716: f003 f809 bl 800e72c <LoRaMacMcpsRequest> + 800b71a: 4b2c ldr r3, [pc, #176] ; (800b7cc <LmHandlerSend+0x14c>) + 800b71c: 9a05 ldr r2, [sp, #20] + 800b71e: 601a str r2, [r3, #0] + 800b720: 2811 cmp r0, #17 + 800b722: d83f bhi.n 800b7a4 <LmHandlerSend+0x124> + 800b724: a301 add r3, pc, #4 ; (adr r3, 800b72c <LmHandlerSend+0xac>) + 800b726: f853 f020 ldr.w pc, [r3, r0, lsl #2] + 800b72a: bf00 nop + 800b72c: 0800b78b .word 0x0800b78b + 800b730: 0800b7b1 .word 0x0800b7b1 + 800b734: 0800b7a5 .word 0x0800b7a5 + 800b738: 0800b7a5 .word 0x0800b7a5 + 800b73c: 0800b7a5 .word 0x0800b7a5 + 800b740: 0800b7a5 .word 0x0800b7a5 + 800b744: 0800b7a5 .word 0x0800b7a5 + 800b748: 0800b6af .word 0x0800b6af + 800b74c: 0800b7a5 .word 0x0800b7a5 + 800b750: 0800b7a5 .word 0x0800b7a5 + 800b754: 0800b7a5 .word 0x0800b7a5 + 800b758: 0800b79f .word 0x0800b79f + 800b75c: 0800b7a5 .word 0x0800b7a5 + 800b760: 0800b7a5 .word 0x0800b7a5 + 800b764: 0800b7b1 .word 0x0800b7b1 + 800b768: 0800b7b1 .word 0x0800b7b1 + 800b76c: 0800b7b1 .word 0x0800b7b1 + 800b770: 0800b799 .word 0x0800b799 + 800b774: 782b ldrb r3, [r5, #0] + 800b776: f88d 3008 strb.w r3, [sp, #8] + 800b77a: 786b ldrb r3, [r5, #1] + 800b77c: f8ad 3010 strh.w r3, [sp, #16] + 800b780: 686b ldr r3, [r5, #4] + 800b782: 9303 str r3, [sp, #12] + 800b784: f04f 34ff mov.w r4, #4294967295 + 800b788: e7bb b.n 800b702 <LmHandlerSend+0x82> + 800b78a: 1de3 adds r3, r4, #7 + 800b78c: bf18 it ne + 800b78e: 2400 movne r4, #0 + 800b790: 4620 mov r0, r4 + 800b792: b006 add sp, #24 + 800b794: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800b798: f06f 0404 mvn.w r4, #4 + 800b79c: e7f8 b.n 800b790 <LmHandlerSend+0x110> + 800b79e: f06f 0405 mvn.w r4, #5 + 800b7a2: e7f5 b.n 800b790 <LmHandlerSend+0x110> + 800b7a4: f04f 34ff mov.w r4, #4294967295 + 800b7a8: e7f2 b.n 800b790 <LmHandlerSend+0x110> + 800b7aa: f06f 0403 mvn.w r4, #3 + 800b7ae: e7ef b.n 800b790 <LmHandlerSend+0x110> + 800b7b0: f06f 0401 mvn.w r4, #1 + 800b7b4: e7ec b.n 800b790 <LmHandlerSend+0x110> + 800b7b6: bf00 nop + 800b7b8: 20000830 .word 0x20000830 + 800b7bc: 20001070 .word 0x20001070 + 800b7c0: 2000085c .word 0x2000085c + 800b7c4: 20001084 .word 0x20001084 + 800b7c8: 2000086c .word 0x2000086c + 800b7cc: 20001068 .word 0x20001068 + +0800b7d0 <LmHandlerGetCurrentClass>: + 800b7d0: b510 push {r4, lr} + 800b7d2: 4604 mov r4, r0 + 800b7d4: b08a sub sp, #40 ; 0x28 + 800b7d6: b918 cbnz r0, 800b7e0 <LmHandlerGetCurrentClass+0x10> + 800b7d8: f04f 30ff mov.w r0, #4294967295 + 800b7dc: b00a add sp, #40 ; 0x28 + 800b7de: bd10 pop {r4, pc} + 800b7e0: 2300 movs r3, #0 + 800b7e2: 4668 mov r0, sp + 800b7e4: f88d 3000 strb.w r3, [sp] + 800b7e8: f002 fb22 bl 800de30 <LoRaMacMibGetRequestConfirm> + 800b7ec: 2800 cmp r0, #0 + 800b7ee: d1f3 bne.n 800b7d8 <LmHandlerGetCurrentClass+0x8> + 800b7f0: f89d 3004 ldrb.w r3, [sp, #4] + 800b7f4: 7023 strb r3, [r4, #0] + 800b7f6: e7f1 b.n 800b7dc <LmHandlerGetCurrentClass+0xc> + +0800b7f8 <McpsIndication>: + 800b7f8: b5f0 push {r4, r5, r6, r7, lr} + 800b7fa: b087 sub sp, #28 + 800b7fc: 2200 movs r2, #0 + 800b7fe: 460b mov r3, r1 + 800b800: 492a ldr r1, [pc, #168] ; (800b8ac <McpsIndication+0xb4>) + 800b802: f88d 2007 strb.w r2, [sp, #7] + 800b806: 2201 movs r2, #1 + 800b808: 700a strb r2, [r1, #0] + 800b80a: 7842 ldrb r2, [r0, #1] + 800b80c: 704a strb r2, [r1, #1] + 800b80e: 4604 mov r4, r0 + 800b810: 2a00 cmp r2, #0 + 800b812: d141 bne.n 800b898 <McpsIndication+0xa0> + 800b814: 7902 ldrb r2, [r0, #4] + 800b816: 720a strb r2, [r1, #8] + 800b818: 881a ldrh r2, [r3, #0] + 800b81a: 724a strb r2, [r1, #9] + 800b81c: 789a ldrb r2, [r3, #2] + 800b81e: 728a strb r2, [r1, #10] + 800b820: 78db ldrb r3, [r3, #3] + 800b822: 740b strb r3, [r1, #16] + 800b824: 6903 ldr r3, [r0, #16] + 800b826: 60cb str r3, [r1, #12] + 800b828: 78c3 ldrb r3, [r0, #3] + 800b82a: 4d21 ldr r5, [pc, #132] ; (800b8b0 <McpsIndication+0xb8>) + 800b82c: f88d 3008 strb.w r3, [sp, #8] + 800b830: 7b03 ldrb r3, [r0, #12] + 800b832: f88d 3009 strb.w r3, [sp, #9] + 800b836: 6883 ldr r3, [r0, #8] + 800b838: 9303 str r3, [sp, #12] + 800b83a: 682b ldr r3, [r5, #0] + 800b83c: 6adb ldr r3, [r3, #44] ; 0x2c + 800b83e: b10b cbz r3, 800b844 <McpsIndication+0x4c> + 800b840: a802 add r0, sp, #8 + 800b842: 4798 blx r3 + 800b844: 682b ldr r3, [r5, #0] + 800b846: 6b9b ldr r3, [r3, #56] ; 0x38 + 800b848: b113 cbz r3, 800b850 <McpsIndication+0x58> + 800b84a: 7e22 ldrb r2, [r4, #24] + 800b84c: b102 cbz r2, 800b850 <McpsIndication+0x58> + 800b84e: 4798 blx r3 + 800b850: 4e18 ldr r6, [pc, #96] ; (800b8b4 <McpsIndication+0xbc>) + 800b852: 2500 movs r5, #0 + 800b854: 4637 mov r7, r6 + 800b856: f856 3b04 ldr.w r3, [r6], #4 + 800b85a: b153 cbz r3, 800b872 <McpsIndication+0x7a> + 800b85c: 6a1a ldr r2, [r3, #32] + 800b85e: b142 cbz r2, 800b872 <McpsIndication+0x7a> + 800b860: 781a ldrb r2, [r3, #0] + 800b862: 78e3 ldrb r3, [r4, #3] + 800b864: 429a cmp r2, r3 + 800b866: d119 bne.n 800b89c <McpsIndication+0xa4> + 800b868: f856 3c04 ldr.w r3, [r6, #-4] + 800b86c: 4620 mov r0, r4 + 800b86e: 6a1b ldr r3, [r3, #32] + 800b870: 4798 blx r3 + 800b872: 3501 adds r5, #1 + 800b874: b2eb uxtb r3, r5 + 800b876: 2b05 cmp r3, #5 + 800b878: b26d sxtb r5, r5 + 800b87a: d1ec bne.n 800b856 <McpsIndication+0x5e> + 800b87c: f10d 0007 add.w r0, sp, #7 + 800b880: f7ff ffa6 bl 800b7d0 <LmHandlerGetCurrentClass> + 800b884: 7963 ldrb r3, [r4, #5] + 800b886: b13b cbz r3, 800b898 <McpsIndication+0xa0> + 800b888: 2100 movs r1, #0 + 800b88a: 2201 movs r2, #1 + 800b88c: a804 add r0, sp, #16 + 800b88e: f8ad 1010 strh.w r1, [sp, #16] + 800b892: 9105 str r1, [sp, #20] + 800b894: f7ff fef4 bl 800b680 <LmHandlerSend> + 800b898: b007 add sp, #28 + 800b89a: bdf0 pop {r4, r5, r6, r7, pc} + 800b89c: 2d00 cmp r5, #0 + 800b89e: d1e8 bne.n 800b872 <McpsIndication+0x7a> + 800b8a0: 683b ldr r3, [r7, #0] + 800b8a2: 68db ldr r3, [r3, #12] + 800b8a4: 4798 blx r3 + 800b8a6: 2800 cmp r0, #0 + 800b8a8: d1de bne.n 800b868 <McpsIndication+0x70> + 800b8aa: e7e2 b.n 800b872 <McpsIndication+0x7a> + 800b8ac: 20000848 .word 0x20000848 + 800b8b0: 2000106c .word 0x2000106c + 800b8b4: 20001070 .word 0x20001070 + +0800b8b8 <LmHandlerGetTxDatarate>: + 800b8b8: b510 push {r4, lr} + 800b8ba: 4604 mov r4, r0 + 800b8bc: b08a sub sp, #40 ; 0x28 + 800b8be: b918 cbnz r0, 800b8c8 <LmHandlerGetTxDatarate+0x10> + 800b8c0: f04f 30ff mov.w r0, #4294967295 + 800b8c4: b00a add sp, #40 ; 0x28 + 800b8c6: bd10 pop {r4, pc} + 800b8c8: 231f movs r3, #31 + 800b8ca: 4668 mov r0, sp + 800b8cc: f88d 3000 strb.w r3, [sp] + 800b8d0: f002 faae bl 800de30 <LoRaMacMibGetRequestConfirm> + 800b8d4: 2800 cmp r0, #0 + 800b8d6: d1f3 bne.n 800b8c0 <LmHandlerGetTxDatarate+0x8> + 800b8d8: 4a02 ldr r2, [pc, #8] ; (800b8e4 <LmHandlerGetTxDatarate+0x2c>) + 800b8da: f99d 3004 ldrsb.w r3, [sp, #4] + 800b8de: 7023 strb r3, [r4, #0] + 800b8e0: 7113 strb r3, [r2, #4] + 800b8e2: e7ef b.n 800b8c4 <LmHandlerGetTxDatarate+0xc> + 800b8e4: 20001084 .word 0x20001084 + +0800b8e8 <LmHandlerSetSystemMaxRxError>: + 800b8e8: b500 push {lr} + 800b8ea: b08b sub sp, #44 ; 0x2c + 800b8ec: 2322 movs r3, #34 ; 0x22 + 800b8ee: 9001 str r0, [sp, #4] + 800b8f0: 4668 mov r0, sp + 800b8f2: f88d 3000 strb.w r3, [sp] + 800b8f6: f002 fbad bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b8fa: 3800 subs r0, #0 + 800b8fc: bf18 it ne + 800b8fe: 2001 movne r0, #1 + 800b900: 4240 negs r0, r0 + 800b902: b00b add sp, #44 ; 0x2c + 800b904: f85d fb04 ldr.w pc, [sp], #4 + +0800b908 <LmHandlerConfigure>: + 800b908: b570 push {r4, r5, r6, lr} + 800b90a: 4c63 ldr r4, [pc, #396] ; (800ba98 <LmHandlerConfigure+0x190>) + 800b90c: 4601 mov r1, r0 + 800b90e: 2218 movs r2, #24 + 800b910: b08e sub sp, #56 ; 0x38 + 800b912: 4620 mov r0, r4 + 800b914: f005 ff66 bl 80117e4 <memcpy1> + 800b918: f7f8 fe5c bl 80045d4 <LoraInfo_GetPtr> + 800b91c: 7823 ldrb r3, [r4, #0] + 800b91e: 6840 ldr r0, [r0, #4] + 800b920: 2201 movs r2, #1 + 800b922: fa02 f103 lsl.w r1, r2, r3 + 800b926: 4001 ands r1, r0 + 800b928: d104 bne.n 800b934 <LmHandlerConfigure+0x2c> + 800b92a: 4b5c ldr r3, [pc, #368] ; (800ba9c <LmHandlerConfigure+0x194>) + 800b92c: 4608 mov r0, r1 + 800b92e: f007 ff4f bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800b932: e7fe b.n 800b932 <LmHandlerConfigure+0x2a> + 800b934: 495a ldr r1, [pc, #360] ; (800baa0 <LmHandlerConfigure+0x198>) + 800b936: 485b ldr r0, [pc, #364] ; (800baa4 <LmHandlerConfigure+0x19c>) + 800b938: 461a mov r2, r3 + 800b93a: f002 f811 bl 800d960 <LoRaMacInitialization> + 800b93e: b118 cbz r0, 800b948 <LmHandlerConfigure+0x40> + 800b940: f04f 30ff mov.w r0, #4294967295 + 800b944: b00e add sp, #56 ; 0x38 + 800b946: bd70 pop {r4, r5, r6, pc} + 800b948: 2326 movs r3, #38 ; 0x26 + 800b94a: a804 add r0, sp, #16 + 800b94c: f88d 3010 strb.w r3, [sp, #16] + 800b950: f002 fb80 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b954: 4e54 ldr r6, [pc, #336] ; (800baa8 <LmHandlerConfigure+0x1a0>) + 800b956: 4d55 ldr r5, [pc, #340] ; (800baac <LmHandlerConfigure+0x1a4>) + 800b958: 2800 cmp r0, #0 + 800b95a: d170 bne.n 800ba3e <LmHandlerConfigure+0x136> + 800b95c: 2301 movs r3, #1 + 800b95e: 7033 strb r3, [r6, #0] + 800b960: 682b ldr r3, [r5, #0] + 800b962: 69db ldr r3, [r3, #28] + 800b964: b10b cbz r3, 800b96a <LmHandlerConfigure+0x62> + 800b966: 2000 movs r0, #0 + 800b968: 4798 blx r3 + 800b96a: 2326 movs r3, #38 ; 0x26 + 800b96c: a804 add r0, sp, #16 + 800b96e: f88d 3010 strb.w r3, [sp, #16] + 800b972: f002 fa5d bl 800de30 <LoRaMacMibGetRequestConfirm> + 800b976: 9b05 ldr r3, [sp, #20] + 800b978: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800b97c: 7022 strb r2, [r4, #0] + 800b97e: f893 2118 ldrb.w r2, [r3, #280] ; 0x118 + 800b982: f893 311a ldrb.w r3, [r3, #282] ; 0x11a + 800b986: 7062 strb r2, [r4, #1] + 800b988: 70a3 strb r3, [r4, #2] + 800b98a: 4b45 ldr r3, [pc, #276] ; (800baa0 <LmHandlerConfigure+0x198>) + 800b98c: e9d3 0102 ldrd r0, r1, [r3, #8] + 800b990: f005 fe1a bl 80115c8 <SecureElementInitMcuID> + 800b994: 4605 mov r5, r0 + 800b996: 2800 cmp r0, #0 + 800b998: d1d2 bne.n 800b940 <LmHandlerConfigure+0x38> + 800b99a: 4e45 ldr r6, [pc, #276] ; (800bab0 <LmHandlerConfigure+0x1a8>) + 800b99c: 2306 movs r3, #6 + 800b99e: a804 add r0, sp, #16 + 800b9a0: f88d 3010 strb.w r3, [sp, #16] + 800b9a4: f002 fa44 bl 800de30 <LoRaMacMibGetRequestConfirm> + 800b9a8: 9b05 ldr r3, [sp, #20] + 800b9aa: 6173 str r3, [r6, #20] + 800b9ac: a804 add r0, sp, #16 + 800b9ae: f002 fb51 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b9b2: 2302 movs r3, #2 + 800b9b4: a804 add r0, sp, #16 + 800b9b6: f88d 3010 strb.w r3, [sp, #16] + 800b9ba: 9605 str r6, [sp, #20] + 800b9bc: f002 fa38 bl 800de30 <LoRaMacMibGetRequestConfirm> + 800b9c0: 3608 adds r6, #8 + 800b9c2: 2303 movs r3, #3 + 800b9c4: a804 add r0, sp, #16 + 800b9c6: f88d 3010 strb.w r3, [sp, #16] + 800b9ca: 9605 str r6, [sp, #20] + 800b9cc: f002 fa30 bl 800de30 <LoRaMacMibGetRequestConfirm> + 800b9d0: 260f movs r6, #15 + 800b9d2: f005 febd bl 8011750 <SecureElementPrintKeys> + 800b9d6: 2301 movs r3, #1 + 800b9d8: a804 add r0, sp, #16 + 800b9da: f88d 3014 strb.w r3, [sp, #20] + 800b9de: f88d 6010 strb.w r6, [sp, #16] + 800b9e2: f002 fb37 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b9e6: 2310 movs r3, #16 + 800b9e8: eb0d 0003 add.w r0, sp, r3 + 800b9ec: f88d 3010 strb.w r3, [sp, #16] + 800b9f0: f88d 5014 strb.w r5, [sp, #20] + 800b9f4: f002 fb2e bl 800e054 <LoRaMacMibSetRequestConfirm> + 800b9f8: 2304 movs r3, #4 + 800b9fa: f88d 3010 strb.w r3, [sp, #16] + 800b9fe: a804 add r0, sp, #16 + 800ba00: 78a3 ldrb r3, [r4, #2] + 800ba02: f88d 3014 strb.w r3, [sp, #20] + 800ba06: f002 fb25 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800ba0a: 2339 movs r3, #57 ; 0x39 + 800ba0c: f88d 3010 strb.w r3, [sp, #16] + 800ba10: a804 add r0, sp, #16 + 800ba12: 6963 ldr r3, [r4, #20] + 800ba14: 9305 str r3, [sp, #20] + 800ba16: f002 fb1d bl 800e054 <LoRaMacMibSetRequestConfirm> + 800ba1a: a902 add r1, sp, #8 + 800ba1c: 7820 ldrb r0, [r4, #0] + 800ba1e: f88d 6008 strb.w r6, [sp, #8] + 800ba22: f003 ff51 bl 800f8c8 <RegionGetPhyParam> + 800ba26: 3800 subs r0, #0 + 800ba28: bf18 it ne + 800ba2a: 2001 movne r0, #1 + 800ba2c: 71e0 strb r0, [r4, #7] + 800ba2e: 2014 movs r0, #20 + 800ba30: f7ff ff5a bl 800b8e8 <LmHandlerSetSystemMaxRxError> + 800ba34: 79e0 ldrb r0, [r4, #7] + 800ba36: f003 f803 bl 800ea40 <LoRaMacTestSetDutyCycleOn> + 800ba3a: 4628 mov r0, r5 + 800ba3c: e782 b.n 800b944 <LmHandlerConfigure+0x3c> + 800ba3e: 2327 movs r3, #39 ; 0x27 + 800ba40: f88d 3010 strb.w r3, [sp, #16] + 800ba44: 682b ldr r3, [r5, #0] + 800ba46: 691b ldr r3, [r3, #16] + 800ba48: b143 cbz r3, 800ba5c <LmHandlerConfigure+0x154> + 800ba4a: a804 add r0, sp, #16 + 800ba4c: f002 f9f0 bl 800de30 <LoRaMacMibGetRequestConfirm> + 800ba50: 682b ldr r3, [r5, #0] + 800ba52: 9805 ldr r0, [sp, #20] + 800ba54: 691b ldr r3, [r3, #16] + 800ba56: f44f 61ee mov.w r1, #1904 ; 0x770 + 800ba5a: 4798 blx r3 + 800ba5c: 2326 movs r3, #38 ; 0x26 + 800ba5e: a804 add r0, sp, #16 + 800ba60: f88d 3010 strb.w r3, [sp, #16] + 800ba64: f002 faf6 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800ba68: b950 cbnz r0, 800ba80 <LmHandlerConfigure+0x178> + 800ba6a: 2301 movs r3, #1 + 800ba6c: a804 add r0, sp, #16 + 800ba6e: f88d 3010 strb.w r3, [sp, #16] + 800ba72: f002 f9dd bl 800de30 <LoRaMacMibGetRequestConfirm> + 800ba76: f89d 3014 ldrb.w r3, [sp, #20] + 800ba7a: 2b00 cmp r3, #0 + 800ba7c: f47f af6e bne.w 800b95c <LmHandlerConfigure+0x54> + 800ba80: 7833 ldrb r3, [r6, #0] + 800ba82: 2b00 cmp r3, #0 + 800ba84: f47f af6c bne.w 800b960 <LmHandlerConfigure+0x58> + 800ba88: 2205 movs r2, #5 + 800ba8a: a804 add r0, sp, #16 + 800ba8c: f88d 2010 strb.w r2, [sp, #16] + 800ba90: 9305 str r3, [sp, #20] + 800ba92: f002 fadf bl 800e054 <LoRaMacMibSetRequestConfirm> + 800ba96: e778 b.n 800b98a <LmHandlerConfigure+0x82> + 800ba98: 20001084 .word 0x20001084 + 800ba9c: 0801507c .word 0x0801507c + 800baa0: 2000109c .word 0x2000109c + 800baa4: 200010b4 .word 0x200010b4 + 800baa8: 20001064 .word 0x20001064 + 800baac: 2000106c .word 0x2000106c + 800bab0: 2000104c .word 0x2000104c + +0800bab4 <LmHandlerPackageRegister>: + 800bab4: b537 push {r0, r1, r2, r4, r5, lr} + 800bab6: 2300 movs r3, #0 + 800bab8: 460d mov r5, r1 + 800baba: 9301 str r3, [sp, #4] + 800babc: 4604 mov r4, r0 + 800babe: b9c0 cbnz r0, 800baf2 <LmHandlerPackageRegister+0x3e> + 800bac0: f000 fad0 bl 800c064 <LmhpCompliancePackageFactory> + 800bac4: 9001 str r0, [sp, #4] + 800bac6: 9b01 ldr r3, [sp, #4] + 800bac8: b1c3 cbz r3, 800bafc <LmHandlerPackageRegister+0x48> + 800baca: 4a0e ldr r2, [pc, #56] ; (800bb04 <LmHandlerPackageRegister+0x50>) + 800bacc: 490e ldr r1, [pc, #56] ; (800bb08 <LmHandlerPackageRegister+0x54>) + 800bace: f842 3024 str.w r3, [r2, r4, lsl #2] + 800bad2: 4a0e ldr r2, [pc, #56] ; (800bb0c <LmHandlerPackageRegister+0x58>) + 800bad4: 62da str r2, [r3, #44] ; 0x2c + 800bad6: 4a0e ldr r2, [pc, #56] ; (800bb10 <LmHandlerPackageRegister+0x5c>) + 800bad8: 631a str r2, [r3, #48] ; 0x30 + 800bada: 4a0e ldr r2, [pc, #56] ; (800bb14 <LmHandlerPackageRegister+0x60>) + 800badc: 635a str r2, [r3, #52] ; 0x34 + 800bade: 4a0e ldr r2, [pc, #56] ; (800bb18 <LmHandlerPackageRegister+0x64>) + 800bae0: 6812 ldr r2, [r2, #0] + 800bae2: 6992 ldr r2, [r2, #24] + 800bae4: 619a str r2, [r3, #24] + 800bae6: 4628 mov r0, r5 + 800bae8: 685b ldr r3, [r3, #4] + 800baea: 22f2 movs r2, #242 ; 0xf2 + 800baec: 4798 blx r3 + 800baee: 2000 movs r0, #0 + 800baf0: e006 b.n 800bb00 <LmHandlerPackageRegister+0x4c> + 800baf2: a901 add r1, sp, #4 + 800baf4: f000 fabc bl 800c070 <LmhpPackagesRegister> + 800baf8: 2800 cmp r0, #0 + 800bafa: d0e4 beq.n 800bac6 <LmHandlerPackageRegister+0x12> + 800bafc: f04f 30ff mov.w r0, #4294967295 + 800bb00: b003 add sp, #12 + 800bb02: bd30 pop {r4, r5, pc} + 800bb04: 20001070 .word 0x20001070 + 800bb08: 20000f58 .word 0x20000f58 + 800bb0c: 0800b565 .word 0x0800b565 + 800bb10: 0800b681 .word 0x0800b681 + 800bb14: 0800b37d .word 0x0800b37d + 800bb18: 2000106c .word 0x2000106c + +0800bb1c <LmHandlerInit>: + 800bb1c: 4b15 ldr r3, [pc, #84] ; (800bb74 <LmHandlerInit+0x58>) + 800bb1e: b507 push {r0, r1, r2, lr} + 800bb20: 6018 str r0, [r3, #0] + 800bb22: 4b15 ldr r3, [pc, #84] ; (800bb78 <LmHandlerInit+0x5c>) + 800bb24: 4a15 ldr r2, [pc, #84] ; (800bb7c <LmHandlerInit+0x60>) + 800bb26: 601a str r2, [r3, #0] + 800bb28: 4a15 ldr r2, [pc, #84] ; (800bb80 <LmHandlerInit+0x64>) + 800bb2a: 605a str r2, [r3, #4] + 800bb2c: 4a15 ldr r2, [pc, #84] ; (800bb84 <LmHandlerInit+0x68>) + 800bb2e: 609a str r2, [r3, #8] + 800bb30: 4a15 ldr r2, [pc, #84] ; (800bb88 <LmHandlerInit+0x6c>) + 800bb32: 60da str r2, [r3, #12] + 800bb34: 4b15 ldr r3, [pc, #84] ; (800bb8c <LmHandlerInit+0x70>) + 800bb36: 6802 ldr r2, [r0, #0] + 800bb38: 601a str r2, [r3, #0] + 800bb3a: 6842 ldr r2, [r0, #4] + 800bb3c: 605a str r2, [r3, #4] + 800bb3e: 6882 ldr r2, [r0, #8] + 800bb40: 609a str r2, [r3, #8] + 800bb42: 68c2 ldr r2, [r0, #12] + 800bb44: 60da str r2, [r3, #12] + 800bb46: 4a12 ldr r2, [pc, #72] ; (800bb90 <LmHandlerInit+0x74>) + 800bb48: 9101 str r1, [sp, #4] + 800bb4a: 611a str r2, [r3, #16] + 800bb4c: 4911 ldr r1, [pc, #68] ; (800bb94 <LmHandlerInit+0x78>) + 800bb4e: 6982 ldr r2, [r0, #24] + 800bb50: 615a str r2, [r3, #20] + 800bb52: 2000 movs r0, #0 + 800bb54: f7ff ffae bl 800bab4 <LmHandlerPackageRegister> + 800bb58: b948 cbnz r0, 800bb6e <LmHandlerInit+0x52> + 800bb5a: a801 add r0, sp, #4 + 800bb5c: f000 fa86 bl 800c06c <LmhpPackagesRegistrationInit> + 800bb60: 3800 subs r0, #0 + 800bb62: bf18 it ne + 800bb64: 2001 movne r0, #1 + 800bb66: 4240 negs r0, r0 + 800bb68: b003 add sp, #12 + 800bb6a: f85d fb04 ldr.w pc, [sp], #4 + 800bb6e: f04f 30ff mov.w r0, #4294967295 + 800bb72: e7f9 b.n 800bb68 <LmHandlerInit+0x4c> + 800bb74: 2000106c .word 0x2000106c + 800bb78: 200010b4 .word 0x200010b4 + 800bb7c: 0800b409 .word 0x0800b409 + 800bb80: 0800b7f9 .word 0x0800b7f9 + 800bb84: 0800bc15 .word 0x0800bc15 + 800bb88: 0800b3a5 .word 0x0800b3a5 + 800bb8c: 2000109c .word 0x2000109c + 800bb90: 0800f879 .word 0x0800f879 + 800bb94: 2000083c .word 0x2000083c + +0800bb98 <LmHandlerGetVersion>: + 800bb98: b151 cbz r1, 800bbb0 <LmHandlerGetVersion+0x18> + 800bb9a: b118 cbz r0, 800bba4 <LmHandlerGetVersion+0xc> + 800bb9c: 2801 cmp r0, #1 + 800bb9e: d004 beq.n 800bbaa <LmHandlerGetVersion+0x12> + 800bba0: 2000 movs r0, #0 + 800bba2: 4770 bx lr + 800bba4: 4b04 ldr r3, [pc, #16] ; (800bbb8 <LmHandlerGetVersion+0x20>) + 800bba6: 600b str r3, [r1, #0] + 800bba8: 4770 bx lr + 800bbaa: 4b04 ldr r3, [pc, #16] ; (800bbbc <LmHandlerGetVersion+0x24>) + 800bbac: 600b str r3, [r1, #0] + 800bbae: e7f7 b.n 800bba0 <LmHandlerGetVersion+0x8> + 800bbb0: f04f 30ff mov.w r0, #4294967295 + 800bbb4: 4770 bx lr + 800bbb6: bf00 nop + 800bbb8: 01000300 .word 0x01000300 + 800bbbc: 01010003 .word 0x01010003 + +0800bbc0 <LmHandlerStop>: + 800bbc0: b508 push {r3, lr} + 800bbc2: f002 ff59 bl 800ea78 <LoRaMacDeInitialization> + 800bbc6: 2800 cmp r0, #0 + 800bbc8: bf14 ite ne + 800bbca: f06f 0001 mvnne.w r0, #1 + 800bbce: 2000 moveq r0, #0 + 800bbd0: bd08 pop {r3, pc} + +0800bbd2 <LmHandlerHalt>: + 800bbd2: b508 push {r3, lr} + 800bbd4: f002 f8a4 bl 800dd20 <LoRaMacHalt> + 800bbd8: 2800 cmp r0, #0 + 800bbda: bf14 ite ne + 800bbdc: f06f 0001 mvnne.w r0, #1 + 800bbe0: 2000 moveq r0, #0 + 800bbe2: bd08 pop {r3, pc} + +0800bbe4 <LmHandlerGetTxPower>: + 800bbe4: b510 push {r4, lr} + 800bbe6: 4604 mov r4, r0 + 800bbe8: b08a sub sp, #40 ; 0x28 + 800bbea: b918 cbnz r0, 800bbf4 <LmHandlerGetTxPower+0x10> + 800bbec: f04f 30ff mov.w r0, #4294967295 + 800bbf0: b00a add sp, #40 ; 0x28 + 800bbf2: bd10 pop {r4, pc} + 800bbf4: 2320 movs r3, #32 + 800bbf6: 4668 mov r0, sp + 800bbf8: f88d 3000 strb.w r3, [sp] + 800bbfc: f002 f918 bl 800de30 <LoRaMacMibGetRequestConfirm> + 800bc00: 2800 cmp r0, #0 + 800bc02: d1f3 bne.n 800bbec <LmHandlerGetTxPower+0x8> + 800bc04: 4a02 ldr r2, [pc, #8] ; (800bc10 <LmHandlerGetTxPower+0x2c>) + 800bc06: f99d 3004 ldrsb.w r3, [sp, #4] + 800bc0a: 7023 strb r3, [r4, #0] + 800bc0c: 7153 strb r3, [r2, #5] + 800bc0e: e7ef b.n 800bbf0 <LmHandlerGetTxPower+0xc> + 800bc10: 20001084 .word 0x20001084 + +0800bc14 <MlmeConfirm>: + 800bc14: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800bc18: 4d2f ldr r5, [pc, #188] ; (800bcd8 <MlmeConfirm+0xc4>) + 800bc1a: 4f30 ldr r7, [pc, #192] ; (800bcdc <MlmeConfirm+0xc8>) + 800bc1c: 2300 movs r3, #0 + 800bc1e: 702b strb r3, [r5, #0] + 800bc20: 7843 ldrb r3, [r0, #1] + 800bc22: 706b strb r3, [r5, #1] + 800bc24: 683b ldr r3, [r7, #0] + 800bc26: 6a9b ldr r3, [r3, #40] ; 0x28 + 800bc28: b08a sub sp, #40 ; 0x28 + 800bc2a: 4604 mov r4, r0 + 800bc2c: b10b cbz r3, 800bc32 <MlmeConfirm+0x1e> + 800bc2e: 4628 mov r0, r5 + 800bc30: 4798 blx r3 + 800bc32: f8df 80ac ldr.w r8, [pc, #172] ; 800bce0 <MlmeConfirm+0xcc> + 800bc36: 2600 movs r6, #0 + 800bc38: f858 3b04 ldr.w r3, [r8], #4 + 800bc3c: b11b cbz r3, 800bc46 <MlmeConfirm+0x32> + 800bc3e: 6a5b ldr r3, [r3, #36] ; 0x24 + 800bc40: b10b cbz r3, 800bc46 <MlmeConfirm+0x32> + 800bc42: 4620 mov r0, r4 + 800bc44: 4798 blx r3 + 800bc46: 3601 adds r6, #1 + 800bc48: b2f3 uxtb r3, r6 + 800bc4a: 2b05 cmp r3, #5 + 800bc4c: b276 sxtb r6, r6 + 800bc4e: d1f3 bne.n 800bc38 <MlmeConfirm+0x24> + 800bc50: 7823 ldrb r3, [r4, #0] + 800bc52: 2b05 cmp r3, #5 + 800bc54: d02f beq.n 800bcb6 <MlmeConfirm+0xa2> + 800bc56: 2b0c cmp r3, #12 + 800bc58: d035 beq.n 800bcc6 <MlmeConfirm+0xb2> + 800bc5a: 2b01 cmp r3, #1 + 800bc5c: d125 bne.n 800bcaa <MlmeConfirm+0x96> + 800bc5e: 4c21 ldr r4, [pc, #132] ; (800bce4 <MlmeConfirm+0xd0>) + 800bc60: 2306 movs r3, #6 + 800bc62: 4668 mov r0, sp + 800bc64: f88d 3000 strb.w r3, [sp] + 800bc68: f002 f8e2 bl 800de30 <LoRaMacMibGetRequestConfirm> + 800bc6c: 9901 ldr r1, [sp, #4] + 800bc6e: 79e0 ldrb r0, [r4, #7] + 800bc70: f005 fcf0 bl 8011654 <SecureElementSetDevAddr> + 800bc74: b910 cbnz r0, 800bc7c <MlmeConfirm+0x68> + 800bc76: 4b1c ldr r3, [pc, #112] ; (800bce8 <MlmeConfirm+0xd4>) + 800bc78: 9a01 ldr r2, [sp, #4] + 800bc7a: 615a str r2, [r3, #20] + 800bc7c: 481b ldr r0, [pc, #108] ; (800bcec <MlmeConfirm+0xd8>) + 800bc7e: f7ff fe1b bl 800b8b8 <LmHandlerGetTxDatarate> + 800bc82: 481b ldr r0, [pc, #108] ; (800bcf0 <MlmeConfirm+0xdc>) + 800bc84: f7ff ffae bl 800bbe4 <LmHandlerGetTxPower> + 800bc88: 786b ldrb r3, [r5, #1] + 800bc8a: b98b cbnz r3, 800bcb0 <MlmeConfirm+0x9c> + 800bc8c: 71a3 strb r3, [r4, #6] + 800bc8e: 4b19 ldr r3, [pc, #100] ; (800bcf4 <MlmeConfirm+0xe0>) + 800bc90: 7858 ldrb r0, [r3, #1] + 800bc92: f7ff fc1d bl 800b4d0 <LmHandlerRequestClass> + 800bc96: 683b ldr r3, [r7, #0] + 800bc98: 6a5b ldr r3, [r3, #36] ; 0x24 + 800bc9a: b10b cbz r3, 800bca0 <MlmeConfirm+0x8c> + 800bc9c: 4811 ldr r0, [pc, #68] ; (800bce4 <MlmeConfirm+0xd0>) + 800bc9e: 4798 blx r3 + 800bca0: 786b ldrb r3, [r5, #1] + 800bca2: b913 cbnz r3, 800bcaa <MlmeConfirm+0x96> + 800bca4: 79e0 ldrb r0, [r4, #7] + 800bca6: f005 fd65 bl 8011774 <SecureElementPrintSessionKeys> + 800bcaa: b00a add sp, #40 ; 0x28 + 800bcac: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800bcb0: 23ff movs r3, #255 ; 0xff + 800bcb2: 71a3 strb r3, [r4, #6] + 800bcb4: e7ef b.n 800bc96 <MlmeConfirm+0x82> + 800bcb6: 4b10 ldr r3, [pc, #64] ; (800bcf8 <MlmeConfirm+0xe4>) + 800bcb8: 2201 movs r2, #1 + 800bcba: 745a strb r2, [r3, #17] + 800bcbc: 7a22 ldrb r2, [r4, #8] + 800bcbe: 749a strb r2, [r3, #18] + 800bcc0: 7a62 ldrb r2, [r4, #9] + 800bcc2: 74da strb r2, [r3, #19] + 800bcc4: e7f1 b.n 800bcaa <MlmeConfirm+0x96> + 800bcc6: 7863 ldrb r3, [r4, #1] + 800bcc8: 2b00 cmp r3, #0 + 800bcca: d0ee beq.n 800bcaa <MlmeConfirm+0x96> + 800bccc: b00a add sp, #40 ; 0x28 + 800bcce: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800bcd2: f7ff bb53 b.w 800b37c <LmHandlerDeviceTimeReq> + 800bcd6: bf00 nop + 800bcd8: 2000085c .word 0x2000085c + 800bcdc: 2000106c .word 0x2000106c + 800bce0: 20001070 .word 0x20001070 + 800bce4: 20000830 .word 0x20000830 + 800bce8: 2000104c .word 0x2000104c + 800bcec: 20000834 .word 0x20000834 + 800bcf0: 20000835 .word 0x20000835 + 800bcf4: 20001084 .word 0x20001084 + 800bcf8: 20000848 .word 0x20000848 + +0800bcfc <LmHandlerNvmDataStore>: + 800bcfc: b530 push {r4, r5, lr} + 800bcfe: b08b sub sp, #44 ; 0x2c + 800bd00: f7ff ff67 bl 800bbd2 <LmHandlerHalt> + 800bd04: 4604 mov r4, r0 + 800bd06: b9f0 cbnz r0, 800bd46 <LmHandlerNvmDataStore+0x4a> + 800bd08: f003 fdbe bl 800f888 <NvmDataMgmtStoreBegin> + 800bd0c: 1c83 adds r3, r0, #2 + 800bd0e: d01d beq.n 800bd4c <LmHandlerNvmDataStore+0x50> + 800bd10: b9f8 cbnz r0, 800bd52 <LmHandlerNvmDataStore+0x56> + 800bd12: 4d13 ldr r5, [pc, #76] ; (800bd60 <LmHandlerNvmDataStore+0x64>) + 800bd14: 682b ldr r3, [r5, #0] + 800bd16: 695b ldr r3, [r3, #20] + 800bd18: b1db cbz r3, 800bd52 <LmHandlerNvmDataStore+0x56> + 800bd1a: 2326 movs r3, #38 ; 0x26 + 800bd1c: 4668 mov r0, sp + 800bd1e: f88d 3000 strb.w r3, [sp] + 800bd22: f002 f885 bl 800de30 <LoRaMacMibGetRequestConfirm> + 800bd26: 682b ldr r3, [r5, #0] + 800bd28: 9801 ldr r0, [sp, #4] + 800bd2a: 695b ldr r3, [r3, #20] + 800bd2c: f44f 61ee mov.w r1, #1904 ; 0x770 + 800bd30: 4798 blx r3 + 800bd32: f003 fdbb bl 800f8ac <NvmDataMgmtStoreEnd> + 800bd36: b978 cbnz r0, 800bd58 <LmHandlerNvmDataStore+0x5c> + 800bd38: b92c cbnz r4, 800bd46 <LmHandlerNvmDataStore+0x4a> + 800bd3a: 4b09 ldr r3, [pc, #36] ; (800bd60 <LmHandlerNvmDataStore+0x64>) + 800bd3c: 681b ldr r3, [r3, #0] + 800bd3e: 69db ldr r3, [r3, #28] + 800bd40: b10b cbz r3, 800bd46 <LmHandlerNvmDataStore+0x4a> + 800bd42: 2001 movs r0, #1 + 800bd44: 4798 blx r3 + 800bd46: 4620 mov r0, r4 + 800bd48: b00b add sp, #44 ; 0x2c + 800bd4a: bd30 pop {r4, r5, pc} + 800bd4c: f06f 0407 mvn.w r4, #7 + 800bd50: e7ef b.n 800bd32 <LmHandlerNvmDataStore+0x36> + 800bd52: f04f 34ff mov.w r4, #4294967295 + 800bd56: e7ec b.n 800bd32 <LmHandlerNvmDataStore+0x36> + 800bd58: f04f 34ff mov.w r4, #4294967295 + 800bd5c: e7f3 b.n 800bd46 <LmHandlerNvmDataStore+0x4a> + 800bd5e: bf00 nop + 800bd60: 2000106c .word 0x2000106c + +0800bd64 <LmhpComplianceInit>: + 800bd64: b530 push {r4, r5, lr} + 800bd66: 4d06 ldr r5, [pc, #24] ; (800bd80 <LmhpComplianceInit+0x1c>) + 800bd68: 4c06 ldr r4, [pc, #24] ; (800bd84 <LmhpComplianceInit+0x20>) + 800bd6a: b130 cbz r0, 800bd7a <LmhpComplianceInit+0x16> + 800bd6c: b129 cbz r1, 800bd7a <LmhpComplianceInit+0x16> + 800bd6e: 6028 str r0, [r5, #0] + 800bd70: 60a1 str r1, [r4, #8] + 800bd72: 7162 strb r2, [r4, #5] + 800bd74: 2301 movs r3, #1 + 800bd76: 7023 strb r3, [r4, #0] + 800bd78: bd30 pop {r4, r5, pc} + 800bd7a: 2300 movs r3, #0 + 800bd7c: 602b str r3, [r5, #0] + 800bd7e: e7fa b.n 800bd76 <LmhpComplianceInit+0x12> + 800bd80: 200010f0 .word 0x200010f0 + 800bd84: 200010c4 .word 0x200010c4 + +0800bd88 <LmhpComplianceIsInitialized>: + 800bd88: 4b01 ldr r3, [pc, #4] ; (800bd90 <LmhpComplianceIsInitialized+0x8>) + 800bd8a: 7818 ldrb r0, [r3, #0] + 800bd8c: 4770 bx lr + 800bd8e: bf00 nop + 800bd90: 200010c4 .word 0x200010c4 + +0800bd94 <LmhpComplianceIsRunning>: + 800bd94: 4b02 ldr r3, [pc, #8] ; (800bda0 <LmhpComplianceIsRunning+0xc>) + 800bd96: 7818 ldrb r0, [r3, #0] + 800bd98: b100 cbz r0, 800bd9c <LmhpComplianceIsRunning+0x8> + 800bd9a: 7858 ldrb r0, [r3, #1] + 800bd9c: 4770 bx lr + 800bd9e: bf00 nop + 800bda0: 200010c4 .word 0x200010c4 + +0800bda4 <LmhpComplianceProcess>: + 800bda4: 4770 bx lr + ... + +0800bda8 <LmhpComplianceOnMcpsConfirm>: + 800bda8: 4b06 ldr r3, [pc, #24] ; (800bdc4 <LmhpComplianceOnMcpsConfirm+0x1c>) + 800bdaa: 781a ldrb r2, [r3, #0] + 800bdac: b14a cbz r2, 800bdc2 <LmhpComplianceOnMcpsConfirm+0x1a> + 800bdae: 785a ldrb r2, [r3, #1] + 800bdb0: b13a cbz r2, 800bdc2 <LmhpComplianceOnMcpsConfirm+0x1a> + 800bdb2: 7802 ldrb r2, [r0, #0] + 800bdb4: 2a01 cmp r2, #1 + 800bdb6: d104 bne.n 800bdc2 <LmhpComplianceOnMcpsConfirm+0x1a> + 800bdb8: 7902 ldrb r2, [r0, #4] + 800bdba: b112 cbz r2, 800bdc2 <LmhpComplianceOnMcpsConfirm+0x1a> + 800bdbc: 899a ldrh r2, [r3, #12] + 800bdbe: 3201 adds r2, #1 + 800bdc0: 819a strh r2, [r3, #12] + 800bdc2: 4770 bx lr + 800bdc4: 200010c4 .word 0x200010c4 + +0800bdc8 <LmhpComplianceOnMlmeConfirm>: + 800bdc8: 4b07 ldr r3, [pc, #28] ; (800bde8 <LmhpComplianceOnMlmeConfirm+0x20>) + 800bdca: 781a ldrb r2, [r3, #0] + 800bdcc: b152 cbz r2, 800bde4 <LmhpComplianceOnMlmeConfirm+0x1c> + 800bdce: 785a ldrb r2, [r3, #1] + 800bdd0: b142 cbz r2, 800bde4 <LmhpComplianceOnMlmeConfirm+0x1c> + 800bdd2: 7802 ldrb r2, [r0, #0] + 800bdd4: 2a05 cmp r2, #5 + 800bdd6: d105 bne.n 800bde4 <LmhpComplianceOnMlmeConfirm+0x1c> + 800bdd8: 7a01 ldrb r1, [r0, #8] + 800bdda: 7a42 ldrb r2, [r0, #9] + 800bddc: 73d9 strb r1, [r3, #15] + 800bdde: 2001 movs r0, #1 + 800bde0: 7398 strb r0, [r3, #14] + 800bde2: 741a strb r2, [r3, #16] + 800bde4: 4770 bx lr + 800bde6: bf00 nop + 800bde8: 200010c4 .word 0x200010c4 + +0800bdec <LmhpComplianceTxProcess.isra.0>: + 800bdec: b513 push {r0, r1, r4, lr} + 800bdee: 4c1a ldr r4, [pc, #104] ; (800be58 <LmhpComplianceTxProcess.isra.0+0x6c>) + 800bdf0: 7823 ldrb r3, [r4, #0] + 800bdf2: b33b cbz r3, 800be44 <LmhpComplianceTxProcess.isra.0+0x58> + 800bdf4: 7863 ldrb r3, [r4, #1] + 800bdf6: b32b cbz r3, 800be44 <LmhpComplianceTxProcess.isra.0+0x58> + 800bdf8: 7ba2 ldrb r2, [r4, #14] + 800bdfa: 68a3 ldr r3, [r4, #8] + 800bdfc: b162 cbz r2, 800be18 <LmhpComplianceTxProcess.isra.0+0x2c> + 800bdfe: 2200 movs r2, #0 + 800be00: 73a2 strb r2, [r4, #14] + 800be02: 2203 movs r2, #3 + 800be04: 71a2 strb r2, [r4, #6] + 800be06: 2205 movs r2, #5 + 800be08: 701a strb r2, [r3, #0] + 800be0a: 7be2 ldrb r2, [r4, #15] + 800be0c: 705a strb r2, [r3, #1] + 800be0e: 7c22 ldrb r2, [r4, #16] + 800be10: 709a strb r2, [r3, #2] + 800be12: 2201 movs r2, #1 + 800be14: 70a2 strb r2, [r4, #2] + 800be16: e004 b.n 800be22 <LmhpComplianceTxProcess.isra.0+0x36> + 800be18: 78a2 ldrb r2, [r4, #2] + 800be1a: 2a01 cmp r2, #1 + 800be1c: d014 beq.n 800be48 <LmhpComplianceTxProcess.isra.0+0x5c> + 800be1e: 2a04 cmp r2, #4 + 800be20: d0f7 beq.n 800be12 <LmhpComplianceTxProcess.isra.0+0x26> + 800be22: 22e0 movs r2, #224 ; 0xe0 + 800be24: f88d 2000 strb.w r2, [sp] + 800be28: 480c ldr r0, [pc, #48] ; (800be5c <LmhpComplianceTxProcess.isra.0+0x70>) + 800be2a: 79a2 ldrb r2, [r4, #6] + 800be2c: 9301 str r3, [sp, #4] + 800be2e: f88d 2001 strb.w r2, [sp, #1] + 800be32: f008 f849 bl 8013ec8 <UTIL_TIMER_Start> + 800be36: 4b0a ldr r3, [pc, #40] ; (800be60 <LmhpComplianceTxProcess.isra.0+0x74>) + 800be38: 6b1b ldr r3, [r3, #48] ; 0x30 + 800be3a: b11b cbz r3, 800be44 <LmhpComplianceTxProcess.isra.0+0x58> + 800be3c: 78e1 ldrb r1, [r4, #3] + 800be3e: 2201 movs r2, #1 + 800be40: 4668 mov r0, sp + 800be42: 4798 blx r3 + 800be44: b002 add sp, #8 + 800be46: bd10 pop {r4, pc} + 800be48: 2202 movs r2, #2 + 800be4a: 71a2 strb r2, [r4, #6] + 800be4c: 89a2 ldrh r2, [r4, #12] + 800be4e: 705a strb r2, [r3, #1] + 800be50: 0a11 lsrs r1, r2, #8 + 800be52: 7019 strb r1, [r3, #0] + 800be54: e7e5 b.n 800be22 <LmhpComplianceTxProcess.isra.0+0x36> + 800be56: bf00 nop + 800be58: 200010c4 .word 0x200010c4 + 800be5c: 200010d8 .word 0x200010d8 + 800be60: 20000878 .word 0x20000878 + +0800be64 <OnComplianceTxNextPacketTimerEvent>: + 800be64: f7ff bfc2 b.w 800bdec <LmhpComplianceTxProcess.isra.0> + +0800be68 <LmhpComplianceOnMcpsIndication>: + 800be68: b530 push {r4, r5, lr} + 800be6a: 4c79 ldr r4, [pc, #484] ; (800c050 <LmhpComplianceOnMcpsIndication+0x1e8>) + 800be6c: 7823 ldrb r3, [r4, #0] + 800be6e: b08d sub sp, #52 ; 0x34 + 800be70: 2b00 cmp r3, #0 + 800be72: d043 beq.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800be74: 7b43 ldrb r3, [r0, #13] + 800be76: 2b00 cmp r3, #0 + 800be78: d040 beq.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800be7a: 7865 ldrb r5, [r4, #1] + 800be7c: b125 cbz r5, 800be88 <LmhpComplianceOnMcpsIndication+0x20> + 800be7e: 7b83 ldrb r3, [r0, #14] + 800be80: b913 cbnz r3, 800be88 <LmhpComplianceOnMcpsIndication+0x20> + 800be82: 89a3 ldrh r3, [r4, #12] + 800be84: 3301 adds r3, #1 + 800be86: 81a3 strh r3, [r4, #12] + 800be88: 78c1 ldrb r1, [r0, #3] + 800be8a: 29e0 cmp r1, #224 ; 0xe0 + 800be8c: d136 bne.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800be8e: 2d00 cmp r5, #0 + 800be90: d136 bne.n 800bf00 <LmhpComplianceOnMcpsIndication+0x98> + 800be92: 7b02 ldrb r2, [r0, #12] + 800be94: 2a04 cmp r2, #4 + 800be96: d131 bne.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800be98: 6883 ldr r3, [r0, #8] + 800be9a: 7818 ldrb r0, [r3, #0] + 800be9c: 2801 cmp r0, #1 + 800be9e: d12d bne.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bea0: 7858 ldrb r0, [r3, #1] + 800bea2: 2801 cmp r0, #1 + 800bea4: d12a bne.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bea6: 7898 ldrb r0, [r3, #2] + 800bea8: 2801 cmp r0, #1 + 800beaa: d127 bne.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800beac: 78db ldrb r3, [r3, #3] + 800beae: 2b01 cmp r3, #1 + 800beb0: d124 bne.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800beb2: 2002 movs r0, #2 + 800beb4: 8063 strh r3, [r4, #2] + 800beb6: 71a0 strb r0, [r4, #6] + 800beb8: 60e5 str r5, [r4, #12] + 800beba: a802 add r0, sp, #8 + 800bebc: 7063 strb r3, [r4, #1] + 800bebe: f88d 300c strb.w r3, [sp, #12] + 800bec2: 7121 strb r1, [r4, #4] + 800bec4: f88d 2008 strb.w r2, [sp, #8] + 800bec8: 7425 strb r5, [r4, #16] + 800beca: f002 f8c3 bl 800e054 <LoRaMacMibSetRequestConfirm> + 800bece: 4628 mov r0, r5 + 800bed0: f002 fdb6 bl 800ea40 <LoRaMacTestSetDutyCycleOn> + 800bed4: 4b5f ldr r3, [pc, #380] ; (800c054 <LmhpComplianceOnMcpsIndication+0x1ec>) + 800bed6: 681b ldr r3, [r3, #0] + 800bed8: 685b ldr r3, [r3, #4] + 800beda: b103 cbz r3, 800bede <LmhpComplianceOnMcpsIndication+0x76> + 800bedc: 4798 blx r3 + 800bede: 2200 movs r2, #0 + 800bee0: 4b5d ldr r3, [pc, #372] ; (800c058 <LmhpComplianceOnMcpsIndication+0x1f0>) + 800bee2: 9200 str r2, [sp, #0] + 800bee4: f04f 31ff mov.w r1, #4294967295 + 800bee8: 485c ldr r0, [pc, #368] ; (800c05c <LmhpComplianceOnMcpsIndication+0x1f4>) + 800beea: f007 ff41 bl 8013d70 <UTIL_TIMER_Create> + 800beee: f241 3188 movw r1, #5000 ; 0x1388 + 800bef2: 485a ldr r0, [pc, #360] ; (800c05c <LmhpComplianceOnMcpsIndication+0x1f4>) + 800bef4: f008 f822 bl 8013f3c <UTIL_TIMER_SetPeriod> + 800bef8: f7ff ff78 bl 800bdec <LmhpComplianceTxProcess.isra.0> + 800befc: b00d add sp, #52 ; 0x34 + 800befe: bd30 pop {r4, r5, pc} + 800bf00: 6883 ldr r3, [r0, #8] + 800bf02: 781a ldrb r2, [r3, #0] + 800bf04: 70a2 strb r2, [r4, #2] + 800bf06: 2a0a cmp r2, #10 + 800bf08: d8f8 bhi.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bf0a: e8df f002 tbb [pc, r2] + 800bf0e: 2106 .short 0x2106 + 800bf10: 3d2a2824 .word 0x3d2a2824 + 800bf14: 8f8d6544 .word 0x8f8d6544 + 800bf18: 99 .byte 0x99 + 800bf19: 00 .byte 0x00 + 800bf1a: 4850 ldr r0, [pc, #320] ; (800c05c <LmhpComplianceOnMcpsIndication+0x1f4>) + 800bf1c: f007 ff86 bl 8013e2c <UTIL_TIMER_Stop> + 800bf20: 2300 movs r3, #0 + 800bf22: 7063 strb r3, [r4, #1] + 800bf24: 81a3 strh r3, [r4, #12] + 800bf26: 4c4b ldr r4, [pc, #300] ; (800c054 <LmhpComplianceOnMcpsIndication+0x1ec>) + 800bf28: 2304 movs r3, #4 + 800bf2a: f88d 3008 strb.w r3, [sp, #8] + 800bf2e: 6823 ldr r3, [r4, #0] + 800bf30: a802 add r0, sp, #8 + 800bf32: 781b ldrb r3, [r3, #0] + 800bf34: f88d 300c strb.w r3, [sp, #12] + 800bf38: f002 f88c bl 800e054 <LoRaMacMibSetRequestConfirm> + 800bf3c: 6823 ldr r3, [r4, #0] + 800bf3e: 7858 ldrb r0, [r3, #1] + 800bf40: f002 fd7e bl 800ea40 <LoRaMacTestSetDutyCycleOn> + 800bf44: 6823 ldr r3, [r4, #0] + 800bf46: 689b ldr r3, [r3, #8] + 800bf48: 2b00 cmp r3, #0 + 800bf4a: d0d7 beq.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bf4c: 4798 blx r3 + 800bf4e: e7d5 b.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bf50: 2302 movs r3, #2 + 800bf52: 71a3 strb r3, [r4, #6] + 800bf54: e7d2 b.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bf56: f240 1301 movw r3, #257 ; 0x101 + 800bf5a: 8063 strh r3, [r4, #2] + 800bf5c: e7ce b.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bf5e: 2301 movs r3, #1 + 800bf60: e7fb b.n 800bf5a <LmhpComplianceOnMcpsIndication+0xf2> + 800bf62: 68a5 ldr r5, [r4, #8] + 800bf64: 7b03 ldrb r3, [r0, #12] + 800bf66: 71a3 strb r3, [r4, #6] + 800bf68: 2204 movs r2, #4 + 800bf6a: 702a strb r2, [r5, #0] + 800bf6c: 7962 ldrb r2, [r4, #5] + 800bf6e: 429a cmp r2, r3 + 800bf70: bf28 it cs + 800bf72: 461a movcs r2, r3 + 800bf74: 2300 movs r3, #0 + 800bf76: 3301 adds r3, #1 + 800bf78: b2d9 uxtb r1, r3 + 800bf7a: 428a cmp r2, r1 + 800bf7c: d9be bls.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bf7e: 6881 ldr r1, [r0, #8] + 800bf80: 5cc9 ldrb r1, [r1, r3] + 800bf82: 3101 adds r1, #1 + 800bf84: 54e9 strb r1, [r5, r3] + 800bf86: e7f6 b.n 800bf76 <LmhpComplianceOnMcpsIndication+0x10e> + 800bf88: 2305 movs r3, #5 + 800bf8a: f88d 3008 strb.w r3, [sp, #8] + 800bf8e: a802 add r0, sp, #8 + 800bf90: f002 fad4 bl 800e53c <LoRaMacMlmeRequest> + 800bf94: e7b2 b.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bf96: 4831 ldr r0, [pc, #196] ; (800c05c <LmhpComplianceOnMcpsIndication+0x1f4>) + 800bf98: f007 ff48 bl 8013e2c <UTIL_TIMER_Stop> + 800bf9c: 2300 movs r3, #0 + 800bf9e: 7063 strb r3, [r4, #1] + 800bfa0: 81a3 strh r3, [r4, #12] + 800bfa2: 4c2c ldr r4, [pc, #176] ; (800c054 <LmhpComplianceOnMcpsIndication+0x1ec>) + 800bfa4: 2304 movs r3, #4 + 800bfa6: f88d 3008 strb.w r3, [sp, #8] + 800bfaa: 6823 ldr r3, [r4, #0] + 800bfac: a802 add r0, sp, #8 + 800bfae: 781b ldrb r3, [r3, #0] + 800bfb0: f88d 300c strb.w r3, [sp, #12] + 800bfb4: f002 f84e bl 800e054 <LoRaMacMibSetRequestConfirm> + 800bfb8: 6823 ldr r3, [r4, #0] + 800bfba: 7858 ldrb r0, [r3, #1] + 800bfbc: f002 fd40 bl 800ea40 <LoRaMacTestSetDutyCycleOn> + 800bfc0: 6823 ldr r3, [r4, #0] + 800bfc2: 689b ldr r3, [r3, #8] + 800bfc4: b103 cbz r3, 800bfc8 <LmhpComplianceOnMcpsIndication+0x160> + 800bfc6: 4798 blx r3 + 800bfc8: 4b25 ldr r3, [pc, #148] ; (800c060 <LmhpComplianceOnMcpsIndication+0x1f8>) + 800bfca: 6adb ldr r3, [r3, #44] ; 0x2c + 800bfcc: 2b00 cmp r3, #0 + 800bfce: d095 beq.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bfd0: 2101 movs r1, #1 + 800bfd2: 2002 movs r0, #2 + 800bfd4: 4798 blx r3 + 800bfd6: e791 b.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bfd8: 7b02 ldrb r2, [r0, #12] + 800bfda: 2a03 cmp r2, #3 + 800bfdc: d10d bne.n 800bffa <LmhpComplianceOnMcpsIndication+0x192> + 800bfde: 2206 movs r2, #6 + 800bfe0: f88d 2008 strb.w r2, [sp, #8] + 800bfe4: f8b3 3001 ldrh.w r3, [r3, #1] + 800bfe8: ba5b rev16 r3, r3 + 800bfea: f8ad 300c strh.w r3, [sp, #12] + 800bfee: a802 add r0, sp, #8 + 800bff0: f002 faa4 bl 800e53c <LoRaMacMlmeRequest> + 800bff4: 2301 movs r3, #1 + 800bff6: 70a3 strb r3, [r4, #2] + 800bff8: e780 b.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800bffa: 2a07 cmp r2, #7 + 800bffc: d1f7 bne.n 800bfee <LmhpComplianceOnMcpsIndication+0x186> + 800bffe: f88d 2008 strb.w r2, [sp, #8] + 800c002: f8b3 2001 ldrh.w r2, [r3, #1] + 800c006: ba52 rev16 r2, r2 + 800c008: f8ad 200c strh.w r2, [sp, #12] + 800c00c: 791a ldrb r2, [r3, #4] + 800c00e: 78d9 ldrb r1, [r3, #3] + 800c010: 0212 lsls r2, r2, #8 + 800c012: ea42 4201 orr.w r2, r2, r1, lsl #16 + 800c016: 7959 ldrb r1, [r3, #5] + 800c018: 430a orrs r2, r1 + 800c01a: 2164 movs r1, #100 ; 0x64 + 800c01c: 434a muls r2, r1 + 800c01e: 9204 str r2, [sp, #16] + 800c020: 799b ldrb r3, [r3, #6] + 800c022: f88d 3014 strb.w r3, [sp, #20] + 800c026: e7e2 b.n 800bfee <LmhpComplianceOnMcpsIndication+0x186> + 800c028: 230a movs r3, #10 + 800c02a: e7ae b.n 800bf8a <LmhpComplianceOnMcpsIndication+0x122> + 800c02c: 2200 movs r2, #0 + 800c02e: f88d 2008 strb.w r2, [sp, #8] + 800c032: 785b ldrb r3, [r3, #1] + 800c034: f88d 300c strb.w r3, [sp, #12] + 800c038: a802 add r0, sp, #8 + 800c03a: f002 f80b bl 800e054 <LoRaMacMibSetRequestConfirm> + 800c03e: e75d b.n 800befc <LmhpComplianceOnMcpsIndication+0x94> + 800c040: 220d movs r2, #13 + 800c042: f88d 2008 strb.w r2, [sp, #8] + 800c046: 785b ldrb r3, [r3, #1] + 800c048: f88d 300c strb.w r3, [sp, #12] + 800c04c: e79f b.n 800bf8e <LmhpComplianceOnMcpsIndication+0x126> + 800c04e: bf00 nop + 800c050: 200010c4 .word 0x200010c4 + 800c054: 200010f0 .word 0x200010f0 + 800c058: 0800be65 .word 0x0800be65 + 800c05c: 200010d8 .word 0x200010d8 + 800c060: 20000878 .word 0x20000878 + +0800c064 <LmhpCompliancePackageFactory>: + 800c064: 4800 ldr r0, [pc, #0] ; (800c068 <LmhpCompliancePackageFactory+0x4>) + 800c066: 4770 bx lr + 800c068: 20000878 .word 0x20000878 + +0800c06c <LmhpPackagesRegistrationInit>: + 800c06c: 2000 movs r0, #0 + 800c06e: 4770 bx lr + +0800c070 <LmhpPackagesRegister>: + 800c070: f04f 30ff mov.w r0, #4294967295 + 800c074: 4770 bx lr + ... + +0800c078 <UpdateRxSlotIdleState>: + 800c078: 4b04 ldr r3, [pc, #16] ; (800c08c <UpdateRxSlotIdleState+0x14>) + 800c07a: 4a05 ldr r2, [pc, #20] ; (800c090 <UpdateRxSlotIdleState+0x18>) + 800c07c: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800c080: 2b02 cmp r3, #2 + 800c082: bf18 it ne + 800c084: 2306 movne r3, #6 + 800c086: f882 3480 strb.w r3, [r2, #1152] ; 0x480 + 800c08a: 4770 bx lr + 800c08c: 20001864 .word 0x20001864 + 800c090: 20001fd8 .word 0x20001fd8 + +0800c094 <OnMacProcessNotify>: + 800c094: 4b03 ldr r3, [pc, #12] ; (800c0a4 <OnMacProcessNotify+0x10>) + 800c096: f8d3 3348 ldr.w r3, [r3, #840] ; 0x348 + 800c09a: b113 cbz r3, 800c0a2 <OnMacProcessNotify+0xe> + 800c09c: 695b ldr r3, [r3, #20] + 800c09e: b103 cbz r3, 800c0a2 <OnMacProcessNotify+0xe> + 800c0a0: 4718 bx r3 + 800c0a2: 4770 bx lr + 800c0a4: 20001fd8 .word 0x20001fd8 + +0800c0a8 <OnRadioRxError>: + 800c0a8: 4a03 ldr r2, [pc, #12] ; (800c0b8 <OnRadioRxError+0x10>) + 800c0aa: 7813 ldrb r3, [r2, #0] + 800c0ac: f043 0302 orr.w r3, r3, #2 + 800c0b0: 7013 strb r3, [r2, #0] + 800c0b2: f7ff bfef b.w 800c094 <OnMacProcessNotify> + 800c0b6: bf00 nop + 800c0b8: 20001fd4 .word 0x20001fd4 + +0800c0bc <GetMaxAppPayloadWithoutFOptsLength>: + 800c0bc: b51f push {r0, r1, r2, r3, r4, lr} + 800c0be: 4b0a ldr r3, [pc, #40] ; (800c0e8 <GetMaxAppPayloadWithoutFOptsLength+0x2c>) + 800c0c0: f88d 0009 strb.w r0, [sp, #9] + 800c0c4: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800c0c8: f88d 200a strb.w r2, [sp, #10] + 800c0cc: f893 208c ldrb.w r2, [r3, #140] ; 0x8c + 800c0d0: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800c0d4: 320d adds r2, #13 + 800c0d6: a902 add r1, sp, #8 + 800c0d8: f88d 2008 strb.w r2, [sp, #8] + 800c0dc: f003 fbf4 bl 800f8c8 <RegionGetPhyParam> + 800c0e0: b2c0 uxtb r0, r0 + 800c0e2: b005 add sp, #20 + 800c0e4: f85d fb04 ldr.w pc, [sp], #4 + 800c0e8: 20001864 .word 0x20001864 + +0800c0ec <OnAckTimeoutTimerEvent>: + 800c0ec: b510 push {r4, lr} + 800c0ee: 4c0d ldr r4, [pc, #52] ; (800c124 <OnAckTimeoutTimerEvent+0x38>) + 800c0f0: f504 707d add.w r0, r4, #1012 ; 0x3f4 + 800c0f4: f007 fe9a bl 8013e2c <UTIL_TIMER_Stop> + 800c0f8: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800c0fc: b113 cbz r3, 800c104 <OnAckTimeoutTimerEvent+0x18> + 800c0fe: 2301 movs r3, #1 + 800c100: f884 340f strb.w r3, [r4, #1039] ; 0x40f + 800c104: 4b08 ldr r3, [pc, #32] ; (800c128 <OnAckTimeoutTimerEvent+0x3c>) + 800c106: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800c10a: 2b02 cmp r3, #2 + 800c10c: bf02 ittt eq + 800c10e: f894 3481 ldrbeq.w r3, [r4, #1153] ; 0x481 + 800c112: f043 0310 orreq.w r3, r3, #16 + 800c116: f884 3481 strbeq.w r3, [r4, #1153] ; 0x481 + 800c11a: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c11e: f7ff bfb9 b.w 800c094 <OnMacProcessNotify> + 800c122: bf00 nop + 800c124: 20001fd8 .word 0x20001fd8 + 800c128: 20001864 .word 0x20001864 + +0800c12c <PrepareRxDoneAbort>: + 800c12c: b510 push {r4, lr} + 800c12e: 4c0c ldr r4, [pc, #48] ; (800c160 <PrepareRxDoneAbort+0x34>) + 800c130: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800c134: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800c138: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800c13c: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800c140: b113 cbz r3, 800c148 <PrepareRxDoneAbort+0x1c> + 800c142: 2000 movs r0, #0 + 800c144: f7ff ffd2 bl 800c0ec <OnAckTimeoutTimerEvent> + 800c148: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800c14c: f023 0312 bic.w r3, r3, #18 + 800c150: f043 0312 orr.w r3, r3, #18 + 800c154: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800c158: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c15c: f7ff bf8c b.w 800c078 <UpdateRxSlotIdleState> + 800c160: 20001fd8 .word 0x20001fd8 + +0800c164 <HandleRadioRxErrorTimeout>: + 800c164: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800c168: 4d2c ldr r5, [pc, #176] ; (800c21c <HandleRadioRxErrorTimeout+0xb8>) + 800c16a: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c16e: 2b02 cmp r3, #2 + 800c170: 4607 mov r7, r0 + 800c172: 460e mov r6, r1 + 800c174: d002 beq.n 800c17c <HandleRadioRxErrorTimeout+0x18> + 800c176: 4b2a ldr r3, [pc, #168] ; (800c220 <HandleRadioRxErrorTimeout+0xbc>) + 800c178: 6adb ldr r3, [r3, #44] ; 0x2c + 800c17a: 4798 blx r3 + 800c17c: f002 fd1b bl 800ebb6 <LoRaMacClassBIsBeaconExpected> + 800c180: 4604 mov r4, r0 + 800c182: b128 cbz r0, 800c190 <HandleRadioRxErrorTimeout+0x2c> + 800c184: 2002 movs r0, #2 + 800c186: f002 fd0c bl 800eba2 <LoRaMacClassBSetBeaconState> + 800c18a: 2000 movs r0, #0 + 800c18c: f002 fd0e bl 800ebac <LoRaMacClassBBeaconTimerEvent> + 800c190: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c194: 2b01 cmp r3, #1 + 800c196: d117 bne.n 800c1c8 <HandleRadioRxErrorTimeout+0x64> + 800c198: f002 fd0f bl 800ebba <LoRaMacClassBIsPingExpected> + 800c19c: 4680 mov r8, r0 + 800c19e: b130 cbz r0, 800c1ae <HandleRadioRxErrorTimeout+0x4a> + 800c1a0: 2000 movs r0, #0 + 800c1a2: f002 fcff bl 800eba4 <LoRaMacClassBSetPingSlotState> + 800c1a6: 2000 movs r0, #0 + 800c1a8: f002 fd01 bl 800ebae <LoRaMacClassBPingSlotTimerEvent> + 800c1ac: 4644 mov r4, r8 + 800c1ae: f002 fd06 bl 800ebbe <LoRaMacClassBIsMulticastExpected> + 800c1b2: b148 cbz r0, 800c1c8 <HandleRadioRxErrorTimeout+0x64> + 800c1b4: 2000 movs r0, #0 + 800c1b6: f002 fcf6 bl 800eba6 <LoRaMacClassBSetMulticastSlotState> + 800c1ba: 2000 movs r0, #0 + 800c1bc: f002 fcf8 bl 800ebb0 <LoRaMacClassBMulticastSlotTimerEvent> + 800c1c0: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800c1c4: f7ff bf58 b.w 800c078 <UpdateRxSlotIdleState> + 800c1c8: 2c00 cmp r4, #0 + 800c1ca: d1f9 bne.n 800c1c0 <HandleRadioRxErrorTimeout+0x5c> + 800c1cc: 4c15 ldr r4, [pc, #84] ; (800c224 <HandleRadioRxErrorTimeout+0xc0>) + 800c1ce: f894 2480 ldrb.w r2, [r4, #1152] ; 0x480 + 800c1d2: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800c1d6: b9b2 cbnz r2, 800c206 <HandleRadioRxErrorTimeout+0xa2> + 800c1d8: b10b cbz r3, 800c1de <HandleRadioRxErrorTimeout+0x7a> + 800c1da: f884 7435 strb.w r7, [r4, #1077] ; 0x435 + 800c1de: 4638 mov r0, r7 + 800c1e0: f002 fe90 bl 800ef04 <LoRaMacConfirmQueueSetStatusCmn> + 800c1e4: 6ae8 ldr r0, [r5, #44] ; 0x2c + 800c1e6: f007 fde7 bl 8013db8 <UTIL_TIMER_GetElapsedTime> + 800c1ea: f8d4 33b4 ldr.w r3, [r4, #948] ; 0x3b4 + 800c1ee: 4298 cmp r0, r3 + 800c1f0: d3e6 bcc.n 800c1c0 <HandleRadioRxErrorTimeout+0x5c> + 800c1f2: 480d ldr r0, [pc, #52] ; (800c228 <HandleRadioRxErrorTimeout+0xc4>) + 800c1f4: f007 fe1a bl 8013e2c <UTIL_TIMER_Stop> + 800c1f8: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800c1fc: f043 0310 orr.w r3, r3, #16 + 800c200: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800c204: e7dc b.n 800c1c0 <HandleRadioRxErrorTimeout+0x5c> + 800c206: b10b cbz r3, 800c20c <HandleRadioRxErrorTimeout+0xa8> + 800c208: f884 6435 strb.w r6, [r4, #1077] ; 0x435 + 800c20c: 4630 mov r0, r6 + 800c20e: f002 fe79 bl 800ef04 <LoRaMacConfirmQueueSetStatusCmn> + 800c212: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c216: 2b02 cmp r3, #2 + 800c218: d1ee bne.n 800c1f8 <HandleRadioRxErrorTimeout+0x94> + 800c21a: e7d1 b.n 800c1c0 <HandleRadioRxErrorTimeout+0x5c> + 800c21c: 20001864 .word 0x20001864 + 800c220: 08015784 .word 0x08015784 + 800c224: 20001fd8 .word 0x20001fd8 + 800c228: 20002370 .word 0x20002370 + +0800c22c <OnRadioRxTimeout>: + 800c22c: 4a07 ldr r2, [pc, #28] ; (800c24c <OnRadioRxTimeout+0x20>) + 800c22e: b510 push {r4, lr} + 800c230: 7813 ldrb r3, [r2, #0] + 800c232: f043 0301 orr.w r3, r3, #1 + 800c236: 7013 strb r3, [r2, #0] + 800c238: f7ff ff2c bl 800c094 <OnMacProcessNotify> + 800c23c: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c240: 4b03 ldr r3, [pc, #12] ; (800c250 <OnRadioRxTimeout+0x24>) + 800c242: 2201 movs r2, #1 + 800c244: 2100 movs r1, #0 + 800c246: 2002 movs r0, #2 + 800c248: f007 bac2 b.w 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800c24c: 20001fd4 .word 0x20001fd4 + 800c250: 080150c5 .word 0x080150c5 + +0800c254 <OnRadioTxTimeout>: + 800c254: 4a07 ldr r2, [pc, #28] ; (800c274 <OnRadioTxTimeout+0x20>) + 800c256: b510 push {r4, lr} + 800c258: 7813 ldrb r3, [r2, #0] + 800c25a: f043 0304 orr.w r3, r3, #4 + 800c25e: 7013 strb r3, [r2, #0] + 800c260: f7ff ff18 bl 800c094 <OnMacProcessNotify> + 800c264: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c268: 4b03 ldr r3, [pc, #12] ; (800c278 <OnRadioTxTimeout+0x24>) + 800c26a: 2201 movs r2, #1 + 800c26c: 2100 movs r1, #0 + 800c26e: 2002 movs r0, #2 + 800c270: f007 baae b.w 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800c274: 20001fd4 .word 0x20001fd4 + 800c278: 080150d5 .word 0x080150d5 + +0800c27c <OnRadioRxDone>: + 800c27c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800c280: 460f mov r7, r1 + 800c282: 4616 mov r6, r2 + 800c284: 461d mov r5, r3 + 800c286: 4680 mov r8, r0 + 800c288: f007 fd8c bl 8013da4 <UTIL_TIMER_GetCurrentTime> + 800c28c: 4a0a ldr r2, [pc, #40] ; (800c2b8 <OnRadioRxDone+0x3c>) + 800c28e: 4c0b ldr r4, [pc, #44] ; (800c2bc <OnRadioRxDone+0x40>) + 800c290: 7813 ldrb r3, [r2, #0] + 800c292: 8127 strh r7, [r4, #8] + 800c294: f043 0308 orr.w r3, r3, #8 + 800c298: e9c4 0800 strd r0, r8, [r4] + 800c29c: 7013 strb r3, [r2, #0] + 800c29e: 8166 strh r6, [r4, #10] + 800c2a0: 7325 strb r5, [r4, #12] + 800c2a2: f7ff fef7 bl 800c094 <OnMacProcessNotify> + 800c2a6: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800c2aa: 4b05 ldr r3, [pc, #20] ; (800c2c0 <OnRadioRxDone+0x44>) + 800c2ac: 2201 movs r2, #1 + 800c2ae: 2100 movs r1, #0 + 800c2b0: 2002 movs r0, #2 + 800c2b2: f007 ba8d b.w 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800c2b6: bf00 nop + 800c2b8: 20001fd4 .word 0x20001fd4 + 800c2bc: 200024e0 .word 0x200024e0 + 800c2c0: 080150e5 .word 0x080150e5 + +0800c2c4 <OnRadioTxDone>: + 800c2c4: b513 push {r0, r1, r4, lr} + 800c2c6: f007 fd6d bl 8013da4 <UTIL_TIMER_GetCurrentTime> + 800c2ca: 4b0d ldr r3, [pc, #52] ; (800c300 <OnRadioTxDone+0x3c>) + 800c2cc: 466c mov r4, sp + 800c2ce: 6018 str r0, [r3, #0] + 800c2d0: 4620 mov r0, r4 + 800c2d2: f007 fcbb bl 8013c4c <SysTimeGet> + 800c2d6: e894 0003 ldmia.w r4, {r0, r1} + 800c2da: 4a0a ldr r2, [pc, #40] ; (800c304 <OnRadioTxDone+0x40>) + 800c2dc: 4b0a ldr r3, [pc, #40] ; (800c308 <OnRadioTxDone+0x44>) + 800c2de: e883 0003 stmia.w r3, {r0, r1} + 800c2e2: 7813 ldrb r3, [r2, #0] + 800c2e4: f043 0310 orr.w r3, r3, #16 + 800c2e8: 7013 strb r3, [r2, #0] + 800c2ea: f7ff fed3 bl 800c094 <OnMacProcessNotify> + 800c2ee: 4b07 ldr r3, [pc, #28] ; (800c30c <OnRadioTxDone+0x48>) + 800c2f0: 2201 movs r2, #1 + 800c2f2: 2100 movs r1, #0 + 800c2f4: 2002 movs r0, #2 + 800c2f6: b002 add sp, #8 + 800c2f8: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c2fc: f007 ba68 b.w 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 800c300: 200024f0 .word 0x200024f0 + 800c304: 20001fd4 .word 0x20001fd4 + 800c308: 20002310 .word 0x20002310 + 800c30c: 080150f2 .word 0x080150f2 + +0800c310 <ScheduleTx>: + 800c310: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800c314: b092 sub sp, #72 ; 0x48 + 800c316: 4606 mov r6, r0 + 800c318: f002 fc4d bl 800ebb6 <LoRaMacClassBIsBeaconExpected> + 800c31c: 2800 cmp r0, #0 + 800c31e: f040 8156 bne.w 800c5ce <ScheduleTx+0x2be> + 800c322: 4dac ldr r5, [pc, #688] ; (800c5d4 <ScheduleTx+0x2c4>) + 800c324: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c328: 2b01 cmp r3, #1 + 800c32a: d009 beq.n 800c340 <ScheduleTx+0x30> + 800c32c: 6b2b ldr r3, [r5, #48] ; 0x30 + 800c32e: 4caa ldr r4, [pc, #680] ; (800c5d8 <ScheduleTx+0x2c8>) + 800c330: b193 cbz r3, 800c358 <ScheduleTx+0x48> + 800c332: f894 3104 ldrb.w r3, [r4, #260] ; 0x104 + 800c336: b1bb cbz r3, 800c368 <ScheduleTx+0x58> + 800c338: 2b04 cmp r3, #4 + 800c33a: d06f beq.n 800c41c <ScheduleTx+0x10c> + 800c33c: 2003 movs r0, #3 + 800c33e: e003 b.n 800c348 <ScheduleTx+0x38> + 800c340: f002 fc3b bl 800ebba <LoRaMacClassBIsPingExpected> + 800c344: b118 cbz r0, 800c34e <ScheduleTx+0x3e> + 800c346: 200f movs r0, #15 + 800c348: b012 add sp, #72 ; 0x48 + 800c34a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800c34e: f002 fc36 bl 800ebbe <LoRaMacClassBIsMulticastExpected> + 800c352: 2800 cmp r0, #0 + 800c354: d0ea beq.n 800c32c <ScheduleTx+0x1c> + 800c356: e7f6 b.n 800c346 <ScheduleTx+0x36> + 800c358: f8b5 311e ldrh.w r3, [r5, #286] ; 0x11e + 800c35c: f8d4 2414 ldr.w r2, [r4, #1044] ; 0x414 + 800c360: 3b01 subs r3, #1 + 800c362: 4353 muls r3, r2 + 800c364: 632b str r3, [r5, #48] ; 0x30 + 800c366: e7e4 b.n 800c332 <ScheduleTx+0x22> + 800c368: 489c ldr r0, [pc, #624] ; (800c5dc <ScheduleTx+0x2cc>) + 800c36a: f003 f9e4 bl 800f736 <LoRaMacSerializerJoinRequest> + 800c36e: 2800 cmp r0, #0 + 800c370: f040 8129 bne.w 800c5c6 <ScheduleTx+0x2b6> + 800c374: f894 310c ldrb.w r3, [r4, #268] ; 0x10c + 800c378: 8023 strh r3, [r4, #0] + 800c37a: 6b2b ldr r3, [r5, #48] ; 0x30 + 800c37c: 930c str r3, [sp, #48] ; 0x30 + 800c37e: f10d 0818 add.w r8, sp, #24 + 800c382: f895 3039 ldrb.w r3, [r5, #57] ; 0x39 + 800c386: f88d 3038 strb.w r3, [sp, #56] ; 0x38 + 800c38a: 4640 mov r0, r8 + 800c38c: f895 311c ldrb.w r3, [r5, #284] ; 0x11c + 800c390: f88d 303a strb.w r3, [sp, #58] ; 0x3a + 800c394: f007 fc80 bl 8013c98 <SysTimeGetMcuTime> + 800c398: f8d5 3124 ldr.w r3, [r5, #292] ; 0x124 + 800c39c: 9300 str r3, [sp, #0] + 800c39e: af02 add r7, sp, #8 + 800c3a0: e898 0006 ldmia.w r8, {r1, r2} + 800c3a4: f8d5 3120 ldr.w r3, [r5, #288] ; 0x120 + 800c3a8: 4638 mov r0, r7 + 800c3aa: f007 fc0c bl 8013bc6 <SysTimeSub> + 800c3ae: e897 0003 ldmia.w r7, {r0, r1} + 800c3b2: ab0f add r3, sp, #60 ; 0x3c + 800c3b4: e883 0003 stmia.w r3, {r0, r1} + 800c3b8: 6aeb ldr r3, [r5, #44] ; 0x2c + 800c3ba: 930d str r3, [sp, #52] ; 0x34 + 800c3bc: 2300 movs r3, #0 + 800c3be: f88d 3044 strb.w r3, [sp, #68] ; 0x44 + 800c3c2: 8823 ldrh r3, [r4, #0] + 800c3c4: f8ad 3046 strh.w r3, [sp, #70] ; 0x46 + 800c3c8: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800c3cc: 2201 movs r2, #1 + 800c3ce: f88d 2039 strb.w r2, [sp, #57] ; 0x39 + 800c3d2: b91b cbnz r3, 800c3dc <ScheduleTx+0xcc> + 800c3d4: f88d 2044 strb.w r2, [sp, #68] ; 0x44 + 800c3d8: f88d 3039 strb.w r3, [sp, #57] ; 0x39 + 800c3dc: 4b80 ldr r3, [pc, #512] ; (800c5e0 <ScheduleTx+0x2d0>) + 800c3de: 9300 str r3, [sp, #0] + 800c3e0: 4b80 ldr r3, [pc, #512] ; (800c5e4 <ScheduleTx+0x2d4>) + 800c3e2: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c3e6: f1a3 0273 sub.w r2, r3, #115 ; 0x73 + 800c3ea: a90c add r1, sp, #48 ; 0x30 + 800c3ec: f003 fae1 bl 800f9b2 <RegionNextChannel> + 800c3f0: b1c0 cbz r0, 800c424 <ScheduleTx+0x114> + 800c3f2: 280b cmp r0, #11 + 800c3f4: d1a8 bne.n 800c348 <ScheduleTx+0x38> + 800c3f6: f8d4 1484 ldr.w r1, [r4, #1156] ; 0x484 + 800c3fa: b199 cbz r1, 800c424 <ScheduleTx+0x114> + 800c3fc: 2e00 cmp r6, #0 + 800c3fe: d0a3 beq.n 800c348 <ScheduleTx+0x38> + 800c400: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800c404: 4878 ldr r0, [pc, #480] ; (800c5e8 <ScheduleTx+0x2d8>) + 800c406: f043 0320 orr.w r3, r3, #32 + 800c40a: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800c40e: f007 fd95 bl 8013f3c <UTIL_TIMER_SetPeriod> + 800c412: 4875 ldr r0, [pc, #468] ; (800c5e8 <ScheduleTx+0x2d8>) + 800c414: f007 fd58 bl 8013ec8 <UTIL_TIMER_Start> + 800c418: 2000 movs r0, #0 + 800c41a: e795 b.n 800c348 <ScheduleTx+0x38> + 800c41c: 486f ldr r0, [pc, #444] ; (800c5dc <ScheduleTx+0x2cc>) + 800c41e: f003 f9be bl 800f79e <LoRaMacSerializerData> + 800c422: e7a4 b.n 800c36e <ScheduleTx+0x5e> + 800c424: f895 7048 ldrb.w r7, [r5, #72] ; 0x48 + 800c428: f995 3069 ldrsb.w r3, [r5, #105] ; 0x69 + 800c42c: f995 2039 ldrsb.w r2, [r5, #57] ; 0x39 + 800c430: f895 107d ldrb.w r1, [r5, #125] ; 0x7d + 800c434: 4e6d ldr r6, [pc, #436] ; (800c5ec <ScheduleTx+0x2dc>) + 800c436: 4638 mov r0, r7 + 800c438: f003 facd bl 800f9d6 <RegionApplyDrOffset> + 800c43c: 9600 str r6, [sp, #0] + 800c43e: b241 sxtb r1, r0 + 800c440: 6ceb ldr r3, [r5, #76] ; 0x4c + 800c442: f895 2050 ldrb.w r2, [r5, #80] ; 0x50 + 800c446: 4638 mov r0, r7 + 800c448: 3614 adds r6, #20 + 800c44a: f003 fa63 bl 800f914 <RegionComputeRxWindowParameters> + 800c44e: 9600 str r6, [sp, #0] + 800c450: 6ceb ldr r3, [r5, #76] ; 0x4c + 800c452: f895 2050 ldrb.w r2, [r5, #80] ; 0x50 + 800c456: f995 1070 ldrsb.w r1, [r5, #112] ; 0x70 + 800c45a: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c45e: f003 fa59 bl 800f914 <RegionComputeRxWindowParameters> + 800c462: f8d4 13c4 ldr.w r1, [r4, #964] ; 0x3c4 + 800c466: 6dab ldr r3, [r5, #88] ; 0x58 + 800c468: f8d4 23d8 ldr.w r2, [r4, #984] ; 0x3d8 + 800c46c: 440b add r3, r1 + 800c46e: f8c4 33b0 str.w r3, [r4, #944] ; 0x3b0 + 800c472: 6deb ldr r3, [r5, #92] ; 0x5c + 800c474: 4413 add r3, r2 + 800c476: f8c4 33b4 str.w r3, [r4, #948] ; 0x3b4 + 800c47a: f894 3104 ldrb.w r3, [r4, #260] ; 0x104 + 800c47e: 2b04 cmp r3, #4 + 800c480: d007 beq.n 800c492 <ScheduleTx+0x182> + 800c482: 6e2b ldr r3, [r5, #96] ; 0x60 + 800c484: 440b add r3, r1 + 800c486: f8c4 33b0 str.w r3, [r4, #944] ; 0x3b0 + 800c48a: 6e6b ldr r3, [r5, #100] ; 0x64 + 800c48c: 4413 add r3, r2 + 800c48e: f8c4 33b4 str.w r3, [r4, #948] ; 0x3b4 + 800c492: 2300 movs r3, #0 + 800c494: 9308 str r3, [sp, #32] + 800c496: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800c49a: b183 cbz r3, 800c4be <ScheduleTx+0x1ae> + 800c49c: a808 add r0, sp, #32 + 800c49e: f002 fc61 bl 800ed64 <LoRaMacCommandsGetSizeSerializedCmds> + 800c4a2: 2800 cmp r0, #0 + 800c4a4: d14a bne.n 800c53c <ScheduleTx+0x22c> + 800c4a6: f995 0039 ldrsb.w r0, [r5, #57] ; 0x39 + 800c4aa: f894 6237 ldrb.w r6, [r4, #567] ; 0x237 + 800c4ae: f89d 7020 ldrb.w r7, [sp, #32] + 800c4b2: f7ff fe03 bl 800c0bc <GetMaxAppPayloadWithoutFOptsLength> + 800c4b6: 443e add r6, r7 + 800c4b8: b280 uxth r0, r0 + 800c4ba: 42b0 cmp r0, r6 + 800c4bc: d33c bcc.n 800c538 <ScheduleTx+0x228> + 800c4be: 2300 movs r3, #0 + 800c4c0: f88d 3013 strb.w r3, [sp, #19] + 800c4c4: f895 3039 ldrb.w r3, [r5, #57] ; 0x39 + 800c4c8: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 800c4cc: f895 3038 ldrb.w r3, [r5, #56] ; 0x38 + 800c4d0: f88d 3022 strb.w r3, [sp, #34] ; 0x22 + 800c4d4: f8d5 3080 ldr.w r3, [r5, #128] ; 0x80 + 800c4d8: 9309 str r3, [sp, #36] ; 0x24 + 800c4da: f8d5 3084 ldr.w r3, [r5, #132] ; 0x84 + 800c4de: 930a str r3, [sp, #40] ; 0x28 + 800c4e0: 8823 ldrh r3, [r4, #0] + 800c4e2: f894 6411 ldrb.w r6, [r4, #1041] ; 0x411 + 800c4e6: f8ad 302c strh.w r3, [sp, #44] ; 0x2c + 800c4ea: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c4ee: 4b40 ldr r3, [pc, #256] ; (800c5f0 <ScheduleTx+0x2e0>) + 800c4f0: f88d 6020 strb.w r6, [sp, #32] + 800c4f4: f10d 0213 add.w r2, sp, #19 + 800c4f8: a908 add r1, sp, #32 + 800c4fa: f003 fa1f bl 800f93c <RegionTxConfig> + 800c4fe: 2301 movs r3, #1 + 800c500: f884 3435 strb.w r3, [r4, #1077] ; 0x435 + 800c504: f895 3039 ldrb.w r3, [r5, #57] ; 0x39 + 800c508: f884 3436 strb.w r3, [r4, #1078] ; 0x436 + 800c50c: f89d 3013 ldrb.w r3, [sp, #19] + 800c510: f884 3437 strb.w r3, [r4, #1079] ; 0x437 + 800c514: f8d4 3414 ldr.w r3, [r4, #1044] ; 0x414 + 800c518: f8c4 6444 str.w r6, [r4, #1092] ; 0x444 + 800c51c: f8c4 343c str.w r3, [r4, #1084] ; 0x43c + 800c520: f8c4 344c str.w r3, [r4, #1100] ; 0x44c + 800c524: f002 fb4d bl 800ebc2 <LoRaMacClassBIsBeaconModeActive> + 800c528: b150 cbz r0, 800c540 <ScheduleTx+0x230> + 800c52a: f8d4 0414 ldr.w r0, [r4, #1044] ; 0x414 + 800c52e: f002 fb5a bl 800ebe6 <LoRaMacClassBIsUplinkCollision> + 800c532: b128 cbz r0, 800c540 <ScheduleTx+0x230> + 800c534: 2010 movs r0, #16 + 800c536: e707 b.n 800c348 <ScheduleTx+0x38> + 800c538: 2008 movs r0, #8 + 800c53a: e705 b.n 800c348 <ScheduleTx+0x38> + 800c53c: 2013 movs r0, #19 + 800c53e: e703 b.n 800c348 <ScheduleTx+0x38> + 800c540: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c544: 2b01 cmp r3, #1 + 800c546: d101 bne.n 800c54c <ScheduleTx+0x23c> + 800c548: f002 fb4f bl 800ebea <LoRaMacClassBStopRxSlots> + 800c54c: f002 fb3c bl 800ebc8 <LoRaMacClassBHaltBeaconing> + 800c550: 2300 movs r3, #0 + 800c552: 9305 str r3, [sp, #20] + 800c554: f894 3104 ldrb.w r3, [r4, #260] ; 0x104 + 800c558: f995 5039 ldrsb.w r5, [r5, #57] ; 0x39 + 800c55c: f894 6411 ldrb.w r6, [r4, #1041] ; 0x411 + 800c560: b1bb cbz r3, 800c592 <ScheduleTx+0x282> + 800c562: 2b04 cmp r3, #4 + 800c564: f47f aeea bne.w 800c33c <ScheduleTx+0x2c> + 800c568: a805 add r0, sp, #20 + 800c56a: f002 fe37 bl 800f1dc <LoRaMacCryptoGetFCntUp> + 800c56e: bb60 cbnz r0, 800c5ca <ScheduleTx+0x2ba> + 800c570: f894 340c ldrb.w r3, [r4, #1036] ; 0x40c + 800c574: b91b cbnz r3, 800c57e <ScheduleTx+0x26e> + 800c576: f894 340e ldrb.w r3, [r4, #1038] ; 0x40e + 800c57a: 2b01 cmp r3, #1 + 800c57c: d902 bls.n 800c584 <ScheduleTx+0x274> + 800c57e: 9b05 ldr r3, [sp, #20] + 800c580: 3b01 subs r3, #1 + 800c582: 9305 str r3, [sp, #20] + 800c584: 4b15 ldr r3, [pc, #84] ; (800c5dc <ScheduleTx+0x2cc>) + 800c586: 9805 ldr r0, [sp, #20] + 800c588: 4632 mov r2, r6 + 800c58a: b2e9 uxtb r1, r5 + 800c58c: f002 fe98 bl 800f2c0 <LoRaMacCryptoSecureMessage> + 800c590: e002 b.n 800c598 <ScheduleTx+0x288> + 800c592: 4812 ldr r0, [pc, #72] ; (800c5dc <ScheduleTx+0x2cc>) + 800c594: f002 fe6c bl 800f270 <LoRaMacCryptoPrepareJoinRequest> + 800c598: b9a8 cbnz r0, 800c5c6 <ScheduleTx+0x2b6> + 800c59a: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800c59e: f894 110c ldrb.w r1, [r4, #268] ; 0x10c + 800c5a2: 8021 strh r1, [r4, #0] + 800c5a4: f043 0302 orr.w r3, r3, #2 + 800c5a8: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800c5ac: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800c5b0: b923 cbnz r3, 800c5bc <ScheduleTx+0x2ac> + 800c5b2: f894 340c ldrb.w r3, [r4, #1036] ; 0x40c + 800c5b6: 3301 adds r3, #1 + 800c5b8: f884 340c strb.w r3, [r4, #1036] ; 0x40c + 800c5bc: 4b0d ldr r3, [pc, #52] ; (800c5f4 <ScheduleTx+0x2e4>) + 800c5be: 480e ldr r0, [pc, #56] ; (800c5f8 <ScheduleTx+0x2e8>) + 800c5c0: 6a9b ldr r3, [r3, #40] ; 0x28 + 800c5c2: 4798 blx r3 + 800c5c4: e728 b.n 800c418 <ScheduleTx+0x108> + 800c5c6: 2011 movs r0, #17 + 800c5c8: e6be b.n 800c348 <ScheduleTx+0x38> + 800c5ca: 2012 movs r0, #18 + 800c5cc: e6bc b.n 800c348 <ScheduleTx+0x38> + 800c5ce: 200e movs r0, #14 + 800c5d0: e6ba b.n 800c348 <ScheduleTx+0x38> + 800c5d2: bf00 nop + 800c5d4: 20001864 .word 0x20001864 + 800c5d8: 20001fd8 .word 0x20001fd8 + 800c5dc: 200020e0 .word 0x200020e0 + 800c5e0: 20001894 .word 0x20001894 + 800c5e4: 2000245c .word 0x2000245c + 800c5e8: 20002340 .word 0x20002340 + 800c5ec: 20002390 .word 0x20002390 + 800c5f0: 200023ec .word 0x200023ec + 800c5f4: 08015784 .word 0x08015784 + 800c5f8: 20001fda .word 0x20001fda + +0800c5fc <OpenContinuousRxCWindow>: + 800c5fc: b573 push {r0, r1, r4, r5, r6, lr} + 800c5fe: 4c14 ldr r4, [pc, #80] ; (800c650 <OpenContinuousRxCWindow+0x54>) + 800c600: 4d14 ldr r5, [pc, #80] ; (800c654 <OpenContinuousRxCWindow+0x58>) + 800c602: f504 7678 add.w r6, r4, #992 ; 0x3e0 + 800c606: 6ceb ldr r3, [r5, #76] ; 0x4c + 800c608: f895 2050 ldrb.w r2, [r5, #80] ; 0x50 + 800c60c: f995 1078 ldrsb.w r1, [r5, #120] ; 0x78 + 800c610: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c614: 9600 str r6, [sp, #0] + 800c616: f003 f97d bl 800f914 <RegionComputeRxWindowParameters> + 800c61a: f240 2301 movw r3, #513 ; 0x201 + 800c61e: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c622: f8a4 33f2 strh.w r3, [r4, #1010] ; 0x3f2 + 800c626: f204 421c addw r2, r4, #1052 ; 0x41c + 800c62a: 4631 mov r1, r6 + 800c62c: f003 f97e bl 800f92c <RegionRxConfig> + 800c630: b158 cbz r0, 800c64a <OpenContinuousRxCWindow+0x4e> + 800c632: f894 341c ldrb.w r3, [r4, #1052] ; 0x41c + 800c636: f884 345e strb.w r3, [r4, #1118] ; 0x45e + 800c63a: 4b07 ldr r3, [pc, #28] ; (800c658 <OpenContinuousRxCWindow+0x5c>) + 800c63c: 2000 movs r0, #0 + 800c63e: 6b5b ldr r3, [r3, #52] ; 0x34 + 800c640: 4798 blx r3 + 800c642: f894 33f3 ldrb.w r3, [r4, #1011] ; 0x3f3 + 800c646: f884 3480 strb.w r3, [r4, #1152] ; 0x480 + 800c64a: b002 add sp, #8 + 800c64c: bd70 pop {r4, r5, r6, pc} + 800c64e: bf00 nop + 800c650: 20001fd8 .word 0x20001fd8 + 800c654: 20001864 .word 0x20001864 + 800c658: 08015784 .word 0x08015784 + +0800c65c <SwitchClass>: + 800c65c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800c65e: 4d33 ldr r5, [pc, #204] ; (800c72c <SwitchClass+0xd0>) + 800c660: f895 4118 ldrb.w r4, [r5, #280] ; 0x118 + 800c664: 2c01 cmp r4, #1 + 800c666: 4606 mov r6, r0 + 800c668: d04b beq.n 800c702 <SwitchClass+0xa6> + 800c66a: 2c02 cmp r4, #2 + 800c66c: d051 beq.n 800c712 <SwitchClass+0xb6> + 800c66e: b964 cbnz r4, 800c68a <SwitchClass+0x2e> + 800c670: b938 cbnz r0, 800c682 <SwitchClass+0x26> + 800c672: e9d5 011b ldrd r0, r1, [r5, #108] ; 0x6c + 800c676: f105 0374 add.w r3, r5, #116 ; 0x74 + 800c67a: e883 0003 stmia.w r3, {r0, r1} + 800c67e: 4620 mov r0, r4 + 800c680: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800c682: 2801 cmp r0, #1 + 800c684: d03d beq.n 800c702 <SwitchClass+0xa6> + 800c686: 2802 cmp r0, #2 + 800c688: d001 beq.n 800c68e <SwitchClass+0x32> + 800c68a: 2403 movs r4, #3 + 800c68c: e7f7 b.n 800c67e <SwitchClass+0x22> + 800c68e: 4f28 ldr r7, [pc, #160] ; (800c730 <SwitchClass+0xd4>) + 800c690: f885 0118 strb.w r0, [r5, #280] ; 0x118 + 800c694: f507 7e73 add.w lr, r7, #972 ; 0x3cc + 800c698: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 800c69c: f507 7c78 add.w ip, r7, #992 ; 0x3e0 + 800c6a0: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 800c6a4: f8de 3000 ldr.w r3, [lr] + 800c6a8: f8cc 3000 str.w r3, [ip] + 800c6ac: f895 30e9 ldrb.w r3, [r5, #233] ; 0xe9 + 800c6b0: f887 63f3 strb.w r6, [r7, #1011] ; 0x3f3 + 800c6b4: b1e3 cbz r3, 800c6f0 <SwitchClass+0x94> + 800c6b6: f895 3100 ldrb.w r3, [r5, #256] ; 0x100 + 800c6ba: 2b02 cmp r3, #2 + 800c6bc: d118 bne.n 800c6f0 <SwitchClass+0x94> + 800c6be: f8d5 3104 ldr.w r3, [r5, #260] ; 0x104 + 800c6c2: 676b str r3, [r5, #116] ; 0x74 + 800c6c4: f8c7 33e4 str.w r3, [r7, #996] ; 0x3e4 + 800c6c8: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800c6cc: f895 2108 ldrb.w r2, [r5, #264] ; 0x108 + 800c6d0: f887 33f0 strb.w r3, [r7, #1008] ; 0x3f0 + 800c6d4: f895 308c ldrb.w r3, [r5, #140] ; 0x8c + 800c6d8: f885 2078 strb.w r2, [r5, #120] ; 0x78 + 800c6dc: f887 33f1 strb.w r3, [r7, #1009] ; 0x3f1 + 800c6e0: f897 2411 ldrb.w r2, [r7, #1041] ; 0x411 + 800c6e4: f887 23e0 strb.w r2, [r7, #992] ; 0x3e0 + 800c6e8: f240 3301 movw r3, #769 ; 0x301 + 800c6ec: f8a7 33f2 strh.w r3, [r7, #1010] ; 0x3f2 + 800c6f0: 2300 movs r3, #0 + 800c6f2: f887 3410 strb.w r3, [r7, #1040] ; 0x410 + 800c6f6: 4b0f ldr r3, [pc, #60] ; (800c734 <SwitchClass+0xd8>) + 800c6f8: 6adb ldr r3, [r3, #44] ; 0x2c + 800c6fa: 4798 blx r3 + 800c6fc: f7ff ff7e bl 800c5fc <OpenContinuousRxCWindow> + 800c700: e7bd b.n 800c67e <SwitchClass+0x22> + 800c702: f002 fa63 bl 800ebcc <LoRaMacClassBSwitchClass> + 800c706: 4604 mov r4, r0 + 800c708: 2800 cmp r0, #0 + 800c70a: d1b8 bne.n 800c67e <SwitchClass+0x22> + 800c70c: f885 6118 strb.w r6, [r5, #280] ; 0x118 + 800c710: e7b5 b.n 800c67e <SwitchClass+0x22> + 800c712: 2800 cmp r0, #0 + 800c714: d1b9 bne.n 800c68a <SwitchClass+0x2e> + 800c716: 4b06 ldr r3, [pc, #24] ; (800c730 <SwitchClass+0xd4>) + 800c718: f885 0118 strb.w r0, [r5, #280] ; 0x118 + 800c71c: 2206 movs r2, #6 + 800c71e: f883 2480 strb.w r2, [r3, #1152] ; 0x480 + 800c722: 4b04 ldr r3, [pc, #16] ; (800c734 <SwitchClass+0xd8>) + 800c724: 6adb ldr r3, [r3, #44] ; 0x2c + 800c726: 4798 blx r3 + 800c728: 4634 mov r4, r6 + 800c72a: e7a8 b.n 800c67e <SwitchClass+0x22> + 800c72c: 20001864 .word 0x20001864 + 800c730: 20001fd8 .word 0x20001fd8 + 800c734: 08015784 .word 0x08015784 + +0800c738 <ResetMacParameters.constprop.0>: + 800c738: b5f0 push {r4, r5, r6, r7, lr} + 800c73a: 4c48 ldr r4, [pc, #288] ; (800c85c <ResetMacParameters.constprop.0+0x124>) + 800c73c: 4e48 ldr r6, [pc, #288] ; (800c860 <ResetMacParameters.constprop.0+0x128>) + 800c73e: f8b4 20dc ldrh.w r2, [r4, #220] ; 0xdc + 800c742: 8722 strh r2, [r4, #56] ; 0x38 + 800c744: e9d4 012d ldrd r0, r1, [r4, #180] ; 0xb4 + 800c748: f894 20b1 ldrb.w r2, [r4, #177] ; 0xb1 + 800c74c: f884 2069 strb.w r2, [r4, #105] ; 0x69 + 800c750: f104 026c add.w r2, r4, #108 ; 0x6c + 800c754: e882 0003 stmia.w r2, {r0, r1} + 800c758: e9d4 012f ldrd r0, r1, [r4, #188] ; 0xbc + 800c75c: f104 0274 add.w r2, r4, #116 ; 0x74 + 800c760: e882 0003 stmia.w r2, {r0, r1} + 800c764: f8b4 20c4 ldrh.w r2, [r4, #196] ; 0xc4 + 800c768: f8a4 207c strh.w r2, [r4, #124] ; 0x7c + 800c76c: f8d4 20cc ldr.w r2, [r4, #204] ; 0xcc + 800c770: f8c4 2084 str.w r2, [r4, #132] ; 0x84 + 800c774: b08f sub sp, #60 ; 0x3c + 800c776: f8d4 20d0 ldr.w r2, [r4, #208] ; 0xd0 + 800c77a: f8d4 10c8 ldr.w r1, [r4, #200] ; 0xc8 + 800c77e: f8c4 2088 str.w r2, [r4, #136] ; 0x88 + 800c782: 2500 movs r5, #0 + 800c784: 4a37 ldr r2, [pc, #220] ; (800c864 <ResetMacParameters.constprop.0+0x12c>) + 800c786: f8c4 1080 str.w r1, [r4, #128] ; 0x80 + 800c78a: 2301 movs r3, #1 + 800c78c: f8a4 311e strh.w r3, [r4, #286] ; 0x11e + 800c790: f8c6 240c str.w r2, [r6, #1036] ; 0x40c + 800c794: e9c4 554e strd r5, r5, [r4, #312] ; 0x138 + 800c798: f884 512c strb.w r5, [r4, #300] ; 0x12c + 800c79c: 62a5 str r5, [r4, #40] ; 0x28 + 800c79e: f884 511b strb.w r5, [r4, #283] ; 0x11b + 800c7a2: f884 503a strb.w r5, [r4, #58] ; 0x3a + 800c7a6: f8c4 5130 str.w r5, [r4, #304] ; 0x130 + 800c7aa: f8a4 5134 strh.w r5, [r4, #308] ; 0x134 + 800c7ae: f886 5410 strb.w r5, [r6, #1040] ; 0x410 + 800c7b2: f884 5141 strb.w r5, [r4, #321] ; 0x141 + 800c7b6: f88d 3014 strb.w r3, [sp, #20] + 800c7ba: f504 7308 add.w r3, r4, #544 ; 0x220 + 800c7be: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800c7c2: f8a4 5142 strh.w r5, [r4, #322] ; 0x142 + 800c7c6: 9303 str r3, [sp, #12] + 800c7c8: a903 add r1, sp, #12 + 800c7ca: f504 732d add.w r3, r4, #692 ; 0x2b4 + 800c7ce: 9304 str r3, [sp, #16] + 800c7d0: f003 f888 bl 800f8e4 <RegionInitDefaults> + 800c7d4: 6ee3 ldr r3, [r4, #108] ; 0x6c + 800c7d6: f8c6 33d0 str.w r3, [r6, #976] ; 0x3d0 + 800c7da: f894 307d ldrb.w r3, [r4, #125] ; 0x7d + 800c7de: f886 33dc strb.w r3, [r6, #988] ; 0x3dc + 800c7e2: f894 308c ldrb.w r3, [r4, #140] ; 0x8c + 800c7e6: f886 33dd strb.w r3, [r6, #989] ; 0x3dd + 800c7ea: f44f 7380 mov.w r3, #256 ; 0x100 + 800c7ee: f8a6 33de strh.w r3, [r6, #990] ; 0x3de + 800c7f2: f886 53cc strb.w r5, [r6, #972] ; 0x3cc + 800c7f6: f506 7773 add.w r7, r6, #972 ; 0x3cc + 800c7fa: cf0f ldmia r7!, {r0, r1, r2, r3} + 800c7fc: f506 7478 add.w r4, r6, #992 ; 0x3e0 + 800c800: c40f stmia r4!, {r0, r1, r2, r3} + 800c802: 683b ldr r3, [r7, #0] + 800c804: 6023 str r3, [r4, #0] + 800c806: f240 2301 movw r3, #513 ; 0x201 + 800c80a: f8a6 33f2 strh.w r3, [r6, #1010] ; 0x3f2 + 800c80e: f8d6 3348 ldr.w r3, [r6, #840] ; 0x348 + 800c812: f886 5411 strb.w r5, [r6, #1041] ; 0x411 + 800c816: e9cd 5501 strd r5, r5, [sp, #4] + 800c81a: b11b cbz r3, 800c824 <ResetMacParameters.constprop.0+0xec> + 800c81c: 685a ldr r2, [r3, #4] + 800c81e: 695b ldr r3, [r3, #20] + 800c820: 9201 str r2, [sp, #4] + 800c822: 9302 str r3, [sp, #8] + 800c824: 4b10 ldr r3, [pc, #64] ; (800c868 <ResetMacParameters.constprop.0+0x130>) + 800c826: 9306 str r3, [sp, #24] + 800c828: f1a3 0244 sub.w r2, r3, #68 ; 0x44 + 800c82c: 9207 str r2, [sp, #28] + 800c82e: f1a3 0214 sub.w r2, r3, #20 + 800c832: 9208 str r2, [sp, #32] + 800c834: 4a0d ldr r2, [pc, #52] ; (800c86c <ResetMacParameters.constprop.0+0x134>) + 800c836: 920a str r2, [sp, #40] ; 0x28 + 800c838: 3325 adds r3, #37 ; 0x25 + 800c83a: 9309 str r3, [sp, #36] ; 0x24 + 800c83c: f1a2 039c sub.w r3, r2, #156 ; 0x9c + 800c840: 930b str r3, [sp, #44] ; 0x2c + 800c842: f1a2 0398 sub.w r3, r2, #152 ; 0x98 + 800c846: 930c str r3, [sp, #48] ; 0x30 + 800c848: a901 add r1, sp, #4 + 800c84a: 1d13 adds r3, r2, #4 + 800c84c: a806 add r0, sp, #24 + 800c84e: f202 6274 addw r2, r2, #1652 ; 0x674 + 800c852: 930d str r3, [sp, #52] ; 0x34 + 800c854: f002 f9a4 bl 800eba0 <LoRaMacClassBInit> + 800c858: b00f add sp, #60 ; 0x3c + 800c85a: bdf0 pop {r4, r5, r6, r7, pc} + 800c85c: 20001864 .word 0x20001864 + 800c860: 20001fd8 .word 0x20001fd8 + 800c864: 00010100 .word 0x00010100 + 800c868: 20002434 .word 0x20002434 + 800c86c: 20001948 .word 0x20001948 + +0800c870 <RxWindowSetup.constprop.0>: + 800c870: b5f8 push {r3, r4, r5, r6, r7, lr} + 800c872: 4f0d ldr r7, [pc, #52] ; (800c8a8 <RxWindowSetup.constprop.0+0x38>) + 800c874: 4c0d ldr r4, [pc, #52] ; (800c8ac <RxWindowSetup.constprop.0+0x3c>) + 800c876: 4e0e ldr r6, [pc, #56] ; (800c8b0 <RxWindowSetup.constprop.0+0x40>) + 800c878: 460d mov r5, r1 + 800c87a: f007 fad7 bl 8013e2c <UTIL_TIMER_Stop> + 800c87e: 6b3b ldr r3, [r7, #48] ; 0x30 + 800c880: 4798 blx r3 + 800c882: f896 0048 ldrb.w r0, [r6, #72] ; 0x48 + 800c886: f204 421c addw r2, r4, #1052 ; 0x41c + 800c88a: 4629 mov r1, r5 + 800c88c: f003 f84e bl 800f92c <RegionRxConfig> + 800c890: b148 cbz r0, 800c8a6 <RxWindowSetup.constprop.0+0x36> + 800c892: f894 341c ldrb.w r3, [r4, #1052] ; 0x41c + 800c896: f884 345e strb.w r3, [r4, #1118] ; 0x45e + 800c89a: 6d70 ldr r0, [r6, #84] ; 0x54 + 800c89c: 6b7b ldr r3, [r7, #52] ; 0x34 + 800c89e: 4798 blx r3 + 800c8a0: 7ceb ldrb r3, [r5, #19] + 800c8a2: f884 3480 strb.w r3, [r4, #1152] ; 0x480 + 800c8a6: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800c8a8: 08015784 .word 0x08015784 + 800c8ac: 20001fd8 .word 0x20001fd8 + 800c8b0: 20001864 .word 0x20001864 + +0800c8b4 <OnRxWindow1TimerEvent>: + 800c8b4: 480d ldr r0, [pc, #52] ; (800c8ec <OnRxWindow1TimerEvent+0x38>) + 800c8b6: f890 3411 ldrb.w r3, [r0, #1041] ; 0x411 + 800c8ba: f880 33b8 strb.w r3, [r0, #952] ; 0x3b8 + 800c8be: 4b0c ldr r3, [pc, #48] ; (800c8f0 <OnRxWindow1TimerEvent+0x3c>) + 800c8c0: f893 2069 ldrb.w r2, [r3, #105] ; 0x69 + 800c8c4: f880 23bb strb.w r2, [r0, #955] ; 0x3bb + 800c8c8: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 800c8cc: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800c8d0: f880 33c9 strb.w r3, [r0, #969] ; 0x3c9 + 800c8d4: 2300 movs r3, #0 + 800c8d6: f880 23c8 strb.w r2, [r0, #968] ; 0x3c8 + 800c8da: f8a0 33ca strh.w r3, [r0, #970] ; 0x3ca + 800c8de: f500 716e add.w r1, r0, #952 ; 0x3b8 + 800c8e2: f500 7060 add.w r0, r0, #896 ; 0x380 + 800c8e6: f7ff bfc3 b.w 800c870 <RxWindowSetup.constprop.0> + 800c8ea: bf00 nop + 800c8ec: 20001fd8 .word 0x20001fd8 + 800c8f0: 20001864 .word 0x20001864 + +0800c8f4 <OnRxWindow2TimerEvent>: + 800c8f4: 480f ldr r0, [pc, #60] ; (800c934 <OnRxWindow2TimerEvent+0x40>) + 800c8f6: f890 3480 ldrb.w r3, [r0, #1152] ; 0x480 + 800c8fa: b1cb cbz r3, 800c930 <OnRxWindow2TimerEvent+0x3c> + 800c8fc: f890 3411 ldrb.w r3, [r0, #1041] ; 0x411 + 800c900: f880 33cc strb.w r3, [r0, #972] ; 0x3cc + 800c904: 4b0c ldr r3, [pc, #48] ; (800c938 <OnRxWindow2TimerEvent+0x44>) + 800c906: 6eda ldr r2, [r3, #108] ; 0x6c + 800c908: f8c0 23d0 str.w r2, [r0, #976] ; 0x3d0 + 800c90c: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 800c910: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800c914: f880 33dd strb.w r3, [r0, #989] ; 0x3dd + 800c918: f44f 7380 mov.w r3, #256 ; 0x100 + 800c91c: f880 23dc strb.w r2, [r0, #988] ; 0x3dc + 800c920: f8a0 33de strh.w r3, [r0, #990] ; 0x3de + 800c924: f500 7173 add.w r1, r0, #972 ; 0x3cc + 800c928: f500 7066 add.w r0, r0, #920 ; 0x398 + 800c92c: f7ff bfa0 b.w 800c870 <RxWindowSetup.constprop.0> + 800c930: 4770 bx lr + 800c932: bf00 nop + 800c934: 20001fd8 .word 0x20001fd8 + 800c938: 20001864 .word 0x20001864 + +0800c93c <LoRaMacHandleNvm.part.0.constprop.0>: + 800c93c: b570 push {r4, r5, r6, lr} + 800c93e: 4c34 ldr r4, [pc, #208] ; (800ca10 <LoRaMacHandleNvm.part.0.constprop.0+0xd4>) + 800c940: 2124 movs r1, #36 ; 0x24 + 800c942: 4620 mov r0, r4 + 800c944: f004 ff64 bl 8011810 <Crc32> + 800c948: 6a63 ldr r3, [r4, #36] ; 0x24 + 800c94a: 4298 cmp r0, r3 + 800c94c: bf18 it ne + 800c94e: 6260 strne r0, [r4, #36] ; 0x24 + 800c950: f04f 011c mov.w r1, #28 + 800c954: 482f ldr r0, [pc, #188] ; (800ca14 <LoRaMacHandleNvm.part.0.constprop.0+0xd8>) + 800c956: bf14 ite ne + 800c958: 2501 movne r5, #1 + 800c95a: 2500 moveq r5, #0 + 800c95c: f004 ff58 bl 8011810 <Crc32> + 800c960: 6c63 ldr r3, [r4, #68] ; 0x44 + 800c962: 4298 cmp r0, r3 + 800c964: bf18 it ne + 800c966: 6460 strne r0, [r4, #68] ; 0x44 + 800c968: f04f 01fc mov.w r1, #252 ; 0xfc + 800c96c: 482a ldr r0, [pc, #168] ; (800ca18 <LoRaMacHandleNvm.part.0.constprop.0+0xdc>) + 800c96e: bf18 it ne + 800c970: f045 0502 orrne.w r5, r5, #2 + 800c974: f004 ff4c bl 8011810 <Crc32> + 800c978: f8d4 3144 ldr.w r3, [r4, #324] ; 0x144 + 800c97c: 4298 cmp r0, r3 + 800c97e: bf18 it ne + 800c980: f8c4 0144 strne.w r0, [r4, #324] ; 0x144 + 800c984: f04f 01d4 mov.w r1, #212 ; 0xd4 + 800c988: 4824 ldr r0, [pc, #144] ; (800ca1c <LoRaMacHandleNvm.part.0.constprop.0+0xe0>) + 800c98a: bf18 it ne + 800c98c: f045 0504 orrne.w r5, r5, #4 + 800c990: f004 ff3e bl 8011810 <Crc32> + 800c994: f8d4 321c ldr.w r3, [r4, #540] ; 0x21c + 800c998: 4298 cmp r0, r3 + 800c99a: bf18 it ne + 800c99c: f8c4 021c strne.w r0, [r4, #540] ; 0x21c + 800c9a0: f04f 0190 mov.w r1, #144 ; 0x90 + 800c9a4: 481e ldr r0, [pc, #120] ; (800ca20 <LoRaMacHandleNvm.part.0.constprop.0+0xe4>) + 800c9a6: bf18 it ne + 800c9a8: f045 0508 orrne.w r5, r5, #8 + 800c9ac: f004 ff30 bl 8011810 <Crc32> + 800c9b0: f8d4 32b0 ldr.w r3, [r4, #688] ; 0x2b0 + 800c9b4: 4298 cmp r0, r3 + 800c9b6: bf18 it ne + 800c9b8: f8c4 02b0 strne.w r0, [r4, #688] ; 0x2b0 + 800c9bc: f44f 6194 mov.w r1, #1184 ; 0x4a0 + 800c9c0: 4818 ldr r0, [pc, #96] ; (800ca24 <LoRaMacHandleNvm.part.0.constprop.0+0xe8>) + 800c9c2: bf18 it ne + 800c9c4: f045 0510 orrne.w r5, r5, #16 + 800c9c8: f004 ff22 bl 8011810 <Crc32> + 800c9cc: f8d4 3754 ldr.w r3, [r4, #1876] ; 0x754 + 800c9d0: 4298 cmp r0, r3 + 800c9d2: bf18 it ne + 800c9d4: f8c4 0754 strne.w r0, [r4, #1876] ; 0x754 + 800c9d8: f04f 0114 mov.w r1, #20 + 800c9dc: 4812 ldr r0, [pc, #72] ; (800ca28 <LoRaMacHandleNvm.part.0.constprop.0+0xec>) + 800c9de: bf18 it ne + 800c9e0: f045 0520 orrne.w r5, r5, #32 + 800c9e4: f004 ff14 bl 8011810 <Crc32> + 800c9e8: f8d4 376c ldr.w r3, [r4, #1900] ; 0x76c + 800c9ec: 4298 cmp r0, r3 + 800c9ee: 4b0f ldr r3, [pc, #60] ; (800ca2c <LoRaMacHandleNvm.part.0.constprop.0+0xf0>) + 800c9f0: bf18 it ne + 800c9f2: f8c4 076c strne.w r0, [r4, #1900] ; 0x76c + 800c9f6: f8d3 3348 ldr.w r3, [r3, #840] ; 0x348 + 800c9fa: bf18 it ne + 800c9fc: f045 0540 orrne.w r5, r5, #64 ; 0x40 + 800ca00: b12b cbz r3, 800ca0e <LoRaMacHandleNvm.part.0.constprop.0+0xd2> + 800ca02: 691b ldr r3, [r3, #16] + 800ca04: b11b cbz r3, 800ca0e <LoRaMacHandleNvm.part.0.constprop.0+0xd2> + 800ca06: 4628 mov r0, r5 + 800ca08: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 800ca0c: 4718 bx r3 + 800ca0e: bd70 pop {r4, r5, r6, pc} + 800ca10: 20001864 .word 0x20001864 + 800ca14: 2000188c .word 0x2000188c + 800ca18: 200018ac .word 0x200018ac + 800ca1c: 200019ac .word 0x200019ac + 800ca20: 20001a84 .word 0x20001a84 + 800ca24: 20001b18 .word 0x20001b18 + 800ca28: 20001fbc .word 0x20001fbc + 800ca2c: 20001fd8 .word 0x20001fd8 + +0800ca30 <ProcessMacCommands.constprop.0>: + 800ca30: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800ca34: b091 sub sp, #68 ; 0x44 + 800ca36: 2600 movs r6, #0 + 800ca38: 4fbd ldr r7, [pc, #756] ; (800cd30 <ProcessMacCommands.constprop.0+0x300>) + 800ca3a: f88d 6015 strb.w r6, [sp, #21] + 800ca3e: 4605 mov r5, r0 + 800ca40: 4688 mov r8, r1 + 800ca42: 4693 mov fp, r2 + 800ca44: f8ad 6018 strh.w r6, [sp, #24] + 800ca48: 46b1 mov r9, r6 + 800ca4a: 45c1 cmp r9, r8 + 800ca4c: d302 bcc.n 800ca54 <ProcessMacCommands.constprop.0+0x24> + 800ca4e: b011 add sp, #68 ; 0x44 + 800ca50: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800ca54: f815 0009 ldrb.w r0, [r5, r9] + 800ca58: f002 f9c2 bl 800ede0 <LoRaMacCommandsGetCmdSize> + 800ca5c: 4448 add r0, r9 + 800ca5e: 4540 cmp r0, r8 + 800ca60: dcf5 bgt.n 800ca4e <ProcessMacCommands.constprop.0+0x1e> + 800ca62: f815 3009 ldrb.w r3, [r5, r9] + 800ca66: f109 0401 add.w r4, r9, #1 + 800ca6a: 3b02 subs r3, #2 + 800ca6c: b2e4 uxtb r4, r4 + 800ca6e: 2b11 cmp r3, #17 + 800ca70: d8ed bhi.n 800ca4e <ProcessMacCommands.constprop.0+0x1e> + 800ca72: a201 add r2, pc, #4 ; (adr r2, 800ca78 <ProcessMacCommands.constprop.0+0x48>) + 800ca74: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 800ca78: 0800cac1 .word 0x0800cac1 + 800ca7c: 0800caf1 .word 0x0800caf1 + 800ca80: 0800cbb1 .word 0x0800cbb1 + 800ca84: 0800cbdd .word 0x0800cbdd + 800ca88: 0800cc6d .word 0x0800cc6d + 800ca8c: 0800cc91 .word 0x0800cc91 + 800ca90: 0800cd05 .word 0x0800cd05 + 800ca94: 0800cd39 .word 0x0800cd39 + 800ca98: 0800cdb7 .word 0x0800cdb7 + 800ca9c: 0800ca4f .word 0x0800ca4f + 800caa0: 0800ca4f .word 0x0800ca4f + 800caa4: 0800ce17 .word 0x0800ce17 + 800caa8: 0800ca4f .word 0x0800ca4f + 800caac: 0800ca4f .word 0x0800ca4f + 800cab0: 0800cecd .word 0x0800cecd + 800cab4: 0800cef3 .word 0x0800cef3 + 800cab8: 0800cf37 .word 0x0800cf37 + 800cabc: 0800cf75 .word 0x0800cf75 + 800cac0: 2005 movs r0, #5 + 800cac2: f002 fa39 bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800cac6: b188 cbz r0, 800caec <ProcessMacCommands.constprop.0+0xbc> + 800cac8: 2105 movs r1, #5 + 800caca: 2000 movs r0, #0 + 800cacc: f002 f9f8 bl 800eec0 <LoRaMacConfirmQueueSetStatus> + 800cad0: 5d2b ldrb r3, [r5, r4] + 800cad2: f887 3450 strb.w r3, [r7, #1104] ; 0x450 + 800cad6: f109 0403 add.w r4, r9, #3 + 800cada: f109 0902 add.w r9, r9, #2 + 800cade: fa5f f989 uxtb.w r9, r9 + 800cae2: b2e4 uxtb r4, r4 + 800cae4: f815 3009 ldrb.w r3, [r5, r9] + 800cae8: f887 3451 strb.w r3, [r7, #1105] ; 0x451 + 800caec: 46a1 mov r9, r4 + 800caee: e7ac b.n 800ca4a <ProcessMacCommands.constprop.0+0x1a> + 800caf0: 2300 movs r3, #0 + 800caf2: f88d 3016 strb.w r3, [sp, #22] + 800caf6: f88d 3017 strb.w r3, [sp, #23] + 800cafa: f88d 301c strb.w r3, [sp, #28] + 800cafe: f88d 3020 strb.w r3, [sp, #32] + 800cb02: 2e00 cmp r6, #0 + 800cb04: d152 bne.n 800cbac <ProcessMacCommands.constprop.0+0x17c> + 800cb06: 4e8b ldr r6, [pc, #556] ; (800cd34 <ProcessMacCommands.constprop.0+0x304>) + 800cb08: 1e63 subs r3, r4, #1 + 800cb0a: 442b add r3, r5 + 800cb0c: 930d str r3, [sp, #52] ; 0x34 + 800cb0e: f896 311a ldrb.w r3, [r6, #282] ; 0x11a + 800cb12: f88d 303a strb.w r3, [sp, #58] ; 0x3a + 800cb16: f896 307c ldrb.w r3, [r6, #124] ; 0x7c + 800cb1a: f88d 3039 strb.w r3, [sp, #57] ; 0x39 + 800cb1e: f896 3039 ldrb.w r3, [r6, #57] ; 0x39 + 800cb22: f88d 303b strb.w r3, [sp, #59] ; 0x3b + 800cb26: f896 3038 ldrb.w r3, [r6, #56] ; 0x38 + 800cb2a: f88d 303c strb.w r3, [sp, #60] ; 0x3c + 800cb2e: f896 3068 ldrb.w r3, [r6, #104] ; 0x68 + 800cb32: f88d 303d strb.w r3, [sp, #61] ; 0x3d + 800cb36: f8d6 3128 ldr.w r3, [r6, #296] ; 0x128 + 800cb3a: 930c str r3, [sp, #48] ; 0x30 + 800cb3c: ab08 add r3, sp, #32 + 800cb3e: 9301 str r3, [sp, #4] + 800cb40: ab07 add r3, sp, #28 + 800cb42: 9300 str r3, [sp, #0] + 800cb44: f896 0048 ldrb.w r0, [r6, #72] ; 0x48 + 800cb48: eba8 0909 sub.w r9, r8, r9 + 800cb4c: f10d 0317 add.w r3, sp, #23 + 800cb50: f10d 0216 add.w r2, sp, #22 + 800cb54: a90c add r1, sp, #48 ; 0x30 + 800cb56: f88d 9038 strb.w r9, [sp, #56] ; 0x38 + 800cb5a: f002 fefb bl 800f954 <RegionLinkAdrReq> + 800cb5e: f88d 0015 strb.w r0, [sp, #21] + 800cb62: f000 0007 and.w r0, r0, #7 + 800cb66: 2807 cmp r0, #7 + 800cb68: d10b bne.n 800cb82 <ProcessMacCommands.constprop.0+0x152> + 800cb6a: f89d 3016 ldrb.w r3, [sp, #22] + 800cb6e: f886 3039 strb.w r3, [r6, #57] ; 0x39 + 800cb72: f89d 3017 ldrb.w r3, [sp, #23] + 800cb76: f886 3038 strb.w r3, [r6, #56] ; 0x38 + 800cb7a: f89d 301c ldrb.w r3, [sp, #28] + 800cb7e: f886 3068 strb.w r3, [r6, #104] ; 0x68 + 800cb82: 2600 movs r6, #0 + 800cb84: f04f 0905 mov.w r9, #5 + 800cb88: e006 b.n 800cb98 <ProcessMacCommands.constprop.0+0x168> + 800cb8a: 2201 movs r2, #1 + 800cb8c: f10d 0115 add.w r1, sp, #21 + 800cb90: 2003 movs r0, #3 + 800cb92: f002 f83b bl 800ec0c <LoRaMacCommandsAddCmd> + 800cb96: 3601 adds r6, #1 + 800cb98: b2f2 uxtb r2, r6 + 800cb9a: f89d 3020 ldrb.w r3, [sp, #32] + 800cb9e: fbb3 f1f9 udiv r1, r3, r9 + 800cba2: 4291 cmp r1, r2 + 800cba4: d8f1 bhi.n 800cb8a <ProcessMacCommands.constprop.0+0x15a> + 800cba6: 3b01 subs r3, #1 + 800cba8: 4423 add r3, r4 + 800cbaa: b2dc uxtb r4, r3 + 800cbac: 2601 movs r6, #1 + 800cbae: e79d b.n 800caec <ProcessMacCommands.constprop.0+0xbc> + 800cbb0: 5d2b ldrb r3, [r5, r4] + 800cbb2: 4960 ldr r1, [pc, #384] ; (800cd34 <ProcessMacCommands.constprop.0+0x304>) + 800cbb4: f003 030f and.w r3, r3, #15 + 800cbb8: 2201 movs r2, #1 + 800cbba: f881 311b strb.w r3, [r1, #283] ; 0x11b + 800cbbe: f109 0902 add.w r9, r9, #2 + 800cbc2: fa02 f303 lsl.w r3, r2, r3 + 800cbc6: f8a1 311e strh.w r3, [r1, #286] ; 0x11e + 800cbca: fa5f f989 uxtb.w r9, r9 + 800cbce: 2200 movs r2, #0 + 800cbd0: a906 add r1, sp, #24 + 800cbd2: 2004 movs r0, #4 + 800cbd4: f002 f81a bl 800ec0c <LoRaMacCommandsAddCmd> + 800cbd8: 464c mov r4, r9 + 800cbda: e787 b.n 800caec <ProcessMacCommands.constprop.0+0xbc> + 800cbdc: 2307 movs r3, #7 + 800cbde: f88d 3015 strb.w r3, [sp, #21] + 800cbe2: 5d2b ldrb r3, [r5, r4] + 800cbe4: f3c3 1202 ubfx r2, r3, #4, #3 + 800cbe8: f003 030f and.w r3, r3, #15 + 800cbec: f88d 3030 strb.w r3, [sp, #48] ; 0x30 + 800cbf0: f109 0303 add.w r3, r9, #3 + 800cbf4: b2db uxtb r3, r3 + 800cbf6: f88d 2031 strb.w r2, [sp, #49] ; 0x31 + 800cbfa: 5cea ldrb r2, [r5, r3] + 800cbfc: f109 0304 add.w r3, r9, #4 + 800cc00: b2db uxtb r3, r3 + 800cc02: f109 0405 add.w r4, r9, #5 + 800cc06: 5ceb ldrb r3, [r5, r3] + 800cc08: f109 0902 add.w r9, r9, #2 + 800cc0c: fa5f f989 uxtb.w r9, r9 + 800cc10: 041b lsls r3, r3, #16 + 800cc12: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800cc16: f815 2009 ldrb.w r2, [r5, r9] + 800cc1a: f8df 9118 ldr.w r9, [pc, #280] ; 800cd34 <ProcessMacCommands.constprop.0+0x304> + 800cc1e: 4313 orrs r3, r2 + 800cc20: 2264 movs r2, #100 ; 0x64 + 800cc22: 4353 muls r3, r2 + 800cc24: f899 0048 ldrb.w r0, [r9, #72] ; 0x48 + 800cc28: 930d str r3, [sp, #52] ; 0x34 + 800cc2a: a90c add r1, sp, #48 ; 0x30 + 800cc2c: f002 fea1 bl 800f972 <RegionRxParamSetupReq> + 800cc30: f000 0307 and.w r3, r0, #7 + 800cc34: 2b07 cmp r3, #7 + 800cc36: b2e4 uxtb r4, r4 + 800cc38: f88d 0015 strb.w r0, [sp, #21] + 800cc3c: d10e bne.n 800cc5c <ProcessMacCommands.constprop.0+0x22c> + 800cc3e: f89d 3030 ldrb.w r3, [sp, #48] ; 0x30 + 800cc42: f889 3070 strb.w r3, [r9, #112] ; 0x70 + 800cc46: f889 3078 strb.w r3, [r9, #120] ; 0x78 + 800cc4a: 9b0d ldr r3, [sp, #52] ; 0x34 + 800cc4c: f8c9 306c str.w r3, [r9, #108] ; 0x6c + 800cc50: f8c9 3074 str.w r3, [r9, #116] ; 0x74 + 800cc54: f89d 3031 ldrb.w r3, [sp, #49] ; 0x31 + 800cc58: f889 3069 strb.w r3, [r9, #105] ; 0x69 + 800cc5c: f88d 0018 strb.w r0, [sp, #24] + 800cc60: 2201 movs r2, #1 + 800cc62: a906 add r1, sp, #24 + 800cc64: 2005 movs r0, #5 + 800cc66: f001 ffd1 bl 800ec0c <LoRaMacCommandsAddCmd> + 800cc6a: e73f b.n 800caec <ProcessMacCommands.constprop.0+0xbc> + 800cc6c: f8d7 3348 ldr.w r3, [r7, #840] ; 0x348 + 800cc70: b163 cbz r3, 800cc8c <ProcessMacCommands.constprop.0+0x25c> + 800cc72: 681b ldr r3, [r3, #0] + 800cc74: b153 cbz r3, 800cc8c <ProcessMacCommands.constprop.0+0x25c> + 800cc76: 4798 blx r3 + 800cc78: f00b 033f and.w r3, fp, #63 ; 0x3f + 800cc7c: f88d 0018 strb.w r0, [sp, #24] + 800cc80: f88d 3019 strb.w r3, [sp, #25] + 800cc84: 2202 movs r2, #2 + 800cc86: a906 add r1, sp, #24 + 800cc88: 2006 movs r0, #6 + 800cc8a: e7ec b.n 800cc66 <ProcessMacCommands.constprop.0+0x236> + 800cc8c: 20ff movs r0, #255 ; 0xff + 800cc8e: e7f3 b.n 800cc78 <ProcessMacCommands.constprop.0+0x248> + 800cc90: 2303 movs r3, #3 + 800cc92: f88d 3015 strb.w r3, [sp, #21] + 800cc96: 5d2b ldrb r3, [r5, r4] + 800cc98: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + 800cc9c: ab0c add r3, sp, #48 ; 0x30 + 800cc9e: 9308 str r3, [sp, #32] + 800cca0: f109 0303 add.w r3, r9, #3 + 800cca4: b2db uxtb r3, r3 + 800cca6: f109 0406 add.w r4, r9, #6 + 800ccaa: 5cea ldrb r2, [r5, r3] + 800ccac: f109 0304 add.w r3, r9, #4 + 800ccb0: b2db uxtb r3, r3 + 800ccb2: a908 add r1, sp, #32 + 800ccb4: 5ceb ldrb r3, [r5, r3] + 800ccb6: 041b lsls r3, r3, #16 + 800ccb8: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800ccbc: f109 0202 add.w r2, r9, #2 + 800ccc0: b2d2 uxtb r2, r2 + 800ccc2: f109 0905 add.w r9, r9, #5 + 800ccc6: 5caa ldrb r2, [r5, r2] + 800ccc8: 4313 orrs r3, r2 + 800ccca: 2264 movs r2, #100 ; 0x64 + 800cccc: 4353 muls r3, r2 + 800ccce: fa5f f989 uxtb.w r9, r9 + 800ccd2: 930c str r3, [sp, #48] ; 0x30 + 800ccd4: 2300 movs r3, #0 + 800ccd6: 930d str r3, [sp, #52] ; 0x34 + 800ccd8: f815 3009 ldrb.w r3, [r5, r9] + 800ccdc: f88d 3038 strb.w r3, [sp, #56] ; 0x38 + 800cce0: 4b14 ldr r3, [pc, #80] ; (800cd34 <ProcessMacCommands.constprop.0+0x304>) + 800cce2: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800cce6: f002 fe4a bl 800f97e <RegionNewChannelReq> + 800ccea: b2c3 uxtb r3, r0 + 800ccec: 2800 cmp r0, #0 + 800ccee: b2e4 uxtb r4, r4 + 800ccf0: f88d 3015 strb.w r3, [sp, #21] + 800ccf4: f6ff aefa blt.w 800caec <ProcessMacCommands.constprop.0+0xbc> + 800ccf8: f88d 3018 strb.w r3, [sp, #24] + 800ccfc: 2201 movs r2, #1 + 800ccfe: a906 add r1, sp, #24 + 800cd00: 2007 movs r0, #7 + 800cd02: e7b0 b.n 800cc66 <ProcessMacCommands.constprop.0+0x236> + 800cd04: 5d2b ldrb r3, [r5, r4] + 800cd06: f003 030f and.w r3, r3, #15 + 800cd0a: 2b01 cmp r3, #1 + 800cd0c: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800cd10: bf38 it cc + 800cd12: 2301 movcc r3, #1 + 800cd14: 4353 muls r3, r2 + 800cd16: 4a07 ldr r2, [pc, #28] ; (800cd34 <ProcessMacCommands.constprop.0+0x304>) + 800cd18: f109 0902 add.w r9, r9, #2 + 800cd1c: 6593 str r3, [r2, #88] ; 0x58 + 800cd1e: f503 737a add.w r3, r3, #1000 ; 0x3e8 + 800cd22: 65d3 str r3, [r2, #92] ; 0x5c + 800cd24: fa5f f989 uxtb.w r9, r9 + 800cd28: 2200 movs r2, #0 + 800cd2a: a906 add r1, sp, #24 + 800cd2c: 2008 movs r0, #8 + 800cd2e: e751 b.n 800cbd4 <ProcessMacCommands.constprop.0+0x1a4> + 800cd30: 20001fd8 .word 0x20001fd8 + 800cd34: 20001864 .word 0x20001864 + 800cd38: 5d2b ldrb r3, [r5, r4] + 800cd3a: 4c9c ldr r4, [pc, #624] ; (800cfac <ProcessMacCommands.constprop.0+0x57c>) + 800cd3c: f3c3 1240 ubfx r2, r3, #5, #1 + 800cd40: f88d 201d strb.w r2, [sp, #29] + 800cd44: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800cd48: f3c3 1200 ubfx r2, r3, #4, #1 + 800cd4c: a907 add r1, sp, #28 + 800cd4e: f003 030f and.w r3, r3, #15 + 800cd52: f88d 201c strb.w r2, [sp, #28] + 800cd56: f88d 301e strb.w r3, [sp, #30] + 800cd5a: f002 fe16 bl 800f98a <RegionTxParamSetupReq> + 800cd5e: f109 0902 add.w r9, r9, #2 + 800cd62: 3001 adds r0, #1 + 800cd64: fa5f f989 uxtb.w r9, r9 + 800cd68: f43f af36 beq.w 800cbd8 <ProcessMacCommands.constprop.0+0x1a8> + 800cd6c: f8bd 301c ldrh.w r3, [sp, #28] + 800cd70: 4a8f ldr r2, [pc, #572] ; (800cfb0 <ProcessMacCommands.constprop.0+0x580>) + 800cd72: f8a4 307c strh.w r3, [r4, #124] ; 0x7c + 800cd76: f89d 301e ldrb.w r3, [sp, #30] + 800cd7a: f89d a01c ldrb.w sl, [sp, #28] + 800cd7e: 5cd0 ldrb r0, [r2, r3] + 800cd80: f7f4 fe48 bl 8001a14 <__aeabi_ui2f> + 800cd84: 2302 movs r3, #2 + 800cd86: f8c4 0080 str.w r0, [r4, #128] ; 0x80 + 800cd8a: a90c add r1, sp, #48 ; 0x30 + 800cd8c: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800cd90: f88d 3030 strb.w r3, [sp, #48] ; 0x30 + 800cd94: f88d a032 strb.w sl, [sp, #50] ; 0x32 + 800cd98: f002 fd96 bl 800f8c8 <RegionGetPhyParam> + 800cd9c: f994 3039 ldrsb.w r3, [r4, #57] ; 0x39 + 800cda0: 9008 str r0, [sp, #32] + 800cda2: b240 sxtb r0, r0 + 800cda4: 4298 cmp r0, r3 + 800cda6: bfb8 it lt + 800cda8: 4618 movlt r0, r3 + 800cdaa: f884 0039 strb.w r0, [r4, #57] ; 0x39 + 800cdae: 2200 movs r2, #0 + 800cdb0: a906 add r1, sp, #24 + 800cdb2: 2009 movs r0, #9 + 800cdb4: e70e b.n 800cbd4 <ProcessMacCommands.constprop.0+0x1a4> + 800cdb6: 2303 movs r3, #3 + 800cdb8: f88d 3015 strb.w r3, [sp, #21] + 800cdbc: 5d2b ldrb r3, [r5, r4] + 800cdbe: f88d 3030 strb.w r3, [sp, #48] ; 0x30 + 800cdc2: f109 0303 add.w r3, r9, #3 + 800cdc6: b2db uxtb r3, r3 + 800cdc8: f109 0405 add.w r4, r9, #5 + 800cdcc: 5cea ldrb r2, [r5, r3] + 800cdce: f109 0304 add.w r3, r9, #4 + 800cdd2: b2db uxtb r3, r3 + 800cdd4: f109 0902 add.w r9, r9, #2 + 800cdd8: 5ceb ldrb r3, [r5, r3] + 800cdda: fa5f f989 uxtb.w r9, r9 + 800cdde: 041b lsls r3, r3, #16 + 800cde0: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800cde4: f815 2009 ldrb.w r2, [r5, r9] + 800cde8: 4313 orrs r3, r2 + 800cdea: 2264 movs r2, #100 ; 0x64 + 800cdec: 4353 muls r3, r2 + 800cdee: 930d str r3, [sp, #52] ; 0x34 + 800cdf0: 4b6e ldr r3, [pc, #440] ; (800cfac <ProcessMacCommands.constprop.0+0x57c>) + 800cdf2: a90c add r1, sp, #48 ; 0x30 + 800cdf4: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800cdf8: f002 fdcd bl 800f996 <RegionDlChannelReq> + 800cdfc: b2c3 uxtb r3, r0 + 800cdfe: 2800 cmp r0, #0 + 800ce00: b2e4 uxtb r4, r4 + 800ce02: f88d 3015 strb.w r3, [sp, #21] + 800ce06: f6ff ae71 blt.w 800caec <ProcessMacCommands.constprop.0+0xbc> + 800ce0a: f88d 3018 strb.w r3, [sp, #24] + 800ce0e: 2201 movs r2, #1 + 800ce10: a906 add r1, sp, #24 + 800ce12: 200a movs r0, #10 + 800ce14: e727 b.n 800cc66 <ProcessMacCommands.constprop.0+0x236> + 800ce16: 200a movs r0, #10 + 800ce18: f002 f88e bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800ce1c: 2800 cmp r0, #0 + 800ce1e: f43f ae65 beq.w 800caec <ProcessMacCommands.constprop.0+0xbc> + 800ce22: 210a movs r1, #10 + 800ce24: 2000 movs r0, #0 + 800ce26: f002 f84b bl 800eec0 <LoRaMacConfirmQueueSetStatus> + 800ce2a: 2300 movs r3, #0 + 800ce2c: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 + 800ce30: f109 0302 add.w r3, r9, #2 + 800ce34: b2db uxtb r3, r3 + 800ce36: f44f 717a mov.w r1, #1000 ; 0x3e8 + 800ce3a: 5cea ldrb r2, [r5, r3] + 800ce3c: f109 0303 add.w r3, r9, #3 + 800ce40: b2db uxtb r3, r3 + 800ce42: f10d 0a30 add.w sl, sp, #48 ; 0x30 + 800ce46: 5ceb ldrb r3, [r5, r3] + 800ce48: 041b lsls r3, r3, #16 + 800ce4a: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800ce4e: 5d2a ldrb r2, [r5, r4] + 800ce50: 4313 orrs r3, r2 + 800ce52: f109 0204 add.w r2, r9, #4 + 800ce56: b2d2 uxtb r2, r2 + 800ce58: f109 0406 add.w r4, r9, #6 + 800ce5c: f109 0905 add.w r9, r9, #5 + 800ce60: 5caa ldrb r2, [r5, r2] + 800ce62: fa5f f989 uxtb.w r9, r9 + 800ce66: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800ce6a: f815 2009 ldrb.w r2, [r5, r9] + 800ce6e: 9303 str r3, [sp, #12] + 800ce70: 434a muls r2, r1 + 800ce72: 1212 asrs r2, r2, #8 + 800ce74: 4650 mov r0, sl + 800ce76: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 + 800ce7a: f006 fee7 bl 8013c4c <SysTimeGet> + 800ce7e: 9b03 ldr r3, [sp, #12] + 800ce80: f103 5396 add.w r3, r3, #314572800 ; 0x12c00000 + 800ce84: f503 13a9 add.w r3, r3, #1384448 ; 0x152000 + 800ce88: f503 53ec add.w r3, r3, #7552 ; 0x1d80 + 800ce8c: 9308 str r3, [sp, #32] + 800ce8e: f8d7 333c ldr.w r3, [r7, #828] ; 0x33c + 800ce92: 9300 str r3, [sp, #0] + 800ce94: f10d 0920 add.w r9, sp, #32 + 800ce98: e899 0006 ldmia.w r9, {r1, r2} + 800ce9c: f8d7 3338 ldr.w r3, [r7, #824] ; 0x338 + 800cea0: a80a add r0, sp, #40 ; 0x28 + 800cea2: f006 fe90 bl 8013bc6 <SysTimeSub> + 800cea6: 9b0b ldr r3, [sp, #44] ; 0x2c + 800cea8: 9300 str r3, [sp, #0] + 800ceaa: e89a 0006 ldmia.w sl, {r1, r2} + 800ceae: 9b0a ldr r3, [sp, #40] ; 0x28 + 800ceb0: 4648 mov r0, r9 + 800ceb2: f006 fe6d bl 8013b90 <SysTimeAdd> + 800ceb6: e899 0003 ldmia.w r9, {r0, r1} + 800ceba: f006 fe9f bl 8013bfc <SysTimeSet> + 800cebe: f001 fe8f bl 800ebe0 <LoRaMacClassBDeviceTimeAns> + 800cec2: 2301 movs r3, #1 + 800cec4: b2e4 uxtb r4, r4 + 800cec6: f887 3430 strb.w r3, [r7, #1072] ; 0x430 + 800ceca: e60f b.n 800caec <ProcessMacCommands.constprop.0+0xbc> + 800cecc: 200d movs r0, #13 + 800cece: f002 f833 bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800ced2: 2800 cmp r0, #0 + 800ced4: f43f ae0a beq.w 800caec <ProcessMacCommands.constprop.0+0xbc> + 800ced8: 210d movs r1, #13 + 800ceda: 2000 movs r0, #0 + 800cedc: f001 fff0 bl 800eec0 <LoRaMacConfirmQueueSetStatus> + 800cee0: f897 3480 ldrb.w r3, [r7, #1152] ; 0x480 + 800cee4: 3b04 subs r3, #4 + 800cee6: 2b01 cmp r3, #1 + 800cee8: f67f ae00 bls.w 800caec <ProcessMacCommands.constprop.0+0xbc> + 800ceec: f001 fe74 bl 800ebd8 <LoRaMacClassBPingSlotInfoAns> + 800cef0: e5fc b.n 800caec <ProcessMacCommands.constprop.0+0xbc> + 800cef2: f109 0302 add.w r3, r9, #2 + 800cef6: b2db uxtb r3, r3 + 800cef8: 5d2a ldrb r2, [r5, r4] + 800cefa: 5ce9 ldrb r1, [r5, r3] + 800cefc: f109 0303 add.w r3, r9, #3 + 800cf00: b2db uxtb r3, r3 + 800cf02: f109 0405 add.w r4, r9, #5 + 800cf06: 5ceb ldrb r3, [r5, r3] + 800cf08: f109 0904 add.w r9, r9, #4 + 800cf0c: fa5f f989 uxtb.w r9, r9 + 800cf10: 041b lsls r3, r3, #16 + 800cf12: f815 0009 ldrb.w r0, [r5, r9] + 800cf16: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800cf1a: 4313 orrs r3, r2 + 800cf1c: 2164 movs r1, #100 ; 0x64 + 800cf1e: 4359 muls r1, r3 + 800cf20: f000 000f and.w r0, r0, #15 + 800cf24: f001 fe59 bl 800ebda <LoRaMacClassBPingSlotChannelReq> + 800cf28: b2e4 uxtb r4, r4 + 800cf2a: f88d 0018 strb.w r0, [sp, #24] + 800cf2e: 2201 movs r2, #1 + 800cf30: a906 add r1, sp, #24 + 800cf32: 2011 movs r0, #17 + 800cf34: e697 b.n 800cc66 <ProcessMacCommands.constprop.0+0x236> + 800cf36: 200e movs r0, #14 + 800cf38: f001 fffe bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800cf3c: 2800 cmp r0, #0 + 800cf3e: f43f add5 beq.w 800caec <ProcessMacCommands.constprop.0+0xbc> + 800cf42: 210e movs r1, #14 + 800cf44: 2000 movs r0, #0 + 800cf46: f001 ffbb bl 800eec0 <LoRaMacConfirmQueueSetStatus> + 800cf4a: f109 0302 add.w r3, r9, #2 + 800cf4e: b2db uxtb r3, r3 + 800cf50: 4a18 ldr r2, [pc, #96] ; (800cfb4 <ProcessMacCommands.constprop.0+0x584>) + 800cf52: 5ce8 ldrb r0, [r5, r3] + 800cf54: 5d2b ldrb r3, [r5, r4] + 800cf56: 6812 ldr r2, [r2, #0] + 800cf58: f109 0404 add.w r4, r9, #4 + 800cf5c: f109 0903 add.w r9, r9, #3 + 800cf60: fa5f f989 uxtb.w r9, r9 + 800cf64: ea43 2000 orr.w r0, r3, r0, lsl #8 + 800cf68: f815 1009 ldrb.w r1, [r5, r9] + 800cf6c: b2e4 uxtb r4, r4 + 800cf6e: f001 fe36 bl 800ebde <LoRaMacClassBBeaconTimingAns> + 800cf72: e5bb b.n 800caec <ProcessMacCommands.constprop.0+0xbc> + 800cf74: 5d2a ldrb r2, [r5, r4] + 800cf76: f109 0302 add.w r3, r9, #2 + 800cf7a: f109 0404 add.w r4, r9, #4 + 800cf7e: f109 0903 add.w r9, r9, #3 + 800cf82: b2db uxtb r3, r3 + 800cf84: fa5f f989 uxtb.w r9, r9 + 800cf88: 5ce9 ldrb r1, [r5, r3] + 800cf8a: f815 3009 ldrb.w r3, [r5, r9] + 800cf8e: 041b lsls r3, r3, #16 + 800cf90: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800cf94: 4313 orrs r3, r2 + 800cf96: 2064 movs r0, #100 ; 0x64 + 800cf98: 4358 muls r0, r3 + 800cf9a: f001 fe22 bl 800ebe2 <LoRaMacClassBBeaconFreqReq> + 800cf9e: b2e4 uxtb r4, r4 + 800cfa0: f88d 0018 strb.w r0, [sp, #24] + 800cfa4: 2201 movs r2, #1 + 800cfa6: a906 add r1, sp, #24 + 800cfa8: 2013 movs r0, #19 + 800cfaa: e65c b.n 800cc66 <ProcessMacCommands.constprop.0+0x236> + 800cfac: 20001864 .word 0x20001864 + 800cfb0: 080150ff .word 0x080150ff + 800cfb4: 200024e0 .word 0x200024e0 + +0800cfb8 <StopRetransmission.isra.0>: + 800cfb8: 4b0e ldr r3, [pc, #56] ; (800cff4 <StopRetransmission.isra.0+0x3c>) + 800cfba: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 800cfbe: 0792 lsls r2, r2, #30 + 800cfc0: d503 bpl.n 800cfca <StopRetransmission.isra.0+0x12> + 800cfc2: f893 247f ldrb.w r2, [r3, #1151] ; 0x47f + 800cfc6: 2a01 cmp r2, #1 + 800cfc8: d906 bls.n 800cfd8 <StopRetransmission.isra.0+0x20> + 800cfca: 4a0b ldr r2, [pc, #44] ; (800cff8 <StopRetransmission.isra.0+0x40>) + 800cfcc: f892 111a ldrb.w r1, [r2, #282] ; 0x11a + 800cfd0: b111 cbz r1, 800cfd8 <StopRetransmission.isra.0+0x20> + 800cfd2: 6a91 ldr r1, [r2, #40] ; 0x28 + 800cfd4: 3101 adds r1, #1 + 800cfd6: 6291 str r1, [r2, #40] ; 0x28 + 800cfd8: 2200 movs r2, #0 + 800cfda: f883 240c strb.w r2, [r3, #1036] ; 0x40c + 800cfde: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + 800cfe2: f883 240f strb.w r2, [r3, #1039] ; 0x40f + 800cfe6: f8d3 2340 ldr.w r2, [r3, #832] ; 0x340 + 800cfea: f022 0202 bic.w r2, r2, #2 + 800cfee: f8c3 2340 str.w r2, [r3, #832] ; 0x340 + 800cff2: 4770 bx lr + 800cff4: 20001fd8 .word 0x20001fd8 + 800cff8: 20001864 .word 0x20001864 + +0800cffc <OnTxDelayedTimerEvent>: + 800cffc: b510 push {r4, lr} + 800cffe: 4c12 ldr r4, [pc, #72] ; (800d048 <OnTxDelayedTimerEvent+0x4c>) + 800d000: f504 705a add.w r0, r4, #872 ; 0x368 + 800d004: f006 ff12 bl 8013e2c <UTIL_TIMER_Stop> + 800d008: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d00c: 2001 movs r0, #1 + 800d00e: f023 0320 bic.w r3, r3, #32 + 800d012: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800d016: f7ff f97b bl 800c310 <ScheduleTx> + 800d01a: b198 cbz r0, 800d044 <OnTxDelayedTimerEvent+0x48> + 800d01c: 280b cmp r0, #11 + 800d01e: d011 beq.n 800d044 <OnTxDelayedTimerEvent+0x48> + 800d020: 4b0a ldr r3, [pc, #40] ; (800d04c <OnTxDelayedTimerEvent+0x50>) + 800d022: f893 3039 ldrb.w r3, [r3, #57] ; 0x39 + 800d026: f884 3436 strb.w r3, [r4, #1078] ; 0x436 + 800d02a: 2009 movs r0, #9 + 800d02c: f894 340e ldrb.w r3, [r4, #1038] ; 0x40e + 800d030: f884 3439 strb.w r3, [r4, #1081] ; 0x439 + 800d034: f884 0435 strb.w r0, [r4, #1077] ; 0x435 + 800d038: f001 ff64 bl 800ef04 <LoRaMacConfirmQueueSetStatusCmn> + 800d03c: e8bd 4010 ldmia.w sp!, {r4, lr} + 800d040: f7ff bfba b.w 800cfb8 <StopRetransmission.isra.0> + 800d044: bd10 pop {r4, pc} + 800d046: bf00 nop + 800d048: 20001fd8 .word 0x20001fd8 + 800d04c: 20001864 .word 0x20001864 + +0800d050 <LoRaMacIsBusy>: + 800d050: 4b07 ldr r3, [pc, #28] ; (800d070 <LoRaMacIsBusy+0x20>) + 800d052: f8d3 2340 ldr.w r2, [r3, #832] ; 0x340 + 800d056: 2a01 cmp r2, #1 + 800d058: d006 beq.n 800d068 <LoRaMacIsBusy+0x18> + 800d05a: b93a cbnz r2, 800d06c <LoRaMacIsBusy+0x1c> + 800d05c: f893 0482 ldrb.w r0, [r3, #1154] ; 0x482 + 800d060: 3801 subs r0, #1 + 800d062: bf18 it ne + 800d064: 2001 movne r0, #1 + 800d066: 4770 bx lr + 800d068: 2000 movs r0, #0 + 800d06a: 4770 bx lr + 800d06c: 2001 movs r0, #1 + 800d06e: 4770 bx lr + 800d070: 20001fd8 .word 0x20001fd8 + +0800d074 <LoRaMacIsStopped>: + 800d074: 4b03 ldr r3, [pc, #12] ; (800d084 <LoRaMacIsStopped+0x10>) + 800d076: f8d3 0340 ldr.w r0, [r3, #832] ; 0x340 + 800d07a: 1e43 subs r3, r0, #1 + 800d07c: 4258 negs r0, r3 + 800d07e: 4158 adcs r0, r3 + 800d080: 4770 bx lr + 800d082: bf00 nop + 800d084: 20001fd8 .word 0x20001fd8 + +0800d088 <LoRaMacProcess>: + 800d088: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800d08c: b0a5 sub sp, #148 ; 0x94 + 800d08e: f3ef 8110 mrs r1, PRIMASK + 800d092: b672 cpsid i + 800d094: 4ac0 ldr r2, [pc, #768] ; (800d398 <LoRaMacProcess+0x310>) + 800d096: 2000 movs r0, #0 + 800d098: 6813 ldr r3, [r2, #0] + 800d09a: 6010 str r0, [r2, #0] + 800d09c: f381 8810 msr PRIMASK, r1 + 800d0a0: 4cbe ldr r4, [pc, #760] ; (800d39c <LoRaMacProcess+0x314>) + 800d0a2: 2b00 cmp r3, #0 + 800d0a4: f000 80da beq.w 800d25c <LoRaMacProcess+0x1d4> + 800d0a8: 06d9 lsls r1, r3, #27 + 800d0aa: fa5f fb83 uxtb.w fp, r3 + 800d0ae: d56b bpl.n 800d188 <LoRaMacProcess+0x100> + 800d0b0: 4dbb ldr r5, [pc, #748] ; (800d3a0 <LoRaMacProcess+0x318>) + 800d0b2: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800d0b6: 2b02 cmp r3, #2 + 800d0b8: d002 beq.n 800d0c0 <LoRaMacProcess+0x38> + 800d0ba: 4bba ldr r3, [pc, #744] ; (800d3a4 <LoRaMacProcess+0x31c>) + 800d0bc: 6adb ldr r3, [r3, #44] ; 0x2c + 800d0be: 4798 blx r3 + 800d0c0: f3ef 8810 mrs r8, PRIMASK + 800d0c4: b672 cpsid i + 800d0c6: 4fb8 ldr r7, [pc, #736] ; (800d3a8 <LoRaMacProcess+0x320>) + 800d0c8: f006 fe6c bl 8013da4 <UTIL_TIMER_GetCurrentTime> + 800d0cc: 683e ldr r6, [r7, #0] + 800d0ce: f8d4 13b0 ldr.w r1, [r4, #944] ; 0x3b0 + 800d0d2: 1a36 subs r6, r6, r0 + 800d0d4: 4431 add r1, r6 + 800d0d6: 48b5 ldr r0, [pc, #724] ; (800d3ac <LoRaMacProcess+0x324>) + 800d0d8: f006 ff30 bl 8013f3c <UTIL_TIMER_SetPeriod> + 800d0dc: 48b3 ldr r0, [pc, #716] ; (800d3ac <LoRaMacProcess+0x324>) + 800d0de: f006 fef3 bl 8013ec8 <UTIL_TIMER_Start> + 800d0e2: f8d4 13b4 ldr.w r1, [r4, #948] ; 0x3b4 + 800d0e6: 48b2 ldr r0, [pc, #712] ; (800d3b0 <LoRaMacProcess+0x328>) + 800d0e8: 4431 add r1, r6 + 800d0ea: f006 ff27 bl 8013f3c <UTIL_TIMER_SetPeriod> + 800d0ee: 48b0 ldr r0, [pc, #704] ; (800d3b0 <LoRaMacProcess+0x328>) + 800d0f0: f006 feea bl 8013ec8 <UTIL_TIMER_Start> + 800d0f4: f388 8810 msr PRIMASK, r8 + 800d0f8: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800d0fc: 2b02 cmp r3, #2 + 800d0fe: d002 beq.n 800d106 <LoRaMacProcess+0x7e> + 800d100: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800d104: b18b cbz r3, 800d12a <LoRaMacProcess+0xa2> + 800d106: 2316 movs r3, #22 + 800d108: a90e add r1, sp, #56 ; 0x38 + 800d10a: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d10e: f88d 3038 strb.w r3, [sp, #56] ; 0x38 + 800d112: f002 fbd9 bl 800f8c8 <RegionGetPhyParam> + 800d116: f8d4 13b4 ldr.w r1, [r4, #948] ; 0x3b4 + 800d11a: 900c str r0, [sp, #48] ; 0x30 + 800d11c: 4401 add r1, r0 + 800d11e: 48a5 ldr r0, [pc, #660] ; (800d3b4 <LoRaMacProcess+0x32c>) + 800d120: f006 ff0c bl 8013f3c <UTIL_TIMER_SetPeriod> + 800d124: 48a3 ldr r0, [pc, #652] ; (800d3b4 <LoRaMacProcess+0x32c>) + 800d126: f006 fecf bl 8013ec8 <UTIL_TIMER_Start> + 800d12a: 683b ldr r3, [r7, #0] + 800d12c: f894 2411 ldrb.w r2, [r4, #1041] ; 0x411 + 800d130: 62eb str r3, [r5, #44] ; 0x2c + 800d132: af0a add r7, sp, #40 ; 0x28 + 800d134: 4638 mov r0, r7 + 800d136: f88d 2060 strb.w r2, [sp, #96] ; 0x60 + 800d13a: 9319 str r3, [sp, #100] ; 0x64 + 800d13c: f006 fdac bl 8013c98 <SysTimeGetMcuTime> + 800d140: f8d5 3124 ldr.w r3, [r5, #292] ; 0x124 + 800d144: 9300 str r3, [sp, #0] + 800d146: ae04 add r6, sp, #16 + 800d148: e897 0006 ldmia.w r7, {r1, r2} + 800d14c: f8d5 3120 ldr.w r3, [r5, #288] ; 0x120 + 800d150: 4630 mov r0, r6 + 800d152: f006 fd38 bl 8013bc6 <SysTimeSub> + 800d156: e896 0003 ldmia.w r6, {r0, r1} + 800d15a: ab1b add r3, sp, #108 ; 0x6c + 800d15c: e883 0003 stmia.w r3, {r0, r1} + 800d160: f8d4 3414 ldr.w r3, [r4, #1044] ; 0x414 + 800d164: 931a str r3, [sp, #104] ; 0x68 + 800d166: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800d16a: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d16e: 3b00 subs r3, #0 + 800d170: bf18 it ne + 800d172: 2301 movne r3, #1 + 800d174: a918 add r1, sp, #96 ; 0x60 + 800d176: f88d 3061 strb.w r3, [sp, #97] ; 0x61 + 800d17a: f002 fbae bl 800f8da <RegionSetBandTxDone> + 800d17e: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800d182: b90b cbnz r3, 800d188 <LoRaMacProcess+0x100> + 800d184: f884 3435 strb.w r3, [r4, #1077] ; 0x435 + 800d188: f01b 0f08 tst.w fp, #8 + 800d18c: d03a beq.n 800d204 <LoRaMacProcess+0x17c> + 800d18e: 4b8a ldr r3, [pc, #552] ; (800d3b8 <LoRaMacProcess+0x330>) + 800d190: 4d83 ldr r5, [pc, #524] ; (800d3a0 <LoRaMacProcess+0x318>) + 800d192: 685f ldr r7, [r3, #4] + 800d194: 891e ldrh r6, [r3, #8] + 800d196: f9b3 800a ldrsh.w r8, [r3, #10] + 800d19a: f993 900c ldrsb.w r9, [r3, #12] + 800d19e: f8d5 20e4 ldr.w r2, [r5, #228] ; 0xe4 + 800d1a2: 9203 str r2, [sp, #12] + 800d1a4: 2300 movs r3, #0 + 800d1a6: 9307 str r3, [sp, #28] + 800d1a8: f884 3438 strb.w r3, [r4, #1080] ; 0x438 + 800d1ac: f8a4 341a strh.w r3, [r4, #1050] ; 0x41a + 800d1b0: f884 341d strb.w r3, [r4, #1053] ; 0x41d + 800d1b4: f8c4 3420 str.w r3, [r4, #1056] ; 0x420 + 800d1b8: f8a4 3424 strh.w r3, [r4, #1060] ; 0x424 + 800d1bc: f884 3426 strb.w r3, [r4, #1062] ; 0x426 + 800d1c0: f8c4 3428 str.w r3, [r4, #1064] ; 0x428 + 800d1c4: f884 3418 strb.w r3, [r4, #1048] ; 0x418 + 800d1c8: f8c4 342c str.w r3, [r4, #1068] ; 0x42c + 800d1cc: f884 3430 strb.w r3, [r4, #1072] ; 0x430 + 800d1d0: 4b74 ldr r3, [pc, #464] ; (800d3a4 <LoRaMacProcess+0x31c>) + 800d1d2: f894 2480 ldrb.w r2, [r4, #1152] ; 0x480 + 800d1d6: 6adb ldr r3, [r3, #44] ; 0x2c + 800d1d8: f884 247f strb.w r2, [r4, #1151] ; 0x47f + 800d1dc: f8a4 847c strh.w r8, [r4, #1148] ; 0x47c + 800d1e0: f884 947e strb.w r9, [r4, #1150] ; 0x47e + 800d1e4: 4798 blx r3 + 800d1e6: 4872 ldr r0, [pc, #456] ; (800d3b0 <LoRaMacProcess+0x328>) + 800d1e8: f006 fe20 bl 8013e2c <UTIL_TIMER_Stop> + 800d1ec: 4631 mov r1, r6 + 800d1ee: 4638 mov r0, r7 + 800d1f0: f001 fcdf bl 800ebb2 <LoRaMacClassBRxBeacon> + 800d1f4: 4682 mov sl, r0 + 800d1f6: 2800 cmp r0, #0 + 800d1f8: f000 80e6 beq.w 800d3c8 <LoRaMacProcess+0x340> + 800d1fc: f8a4 8472 strh.w r8, [r4, #1138] ; 0x472 + 800d200: f884 9474 strb.w r9, [r4, #1140] ; 0x474 + 800d204: f01b 0f04 tst.w fp, #4 + 800d208: d01a beq.n 800d240 <LoRaMacProcess+0x1b8> + 800d20a: 4b65 ldr r3, [pc, #404] ; (800d3a0 <LoRaMacProcess+0x318>) + 800d20c: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800d210: 2b02 cmp r3, #2 + 800d212: d002 beq.n 800d21a <LoRaMacProcess+0x192> + 800d214: 4b63 ldr r3, [pc, #396] ; (800d3a4 <LoRaMacProcess+0x31c>) + 800d216: 6adb ldr r3, [r3, #44] ; 0x2c + 800d218: 4798 blx r3 + 800d21a: 2002 movs r0, #2 + 800d21c: f7fe ff2c bl 800c078 <UpdateRxSlotIdleState> + 800d220: f884 0435 strb.w r0, [r4, #1077] ; 0x435 + 800d224: f001 fe6e bl 800ef04 <LoRaMacConfirmQueueSetStatusCmn> + 800d228: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800d22c: b113 cbz r3, 800d234 <LoRaMacProcess+0x1ac> + 800d22e: 2301 movs r3, #1 + 800d230: f884 340f strb.w r3, [r4, #1039] ; 0x40f + 800d234: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d238: f043 0310 orr.w r3, r3, #16 + 800d23c: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d240: f01b 0f02 tst.w fp, #2 + 800d244: d003 beq.n 800d24e <LoRaMacProcess+0x1c6> + 800d246: 2106 movs r1, #6 + 800d248: 2005 movs r0, #5 + 800d24a: f7fe ff8b bl 800c164 <HandleRadioRxErrorTimeout> + 800d24e: f01b 0f01 tst.w fp, #1 + 800d252: d003 beq.n 800d25c <LoRaMacProcess+0x1d4> + 800d254: 2104 movs r1, #4 + 800d256: 2003 movs r0, #3 + 800d258: f7fe ff84 bl 800c164 <HandleRadioRxErrorTimeout> + 800d25c: f001 fcc6 bl 800ebec <LoRaMacClassBProcess> + 800d260: f894 2481 ldrb.w r2, [r4, #1153] ; 0x481 + 800d264: 06d0 lsls r0, r2, #27 + 800d266: d55f bpl.n 800d328 <LoRaMacProcess+0x2a0> + 800d268: 2300 movs r3, #0 + 800d26a: f884 3482 strb.w r3, [r4, #1154] ; 0x482 + 800d26e: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d272: 0619 lsls r1, r3, #24 + 800d274: bf44 itt mi + 800d276: f023 0382 bicmi.w r3, r3, #130 ; 0x82 + 800d27a: f8c4 3340 strmi.w r3, [r4, #832] ; 0x340 + 800d27e: f012 0f05 tst.w r2, #5 + 800d282: f000 82c5 beq.w 800d810 <LoRaMacProcess+0x788> + 800d286: 200c movs r0, #12 + 800d288: f001 fe56 bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800d28c: 2800 cmp r0, #0 + 800d28e: f000 82bf beq.w 800d810 <LoRaMacProcess+0x788> + 800d292: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d296: 07df lsls r7, r3, #31 + 800d298: f100 82ba bmi.w 800d810 <LoRaMacProcess+0x788> + 800d29c: 075e lsls r6, r3, #29 + 800d29e: f140 82cb bpl.w 800d838 <LoRaMacProcess+0x7b0> + 800d2a2: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d2a6: f023 0302 bic.w r3, r3, #2 + 800d2aa: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800d2ae: f8d4 2340 ldr.w r2, [r4, #832] ; 0x340 + 800d2b2: bb82 cbnz r2, 800d316 <LoRaMacProcess+0x28e> + 800d2b4: f894 5481 ldrb.w r5, [r4, #1153] ; 0x481 + 800d2b8: f015 0101 ands.w r1, r5, #1 + 800d2bc: bf1e ittt ne + 800d2be: 462b movne r3, r5 + 800d2c0: f362 0300 bfine r3, r2, #0, #1 + 800d2c4: f884 3481 strbne.w r3, [r4, #1153] ; 0x481 + 800d2c8: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d2cc: 075e lsls r6, r3, #29 + 800d2ce: bf44 itt mi + 800d2d0: f36f 0382 bfcmi r3, #2, #1 + 800d2d4: f884 3481 strbmi.w r3, [r4, #1153] ; 0x481 + 800d2d8: 2301 movs r3, #1 + 800d2da: f884 3482 strb.w r3, [r4, #1154] ; 0x482 + 800d2de: b121 cbz r1, 800d2ea <LoRaMacProcess+0x262> + 800d2e0: f8d4 3344 ldr.w r3, [r4, #836] ; 0x344 + 800d2e4: 4835 ldr r0, [pc, #212] ; (800d3bc <LoRaMacProcess+0x334>) + 800d2e6: 681b ldr r3, [r3, #0] + 800d2e8: 4798 blx r3 + 800d2ea: 076d lsls r5, r5, #29 + 800d2ec: d50b bpl.n 800d306 <LoRaMacProcess+0x27e> + 800d2ee: 4834 ldr r0, [pc, #208] ; (800d3c0 <LoRaMacProcess+0x338>) + 800d2f0: f001 fe2e bl 800ef50 <LoRaMacConfirmQueueHandleCb> + 800d2f4: f001 fe5c bl 800efb0 <LoRaMacConfirmQueueGetCnt> + 800d2f8: b128 cbz r0, 800d306 <LoRaMacProcess+0x27e> + 800d2fa: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d2fe: f043 0304 orr.w r3, r3, #4 + 800d302: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d306: f001 fc60 bl 800ebca <LoRaMacClassBResumeBeaconing> + 800d30a: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d30e: f36f 1304 bfc r3, #4, #1 + 800d312: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d316: 2301 movs r3, #1 + 800d318: f884 3482 strb.w r3, [r4, #1154] ; 0x482 + 800d31c: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d320: f043 0320 orr.w r3, r3, #32 + 800d324: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d328: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d32c: 0718 lsls r0, r3, #28 + 800d32e: d50a bpl.n 800d346 <LoRaMacProcess+0x2be> + 800d330: f36f 03c3 bfc r3, #3, #1 + 800d334: 4923 ldr r1, [pc, #140] ; (800d3c4 <LoRaMacProcess+0x33c>) + 800d336: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d33a: f8d4 3344 ldr.w r3, [r4, #836] ; 0x344 + 800d33e: f1a1 0020 sub.w r0, r1, #32 + 800d342: 68db ldr r3, [r3, #12] + 800d344: 4798 blx r3 + 800d346: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d34a: 0799 lsls r1, r3, #30 + 800d34c: d50a bpl.n 800d364 <LoRaMacProcess+0x2dc> + 800d34e: f36f 0341 bfc r3, #1, #1 + 800d352: 491c ldr r1, [pc, #112] ; (800d3c4 <LoRaMacProcess+0x33c>) + 800d354: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d358: f8d4 3344 ldr.w r3, [r4, #836] ; 0x344 + 800d35c: f1a1 0064 sub.w r0, r1, #100 ; 0x64 + 800d360: 685b ldr r3, [r3, #4] + 800d362: 4798 blx r3 + 800d364: f894 3480 ldrb.w r3, [r4, #1152] ; 0x480 + 800d368: 2b02 cmp r3, #2 + 800d36a: d101 bne.n 800d370 <LoRaMacProcess+0x2e8> + 800d36c: f7ff f946 bl 800c5fc <OpenContinuousRxCWindow> + 800d370: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d374: 069a lsls r2, r3, #26 + 800d376: f140 82ec bpl.w 800d952 <LoRaMacProcess+0x8ca> + 800d37a: f36f 1345 bfc r3, #5, #1 + 800d37e: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d382: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d386: 2b00 cmp r3, #0 + 800d388: f040 82e3 bne.w 800d952 <LoRaMacProcess+0x8ca> + 800d38c: b025 add sp, #148 ; 0x94 + 800d38e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800d392: f7ff bad3 b.w 800c93c <LoRaMacHandleNvm.part.0.constprop.0> + 800d396: bf00 nop + 800d398: 20001fd4 .word 0x20001fd4 + 800d39c: 20001fd8 .word 0x20001fd8 + 800d3a0: 20001864 .word 0x20001864 + 800d3a4: 08015784 .word 0x08015784 + 800d3a8: 200024f0 .word 0x200024f0 + 800d3ac: 20002358 .word 0x20002358 + 800d3b0: 20002370 .word 0x20002370 + 800d3b4: 200023cc .word 0x200023cc + 800d3b8: 200024e0 .word 0x200024e0 + 800d3bc: 2000240c .word 0x2000240c + 800d3c0: 20002420 .word 0x20002420 + 800d3c4: 20002454 .word 0x20002454 + 800d3c8: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800d3cc: 2b01 cmp r3, #1 + 800d3ce: d10c bne.n 800d3ea <LoRaMacProcess+0x362> + 800d3d0: f001 fbf3 bl 800ebba <LoRaMacClassBIsPingExpected> + 800d3d4: 4680 mov r8, r0 + 800d3d6: b168 cbz r0, 800d3f4 <LoRaMacProcess+0x36c> + 800d3d8: 4650 mov r0, sl + 800d3da: f001 fbe3 bl 800eba4 <LoRaMacClassBSetPingSlotState> + 800d3de: 4650 mov r0, sl + 800d3e0: f001 fbe5 bl 800ebae <LoRaMacClassBPingSlotTimerEvent> + 800d3e4: 2304 movs r3, #4 + 800d3e6: f884 347f strb.w r3, [r4, #1151] ; 0x47f + 800d3ea: b97e cbnz r6, 800d40c <LoRaMacProcess+0x384> + 800d3ec: 2301 movs r3, #1 + 800d3ee: f884 3419 strb.w r3, [r4, #1049] ; 0x419 + 800d3f2: e14a b.n 800d68a <LoRaMacProcess+0x602> + 800d3f4: f001 fbe3 bl 800ebbe <LoRaMacClassBIsMulticastExpected> + 800d3f8: 2800 cmp r0, #0 + 800d3fa: d0f6 beq.n 800d3ea <LoRaMacProcess+0x362> + 800d3fc: 4640 mov r0, r8 + 800d3fe: f001 fbd2 bl 800eba6 <LoRaMacClassBSetMulticastSlotState> + 800d402: 4640 mov r0, r8 + 800d404: f001 fbd4 bl 800ebb0 <LoRaMacClassBMulticastSlotTimerEvent> + 800d408: 2305 movs r3, #5 + 800d40a: e7ec b.n 800d3e6 <LoRaMacProcess+0x35e> + 800d40c: 783b ldrb r3, [r7, #0] + 800d40e: 9302 str r3, [sp, #8] + 800d410: 095b lsrs r3, r3, #5 + 800d412: 3b01 subs r3, #1 + 800d414: 2b06 cmp r3, #6 + 800d416: f200 81ed bhi.w 800d7f4 <LoRaMacProcess+0x76c> + 800d41a: e8df f013 tbh [pc, r3, lsl #1] + 800d41e: 0007 .short 0x0007 + 800d420: 009201eb .word 0x009201eb + 800d424: 008f01eb .word 0x008f01eb + 800d428: 01db01eb .word 0x01db01eb + 800d42c: 2e10 cmp r6, #16 + 800d42e: d9dd bls.n 800d3ec <LoRaMacProcess+0x364> + 800d430: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800d434: 970e str r7, [sp, #56] ; 0x38 + 800d436: b2f6 uxtb r6, r6 + 800d438: f88d 603c strb.w r6, [sp, #60] ; 0x3c + 800d43c: 2b00 cmp r3, #0 + 800d43e: d1d5 bne.n 800d3ec <LoRaMacProcess+0x364> + 800d440: a818 add r0, sp, #96 ; 0x60 + 800d442: f004 f8f9 bl 8011638 <SecureElementGetJoinEui> + 800d446: aa0e add r2, sp, #56 ; 0x38 + 800d448: a918 add r1, sp, #96 ; 0x60 + 800d44a: 20ff movs r0, #255 ; 0xff + 800d44c: f002 f84c bl 800f4e8 <LoRaMacCryptoHandleJoinAccept> + 800d450: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 + 800d454: f3c3 0303 ubfx r3, r3, #0, #4 + 800d458: 4607 mov r7, r0 + 800d45a: f88d 3020 strb.w r3, [sp, #32] + 800d45e: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d462: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800d466: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 800d46a: 2207 movs r2, #7 + 800d46c: a908 add r1, sp, #32 + 800d46e: f002 fa3e bl 800f8ee <RegionVerify> + 800d472: 2f00 cmp r7, #0 + 800d474: d15a bne.n 800d52c <LoRaMacProcess+0x4a4> + 800d476: 2800 cmp r0, #0 + 800d478: d058 beq.n 800d52c <LoRaMacProcess+0x4a4> + 800d47a: f89d 3043 ldrb.w r3, [sp, #67] ; 0x43 + 800d47e: f89d 2042 ldrb.w r2, [sp, #66] ; 0x42 + 800d482: 9911 ldr r1, [sp, #68] ; 0x44 + 800d484: f8c5 10e4 str.w r1, [r5, #228] ; 0xe4 + 800d488: 041b lsls r3, r3, #16 + 800d48a: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800d48e: f89d 2041 ldrb.w r2, [sp, #65] ; 0x41 + 800d492: 2002 movs r0, #2 + 800d494: 4313 orrs r3, r2 + 800d496: f8c5 30e0 str.w r3, [r5, #224] ; 0xe0 + 800d49a: f004 f8db bl 8011654 <SecureElementSetDevAddr> + 800d49e: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 + 800d4a2: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d4a6: f885 712a strb.w r7, [r5, #298] ; 0x12a + 800d4aa: f3c3 1202 ubfx r2, r3, #4, #3 + 800d4ae: f3c3 0303 ubfx r3, r3, #0, #4 + 800d4b2: f885 3070 strb.w r3, [r5, #112] ; 0x70 + 800d4b6: f885 3078 strb.w r3, [r5, #120] ; 0x78 + 800d4ba: f89d 3049 ldrb.w r3, [sp, #73] ; 0x49 + 800d4be: f885 2069 strb.w r2, [r5, #105] ; 0x69 + 800d4c2: 2b01 cmp r3, #1 + 800d4c4: bf38 it cc + 800d4c6: 2301 movcc r3, #1 + 800d4c8: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800d4cc: 4353 muls r3, r2 + 800d4ce: 65ab str r3, [r5, #88] ; 0x58 + 800d4d0: 4413 add r3, r2 + 800d4d2: 65eb str r3, [r5, #92] ; 0x5c + 800d4d4: f04f 0801 mov.w r8, #1 + 800d4d8: f10d 034a add.w r3, sp, #74 ; 0x4a + 800d4dc: 3e11 subs r6, #17 + 800d4de: a90c add r1, sp, #48 ; 0x30 + 800d4e0: 930c str r3, [sp, #48] ; 0x30 + 800d4e2: f885 8068 strb.w r8, [r5, #104] ; 0x68 + 800d4e6: f88d 6034 strb.w r6, [sp, #52] ; 0x34 + 800d4ea: f002 fa08 bl 800f8fe <RegionApplyCFList> + 800d4ee: 2302 movs r3, #2 + 800d4f0: 4640 mov r0, r8 + 800d4f2: f885 312c strb.w r3, [r5, #300] ; 0x12c + 800d4f6: f001 fd1f bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800d4fa: b118 cbz r0, 800d504 <LoRaMacProcess+0x47c> + 800d4fc: 4641 mov r1, r8 + 800d4fe: 4638 mov r0, r7 + 800d500: f001 fcde bl 800eec0 <LoRaMacConfirmQueueSetStatus> + 800d504: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800d508: 2b00 cmp r3, #0 + 800d50a: f000 8179 beq.w 800d800 <LoRaMacProcess+0x778> + 800d50e: f894 3438 ldrb.w r3, [r4, #1080] ; 0x438 + 800d512: b113 cbz r3, 800d51a <LoRaMacProcess+0x492> + 800d514: 2000 movs r0, #0 + 800d516: f7fe fde9 bl 800c0ec <OnAckTimeoutTimerEvent> + 800d51a: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d51e: f043 0310 orr.w r3, r3, #16 + 800d522: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d526: f7fe fda7 bl 800c078 <UpdateRxSlotIdleState> + 800d52a: e66b b.n 800d204 <LoRaMacProcess+0x17c> + 800d52c: 2001 movs r0, #1 + 800d52e: f001 fd03 bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800d532: 2800 cmp r0, #0 + 800d534: d0e6 beq.n 800d504 <LoRaMacProcess+0x47c> + 800d536: 2101 movs r1, #1 + 800d538: 2007 movs r0, #7 + 800d53a: e7e1 b.n 800d500 <LoRaMacProcess+0x478> + 800d53c: 2301 movs r3, #1 + 800d53e: f884 3418 strb.w r3, [r4, #1048] ; 0x418 + 800d542: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800d546: f88d 3022 strb.w r3, [sp, #34] ; 0x22 + 800d54a: f894 341c ldrb.w r3, [r4, #1052] ; 0x41c + 800d54e: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 800d552: f895 308c ldrb.w r3, [r5, #140] ; 0x8c + 800d556: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d55a: 330d adds r3, #13 + 800d55c: a908 add r1, sp, #32 + 800d55e: f88d 3020 strb.w r3, [sp, #32] + 800d562: f002 f9b1 bl 800f8c8 <RegionGetPhyParam> + 800d566: f1a6 030d sub.w r3, r6, #13 + 800d56a: b21b sxth r3, r3 + 800d56c: 9006 str r0, [sp, #24] + 800d56e: ea23 73e3 bic.w r3, r3, r3, asr #31 + 800d572: b200 sxth r0, r0 + 800d574: 4283 cmp r3, r0 + 800d576: f73f af39 bgt.w 800d3ec <LoRaMacProcess+0x364> + 800d57a: 2e0b cmp r6, #11 + 800d57c: f67f af36 bls.w 800d3ec <LoRaMacProcess+0x364> + 800d580: 4ba2 ldr r3, [pc, #648] ; (800d80c <LoRaMacProcess+0x784>) + 800d582: 9321 str r3, [sp, #132] ; 0x84 + 800d584: a818 add r0, sp, #96 ; 0x60 + 800d586: 23ff movs r3, #255 ; 0xff + 800d588: 9718 str r7, [sp, #96] ; 0x60 + 800d58a: f88d 6064 strb.w r6, [sp, #100] ; 0x64 + 800d58e: f88d 3088 strb.w r3, [sp, #136] ; 0x88 + 800d592: f002 f875 bl 800f680 <LoRaMacParserData> + 800d596: 4680 mov r8, r0 + 800d598: 2800 cmp r0, #0 + 800d59a: f47f af27 bne.w 800d3ec <LoRaMacProcess+0x364> + 800d59e: f89d 306c ldrb.w r3, [sp, #108] ; 0x6c + 800d5a2: 991a ldr r1, [sp, #104] ; 0x68 + 800d5a4: f8c4 142c str.w r1, [r4, #1068] ; 0x42c + 800d5a8: f013 020f ands.w r2, r3, #15 + 800d5ac: d003 beq.n 800d5b6 <LoRaMacProcess+0x52e> + 800d5ae: f89d 0080 ldrb.w r0, [sp, #128] ; 0x80 + 800d5b2: 2800 cmp r0, #0 + 800d5b4: d16c bne.n 800d690 <LoRaMacProcess+0x608> + 800d5b6: f89d 0088 ldrb.w r0, [sp, #136] ; 0x88 + 800d5ba: 2800 cmp r0, #0 + 800d5bc: d06a beq.n 800d694 <LoRaMacProcess+0x60c> + 800d5be: 2a00 cmp r2, #0 + 800d5c0: f47f af14 bne.w 800d3ec <LoRaMacProcess+0x364> + 800d5c4: f89d 2080 ldrb.w r2, [sp, #128] ; 0x80 + 800d5c8: 2a00 cmp r2, #0 + 800d5ca: bf0c ite eq + 800d5cc: 2702 moveq r7, #2 + 800d5ce: 2703 movne r7, #3 + 800d5d0: 2200 movs r2, #0 + 800d5d2: 9207 str r2, [sp, #28] + 800d5d4: f8d5 20ec ldr.w r2, [r5, #236] ; 0xec + 800d5d8: 4291 cmp r1, r2 + 800d5da: d15d bne.n 800d698 <LoRaMacProcess+0x610> + 800d5dc: f895 10e9 ldrb.w r1, [r5, #233] ; 0xe9 + 800d5e0: 2900 cmp r1, #0 + 800d5e2: d059 beq.n 800d698 <LoRaMacProcess+0x610> + 800d5e4: f8d5 110c ldr.w r1, [r5, #268] ; 0x10c + 800d5e8: f895 a0ea ldrb.w sl, [r5, #234] ; 0xea + 800d5ec: 6809 ldr r1, [r1, #0] + 800d5ee: 9107 str r1, [sp, #28] + 800d5f0: f895 1118 ldrb.w r1, [r5, #280] ; 0x118 + 800d5f4: 2902 cmp r1, #2 + 800d5f6: d102 bne.n 800d5fe <LoRaMacProcess+0x576> + 800d5f8: 2103 movs r1, #3 + 800d5fa: f884 147f strb.w r1, [r4, #1151] ; 0x47f + 800d5fe: 2f03 cmp r7, #3 + 800d600: f47f aef4 bne.w 800d3ec <LoRaMacProcess+0x364> + 800d604: f013 0f60 tst.w r3, #96 ; 0x60 + 800d608: f47f aef0 bne.w 800d3ec <LoRaMacProcess+0x364> + 800d60c: 9203 str r2, [sp, #12] + 800d60e: f04f 0801 mov.w r8, #1 + 800d612: 2315 movs r3, #21 + 800d614: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d618: f88d 3020 strb.w r3, [sp, #32] + 800d61c: a908 add r1, sp, #32 + 800d61e: f002 f953 bl 800f8c8 <RegionGetPhyParam> + 800d622: f895 312a ldrb.w r3, [r5, #298] ; 0x12a + 800d626: 9006 str r0, [sp, #24] + 800d628: f1ba 0f00 cmp.w sl, #0 + 800d62c: d037 beq.n 800d69e <LoRaMacProcess+0x616> + 800d62e: f1ba 0f01 cmp.w sl, #1 + 800d632: d13e bne.n 800d6b2 <LoRaMacProcess+0x62a> + 800d634: 2b01 cmp r3, #1 + 800d636: d134 bne.n 800d6a2 <LoRaMacProcess+0x61a> + 800d638: f06f 0609 mvn.w r6, #9 + 800d63c: 413e asrs r6, r7 + 800d63e: f006 0601 and.w r6, r6, #1 + 800d642: f1c6 0602 rsb r6, r6, #2 + 800d646: b2f6 uxtb r6, r6 + 800d648: b281 uxth r1, r0 + 800d64a: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e + 800d64e: ab07 add r3, sp, #28 + 800d650: 4630 mov r0, r6 + 800d652: f001 fdcf bl 800f1f4 <LoRaMacCryptoGetFCntDown> + 800d656: b370 cbz r0, 800d6b6 <LoRaMacProcess+0x62e> + 800d658: 2807 cmp r0, #7 + 800d65a: d124 bne.n 800d6a6 <LoRaMacProcess+0x61e> + 800d65c: 2308 movs r3, #8 + 800d65e: f884 3419 strb.w r3, [r4, #1049] ; 0x419 + 800d662: f895 312a ldrb.w r3, [r5, #298] ; 0x12a + 800d666: b95b cbnz r3, 800d680 <LoRaMacProcess+0x5f8> + 800d668: 9b02 ldr r3, [sp, #8] + 800d66a: f003 03e0 and.w r3, r3, #224 ; 0xe0 + 800d66e: 2ba0 cmp r3, #160 ; 0xa0 + 800d670: d106 bne.n 800d680 <LoRaMacProcess+0x5f8> + 800d672: 6b6a ldr r2, [r5, #52] ; 0x34 + 800d674: 9b23 ldr r3, [sp, #140] ; 0x8c + 800d676: 429a cmp r2, r3 + 800d678: d102 bne.n 800d680 <LoRaMacProcess+0x5f8> + 800d67a: 2301 movs r3, #1 + 800d67c: f885 303a strb.w r3, [r5, #58] ; 0x3a + 800d680: 9b07 ldr r3, [sp, #28] + 800d682: f8c4 3428 str.w r3, [r4, #1064] ; 0x428 + 800d686: f8c4 3460 str.w r3, [r4, #1120] ; 0x460 + 800d68a: f7fe fd4f bl 800c12c <PrepareRxDoneAbort> + 800d68e: e5b9 b.n 800d204 <LoRaMacProcess+0x17c> + 800d690: 4647 mov r7, r8 + 800d692: e79d b.n 800d5d0 <LoRaMacProcess+0x548> + 800d694: 2701 movs r7, #1 + 800d696: e79b b.n 800d5d0 <LoRaMacProcess+0x548> + 800d698: f04f 0a01 mov.w sl, #1 + 800d69c: e7b9 b.n 800d612 <LoRaMacProcess+0x58a> + 800d69e: 2604 movs r6, #4 + 800d6a0: e7d2 b.n 800d648 <LoRaMacProcess+0x5c0> + 800d6a2: 2603 movs r6, #3 + 800d6a4: e7d0 b.n 800d648 <LoRaMacProcess+0x5c0> + 800d6a6: 2808 cmp r0, #8 + 800d6a8: d103 bne.n 800d6b2 <LoRaMacProcess+0x62a> + 800d6aa: 230a movs r3, #10 + 800d6ac: f884 3419 strb.w r3, [r4, #1049] ; 0x419 + 800d6b0: e7e6 b.n 800d680 <LoRaMacProcess+0x5f8> + 800d6b2: 2301 movs r3, #1 + 800d6b4: e7fa b.n 800d6ac <LoRaMacProcess+0x624> + 800d6b6: ab18 add r3, sp, #96 ; 0x60 + 800d6b8: 9300 str r3, [sp, #0] + 800d6ba: 9903 ldr r1, [sp, #12] + 800d6bc: 9b07 ldr r3, [sp, #28] + 800d6be: 4632 mov r2, r6 + 800d6c0: 4650 mov r0, sl + 800d6c2: f001 fe63 bl 800f38c <LoRaMacCryptoUnsecureMessage> + 800d6c6: b120 cbz r0, 800d6d2 <LoRaMacProcess+0x64a> + 800d6c8: 2802 cmp r0, #2 + 800d6ca: bf0c ite eq + 800d6cc: 230b moveq r3, #11 + 800d6ce: 230c movne r3, #12 + 800d6d0: e68d b.n 800d3ee <LoRaMacProcess+0x366> + 800d6d2: 9b07 ldr r3, [sp, #28] + 800d6d4: f8c4 3428 str.w r3, [r4, #1064] ; 0x428 + 800d6d8: f8c4 3460 str.w r3, [r4, #1120] ; 0x460 + 800d6dc: f89d 306c ldrb.w r3, [sp, #108] ; 0x6c + 800d6e0: f884 0419 strb.w r0, [r4, #1049] ; 0x419 + 800d6e4: f3c3 1340 ubfx r3, r3, #5, #1 + 800d6e8: f884 3426 strb.w r3, [r4, #1062] ; 0x426 + 800d6ec: f884 3438 strb.w r3, [r4, #1080] ; 0x438 + 800d6f0: f894 347f ldrb.w r3, [r4, #1151] ; 0x47f + 800d6f4: f884 841a strb.w r8, [r4, #1050] ; 0x41a + 800d6f8: 2b01 cmp r3, #1 + 800d6fa: bf98 it ls + 800d6fc: 62a8 strls r0, [r5, #40] ; 0x28 + 800d6fe: f1b8 0f01 cmp.w r8, #1 + 800d702: f8c4 0420 str.w r0, [r4, #1056] ; 0x420 + 800d706: f884 0424 strb.w r0, [r4, #1060] ; 0x424 + 800d70a: f884 0435 strb.w r0, [r4, #1077] ; 0x435 + 800d70e: d133 bne.n 800d778 <LoRaMacProcess+0x6f0> + 800d710: 2202 movs r2, #2 + 800d712: f884 2418 strb.w r2, [r4, #1048] ; 0x418 + 800d716: f895 203a ldrb.w r2, [r5, #58] ; 0x3a + 800d71a: 2a00 cmp r2, #0 + 800d71c: d13b bne.n 800d796 <LoRaMacProcess+0x70e> + 800d71e: f89d 206c ldrb.w r2, [sp, #108] ; 0x6c + 800d722: 06d2 lsls r2, r2, #27 + 800d724: d437 bmi.n 800d796 <LoRaMacProcess+0x70e> + 800d726: 2b01 cmp r3, #1 + 800d728: f894 1434 ldrb.w r1, [r4, #1076] ; 0x434 + 800d72c: f89d 206c ldrb.w r2, [sp, #108] ; 0x6c + 800d730: d805 bhi.n 800d73e <LoRaMacProcess+0x6b6> + 800d732: 2901 cmp r1, #1 + 800d734: d101 bne.n 800d73a <LoRaMacProcess+0x6b2> + 800d736: 0696 lsls r6, r2, #26 + 800d738: d501 bpl.n 800d73e <LoRaMacProcess+0x6b6> + 800d73a: f001 fb01 bl 800ed40 <LoRaMacCommandsRemoveStickyAnsCmds> + 800d73e: 2f02 cmp r7, #2 + 800d740: d037 beq.n 800d7b2 <LoRaMacProcess+0x72a> + 800d742: 2f03 cmp r7, #3 + 800d744: d009 beq.n 800d75a <LoRaMacProcess+0x6d2> + 800d746: f89d 106c ldrb.w r1, [sp, #108] ; 0x6c + 800d74a: 2f01 cmp r7, #1 + 800d74c: 464a mov r2, r9 + 800d74e: f001 010f and.w r1, r1, #15 + 800d752: a81c add r0, sp, #112 ; 0x70 + 800d754: d031 beq.n 800d7ba <LoRaMacProcess+0x732> + 800d756: f7ff f96b bl 800ca30 <ProcessMacCommands.constprop.0> + 800d75a: f89d 3080 ldrb.w r3, [sp, #128] ; 0x80 + 800d75e: f884 341b strb.w r3, [r4, #1051] ; 0x41b + 800d762: 9b21 ldr r3, [sp, #132] ; 0x84 + 800d764: f8c4 3420 str.w r3, [r4, #1056] ; 0x420 + 800d768: f89d 3088 ldrb.w r3, [sp, #136] ; 0x88 + 800d76c: f884 3424 strb.w r3, [r4, #1060] ; 0x424 + 800d770: 2301 movs r3, #1 + 800d772: f884 3425 strb.w r3, [r4, #1061] ; 0x425 + 800d776: e026 b.n 800d7c6 <LoRaMacProcess+0x73e> + 800d778: 9a02 ldr r2, [sp, #8] + 800d77a: f002 02e0 and.w r2, r2, #224 ; 0xe0 + 800d77e: 2aa0 cmp r2, #160 ; 0xa0 + 800d780: d111 bne.n 800d7a6 <LoRaMacProcess+0x71e> + 800d782: f895 112a ldrb.w r1, [r5, #298] ; 0x12a + 800d786: 2201 movs r2, #1 + 800d788: f885 203a strb.w r2, [r5, #58] ; 0x3a + 800d78c: b909 cbnz r1, 800d792 <LoRaMacProcess+0x70a> + 800d78e: 9923 ldr r1, [sp, #140] ; 0x8c + 800d790: 6369 str r1, [r5, #52] ; 0x34 + 800d792: f884 2418 strb.w r2, [r4, #1048] ; 0x418 + 800d796: f895 2118 ldrb.w r2, [r5, #280] ; 0x118 + 800d79a: 2a00 cmp r2, #0 + 800d79c: d1c3 bne.n 800d726 <LoRaMacProcess+0x69e> + 800d79e: 2201 movs r2, #1 + 800d7a0: f884 241d strb.w r2, [r4, #1053] ; 0x41d + 800d7a4: e7bf b.n 800d726 <LoRaMacProcess+0x69e> + 800d7a6: 2200 movs r2, #0 + 800d7a8: f885 203a strb.w r2, [r5, #58] ; 0x3a + 800d7ac: f884 2418 strb.w r2, [r4, #1048] ; 0x418 + 800d7b0: e7b5 b.n 800d71e <LoRaMacProcess+0x696> + 800d7b2: f89d 1088 ldrb.w r1, [sp, #136] ; 0x88 + 800d7b6: 9821 ldr r0, [sp, #132] ; 0x84 + 800d7b8: 464a mov r2, r9 + 800d7ba: f7ff f939 bl 800ca30 <ProcessMacCommands.constprop.0> + 800d7be: f89d 3080 ldrb.w r3, [sp, #128] ; 0x80 + 800d7c2: f884 341b strb.w r3, [r4, #1051] ; 0x41b + 800d7c6: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d7ca: f043 0302 orr.w r3, r3, #2 + 800d7ce: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d7d2: e697 b.n 800d504 <LoRaMacProcess+0x47c> + 800d7d4: f8df 8034 ldr.w r8, [pc, #52] ; 800d80c <LoRaMacProcess+0x784> + 800d7d8: 3e01 subs r6, #1 + 800d7da: b2b2 uxth r2, r6 + 800d7dc: 1c79 adds r1, r7, #1 + 800d7de: 4640 mov r0, r8 + 800d7e0: f004 f800 bl 80117e4 <memcpy1> + 800d7e4: 2303 movs r3, #3 + 800d7e6: f8a4 3418 strh.w r3, [r4, #1048] ; 0x418 + 800d7ea: f8c4 8420 str.w r8, [r4, #1056] ; 0x420 + 800d7ee: f884 6424 strb.w r6, [r4, #1060] ; 0x424 + 800d7f2: e7e8 b.n 800d7c6 <LoRaMacProcess+0x73e> + 800d7f4: 2301 movs r3, #1 + 800d7f6: f884 3419 strb.w r3, [r4, #1049] ; 0x419 + 800d7fa: f7fe fc97 bl 800c12c <PrepareRxDoneAbort> + 800d7fe: e681 b.n 800d504 <LoRaMacProcess+0x47c> + 800d800: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800d804: 2b02 cmp r3, #2 + 800d806: f47f ae88 bne.w 800d51a <LoRaMacProcess+0x492> + 800d80a: e683 b.n 800d514 <LoRaMacProcess+0x48c> + 800d80c: 20002210 .word 0x20002210 + 800d810: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d814: 075d lsls r5, r3, #29 + 800d816: d50f bpl.n 800d838 <LoRaMacProcess+0x7b0> + 800d818: 2001 movs r0, #1 + 800d81a: f001 fb8d bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800d81e: b388 cbz r0, 800d884 <LoRaMacProcess+0x7fc> + 800d820: 2001 movs r0, #1 + 800d822: f001 fb5f bl 800eee4 <LoRaMacConfirmQueueGetStatus> + 800d826: b908 cbnz r0, 800d82c <LoRaMacProcess+0x7a4> + 800d828: f884 040c strb.w r0, [r4, #1036] ; 0x40c + 800d82c: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d830: f023 0302 bic.w r3, r3, #2 + 800d834: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800d838: f894 1481 ldrb.w r1, [r4, #1153] ; 0x481 + 800d83c: 07c8 lsls r0, r1, #31 + 800d83e: f57f ad36 bpl.w 800d2ae <LoRaMacProcess+0x226> + 800d842: f894 3434 ldrb.w r3, [r4, #1076] ; 0x434 + 800d846: b10b cbz r3, 800d84c <LoRaMacProcess+0x7c4> + 800d848: 2b03 cmp r3, #3 + 800d84a: d126 bne.n 800d89a <LoRaMacProcess+0x812> + 800d84c: 4b42 ldr r3, [pc, #264] ; (800d958 <LoRaMacProcess+0x8d0>) + 800d84e: f894 040c ldrb.w r0, [r4, #1036] ; 0x40c + 800d852: f893 2068 ldrb.w r2, [r3, #104] ; 0x68 + 800d856: 4290 cmp r0, r2 + 800d858: d208 bcs.n 800d86c <LoRaMacProcess+0x7e4> + 800d85a: 078a lsls r2, r1, #30 + 800d85c: d550 bpl.n 800d900 <LoRaMacProcess+0x878> + 800d85e: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800d862: b11b cbz r3, 800d86c <LoRaMacProcess+0x7e4> + 800d864: f894 347f ldrb.w r3, [r4, #1151] ; 0x47f + 800d868: 2b00 cmp r3, #0 + 800d86a: d149 bne.n 800d900 <LoRaMacProcess+0x878> + 800d86c: 483b ldr r0, [pc, #236] ; (800d95c <LoRaMacProcess+0x8d4>) + 800d86e: f006 fadd bl 8013e2c <UTIL_TIMER_Stop> + 800d872: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d876: f023 0320 bic.w r3, r3, #32 + 800d87a: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800d87e: f7ff fb9b bl 800cfb8 <StopRetransmission.isra.0> + 800d882: e514 b.n 800d2ae <LoRaMacProcess+0x226> + 800d884: 2006 movs r0, #6 + 800d886: f001 fb57 bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800d88a: 2800 cmp r0, #0 + 800d88c: d1ce bne.n 800d82c <LoRaMacProcess+0x7a4> + 800d88e: 2007 movs r0, #7 + 800d890: f001 fb52 bl 800ef38 <LoRaMacConfirmQueueIsCmdActive> + 800d894: 2800 cmp r0, #0 + 800d896: d1c9 bne.n 800d82c <LoRaMacProcess+0x7a4> + 800d898: e7ce b.n 800d838 <LoRaMacProcess+0x7b0> + 800d89a: 2b01 cmp r3, #1 + 800d89c: d130 bne.n 800d900 <LoRaMacProcess+0x878> + 800d89e: f894 240f ldrb.w r2, [r4, #1039] ; 0x40f + 800d8a2: 2a00 cmp r2, #0 + 800d8a4: f43f ad03 beq.w 800d2ae <LoRaMacProcess+0x226> + 800d8a8: f894 340e ldrb.w r3, [r4, #1038] ; 0x40e + 800d8ac: f894 040d ldrb.w r0, [r4, #1037] ; 0x40d + 800d8b0: 4283 cmp r3, r0 + 800d8b2: d204 bcs.n 800d8be <LoRaMacProcess+0x836> + 800d8b4: f011 0202 ands.w r2, r1, #2 + 800d8b8: bf18 it ne + 800d8ba: f894 2438 ldrbne.w r2, [r4, #1080] ; 0x438 + 800d8be: 4d26 ldr r5, [pc, #152] ; (800d958 <LoRaMacProcess+0x8d0>) + 800d8c0: f895 112a ldrb.w r1, [r5, #298] ; 0x12a + 800d8c4: 2900 cmp r1, #0 + 800d8c6: d141 bne.n 800d94c <LoRaMacProcess+0x8c4> + 800d8c8: bb32 cbnz r2, 800d918 <LoRaMacProcess+0x890> + 800d8ca: 4283 cmp r3, r0 + 800d8cc: d218 bcs.n 800d900 <LoRaMacProcess+0x878> + 800d8ce: 3301 adds r3, #1 + 800d8d0: b2db uxtb r3, r3 + 800d8d2: 07df lsls r7, r3, #31 + 800d8d4: f884 340e strb.w r3, [r4, #1038] ; 0x40e + 800d8d8: d512 bpl.n 800d900 <LoRaMacProcess+0x878> + 800d8da: 2322 movs r3, #34 ; 0x22 + 800d8dc: f88d 3060 strb.w r3, [sp, #96] ; 0x60 + 800d8e0: f895 307c ldrb.w r3, [r5, #124] ; 0x7c + 800d8e4: f88d 3062 strb.w r3, [sp, #98] ; 0x62 + 800d8e8: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d8ec: f895 3039 ldrb.w r3, [r5, #57] ; 0x39 + 800d8f0: f88d 3061 strb.w r3, [sp, #97] ; 0x61 + 800d8f4: a918 add r1, sp, #96 ; 0x60 + 800d8f6: f001 ffe7 bl 800f8c8 <RegionGetPhyParam> + 800d8fa: 900e str r0, [sp, #56] ; 0x38 + 800d8fc: f885 0039 strb.w r0, [r5, #57] ; 0x39 + 800d900: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d904: 2000 movs r0, #0 + 800d906: f36f 1304 bfc r3, #4, #1 + 800d90a: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d90e: f884 040f strb.w r0, [r4, #1039] ; 0x40f + 800d912: f7ff fb73 bl 800cffc <OnTxDelayedTimerEvent> + 800d916: e4ca b.n 800d2ae <LoRaMacProcess+0x226> + 800d918: f894 6438 ldrb.w r6, [r4, #1080] ; 0x438 + 800d91c: b98e cbnz r6, 800d942 <LoRaMacProcess+0x8ba> + 800d91e: 2302 movs r3, #2 + 800d920: f88d 3068 strb.w r3, [sp, #104] ; 0x68 + 800d924: f505 7308 add.w r3, r5, #544 ; 0x220 + 800d928: 9318 str r3, [sp, #96] ; 0x60 + 800d92a: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d92e: f505 732d add.w r3, r5, #692 ; 0x2b4 + 800d932: a918 add r1, sp, #96 ; 0x60 + 800d934: 9319 str r3, [sp, #100] ; 0x64 + 800d936: f001 ffd5 bl 800f8e4 <RegionInitDefaults> + 800d93a: f884 6410 strb.w r6, [r4, #1040] ; 0x410 + 800d93e: f884 6438 strb.w r6, [r4, #1080] ; 0x438 + 800d942: f894 340e ldrb.w r3, [r4, #1038] ; 0x40e + 800d946: f884 3439 strb.w r3, [r4, #1081] ; 0x439 + 800d94a: e78f b.n 800d86c <LoRaMacProcess+0x7e4> + 800d94c: 2a00 cmp r2, #0 + 800d94e: d0d7 beq.n 800d900 <LoRaMacProcess+0x878> + 800d950: e78c b.n 800d86c <LoRaMacProcess+0x7e4> + 800d952: b025 add sp, #148 ; 0x94 + 800d954: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800d958: 20001864 .word 0x20001864 + 800d95c: 20002340 .word 0x20002340 + +0800d960 <LoRaMacInitialization>: + 800d960: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800d964: 468a mov sl, r1 + 800d966: b08b sub sp, #44 ; 0x2c + 800d968: 4691 mov r9, r2 + 800d96a: 4607 mov r7, r0 + 800d96c: 2800 cmp r0, #0 + 800d96e: f000 818d beq.w 800dc8c <LoRaMacInitialization+0x32c> + 800d972: 2900 cmp r1, #0 + 800d974: f000 818a beq.w 800dc8c <LoRaMacInitialization+0x32c> + 800d978: 6803 ldr r3, [r0, #0] + 800d97a: 2b00 cmp r3, #0 + 800d97c: f000 8186 beq.w 800dc8c <LoRaMacInitialization+0x32c> + 800d980: 6843 ldr r3, [r0, #4] + 800d982: 2b00 cmp r3, #0 + 800d984: f000 8182 beq.w 800dc8c <LoRaMacInitialization+0x32c> + 800d988: 6883 ldr r3, [r0, #8] + 800d98a: 2b00 cmp r3, #0 + 800d98c: f000 817e beq.w 800dc8c <LoRaMacInitialization+0x32c> + 800d990: 68c3 ldr r3, [r0, #12] + 800d992: 2b00 cmp r3, #0 + 800d994: f000 817a beq.w 800dc8c <LoRaMacInitialization+0x32c> + 800d998: 4610 mov r0, r2 + 800d99a: f001 ff91 bl 800f8c0 <RegionIsActive> + 800d99e: 2800 cmp r0, #0 + 800d9a0: f000 8176 beq.w 800dc90 <LoRaMacInitialization+0x330> + 800d9a4: 4cbc ldr r4, [pc, #752] ; (800dc98 <LoRaMacInitialization+0x338>) + 800d9a6: 4dbd ldr r5, [pc, #756] ; (800dc9c <LoRaMacInitialization+0x33c>) + 800d9a8: 4638 mov r0, r7 + 800d9aa: f001 fa3f bl 800ee2c <LoRaMacConfirmQueueInit> + 800d9ae: f44f 62ee mov.w r2, #1904 ; 0x770 + 800d9b2: 2100 movs r1, #0 + 800d9b4: 4620 mov r0, r4 + 800d9b6: f003 ff29 bl 801180c <memset1> + 800d9ba: f44f 62a1 mov.w r2, #1288 ; 0x508 + 800d9be: 2100 movs r1, #0 + 800d9c0: 4628 mov r0, r5 + 800d9c2: f003 ff23 bl 801180c <memset1> + 800d9c6: 4bb6 ldr r3, [pc, #728] ; (800dca0 <LoRaMacInitialization+0x340>) + 800d9c8: f8c4 3128 str.w r3, [r4, #296] ; 0x128 + 800d9cc: 2600 movs r6, #0 + 800d9ce: f04f 0801 mov.w r8, #1 + 800d9d2: 230f movs r3, #15 + 800d9d4: a905 add r1, sp, #20 + 800d9d6: 4648 mov r0, r9 + 800d9d8: f88d 3014 strb.w r3, [sp, #20] + 800d9dc: f884 9048 strb.w r9, [r4, #72] ; 0x48 + 800d9e0: f884 6118 strb.w r6, [r4, #280] ; 0x118 + 800d9e4: f884 608c strb.w r6, [r4, #140] ; 0x8c + 800d9e8: f885 840e strb.w r8, [r5, #1038] ; 0x40e + 800d9ec: f885 840d strb.w r8, [r5, #1037] ; 0x40d + 800d9f0: f001 ff6a bl 800f8c8 <RegionGetPhyParam> + 800d9f4: 1b80 subs r0, r0, r6 + 800d9f6: bf18 it ne + 800d9f8: 2001 movne r0, #1 + 800d9fa: f04f 0b0a mov.w fp, #10 + 800d9fe: f884 011c strb.w r0, [r4, #284] ; 0x11c + 800da02: a905 add r1, sp, #20 + 800da04: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800da08: f88d b014 strb.w fp, [sp, #20] + 800da0c: f001 ff5c bl 800f8c8 <RegionGetPhyParam> + 800da10: f04f 0906 mov.w r9, #6 + 800da14: f884 00dc strb.w r0, [r4, #220] ; 0xdc + 800da18: a905 add r1, sp, #20 + 800da1a: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800da1e: f88d 9014 strb.w r9, [sp, #20] + 800da22: f001 ff51 bl 800f8c8 <RegionGetPhyParam> + 800da26: 2310 movs r3, #16 + 800da28: f884 00dd strb.w r0, [r4, #221] ; 0xdd + 800da2c: a905 add r1, sp, #20 + 800da2e: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800da32: f88d 3014 strb.w r3, [sp, #20] + 800da36: f001 ff47 bl 800f8c8 <RegionGetPhyParam> + 800da3a: 2311 movs r3, #17 + 800da3c: f8c4 009c str.w r0, [r4, #156] ; 0x9c + 800da40: a905 add r1, sp, #20 + 800da42: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800da46: f88d 3014 strb.w r3, [sp, #20] + 800da4a: f001 ff3d bl 800f8c8 <RegionGetPhyParam> + 800da4e: 2312 movs r3, #18 + 800da50: f8c4 00a0 str.w r0, [r4, #160] ; 0xa0 + 800da54: a905 add r1, sp, #20 + 800da56: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800da5a: f88d 3014 strb.w r3, [sp, #20] + 800da5e: f001 ff33 bl 800f8c8 <RegionGetPhyParam> + 800da62: 2313 movs r3, #19 + 800da64: f8c4 00a4 str.w r0, [r4, #164] ; 0xa4 + 800da68: a905 add r1, sp, #20 + 800da6a: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800da6e: f88d 3014 strb.w r3, [sp, #20] + 800da72: f001 ff29 bl 800f8c8 <RegionGetPhyParam> + 800da76: 2314 movs r3, #20 + 800da78: eb0d 0103 add.w r1, sp, r3 + 800da7c: f8c4 00a8 str.w r0, [r4, #168] ; 0xa8 + 800da80: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800da84: f88d 3014 strb.w r3, [sp, #20] + 800da88: f001 ff1e bl 800f8c8 <RegionGetPhyParam> + 800da8c: 2317 movs r3, #23 + 800da8e: f8c4 00ac str.w r0, [r4, #172] ; 0xac + 800da92: a905 add r1, sp, #20 + 800da94: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800da98: f88d 3014 strb.w r3, [sp, #20] + 800da9c: f001 ff14 bl 800f8c8 <RegionGetPhyParam> + 800daa0: 2318 movs r3, #24 + 800daa2: f884 00b1 strb.w r0, [r4, #177] ; 0xb1 + 800daa6: a905 add r1, sp, #20 + 800daa8: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800daac: f88d 3014 strb.w r3, [sp, #20] + 800dab0: f001 ff0a bl 800f8c8 <RegionGetPhyParam> + 800dab4: 2319 movs r3, #25 + 800dab6: f8c4 00b4 str.w r0, [r4, #180] ; 0xb4 + 800daba: f8c4 00bc str.w r0, [r4, #188] ; 0xbc + 800dabe: a905 add r1, sp, #20 + 800dac0: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dac4: f88d 3014 strb.w r3, [sp, #20] + 800dac8: f001 fefe bl 800f8c8 <RegionGetPhyParam> + 800dacc: b2c0 uxtb r0, r0 + 800dace: 231e movs r3, #30 + 800dad0: f884 00b8 strb.w r0, [r4, #184] ; 0xb8 + 800dad4: f884 00c0 strb.w r0, [r4, #192] ; 0xc0 + 800dad8: a905 add r1, sp, #20 + 800dada: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dade: f88d 3014 strb.w r3, [sp, #20] + 800dae2: f001 fef1 bl 800f8c8 <RegionGetPhyParam> + 800dae6: 231f movs r3, #31 + 800dae8: f884 00c4 strb.w r0, [r4, #196] ; 0xc4 + 800daec: a905 add r1, sp, #20 + 800daee: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800daf2: f88d 3014 strb.w r3, [sp, #20] + 800daf6: f001 fee7 bl 800f8c8 <RegionGetPhyParam> + 800dafa: 2320 movs r3, #32 + 800dafc: f884 00c5 strb.w r0, [r4, #197] ; 0xc5 + 800db00: a905 add r1, sp, #20 + 800db02: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800db06: f88d 3014 strb.w r3, [sp, #20] + 800db0a: f001 fedd bl 800f8c8 <RegionGetPhyParam> + 800db0e: 2321 movs r3, #33 ; 0x21 + 800db10: f8c4 00c8 str.w r0, [r4, #200] ; 0xc8 + 800db14: a905 add r1, sp, #20 + 800db16: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800db1a: f88d 3014 strb.w r3, [sp, #20] + 800db1e: f001 fed3 bl 800f8c8 <RegionGetPhyParam> + 800db22: 230b movs r3, #11 + 800db24: f8c4 00cc str.w r0, [r4, #204] ; 0xcc + 800db28: a905 add r1, sp, #20 + 800db2a: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800db2e: f88d 3014 strb.w r3, [sp, #20] + 800db32: f001 fec9 bl 800f8c8 <RegionGetPhyParam> + 800db36: 230c movs r3, #12 + 800db38: f8a4 00d0 strh.w r0, [r4, #208] ; 0xd0 + 800db3c: a905 add r1, sp, #20 + 800db3e: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800db42: f88d 3014 strb.w r3, [sp, #20] + 800db46: f001 febf bl 800f8c8 <RegionGetPhyParam> + 800db4a: f8d4 309c ldr.w r3, [r4, #156] ; 0x9c + 800db4e: 6563 str r3, [r4, #84] ; 0x54 + 800db50: f8d4 30a0 ldr.w r3, [r4, #160] ; 0xa0 + 800db54: 65a3 str r3, [r4, #88] ; 0x58 + 800db56: f8d4 30a4 ldr.w r3, [r4, #164] ; 0xa4 + 800db5a: 65e3 str r3, [r4, #92] ; 0x5c + 800db5c: f8d4 30a8 ldr.w r3, [r4, #168] ; 0xa8 + 800db60: 6623 str r3, [r4, #96] ; 0x60 + 800db62: f8d4 30ac ldr.w r3, [r4, #172] ; 0xac + 800db66: 6663 str r3, [r4, #100] ; 0x64 + 800db68: f504 7308 add.w r3, r4, #544 ; 0x220 + 800db6c: a907 add r1, sp, #28 + 800db6e: 9004 str r0, [sp, #16] + 800db70: f8a4 00d2 strh.w r0, [r4, #210] ; 0xd2 + 800db74: 9307 str r3, [sp, #28] + 800db76: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800db7a: f88d 6024 strb.w r6, [sp, #36] ; 0x24 + 800db7e: f504 732d add.w r3, r4, #692 ; 0x2b4 + 800db82: 9308 str r3, [sp, #32] + 800db84: f884 80b0 strb.w r8, [r4, #176] ; 0xb0 + 800db88: f8c4 b094 str.w fp, [r4, #148] ; 0x94 + 800db8c: f884 9098 strb.w r9, [r4, #152] ; 0x98 + 800db90: f8c4 b04c str.w fp, [r4, #76] ; 0x4c + 800db94: f884 9050 strb.w r9, [r4, #80] ; 0x50 + 800db98: f884 8068 strb.w r8, [r4, #104] ; 0x68 + 800db9c: f001 fea2 bl 800f8e4 <RegionInitDefaults> + 800dba0: f8c5 a348 str.w sl, [r5, #840] ; 0x348 + 800dba4: f7fe fdc8 bl 800c738 <ResetMacParameters.constprop.0> + 800dba8: 4632 mov r2, r6 + 800dbaa: 4b3e ldr r3, [pc, #248] ; (800dca4 <LoRaMacInitialization+0x344>) + 800dbac: 9600 str r6, [sp, #0] + 800dbae: f04f 31ff mov.w r1, #4294967295 + 800dbb2: f505 705a add.w r0, r5, #872 ; 0x368 + 800dbb6: e9c4 660b strd r6, r6, [r4, #44] ; 0x2c + 800dbba: f8c5 7344 str.w r7, [r5, #836] ; 0x344 + 800dbbe: f885 6481 strb.w r6, [r5, #1153] ; 0x481 + 800dbc2: f884 8119 strb.w r8, [r4, #281] ; 0x119 + 800dbc6: f8c5 8340 str.w r8, [r5, #832] ; 0x340 + 800dbca: f006 f8d1 bl 8013d70 <UTIL_TIMER_Create> + 800dbce: 4632 mov r2, r6 + 800dbd0: 4b35 ldr r3, [pc, #212] ; (800dca8 <LoRaMacInitialization+0x348>) + 800dbd2: 9600 str r6, [sp, #0] + 800dbd4: f04f 31ff mov.w r1, #4294967295 + 800dbd8: f505 7060 add.w r0, r5, #896 ; 0x380 + 800dbdc: f006 f8c8 bl 8013d70 <UTIL_TIMER_Create> + 800dbe0: 4632 mov r2, r6 + 800dbe2: 4b32 ldr r3, [pc, #200] ; (800dcac <LoRaMacInitialization+0x34c>) + 800dbe4: 9600 str r6, [sp, #0] + 800dbe6: f04f 31ff mov.w r1, #4294967295 + 800dbea: f505 7066 add.w r0, r5, #920 ; 0x398 + 800dbee: f006 f8bf bl 8013d70 <UTIL_TIMER_Create> + 800dbf2: 4632 mov r2, r6 + 800dbf4: 4b2e ldr r3, [pc, #184] ; (800dcb0 <LoRaMacInitialization+0x350>) + 800dbf6: 9600 str r6, [sp, #0] + 800dbf8: f04f 31ff mov.w r1, #4294967295 + 800dbfc: ae02 add r6, sp, #8 + 800dbfe: f505 707d add.w r0, r5, #1012 ; 0x3f4 + 800dc02: f006 f8b5 bl 8013d70 <UTIL_TIMER_Create> + 800dc06: 4630 mov r0, r6 + 800dc08: f006 f846 bl 8013c98 <SysTimeGetMcuTime> + 800dc0c: e896 0003 ldmia.w r6, {r0, r1} + 800dc10: f504 7390 add.w r3, r4, #288 ; 0x120 + 800dc14: e883 0003 stmia.w r3, {r0, r1} + 800dc18: 4b26 ldr r3, [pc, #152] ; (800dcb4 <LoRaMacInitialization+0x354>) + 800dc1a: f8c5 334c str.w r3, [r5, #844] ; 0x34c + 800dc1e: 4b26 ldr r3, [pc, #152] ; (800dcb8 <LoRaMacInitialization+0x358>) + 800dc20: f8c5 3354 str.w r3, [r5, #852] ; 0x354 + 800dc24: 4b25 ldr r3, [pc, #148] ; (800dcbc <LoRaMacInitialization+0x35c>) + 800dc26: f8c5 335c str.w r3, [r5, #860] ; 0x35c + 800dc2a: 4f25 ldr r7, [pc, #148] ; (800dcc0 <LoRaMacInitialization+0x360>) + 800dc2c: 4b25 ldr r3, [pc, #148] ; (800dcc4 <LoRaMacInitialization+0x364>) + 800dc2e: f8c5 3350 str.w r3, [r5, #848] ; 0x350 + 800dc32: 4b25 ldr r3, [pc, #148] ; (800dcc8 <LoRaMacInitialization+0x368>) + 800dc34: f8c5 3358 str.w r3, [r5, #856] ; 0x358 + 800dc38: f505 7053 add.w r0, r5, #844 ; 0x34c + 800dc3c: 683b ldr r3, [r7, #0] + 800dc3e: 4798 blx r3 + 800dc40: f504 70a4 add.w r0, r4, #328 ; 0x148 + 800dc44: f003 fb16 bl 8011274 <SecureElementInit> + 800dc48: b120 cbz r0, 800dc54 <LoRaMacInitialization+0x2f4> + 800dc4a: 2611 movs r6, #17 + 800dc4c: 4630 mov r0, r6 + 800dc4e: b00b add sp, #44 ; 0x2c + 800dc50: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800dc54: 4620 mov r0, r4 + 800dc56: f001 fa9d bl 800f194 <LoRaMacCryptoInit> + 800dc5a: 2800 cmp r0, #0 + 800dc5c: d1f5 bne.n 800dc4a <LoRaMacInitialization+0x2ea> + 800dc5e: f000 ffc7 bl 800ebf0 <LoRaMacCommandsInit> + 800dc62: b9b8 cbnz r0, 800dc94 <LoRaMacInitialization+0x334> + 800dc64: 4819 ldr r0, [pc, #100] ; (800dccc <LoRaMacInitialization+0x36c>) + 800dc66: f001 faf7 bl 800f258 <LoRaMacCryptoSetMulticastReference> + 800dc6a: 4606 mov r6, r0 + 800dc6c: 2800 cmp r0, #0 + 800dc6e: d1ec bne.n 800dc4a <LoRaMacInitialization+0x2ea> + 800dc70: 697b ldr r3, [r7, #20] + 800dc72: 4798 blx r3 + 800dc74: f003 fd94 bl 80117a0 <srand1> + 800dc78: 6dbb ldr r3, [r7, #88] ; 0x58 + 800dc7a: f894 0119 ldrb.w r0, [r4, #281] ; 0x119 + 800dc7e: 4798 blx r3 + 800dc80: 6afb ldr r3, [r7, #44] ; 0x2c + 800dc82: 4798 blx r3 + 800dc84: 2301 movs r3, #1 + 800dc86: f885 3482 strb.w r3, [r5, #1154] ; 0x482 + 800dc8a: e7df b.n 800dc4c <LoRaMacInitialization+0x2ec> + 800dc8c: 2603 movs r6, #3 + 800dc8e: e7dd b.n 800dc4c <LoRaMacInitialization+0x2ec> + 800dc90: 2609 movs r6, #9 + 800dc92: e7db b.n 800dc4c <LoRaMacInitialization+0x2ec> + 800dc94: 2613 movs r6, #19 + 800dc96: e7d9 b.n 800dc4c <LoRaMacInitialization+0x2ec> + 800dc98: 20001864 .word 0x20001864 + 800dc9c: 20001fd8 .word 0x20001fd8 + 800dca0: 01000300 .word 0x01000300 + 800dca4: 0800cffd .word 0x0800cffd + 800dca8: 0800c8b5 .word 0x0800c8b5 + 800dcac: 0800c8f5 .word 0x0800c8f5 + 800dcb0: 0800c0ed .word 0x0800c0ed + 800dcb4: 0800c2c5 .word 0x0800c2c5 + 800dcb8: 0800c27d .word 0x0800c27d + 800dcbc: 0800c0a9 .word 0x0800c0a9 + 800dcc0: 08015784 .word 0x08015784 + 800dcc4: 0800c255 .word 0x0800c255 + 800dcc8: 0800c22d .word 0x0800c22d + 800dccc: 2000194c .word 0x2000194c + +0800dcd0 <LoRaMacStart>: + 800dcd0: b508 push {r3, lr} + 800dcd2: 4b03 ldr r3, [pc, #12] ; (800dce0 <LoRaMacStart+0x10>) + 800dcd4: 2000 movs r0, #0 + 800dcd6: f8c3 0340 str.w r0, [r3, #832] ; 0x340 + 800dcda: f7fe f9cd bl 800c078 <UpdateRxSlotIdleState> + 800dcde: bd08 pop {r3, pc} + 800dce0: 20001fd8 .word 0x20001fd8 + +0800dce4 <LoRaMacStop>: + 800dce4: b510 push {r4, lr} + 800dce6: f7ff f9b3 bl 800d050 <LoRaMacIsBusy> + 800dcea: 4c0a ldr r4, [pc, #40] ; (800dd14 <LoRaMacStop+0x30>) + 800dcec: b960 cbnz r0, 800dd08 <LoRaMacStop+0x24> + 800dcee: 4b0a ldr r3, [pc, #40] ; (800dd18 <LoRaMacStop+0x34>) + 800dcf0: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800dcf4: 2b02 cmp r3, #2 + 800dcf6: d102 bne.n 800dcfe <LoRaMacStop+0x1a> + 800dcf8: 4b08 ldr r3, [pc, #32] ; (800dd1c <LoRaMacStop+0x38>) + 800dcfa: 6adb ldr r3, [r3, #44] ; 0x2c + 800dcfc: 4798 blx r3 + 800dcfe: 2301 movs r3, #1 + 800dd00: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800dd04: 2000 movs r0, #0 + 800dd06: bd10 pop {r4, pc} + 800dd08: f8d4 0340 ldr.w r0, [r4, #832] ; 0x340 + 800dd0c: 3801 subs r0, #1 + 800dd0e: bf18 it ne + 800dd10: 2001 movne r0, #1 + 800dd12: e7f8 b.n 800dd06 <LoRaMacStop+0x22> + 800dd14: 20001fd8 .word 0x20001fd8 + 800dd18: 20001864 .word 0x20001864 + 800dd1c: 08015784 .word 0x08015784 + +0800dd20 <LoRaMacHalt>: + 800dd20: b538 push {r3, r4, r5, lr} + 800dd22: 4c13 ldr r4, [pc, #76] ; (800dd70 <LoRaMacHalt+0x50>) + 800dd24: f504 705a add.w r0, r4, #872 ; 0x368 + 800dd28: f006 f880 bl 8013e2c <UTIL_TIMER_Stop> + 800dd2c: f504 7060 add.w r0, r4, #896 ; 0x380 + 800dd30: f006 f87c bl 8013e2c <UTIL_TIMER_Stop> + 800dd34: f504 7066 add.w r0, r4, #920 ; 0x398 + 800dd38: f006 f878 bl 8013e2c <UTIL_TIMER_Stop> + 800dd3c: f504 707d add.w r0, r4, #1012 ; 0x3f4 + 800dd40: f006 f874 bl 8013e2c <UTIL_TIMER_Stop> + 800dd44: f000 ff40 bl 800ebc8 <LoRaMacClassBHaltBeaconing> + 800dd48: 4b0a ldr r3, [pc, #40] ; (800dd74 <LoRaMacHalt+0x54>) + 800dd4a: 2500 movs r5, #0 + 800dd4c: 6adb ldr r3, [r3, #44] ; 0x2c + 800dd4e: 4798 blx r3 + 800dd50: f8c4 5340 str.w r5, [r4, #832] ; 0x340 + 800dd54: f7fe fdf2 bl 800c93c <LoRaMacHandleNvm.part.0.constprop.0> + 800dd58: 4907 ldr r1, [pc, #28] ; (800dd78 <LoRaMacHalt+0x58>) + 800dd5a: 4808 ldr r0, [pc, #32] ; (800dd7c <LoRaMacHalt+0x5c>) + 800dd5c: f44f 62ee mov.w r2, #1904 ; 0x770 + 800dd60: f003 fd40 bl 80117e4 <memcpy1> + 800dd64: 2301 movs r3, #1 + 800dd66: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800dd6a: 4628 mov r0, r5 + 800dd6c: bd38 pop {r3, r4, r5, pc} + 800dd6e: bf00 nop + 800dd70: 20001fd8 .word 0x20001fd8 + 800dd74: 08015784 .word 0x08015784 + 800dd78: 20001864 .word 0x20001864 + 800dd7c: 200010f4 .word 0x200010f4 + +0800dd80 <LoRaMacQueryTxPossible>: + 800dd80: b530 push {r4, r5, lr} + 800dd82: 4b2a ldr r3, [pc, #168] ; (800de2c <LoRaMacQueryTxPossible+0xac>) + 800dd84: b089 sub sp, #36 ; 0x24 + 800dd86: 4605 mov r5, r0 + 800dd88: f893 00dd ldrb.w r0, [r3, #221] ; 0xdd + 800dd8c: f88d 0002 strb.w r0, [sp, #2] + 800dd90: f893 00dc ldrb.w r0, [r3, #220] ; 0xdc + 800dd94: 6a9a ldr r2, [r3, #40] ; 0x28 + 800dd96: f88d 0003 strb.w r0, [sp, #3] + 800dd9a: 2000 movs r0, #0 + 800dd9c: 9201 str r2, [sp, #4] + 800dd9e: 9002 str r0, [sp, #8] + 800dda0: 460c mov r4, r1 + 800dda2: 2900 cmp r1, #0 + 800dda4: d03e beq.n 800de24 <LoRaMacQueryTxPossible+0xa4> + 800dda6: 9205 str r2, [sp, #20] + 800dda8: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 + 800ddac: 9206 str r2, [sp, #24] + 800ddae: 8f1a ldrh r2, [r3, #56] ; 0x38 + 800ddb0: f8d3 1128 ldr.w r1, [r3, #296] ; 0x128 + 800ddb4: 9103 str r1, [sp, #12] + 800ddb6: ba52 rev16 r2, r2 + 800ddb8: f893 111a ldrb.w r1, [r3, #282] ; 0x11a + 800ddbc: f8ad 201c strh.w r2, [sp, #28] + 800ddc0: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800ddc4: f893 3048 ldrb.w r3, [r3, #72] ; 0x48 + 800ddc8: f88d 0010 strb.w r0, [sp, #16] + 800ddcc: f88d 1011 strb.w r1, [sp, #17] + 800ddd0: f88d 201e strb.w r2, [sp, #30] + 800ddd4: f88d 301f strb.w r3, [sp, #31] + 800ddd8: f10d 0203 add.w r2, sp, #3 + 800dddc: ab01 add r3, sp, #4 + 800ddde: f10d 0102 add.w r1, sp, #2 + 800dde2: a803 add r0, sp, #12 + 800dde4: f000 fe6e bl 800eac4 <LoRaMacAdrCalcNext> + 800dde8: f99d 0002 ldrsb.w r0, [sp, #2] + 800ddec: f7fe f966 bl 800c0bc <GetMaxAppPayloadWithoutFOptsLength> + 800ddf0: 7060 strb r0, [r4, #1] + 800ddf2: a802 add r0, sp, #8 + 800ddf4: f000 ffb6 bl 800ed64 <LoRaMacCommandsGetSizeSerializedCmds> + 800ddf8: b9b0 cbnz r0, 800de28 <LoRaMacQueryTxPossible+0xa8> + 800ddfa: 9a02 ldr r2, [sp, #8] + 800ddfc: 2a0f cmp r2, #15 + 800ddfe: d80d bhi.n 800de1c <LoRaMacQueryTxPossible+0x9c> + 800de00: 7863 ldrb r3, [r4, #1] + 800de02: 429a cmp r2, r3 + 800de04: d80a bhi.n 800de1c <LoRaMacQueryTxPossible+0x9c> + 800de06: 4415 add r5, r2 + 800de08: 42ab cmp r3, r5 + 800de0a: eba3 0102 sub.w r1, r3, r2 + 800de0e: bf2c ite cs + 800de10: 2000 movcs r0, #0 + 800de12: 2001 movcc r0, #1 + 800de14: 7021 strb r1, [r4, #0] + 800de16: 00c0 lsls r0, r0, #3 + 800de18: b009 add sp, #36 ; 0x24 + 800de1a: bd30 pop {r4, r5, pc} + 800de1c: 2300 movs r3, #0 + 800de1e: 7023 strb r3, [r4, #0] + 800de20: 2008 movs r0, #8 + 800de22: e7f9 b.n 800de18 <LoRaMacQueryTxPossible+0x98> + 800de24: 2003 movs r0, #3 + 800de26: e7f7 b.n 800de18 <LoRaMacQueryTxPossible+0x98> + 800de28: 2013 movs r0, #19 + 800de2a: e7f5 b.n 800de18 <LoRaMacQueryTxPossible+0x98> + 800de2c: 20001864 .word 0x20001864 + +0800de30 <LoRaMacMibGetRequestConfirm>: + 800de30: b51f push {r0, r1, r2, r3, r4, lr} + 800de32: 4604 mov r4, r0 + 800de34: 2800 cmp r0, #0 + 800de36: f000 80fd beq.w 800e034 <LoRaMacMibGetRequestConfirm+0x204> + 800de3a: 7800 ldrb r0, [r0, #0] + 800de3c: 283f cmp r0, #63 ; 0x3f + 800de3e: f200 80f3 bhi.w 800e028 <LoRaMacMibGetRequestConfirm+0x1f8> + 800de42: e8df f010 tbh [pc, r0, lsl #1] + 800de46: 0040 .short 0x0040 + 800de48: 004b0046 .word 0x004b0046 + 800de4c: 00540050 .word 0x00540050 + 800de50: 005d0058 .word 0x005d0058 + 800de54: 00f100f1 .word 0x00f100f1 + 800de58: 00f100f1 .word 0x00f100f1 + 800de5c: 00f100f1 .word 0x00f100f1 + 800de60: 00f100f1 .word 0x00f100f1 + 800de64: 00680064 .word 0x00680064 + 800de68: 0077006c .word 0x0077006c + 800de6c: 0081007e .word 0x0081007e + 800de70: 00890084 .word 0x00890084 + 800de74: 008b0087 .word 0x008b0087 + 800de78: 0092008f .word 0x0092008f + 800de7c: 00980095 .word 0x00980095 + 800de80: 009e009b .word 0x009e009b + 800de84: 00aa00a2 .word 0x00aa00a2 + 800de88: 00ae00a6 .word 0x00ae00a6 + 800de8c: 00b500b1 .word 0x00b500b1 + 800de90: 00ba00be .word 0x00ba00be + 800de94: 00f100bc .word 0x00f100bc + 800de98: 00f100c2 .word 0x00f100c2 + 800de9c: 00f100f1 .word 0x00f100f1 + 800dea0: 00f100f1 .word 0x00f100f1 + 800dea4: 00f100f1 .word 0x00f100f1 + 800dea8: 00f100f1 .word 0x00f100f1 + 800deac: 00f100f1 .word 0x00f100f1 + 800deb0: 00f100f1 .word 0x00f100f1 + 800deb4: 00f100f1 .word 0x00f100f1 + 800deb8: 00ce00ca .word 0x00ce00ca + 800debc: 00d700d3 .word 0x00d700d3 + 800dec0: 00df00db .word 0x00df00db + 800dec4: 00e8 .short 0x00e8 + 800dec6: 4b5d ldr r3, [pc, #372] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dec8: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800decc: 7123 strb r3, [r4, #4] + 800dece: b004 add sp, #16 + 800ded0: bd10 pop {r4, pc} + 800ded2: 4b5a ldr r3, [pc, #360] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800ded4: f893 312c ldrb.w r3, [r3, #300] ; 0x12c + 800ded8: 7123 strb r3, [r4, #4] + 800deda: e002 b.n 800dee2 <LoRaMacMibGetRequestConfirm+0xb2> + 800dedc: 6860 ldr r0, [r4, #4] + 800dede: f003 fb65 bl 80115ac <SecureElementGetDevEui> + 800dee2: 2000 movs r0, #0 + 800dee4: e7f3 b.n 800dece <LoRaMacMibGetRequestConfirm+0x9e> + 800dee6: 6860 ldr r0, [r4, #4] + 800dee8: f003 fba6 bl 8011638 <SecureElementGetJoinEui> + 800deec: e7f9 b.n 800dee2 <LoRaMacMibGetRequestConfirm+0xb2> + 800deee: 4b53 ldr r3, [pc, #332] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800def0: f893 311a ldrb.w r3, [r3, #282] ; 0x11a + 800def4: e7f0 b.n 800ded8 <LoRaMacMibGetRequestConfirm+0xa8> + 800def6: 4b51 ldr r3, [pc, #324] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800def8: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 800defc: 6063 str r3, [r4, #4] + 800defe: e7f0 b.n 800dee2 <LoRaMacMibGetRequestConfirm+0xb2> + 800df00: 4b4e ldr r3, [pc, #312] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df02: 1d21 adds r1, r4, #4 + 800df04: f893 012c ldrb.w r0, [r3, #300] ; 0x12c + 800df08: f003 fbae bl 8011668 <SecureElementGetDevAddr> + 800df0c: e7e9 b.n 800dee2 <LoRaMacMibGetRequestConfirm+0xb2> + 800df0e: 4b4b ldr r3, [pc, #300] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df10: f893 3119 ldrb.w r3, [r3, #281] ; 0x119 + 800df14: e7e0 b.n 800ded8 <LoRaMacMibGetRequestConfirm+0xa8> + 800df16: 4b49 ldr r3, [pc, #292] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df18: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800df1c: e7dc b.n 800ded8 <LoRaMacMibGetRequestConfirm+0xa8> + 800df1e: 231d movs r3, #29 + 800df20: f88d 3008 strb.w r3, [sp, #8] + 800df24: 4b45 ldr r3, [pc, #276] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df26: a902 add r1, sp, #8 + 800df28: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800df2c: f001 fccc bl 800f8c8 <RegionGetPhyParam> + 800df30: 6060 str r0, [r4, #4] + 800df32: e7d6 b.n 800dee2 <LoRaMacMibGetRequestConfirm+0xb2> + 800df34: 4b42 ldr r3, [pc, #264] ; (800e040 <LoRaMacMibGetRequestConfirm+0x210>) + 800df36: 3404 adds r4, #4 + 800df38: e893 0003 ldmia.w r3, {r0, r1} + 800df3c: e884 0003 stmia.w r4, {r0, r1} + 800df40: e7cf b.n 800dee2 <LoRaMacMibGetRequestConfirm+0xb2> + 800df42: 4b40 ldr r3, [pc, #256] ; (800e044 <LoRaMacMibGetRequestConfirm+0x214>) + 800df44: 3404 adds r4, #4 + 800df46: e7f7 b.n 800df38 <LoRaMacMibGetRequestConfirm+0x108> + 800df48: 4b3f ldr r3, [pc, #252] ; (800e048 <LoRaMacMibGetRequestConfirm+0x218>) + 800df4a: 3404 adds r4, #4 + 800df4c: e7f4 b.n 800df38 <LoRaMacMibGetRequestConfirm+0x108> + 800df4e: 4b3f ldr r3, [pc, #252] ; (800e04c <LoRaMacMibGetRequestConfirm+0x21c>) + 800df50: 3404 adds r4, #4 + 800df52: e7f1 b.n 800df38 <LoRaMacMibGetRequestConfirm+0x108> + 800df54: 231b movs r3, #27 + 800df56: e7e3 b.n 800df20 <LoRaMacMibGetRequestConfirm+0xf0> + 800df58: 231a movs r3, #26 + 800df5a: e7e1 b.n 800df20 <LoRaMacMibGetRequestConfirm+0xf0> + 800df5c: 4b37 ldr r3, [pc, #220] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df5e: f893 3068 ldrb.w r3, [r3, #104] ; 0x68 + 800df62: e7b9 b.n 800ded8 <LoRaMacMibGetRequestConfirm+0xa8> + 800df64: 4b35 ldr r3, [pc, #212] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df66: 6d5b ldr r3, [r3, #84] ; 0x54 + 800df68: e7c8 b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800df6a: 4b34 ldr r3, [pc, #208] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df6c: 6d9b ldr r3, [r3, #88] ; 0x58 + 800df6e: e7c5 b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800df70: 4b32 ldr r3, [pc, #200] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df72: 6ddb ldr r3, [r3, #92] ; 0x5c + 800df74: e7c2 b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800df76: 4b31 ldr r3, [pc, #196] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df78: 6e1b ldr r3, [r3, #96] ; 0x60 + 800df7a: e7bf b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800df7c: 4b2f ldr r3, [pc, #188] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df7e: 6e5b ldr r3, [r3, #100] ; 0x64 + 800df80: e7bc b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800df82: 4b2e ldr r3, [pc, #184] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df84: f893 30dd ldrb.w r3, [r3, #221] ; 0xdd + 800df88: e7a6 b.n 800ded8 <LoRaMacMibGetRequestConfirm+0xa8> + 800df8a: 4b2c ldr r3, [pc, #176] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df8c: f893 3039 ldrb.w r3, [r3, #57] ; 0x39 + 800df90: e7a2 b.n 800ded8 <LoRaMacMibGetRequestConfirm+0xa8> + 800df92: 4b2a ldr r3, [pc, #168] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df94: f893 30dc ldrb.w r3, [r3, #220] ; 0xdc + 800df98: e79e b.n 800ded8 <LoRaMacMibGetRequestConfirm+0xa8> + 800df9a: 4b28 ldr r3, [pc, #160] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800df9c: f893 3038 ldrb.w r3, [r3, #56] ; 0x38 + 800dfa0: e79a b.n 800ded8 <LoRaMacMibGetRequestConfirm+0xa8> + 800dfa2: 4b26 ldr r3, [pc, #152] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dfa4: 6cdb ldr r3, [r3, #76] ; 0x4c + 800dfa6: e7a9 b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800dfa8: 4b24 ldr r3, [pc, #144] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dfaa: f893 3050 ldrb.w r3, [r3, #80] ; 0x50 + 800dfae: e793 b.n 800ded8 <LoRaMacMibGetRequestConfirm+0xa8> + 800dfb0: 4b22 ldr r3, [pc, #136] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dfb2: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 800dfb6: 6063 str r3, [r4, #4] + 800dfb8: e793 b.n 800dee2 <LoRaMacMibGetRequestConfirm+0xb2> + 800dfba: 4b20 ldr r3, [pc, #128] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dfbc: e79e b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800dfbe: 4b24 ldr r3, [pc, #144] ; (800e050 <LoRaMacMibGetRequestConfirm+0x220>) + 800dfc0: e79c b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800dfc2: 4b1e ldr r3, [pc, #120] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dfc4: f8d3 30cc ldr.w r3, [r3, #204] ; 0xcc + 800dfc8: e7f5 b.n 800dfb6 <LoRaMacMibGetRequestConfirm+0x186> + 800dfca: 4b1c ldr r3, [pc, #112] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dfcc: f8d3 3128 ldr.w r3, [r3, #296] ; 0x128 + 800dfd0: 6063 str r3, [r4, #4] + 800dfd2: f001 fd0d bl 800f9f0 <RegionGetVersion> + 800dfd6: 60a0 str r0, [r4, #8] + 800dfd8: e783 b.n 800dee2 <LoRaMacMibGetRequestConfirm+0xb2> + 800dfda: 4b18 ldr r3, [pc, #96] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dfdc: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800dfe0: e78c b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800dfe2: 4b16 ldr r3, [pc, #88] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dfe4: f8b3 3088 ldrh.w r3, [r3, #136] ; 0x88 + 800dfe8: 80a3 strh r3, [r4, #4] + 800dfea: e77a b.n 800dee2 <LoRaMacMibGetRequestConfirm+0xb2> + 800dfec: 4b13 ldr r3, [pc, #76] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dfee: f8b3 308a ldrh.w r3, [r3, #138] ; 0x8a + 800dff2: e7f9 b.n 800dfe8 <LoRaMacMibGetRequestConfirm+0x1b8> + 800dff4: 4b11 ldr r3, [pc, #68] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dff6: f8b3 30d0 ldrh.w r3, [r3, #208] ; 0xd0 + 800dffa: e7f5 b.n 800dfe8 <LoRaMacMibGetRequestConfirm+0x1b8> + 800dffc: 4b0f ldr r3, [pc, #60] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800dffe: f8b3 30d2 ldrh.w r3, [r3, #210] ; 0xd2 + 800e002: e7f1 b.n 800dfe8 <LoRaMacMibGetRequestConfirm+0x1b8> + 800e004: 4b0d ldr r3, [pc, #52] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800e006: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e00a: b10a cbz r2, 800e010 <LoRaMacMibGetRequestConfirm+0x1e0> + 800e00c: 2a06 cmp r2, #6 + 800e00e: d113 bne.n 800e038 <LoRaMacMibGetRequestConfirm+0x208> + 800e010: f8b3 374c ldrh.w r3, [r3, #1868] ; 0x74c + 800e014: e7e8 b.n 800dfe8 <LoRaMacMibGetRequestConfirm+0x1b8> + 800e016: 4b09 ldr r3, [pc, #36] ; (800e03c <LoRaMacMibGetRequestConfirm+0x20c>) + 800e018: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e01c: b10a cbz r2, 800e022 <LoRaMacMibGetRequestConfirm+0x1f2> + 800e01e: 2a06 cmp r2, #6 + 800e020: d10a bne.n 800e038 <LoRaMacMibGetRequestConfirm+0x208> + 800e022: f8d3 3750 ldr.w r3, [r3, #1872] ; 0x750 + 800e026: e769 b.n 800defc <LoRaMacMibGetRequestConfirm+0xcc> + 800e028: 4620 mov r0, r4 + 800e02a: b004 add sp, #16 + 800e02c: e8bd 4010 ldmia.w sp!, {r4, lr} + 800e030: f000 bdce b.w 800ebd0 <LoRaMacClassBMibGetRequestConfirm> + 800e034: 2003 movs r0, #3 + 800e036: e74a b.n 800dece <LoRaMacMibGetRequestConfirm+0x9e> + 800e038: 2018 movs r0, #24 + 800e03a: e748 b.n 800dece <LoRaMacMibGetRequestConfirm+0x9e> + 800e03c: 20001864 .word 0x20001864 + 800e040: 200018d0 .word 0x200018d0 + 800e044: 20001918 .word 0x20001918 + 800e048: 200018d8 .word 0x200018d8 + 800e04c: 20001920 .word 0x20001920 + 800e050: 200010f4 .word 0x200010f4 + +0800e054 <LoRaMacMibSetRequestConfirm>: + 800e054: b573 push {r0, r1, r4, r5, r6, lr} + 800e056: 4604 mov r4, r0 + 800e058: 2800 cmp r0, #0 + 800e05a: d05e beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e05c: 4da0 ldr r5, [pc, #640] ; (800e2e0 <LoRaMacMibSetRequestConfirm+0x28c>) + 800e05e: f8d5 3340 ldr.w r3, [r5, #832] ; 0x340 + 800e062: 079a lsls r2, r3, #30 + 800e064: f100 825f bmi.w 800e526 <LoRaMacMibSetRequestConfirm+0x4d2> + 800e068: 7802 ldrb r2, [r0, #0] + 800e06a: 2a3f cmp r2, #63 ; 0x3f + 800e06c: f200 8256 bhi.w 800e51c <LoRaMacMibSetRequestConfirm+0x4c8> + 800e070: e8df f012 tbh [pc, r2, lsl #1] + 800e074: 00460040 .word 0x00460040 + 800e078: 0056004e .word 0x0056004e + 800e07c: 005f005a .word 0x005f005a + 800e080: 00700064 .word 0x00700064 + 800e084: 007f007a .word 0x007f007a + 800e088: 00890084 .word 0x00890084 + 800e08c: 0093008e .word 0x0093008e + 800e090: 009d0098 .word 0x009d0098 + 800e094: 025400a7 .word 0x025400a7 + 800e098: 00cc00ac .word 0x00cc00ac + 800e09c: 010600df .word 0x010600df + 800e0a0: 01190128 .word 0x01190128 + 800e0a4: 013c012c .word 0x013c012c + 800e0a8: 01440140 .word 0x01440140 + 800e0ac: 014c0148 .word 0x014c0148 + 800e0b0: 01620150 .word 0x01620150 + 800e0b4: 0178018a .word 0x0178018a + 800e0b8: 01a2019c .word 0x01a2019c + 800e0bc: 01ae01a9 .word 0x01ae01a9 + 800e0c0: 025401b3 .word 0x025401b3 + 800e0c4: 02540218 .word 0x02540218 + 800e0c8: 02540254 .word 0x02540254 + 800e0cc: 02540254 .word 0x02540254 + 800e0d0: 02540254 .word 0x02540254 + 800e0d4: 02540254 .word 0x02540254 + 800e0d8: 02540254 .word 0x02540254 + 800e0dc: 02540254 .word 0x02540254 + 800e0e0: 02540254 .word 0x02540254 + 800e0e4: 02270254 .word 0x02270254 + 800e0e8: 0231022c .word 0x0231022c + 800e0ec: 023b0236 .word 0x023b0236 + 800e0f0: 024a0240 .word 0x024a0240 + 800e0f4: 7900 ldrb r0, [r0, #4] + 800e0f6: b002 add sp, #8 + 800e0f8: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 800e0fc: f7fe baae b.w 800c65c <SwitchClass> + 800e100: 7903 ldrb r3, [r0, #4] + 800e102: 2b02 cmp r3, #2 + 800e104: d009 beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e106: 4a77 ldr r2, [pc, #476] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e108: f882 312c strb.w r3, [r2, #300] ; 0x12c + 800e10c: 2000 movs r0, #0 + 800e10e: e005 b.n 800e11c <LoRaMacMibSetRequestConfirm+0xc8> + 800e110: 6840 ldr r0, [r0, #4] + 800e112: f003 fa3d bl 8011590 <SecureElementSetDevEui> + 800e116: 2800 cmp r0, #0 + 800e118: d0f8 beq.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e11a: 2003 movs r0, #3 + 800e11c: b002 add sp, #8 + 800e11e: bd70 pop {r4, r5, r6, pc} + 800e120: 6840 ldr r0, [r0, #4] + 800e122: f003 fa79 bl 8011618 <SecureElementSetJoinEui> + 800e126: e7f6 b.n 800e116 <LoRaMacMibSetRequestConfirm+0xc2> + 800e128: 4b6e ldr r3, [pc, #440] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e12a: 7902 ldrb r2, [r0, #4] + 800e12c: f883 211a strb.w r2, [r3, #282] ; 0x11a + 800e130: e7ec b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e132: 4b6c ldr r3, [pc, #432] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e134: 6842 ldr r2, [r0, #4] + 800e136: f8c3 20e0 str.w r2, [r3, #224] ; 0xe0 + 800e13a: e7e7 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e13c: 4d69 ldr r5, [pc, #420] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e13e: 6841 ldr r1, [r0, #4] + 800e140: f895 012c ldrb.w r0, [r5, #300] ; 0x12c + 800e144: f003 fa86 bl 8011654 <SecureElementSetDevAddr> + 800e148: 2800 cmp r0, #0 + 800e14a: d1e6 bne.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e14c: 6863 ldr r3, [r4, #4] + 800e14e: f8c5 30e4 str.w r3, [r5, #228] ; 0xe4 + 800e152: e7e3 b.n 800e11c <LoRaMacMibSetRequestConfirm+0xc8> + 800e154: 6841 ldr r1, [r0, #4] + 800e156: 2900 cmp r1, #0 + 800e158: d0df beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e15a: 2000 movs r0, #0 + 800e15c: f001 f9a8 bl 800f4b0 <LoRaMacCryptoSetKey> + 800e160: 2800 cmp r0, #0 + 800e162: d0d3 beq.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e164: 2011 movs r0, #17 + 800e166: e7d9 b.n 800e11c <LoRaMacMibSetRequestConfirm+0xc8> + 800e168: 6841 ldr r1, [r0, #4] + 800e16a: 2900 cmp r1, #0 + 800e16c: d0d5 beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e16e: 2001 movs r0, #1 + 800e170: e7f4 b.n 800e15c <LoRaMacMibSetRequestConfirm+0x108> + 800e172: 6841 ldr r1, [r0, #4] + 800e174: 2900 cmp r1, #0 + 800e176: d0d0 beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e178: 2008 movs r0, #8 + 800e17a: e7ef b.n 800e15c <LoRaMacMibSetRequestConfirm+0x108> + 800e17c: 6841 ldr r1, [r0, #4] + 800e17e: 2900 cmp r1, #0 + 800e180: d0cb beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e182: 2009 movs r0, #9 + 800e184: e7ea b.n 800e15c <LoRaMacMibSetRequestConfirm+0x108> + 800e186: 6841 ldr r1, [r0, #4] + 800e188: 2900 cmp r1, #0 + 800e18a: d0c6 beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e18c: 200c movs r0, #12 + 800e18e: e7e5 b.n 800e15c <LoRaMacMibSetRequestConfirm+0x108> + 800e190: 6841 ldr r1, [r0, #4] + 800e192: 2900 cmp r1, #0 + 800e194: d0c1 beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e196: 200d movs r0, #13 + 800e198: e7e0 b.n 800e15c <LoRaMacMibSetRequestConfirm+0x108> + 800e19a: 6841 ldr r1, [r0, #4] + 800e19c: 2900 cmp r1, #0 + 800e19e: d0bc beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e1a0: 200e movs r0, #14 + 800e1a2: e7db b.n 800e15c <LoRaMacMibSetRequestConfirm+0x108> + 800e1a4: 6841 ldr r1, [r0, #4] + 800e1a6: 2900 cmp r1, #0 + 800e1a8: d0b7 beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e1aa: 200f movs r0, #15 + 800e1ac: e7d6 b.n 800e15c <LoRaMacMibSetRequestConfirm+0x108> + 800e1ae: 4c4e ldr r4, [pc, #312] ; (800e2e8 <LoRaMacMibSetRequestConfirm+0x294>) + 800e1b0: 4b4c ldr r3, [pc, #304] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e1b2: 7900 ldrb r0, [r0, #4] + 800e1b4: f883 0119 strb.w r0, [r3, #281] ; 0x119 + 800e1b8: 6da3 ldr r3, [r4, #88] ; 0x58 + 800e1ba: 4798 blx r3 + 800e1bc: 6ae3 ldr r3, [r4, #44] ; 0x2c + 800e1be: 4798 blx r3 + 800e1c0: e7a4 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e1c2: 4b48 ldr r3, [pc, #288] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e1c4: 7902 ldrb r2, [r0, #4] + 800e1c6: f883 208c strb.w r2, [r3, #140] ; 0x8c + 800e1ca: e79f b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e1cc: 4d45 ldr r5, [pc, #276] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e1ce: 7a03 ldrb r3, [r0, #8] + 800e1d0: f88d 3000 strb.w r3, [sp] + 800e1d4: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e1d8: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800e1dc: f88d 3001 strb.w r3, [sp, #1] + 800e1e0: 2207 movs r2, #7 + 800e1e2: 4669 mov r1, sp + 800e1e4: f001 fb83 bl 800f8ee <RegionVerify> + 800e1e8: 2800 cmp r0, #0 + 800e1ea: d096 beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e1ec: 6863 ldr r3, [r4, #4] + 800e1ee: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e1f2: 9300 str r3, [sp, #0] + 800e1f4: 2200 movs r2, #0 + 800e1f6: 4669 mov r1, sp + 800e1f8: f001 fb79 bl 800f8ee <RegionVerify> + 800e1fc: 2800 cmp r0, #0 + 800e1fe: d08c beq.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e200: 356c adds r5, #108 ; 0x6c + 800e202: e9d4 0101 ldrd r0, r1, [r4, #4] + 800e206: e885 0003 stmia.w r5, {r0, r1} + 800e20a: e77f b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e20c: 4d35 ldr r5, [pc, #212] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e20e: 7a03 ldrb r3, [r0, #8] + 800e210: f88d 3000 strb.w r3, [sp] + 800e214: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e218: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800e21c: f88d 3001 strb.w r3, [sp, #1] + 800e220: 2207 movs r2, #7 + 800e222: 4669 mov r1, sp + 800e224: f001 fb63 bl 800f8ee <RegionVerify> + 800e228: 2800 cmp r0, #0 + 800e22a: f43f af76 beq.w 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e22e: 35b4 adds r5, #180 ; 0xb4 + 800e230: e7e7 b.n 800e202 <LoRaMacMibSetRequestConfirm+0x1ae> + 800e232: 4d2c ldr r5, [pc, #176] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e234: 7a03 ldrb r3, [r0, #8] + 800e236: f88d 3000 strb.w r3, [sp] + 800e23a: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e23e: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800e242: f88d 3001 strb.w r3, [sp, #1] + 800e246: 2207 movs r2, #7 + 800e248: 4669 mov r1, sp + 800e24a: f001 fb50 bl 800f8ee <RegionVerify> + 800e24e: 2800 cmp r0, #0 + 800e250: f43f af63 beq.w 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e254: e9d4 0101 ldrd r0, r1, [r4, #4] + 800e258: f105 0374 add.w r3, r5, #116 ; 0x74 + 800e25c: e883 0003 stmia.w r3, {r0, r1} + 800e260: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800e264: 2b02 cmp r3, #2 + 800e266: f47f af51 bne.w 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e26a: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800e26e: 2b00 cmp r3, #0 + 800e270: f43f af4c beq.w 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e274: 4b1c ldr r3, [pc, #112] ; (800e2e8 <LoRaMacMibSetRequestConfirm+0x294>) + 800e276: 6adb ldr r3, [r3, #44] ; 0x2c + 800e278: 4798 blx r3 + 800e27a: f7fe f9bf bl 800c5fc <OpenContinuousRxCWindow> + 800e27e: e745 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e280: 4d18 ldr r5, [pc, #96] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e282: 7a03 ldrb r3, [r0, #8] + 800e284: f88d 3000 strb.w r3, [sp] + 800e288: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e28c: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800e290: f88d 3001 strb.w r3, [sp, #1] + 800e294: 2207 movs r2, #7 + 800e296: 4669 mov r1, sp + 800e298: f001 fb29 bl 800f8ee <RegionVerify> + 800e29c: 2800 cmp r0, #0 + 800e29e: f43f af3c beq.w 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e2a2: 35bc adds r5, #188 ; 0xbc + 800e2a4: e7ad b.n 800e202 <LoRaMacMibSetRequestConfirm+0x1ae> + 800e2a6: 6843 ldr r3, [r0, #4] + 800e2a8: 9300 str r3, [sp, #0] + 800e2aa: 2301 movs r3, #1 + 800e2ac: f88d 3004 strb.w r3, [sp, #4] + 800e2b0: 4b0c ldr r3, [pc, #48] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e2b2: 4669 mov r1, sp + 800e2b4: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e2b8: f001 fb26 bl 800f908 <RegionChanMaskSet> + 800e2bc: 2800 cmp r0, #0 + 800e2be: f47f af25 bne.w 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e2c2: e72a b.n 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e2c4: 6843 ldr r3, [r0, #4] + 800e2c6: 9300 str r3, [sp, #0] + 800e2c8: 2300 movs r3, #0 + 800e2ca: e7ef b.n 800e2ac <LoRaMacMibSetRequestConfirm+0x258> + 800e2cc: 7903 ldrb r3, [r0, #4] + 800e2ce: 1e5a subs r2, r3, #1 + 800e2d0: 2a0e cmp r2, #14 + 800e2d2: f63f af22 bhi.w 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e2d6: 4a03 ldr r2, [pc, #12] ; (800e2e4 <LoRaMacMibSetRequestConfirm+0x290>) + 800e2d8: f882 3068 strb.w r3, [r2, #104] ; 0x68 + 800e2dc: e716 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e2de: bf00 nop + 800e2e0: 20001fd8 .word 0x20001fd8 + 800e2e4: 20001864 .word 0x20001864 + 800e2e8: 08015784 .word 0x08015784 + 800e2ec: 4b90 ldr r3, [pc, #576] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e2ee: 6842 ldr r2, [r0, #4] + 800e2f0: 655a str r2, [r3, #84] ; 0x54 + 800e2f2: e70b b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e2f4: 4b8e ldr r3, [pc, #568] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e2f6: 6842 ldr r2, [r0, #4] + 800e2f8: 659a str r2, [r3, #88] ; 0x58 + 800e2fa: e707 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e2fc: 4b8c ldr r3, [pc, #560] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e2fe: 6842 ldr r2, [r0, #4] + 800e300: 65da str r2, [r3, #92] ; 0x5c + 800e302: e703 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e304: 4b8a ldr r3, [pc, #552] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e306: 6842 ldr r2, [r0, #4] + 800e308: 661a str r2, [r3, #96] ; 0x60 + 800e30a: e6ff b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e30c: 4b88 ldr r3, [pc, #544] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e30e: 6842 ldr r2, [r0, #4] + 800e310: 665a str r2, [r3, #100] ; 0x64 + 800e312: e6fb b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e314: 4c86 ldr r4, [pc, #536] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e316: 7903 ldrb r3, [r0, #4] + 800e318: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800e31c: f88d 3000 strb.w r3, [sp] + 800e320: 2206 movs r2, #6 + 800e322: 4669 mov r1, sp + 800e324: f001 fae3 bl 800f8ee <RegionVerify> + 800e328: 2800 cmp r0, #0 + 800e32a: f43f aef6 beq.w 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e32e: f89d 3000 ldrb.w r3, [sp] + 800e332: f884 30dd strb.w r3, [r4, #221] ; 0xdd + 800e336: e6e9 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e338: 4c7d ldr r4, [pc, #500] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e33a: 7903 ldrb r3, [r0, #4] + 800e33c: f88d 3000 strb.w r3, [sp] + 800e340: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800e344: f894 307c ldrb.w r3, [r4, #124] ; 0x7c + 800e348: f88d 3002 strb.w r3, [sp, #2] + 800e34c: 2205 movs r2, #5 + 800e34e: 4669 mov r1, sp + 800e350: f001 facd bl 800f8ee <RegionVerify> + 800e354: 2800 cmp r0, #0 + 800e356: f43f aee0 beq.w 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e35a: f89d 3000 ldrb.w r3, [sp] + 800e35e: f884 3039 strb.w r3, [r4, #57] ; 0x39 + 800e362: e6d3 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e364: 4c72 ldr r4, [pc, #456] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e366: 7903 ldrb r3, [r0, #4] + 800e368: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800e36c: f88d 3000 strb.w r3, [sp] + 800e370: 220a movs r2, #10 + 800e372: 4669 mov r1, sp + 800e374: f001 fabb bl 800f8ee <RegionVerify> + 800e378: 2800 cmp r0, #0 + 800e37a: f43f aece beq.w 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e37e: f89d 3000 ldrb.w r3, [sp] + 800e382: f884 30dc strb.w r3, [r4, #220] ; 0xdc + 800e386: e6c1 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e388: 4c69 ldr r4, [pc, #420] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e38a: 7903 ldrb r3, [r0, #4] + 800e38c: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800e390: f88d 3000 strb.w r3, [sp] + 800e394: 2209 movs r2, #9 + 800e396: 4669 mov r1, sp + 800e398: f001 faa9 bl 800f8ee <RegionVerify> + 800e39c: 2800 cmp r0, #0 + 800e39e: f43f aebc beq.w 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e3a2: f89d 3000 ldrb.w r3, [sp] + 800e3a6: f884 3038 strb.w r3, [r4, #56] ; 0x38 + 800e3aa: e6af b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e3ac: 4b60 ldr r3, [pc, #384] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e3ae: 6842 ldr r2, [r0, #4] + 800e3b0: f8c3 2094 str.w r2, [r3, #148] ; 0x94 + 800e3b4: 64da str r2, [r3, #76] ; 0x4c + 800e3b6: e6a9 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e3b8: 4b5d ldr r3, [pc, #372] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e3ba: 7902 ldrb r2, [r0, #4] + 800e3bc: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 800e3c0: f883 2050 strb.w r2, [r3, #80] ; 0x50 + 800e3c4: e6a2 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e3c6: 4b5a ldr r3, [pc, #360] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e3c8: 6842 ldr r2, [r0, #4] + 800e3ca: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 800e3ce: e69d b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e3d0: 4b57 ldr r3, [pc, #348] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e3d2: 6842 ldr r2, [r0, #4] + 800e3d4: f8c3 20cc str.w r2, [r3, #204] ; 0xcc + 800e3d8: e698 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e3da: 2b01 cmp r3, #1 + 800e3dc: f040 80a3 bne.w 800e526 <LoRaMacMibSetRequestConfirm+0x4d2> + 800e3e0: 4c54 ldr r4, [pc, #336] ; (800e534 <LoRaMacMibSetRequestConfirm+0x4e0>) + 800e3e2: 2124 movs r1, #36 ; 0x24 + 800e3e4: 4620 mov r0, r4 + 800e3e6: f003 fa13 bl 8011810 <Crc32> + 800e3ea: 6a63 ldr r3, [r4, #36] ; 0x24 + 800e3ec: 4298 cmp r0, r3 + 800e3ee: d001 beq.n 800e3f4 <LoRaMacMibSetRequestConfirm+0x3a0> + 800e3f0: 2017 movs r0, #23 + 800e3f2: e693 b.n 800e11c <LoRaMacMibSetRequestConfirm+0xc8> + 800e3f4: 211c movs r1, #28 + 800e3f6: f104 0028 add.w r0, r4, #40 ; 0x28 + 800e3fa: f003 fa09 bl 8011810 <Crc32> + 800e3fe: 6c63 ldr r3, [r4, #68] ; 0x44 + 800e400: 4298 cmp r0, r3 + 800e402: d1f5 bne.n 800e3f0 <LoRaMacMibSetRequestConfirm+0x39c> + 800e404: 21fc movs r1, #252 ; 0xfc + 800e406: f104 0048 add.w r0, r4, #72 ; 0x48 + 800e40a: f003 fa01 bl 8011810 <Crc32> + 800e40e: f8d4 3144 ldr.w r3, [r4, #324] ; 0x144 + 800e412: 4298 cmp r0, r3 + 800e414: d1ec bne.n 800e3f0 <LoRaMacMibSetRequestConfirm+0x39c> + 800e416: 21d4 movs r1, #212 ; 0xd4 + 800e418: f504 70a4 add.w r0, r4, #328 ; 0x148 + 800e41c: f003 f9f8 bl 8011810 <Crc32> + 800e420: f8d4 321c ldr.w r3, [r4, #540] ; 0x21c + 800e424: 4298 cmp r0, r3 + 800e426: d1e3 bne.n 800e3f0 <LoRaMacMibSetRequestConfirm+0x39c> + 800e428: 2190 movs r1, #144 ; 0x90 + 800e42a: f504 7008 add.w r0, r4, #544 ; 0x220 + 800e42e: f003 f9ef bl 8011810 <Crc32> + 800e432: f8d4 32b0 ldr.w r3, [r4, #688] ; 0x2b0 + 800e436: 4298 cmp r0, r3 + 800e438: d1da bne.n 800e3f0 <LoRaMacMibSetRequestConfirm+0x39c> + 800e43a: f44f 6194 mov.w r1, #1184 ; 0x4a0 + 800e43e: f504 702d add.w r0, r4, #692 ; 0x2b4 + 800e442: f003 f9e5 bl 8011810 <Crc32> + 800e446: f8d4 3754 ldr.w r3, [r4, #1876] ; 0x754 + 800e44a: 4298 cmp r0, r3 + 800e44c: d1d0 bne.n 800e3f0 <LoRaMacMibSetRequestConfirm+0x39c> + 800e44e: 2114 movs r1, #20 + 800e450: f504 60eb add.w r0, r4, #1880 ; 0x758 + 800e454: f003 f9dc bl 8011810 <Crc32> + 800e458: f8d4 376c ldr.w r3, [r4, #1900] ; 0x76c + 800e45c: 4298 cmp r0, r3 + 800e45e: d1c7 bne.n 800e3f0 <LoRaMacMibSetRequestConfirm+0x39c> + 800e460: 4e33 ldr r6, [pc, #204] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e462: 4621 mov r1, r4 + 800e464: 4630 mov r0, r6 + 800e466: f44f 62ee mov.w r2, #1904 ; 0x770 + 800e46a: f003 f9bb bl 80117e4 <memcpy1> + 800e46e: 4620 mov r0, r4 + 800e470: f44f 62ee mov.w r2, #1904 ; 0x770 + 800e474: 2100 movs r1, #0 + 800e476: f003 f9c9 bl 801180c <memset1> + 800e47a: f895 3411 ldrb.w r3, [r5, #1041] ; 0x411 + 800e47e: f885 33e0 strb.w r3, [r5, #992] ; 0x3e0 + 800e482: 6f73 ldr r3, [r6, #116] ; 0x74 + 800e484: f8c5 33e4 str.w r3, [r5, #996] ; 0x3e4 + 800e488: f896 307d ldrb.w r3, [r6, #125] ; 0x7d + 800e48c: f885 33f0 strb.w r3, [r5, #1008] ; 0x3f0 + 800e490: f240 2301 movw r3, #513 ; 0x201 + 800e494: f8a5 33f2 strh.w r3, [r5, #1010] ; 0x3f2 + 800e498: 4b27 ldr r3, [pc, #156] ; (800e538 <LoRaMacMibSetRequestConfirm+0x4e4>) + 800e49a: f896 0119 ldrb.w r0, [r6, #281] ; 0x119 + 800e49e: 6d9b ldr r3, [r3, #88] ; 0x58 + 800e4a0: 4798 blx r3 + 800e4a2: e633 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e4a4: 7983 ldrb r3, [r0, #6] + 800e4a6: 2b01 cmp r3, #1 + 800e4a8: f63f ae37 bhi.w 800e11a <LoRaMacMibSetRequestConfirm+0xc6> + 800e4ac: 4b20 ldr r3, [pc, #128] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4ae: 6842 ldr r2, [r0, #4] + 800e4b0: 6840 ldr r0, [r0, #4] + 800e4b2: f8c3 2128 str.w r2, [r3, #296] ; 0x128 + 800e4b6: f000 fe89 bl 800f1cc <LoRaMacCryptoSetLrWanVersion> + 800e4ba: 2800 cmp r0, #0 + 800e4bc: f43f ae2e beq.w 800e11c <LoRaMacMibSetRequestConfirm+0xc8> + 800e4c0: e650 b.n 800e164 <LoRaMacMibSetRequestConfirm+0x110> + 800e4c2: 4b1b ldr r3, [pc, #108] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4c4: 6842 ldr r2, [r0, #4] + 800e4c6: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 800e4ca: e61f b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e4cc: 4b18 ldr r3, [pc, #96] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4ce: 8882 ldrh r2, [r0, #4] + 800e4d0: f8a3 2088 strh.w r2, [r3, #136] ; 0x88 + 800e4d4: e61a b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e4d6: 4b16 ldr r3, [pc, #88] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4d8: 8882 ldrh r2, [r0, #4] + 800e4da: f8a3 208a strh.w r2, [r3, #138] ; 0x8a + 800e4de: e615 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e4e0: 4b13 ldr r3, [pc, #76] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4e2: 8882 ldrh r2, [r0, #4] + 800e4e4: f8a3 20d0 strh.w r2, [r3, #208] ; 0xd0 + 800e4e8: e610 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e4ea: 4b11 ldr r3, [pc, #68] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4ec: 8882 ldrh r2, [r0, #4] + 800e4ee: f8a3 20d2 strh.w r2, [r3, #210] ; 0xd2 + 800e4f2: e60b b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e4f4: 4b0e ldr r3, [pc, #56] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4f6: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e4fa: b10a cbz r2, 800e500 <LoRaMacMibSetRequestConfirm+0x4ac> + 800e4fc: 2a06 cmp r2, #6 + 800e4fe: d114 bne.n 800e52a <LoRaMacMibSetRequestConfirm+0x4d6> + 800e500: 88a2 ldrh r2, [r4, #4] + 800e502: f8a3 274c strh.w r2, [r3, #1868] ; 0x74c + 800e506: e601 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e508: 4b09 ldr r3, [pc, #36] ; (800e530 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e50a: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e50e: b10a cbz r2, 800e514 <LoRaMacMibSetRequestConfirm+0x4c0> + 800e510: 2a06 cmp r2, #6 + 800e512: d10a bne.n 800e52a <LoRaMacMibSetRequestConfirm+0x4d6> + 800e514: 6862 ldr r2, [r4, #4] + 800e516: f8c3 2750 str.w r2, [r3, #1872] ; 0x750 + 800e51a: e5f7 b.n 800e10c <LoRaMacMibSetRequestConfirm+0xb8> + 800e51c: b002 add sp, #8 + 800e51e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 800e522: f000 bb57 b.w 800ebd4 <LoRaMacMibClassBSetRequestConfirm> + 800e526: 2001 movs r0, #1 + 800e528: e5f8 b.n 800e11c <LoRaMacMibSetRequestConfirm+0xc8> + 800e52a: 2018 movs r0, #24 + 800e52c: e5f6 b.n 800e11c <LoRaMacMibSetRequestConfirm+0xc8> + 800e52e: bf00 nop + 800e530: 20001864 .word 0x20001864 + 800e534: 200010f4 .word 0x200010f4 + 800e538: 08015784 .word 0x08015784 + +0800e53c <LoRaMacMlmeRequest>: + 800e53c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800e540: b086 sub sp, #24 + 800e542: 2300 movs r3, #0 + 800e544: f8ad 3000 strh.w r3, [sp] + 800e548: 4606 mov r6, r0 + 800e54a: 2800 cmp r0, #0 + 800e54c: f000 80e2 beq.w 800e714 <LoRaMacMlmeRequest+0x1d8> + 800e550: f7fe fd7e bl 800d050 <LoRaMacIsBusy> + 800e554: b120 cbz r0, 800e560 <LoRaMacMlmeRequest+0x24> + 800e556: 2401 movs r4, #1 + 800e558: 4620 mov r0, r4 + 800e55a: b006 add sp, #24 + 800e55c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800e560: f000 fd2c bl 800efbc <LoRaMacConfirmQueueIsFull> + 800e564: 2800 cmp r0, #0 + 800e566: d1f6 bne.n 800e556 <LoRaMacMlmeRequest+0x1a> + 800e568: f000 fd22 bl 800efb0 <LoRaMacConfirmQueueGetCnt> + 800e56c: 4601 mov r1, r0 + 800e56e: b918 cbnz r0, 800e578 <LoRaMacMlmeRequest+0x3c> + 800e570: 4869 ldr r0, [pc, #420] ; (800e718 <LoRaMacMlmeRequest+0x1dc>) + 800e572: 2214 movs r2, #20 + 800e574: f003 f94a bl 801180c <memset1> + 800e578: 4d68 ldr r5, [pc, #416] ; (800e71c <LoRaMacMlmeRequest+0x1e0>) + 800e57a: f895 3481 ldrb.w r3, [r5, #1153] ; 0x481 + 800e57e: 2201 movs r2, #1 + 800e580: f043 0304 orr.w r3, r3, #4 + 800e584: f885 2449 strb.w r2, [r5, #1097] ; 0x449 + 800e588: f885 3481 strb.w r3, [r5, #1153] ; 0x481 + 800e58c: 7833 ldrb r3, [r6, #0] + 800e58e: f88d 3004 strb.w r3, [sp, #4] + 800e592: 2100 movs r1, #0 + 800e594: 3b01 subs r3, #1 + 800e596: f88d 2005 strb.w r2, [sp, #5] + 800e59a: f88d 1007 strb.w r1, [sp, #7] + 800e59e: 2b0d cmp r3, #13 + 800e5a0: f200 80b0 bhi.w 800e704 <LoRaMacMlmeRequest+0x1c8> + 800e5a4: e8df f003 tbb [pc, r3] + 800e5a8: aeaeae07 .word 0xaeaeae07 + 800e5ac: ae7d5a52 .word 0xae7d5a52 + 800e5b0: a2ae85ae .word 0xa2ae85ae + 800e5b4: 9e8f .short 0x9e8f + 800e5b6: f8d5 4340 ldr.w r4, [r5, #832] ; 0x340 + 800e5ba: f014 0420 ands.w r4, r4, #32 + 800e5be: d1ca bne.n 800e556 <LoRaMacMlmeRequest+0x1a> + 800e5c0: f8df 815c ldr.w r8, [pc, #348] ; 800e720 <LoRaMacMlmeRequest+0x1e4> + 800e5c4: 4f57 ldr r7, [pc, #348] ; (800e724 <LoRaMacMlmeRequest+0x1e8>) + 800e5c6: f7fe f8b7 bl 800c738 <ResetMacParameters.constprop.0> + 800e5ca: 4622 mov r2, r4 + 800e5cc: f996 1005 ldrsb.w r1, [r6, #5] + 800e5d0: f898 0048 ldrb.w r0, [r8, #72] ; 0x48 + 800e5d4: f001 f9e5 bl 800f9a2 <RegionAlternateDr> + 800e5d8: f888 0039 strb.w r0, [r8, #57] ; 0x39 + 800e5dc: 79b3 ldrb r3, [r6, #6] + 800e5de: f888 3038 strb.w r3, [r8, #56] ; 0x38 + 800e5e2: 4620 mov r0, r4 + 800e5e4: 2307 movs r3, #7 + 800e5e6: f88d 3005 strb.w r3, [sp, #5] + 800e5ea: f7fe f837 bl 800c65c <SwitchClass> + 800e5ee: 23ff movs r3, #255 ; 0xff + 800e5f0: f507 7086 add.w r0, r7, #268 ; 0x10c + 800e5f4: f8a5 310c strh.w r3, [r5, #268] ; 0x10c + 800e5f8: f885 4104 strb.w r4, [r5, #260] ; 0x104 + 800e5fc: f8c5 7108 str.w r7, [r5, #264] ; 0x108 + 800e600: f003 f81a bl 8011638 <SecureElementGetJoinEui> + 800e604: f507 708a add.w r0, r7, #276 ; 0x114 + 800e608: f002 ffd0 bl 80115ac <SecureElementGetDevEui> + 800e60c: 4620 mov r0, r4 + 800e60e: f7fd fe7f bl 800c310 <ScheduleTx> + 800e612: 4604 mov r4, r0 + 800e614: b140 cbz r0, 800e628 <LoRaMacMlmeRequest+0xec> + 800e616: f996 1005 ldrsb.w r1, [r6, #5] + 800e61a: f898 0048 ldrb.w r0, [r8, #72] ; 0x48 + 800e61e: 2201 movs r2, #1 + 800e620: f001 f9bf bl 800f9a2 <RegionAlternateDr> + 800e624: f888 0039 strb.w r0, [r8, #57] ; 0x39 + 800e628: f8d5 3484 ldr.w r3, [r5, #1156] ; 0x484 + 800e62c: 6133 str r3, [r6, #16] + 800e62e: 2c00 cmp r4, #0 + 800e630: d06c beq.n 800e70c <LoRaMacMlmeRequest+0x1d0> + 800e632: f000 fcbd bl 800efb0 <LoRaMacConfirmQueueGetCnt> + 800e636: 2800 cmp r0, #0 + 800e638: d18e bne.n 800e558 <LoRaMacMlmeRequest+0x1c> + 800e63a: f895 3481 ldrb.w r3, [r5, #1153] ; 0x481 + 800e63e: f885 0410 strb.w r0, [r5, #1040] ; 0x410 + 800e642: f360 0382 bfi r3, r0, #2, #1 + 800e646: f885 3481 strb.w r3, [r5, #1153] ; 0x481 + 800e64a: e785 b.n 800e558 <LoRaMacMlmeRequest+0x1c> + 800e64c: 2200 movs r2, #0 + 800e64e: 4669 mov r1, sp + 800e650: 2002 movs r0, #2 + 800e652: f000 fadb bl 800ec0c <LoRaMacCommandsAddCmd> + 800e656: b310 cbz r0, 800e69e <LoRaMacMlmeRequest+0x162> + 800e658: 2413 movs r4, #19 + 800e65a: e7e5 b.n 800e628 <LoRaMacMlmeRequest+0xec> + 800e65c: f895 3411 ldrb.w r3, [r5, #1041] ; 0x411 + 800e660: f88d 3008 strb.w r3, [sp, #8] + 800e664: 4b2e ldr r3, [pc, #184] ; (800e720 <LoRaMacMlmeRequest+0x1e4>) + 800e666: 88b2 ldrh r2, [r6, #4] + 800e668: f893 1039 ldrb.w r1, [r3, #57] ; 0x39 + 800e66c: f88d 1009 strb.w r1, [sp, #9] + 800e670: f893 1038 ldrb.w r1, [r3, #56] ; 0x38 + 800e674: f88d 100a strb.w r1, [sp, #10] + 800e678: f8d3 1080 ldr.w r1, [r3, #128] ; 0x80 + 800e67c: 9103 str r1, [sp, #12] + 800e67e: f8d3 1084 ldr.w r1, [r3, #132] ; 0x84 + 800e682: 9104 str r1, [sp, #16] + 800e684: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e688: f8ad 2014 strh.w r2, [sp, #20] + 800e68c: a902 add r1, sp, #8 + 800e68e: f001 f99d bl 800f9cc <RegionSetContinuousWave> + 800e692: f8d5 3340 ldr.w r3, [r5, #832] ; 0x340 + 800e696: f043 0302 orr.w r3, r3, #2 + 800e69a: f8c5 3340 str.w r3, [r5, #832] ; 0x340 + 800e69e: 2400 movs r4, #0 + 800e6a0: e7c2 b.n 800e628 <LoRaMacMlmeRequest+0xec> + 800e6a2: 4b21 ldr r3, [pc, #132] ; (800e728 <LoRaMacMlmeRequest+0x1ec>) + 800e6a4: 88b2 ldrh r2, [r6, #4] + 800e6a6: f996 100c ldrsb.w r1, [r6, #12] + 800e6aa: 68b0 ldr r0, [r6, #8] + 800e6ac: 6bdb ldr r3, [r3, #60] ; 0x3c + 800e6ae: 4798 blx r3 + 800e6b0: e7ef b.n 800e692 <LoRaMacMlmeRequest+0x156> + 800e6b2: a902 add r1, sp, #8 + 800e6b4: 200d movs r0, #13 + 800e6b6: f000 fb27 bl 800ed08 <LoRaMacCommandsGetCmd> + 800e6ba: 2800 cmp r0, #0 + 800e6bc: d0ef beq.n 800e69e <LoRaMacMlmeRequest+0x162> + 800e6be: 2200 movs r2, #0 + 800e6c0: 4669 mov r1, sp + 800e6c2: 200d movs r0, #13 + 800e6c4: e7c5 b.n 800e652 <LoRaMacMlmeRequest+0x116> + 800e6c6: 4b16 ldr r3, [pc, #88] ; (800e720 <LoRaMacMlmeRequest+0x1e4>) + 800e6c8: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800e6cc: b9d3 cbnz r3, 800e704 <LoRaMacMlmeRequest+0x1c8> + 800e6ce: 7934 ldrb r4, [r6, #4] + 800e6d0: f004 0007 and.w r0, r4, #7 + 800e6d4: f000 fa77 bl 800ebc6 <LoRaMacClassBSetPingSlotInfo> + 800e6d8: f88d 4000 strb.w r4, [sp] + 800e6dc: 2201 movs r2, #1 + 800e6de: 4669 mov r1, sp + 800e6e0: 2010 movs r0, #16 + 800e6e2: e7b6 b.n 800e652 <LoRaMacMlmeRequest+0x116> + 800e6e4: 2200 movs r2, #0 + 800e6e6: 4669 mov r1, sp + 800e6e8: 2012 movs r0, #18 + 800e6ea: e7b2 b.n 800e652 <LoRaMacMlmeRequest+0x116> + 800e6ec: f88d 2007 strb.w r2, [sp, #7] + 800e6f0: f000 fa5a bl 800eba8 <LoRaMacClassBIsAcquisitionInProgress> + 800e6f4: 4604 mov r4, r0 + 800e6f6: b938 cbnz r0, 800e708 <LoRaMacMlmeRequest+0x1cc> + 800e6f8: f000 fa53 bl 800eba2 <LoRaMacClassBSetBeaconState> + 800e6fc: 4620 mov r0, r4 + 800e6fe: f000 fa55 bl 800ebac <LoRaMacClassBBeaconTimerEvent> + 800e702: e791 b.n 800e628 <LoRaMacMlmeRequest+0xec> + 800e704: 2402 movs r4, #2 + 800e706: e78f b.n 800e628 <LoRaMacMlmeRequest+0xec> + 800e708: 2401 movs r4, #1 + 800e70a: e78d b.n 800e628 <LoRaMacMlmeRequest+0xec> + 800e70c: a801 add r0, sp, #4 + 800e70e: f000 fba1 bl 800ee54 <LoRaMacConfirmQueueAdd> + 800e712: e721 b.n 800e558 <LoRaMacMlmeRequest+0x1c> + 800e714: 2403 movs r4, #3 + 800e716: e71f b.n 800e558 <LoRaMacMlmeRequest+0x1c> + 800e718: 20002420 .word 0x20002420 + 800e71c: 20001fd8 .word 0x20001fd8 + 800e720: 20001864 .word 0x20001864 + 800e724: 20001fda .word 0x20001fda + 800e728: 08015784 .word 0x08015784 + +0800e72c <LoRaMacMcpsRequest>: + 800e72c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800e730: b091 sub sp, #68 ; 0x44 + 800e732: 2600 movs r6, #0 + 800e734: 9103 str r1, [sp, #12] + 800e736: 4605 mov r5, r0 + 800e738: b918 cbnz r0, 800e742 <LoRaMacMcpsRequest+0x16> + 800e73a: 2003 movs r0, #3 + 800e73c: b011 add sp, #68 ; 0x44 + 800e73e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800e742: f7fe fc85 bl 800d050 <LoRaMacIsBusy> + 800e746: 4682 mov sl, r0 + 800e748: 2800 cmp r0, #0 + 800e74a: f040 8164 bne.w 800ea16 <LoRaMacMcpsRequest+0x2ea> + 800e74e: 4cb8 ldr r4, [pc, #736] ; (800ea30 <LoRaMacMcpsRequest+0x304>) + 800e750: 2214 movs r2, #20 + 800e752: 4601 mov r1, r0 + 800e754: 4607 mov r7, r0 + 800e756: f204 4034 addw r0, r4, #1076 ; 0x434 + 800e75a: f003 f857 bl 801180c <memset1> + 800e75e: 2301 movs r3, #1 + 800e760: f884 3435 strb.w r3, [r4, #1077] ; 0x435 + 800e764: f884 340e strb.w r3, [r4, #1038] ; 0x40e + 800e768: 782a ldrb r2, [r5, #0] + 800e76a: 429a cmp r2, r3 + 800e76c: f000 80b0 beq.w 800e8d0 <LoRaMacMcpsRequest+0x1a4> + 800e770: 2a03 cmp r2, #3 + 800e772: f000 80bf beq.w 800e8f4 <LoRaMacMcpsRequest+0x1c8> + 800e776: 2a00 cmp r2, #0 + 800e778: f040 80c9 bne.w 800e90e <LoRaMacMcpsRequest+0x1e2> + 800e77c: f884 340d strb.w r3, [r4, #1037] ; 0x40d + 800e780: 2202 movs r2, #2 + 800e782: f895 9004 ldrb.w r9, [r5, #4] + 800e786: f8d5 8008 ldr.w r8, [r5, #8] + 800e78a: 89ae ldrh r6, [r5, #12] + 800e78c: f995 b00e ldrsb.w fp, [r5, #14] + 800e790: f362 1747 bfi r7, r2, #5, #3 + 800e794: 469a mov sl, r3 + 800e796: 4ba7 ldr r3, [pc, #668] ; (800ea34 <LoRaMacMcpsRequest+0x308>) + 800e798: 2402 movs r4, #2 + 800e79a: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800e79e: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e7a2: f88d 4024 strb.w r4, [sp, #36] ; 0x24 + 800e7a6: a909 add r1, sp, #36 ; 0x24 + 800e7a8: f88d 2026 strb.w r2, [sp, #38] ; 0x26 + 800e7ac: f001 f88c bl 800f8c8 <RegionGetPhyParam> + 800e7b0: f1ba 0f00 cmp.w sl, #0 + 800e7b4: f000 812d beq.w 800ea12 <LoRaMacMcpsRequest+0x2e6> + 800e7b8: 4b9e ldr r3, [pc, #632] ; (800ea34 <LoRaMacMcpsRequest+0x308>) + 800e7ba: f893 211a ldrb.w r2, [r3, #282] ; 0x11a + 800e7be: b9b2 cbnz r2, 800e7ee <LoRaMacMcpsRequest+0xc2> + 800e7c0: b240 sxtb r0, r0 + 800e7c2: 4558 cmp r0, fp + 800e7c4: bfb8 it lt + 800e7c6: 4658 movlt r0, fp + 800e7c8: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800e7cc: f88d 0014 strb.w r0, [sp, #20] + 800e7d0: f88d 2016 strb.w r2, [sp, #22] + 800e7d4: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e7d8: 2205 movs r2, #5 + 800e7da: a905 add r1, sp, #20 + 800e7dc: f001 f887 bl 800f8ee <RegionVerify> + 800e7e0: 2800 cmp r0, #0 + 800e7e2: d0aa beq.n 800e73a <LoRaMacMcpsRequest+0xe> + 800e7e4: 4b93 ldr r3, [pc, #588] ; (800ea34 <LoRaMacMcpsRequest+0x308>) + 800e7e6: f89d 2014 ldrb.w r2, [sp, #20] + 800e7ea: f883 2039 strb.w r2, [r3, #57] ; 0x39 + 800e7ee: 8f19 ldrh r1, [r3, #56] ; 0x38 + 800e7f0: 8f1a ldrh r2, [r3, #56] ; 0x38 + 800e7f2: f893 012c ldrb.w r0, [r3, #300] ; 0x12c + 800e7f6: 9102 str r1, [sp, #8] + 800e7f8: 6a99 ldr r1, [r3, #40] ; 0x28 + 800e7fa: 9106 str r1, [sp, #24] + 800e7fc: ba52 rev16 r2, r2 + 800e7fe: 2800 cmp r0, #0 + 800e800: f000 8105 beq.w 800ea0e <LoRaMacMcpsRequest+0x2e2> + 800e804: f893 011b ldrb.w r0, [r3, #283] ; 0x11b + 800e808: b900 cbnz r0, 800e80c <LoRaMacMcpsRequest+0xe0> + 800e80a: 6318 str r0, [r3, #48] ; 0x30 + 800e80c: f893 0118 ldrb.w r0, [r3, #280] ; 0x118 + 800e810: f8ad 203c strh.w r2, [sp, #60] ; 0x3c + 800e814: 3801 subs r0, #1 + 800e816: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800e81a: f88d 203e strb.w r2, [sp, #62] ; 0x3e + 800e81e: f1d0 0b00 rsbs fp, r0, #0 + 800e822: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e826: f88d 203f strb.w r2, [sp, #63] ; 0x3f + 800e82a: eb4b 0b00 adc.w fp, fp, r0 + 800e82e: 4a82 ldr r2, [pc, #520] ; (800ea38 <LoRaMacMcpsRequest+0x30c>) + 800e830: f893 003a ldrb.w r0, [r3, #58] ; 0x3a + 800e834: f893 411a ldrb.w r4, [r3, #282] ; 0x11a + 800e838: 9001 str r0, [sp, #4] + 800e83a: 910d str r1, [sp, #52] ; 0x34 + 800e83c: f04f 0001 mov.w r0, #1 + 800e840: f8d3 1088 ldr.w r1, [r3, #136] ; 0x88 + 800e844: f8d3 3128 ldr.w r3, [r3, #296] ; 0x128 + 800e848: f88d 0030 strb.w r0, [sp, #48] ; 0x30 + 800e84c: 910e str r1, [sp, #56] ; 0x38 + 800e84e: 930b str r3, [sp, #44] ; 0x2c + 800e850: 1c51 adds r1, r2, #1 + 800e852: ab06 add r3, sp, #24 + 800e854: a80b add r0, sp, #44 ; 0x2c + 800e856: f88d 4031 strb.w r4, [sp, #49] ; 0x31 + 800e85a: f000 f933 bl 800eac4 <LoRaMacAdrCalcNext> + 800e85e: 9b01 ldr r3, [sp, #4] + 800e860: ea4f 1b0b mov.w fp, fp, lsl #4 + 800e864: ea4b 1b43 orr.w fp, fp, r3, lsl #5 + 800e868: f04f 0a00 mov.w sl, #0 + 800e86c: ea4b 1b80 orr.w fp, fp, r0, lsl #6 + 800e870: ea4b 13c4 orr.w r3, fp, r4, lsl #7 + 800e874: 45d0 cmp r8, sl + 800e876: 4c6e ldr r4, [pc, #440] ; (800ea30 <LoRaMacMcpsRequest+0x304>) + 800e878: 9301 str r3, [sp, #4] + 800e87a: bf08 it eq + 800e87c: 4656 moveq r6, sl + 800e87e: 4632 mov r2, r6 + 800e880: 4641 mov r1, r8 + 800e882: f504 709c add.w r0, r4, #312 ; 0x138 + 800e886: 469b mov fp, r3 + 800e888: e9cd aa07 strd sl, sl, [sp, #28] + 800e88c: f8a4 a000 strh.w sl, [r4] + 800e890: f884 a410 strb.w sl, [r4, #1040] ; 0x410 + 800e894: f002 ffa6 bl 80117e4 <memcpy1> + 800e898: b2f9 uxtb r1, r7 + 800e89a: 70a7 strb r7, [r4, #2] + 800e89c: f3c7 1742 ubfx r7, r7, #5, #3 + 800e8a0: b2f2 uxtb r2, r6 + 800e8a2: 2f04 cmp r7, #4 + 800e8a4: 4e63 ldr r6, [pc, #396] ; (800ea34 <LoRaMacMcpsRequest+0x308>) + 800e8a6: 9b01 ldr r3, [sp, #4] + 800e8a8: f884 2237 strb.w r2, [r4, #567] ; 0x237 + 800e8ac: d033 beq.n 800e916 <LoRaMacMcpsRequest+0x1ea> + 800e8ae: 2f07 cmp r7, #7 + 800e8b0: f000 809d beq.w 800e9ee <LoRaMacMcpsRequest+0x2c2> + 800e8b4: 2f02 cmp r7, #2 + 800e8b6: d032 beq.n 800e91e <LoRaMacMcpsRequest+0x1f2> + 800e8b8: 2002 movs r0, #2 + 800e8ba: 9b02 ldr r3, [sp, #8] + 800e8bc: 8733 strh r3, [r6, #56] ; 0x38 + 800e8be: 4b5c ldr r3, [pc, #368] ; (800ea30 <LoRaMacMcpsRequest+0x304>) + 800e8c0: 2200 movs r2, #0 + 800e8c2: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + 800e8c6: 4b5a ldr r3, [pc, #360] ; (800ea30 <LoRaMacMcpsRequest+0x304>) + 800e8c8: f8d3 3484 ldr.w r3, [r3, #1156] ; 0x484 + 800e8cc: 612b str r3, [r5, #16] + 800e8ce: e735 b.n 800e73c <LoRaMacMcpsRequest+0x10> + 800e8d0: 7beb ldrb r3, [r5, #15] + 800e8d2: 2b08 cmp r3, #8 + 800e8d4: bf28 it cs + 800e8d6: 2308 movcs r3, #8 + 800e8d8: f884 340d strb.w r3, [r4, #1037] ; 0x40d + 800e8dc: 2304 movs r3, #4 + 800e8de: f895 9004 ldrb.w r9, [r5, #4] + 800e8e2: f8d5 8008 ldr.w r8, [r5, #8] + 800e8e6: 89ae ldrh r6, [r5, #12] + 800e8e8: f995 b00e ldrsb.w fp, [r5, #14] + 800e8ec: f363 1747 bfi r7, r3, #5, #3 + 800e8f0: 4692 mov sl, r2 + 800e8f2: e750 b.n 800e796 <LoRaMacMcpsRequest+0x6a> + 800e8f4: f884 340d strb.w r3, [r4, #1037] ; 0x40d + 800e8f8: f8d5 8004 ldr.w r8, [r5, #4] + 800e8fc: 892e ldrh r6, [r5, #8] + 800e8fe: f995 b00a ldrsb.w fp, [r5, #10] + 800e902: f067 071f orn r7, r7, #31 + 800e906: 469a mov sl, r3 + 800e908: f04f 0900 mov.w r9, #0 + 800e90c: e743 b.n 800e796 <LoRaMacMcpsRequest+0x6a> + 800e90e: 46d3 mov fp, sl + 800e910: 46d0 mov r8, sl + 800e912: 46d1 mov r9, sl + 800e914: e73f b.n 800e796 <LoRaMacMcpsRequest+0x6a> + 800e916: f04f 0001 mov.w r0, #1 + 800e91a: f884 0410 strb.w r0, [r4, #1040] ; 0x410 + 800e91e: 4f47 ldr r7, [pc, #284] ; (800ea3c <LoRaMacMcpsRequest+0x310>) + 800e920: f884 110d strb.w r1, [r4, #269] ; 0x10d + 800e924: 2004 movs r0, #4 + 800e926: f884 0104 strb.w r0, [r4, #260] ; 0x104 + 800e92a: 20ff movs r0, #255 ; 0xff + 800e92c: f8d6 10e4 ldr.w r1, [r6, #228] ; 0xe4 + 800e930: f884 010c strb.w r0, [r4, #268] ; 0x10c + 800e934: f884 3114 strb.w r3, [r4, #276] ; 0x114 + 800e938: a807 add r0, sp, #28 + 800e93a: f507 739b add.w r3, r7, #310 ; 0x136 + 800e93e: f8c4 7108 str.w r7, [r4, #264] ; 0x108 + 800e942: f884 9128 strb.w r9, [r4, #296] ; 0x128 + 800e946: f8c4 1110 str.w r1, [r4, #272] ; 0x110 + 800e94a: f884 2130 strb.w r2, [r4, #304] ; 0x130 + 800e94e: f8c4 312c str.w r3, [r4, #300] ; 0x12c + 800e952: f000 fc43 bl 800f1dc <LoRaMacCryptoGetFCntUp> + 800e956: 2800 cmp r0, #0 + 800e958: d157 bne.n 800ea0a <LoRaMacMcpsRequest+0x2de> + 800e95a: 9b07 ldr r3, [sp, #28] + 800e95c: f8a4 0438 strh.w r0, [r4, #1080] ; 0x438 + 800e960: a808 add r0, sp, #32 + 800e962: f8a4 3116 strh.w r3, [r4, #278] ; 0x116 + 800e966: f8c4 3440 str.w r3, [r4, #1088] ; 0x440 + 800e96a: f000 f9fb bl 800ed64 <LoRaMacCommandsGetSizeSerializedCmds> + 800e96e: bb60 cbnz r0, 800e9ca <LoRaMacMcpsRequest+0x29e> + 800e970: 9b08 ldr r3, [sp, #32] + 800e972: b1ab cbz r3, 800e9a0 <LoRaMacMcpsRequest+0x274> + 800e974: f996 0039 ldrsb.w r0, [r6, #57] ; 0x39 + 800e978: f7fd fba0 bl 800c0bc <GetMaxAppPayloadWithoutFOptsLength> + 800e97c: f894 3237 ldrb.w r3, [r4, #567] ; 0x237 + 800e980: b32b cbz r3, 800e9ce <LoRaMacMcpsRequest+0x2a2> + 800e982: 9b08 ldr r3, [sp, #32] + 800e984: 2b0f cmp r3, #15 + 800e986: d819 bhi.n 800e9bc <LoRaMacMcpsRequest+0x290> + 800e988: f507 728b add.w r2, r7, #278 ; 0x116 + 800e98c: a908 add r1, sp, #32 + 800e98e: 200f movs r0, #15 + 800e990: f000 f9f4 bl 800ed7c <LoRaMacCommandsSerializeCmds> + 800e994: b9c8 cbnz r0, 800e9ca <LoRaMacMcpsRequest+0x29e> + 800e996: 9b08 ldr r3, [sp, #32] + 800e998: f363 0b03 bfi fp, r3, #0, #4 + 800e99c: f884 b114 strb.w fp, [r4, #276] ; 0x114 + 800e9a0: 9803 ldr r0, [sp, #12] + 800e9a2: f7fd fcb5 bl 800c310 <ScheduleTx> + 800e9a6: 2800 cmp r0, #0 + 800e9a8: d187 bne.n 800e8ba <LoRaMacMcpsRequest+0x18e> + 800e9aa: 9b06 ldr r3, [sp, #24] + 800e9ac: f886 003a strb.w r0, [r6, #58] ; 0x3a + 800e9b0: 62b3 str r3, [r6, #40] ; 0x28 + 800e9b2: f000 f9b7 bl 800ed24 <LoRaMacCommandsRemoveNoneStickyCmds> + 800e9b6: b380 cbz r0, 800ea1a <LoRaMacMcpsRequest+0x2ee> + 800e9b8: 2013 movs r0, #19 + 800e9ba: e780 b.n 800e8be <LoRaMacMcpsRequest+0x192> + 800e9bc: f207 4286 addw r2, r7, #1158 ; 0x486 + 800e9c0: a908 add r1, sp, #32 + 800e9c2: f000 f9db bl 800ed7c <LoRaMacCommandsSerializeCmds> + 800e9c6: 2800 cmp r0, #0 + 800e9c8: d0ea beq.n 800e9a0 <LoRaMacMcpsRequest+0x274> + 800e9ca: 2013 movs r0, #19 + 800e9cc: e775 b.n 800e8ba <LoRaMacMcpsRequest+0x18e> + 800e9ce: f207 4786 addw r7, r7, #1158 ; 0x486 + 800e9d2: 463a mov r2, r7 + 800e9d4: a908 add r1, sp, #32 + 800e9d6: f000 f9d1 bl 800ed7c <LoRaMacCommandsSerializeCmds> + 800e9da: 2800 cmp r0, #0 + 800e9dc: d1f5 bne.n 800e9ca <LoRaMacMcpsRequest+0x29e> + 800e9de: 9b08 ldr r3, [sp, #32] + 800e9e0: f884 0128 strb.w r0, [r4, #296] ; 0x128 + 800e9e4: f8c4 712c str.w r7, [r4, #300] ; 0x12c + 800e9e8: f884 3130 strb.w r3, [r4, #304] ; 0x130 + 800e9ec: e7d8 b.n 800e9a0 <LoRaMacMcpsRequest+0x274> + 800e9ee: f1b8 0f00 cmp.w r8, #0 + 800e9f2: d0d5 beq.n 800e9a0 <LoRaMacMcpsRequest+0x274> + 800e9f4: 2a00 cmp r2, #0 + 800e9f6: d0d3 beq.n 800e9a0 <LoRaMacMcpsRequest+0x274> + 800e9f8: 4641 mov r1, r8 + 800e9fa: 1ce0 adds r0, r4, #3 + 800e9fc: f002 fef2 bl 80117e4 <memcpy1> + 800ea00: f894 3237 ldrb.w r3, [r4, #567] ; 0x237 + 800ea04: 3301 adds r3, #1 + 800ea06: 8023 strh r3, [r4, #0] + 800ea08: e7ca b.n 800e9a0 <LoRaMacMcpsRequest+0x274> + 800ea0a: 2012 movs r0, #18 + 800ea0c: e755 b.n 800e8ba <LoRaMacMcpsRequest+0x18e> + 800ea0e: 2007 movs r0, #7 + 800ea10: e755 b.n 800e8be <LoRaMacMcpsRequest+0x192> + 800ea12: 4620 mov r0, r4 + 800ea14: e757 b.n 800e8c6 <LoRaMacMcpsRequest+0x19a> + 800ea16: 2001 movs r0, #1 + 800ea18: e690 b.n 800e73c <LoRaMacMcpsRequest+0x10> + 800ea1a: 782b ldrb r3, [r5, #0] + 800ea1c: f884 3434 strb.w r3, [r4, #1076] ; 0x434 + 800ea20: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800ea24: f043 0301 orr.w r3, r3, #1 + 800ea28: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800ea2c: e74b b.n 800e8c6 <LoRaMacMcpsRequest+0x19a> + 800ea2e: bf00 nop + 800ea30: 20001fd8 .word 0x20001fd8 + 800ea34: 20001864 .word 0x20001864 + 800ea38: 2000189c .word 0x2000189c + 800ea3c: 20001fda .word 0x20001fda + +0800ea40 <LoRaMacTestSetDutyCycleOn>: + 800ea40: b537 push {r0, r1, r2, r4, r5, lr} + 800ea42: 4d0b ldr r5, [pc, #44] ; (800ea70 <LoRaMacTestSetDutyCycleOn+0x30>) + 800ea44: f88d 0004 strb.w r0, [sp, #4] + 800ea48: 4604 mov r4, r0 + 800ea4a: 220f movs r2, #15 + 800ea4c: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800ea50: a901 add r1, sp, #4 + 800ea52: f000 ff4c bl 800f8ee <RegionVerify> + 800ea56: b140 cbz r0, 800ea6a <LoRaMacTestSetDutyCycleOn+0x2a> + 800ea58: 4a06 ldr r2, [pc, #24] ; (800ea74 <LoRaMacTestSetDutyCycleOn+0x34>) + 800ea5a: f885 411c strb.w r4, [r5, #284] ; 0x11c + 800ea5e: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 800ea62: f043 0320 orr.w r3, r3, #32 + 800ea66: f882 3481 strb.w r3, [r2, #1153] ; 0x481 + 800ea6a: b003 add sp, #12 + 800ea6c: bd30 pop {r4, r5, pc} + 800ea6e: bf00 nop + 800ea70: 20001864 .word 0x20001864 + 800ea74: 20001fd8 .word 0x20001fd8 + +0800ea78 <LoRaMacDeInitialization>: + 800ea78: b510 push {r4, lr} + 800ea7a: f7ff f933 bl 800dce4 <LoRaMacStop> + 800ea7e: 4604 mov r4, r0 + 800ea80: b9a0 cbnz r0, 800eaac <LoRaMacDeInitialization+0x34> + 800ea82: 480b ldr r0, [pc, #44] ; (800eab0 <LoRaMacDeInitialization+0x38>) + 800ea84: f005 f9d2 bl 8013e2c <UTIL_TIMER_Stop> + 800ea88: 480a ldr r0, [pc, #40] ; (800eab4 <LoRaMacDeInitialization+0x3c>) + 800ea8a: f005 f9cf bl 8013e2c <UTIL_TIMER_Stop> + 800ea8e: 480a ldr r0, [pc, #40] ; (800eab8 <LoRaMacDeInitialization+0x40>) + 800ea90: f005 f9cc bl 8013e2c <UTIL_TIMER_Stop> + 800ea94: 4809 ldr r0, [pc, #36] ; (800eabc <LoRaMacDeInitialization+0x44>) + 800ea96: f005 f9c9 bl 8013e2c <UTIL_TIMER_Stop> + 800ea9a: f000 f895 bl 800ebc8 <LoRaMacClassBHaltBeaconing> + 800ea9e: f7fd fe4b bl 800c738 <ResetMacParameters.constprop.0> + 800eaa2: 4b07 ldr r3, [pc, #28] ; (800eac0 <LoRaMacDeInitialization+0x48>) + 800eaa4: 6adb ldr r3, [r3, #44] ; 0x2c + 800eaa6: 4798 blx r3 + 800eaa8: 4620 mov r0, r4 + 800eaaa: bd10 pop {r4, pc} + 800eaac: 2401 movs r4, #1 + 800eaae: e7fb b.n 800eaa8 <LoRaMacDeInitialization+0x30> + 800eab0: 20002340 .word 0x20002340 + 800eab4: 20002358 .word 0x20002358 + 800eab8: 20002370 .word 0x20002370 + 800eabc: 200023cc .word 0x200023cc + 800eac0: 08015784 .word 0x08015784 + +0800eac4 <LoRaMacAdrCalcNext>: + 800eac4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800eac8: f890 9002 ldrb.w r9, [r0, #2] + 800eacc: b08b sub sp, #44 ; 0x2c + 800eace: 4604 mov r4, r0 + 800ead0: 468a mov sl, r1 + 800ead2: 9201 str r2, [sp, #4] + 800ead4: f1b9 0f00 cmp.w r9, #0 + 800ead8: d160 bne.n 800eb9c <LoRaMacAdrCalcNext+0xd8> + 800eada: 7945 ldrb r5, [r0, #5] + 800eadc: 6881 ldr r1, [r0, #8] + 800eade: f990 2010 ldrsb.w r2, [r0, #16] + 800eae2: f990 8011 ldrsb.w r8, [r0, #17] + 800eae6: 6019 str r1, [r3, #0] + 800eae8: 2d00 cmp r5, #0 + 800eaea: d055 beq.n 800eb98 <LoRaMacAdrCalcNext+0xd4> + 800eaec: 7c81 ldrb r1, [r0, #18] + 800eaee: f88d 1016 strb.w r1, [sp, #22] + 800eaf2: 7cc0 ldrb r0, [r0, #19] + 800eaf4: f04f 0b02 mov.w fp, #2 + 800eaf8: a905 add r1, sp, #20 + 800eafa: e9cd 2302 strd r2, r3, [sp, #8] + 800eafe: f88d b014 strb.w fp, [sp, #20] + 800eb02: f000 fee1 bl 800f8c8 <RegionGetPhyParam> + 800eb06: 9a02 ldr r2, [sp, #8] + 800eb08: b247 sxtb r7, r0 + 800eb0a: 42ba cmp r2, r7 + 800eb0c: 4616 mov r6, r2 + 800eb0e: bfb8 it lt + 800eb10: 463e movlt r6, r7 + 800eb12: 42ba cmp r2, r7 + 800eb14: dc0c bgt.n 800eb30 <LoRaMacAdrCalcNext+0x6c> + 800eb16: 9b03 ldr r3, [sp, #12] + 800eb18: f8c3 9000 str.w r9, [r3] + 800eb1c: 464d mov r5, r9 + 800eb1e: 9b01 ldr r3, [sp, #4] + 800eb20: f88a 6000 strb.w r6, [sl] + 800eb24: f883 8000 strb.w r8, [r3] + 800eb28: 4628 mov r0, r5 + 800eb2a: b00b add sp, #44 ; 0x2c + 800eb2c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800eb30: 68a2 ldr r2, [r4, #8] + 800eb32: 89a1 ldrh r1, [r4, #12] + 800eb34: 89e3 ldrh r3, [r4, #14] + 800eb36: 428a cmp r2, r1 + 800eb38: 440b add r3, r1 + 800eb3a: bf34 ite cc + 800eb3c: 2500 movcc r5, #0 + 800eb3e: 2501 movcs r5, #1 + 800eb40: 429a cmp r2, r3 + 800eb42: d3ec bcc.n 800eb1e <LoRaMacAdrCalcNext+0x5a> + 800eb44: 2308 movs r3, #8 + 800eb46: a905 add r1, sp, #20 + 800eb48: 7ce0 ldrb r0, [r4, #19] + 800eb4a: f88d 3014 strb.w r3, [sp, #20] + 800eb4e: f000 febb bl 800f8c8 <RegionGetPhyParam> + 800eb52: 89e2 ldrh r2, [r4, #14] + 800eb54: 68a3 ldr r3, [r4, #8] + 800eb56: fbb3 f1f2 udiv r1, r3, r2 + 800eb5a: fb02 3311 mls r3, r2, r1, r3 + 800eb5e: 2b01 cmp r3, #1 + 800eb60: fa4f f880 sxtb.w r8, r0 + 800eb64: d1db bne.n 800eb1e <LoRaMacAdrCalcNext+0x5a> + 800eb66: 2322 movs r3, #34 ; 0x22 + 800eb68: f88d 3014 strb.w r3, [sp, #20] + 800eb6c: 7ce0 ldrb r0, [r4, #19] + 800eb6e: 7ca3 ldrb r3, [r4, #18] + 800eb70: f88d 6015 strb.w r6, [sp, #21] + 800eb74: a905 add r1, sp, #20 + 800eb76: f88d 3016 strb.w r3, [sp, #22] + 800eb7a: f000 fea5 bl 800f8c8 <RegionGetPhyParam> + 800eb7e: b246 sxtb r6, r0 + 800eb80: 42b7 cmp r7, r6 + 800eb82: d1cc bne.n 800eb1e <LoRaMacAdrCalcNext+0x5a> + 800eb84: 7925 ldrb r5, [r4, #4] + 800eb86: 2d00 cmp r5, #0 + 800eb88: d0c9 beq.n 800eb1e <LoRaMacAdrCalcNext+0x5a> + 800eb8a: 7ce0 ldrb r0, [r4, #19] + 800eb8c: f88d b024 strb.w fp, [sp, #36] ; 0x24 + 800eb90: a907 add r1, sp, #28 + 800eb92: f000 fea7 bl 800f8e4 <RegionInitDefaults> + 800eb96: e7c1 b.n 800eb1c <LoRaMacAdrCalcNext+0x58> + 800eb98: 4616 mov r6, r2 + 800eb9a: e7c0 b.n 800eb1e <LoRaMacAdrCalcNext+0x5a> + 800eb9c: 2500 movs r5, #0 + 800eb9e: e7c3 b.n 800eb28 <LoRaMacAdrCalcNext+0x64> + +0800eba0 <LoRaMacClassBInit>: + 800eba0: 4770 bx lr + +0800eba2 <LoRaMacClassBSetBeaconState>: + 800eba2: 4770 bx lr + +0800eba4 <LoRaMacClassBSetPingSlotState>: + 800eba4: 4770 bx lr + +0800eba6 <LoRaMacClassBSetMulticastSlotState>: + 800eba6: 4770 bx lr + +0800eba8 <LoRaMacClassBIsAcquisitionInProgress>: + 800eba8: 2000 movs r0, #0 + 800ebaa: 4770 bx lr + +0800ebac <LoRaMacClassBBeaconTimerEvent>: + 800ebac: 4770 bx lr + +0800ebae <LoRaMacClassBPingSlotTimerEvent>: + 800ebae: 4770 bx lr + +0800ebb0 <LoRaMacClassBMulticastSlotTimerEvent>: + 800ebb0: 4770 bx lr + +0800ebb2 <LoRaMacClassBRxBeacon>: + 800ebb2: 2000 movs r0, #0 + 800ebb4: 4770 bx lr + +0800ebb6 <LoRaMacClassBIsBeaconExpected>: + 800ebb6: 2000 movs r0, #0 + 800ebb8: 4770 bx lr + +0800ebba <LoRaMacClassBIsPingExpected>: + 800ebba: 2000 movs r0, #0 + 800ebbc: 4770 bx lr + +0800ebbe <LoRaMacClassBIsMulticastExpected>: + 800ebbe: 2000 movs r0, #0 + 800ebc0: 4770 bx lr + +0800ebc2 <LoRaMacClassBIsBeaconModeActive>: + 800ebc2: 2000 movs r0, #0 + 800ebc4: 4770 bx lr + +0800ebc6 <LoRaMacClassBSetPingSlotInfo>: + 800ebc6: 4770 bx lr + +0800ebc8 <LoRaMacClassBHaltBeaconing>: + 800ebc8: 4770 bx lr + +0800ebca <LoRaMacClassBResumeBeaconing>: + 800ebca: 4770 bx lr + +0800ebcc <LoRaMacClassBSwitchClass>: + 800ebcc: 2002 movs r0, #2 + 800ebce: 4770 bx lr + +0800ebd0 <LoRaMacClassBMibGetRequestConfirm>: + 800ebd0: 2002 movs r0, #2 + 800ebd2: 4770 bx lr + +0800ebd4 <LoRaMacMibClassBSetRequestConfirm>: + 800ebd4: 2002 movs r0, #2 + 800ebd6: 4770 bx lr + +0800ebd8 <LoRaMacClassBPingSlotInfoAns>: + 800ebd8: 4770 bx lr + +0800ebda <LoRaMacClassBPingSlotChannelReq>: + 800ebda: 2000 movs r0, #0 + 800ebdc: 4770 bx lr + +0800ebde <LoRaMacClassBBeaconTimingAns>: + 800ebde: 4770 bx lr + +0800ebe0 <LoRaMacClassBDeviceTimeAns>: + 800ebe0: 4770 bx lr + +0800ebe2 <LoRaMacClassBBeaconFreqReq>: + 800ebe2: 2000 movs r0, #0 + 800ebe4: 4770 bx lr + +0800ebe6 <LoRaMacClassBIsUplinkCollision>: + 800ebe6: 2000 movs r0, #0 + 800ebe8: 4770 bx lr + +0800ebea <LoRaMacClassBStopRxSlots>: + 800ebea: 4770 bx lr + +0800ebec <LoRaMacClassBProcess>: + 800ebec: 4770 bx lr + ... + +0800ebf0 <LoRaMacCommandsInit>: + 800ebf0: b510 push {r4, lr} + 800ebf2: 4c05 ldr r4, [pc, #20] ; (800ec08 <LoRaMacCommandsInit+0x18>) + 800ebf4: 22fc movs r2, #252 ; 0xfc + 800ebf6: 4620 mov r0, r4 + 800ebf8: 2100 movs r1, #0 + 800ebfa: f002 fe07 bl 801180c <memset1> + 800ebfe: 2000 movs r0, #0 + 800ec00: e9c4 0000 strd r0, r0, [r4] + 800ec04: bd10 pop {r4, pc} + 800ec06: bf00 nop + 800ec08: 200024f4 .word 0x200024f4 + +0800ec0c <LoRaMacCommandsAddCmd>: + 800ec0c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800ec10: 4680 mov r8, r0 + 800ec12: 4615 mov r5, r2 + 800ec14: 2900 cmp r1, #0 + 800ec16: d042 beq.n 800ec9e <LoRaMacCommandsAddCmd+0x92> + 800ec18: 4b24 ldr r3, [pc, #144] ; (800ecac <LoRaMacCommandsAddCmd+0xa0>) + 800ec1a: 2400 movs r4, #0 + 800ec1c: f103 0c01 add.w ip, r3, #1 + 800ec20: 461a mov r2, r3 + 800ec22: 0120 lsls r0, r4, #4 + 800ec24: 3310 adds r3, #16 + 800ec26: f812 6f01 ldrb.w r6, [r2, #1]! + 800ec2a: 2e00 cmp r6, #0 + 800ec2c: d139 bne.n 800eca2 <LoRaMacCommandsAddCmd+0x96> + 800ec2e: 429a cmp r2, r3 + 800ec30: d1f9 bne.n 800ec26 <LoRaMacCommandsAddCmd+0x1a> + 800ec32: 4f1f ldr r7, [pc, #124] ; (800ecb0 <LoRaMacCommandsAddCmd+0xa4>) + 800ec34: 683b ldr r3, [r7, #0] + 800ec36: b90b cbnz r3, 800ec3c <LoRaMacCommandsAddCmd+0x30> + 800ec38: f8c7 c000 str.w ip, [r7] + 800ec3c: 687b ldr r3, [r7, #4] + 800ec3e: b10b cbz r3, 800ec44 <LoRaMacCommandsAddCmd+0x38> + 800ec40: f8c3 c000 str.w ip, [r3] + 800ec44: 183b adds r3, r7, r0 + 800ec46: 2200 movs r2, #0 + 800ec48: 3401 adds r4, #1 + 800ec4a: 609a str r2, [r3, #8] + 800ec4c: f883 800c strb.w r8, [r3, #12] + 800ec50: 300d adds r0, #13 + 800ec52: 0123 lsls r3, r4, #4 + 800ec54: b2aa uxth r2, r5 + 800ec56: 4438 add r0, r7 + 800ec58: 50fd str r5, [r7, r3] + 800ec5a: f8c7 c004 str.w ip, [r7, #4] + 800ec5e: f002 fdc1 bl 80117e4 <memcpy1> + 800ec62: f1b8 0f05 cmp.w r8, #5 + 800ec66: d017 beq.n 800ec98 <LoRaMacCommandsAddCmd+0x8c> + 800ec68: f1a8 0808 sub.w r8, r8, #8 + 800ec6c: f1b8 0f02 cmp.w r8, #2 + 800ec70: bf8c ite hi + 800ec72: f04f 0800 movhi.w r8, #0 + 800ec76: f04f 0801 movls.w r8, #1 + 800ec7a: eb07 1404 add.w r4, r7, r4, lsl #4 + 800ec7e: 2300 movs r3, #0 + 800ec80: 7163 strb r3, [r4, #5] + 800ec82: f8d7 30f8 ldr.w r3, [r7, #248] ; 0xf8 + 800ec86: f884 8004 strb.w r8, [r4, #4] + 800ec8a: 3301 adds r3, #1 + 800ec8c: 442b add r3, r5 + 800ec8e: f8c7 30f8 str.w r3, [r7, #248] ; 0xf8 + 800ec92: 4630 mov r0, r6 + 800ec94: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800ec98: f04f 0801 mov.w r8, #1 + 800ec9c: e7ed b.n 800ec7a <LoRaMacCommandsAddCmd+0x6e> + 800ec9e: 2601 movs r6, #1 + 800eca0: e7f7 b.n 800ec92 <LoRaMacCommandsAddCmd+0x86> + 800eca2: 3401 adds r4, #1 + 800eca4: 2c0f cmp r4, #15 + 800eca6: d1b9 bne.n 800ec1c <LoRaMacCommandsAddCmd+0x10> + 800eca8: 2602 movs r6, #2 + 800ecaa: e7f2 b.n 800ec92 <LoRaMacCommandsAddCmd+0x86> + 800ecac: 200024fb .word 0x200024fb + 800ecb0: 200024f4 .word 0x200024f4 + +0800ecb4 <LoRaMacCommandsRemoveCmd>: + 800ecb4: b510 push {r4, lr} + 800ecb6: b310 cbz r0, 800ecfe <LoRaMacCommandsRemoveCmd+0x4a> + 800ecb8: 4a12 ldr r2, [pc, #72] ; (800ed04 <LoRaMacCommandsRemoveCmd+0x50>) + 800ecba: 6813 ldr r3, [r2, #0] + 800ecbc: 4298 cmp r0, r3 + 800ecbe: d104 bne.n 800ecca <LoRaMacCommandsRemoveCmd+0x16> + 800ecc0: 6803 ldr r3, [r0, #0] + 800ecc2: 6013 str r3, [r2, #0] + 800ecc4: 2300 movs r3, #0 + 800ecc6: e004 b.n 800ecd2 <LoRaMacCommandsRemoveCmd+0x1e> + 800ecc8: 460b mov r3, r1 + 800ecca: b113 cbz r3, 800ecd2 <LoRaMacCommandsRemoveCmd+0x1e> + 800eccc: 6819 ldr r1, [r3, #0] + 800ecce: 4288 cmp r0, r1 + 800ecd0: d1fa bne.n 800ecc8 <LoRaMacCommandsRemoveCmd+0x14> + 800ecd2: 6851 ldr r1, [r2, #4] + 800ecd4: 4288 cmp r0, r1 + 800ecd6: bf08 it eq + 800ecd8: 6053 streq r3, [r2, #4] + 800ecda: b10b cbz r3, 800ece0 <LoRaMacCommandsRemoveCmd+0x2c> + 800ecdc: 6801 ldr r1, [r0, #0] + 800ecde: 6019 str r1, [r3, #0] + 800ece0: f8d2 30f8 ldr.w r3, [r2, #248] ; 0xf8 + 800ece4: 6881 ldr r1, [r0, #8] + 800ece6: 3b01 subs r3, #1 + 800ece8: 2400 movs r4, #0 + 800ecea: 1a5b subs r3, r3, r1 + 800ecec: 6004 str r4, [r0, #0] + 800ecee: 4621 mov r1, r4 + 800ecf0: f8c2 30f8 str.w r3, [r2, #248] ; 0xf8 + 800ecf4: 2210 movs r2, #16 + 800ecf6: f002 fd89 bl 801180c <memset1> + 800ecfa: 4620 mov r0, r4 + 800ecfc: bd10 pop {r4, pc} + 800ecfe: 2001 movs r0, #1 + 800ed00: e7fc b.n 800ecfc <LoRaMacCommandsRemoveCmd+0x48> + 800ed02: bf00 nop + 800ed04: 200024f4 .word 0x200024f4 + +0800ed08 <LoRaMacCommandsGetCmd>: + 800ed08: 4b05 ldr r3, [pc, #20] ; (800ed20 <LoRaMacCommandsGetCmd+0x18>) + 800ed0a: 681b ldr r3, [r3, #0] + 800ed0c: b113 cbz r3, 800ed14 <LoRaMacCommandsGetCmd+0xc> + 800ed0e: 791a ldrb r2, [r3, #4] + 800ed10: 4282 cmp r2, r0 + 800ed12: d1fa bne.n 800ed0a <LoRaMacCommandsGetCmd+0x2> + 800ed14: 2b00 cmp r3, #0 + 800ed16: 600b str r3, [r1, #0] + 800ed18: bf0c ite eq + 800ed1a: 2003 moveq r0, #3 + 800ed1c: 2000 movne r0, #0 + 800ed1e: 4770 bx lr + 800ed20: 200024f4 .word 0x200024f4 + +0800ed24 <LoRaMacCommandsRemoveNoneStickyCmds>: + 800ed24: b510 push {r4, lr} + 800ed26: 4b05 ldr r3, [pc, #20] ; (800ed3c <LoRaMacCommandsRemoveNoneStickyCmds+0x18>) + 800ed28: 6818 ldr r0, [r3, #0] + 800ed2a: b900 cbnz r0, 800ed2e <LoRaMacCommandsRemoveNoneStickyCmds+0xa> + 800ed2c: bd10 pop {r4, pc} + 800ed2e: 7b03 ldrb r3, [r0, #12] + 800ed30: 6804 ldr r4, [r0, #0] + 800ed32: b90b cbnz r3, 800ed38 <LoRaMacCommandsRemoveNoneStickyCmds+0x14> + 800ed34: f7ff ffbe bl 800ecb4 <LoRaMacCommandsRemoveCmd> + 800ed38: 4620 mov r0, r4 + 800ed3a: e7f6 b.n 800ed2a <LoRaMacCommandsRemoveNoneStickyCmds+0x6> + 800ed3c: 200024f4 .word 0x200024f4 + +0800ed40 <LoRaMacCommandsRemoveStickyAnsCmds>: + 800ed40: b510 push {r4, lr} + 800ed42: 4b07 ldr r3, [pc, #28] ; (800ed60 <LoRaMacCommandsRemoveStickyAnsCmds+0x20>) + 800ed44: 6818 ldr r0, [r3, #0] + 800ed46: b900 cbnz r0, 800ed4a <LoRaMacCommandsRemoveStickyAnsCmds+0xa> + 800ed48: bd10 pop {r4, pc} + 800ed4a: 7903 ldrb r3, [r0, #4] + 800ed4c: 6804 ldr r4, [r0, #0] + 800ed4e: 2b05 cmp r3, #5 + 800ed50: d002 beq.n 800ed58 <LoRaMacCommandsRemoveStickyAnsCmds+0x18> + 800ed52: 3b08 subs r3, #8 + 800ed54: 2b02 cmp r3, #2 + 800ed56: d801 bhi.n 800ed5c <LoRaMacCommandsRemoveStickyAnsCmds+0x1c> + 800ed58: f7ff ffac bl 800ecb4 <LoRaMacCommandsRemoveCmd> + 800ed5c: 4620 mov r0, r4 + 800ed5e: e7f2 b.n 800ed46 <LoRaMacCommandsRemoveStickyAnsCmds+0x6> + 800ed60: 200024f4 .word 0x200024f4 + +0800ed64 <LoRaMacCommandsGetSizeSerializedCmds>: + 800ed64: b128 cbz r0, 800ed72 <LoRaMacCommandsGetSizeSerializedCmds+0xe> + 800ed66: 4b04 ldr r3, [pc, #16] ; (800ed78 <LoRaMacCommandsGetSizeSerializedCmds+0x14>) + 800ed68: f8d3 30f8 ldr.w r3, [r3, #248] ; 0xf8 + 800ed6c: 6003 str r3, [r0, #0] + 800ed6e: 2000 movs r0, #0 + 800ed70: 4770 bx lr + 800ed72: 2001 movs r0, #1 + 800ed74: 4770 bx lr + 800ed76: bf00 nop + 800ed78: 200024f4 .word 0x200024f4 + +0800ed7c <LoRaMacCommandsSerializeCmds>: + 800ed7c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800ed80: 4607 mov r7, r0 + 800ed82: 460e mov r6, r1 + 800ed84: 4615 mov r5, r2 + 800ed86: b33a cbz r2, 800edd8 <LoRaMacCommandsSerializeCmds+0x5c> + 800ed88: b331 cbz r1, 800edd8 <LoRaMacCommandsSerializeCmds+0x5c> + 800ed8a: 4b14 ldr r3, [pc, #80] ; (800eddc <LoRaMacCommandsSerializeCmds+0x60>) + 800ed8c: 681c ldr r4, [r3, #0] + 800ed8e: 2300 movs r3, #0 + 800ed90: b92c cbnz r4, 800ed9e <LoRaMacCommandsSerializeCmds+0x22> + 800ed92: 4630 mov r0, r6 + 800ed94: f7ff ffe6 bl 800ed64 <LoRaMacCommandsGetSizeSerializedCmds> + 800ed98: 2000 movs r0, #0 + 800ed9a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800ed9e: 68a2 ldr r2, [r4, #8] + 800eda0: 1af9 subs r1, r7, r3 + 800eda2: 3201 adds r2, #1 + 800eda4: 4291 cmp r1, r2 + 800eda6: d310 bcc.n 800edca <LoRaMacCommandsSerializeCmds+0x4e> + 800eda8: 7922 ldrb r2, [r4, #4] + 800edaa: 54ea strb r2, [r5, r3] + 800edac: 1c58 adds r0, r3, #1 + 800edae: 8922 ldrh r2, [r4, #8] + 800edb0: fa5f f880 uxtb.w r8, r0 + 800edb4: 1d61 adds r1, r4, #5 + 800edb6: fa55 f080 uxtab r0, r5, r0 + 800edba: f002 fd13 bl 80117e4 <memcpy1> + 800edbe: 68a3 ldr r3, [r4, #8] + 800edc0: 6824 ldr r4, [r4, #0] + 800edc2: 4498 add r8, r3 + 800edc4: fa5f f388 uxtb.w r3, r8 + 800edc8: e7e2 b.n 800ed90 <LoRaMacCommandsSerializeCmds+0x14> + 800edca: 4620 mov r0, r4 + 800edcc: 6824 ldr r4, [r4, #0] + 800edce: f7ff ff71 bl 800ecb4 <LoRaMacCommandsRemoveCmd> + 800edd2: 2c00 cmp r4, #0 + 800edd4: d1f9 bne.n 800edca <LoRaMacCommandsSerializeCmds+0x4e> + 800edd6: e7dc b.n 800ed92 <LoRaMacCommandsSerializeCmds+0x16> + 800edd8: 2001 movs r0, #1 + 800edda: e7de b.n 800ed9a <LoRaMacCommandsSerializeCmds+0x1e> + 800eddc: 200024f4 .word 0x200024f4 + +0800ede0 <LoRaMacCommandsGetCmdSize>: + 800ede0: 3802 subs r0, #2 + 800ede2: b2c0 uxtb r0, r0 + 800ede4: 2811 cmp r0, #17 + 800ede6: bf9a itte ls + 800ede8: 4b01 ldrls r3, [pc, #4] ; (800edf0 <LoRaMacCommandsGetCmdSize+0x10>) + 800edea: 5c18 ldrbls r0, [r3, r0] + 800edec: 2000 movhi r0, #0 + 800edee: 4770 bx lr + 800edf0: 0801510f .word 0x0801510f + +0800edf4 <GetElement.constprop.0>: + 800edf4: b530 push {r4, r5, lr} + 800edf6: 4b0b ldr r3, [pc, #44] ; (800ee24 <GetElement.constprop.0+0x30>) + 800edf8: f893 2020 ldrb.w r2, [r3, #32] + 800edfc: 4604 mov r4, r0 + 800edfe: 4608 mov r0, r1 + 800ee00: b172 cbz r2, 800ee20 <GetElement.constprop.0+0x2c> + 800ee02: 2100 movs r1, #0 + 800ee04: 331c adds r3, #28 + 800ee06: 7805 ldrb r5, [r0, #0] + 800ee08: 42a5 cmp r5, r4 + 800ee0a: d008 beq.n 800ee1e <GetElement.constprop.0+0x2a> + 800ee0c: 3101 adds r1, #1 + 800ee0e: 4298 cmp r0, r3 + 800ee10: b2cd uxtb r5, r1 + 800ee12: bf0c ite eq + 800ee14: 4804 ldreq r0, [pc, #16] ; (800ee28 <GetElement.constprop.0+0x34>) + 800ee16: 3004 addne r0, #4 + 800ee18: 42aa cmp r2, r5 + 800ee1a: d8f4 bhi.n 800ee06 <GetElement.constprop.0+0x12> + 800ee1c: 2000 movs r0, #0 + 800ee1e: bd30 pop {r4, r5, pc} + 800ee20: 4610 mov r0, r2 + 800ee22: e7fc b.n 800ee1e <GetElement.constprop.0+0x2a> + 800ee24: 200025f0 .word 0x200025f0 + 800ee28: 200025fc .word 0x200025fc + +0800ee2c <LoRaMacConfirmQueueInit>: + 800ee2c: b510 push {r4, lr} + 800ee2e: 4c08 ldr r4, [pc, #32] ; (800ee50 <LoRaMacConfirmQueueInit+0x24>) + 800ee30: 2300 movs r3, #0 + 800ee32: 6020 str r0, [r4, #0] + 800ee34: 2214 movs r2, #20 + 800ee36: f104 000c add.w r0, r4, #12 + 800ee3a: 21ff movs r1, #255 ; 0xff + 800ee3c: f884 3020 strb.w r3, [r4, #32] + 800ee40: e9c4 0001 strd r0, r0, [r4, #4] + 800ee44: f002 fce2 bl 801180c <memset1> + 800ee48: 2301 movs r3, #1 + 800ee4a: f884 3021 strb.w r3, [r4, #33] ; 0x21 + 800ee4e: bd10 pop {r4, pc} + 800ee50: 200025f0 .word 0x200025f0 + +0800ee54 <LoRaMacConfirmQueueAdd>: + 800ee54: b510 push {r4, lr} + 800ee56: 4a0e ldr r2, [pc, #56] ; (800ee90 <LoRaMacConfirmQueueAdd+0x3c>) + 800ee58: f892 1020 ldrb.w r1, [r2, #32] + 800ee5c: 2904 cmp r1, #4 + 800ee5e: d815 bhi.n 800ee8c <LoRaMacConfirmQueueAdd+0x38> + 800ee60: 6893 ldr r3, [r2, #8] + 800ee62: 7804 ldrb r4, [r0, #0] + 800ee64: 701c strb r4, [r3, #0] + 800ee66: 7844 ldrb r4, [r0, #1] + 800ee68: 705c strb r4, [r3, #1] + 800ee6a: 78c0 ldrb r0, [r0, #3] + 800ee6c: 70d8 strb r0, [r3, #3] + 800ee6e: 3101 adds r1, #1 + 800ee70: 2000 movs r0, #0 + 800ee72: 7098 strb r0, [r3, #2] + 800ee74: f882 1020 strb.w r1, [r2, #32] + 800ee78: f102 011c add.w r1, r2, #28 + 800ee7c: 428b cmp r3, r1 + 800ee7e: bf14 ite ne + 800ee80: 3304 addne r3, #4 + 800ee82: f102 030c addeq.w r3, r2, #12 + 800ee86: 6093 str r3, [r2, #8] + 800ee88: 2001 movs r0, #1 + 800ee8a: bd10 pop {r4, pc} + 800ee8c: 2000 movs r0, #0 + 800ee8e: e7fc b.n 800ee8a <LoRaMacConfirmQueueAdd+0x36> + 800ee90: 200025f0 .word 0x200025f0 + +0800ee94 <LoRaMacConfirmQueueRemoveFirst>: + 800ee94: 4b09 ldr r3, [pc, #36] ; (800eebc <LoRaMacConfirmQueueRemoveFirst+0x28>) + 800ee96: f893 0020 ldrb.w r0, [r3, #32] + 800ee9a: b168 cbz r0, 800eeb8 <LoRaMacConfirmQueueRemoveFirst+0x24> + 800ee9c: 685a ldr r2, [r3, #4] + 800ee9e: f103 011c add.w r1, r3, #28 + 800eea2: 428a cmp r2, r1 + 800eea4: f100 30ff add.w r0, r0, #4294967295 + 800eea8: bf14 ite ne + 800eeaa: 3204 addne r2, #4 + 800eeac: f103 020c addeq.w r2, r3, #12 + 800eeb0: f883 0020 strb.w r0, [r3, #32] + 800eeb4: 605a str r2, [r3, #4] + 800eeb6: 2001 movs r0, #1 + 800eeb8: 4770 bx lr + 800eeba: bf00 nop + 800eebc: 200025f0 .word 0x200025f0 + +0800eec0 <LoRaMacConfirmQueueSetStatus>: + 800eec0: b510 push {r4, lr} + 800eec2: 4b07 ldr r3, [pc, #28] ; (800eee0 <LoRaMacConfirmQueueSetStatus+0x20>) + 800eec4: f893 2020 ldrb.w r2, [r3, #32] + 800eec8: 4604 mov r4, r0 + 800eeca: 4608 mov r0, r1 + 800eecc: b132 cbz r2, 800eedc <LoRaMacConfirmQueueSetStatus+0x1c> + 800eece: 6859 ldr r1, [r3, #4] + 800eed0: f7ff ff90 bl 800edf4 <GetElement.constprop.0> + 800eed4: b110 cbz r0, 800eedc <LoRaMacConfirmQueueSetStatus+0x1c> + 800eed6: 2301 movs r3, #1 + 800eed8: 7044 strb r4, [r0, #1] + 800eeda: 7083 strb r3, [r0, #2] + 800eedc: bd10 pop {r4, pc} + 800eede: bf00 nop + 800eee0: 200025f0 .word 0x200025f0 + +0800eee4 <LoRaMacConfirmQueueGetStatus>: + 800eee4: b508 push {r3, lr} + 800eee6: 4b06 ldr r3, [pc, #24] ; (800ef00 <LoRaMacConfirmQueueGetStatus+0x1c>) + 800eee8: f893 2020 ldrb.w r2, [r3, #32] + 800eeec: b12a cbz r2, 800eefa <LoRaMacConfirmQueueGetStatus+0x16> + 800eeee: 6859 ldr r1, [r3, #4] + 800eef0: f7ff ff80 bl 800edf4 <GetElement.constprop.0> + 800eef4: b108 cbz r0, 800eefa <LoRaMacConfirmQueueGetStatus+0x16> + 800eef6: 7840 ldrb r0, [r0, #1] + 800eef8: bd08 pop {r3, pc} + 800eefa: 2001 movs r0, #1 + 800eefc: e7fc b.n 800eef8 <LoRaMacConfirmQueueGetStatus+0x14> + 800eefe: bf00 nop + 800ef00: 200025f0 .word 0x200025f0 + +0800ef04 <LoRaMacConfirmQueueSetStatusCmn>: + 800ef04: b530 push {r4, r5, lr} + 800ef06: 4a0a ldr r2, [pc, #40] ; (800ef30 <LoRaMacConfirmQueueSetStatusCmn+0x2c>) + 800ef08: f892 1020 ldrb.w r1, [r2, #32] + 800ef0c: 6853 ldr r3, [r2, #4] + 800ef0e: f882 0021 strb.w r0, [r2, #33] ; 0x21 + 800ef12: b161 cbz r1, 800ef2e <LoRaMacConfirmQueueSetStatusCmn+0x2a> + 800ef14: 6891 ldr r1, [r2, #8] + 800ef16: 2401 movs r4, #1 + 800ef18: 321c adds r2, #28 + 800ef1a: 78dd ldrb r5, [r3, #3] + 800ef1c: 7058 strb r0, [r3, #1] + 800ef1e: b905 cbnz r5, 800ef22 <LoRaMacConfirmQueueSetStatusCmn+0x1e> + 800ef20: 709c strb r4, [r3, #2] + 800ef22: 4293 cmp r3, r2 + 800ef24: bf0c ite eq + 800ef26: 4b03 ldreq r3, [pc, #12] ; (800ef34 <LoRaMacConfirmQueueSetStatusCmn+0x30>) + 800ef28: 3304 addne r3, #4 + 800ef2a: 4299 cmp r1, r3 + 800ef2c: d1f5 bne.n 800ef1a <LoRaMacConfirmQueueSetStatusCmn+0x16> + 800ef2e: bd30 pop {r4, r5, pc} + 800ef30: 200025f0 .word 0x200025f0 + 800ef34: 200025fc .word 0x200025fc + +0800ef38 <LoRaMacConfirmQueueIsCmdActive>: + 800ef38: b508 push {r3, lr} + 800ef3a: 4b04 ldr r3, [pc, #16] ; (800ef4c <LoRaMacConfirmQueueIsCmdActive+0x14>) + 800ef3c: 6859 ldr r1, [r3, #4] + 800ef3e: f7ff ff59 bl 800edf4 <GetElement.constprop.0> + 800ef42: 3800 subs r0, #0 + 800ef44: bf18 it ne + 800ef46: 2001 movne r0, #1 + 800ef48: bd08 pop {r3, pc} + 800ef4a: bf00 nop + 800ef4c: 200025f0 .word 0x200025f0 + +0800ef50 <LoRaMacConfirmQueueHandleCb>: + 800ef50: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} + 800ef54: 2204 movs r2, #4 + 800ef56: 4e15 ldr r6, [pc, #84] ; (800efac <LoRaMacConfirmQueueHandleCb+0x5c>) + 800ef58: 4604 mov r4, r0 + 800ef5a: 2100 movs r1, #0 + 800ef5c: eb0d 0002 add.w r0, sp, r2 + 800ef60: f896 8020 ldrb.w r8, [r6, #32] + 800ef64: f002 fc52 bl 801180c <memset1> + 800ef68: 2500 movs r5, #0 + 800ef6a: b2eb uxtb r3, r5 + 800ef6c: 4598 cmp r8, r3 + 800ef6e: d802 bhi.n 800ef76 <LoRaMacConfirmQueueHandleCb+0x26> + 800ef70: b002 add sp, #8 + 800ef72: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800ef76: 6873 ldr r3, [r6, #4] + 800ef78: 7819 ldrb r1, [r3, #0] + 800ef7a: 7021 strb r1, [r4, #0] + 800ef7c: 785a ldrb r2, [r3, #1] + 800ef7e: 7062 strb r2, [r4, #1] + 800ef80: 789f ldrb r7, [r3, #2] + 800ef82: b15f cbz r7, 800ef9c <LoRaMacConfirmQueueHandleCb+0x4c> + 800ef84: 6833 ldr r3, [r6, #0] + 800ef86: 4620 mov r0, r4 + 800ef88: 689b ldr r3, [r3, #8] + 800ef8a: 4798 blx r3 + 800ef8c: f7ff ff82 bl 800ee94 <LoRaMacConfirmQueueRemoveFirst> + 800ef90: b917 cbnz r7, 800ef98 <LoRaMacConfirmQueueHandleCb+0x48> + 800ef92: a801 add r0, sp, #4 + 800ef94: f7ff ff5e bl 800ee54 <LoRaMacConfirmQueueAdd> + 800ef98: 3501 adds r5, #1 + 800ef9a: e7e6 b.n 800ef6a <LoRaMacConfirmQueueHandleCb+0x1a> + 800ef9c: 78db ldrb r3, [r3, #3] + 800ef9e: f88d 1004 strb.w r1, [sp, #4] + 800efa2: f88d 2005 strb.w r2, [sp, #5] + 800efa6: f88d 3007 strb.w r3, [sp, #7] + 800efaa: e7ef b.n 800ef8c <LoRaMacConfirmQueueHandleCb+0x3c> + 800efac: 200025f0 .word 0x200025f0 + +0800efb0 <LoRaMacConfirmQueueGetCnt>: + 800efb0: 4b01 ldr r3, [pc, #4] ; (800efb8 <LoRaMacConfirmQueueGetCnt+0x8>) + 800efb2: f893 0020 ldrb.w r0, [r3, #32] + 800efb6: 4770 bx lr + 800efb8: 200025f0 .word 0x200025f0 + +0800efbc <LoRaMacConfirmQueueIsFull>: + 800efbc: 4b03 ldr r3, [pc, #12] ; (800efcc <LoRaMacConfirmQueueIsFull+0x10>) + 800efbe: f893 0020 ldrb.w r0, [r3, #32] + 800efc2: 2804 cmp r0, #4 + 800efc4: bf94 ite ls + 800efc6: 2000 movls r0, #0 + 800efc8: 2001 movhi r0, #1 + 800efca: 4770 bx lr + 800efcc: 200025f0 .word 0x200025f0 + +0800efd0 <DeriveSessionKey10x>: + 800efd0: b51f push {r0, r1, r2, r3, r4, lr} + 800efd2: 2400 movs r4, #0 + 800efd4: e9cd 4402 strd r4, r4, [sp, #8] + 800efd8: 1fc4 subs r4, r0, #7 + 800efda: f88d 4000 strb.w r4, [sp] + 800efde: f88d 1001 strb.w r1, [sp, #1] + 800efe2: 0a0c lsrs r4, r1, #8 + 800efe4: f8ad 2004 strh.w r2, [sp, #4] + 800efe8: 0c09 lsrs r1, r1, #16 + 800efea: 0c12 lsrs r2, r2, #16 + 800efec: f88d 1003 strb.w r1, [sp, #3] + 800eff0: f88d 2006 strb.w r2, [sp, #6] + 800eff4: f88d 3007 strb.w r3, [sp, #7] + 800eff8: 4602 mov r2, r0 + 800effa: 0a1b lsrs r3, r3, #8 + 800effc: 2101 movs r1, #1 + 800effe: 4668 mov r0, sp + 800f000: f88d 4002 strb.w r4, [sp, #2] + 800f004: f88d 3008 strb.w r3, [sp, #8] + 800f008: f002 fa5d bl 80114c6 <SecureElementDeriveAndStoreKey> + 800f00c: 2800 cmp r0, #0 + 800f00e: bf18 it ne + 800f010: 200f movne r0, #15 + 800f012: b004 add sp, #16 + 800f014: bd10 pop {r4, pc} + +0800f016 <PayloadEncrypt>: + 800f016: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800f01a: b088 sub sp, #32 + 800f01c: 4617 mov r7, r2 + 800f01e: 460d mov r5, r1 + 800f020: 9a0f ldr r2, [sp, #60] ; 0x3c + 800f022: 4606 mov r6, r0 + 800f024: 2800 cmp r0, #0 + 800f026: d04d beq.n 800f0c4 <PayloadEncrypt+0xae> + 800f028: 2400 movs r4, #0 + 800f02a: 2101 movs r1, #1 + 800f02c: e9cd 4404 strd r4, r4, [sp, #16] + 800f030: f88d 1010 strb.w r1, [sp, #16] + 800f034: f89d 1038 ldrb.w r1, [sp, #56] ; 0x38 + 800f038: f88d 1015 strb.w r1, [sp, #21] + 800f03c: f8ad 3016 strh.w r3, [sp, #22] + 800f040: 0c19 lsrs r1, r3, #16 + 800f042: e9cd 4400 strd r4, r4, [sp] + 800f046: 0e1b lsrs r3, r3, #24 + 800f048: e9cd 4402 strd r4, r4, [sp, #8] + 800f04c: f88d 3019 strb.w r3, [sp, #25] + 800f050: f8ad 201a strh.w r2, [sp, #26] + 800f054: 0c13 lsrs r3, r2, #16 + 800f056: 0e12 lsrs r2, r2, #24 + 800f058: 9407 str r4, [sp, #28] + 800f05a: f88d 1018 strb.w r1, [sp, #24] + 800f05e: f88d 301c strb.w r3, [sp, #28] + 800f062: f88d 201d strb.w r2, [sp, #29] + 800f066: b2e3 uxtb r3, r4 + 800f068: ea4f 1803 mov.w r8, r3, lsl #4 + 800f06c: 2d00 cmp r5, #0 + 800f06e: fa5f f888 uxtb.w r8, r8 + 800f072: dc03 bgt.n 800f07c <PayloadEncrypt+0x66> + 800f074: 2000 movs r0, #0 + 800f076: b008 add sp, #32 + 800f078: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800f07c: 3301 adds r3, #1 + 800f07e: 2110 movs r1, #16 + 800f080: f88d 301f strb.w r3, [sp, #31] + 800f084: 463a mov r2, r7 + 800f086: 466b mov r3, sp + 800f088: eb0d 0001 add.w r0, sp, r1 + 800f08c: f002 f9b1 bl 80113f2 <SecureElementAesEncrypt> + 800f090: 4603 mov r3, r0 + 800f092: b9c8 cbnz r0, 800f0c8 <PayloadEncrypt+0xb2> + 800f094: 2d10 cmp r5, #16 + 800f096: 46ac mov ip, r5 + 800f098: bfa8 it ge + 800f09a: f04f 0c10 movge.w ip, #16 + 800f09e: b2da uxtb r2, r3 + 800f0a0: 4562 cmp r2, ip + 800f0a2: f103 0301 add.w r3, r3, #1 + 800f0a6: db03 blt.n 800f0b0 <PayloadEncrypt+0x9a> + 800f0a8: 3d10 subs r5, #16 + 800f0aa: b22d sxth r5, r5 + 800f0ac: 3401 adds r4, #1 + 800f0ae: e7da b.n 800f066 <PayloadEncrypt+0x50> + 800f0b0: eb08 0002 add.w r0, r8, r2 + 800f0b4: 3220 adds r2, #32 + 800f0b6: 446a add r2, sp + 800f0b8: 5c31 ldrb r1, [r6, r0] + 800f0ba: f812 2c20 ldrb.w r2, [r2, #-32] + 800f0be: 404a eors r2, r1 + 800f0c0: 5432 strb r2, [r6, r0] + 800f0c2: e7ec b.n 800f09e <PayloadEncrypt+0x88> + 800f0c4: 200a movs r0, #10 + 800f0c6: e7d6 b.n 800f076 <PayloadEncrypt+0x60> + 800f0c8: 200f movs r0, #15 + 800f0ca: e7d4 b.n 800f076 <PayloadEncrypt+0x60> + +0800f0cc <GetLastFcntDown.constprop.0>: + 800f0cc: 3801 subs r0, #1 + 800f0ce: 2803 cmp r0, #3 + 800f0d0: d815 bhi.n 800f0fe <GetLastFcntDown.constprop.0+0x32> + 800f0d2: e8df f000 tbb [pc, r0] + 800f0d6: 0802 .short 0x0802 + 800f0d8: 100c .short 0x100c + 800f0da: 4b0a ldr r3, [pc, #40] ; (800f104 <GetLastFcntDown.constprop.0+0x38>) + 800f0dc: 681b ldr r3, [r3, #0] + 800f0de: 691b ldr r3, [r3, #16] + 800f0e0: 600b str r3, [r1, #0] + 800f0e2: 2000 movs r0, #0 + 800f0e4: 4770 bx lr + 800f0e6: 4b07 ldr r3, [pc, #28] ; (800f104 <GetLastFcntDown.constprop.0+0x38>) + 800f0e8: 681b ldr r3, [r3, #0] + 800f0ea: 695b ldr r3, [r3, #20] + 800f0ec: e7f8 b.n 800f0e0 <GetLastFcntDown.constprop.0+0x14> + 800f0ee: 4b05 ldr r3, [pc, #20] ; (800f104 <GetLastFcntDown.constprop.0+0x38>) + 800f0f0: 681b ldr r3, [r3, #0] + 800f0f2: 699b ldr r3, [r3, #24] + 800f0f4: e7f4 b.n 800f0e0 <GetLastFcntDown.constprop.0+0x14> + 800f0f6: 4b03 ldr r3, [pc, #12] ; (800f104 <GetLastFcntDown.constprop.0+0x38>) + 800f0f8: 681b ldr r3, [r3, #0] + 800f0fa: 69db ldr r3, [r3, #28] + 800f0fc: e7f0 b.n 800f0e0 <GetLastFcntDown.constprop.0+0x14> + 800f0fe: 2005 movs r0, #5 + 800f100: 4770 bx lr + 800f102: bf00 nop + 800f104: 20002614 .word 0x20002614 + +0800f108 <VerifyCmacB0.constprop.0.isra.0>: + 800f108: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800f10c: b0c4 sub sp, #272 ; 0x110 + 800f10e: 460c mov r4, r1 + 800f110: 9e4a ldr r6, [sp, #296] ; 0x128 + 800f112: 4617 mov r7, r2 + 800f114: 461d mov r5, r3 + 800f116: 4680 mov r8, r0 + 800f118: b3b8 cbz r0, 800f18a <VerifyCmacB0.constprop.0.isra.0+0x82> + 800f11a: f5b1 7f80 cmp.w r1, #256 ; 0x100 + 800f11e: d836 bhi.n 800f18e <VerifyCmacB0.constprop.0.isra.0+0x86> + 800f120: f44f 7288 mov.w r2, #272 ; 0x110 + 800f124: 2100 movs r1, #0 + 800f126: 4668 mov r0, sp + 800f128: f002 fb70 bl 801180c <memset1> + 800f12c: 2349 movs r3, #73 ; 0x49 + 800f12e: 9300 str r3, [sp, #0] + 800f130: f44f 7380 mov.w r3, #256 ; 0x100 + 800f134: f8ad 3004 strh.w r3, [sp, #4] + 800f138: 0c2b lsrs r3, r5, #16 + 800f13a: f88d 3008 strb.w r3, [sp, #8] + 800f13e: 0c33 lsrs r3, r6, #16 + 800f140: f8ad 5006 strh.w r5, [sp, #6] + 800f144: f8ad 600a strh.w r6, [sp, #10] + 800f148: f88d 300c strb.w r3, [sp, #12] + 800f14c: 4622 mov r2, r4 + 800f14e: 2300 movs r3, #0 + 800f150: 4641 mov r1, r8 + 800f152: a804 add r0, sp, #16 + 800f154: 0e2d lsrs r5, r5, #24 + 800f156: 0e36 lsrs r6, r6, #24 + 800f158: f88d 300e strb.w r3, [sp, #14] + 800f15c: f88d 5009 strb.w r5, [sp, #9] + 800f160: f88d 600d strb.w r6, [sp, #13] + 800f164: f88d 400f strb.w r4, [sp, #15] + 800f168: f002 fb3c bl 80117e4 <memcpy1> + 800f16c: f104 0110 add.w r1, r4, #16 + 800f170: 9a4b ldr r2, [sp, #300] ; 0x12c + 800f172: 463b mov r3, r7 + 800f174: b289 uxth r1, r1 + 800f176: 4668 mov r0, sp + 800f178: f002 f925 bl 80113c6 <SecureElementVerifyAesCmac> + 800f17c: b110 cbz r0, 800f184 <VerifyCmacB0.constprop.0.isra.0+0x7c> + 800f17e: 2801 cmp r0, #1 + 800f180: bf18 it ne + 800f182: 200f movne r0, #15 + 800f184: b044 add sp, #272 ; 0x110 + 800f186: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800f18a: 200a movs r0, #10 + 800f18c: e7fa b.n 800f184 <VerifyCmacB0.constprop.0.isra.0+0x7c> + 800f18e: 200e movs r0, #14 + 800f190: e7f8 b.n 800f184 <VerifyCmacB0.constprop.0.isra.0+0x7c> + ... + +0800f194 <LoRaMacCryptoInit>: + 800f194: b510 push {r4, lr} + 800f196: b190 cbz r0, 800f1be <LoRaMacCryptoInit+0x2a> + 800f198: 4c0a ldr r4, [pc, #40] ; (800f1c4 <LoRaMacCryptoInit+0x30>) + 800f19a: 2228 movs r2, #40 ; 0x28 + 800f19c: 2100 movs r1, #0 + 800f19e: 6020 str r0, [r4, #0] + 800f1a0: f002 fb34 bl 801180c <memset1> + 800f1a4: 6823 ldr r3, [r4, #0] + 800f1a6: 4a08 ldr r2, [pc, #32] ; (800f1c8 <LoRaMacCryptoInit+0x34>) + 800f1a8: 601a str r2, [r3, #0] + 800f1aa: 2000 movs r0, #0 + 800f1ac: f04f 32ff mov.w r2, #4294967295 + 800f1b0: e9c3 0203 strd r0, r2, [r3, #12] + 800f1b4: e9c3 2205 strd r2, r2, [r3, #20] + 800f1b8: e9c3 2207 strd r2, r2, [r3, #28] + 800f1bc: bd10 pop {r4, pc} + 800f1be: 2009 movs r0, #9 + 800f1c0: e7fc b.n 800f1bc <LoRaMacCryptoInit+0x28> + 800f1c2: bf00 nop + 800f1c4: 20002614 .word 0x20002614 + 800f1c8: 01010100 .word 0x01010100 + +0800f1cc <LoRaMacCryptoSetLrWanVersion>: + 800f1cc: 4b02 ldr r3, [pc, #8] ; (800f1d8 <LoRaMacCryptoSetLrWanVersion+0xc>) + 800f1ce: 681b ldr r3, [r3, #0] + 800f1d0: 6018 str r0, [r3, #0] + 800f1d2: 2000 movs r0, #0 + 800f1d4: 4770 bx lr + 800f1d6: bf00 nop + 800f1d8: 20002614 .word 0x20002614 + +0800f1dc <LoRaMacCryptoGetFCntUp>: + 800f1dc: b130 cbz r0, 800f1ec <LoRaMacCryptoGetFCntUp+0x10> + 800f1de: 4b04 ldr r3, [pc, #16] ; (800f1f0 <LoRaMacCryptoGetFCntUp+0x14>) + 800f1e0: 681b ldr r3, [r3, #0] + 800f1e2: 68db ldr r3, [r3, #12] + 800f1e4: 3301 adds r3, #1 + 800f1e6: 6003 str r3, [r0, #0] + 800f1e8: 2000 movs r0, #0 + 800f1ea: 4770 bx lr + 800f1ec: 200a movs r0, #10 + 800f1ee: 4770 bx lr + 800f1f0: 20002614 .word 0x20002614 + +0800f1f4 <LoRaMacCryptoGetFCntDown>: + 800f1f4: b573 push {r0, r1, r4, r5, r6, lr} + 800f1f6: 460e mov r6, r1 + 800f1f8: 2100 movs r1, #0 + 800f1fa: 9101 str r1, [sp, #4] + 800f1fc: 461d mov r5, r3 + 800f1fe: b333 cbz r3, 800f24e <LoRaMacCryptoGetFCntDown+0x5a> + 800f200: a901 add r1, sp, #4 + 800f202: f7ff ff63 bl 800f0cc <GetLastFcntDown.constprop.0> + 800f206: b9d0 cbnz r0, 800f23e <LoRaMacCryptoGetFCntDown+0x4a> + 800f208: 9c01 ldr r4, [sp, #4] + 800f20a: 1c63 adds r3, r4, #1 + 800f20c: d004 beq.n 800f218 <LoRaMacCryptoGetFCntDown+0x24> + 800f20e: b2a3 uxth r3, r4 + 800f210: 1ad3 subs r3, r2, r3 + 800f212: 2b00 cmp r3, #0 + 800f214: dd10 ble.n 800f238 <LoRaMacCryptoGetFCntDown+0x44> + 800f216: 18e2 adds r2, r4, r3 + 800f218: 4b0e ldr r3, [pc, #56] ; (800f254 <LoRaMacCryptoGetFCntDown+0x60>) + 800f21a: 602a str r2, [r5, #0] + 800f21c: 681b ldr r3, [r3, #0] + 800f21e: 789b ldrb r3, [r3, #2] + 800f220: b96b cbnz r3, 800f23e <LoRaMacCryptoGetFCntDown+0x4a> + 800f222: 1b12 subs r2, r2, r4 + 800f224: eb63 0303 sbc.w r3, r3, r3 + 800f228: 42b2 cmp r2, r6 + 800f22a: f173 0300 sbcs.w r3, r3, #0 + 800f22e: bfac ite ge + 800f230: 2001 movge r0, #1 + 800f232: 2000 movlt r0, #0 + 800f234: 00c0 lsls r0, r0, #3 + 800f236: e002 b.n 800f23e <LoRaMacCryptoGetFCntDown+0x4a> + 800f238: d103 bne.n 800f242 <LoRaMacCryptoGetFCntDown+0x4e> + 800f23a: 602c str r4, [r5, #0] + 800f23c: 2007 movs r0, #7 + 800f23e: b002 add sp, #8 + 800f240: bd70 pop {r4, r5, r6, pc} + 800f242: 0c23 lsrs r3, r4, #16 + 800f244: 041b lsls r3, r3, #16 + 800f246: f503 3380 add.w r3, r3, #65536 ; 0x10000 + 800f24a: 441a add r2, r3 + 800f24c: e7e4 b.n 800f218 <LoRaMacCryptoGetFCntDown+0x24> + 800f24e: 200a movs r0, #10 + 800f250: e7f5 b.n 800f23e <LoRaMacCryptoGetFCntDown+0x4a> + 800f252: bf00 nop + 800f254: 20002614 .word 0x20002614 + +0800f258 <LoRaMacCryptoSetMulticastReference>: + 800f258: b128 cbz r0, 800f266 <LoRaMacCryptoSetMulticastReference+0xe> + 800f25a: 4b04 ldr r3, [pc, #16] ; (800f26c <LoRaMacCryptoSetMulticastReference+0x14>) + 800f25c: 681b ldr r3, [r3, #0] + 800f25e: 331c adds r3, #28 + 800f260: 6243 str r3, [r0, #36] ; 0x24 + 800f262: 2000 movs r0, #0 + 800f264: 4770 bx lr + 800f266: 200a movs r0, #10 + 800f268: 4770 bx lr + 800f26a: bf00 nop + 800f26c: 20002614 .word 0x20002614 + +0800f270 <LoRaMacCryptoPrepareJoinRequest>: + 800f270: b51f push {r0, r1, r2, r3, r4, lr} + 800f272: 4604 mov r4, r0 + 800f274: b1f0 cbz r0, 800f2b4 <LoRaMacCryptoPrepareJoinRequest+0x44> + 800f276: 2300 movs r3, #0 + 800f278: a803 add r0, sp, #12 + 800f27a: 9303 str r3, [sp, #12] + 800f27c: f002 f97a bl 8011574 <SecureElementRandomNumber> + 800f280: 4a0e ldr r2, [pc, #56] ; (800f2bc <LoRaMacCryptoPrepareJoinRequest+0x4c>) + 800f282: f8bd 300c ldrh.w r3, [sp, #12] + 800f286: 6812 ldr r2, [r2, #0] + 800f288: 4620 mov r0, r4 + 800f28a: 8093 strh r3, [r2, #4] + 800f28c: 82e3 strh r3, [r4, #22] + 800f28e: f000 fa52 bl 800f736 <LoRaMacSerializerJoinRequest> + 800f292: b960 cbnz r0, 800f2ae <LoRaMacCryptoPrepareJoinRequest+0x3e> + 800f294: f104 0318 add.w r3, r4, #24 + 800f298: 9300 str r3, [sp, #0] + 800f29a: 6821 ldr r1, [r4, #0] + 800f29c: 2301 movs r3, #1 + 800f29e: 2213 movs r2, #19 + 800f2a0: f002 f888 bl 80113b4 <SecureElementComputeAesCmac> + 800f2a4: b940 cbnz r0, 800f2b8 <LoRaMacCryptoPrepareJoinRequest+0x48> + 800f2a6: 4620 mov r0, r4 + 800f2a8: f000 fa45 bl 800f736 <LoRaMacSerializerJoinRequest> + 800f2ac: b100 cbz r0, 800f2b0 <LoRaMacCryptoPrepareJoinRequest+0x40> + 800f2ae: 2011 movs r0, #17 + 800f2b0: b004 add sp, #16 + 800f2b2: bd10 pop {r4, pc} + 800f2b4: 200a movs r0, #10 + 800f2b6: e7fb b.n 800f2b0 <LoRaMacCryptoPrepareJoinRequest+0x40> + 800f2b8: 200f movs r0, #15 + 800f2ba: e7f9 b.n 800f2b0 <LoRaMacCryptoPrepareJoinRequest+0x40> + 800f2bc: 20002614 .word 0x20002614 + +0800f2c0 <LoRaMacCryptoSecureMessage>: + 800f2c0: b5f0 push {r4, r5, r6, r7, lr} + 800f2c2: 4605 mov r5, r0 + 800f2c4: b087 sub sp, #28 + 800f2c6: 461c mov r4, r3 + 800f2c8: b33b cbz r3, 800f31a <LoRaMacCryptoSecureMessage+0x5a> + 800f2ca: 4e2f ldr r6, [pc, #188] ; (800f388 <LoRaMacCryptoSecureMessage+0xc8>) + 800f2cc: 6833 ldr r3, [r6, #0] + 800f2ce: 68db ldr r3, [r3, #12] + 800f2d0: 4283 cmp r3, r0 + 800f2d2: d857 bhi.n 800f384 <LoRaMacCryptoSecureMessage+0xc4> + 800f2d4: f894 2020 ldrb.w r2, [r4, #32] + 800f2d8: 2a00 cmp r2, #0 + 800f2da: bf14 ite ne + 800f2dc: 2209 movne r2, #9 + 800f2de: 2208 moveq r2, #8 + 800f2e0: 4283 cmp r3, r0 + 800f2e2: d305 bcc.n 800f2f0 <LoRaMacCryptoSecureMessage+0x30> + 800f2e4: 4620 mov r0, r4 + 800f2e6: f000 fa5a bl 800f79e <LoRaMacSerializerData> + 800f2ea: b170 cbz r0, 800f30a <LoRaMacCryptoSecureMessage+0x4a> + 800f2ec: 2011 movs r0, #17 + 800f2ee: e00a b.n 800f306 <LoRaMacCryptoSecureMessage+0x46> + 800f2f0: 2300 movs r3, #0 + 800f2f2: 9001 str r0, [sp, #4] + 800f2f4: 9300 str r3, [sp, #0] + 800f2f6: 68a3 ldr r3, [r4, #8] + 800f2f8: f894 1028 ldrb.w r1, [r4, #40] ; 0x28 + 800f2fc: 6a60 ldr r0, [r4, #36] ; 0x24 + 800f2fe: f7ff fe8a bl 800f016 <PayloadEncrypt> + 800f302: 2800 cmp r0, #0 + 800f304: d0ee beq.n 800f2e4 <LoRaMacCryptoSecureMessage+0x24> + 800f306: b007 add sp, #28 + 800f308: bdf0 pop {r4, r5, r6, r7, pc} + 800f30a: 7923 ldrb r3, [r4, #4] + 800f30c: 6821 ldr r1, [r4, #0] + 800f30e: f8b4 c008 ldrh.w ip, [r4, #8] + 800f312: 68a7 ldr r7, [r4, #8] + 800f314: 3b04 subs r3, #4 + 800f316: b29a uxth r2, r3 + 800f318: b909 cbnz r1, 800f31e <LoRaMacCryptoSecureMessage+0x5e> + 800f31a: 200a movs r0, #10 + 800f31c: e7f3 b.n 800f306 <LoRaMacCryptoSecureMessage+0x46> + 800f31e: f5b2 7f80 cmp.w r2, #256 ; 0x100 + 800f322: d82d bhi.n 800f380 <LoRaMacCryptoSecureMessage+0xc0> + 800f324: f8ad c00e strh.w ip, [sp, #14] + 800f328: f88d 3017 strb.w r3, [sp, #23] + 800f32c: ea4f 4c17 mov.w ip, r7, lsr #16 + 800f330: f104 032c add.w r3, r4, #44 ; 0x2c + 800f334: 0e3f lsrs r7, r7, #24 + 800f336: f88d 7011 strb.w r7, [sp, #17] + 800f33a: 9300 str r3, [sp, #0] + 800f33c: 0c2f lsrs r7, r5, #16 + 800f33e: 2308 movs r3, #8 + 800f340: f04f 0e49 mov.w lr, #73 ; 0x49 + 800f344: f8ad 000c strh.w r0, [sp, #12] + 800f348: f88d 7014 strb.w r7, [sp, #20] + 800f34c: f88d 0016 strb.w r0, [sp, #22] + 800f350: 0e2f lsrs r7, r5, #24 + 800f352: eb0d 0003 add.w r0, sp, r3 + 800f356: f8cd e008 str.w lr, [sp, #8] + 800f35a: f88d c010 strb.w ip, [sp, #16] + 800f35e: f8ad 5012 strh.w r5, [sp, #18] + 800f362: f88d 7015 strb.w r7, [sp, #21] + 800f366: f002 f825 bl 80113b4 <SecureElementComputeAesCmac> + 800f36a: b108 cbz r0, 800f370 <LoRaMacCryptoSecureMessage+0xb0> + 800f36c: 200f movs r0, #15 + 800f36e: e7ca b.n 800f306 <LoRaMacCryptoSecureMessage+0x46> + 800f370: 4620 mov r0, r4 + 800f372: f000 fa14 bl 800f79e <LoRaMacSerializerData> + 800f376: 2800 cmp r0, #0 + 800f378: d1b8 bne.n 800f2ec <LoRaMacCryptoSecureMessage+0x2c> + 800f37a: 6833 ldr r3, [r6, #0] + 800f37c: 60dd str r5, [r3, #12] + 800f37e: e7c2 b.n 800f306 <LoRaMacCryptoSecureMessage+0x46> + 800f380: 200e movs r0, #14 + 800f382: e7c0 b.n 800f306 <LoRaMacCryptoSecureMessage+0x46> + 800f384: 2006 movs r0, #6 + 800f386: e7be b.n 800f306 <LoRaMacCryptoSecureMessage+0x46> + 800f388: 20002614 .word 0x20002614 + +0800f38c <LoRaMacCryptoUnsecureMessage>: + 800f38c: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} + 800f390: 9d0a ldr r5, [sp, #40] ; 0x28 + 800f392: 4680 mov r8, r0 + 800f394: 460f mov r7, r1 + 800f396: 4616 mov r6, r2 + 800f398: 461c mov r4, r3 + 800f39a: 2d00 cmp r5, #0 + 800f39c: d05a beq.n 800f454 <LoRaMacCryptoUnsecureMessage+0xc8> + 800f39e: 2300 movs r3, #0 + 800f3a0: a903 add r1, sp, #12 + 800f3a2: 4610 mov r0, r2 + 800f3a4: 9303 str r3, [sp, #12] + 800f3a6: f7ff fe91 bl 800f0cc <GetLastFcntDown.constprop.0> + 800f3aa: b118 cbz r0, 800f3b4 <LoRaMacCryptoUnsecureMessage+0x28> + 800f3ac: 2006 movs r0, #6 + 800f3ae: b004 add sp, #16 + 800f3b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800f3b4: 9b03 ldr r3, [sp, #12] + 800f3b6: 429c cmp r4, r3 + 800f3b8: d801 bhi.n 800f3be <LoRaMacCryptoUnsecureMessage+0x32> + 800f3ba: 3301 adds r3, #1 + 800f3bc: d1f6 bne.n 800f3ac <LoRaMacCryptoUnsecureMessage+0x20> + 800f3be: 4628 mov r0, r5 + 800f3c0: f000 f95e bl 800f680 <LoRaMacParserData> + 800f3c4: 2800 cmp r0, #0 + 800f3c6: d147 bne.n 800f458 <LoRaMacCryptoUnsecureMessage+0xcc> + 800f3c8: 4b26 ldr r3, [pc, #152] ; (800f464 <LoRaMacCryptoUnsecureMessage+0xd8>) + 800f3ca: 781a ldrb r2, [r3, #0] + 800f3cc: 4542 cmp r2, r8 + 800f3ce: d003 beq.n 800f3d8 <LoRaMacCryptoUnsecureMessage+0x4c> + 800f3d0: 791a ldrb r2, [r3, #4] + 800f3d2: 4542 cmp r2, r8 + 800f3d4: d142 bne.n 800f45c <LoRaMacCryptoUnsecureMessage+0xd0> + 800f3d6: 2001 movs r0, #1 + 800f3d8: 68aa ldr r2, [r5, #8] + 800f3da: 42ba cmp r2, r7 + 800f3dc: d140 bne.n 800f460 <LoRaMacCryptoUnsecureMessage+0xd4> + 800f3de: eb03 0280 add.w r2, r3, r0, lsl #2 + 800f3e2: 6aeb ldr r3, [r5, #44] ; 0x2c + 800f3e4: f892 8001 ldrb.w r8, [r2, #1] + 800f3e8: 7929 ldrb r1, [r5, #4] + 800f3ea: e9cd 4300 strd r4, r3, [sp] + 800f3ee: 3904 subs r1, #4 + 800f3f0: 7892 ldrb r2, [r2, #2] + 800f3f2: 6828 ldr r0, [r5, #0] + 800f3f4: 463b mov r3, r7 + 800f3f6: b289 uxth r1, r1 + 800f3f8: f7ff fe86 bl 800f108 <VerifyCmacB0.constprop.0.isra.0> + 800f3fc: 2800 cmp r0, #0 + 800f3fe: d1d6 bne.n 800f3ae <LoRaMacCryptoUnsecureMessage+0x22> + 800f400: f895 3020 ldrb.w r3, [r5, #32] + 800f404: 9401 str r4, [sp, #4] + 800f406: 2b00 cmp r3, #0 + 800f408: f04f 0301 mov.w r3, #1 + 800f40c: 9300 str r3, [sp, #0] + 800f40e: bf14 ite ne + 800f410: 4642 movne r2, r8 + 800f412: 2208 moveq r2, #8 + 800f414: f895 1028 ldrb.w r1, [r5, #40] ; 0x28 + 800f418: 6a68 ldr r0, [r5, #36] ; 0x24 + 800f41a: 463b mov r3, r7 + 800f41c: f7ff fdfb bl 800f016 <PayloadEncrypt> + 800f420: 2800 cmp r0, #0 + 800f422: d1c4 bne.n 800f3ae <LoRaMacCryptoUnsecureMessage+0x22> + 800f424: 3e01 subs r6, #1 + 800f426: 2e03 cmp r6, #3 + 800f428: d8c1 bhi.n 800f3ae <LoRaMacCryptoUnsecureMessage+0x22> + 800f42a: e8df f006 tbb [pc, r6] + 800f42e: 0702 .short 0x0702 + 800f430: 0f0b .short 0x0f0b + 800f432: 4b0d ldr r3, [pc, #52] ; (800f468 <LoRaMacCryptoUnsecureMessage+0xdc>) + 800f434: 681b ldr r3, [r3, #0] + 800f436: 611c str r4, [r3, #16] + 800f438: 621c str r4, [r3, #32] + 800f43a: e7b8 b.n 800f3ae <LoRaMacCryptoUnsecureMessage+0x22> + 800f43c: 4b0a ldr r3, [pc, #40] ; (800f468 <LoRaMacCryptoUnsecureMessage+0xdc>) + 800f43e: 681b ldr r3, [r3, #0] + 800f440: 615c str r4, [r3, #20] + 800f442: e7f9 b.n 800f438 <LoRaMacCryptoUnsecureMessage+0xac> + 800f444: 4b08 ldr r3, [pc, #32] ; (800f468 <LoRaMacCryptoUnsecureMessage+0xdc>) + 800f446: 681b ldr r3, [r3, #0] + 800f448: 619c str r4, [r3, #24] + 800f44a: e7f5 b.n 800f438 <LoRaMacCryptoUnsecureMessage+0xac> + 800f44c: 4b06 ldr r3, [pc, #24] ; (800f468 <LoRaMacCryptoUnsecureMessage+0xdc>) + 800f44e: 681b ldr r3, [r3, #0] + 800f450: 61dc str r4, [r3, #28] + 800f452: e7ac b.n 800f3ae <LoRaMacCryptoUnsecureMessage+0x22> + 800f454: 200a movs r0, #10 + 800f456: e7aa b.n 800f3ae <LoRaMacCryptoUnsecureMessage+0x22> + 800f458: 2010 movs r0, #16 + 800f45a: e7a8 b.n 800f3ae <LoRaMacCryptoUnsecureMessage+0x22> + 800f45c: 200c movs r0, #12 + 800f45e: e7a6 b.n 800f3ae <LoRaMacCryptoUnsecureMessage+0x22> + 800f460: 2002 movs r0, #2 + 800f462: e7a4 b.n 800f3ae <LoRaMacCryptoUnsecureMessage+0x22> + 800f464: 200008b4 .word 0x200008b4 + 800f468: 20002614 .word 0x20002614 + +0800f46c <LoRaMacCryptoDeriveLifeTimeKey>: + 800f46c: b51f push {r0, r1, r2, r3, r4, lr} + 800f46e: 460a mov r2, r1 + 800f470: 2a0b cmp r2, #11 + 800f472: f04f 0100 mov.w r1, #0 + 800f476: e9cd 1100 strd r1, r1, [sp] + 800f47a: e9cd 1102 strd r1, r1, [sp, #8] + 800f47e: d007 beq.n 800f490 <LoRaMacCryptoDeriveLifeTimeKey+0x24> + 800f480: 2a0c cmp r2, #12 + 800f482: d013 beq.n 800f4ac <LoRaMacCryptoDeriveLifeTimeKey+0x40> + 800f484: 2a0a cmp r2, #10 + 800f486: d00f beq.n 800f4a8 <LoRaMacCryptoDeriveLifeTimeKey+0x3c> + 800f488: 200b movs r0, #11 + 800f48a: b005 add sp, #20 + 800f48c: f85d fb04 ldr.w pc, [sp], #4 + 800f490: 2801 cmp r0, #1 + 800f492: d102 bne.n 800f49a <LoRaMacCryptoDeriveLifeTimeKey+0x2e> + 800f494: 2320 movs r3, #32 + 800f496: f88d 3000 strb.w r3, [sp] + 800f49a: 4668 mov r0, sp + 800f49c: f002 f813 bl 80114c6 <SecureElementDeriveAndStoreKey> + 800f4a0: 2800 cmp r0, #0 + 800f4a2: bf18 it ne + 800f4a4: 200f movne r0, #15 + 800f4a6: e7f0 b.n 800f48a <LoRaMacCryptoDeriveLifeTimeKey+0x1e> + 800f4a8: 2330 movs r3, #48 ; 0x30 + 800f4aa: e7f4 b.n 800f496 <LoRaMacCryptoDeriveLifeTimeKey+0x2a> + 800f4ac: 210b movs r1, #11 + 800f4ae: e7f4 b.n 800f49a <LoRaMacCryptoDeriveLifeTimeKey+0x2e> + +0800f4b0 <LoRaMacCryptoSetKey>: + 800f4b0: b538 push {r3, r4, r5, lr} + 800f4b2: 4605 mov r5, r0 + 800f4b4: f002 f802 bl 80114bc <SecureElementSetKey> + 800f4b8: 4604 mov r4, r0 + 800f4ba: b978 cbnz r0, 800f4dc <LoRaMacCryptoSetKey+0x2c> + 800f4bc: b97d cbnz r5, 800f4de <LoRaMacCryptoSetKey+0x2e> + 800f4be: 4b09 ldr r3, [pc, #36] ; (800f4e4 <LoRaMacCryptoSetKey+0x34>) + 800f4c0: 681b ldr r3, [r3, #0] + 800f4c2: 210b movs r1, #11 + 800f4c4: 7898 ldrb r0, [r3, #2] + 800f4c6: f7ff ffd1 bl 800f46c <LoRaMacCryptoDeriveLifeTimeKey> + 800f4ca: b938 cbnz r0, 800f4dc <LoRaMacCryptoSetKey+0x2c> + 800f4cc: 210c movs r1, #12 + 800f4ce: f7ff ffcd bl 800f46c <LoRaMacCryptoDeriveLifeTimeKey> + 800f4d2: b918 cbnz r0, 800f4dc <LoRaMacCryptoSetKey+0x2c> + 800f4d4: 210a movs r1, #10 + 800f4d6: f7ff ffc9 bl 800f46c <LoRaMacCryptoDeriveLifeTimeKey> + 800f4da: b100 cbz r0, 800f4de <LoRaMacCryptoSetKey+0x2e> + 800f4dc: 240f movs r4, #15 + 800f4de: 4620 mov r0, r4 + 800f4e0: bd38 pop {r3, r4, r5, pc} + 800f4e2: bf00 nop + 800f4e4: 20002614 .word 0x20002614 + +0800f4e8 <LoRaMacCryptoHandleJoinAccept>: + 800f4e8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 800f4ec: 4680 mov r8, r0 + 800f4ee: b08f sub sp, #60 ; 0x3c + 800f4f0: 460c mov r4, r1 + 800f4f2: 4617 mov r7, r2 + 800f4f4: 2a00 cmp r2, #0 + 800f4f6: d06b beq.n 800f5d0 <LoRaMacCryptoHandleJoinAccept+0xe8> + 800f4f8: 2900 cmp r1, #0 + 800f4fa: d069 beq.n 800f5d0 <LoRaMacCryptoHandleJoinAccept+0xe8> + 800f4fc: 2500 movs r5, #0 + 800f4fe: 4629 mov r1, r5 + 800f500: 221d movs r2, #29 + 800f502: a806 add r0, sp, #24 + 800f504: 9505 str r5, [sp, #20] + 800f506: f004 fea3 bl 8014250 <memset> + 800f50a: f88d 5013 strb.w r5, [sp, #19] + 800f50e: 4d34 ldr r5, [pc, #208] ; (800f5e0 <LoRaMacCryptoHandleJoinAccept+0xf8>) + 800f510: 682b ldr r3, [r5, #0] + 800f512: f10d 0914 add.w r9, sp, #20 + 800f516: 889e ldrh r6, [r3, #4] + 800f518: f8cd 9004 str.w r9, [sp, #4] + 800f51c: f10d 0313 add.w r3, sp, #19 + 800f520: 9302 str r3, [sp, #8] + 800f522: 793b ldrb r3, [r7, #4] + 800f524: 9300 str r3, [sp, #0] + 800f526: 683b ldr r3, [r7, #0] + 800f528: 4632 mov r2, r6 + 800f52a: 4621 mov r1, r4 + 800f52c: 4640 mov r0, r8 + 800f52e: f001 ffe6 bl 80114fe <SecureElementProcessJoinAccept> + 800f532: 2800 cmp r0, #0 + 800f534: d14e bne.n 800f5d4 <LoRaMacCryptoHandleJoinAccept+0xec> + 800f536: 6838 ldr r0, [r7, #0] + 800f538: 793a ldrb r2, [r7, #4] + 800f53a: 4649 mov r1, r9 + 800f53c: f002 f952 bl 80117e4 <memcpy1> + 800f540: 4638 mov r0, r7 + 800f542: f000 f84f bl 800f5e4 <LoRaMacParserJoinAccept> + 800f546: 2800 cmp r0, #0 + 800f548: d146 bne.n 800f5d8 <LoRaMacCryptoHandleJoinAccept+0xf0> + 800f54a: 7a3c ldrb r4, [r7, #8] + 800f54c: 79fa ldrb r2, [r7, #7] + 800f54e: 79bb ldrb r3, [r7, #6] + 800f550: 0424 lsls r4, r4, #16 + 800f552: ea44 2402 orr.w r4, r4, r2, lsl #8 + 800f556: 431c orrs r4, r3 + 800f558: 682b ldr r3, [r5, #0] + 800f55a: 689a ldr r2, [r3, #8] + 800f55c: 4294 cmp r4, r2 + 800f55e: d93d bls.n 800f5dc <LoRaMacCryptoHandleJoinAccept+0xf4> + 800f560: 609c str r4, [r3, #8] + 800f562: f89d 0013 ldrb.w r0, [sp, #19] + 800f566: 210b movs r1, #11 + 800f568: f7ff ff80 bl 800f46c <LoRaMacCryptoDeriveLifeTimeKey> + 800f56c: 4603 mov r3, r0 + 800f56e: bb58 cbnz r0, 800f5c8 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f570: 210c movs r1, #12 + 800f572: f7ff ff7b bl 800f46c <LoRaMacCryptoDeriveLifeTimeKey> + 800f576: 4603 mov r3, r0 + 800f578: bb30 cbnz r0, 800f5c8 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f57a: 210a movs r1, #10 + 800f57c: f7ff ff76 bl 800f46c <LoRaMacCryptoDeriveLifeTimeKey> + 800f580: 4603 mov r3, r0 + 800f582: bb08 cbnz r0, 800f5c8 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f584: 7a7b ldrb r3, [r7, #9] + 800f586: 7aba ldrb r2, [r7, #10] + 800f588: 7aff ldrb r7, [r7, #11] + 800f58a: 043f lsls r7, r7, #16 + 800f58c: ea47 2702 orr.w r7, r7, r2, lsl #8 + 800f590: 431f orrs r7, r3 + 800f592: 463a mov r2, r7 + 800f594: 4633 mov r3, r6 + 800f596: 4621 mov r1, r4 + 800f598: 2009 movs r0, #9 + 800f59a: f7ff fd19 bl 800efd0 <DeriveSessionKey10x> + 800f59e: 4603 mov r3, r0 + 800f5a0: b990 cbnz r0, 800f5c8 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f5a2: 4633 mov r3, r6 + 800f5a4: 463a mov r2, r7 + 800f5a6: 4621 mov r1, r4 + 800f5a8: 2008 movs r0, #8 + 800f5aa: f7ff fd11 bl 800efd0 <DeriveSessionKey10x> + 800f5ae: 4603 mov r3, r0 + 800f5b0: b950 cbnz r0, 800f5c8 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f5b2: 682a ldr r2, [r5, #0] + 800f5b4: f89d 1013 ldrb.w r1, [sp, #19] + 800f5b8: 7091 strb r1, [r2, #2] + 800f5ba: 2100 movs r1, #0 + 800f5bc: 60d1 str r1, [r2, #12] + 800f5be: f04f 31ff mov.w r1, #4294967295 + 800f5c2: e9c2 1104 strd r1, r1, [r2, #16] + 800f5c6: 6191 str r1, [r2, #24] + 800f5c8: 4618 mov r0, r3 + 800f5ca: b00f add sp, #60 ; 0x3c + 800f5cc: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 800f5d0: 230a movs r3, #10 + 800f5d2: e7f9 b.n 800f5c8 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f5d4: 230f movs r3, #15 + 800f5d6: e7f7 b.n 800f5c8 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f5d8: 2310 movs r3, #16 + 800f5da: e7f5 b.n 800f5c8 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f5dc: 2303 movs r3, #3 + 800f5de: e7f3 b.n 800f5c8 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f5e0: 20002614 .word 0x20002614 + +0800f5e4 <LoRaMacParserJoinAccept>: + 800f5e4: b510 push {r4, lr} + 800f5e6: 4604 mov r4, r0 + 800f5e8: 2800 cmp r0, #0 + 800f5ea: d045 beq.n 800f678 <LoRaMacParserJoinAccept+0x94> + 800f5ec: 6801 ldr r1, [r0, #0] + 800f5ee: 2900 cmp r1, #0 + 800f5f0: d042 beq.n 800f678 <LoRaMacParserJoinAccept+0x94> + 800f5f2: f811 3b01 ldrb.w r3, [r1], #1 + 800f5f6: 7143 strb r3, [r0, #5] + 800f5f8: 2203 movs r2, #3 + 800f5fa: 3006 adds r0, #6 + 800f5fc: f002 f8f2 bl 80117e4 <memcpy1> + 800f600: 4620 mov r0, r4 + 800f602: 2203 movs r2, #3 + 800f604: f850 1b09 ldr.w r1, [r0], #9 + 800f608: 3104 adds r1, #4 + 800f60a: f002 f8eb bl 80117e4 <memcpy1> + 800f60e: 6821 ldr r1, [r4, #0] + 800f610: 79cb ldrb r3, [r1, #7] + 800f612: 60e3 str r3, [r4, #12] + 800f614: 7a0a ldrb r2, [r1, #8] + 800f616: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800f61a: 60e3 str r3, [r4, #12] + 800f61c: 7a4a ldrb r2, [r1, #9] + 800f61e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 800f622: 60e3 str r3, [r4, #12] + 800f624: 7a8a ldrb r2, [r1, #10] + 800f626: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800f62a: 60e3 str r3, [r4, #12] + 800f62c: 7acb ldrb r3, [r1, #11] + 800f62e: 7423 strb r3, [r4, #16] + 800f630: 7b0b ldrb r3, [r1, #12] + 800f632: 7463 strb r3, [r4, #17] + 800f634: 7923 ldrb r3, [r4, #4] + 800f636: 2b21 cmp r3, #33 ; 0x21 + 800f638: d11a bne.n 800f670 <LoRaMacParserJoinAccept+0x8c> + 800f63a: 2210 movs r2, #16 + 800f63c: 310d adds r1, #13 + 800f63e: f104 0012 add.w r0, r4, #18 + 800f642: f002 f8cf bl 80117e4 <memcpy1> + 800f646: 221d movs r2, #29 + 800f648: 6821 ldr r1, [r4, #0] + 800f64a: 1c50 adds r0, r2, #1 + 800f64c: 5c8b ldrb r3, [r1, r2] + 800f64e: 6263 str r3, [r4, #36] ; 0x24 + 800f650: 5c08 ldrb r0, [r1, r0] + 800f652: ea43 2300 orr.w r3, r3, r0, lsl #8 + 800f656: 1c90 adds r0, r2, #2 + 800f658: 6263 str r3, [r4, #36] ; 0x24 + 800f65a: 5c08 ldrb r0, [r1, r0] + 800f65c: 3203 adds r2, #3 + 800f65e: ea43 4300 orr.w r3, r3, r0, lsl #16 + 800f662: 6263 str r3, [r4, #36] ; 0x24 + 800f664: 5c8a ldrb r2, [r1, r2] + 800f666: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800f66a: 6263 str r3, [r4, #36] ; 0x24 + 800f66c: 2000 movs r0, #0 + 800f66e: bd10 pop {r4, pc} + 800f670: 2b11 cmp r3, #17 + 800f672: dc03 bgt.n 800f67c <LoRaMacParserJoinAccept+0x98> + 800f674: 220d movs r2, #13 + 800f676: e7e7 b.n 800f648 <LoRaMacParserJoinAccept+0x64> + 800f678: 2002 movs r0, #2 + 800f67a: e7f8 b.n 800f66e <LoRaMacParserJoinAccept+0x8a> + 800f67c: 2001 movs r0, #1 + 800f67e: e7f6 b.n 800f66e <LoRaMacParserJoinAccept+0x8a> + +0800f680 <LoRaMacParserData>: + 800f680: b510 push {r4, lr} + 800f682: 4604 mov r4, r0 + 800f684: 2800 cmp r0, #0 + 800f686: d054 beq.n 800f732 <LoRaMacParserData+0xb2> + 800f688: 6801 ldr r1, [r0, #0] + 800f68a: 2900 cmp r1, #0 + 800f68c: d051 beq.n 800f732 <LoRaMacParserData+0xb2> + 800f68e: 780b ldrb r3, [r1, #0] + 800f690: 7143 strb r3, [r0, #5] + 800f692: 784b ldrb r3, [r1, #1] + 800f694: 6083 str r3, [r0, #8] + 800f696: 788a ldrb r2, [r1, #2] + 800f698: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800f69c: 6083 str r3, [r0, #8] + 800f69e: 78ca ldrb r2, [r1, #3] + 800f6a0: ea43 4302 orr.w r3, r3, r2, lsl #16 + 800f6a4: 6083 str r3, [r0, #8] + 800f6a6: 790a ldrb r2, [r1, #4] + 800f6a8: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800f6ac: 6083 str r3, [r0, #8] + 800f6ae: 794b ldrb r3, [r1, #5] + 800f6b0: 7303 strb r3, [r0, #12] + 800f6b2: 798b ldrb r3, [r1, #6] + 800f6b4: 81c3 strh r3, [r0, #14] + 800f6b6: 79ca ldrb r2, [r1, #7] + 800f6b8: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800f6bc: 7b02 ldrb r2, [r0, #12] + 800f6be: 81c3 strh r3, [r0, #14] + 800f6c0: f002 020f and.w r2, r2, #15 + 800f6c4: 3108 adds r1, #8 + 800f6c6: 3010 adds r0, #16 + 800f6c8: f002 f88c bl 80117e4 <memcpy1> + 800f6cc: 7b23 ldrb r3, [r4, #12] + 800f6ce: 2200 movs r2, #0 + 800f6d0: f003 030f and.w r3, r3, #15 + 800f6d4: f884 2020 strb.w r2, [r4, #32] + 800f6d8: f884 2028 strb.w r2, [r4, #40] ; 0x28 + 800f6dc: 7922 ldrb r2, [r4, #4] + 800f6de: f103 0008 add.w r0, r3, #8 + 800f6e2: 1a11 subs r1, r2, r0 + 800f6e4: 2904 cmp r1, #4 + 800f6e6: dd0d ble.n 800f704 <LoRaMacParserData+0x84> + 800f6e8: 6821 ldr r1, [r4, #0] + 800f6ea: 3309 adds r3, #9 + 800f6ec: 3a04 subs r2, #4 + 800f6ee: 1ad2 subs r2, r2, r3 + 800f6f0: 5c08 ldrb r0, [r1, r0] + 800f6f2: f884 0020 strb.w r0, [r4, #32] + 800f6f6: b2d2 uxtb r2, r2 + 800f6f8: 6a60 ldr r0, [r4, #36] ; 0x24 + 800f6fa: f884 2028 strb.w r2, [r4, #40] ; 0x28 + 800f6fe: 4419 add r1, r3 + 800f700: f002 f870 bl 80117e4 <memcpy1> + 800f704: 7923 ldrb r3, [r4, #4] + 800f706: 6822 ldr r2, [r4, #0] + 800f708: 441a add r2, r3 + 800f70a: 2000 movs r0, #0 + 800f70c: f812 3c04 ldrb.w r3, [r2, #-4] + 800f710: 62e3 str r3, [r4, #44] ; 0x2c + 800f712: f812 1c03 ldrb.w r1, [r2, #-3] + 800f716: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800f71a: 62e3 str r3, [r4, #44] ; 0x2c + 800f71c: f812 1c02 ldrb.w r1, [r2, #-2] + 800f720: ea43 4301 orr.w r3, r3, r1, lsl #16 + 800f724: 62e3 str r3, [r4, #44] ; 0x2c + 800f726: f812 2c01 ldrb.w r2, [r2, #-1] + 800f72a: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800f72e: 62e3 str r3, [r4, #44] ; 0x2c + 800f730: bd10 pop {r4, pc} + 800f732: 2002 movs r0, #2 + 800f734: e7fc b.n 800f730 <LoRaMacParserData+0xb0> + +0800f736 <LoRaMacSerializerJoinRequest>: + 800f736: b510 push {r4, lr} + 800f738: 4604 mov r4, r0 + 800f73a: b360 cbz r0, 800f796 <LoRaMacSerializerJoinRequest+0x60> + 800f73c: 6803 ldr r3, [r0, #0] + 800f73e: b353 cbz r3, 800f796 <LoRaMacSerializerJoinRequest+0x60> + 800f740: 7902 ldrb r2, [r0, #4] + 800f742: 2a16 cmp r2, #22 + 800f744: d929 bls.n 800f79a <LoRaMacSerializerJoinRequest+0x64> + 800f746: 7942 ldrb r2, [r0, #5] + 800f748: 701a strb r2, [r3, #0] + 800f74a: 4601 mov r1, r0 + 800f74c: 2208 movs r2, #8 + 800f74e: f851 0b06 ldr.w r0, [r1], #6 + 800f752: 3001 adds r0, #1 + 800f754: f002 f850 bl 80117f8 <memcpyr> + 800f758: 4621 mov r1, r4 + 800f75a: 2208 movs r2, #8 + 800f75c: f851 0b0e ldr.w r0, [r1], #14 + 800f760: 3009 adds r0, #9 + 800f762: f002 f849 bl 80117f8 <memcpyr> + 800f766: 6823 ldr r3, [r4, #0] + 800f768: 8ae2 ldrh r2, [r4, #22] + 800f76a: 745a strb r2, [r3, #17] + 800f76c: 8ae3 ldrh r3, [r4, #22] + 800f76e: 6822 ldr r2, [r4, #0] + 800f770: 0a1b lsrs r3, r3, #8 + 800f772: 7493 strb r3, [r2, #18] + 800f774: 6823 ldr r3, [r4, #0] + 800f776: 69a2 ldr r2, [r4, #24] + 800f778: 74da strb r2, [r3, #19] + 800f77a: 69a3 ldr r3, [r4, #24] + 800f77c: 6822 ldr r2, [r4, #0] + 800f77e: 0a1b lsrs r3, r3, #8 + 800f780: 7513 strb r3, [r2, #20] + 800f782: 6823 ldr r3, [r4, #0] + 800f784: 8b62 ldrh r2, [r4, #26] + 800f786: 755a strb r2, [r3, #21] + 800f788: 6823 ldr r3, [r4, #0] + 800f78a: 7ee2 ldrb r2, [r4, #27] + 800f78c: 759a strb r2, [r3, #22] + 800f78e: 2317 movs r3, #23 + 800f790: 7123 strb r3, [r4, #4] + 800f792: 2000 movs r0, #0 + 800f794: bd10 pop {r4, pc} + 800f796: 2001 movs r0, #1 + 800f798: e7fc b.n 800f794 <LoRaMacSerializerJoinRequest+0x5e> + 800f79a: 2002 movs r0, #2 + 800f79c: e7fa b.n 800f794 <LoRaMacSerializerJoinRequest+0x5e> + +0800f79e <LoRaMacSerializerData>: + 800f79e: b538 push {r3, r4, r5, lr} + 800f7a0: 4604 mov r4, r0 + 800f7a2: 2800 cmp r0, #0 + 800f7a4: d063 beq.n 800f86e <LoRaMacSerializerData+0xd0> + 800f7a6: 6801 ldr r1, [r0, #0] + 800f7a8: 2900 cmp r1, #0 + 800f7aa: d060 beq.n 800f86e <LoRaMacSerializerData+0xd0> + 800f7ac: 7b03 ldrb r3, [r0, #12] + 800f7ae: f890 2028 ldrb.w r2, [r0, #40] ; 0x28 + 800f7b2: f003 030f and.w r3, r3, #15 + 800f7b6: 2a00 cmp r2, #0 + 800f7b8: d157 bne.n 800f86a <LoRaMacSerializerData+0xcc> + 800f7ba: 3308 adds r3, #8 + 800f7bc: 7920 ldrb r0, [r4, #4] + 800f7be: 3204 adds r2, #4 + 800f7c0: 4413 add r3, r2 + 800f7c2: 4298 cmp r0, r3 + 800f7c4: d355 bcc.n 800f872 <LoRaMacSerializerData+0xd4> + 800f7c6: 7963 ldrb r3, [r4, #5] + 800f7c8: 700b strb r3, [r1, #0] + 800f7ca: 6823 ldr r3, [r4, #0] + 800f7cc: 68a2 ldr r2, [r4, #8] + 800f7ce: 705a strb r2, [r3, #1] + 800f7d0: 68a3 ldr r3, [r4, #8] + 800f7d2: 6822 ldr r2, [r4, #0] + 800f7d4: 0a1b lsrs r3, r3, #8 + 800f7d6: 7093 strb r3, [r2, #2] + 800f7d8: 6823 ldr r3, [r4, #0] + 800f7da: 8962 ldrh r2, [r4, #10] + 800f7dc: 70da strb r2, [r3, #3] + 800f7de: 6823 ldr r3, [r4, #0] + 800f7e0: 7ae2 ldrb r2, [r4, #11] + 800f7e2: 711a strb r2, [r3, #4] + 800f7e4: 6823 ldr r3, [r4, #0] + 800f7e6: 7b22 ldrb r2, [r4, #12] + 800f7e8: 715a strb r2, [r3, #5] + 800f7ea: 6823 ldr r3, [r4, #0] + 800f7ec: 89e2 ldrh r2, [r4, #14] + 800f7ee: 719a strb r2, [r3, #6] + 800f7f0: 89e3 ldrh r3, [r4, #14] + 800f7f2: 6822 ldr r2, [r4, #0] + 800f7f4: 0a1b lsrs r3, r3, #8 + 800f7f6: 4621 mov r1, r4 + 800f7f8: 71d3 strb r3, [r2, #7] + 800f7fa: 7b22 ldrb r2, [r4, #12] + 800f7fc: f851 0b10 ldr.w r0, [r1], #16 + 800f800: f002 020f and.w r2, r2, #15 + 800f804: 3008 adds r0, #8 + 800f806: f001 ffed bl 80117e4 <memcpy1> + 800f80a: 7b23 ldrb r3, [r4, #12] + 800f80c: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 + 800f810: f003 030f and.w r3, r3, #15 + 800f814: f103 0508 add.w r5, r3, #8 + 800f818: b12a cbz r2, 800f826 <LoRaMacSerializerData+0x88> + 800f81a: 6822 ldr r2, [r4, #0] + 800f81c: f894 1020 ldrb.w r1, [r4, #32] + 800f820: 5551 strb r1, [r2, r5] + 800f822: f103 0509 add.w r5, r3, #9 + 800f826: 6820 ldr r0, [r4, #0] + 800f828: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 + 800f82c: 6a61 ldr r1, [r4, #36] ; 0x24 + 800f82e: 4428 add r0, r5 + 800f830: f001 ffd8 bl 80117e4 <memcpy1> + 800f834: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 + 800f838: 6822 ldr r2, [r4, #0] + 800f83a: 6ae1 ldr r1, [r4, #44] ; 0x2c + 800f83c: 442b add r3, r5 + 800f83e: 54d1 strb r1, [r2, r3] + 800f840: 1c5a adds r2, r3, #1 + 800f842: 6ae1 ldr r1, [r4, #44] ; 0x2c + 800f844: 6820 ldr r0, [r4, #0] + 800f846: b292 uxth r2, r2 + 800f848: 0a09 lsrs r1, r1, #8 + 800f84a: 5481 strb r1, [r0, r2] + 800f84c: 1c9a adds r2, r3, #2 + 800f84e: 6821 ldr r1, [r4, #0] + 800f850: 8de0 ldrh r0, [r4, #46] ; 0x2e + 800f852: b292 uxth r2, r2 + 800f854: 5488 strb r0, [r1, r2] + 800f856: 1cda adds r2, r3, #3 + 800f858: 6821 ldr r1, [r4, #0] + 800f85a: f894 002f ldrb.w r0, [r4, #47] ; 0x2f + 800f85e: b292 uxth r2, r2 + 800f860: 3304 adds r3, #4 + 800f862: 5488 strb r0, [r1, r2] + 800f864: 7123 strb r3, [r4, #4] + 800f866: 2000 movs r0, #0 + 800f868: bd38 pop {r3, r4, r5, pc} + 800f86a: 3309 adds r3, #9 + 800f86c: e7a6 b.n 800f7bc <LoRaMacSerializerData+0x1e> + 800f86e: 2001 movs r0, #1 + 800f870: e7fa b.n 800f868 <LoRaMacSerializerData+0xca> + 800f872: 2002 movs r0, #2 + 800f874: e7f8 b.n 800f868 <LoRaMacSerializerData+0xca> + ... + +0800f878 <NvmDataMgmtEvent>: + 800f878: 4b02 ldr r3, [pc, #8] ; (800f884 <NvmDataMgmtEvent+0xc>) + 800f87a: 881a ldrh r2, [r3, #0] + 800f87c: 4310 orrs r0, r2 + 800f87e: 8018 strh r0, [r3, #0] + 800f880: 4770 bx lr + 800f882: bf00 nop + 800f884: 20002618 .word 0x20002618 + +0800f888 <NvmDataMgmtStoreBegin>: + 800f888: b508 push {r3, lr} + 800f88a: 4b07 ldr r3, [pc, #28] ; (800f8a8 <NvmDataMgmtStoreBegin+0x20>) + 800f88c: 881b ldrh r3, [r3, #0] + 800f88e: b13b cbz r3, 800f8a0 <NvmDataMgmtStoreBegin+0x18> + 800f890: f7fe fa28 bl 800dce4 <LoRaMacStop> + 800f894: 2800 cmp r0, #0 + 800f896: bf0c ite eq + 800f898: 2000 moveq r0, #0 + 800f89a: f06f 0002 mvnne.w r0, #2 + 800f89e: bd08 pop {r3, pc} + 800f8a0: f06f 0001 mvn.w r0, #1 + 800f8a4: e7fb b.n 800f89e <NvmDataMgmtStoreBegin+0x16> + 800f8a6: bf00 nop + 800f8a8: 20002618 .word 0x20002618 + +0800f8ac <NvmDataMgmtStoreEnd>: + 800f8ac: b510 push {r4, lr} + 800f8ae: 4b03 ldr r3, [pc, #12] ; (800f8bc <NvmDataMgmtStoreEnd+0x10>) + 800f8b0: 2400 movs r4, #0 + 800f8b2: 801c strh r4, [r3, #0] + 800f8b4: f7fe fa0c bl 800dcd0 <LoRaMacStart> + 800f8b8: 4620 mov r0, r4 + 800f8ba: bd10 pop {r4, pc} + 800f8bc: 20002618 .word 0x20002618 + +0800f8c0 <RegionIsActive>: + 800f8c0: fab0 f080 clz r0, r0 + 800f8c4: 0940 lsrs r0, r0, #5 + 800f8c6: 4770 bx lr + +0800f8c8 <RegionGetPhyParam>: + 800f8c8: b082 sub sp, #8 + 800f8ca: b918 cbnz r0, 800f8d4 <RegionGetPhyParam+0xc> + 800f8cc: 4608 mov r0, r1 + 800f8ce: b002 add sp, #8 + 800f8d0: f000 b8d0 b.w 800fa74 <RegionAS923GetPhyParam> + 800f8d4: 2000 movs r0, #0 + 800f8d6: b002 add sp, #8 + 800f8d8: 4770 bx lr + +0800f8da <RegionSetBandTxDone>: + 800f8da: b910 cbnz r0, 800f8e2 <RegionSetBandTxDone+0x8> + 800f8dc: 4608 mov r0, r1 + 800f8de: f000 b983 b.w 800fbe8 <RegionAS923SetBandTxDone> + 800f8e2: 4770 bx lr + +0800f8e4 <RegionInitDefaults>: + 800f8e4: b910 cbnz r0, 800f8ec <RegionInitDefaults+0x8> + 800f8e6: 4608 mov r0, r1 + 800f8e8: f000 b99a b.w 800fc20 <RegionAS923InitDefaults> + 800f8ec: 4770 bx lr + +0800f8ee <RegionVerify>: + 800f8ee: 4603 mov r3, r0 + 800f8f0: 4608 mov r0, r1 + 800f8f2: 4611 mov r1, r2 + 800f8f4: b90b cbnz r3, 800f8fa <RegionVerify+0xc> + 800f8f6: f000 b9e7 b.w 800fcc8 <RegionAS923Verify> + 800f8fa: 2000 movs r0, #0 + 800f8fc: 4770 bx lr + +0800f8fe <RegionApplyCFList>: + 800f8fe: b910 cbnz r0, 800f906 <RegionApplyCFList+0x8> + 800f900: 4608 mov r0, r1 + 800f902: f000 bd45 b.w 8010390 <RegionAS923ApplyCFList> + 800f906: 4770 bx lr + +0800f908 <RegionChanMaskSet>: + 800f908: b910 cbnz r0, 800f910 <RegionChanMaskSet+0x8> + 800f90a: 4608 mov r0, r1 + 800f90c: f000 ba08 b.w 800fd20 <RegionAS923ChanMaskSet> + 800f910: 2000 movs r0, #0 + 800f912: 4770 bx lr + +0800f914 <RegionComputeRxWindowParameters>: + 800f914: b410 push {r4} + 800f916: 4604 mov r4, r0 + 800f918: 4608 mov r0, r1 + 800f91a: 4611 mov r1, r2 + 800f91c: 461a mov r2, r3 + 800f91e: 9b01 ldr r3, [sp, #4] + 800f920: b914 cbnz r4, 800f928 <RegionComputeRxWindowParameters+0x14> + 800f922: bc10 pop {r4} + 800f924: f000 ba1a b.w 800fd5c <RegionAS923ComputeRxWindowParameters> + 800f928: bc10 pop {r4} + 800f92a: 4770 bx lr + +0800f92c <RegionRxConfig>: + 800f92c: 4603 mov r3, r0 + 800f92e: 4608 mov r0, r1 + 800f930: 4611 mov r1, r2 + 800f932: b90b cbnz r3, 800f938 <RegionRxConfig+0xc> + 800f934: f000 ba44 b.w 800fdc0 <RegionAS923RxConfig> + 800f938: 2000 movs r0, #0 + 800f93a: 4770 bx lr + +0800f93c <RegionTxConfig>: + 800f93c: b410 push {r4} + 800f93e: 4604 mov r4, r0 + 800f940: 4608 mov r0, r1 + 800f942: 4611 mov r1, r2 + 800f944: 461a mov r2, r3 + 800f946: b914 cbnz r4, 800f94e <RegionTxConfig+0x12> + 800f948: bc10 pop {r4} + 800f94a: f000 bab1 b.w 800feb0 <RegionAS923TxConfig> + 800f94e: 2000 movs r0, #0 + 800f950: bc10 pop {r4} + 800f952: 4770 bx lr + +0800f954 <RegionLinkAdrReq>: + 800f954: b430 push {r4, r5} + 800f956: 4605 mov r5, r0 + 800f958: 4608 mov r0, r1 + 800f95a: 4611 mov r1, r2 + 800f95c: 461a mov r2, r3 + 800f95e: e9dd 3402 ldrd r3, r4, [sp, #8] + 800f962: b91d cbnz r5, 800f96c <RegionLinkAdrReq+0x18> + 800f964: 9402 str r4, [sp, #8] + 800f966: bc30 pop {r4, r5} + 800f968: f000 bb2e b.w 800ffc8 <RegionAS923LinkAdrReq> + 800f96c: 2000 movs r0, #0 + 800f96e: bc30 pop {r4, r5} + 800f970: 4770 bx lr + +0800f972 <RegionRxParamSetupReq>: + 800f972: b910 cbnz r0, 800f97a <RegionRxParamSetupReq+0x8> + 800f974: 4608 mov r0, r1 + 800f976: f000 bbdf b.w 8010138 <RegionAS923RxParamSetupReq> + 800f97a: 2000 movs r0, #0 + 800f97c: 4770 bx lr + +0800f97e <RegionNewChannelReq>: + 800f97e: b910 cbnz r0, 800f986 <RegionNewChannelReq+0x8> + 800f980: 4608 mov r0, r1 + 800f982: f000 bd43 b.w 801040c <RegionAS923NewChannelReq> + 800f986: 2000 movs r0, #0 + 800f988: 4770 bx lr + +0800f98a <RegionTxParamSetupReq>: + 800f98a: b910 cbnz r0, 800f992 <RegionTxParamSetupReq+0x8> + 800f98c: 4608 mov r0, r1 + 800f98e: f000 bbee b.w 801016e <RegionAS923TxParamSetupReq> + 800f992: 2000 movs r0, #0 + 800f994: 4770 bx lr + +0800f996 <RegionDlChannelReq>: + 800f996: b910 cbnz r0, 800f99e <RegionDlChannelReq+0x8> + 800f998: 4608 mov r0, r1 + 800f99a: f000 bbeb b.w 8010174 <RegionAS923DlChannelReq> + 800f99e: 2000 movs r0, #0 + 800f9a0: 4770 bx lr + +0800f9a2 <RegionAlternateDr>: + 800f9a2: 4603 mov r3, r0 + 800f9a4: 4608 mov r0, r1 + 800f9a6: 4611 mov r1, r2 + 800f9a8: b90b cbnz r3, 800f9ae <RegionAlternateDr+0xc> + 800f9aa: f000 bc05 b.w 80101b8 <RegionAS923AlternateDr> + 800f9ae: 2000 movs r0, #0 + 800f9b0: 4770 bx lr + +0800f9b2 <RegionNextChannel>: + 800f9b2: b410 push {r4} + 800f9b4: 4604 mov r4, r0 + 800f9b6: 4608 mov r0, r1 + 800f9b8: 4611 mov r1, r2 + 800f9ba: 461a mov r2, r3 + 800f9bc: 9b01 ldr r3, [sp, #4] + 800f9be: b914 cbnz r4, 800f9c6 <RegionNextChannel+0x14> + 800f9c0: bc10 pop {r4} + 800f9c2: f000 bbfb b.w 80101bc <RegionAS923NextChannel> + 800f9c6: 2009 movs r0, #9 + 800f9c8: bc10 pop {r4} + 800f9ca: 4770 bx lr + +0800f9cc <RegionSetContinuousWave>: + 800f9cc: b910 cbnz r0, 800f9d4 <RegionSetContinuousWave+0x8> + 800f9ce: 4608 mov r0, r1 + 800f9d0: f000 bd3c b.w 801044c <RegionAS923SetContinuousWave> + 800f9d4: 4770 bx lr + +0800f9d6 <RegionApplyDrOffset>: + 800f9d6: b410 push {r4} + 800f9d8: 4604 mov r4, r0 + 800f9da: 4608 mov r0, r1 + 800f9dc: 4611 mov r1, r2 + 800f9de: 461a mov r2, r3 + 800f9e0: b914 cbnz r4, 800f9e8 <RegionApplyDrOffset+0x12> + 800f9e2: bc10 pop {r4} + 800f9e4: f000 bd5c b.w 80104a0 <RegionAS923ApplyDrOffset> + 800f9e8: b2c8 uxtb r0, r1 + 800f9ea: bc10 pop {r4} + 800f9ec: 4770 bx lr + ... + +0800f9f0 <RegionGetVersion>: + 800f9f0: 4800 ldr r0, [pc, #0] ; (800f9f4 <RegionGetVersion+0x4>) + 800f9f2: 4770 bx lr + 800f9f4: 01010003 .word 0x01010003 + +0800f9f8 <VerifyRfFreq>: + 800f9f8: 4b06 ldr r3, [pc, #24] ; (800fa14 <VerifyRfFreq+0x1c>) + 800f9fa: b510 push {r4, lr} + 800f9fc: 6a1b ldr r3, [r3, #32] + 800f9fe: 4604 mov r4, r0 + 800fa00: 4798 blx r3 + 800fa02: b130 cbz r0, 800fa12 <VerifyRfFreq+0x1a> + 800fa04: 4804 ldr r0, [pc, #16] ; (800fa18 <VerifyRfFreq+0x20>) + 800fa06: 4b05 ldr r3, [pc, #20] ; (800fa1c <VerifyRfFreq+0x24>) + 800fa08: 4420 add r0, r4 + 800fa0a: 4298 cmp r0, r3 + 800fa0c: bf8c ite hi + 800fa0e: 2000 movhi r0, #0 + 800fa10: 2001 movls r0, #1 + 800fa12: bd10 pop {r4, pc} + 800fa14: 08015784 .word 0x08015784 + 800fa18: c9763540 .word 0xc9763540 + 800fa1c: 00c65d40 .word 0x00c65d40 + +0800fa20 <GetTimeOnAir>: + 800fa20: b5f0 push {r4, r5, r6, r7, lr} + 800fa22: 4b11 ldr r3, [pc, #68] ; (800fa68 <GetTimeOnAir+0x48>) + 800fa24: b085 sub sp, #20 + 800fa26: 460c mov r4, r1 + 800fa28: 4910 ldr r1, [pc, #64] ; (800fa6c <GetTimeOnAir+0x4c>) + 800fa2a: 561f ldrsb r7, [r3, r0] + 800fa2c: 4605 mov r5, r0 + 800fa2e: f001 f845 bl 8010abc <RegionCommonGetBandwidth> + 800fa32: 4b0f ldr r3, [pc, #60] ; (800fa70 <GetTimeOnAir+0x50>) + 800fa34: b2e4 uxtb r4, r4 + 800fa36: 6a5e ldr r6, [r3, #36] ; 0x24 + 800fa38: 2d07 cmp r5, #7 + 800fa3a: f04f 0301 mov.w r3, #1 + 800fa3e: e9cd 4302 strd r4, r3, [sp, #8] + 800fa42: 4601 mov r1, r0 + 800fa44: d10a bne.n 800fa5c <GetTimeOnAir+0x3c> + 800fa46: 2205 movs r2, #5 + 800fa48: 2300 movs r3, #0 + 800fa4a: e9cd 2300 strd r2, r3, [sp] + 800fa4e: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800fa52: 437a muls r2, r7 + 800fa54: 4618 mov r0, r3 + 800fa56: 47b0 blx r6 + 800fa58: b005 add sp, #20 + 800fa5a: bdf0 pop {r4, r5, r6, r7, pc} + 800fa5c: 2208 movs r2, #8 + 800fa5e: 2000 movs r0, #0 + 800fa60: e9cd 2000 strd r2, r0, [sp] + 800fa64: 463a mov r2, r7 + 800fa66: e7f5 b.n 800fa54 <GetTimeOnAir+0x34> + 800fa68: 0801514b .word 0x0801514b + 800fa6c: 08015124 .word 0x08015124 + 800fa70: 08015784 .word 0x08015784 + +0800fa74 <RegionAS923GetPhyParam>: + 800fa74: b51f push {r0, r1, r2, r3, r4, lr} + 800fa76: 2300 movs r3, #0 + 800fa78: 9300 str r3, [sp, #0] + 800fa7a: 7803 ldrb r3, [r0, #0] + 800fa7c: 3b01 subs r3, #1 + 800fa7e: 2b38 cmp r3, #56 ; 0x38 + 800fa80: f200 8085 bhi.w 800fb8e <RegionAS923GetPhyParam+0x11a> + 800fa84: e8df f003 tbb [pc, r3] + 800fa88: 8383231d .word 0x8383231d + 800fa8c: 83832083 .word 0x83832083 + 800fa90: 42408383 .word 0x42408383 + 800fa94: 53834b44 .word 0x53834b44 + 800fa98: 5f5c5956 .word 0x5f5c5956 + 800fa9c: 6d836562 .word 0x6d836562 + 800faa0: 79746f20 .word 0x79746f20 + 800faa4: 807e7e7b .word 0x807e7e7b + 800faa8: 83832587 .word 0x83832587 + 800faac: 83838383 .word 0x83838383 + 800fab0: 83838383 .word 0x83838383 + 800fab4: 89838383 .word 0x89838383 + 800fab8: 8383908b .word 0x8383908b + 800fabc: 92839089 .word 0x92839089 + 800fac0: 96 .byte 0x96 + 800fac1: 00 .byte 0x00 + 800fac2: 78c3 ldrb r3, [r0, #3] + 800fac4: 2b00 cmp r3, #0 + 800fac6: d062 beq.n 800fb8e <RegionAS923GetPhyParam+0x11a> + 800fac8: 2302 movs r3, #2 + 800faca: 9300 str r3, [sp, #0] + 800facc: e05f b.n 800fb8e <RegionAS923GetPhyParam+0x11a> + 800face: 7883 ldrb r3, [r0, #2] + 800fad0: e7f8 b.n 800fac4 <RegionAS923GetPhyParam+0x50> + 800fad2: 7843 ldrb r3, [r0, #1] + 800fad4: f88d 3004 strb.w r3, [sp, #4] + 800fad8: 2307 movs r3, #7 + 800fada: f88d 3005 strb.w r3, [sp, #5] + 800fade: 7883 ldrb r3, [r0, #2] + 800fae0: 3b00 subs r3, #0 + 800fae2: bf18 it ne + 800fae4: 2301 movne r3, #1 + 800fae6: 005b lsls r3, r3, #1 + 800fae8: f88d 3006 strb.w r3, [sp, #6] + 800faec: 2310 movs r3, #16 + 800faee: f88d 3007 strb.w r3, [sp, #7] + 800faf2: 4b33 ldr r3, [pc, #204] ; (800fbc0 <RegionAS923GetPhyParam+0x14c>) + 800faf4: 681b ldr r3, [r3, #0] + 800faf6: a801 add r0, sp, #4 + 800faf8: f503 6290 add.w r2, r3, #1152 ; 0x480 + 800fafc: e9cd 2302 strd r2, r3, [sp, #8] + 800fb00: f000 ffbc bl 8010a7c <RegionCommonGetNextLowerTxDr> + 800fb04: 9000 str r0, [sp, #0] + 800fb06: e042 b.n 800fb8e <RegionAS923GetPhyParam+0x11a> + 800fb08: 2340 movs r3, #64 ; 0x40 + 800fb0a: e7de b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb0c: 2320 movs r3, #32 + 800fb0e: e7dc b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb10: 7882 ldrb r2, [r0, #2] + 800fb12: f990 3001 ldrsb.w r3, [r0, #1] + 800fb16: b942 cbnz r2, 800fb2a <RegionAS923GetPhyParam+0xb6> + 800fb18: 4a2a ldr r2, [pc, #168] ; (800fbc4 <RegionAS923GetPhyParam+0x150>) + 800fb1a: 5cd3 ldrb r3, [r2, r3] + 800fb1c: e7d5 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb1e: 7882 ldrb r2, [r0, #2] + 800fb20: f990 3001 ldrsb.w r3, [r0, #1] + 800fb24: b90a cbnz r2, 800fb2a <RegionAS923GetPhyParam+0xb6> + 800fb26: 4a28 ldr r2, [pc, #160] ; (800fbc8 <RegionAS923GetPhyParam+0x154>) + 800fb28: e7f7 b.n 800fb1a <RegionAS923GetPhyParam+0xa6> + 800fb2a: 4a28 ldr r2, [pc, #160] ; (800fbcc <RegionAS923GetPhyParam+0x158>) + 800fb2c: e7f5 b.n 800fb1a <RegionAS923GetPhyParam+0xa6> + 800fb2e: f640 33b8 movw r3, #3000 ; 0xbb8 + 800fb32: e7ca b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb34: f44f 737a mov.w r3, #1000 ; 0x3e8 + 800fb38: e7c7 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb3a: f44f 63fa mov.w r3, #2000 ; 0x7d0 + 800fb3e: e7c4 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb40: f241 3388 movw r3, #5000 ; 0x1388 + 800fb44: e7c1 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb46: f241 7370 movw r3, #6000 ; 0x1770 + 800fb4a: e7be b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb4c: f44f 4380 mov.w r3, #16384 ; 0x4000 + 800fb50: e7bb b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb52: 481f ldr r0, [pc, #124] ; (800fbd0 <RegionAS923GetPhyParam+0x15c>) + 800fb54: f44f 717a mov.w r1, #1000 ; 0x3e8 + 800fb58: f001 fe28 bl 80117ac <randr> + 800fb5c: f500 60fa add.w r0, r0, #2000 ; 0x7d0 + 800fb60: e7d0 b.n 800fb04 <RegionAS923GetPhyParam+0x90> + 800fb62: 4b1c ldr r3, [pc, #112] ; (800fbd4 <RegionAS923GetPhyParam+0x160>) + 800fb64: e7b1 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb66: 4b16 ldr r3, [pc, #88] ; (800fbc0 <RegionAS923GetPhyParam+0x14c>) + 800fb68: 681b ldr r3, [r3, #0] + 800fb6a: f503 6390 add.w r3, r3, #1152 ; 0x480 + 800fb6e: e7ac b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb70: 4b13 ldr r3, [pc, #76] ; (800fbc0 <RegionAS923GetPhyParam+0x14c>) + 800fb72: 681b ldr r3, [r3, #0] + 800fb74: f203 438c addw r3, r3, #1164 ; 0x48c + 800fb78: e7a7 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb7a: 2310 movs r3, #16 + 800fb7c: e7a5 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb7e: 4b10 ldr r3, [pc, #64] ; (800fbc0 <RegionAS923GetPhyParam+0x14c>) + 800fb80: 681b ldr r3, [r3, #0] + 800fb82: e7a2 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb84: 2301 movs r3, #1 + 800fb86: e7a0 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb88: f04f 4383 mov.w r3, #1098907648 ; 0x41800000 + 800fb8c: 9300 str r3, [sp, #0] + 800fb8e: 9800 ldr r0, [sp, #0] + 800fb90: b005 add sp, #20 + 800fb92: f85d fb04 ldr.w pc, [sp], #4 + 800fb96: 4b10 ldr r3, [pc, #64] ; (800fbd8 <RegionAS923GetPhyParam+0x164>) + 800fb98: e7f8 b.n 800fb8c <RegionAS923GetPhyParam+0x118> + 800fb9a: 4b10 ldr r3, [pc, #64] ; (800fbdc <RegionAS923GetPhyParam+0x168>) + 800fb9c: e795 b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fb9e: f240 2311 movw r3, #529 ; 0x211 + 800fba2: f8ad 3000 strh.w r3, [sp] + 800fba6: e7f2 b.n 800fb8e <RegionAS923GetPhyParam+0x11a> + 800fba8: 2303 movs r3, #3 + 800fbaa: e78e b.n 800faca <RegionAS923GetPhyParam+0x56> + 800fbac: f990 3001 ldrsb.w r3, [r0, #1] + 800fbb0: 4a0b ldr r2, [pc, #44] ; (800fbe0 <RegionAS923GetPhyParam+0x16c>) + 800fbb2: e7b2 b.n 800fb1a <RegionAS923GetPhyParam+0xa6> + 800fbb4: 490b ldr r1, [pc, #44] ; (800fbe4 <RegionAS923GetPhyParam+0x170>) + 800fbb6: f990 0001 ldrsb.w r0, [r0, #1] + 800fbba: f000 ff7f bl 8010abc <RegionCommonGetBandwidth> + 800fbbe: e7a1 b.n 800fb04 <RegionAS923GetPhyParam+0x90> + 800fbc0: 20002620 .word 0x20002620 + 800fbc4: 0801515b .word 0x0801515b + 800fbc8: 0801516b .word 0x0801516b + 800fbcc: 08015163 .word 0x08015163 + 800fbd0: fffffc18 .word 0xfffffc18 + 800fbd4: 3706ea00 .word 0x3706ea00 + 800fbd8: 4009999a .word 0x4009999a + 800fbdc: 3709f740 .word 0x3709f740 + 800fbe0: 0801514b .word 0x0801514b + 800fbe4: 08015124 .word 0x08015124 + +0800fbe8 <RegionAS923SetBandTxDone>: + 800fbe8: b537 push {r0, r1, r2, r4, r5, lr} + 800fbea: 4b0b ldr r3, [pc, #44] ; (800fc18 <RegionAS923SetBandTxDone+0x30>) + 800fbec: 7802 ldrb r2, [r0, #0] + 800fbee: 681b ldr r3, [r3, #0] + 800fbf0: 210c movs r1, #12 + 800fbf2: fb01 3302 mla r3, r1, r2, r3 + 800fbf6: 7a5b ldrb r3, [r3, #9] + 800fbf8: eb03 0443 add.w r4, r3, r3, lsl #1 + 800fbfc: 4b07 ldr r3, [pc, #28] ; (800fc1c <RegionAS923SetBandTxDone+0x34>) + 800fbfe: 681d ldr r5, [r3, #0] + 800fc00: 6903 ldr r3, [r0, #16] + 800fc02: 9300 str r3, [sp, #0] + 800fc04: 68c3 ldr r3, [r0, #12] + 800fc06: 7842 ldrb r2, [r0, #1] + 800fc08: 6881 ldr r1, [r0, #8] + 800fc0a: eb05 00c4 add.w r0, r5, r4, lsl #3 + 800fc0e: f000 fcd5 bl 80105bc <RegionCommonSetBandTxDone> + 800fc12: b003 add sp, #12 + 800fc14: bd30 pop {r4, r5, pc} + 800fc16: bf00 nop + 800fc18: 20002620 .word 0x20002620 + 800fc1c: 2000261c .word 0x2000261c + +0800fc20 <RegionAS923InitDefaults>: + 800fc20: b530 push {r4, r5, lr} + 800fc22: b087 sub sp, #28 + 800fc24: 7a02 ldrb r2, [r0, #8] + 800fc26: 2364 movs r3, #100 ; 0x64 + 800fc28: f8ad 3000 strh.w r3, [sp] + 800fc2c: 2a01 cmp r2, #1 + 800fc2e: f04f 0300 mov.w r3, #0 + 800fc32: e9cd 3301 strd r3, r3, [sp, #4] + 800fc36: e9cd 3303 strd r3, r3, [sp, #12] + 800fc3a: 4601 mov r1, r0 + 800fc3c: f88d 3002 strb.w r3, [sp, #2] + 800fc40: f88d 3014 strb.w r3, [sp, #20] + 800fc44: d027 beq.n 800fc96 <RegionAS923InitDefaults+0x76> + 800fc46: 2a02 cmp r2, #2 + 800fc48: d02e beq.n 800fca8 <RegionAS923InitDefaults+0x88> + 800fc4a: bb12 cbnz r2, 800fc92 <RegionAS923InitDefaults+0x72> + 800fc4c: 6800 ldr r0, [r0, #0] + 800fc4e: b300 cbz r0, 800fc92 <RegionAS923InitDefaults+0x72> + 800fc50: 684b ldr r3, [r1, #4] + 800fc52: b1f3 cbz r3, 800fc92 <RegionAS923InitDefaults+0x72> + 800fc54: 4a19 ldr r2, [pc, #100] ; (800fcbc <RegionAS923InitDefaults+0x9c>) + 800fc56: 4c1a ldr r4, [pc, #104] ; (800fcc0 <RegionAS923InitDefaults+0xa0>) + 800fc58: 6010 str r0, [r2, #0] + 800fc5a: 4669 mov r1, sp + 800fc5c: 2218 movs r2, #24 + 800fc5e: 6023 str r3, [r4, #0] + 800fc60: f001 fdc0 bl 80117e4 <memcpy1> + 800fc64: 4b17 ldr r3, [pc, #92] ; (800fcc4 <RegionAS923InitDefaults+0xa4>) + 800fc66: 6824 ldr r4, [r4, #0] + 800fc68: e893 0007 ldmia.w r3, {r0, r1, r2} + 800fc6c: 330c adds r3, #12 + 800fc6e: e884 0007 stmia.w r4, {r0, r1, r2} + 800fc72: e893 0007 ldmia.w r3, {r0, r1, r2} + 800fc76: f104 050c add.w r5, r4, #12 + 800fc7a: 2303 movs r3, #3 + 800fc7c: e885 0007 stmia.w r5, {r0, r1, r2} + 800fc80: f8a4 348c strh.w r3, [r4, #1164] ; 0x48c + 800fc84: 2201 movs r2, #1 + 800fc86: f204 418c addw r1, r4, #1164 ; 0x48c + 800fc8a: f504 6090 add.w r0, r4, #1152 ; 0x480 + 800fc8e: f000 fc86 bl 801059e <RegionCommonChanMaskCopy> + 800fc92: b007 add sp, #28 + 800fc94: bd30 pop {r4, r5, pc} + 800fc96: 490a ldr r1, [pc, #40] ; (800fcc0 <RegionAS923InitDefaults+0xa0>) + 800fc98: 6808 ldr r0, [r1, #0] + 800fc9a: 6043 str r3, [r0, #4] + 800fc9c: 6103 str r3, [r0, #16] + 800fc9e: f200 418c addw r1, r0, #1164 ; 0x48c + 800fca2: f500 6090 add.w r0, r0, #1152 ; 0x480 + 800fca6: e7f2 b.n 800fc8e <RegionAS923InitDefaults+0x6e> + 800fca8: 4b05 ldr r3, [pc, #20] ; (800fcc0 <RegionAS923InitDefaults+0xa0>) + 800fcaa: 681b ldr r3, [r3, #0] + 800fcac: f8b3 2480 ldrh.w r2, [r3, #1152] ; 0x480 + 800fcb0: f8b3 148c ldrh.w r1, [r3, #1164] ; 0x48c + 800fcb4: 430a orrs r2, r1 + 800fcb6: f8a3 2480 strh.w r2, [r3, #1152] ; 0x480 + 800fcba: e7ea b.n 800fc92 <RegionAS923InitDefaults+0x72> + 800fcbc: 2000261c .word 0x2000261c + 800fcc0: 20002620 .word 0x20002620 + 800fcc4: 0801440c .word 0x0801440c + +0800fcc8 <RegionAS923Verify>: + 800fcc8: b508 push {r3, lr} + 800fcca: 4603 mov r3, r0 + 800fccc: 290a cmp r1, #10 + 800fcce: d824 bhi.n 800fd1a <RegionAS923Verify+0x52> + 800fcd0: e8df f001 tbb [pc, r1] + 800fcd4: 23232306 .word 0x23232306 + 800fcd8: 1b160b23 .word 0x1b160b23 + 800fcdc: 2123 .short 0x2123 + 800fcde: 21 .byte 0x21 + 800fcdf: 00 .byte 0x00 + 800fce0: e8bd 4008 ldmia.w sp!, {r3, lr} + 800fce4: 6800 ldr r0, [r0, #0] + 800fce6: f7ff be87 b.w 800f9f8 <VerifyRfFreq> + 800fcea: f990 0000 ldrsb.w r0, [r0] + 800fcee: 7899 ldrb r1, [r3, #2] + 800fcf0: 2207 movs r2, #7 + 800fcf2: b971 cbnz r1, 800fd12 <RegionAS923Verify+0x4a> + 800fcf4: f000 fc13 bl 801051e <RegionCommonValueInRange> + 800fcf8: 3800 subs r0, #0 + 800fcfa: bf18 it ne + 800fcfc: 2001 movne r0, #1 + 800fcfe: bd08 pop {r3, pc} + 800fd00: 2205 movs r2, #5 + 800fd02: f993 0000 ldrsb.w r0, [r3] + 800fd06: 2100 movs r1, #0 + 800fd08: e7f4 b.n 800fcf4 <RegionAS923Verify+0x2c> + 800fd0a: f990 0000 ldrsb.w r0, [r0] + 800fd0e: 7859 ldrb r1, [r3, #1] + 800fd10: e7ee b.n 800fcf0 <RegionAS923Verify+0x28> + 800fd12: 2102 movs r1, #2 + 800fd14: e7ee b.n 800fcf4 <RegionAS923Verify+0x2c> + 800fd16: 2207 movs r2, #7 + 800fd18: e7f3 b.n 800fd02 <RegionAS923Verify+0x3a> + 800fd1a: 2000 movs r0, #0 + 800fd1c: e7ef b.n 800fcfe <RegionAS923Verify+0x36> + ... + +0800fd20 <RegionAS923ChanMaskSet>: + 800fd20: b510 push {r4, lr} + 800fd22: 7904 ldrb r4, [r0, #4] + 800fd24: b11c cbz r4, 800fd2e <RegionAS923ChanMaskSet+0xe> + 800fd26: 2c01 cmp r4, #1 + 800fd28: d00b beq.n 800fd42 <RegionAS923ChanMaskSet+0x22> + 800fd2a: 2000 movs r0, #0 + 800fd2c: bd10 pop {r4, pc} + 800fd2e: 4b0a ldr r3, [pc, #40] ; (800fd58 <RegionAS923ChanMaskSet+0x38>) + 800fd30: 6801 ldr r1, [r0, #0] + 800fd32: 681b ldr r3, [r3, #0] + 800fd34: 2201 movs r2, #1 + 800fd36: f503 6090 add.w r0, r3, #1152 ; 0x480 + 800fd3a: f000 fc30 bl 801059e <RegionCommonChanMaskCopy> + 800fd3e: 2001 movs r0, #1 + 800fd40: e7f4 b.n 800fd2c <RegionAS923ChanMaskSet+0xc> + 800fd42: 4b05 ldr r3, [pc, #20] ; (800fd58 <RegionAS923ChanMaskSet+0x38>) + 800fd44: 6801 ldr r1, [r0, #0] + 800fd46: 681b ldr r3, [r3, #0] + 800fd48: 4622 mov r2, r4 + 800fd4a: f203 408c addw r0, r3, #1164 ; 0x48c + 800fd4e: f000 fc26 bl 801059e <RegionCommonChanMaskCopy> + 800fd52: 4620 mov r0, r4 + 800fd54: e7ea b.n 800fd2c <RegionAS923ChanMaskSet+0xc> + 800fd56: bf00 nop + 800fd58: 20002620 .word 0x20002620 + +0800fd5c <RegionAS923ComputeRxWindowParameters>: + 800fd5c: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 800fd5e: 2807 cmp r0, #7 + 800fd60: 4d14 ldr r5, [pc, #80] ; (800fdb4 <RegionAS923ComputeRxWindowParameters+0x58>) + 800fd62: 461c mov r4, r3 + 800fd64: bfa8 it ge + 800fd66: 2007 movge r0, #7 + 800fd68: 7058 strb r0, [r3, #1] + 800fd6a: 460e mov r6, r1 + 800fd6c: 4629 mov r1, r5 + 800fd6e: 4617 mov r7, r2 + 800fd70: f000 fea4 bl 8010abc <RegionCommonGetBandwidth> + 800fd74: f994 3001 ldrsb.w r3, [r4, #1] + 800fd78: 70a0 strb r0, [r4, #2] + 800fd7a: 2b07 cmp r3, #7 + 800fd7c: d113 bne.n 800fda6 <RegionAS923ComputeRxWindowParameters+0x4a> + 800fd7e: 2032 movs r0, #50 ; 0x32 + 800fd80: f000 fd9c bl 80108bc <RegionCommonComputeSymbolTimeFsk> + 800fd84: 4b0c ldr r3, [pc, #48] ; (800fdb8 <RegionAS923ComputeRxWindowParameters+0x5c>) + 800fd86: 6ddb ldr r3, [r3, #92] ; 0x5c + 800fd88: 4605 mov r5, r0 + 800fd8a: 4798 blx r3 + 800fd8c: f104 020c add.w r2, r4, #12 + 800fd90: 3408 adds r4, #8 + 800fd92: 4603 mov r3, r0 + 800fd94: 9201 str r2, [sp, #4] + 800fd96: 9400 str r4, [sp, #0] + 800fd98: 463a mov r2, r7 + 800fd9a: 4631 mov r1, r6 + 800fd9c: 4628 mov r0, r5 + 800fd9e: f000 fd92 bl 80108c6 <RegionCommonComputeRxWindowParameters> + 800fda2: b003 add sp, #12 + 800fda4: bdf0 pop {r4, r5, r6, r7, pc} + 800fda6: 4a05 ldr r2, [pc, #20] ; (800fdbc <RegionAS923ComputeRxWindowParameters+0x60>) + 800fda8: f855 1023 ldr.w r1, [r5, r3, lsl #2] + 800fdac: 5cd0 ldrb r0, [r2, r3] + 800fdae: f000 fd7d bl 80108ac <RegionCommonComputeSymbolTimeLoRa> + 800fdb2: e7e7 b.n 800fd84 <RegionAS923ComputeRxWindowParameters+0x28> + 800fdb4: 08015124 .word 0x08015124 + 800fdb8: 08015784 .word 0x08015784 + 800fdbc: 0801514b .word 0x0801514b + +0800fdc0 <RegionAS923RxConfig>: + 800fdc0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800fdc4: 4f34 ldr r7, [pc, #208] ; (800fe98 <RegionAS923RxConfig+0xd8>) + 800fdc6: f990 6001 ldrsb.w r6, [r0, #1] + 800fdca: 687b ldr r3, [r7, #4] + 800fdcc: f8d0 9004 ldr.w r9, [r0, #4] + 800fdd0: b08b sub sp, #44 ; 0x2c + 800fdd2: 4604 mov r4, r0 + 800fdd4: 4688 mov r8, r1 + 800fdd6: 4798 blx r3 + 800fdd8: 4605 mov r5, r0 + 800fdda: 2800 cmp r0, #0 + 800fddc: d159 bne.n 800fe92 <RegionAS923RxConfig+0xd2> + 800fdde: 7ce3 ldrb r3, [r4, #19] + 800fde0: b973 cbnz r3, 800fe00 <RegionAS923RxConfig+0x40> + 800fde2: 4a2e ldr r2, [pc, #184] ; (800fe9c <RegionAS923RxConfig+0xdc>) + 800fde4: 7823 ldrb r3, [r4, #0] + 800fde6: 6812 ldr r2, [r2, #0] + 800fde8: eb03 0343 add.w r3, r3, r3, lsl #1 + 800fdec: 0099 lsls r1, r3, #2 + 800fdee: eb02 0383 add.w r3, r2, r3, lsl #2 + 800fdf2: f8d3 9004 ldr.w r9, [r3, #4] + 800fdf6: f1b9 0f00 cmp.w r9, #0 + 800fdfa: d101 bne.n 800fe00 <RegionAS923RxConfig+0x40> + 800fdfc: f852 9001 ldr.w r9, [r2, r1] + 800fe00: 4b27 ldr r3, [pc, #156] ; (800fea0 <RegionAS923RxConfig+0xe0>) + 800fe02: 4648 mov r0, r9 + 800fe04: f913 b006 ldrsb.w fp, [r3, r6] + 800fe08: 68fb ldr r3, [r7, #12] + 800fe0a: 4798 blx r3 + 800fe0c: 7ca3 ldrb r3, [r4, #18] + 800fe0e: f8d7 a018 ldr.w sl, [r7, #24] + 800fe12: 8922 ldrh r2, [r4, #8] + 800fe14: 9309 str r3, [sp, #36] ; 0x24 + 800fe16: 2e07 cmp r6, #7 + 800fe18: d128 bne.n 800fe6c <RegionAS923RxConfig+0xac> + 800fe1a: 2300 movs r3, #0 + 800fe1c: 2101 movs r1, #1 + 800fe1e: e9cd 2302 strd r2, r3, [sp, #8] + 800fe22: 4a20 ldr r2, [pc, #128] ; (800fea4 <RegionAS923RxConfig+0xe4>) + 800fe24: 9306 str r3, [sp, #24] + 800fe26: e9cd 3104 strd r3, r1, [sp, #16] + 800fe2a: e9cd 3307 strd r3, r3, [sp, #28] + 800fe2e: 2105 movs r1, #5 + 800fe30: e9cd 2100 strd r2, r1, [sp] + 800fe34: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800fe38: fb02 f20b mul.w r2, r2, fp + 800fe3c: f24c 3150 movw r1, #50000 ; 0xc350 + 800fe40: 4618 mov r0, r3 + 800fe42: 47d0 blx sl + 800fe44: 7c63 ldrb r3, [r4, #17] + 800fe46: b313 cbz r3, 800fe8e <RegionAS923RxConfig+0xce> + 800fe48: 4b17 ldr r3, [pc, #92] ; (800fea8 <RegionAS923RxConfig+0xe8>) + 800fe4a: 5d99 ldrb r1, [r3, r6] + 800fe4c: 6d7b ldr r3, [r7, #84] ; 0x54 + 800fe4e: 310d adds r1, #13 + 800fe50: b2c9 uxtb r1, r1 + 800fe52: 4628 mov r0, r5 + 800fe54: 4798 blx r3 + 800fe56: 7ce0 ldrb r0, [r4, #19] + 800fe58: 4632 mov r2, r6 + 800fe5a: 4649 mov r1, r9 + 800fe5c: f000 fe40 bl 8010ae0 <RegionCommonRxConfigPrint> + 800fe60: f888 6000 strb.w r6, [r8] + 800fe64: 2001 movs r0, #1 + 800fe66: b00b add sp, #44 ; 0x2c + 800fe68: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800fe6c: 2100 movs r1, #0 + 800fe6e: 2501 movs r5, #1 + 800fe70: 2308 movs r3, #8 + 800fe72: e9cd 1300 strd r1, r3, [sp] + 800fe76: e9cd 1507 strd r1, r5, [sp, #28] + 800fe7a: e9cd 1105 strd r1, r1, [sp, #20] + 800fe7e: e9cd 1103 strd r1, r1, [sp, #12] + 800fe82: 9202 str r2, [sp, #8] + 800fe84: 78a1 ldrb r1, [r4, #2] + 800fe86: 462b mov r3, r5 + 800fe88: 465a mov r2, fp + 800fe8a: 4628 mov r0, r5 + 800fe8c: e7d9 b.n 800fe42 <RegionAS923RxConfig+0x82> + 800fe8e: 4b07 ldr r3, [pc, #28] ; (800feac <RegionAS923RxConfig+0xec>) + 800fe90: e7db b.n 800fe4a <RegionAS923RxConfig+0x8a> + 800fe92: 2000 movs r0, #0 + 800fe94: e7e7 b.n 800fe66 <RegionAS923RxConfig+0xa6> + 800fe96: bf00 nop + 800fe98: 08015784 .word 0x08015784 + 800fe9c: 20002620 .word 0x20002620 + 800fea0: 0801514b .word 0x0801514b + 800fea4: 00014585 .word 0x00014585 + 800fea8: 0801516b .word 0x0801516b + 800feac: 0801515b .word 0x0801515b + +0800feb0 <RegionAS923TxConfig>: + 800feb0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800feb4: b08d sub sp, #52 ; 0x34 + 800feb6: f990 3001 ldrsb.w r3, [r0, #1] + 800feba: f8df a0f8 ldr.w sl, [pc, #248] ; 800ffb4 <RegionAS923TxConfig+0x104> + 800febe: f8df 90f8 ldr.w r9, [pc, #248] ; 800ffb8 <RegionAS923TxConfig+0x108> + 800fec2: e9cd 120a strd r1, r2, [sp, #40] ; 0x28 + 800fec6: 4a3d ldr r2, [pc, #244] ; (800ffbc <RegionAS923TxConfig+0x10c>) + 800fec8: 7801 ldrb r1, [r0, #0] + 800feca: f912 b003 ldrsb.w fp, [r2, r3] + 800fece: f8da 2000 ldr.w r2, [sl] + 800fed2: 4b3b ldr r3, [pc, #236] ; (800ffc0 <RegionAS923TxConfig+0x110>) + 800fed4: 250c movs r5, #12 + 800fed6: fb05 2201 mla r2, r5, r1, r2 + 800feda: 681b ldr r3, [r3, #0] + 800fedc: 7a52 ldrb r2, [r2, #9] + 800fede: 2118 movs r1, #24 + 800fee0: fb01 3302 mla r3, r1, r2, r3 + 800fee4: 4604 mov r4, r0 + 800fee6: f993 1002 ldrsb.w r1, [r3, #2] + 800feea: f990 0002 ldrsb.w r0, [r0, #2] + 800feee: f000 fde0 bl 8010ab2 <RegionCommonLimitTxPower> + 800fef2: 4934 ldr r1, [pc, #208] ; (800ffc4 <RegionAS923TxConfig+0x114>) + 800fef4: 4606 mov r6, r0 + 800fef6: f994 0001 ldrsb.w r0, [r4, #1] + 800fefa: f000 fddf bl 8010abc <RegionCommonGetBandwidth> + 800fefe: 68a2 ldr r2, [r4, #8] + 800ff00: 6861 ldr r1, [r4, #4] + 800ff02: 4680 mov r8, r0 + 800ff04: 4630 mov r0, r6 + 800ff06: f000 fd06 bl 8010916 <RegionCommonComputeTxPower> + 800ff0a: 7821 ldrb r1, [r4, #0] + 800ff0c: f8da 2000 ldr.w r2, [sl] + 800ff10: f8d9 300c ldr.w r3, [r9, #12] + 800ff14: 4369 muls r1, r5 + 800ff16: 4607 mov r7, r0 + 800ff18: 5850 ldr r0, [r2, r1] + 800ff1a: 4798 blx r3 + 800ff1c: f8d9 301c ldr.w r3, [r9, #28] + 800ff20: 469c mov ip, r3 + 800ff22: f994 3001 ldrsb.w r3, [r4, #1] + 800ff26: 2500 movs r5, #0 + 800ff28: 2b07 cmp r3, #7 + 800ff2a: f44f 637a mov.w r3, #4000 ; 0xfa0 + 800ff2e: e9cd 5307 strd r5, r3, [sp, #28] + 800ff32: e9cd 5505 strd r5, r5, [sp, #20] + 800ff36: d12d bne.n 800ff94 <RegionAS923TxConfig+0xe4> + 800ff38: 2301 movs r3, #1 + 800ff3a: e9cd 5303 strd r5, r3, [sp, #12] + 800ff3e: 2305 movs r3, #5 + 800ff40: e9cd 5301 strd r5, r3, [sp, #4] + 800ff44: f44f 737a mov.w r3, #1000 ; 0x3e8 + 800ff48: fb03 f30b mul.w r3, r3, fp + 800ff4c: 9300 str r3, [sp, #0] + 800ff4e: 4639 mov r1, r7 + 800ff50: 4643 mov r3, r8 + 800ff52: f246 12a8 movw r2, #25000 ; 0x61a8 + 800ff56: 4628 mov r0, r5 + 800ff58: 4667 mov r7, ip + 800ff5a: 47b8 blx r7 + 800ff5c: 7823 ldrb r3, [r4, #0] + 800ff5e: f8da 2000 ldr.w r2, [sl] + 800ff62: 210c movs r1, #12 + 800ff64: 434b muls r3, r1 + 800ff66: f994 1001 ldrsb.w r1, [r4, #1] + 800ff6a: 58d0 ldr r0, [r2, r3] + 800ff6c: f000 fdda bl 8010b24 <RegionCommonTxConfigPrint> + 800ff70: 89a1 ldrh r1, [r4, #12] + 800ff72: f994 0001 ldrsb.w r0, [r4, #1] + 800ff76: f7ff fd53 bl 800fa20 <GetTimeOnAir> + 800ff7a: 9b0b ldr r3, [sp, #44] ; 0x2c + 800ff7c: 7b21 ldrb r1, [r4, #12] + 800ff7e: 6018 str r0, [r3, #0] + 800ff80: f8d9 3054 ldr.w r3, [r9, #84] ; 0x54 + 800ff84: 4628 mov r0, r5 + 800ff86: 4798 blx r3 + 800ff88: 9b0a ldr r3, [sp, #40] ; 0x28 + 800ff8a: 2001 movs r0, #1 + 800ff8c: 701e strb r6, [r3, #0] + 800ff8e: b00d add sp, #52 ; 0x34 + 800ff90: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800ff94: 2001 movs r0, #1 + 800ff96: 2308 movs r3, #8 + 800ff98: e9cd 5003 strd r5, r0, [sp, #12] + 800ff9c: e9cd 0301 strd r0, r3, [sp, #4] + 800ffa0: 462a mov r2, r5 + 800ffa2: f8cd b000 str.w fp, [sp] + 800ffa6: 4665 mov r5, ip + 800ffa8: 4643 mov r3, r8 + 800ffaa: 4639 mov r1, r7 + 800ffac: 47a8 blx r5 + 800ffae: 2001 movs r0, #1 + 800ffb0: 4605 mov r5, r0 + 800ffb2: e7d3 b.n 800ff5c <RegionAS923TxConfig+0xac> + 800ffb4: 20002620 .word 0x20002620 + 800ffb8: 08015784 .word 0x08015784 + 800ffbc: 0801514b .word 0x0801514b + 800ffc0: 2000261c .word 0x2000261c + 800ffc4: 08015124 .word 0x08015124 + +0800ffc8 <RegionAS923LinkAdrReq>: + 800ffc8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800ffcc: b08f sub sp, #60 ; 0x3c + 800ffce: 2400 movs r4, #0 + 800ffd0: 4605 mov r5, r0 + 800ffd2: 468a mov sl, r1 + 800ffd4: 4691 mov r9, r2 + 800ffd6: 4698 mov r8, r3 + 800ffd8: 9404 str r4, [sp, #16] + 800ffda: f8ad 4014 strh.w r4, [sp, #20] + 800ffde: f8ad 4002 strh.w r4, [sp, #2] + 800ffe2: 2607 movs r6, #7 + 800ffe4: f04f 0b01 mov.w fp, #1 + 800ffe8: 7a2b ldrb r3, [r5, #8] + 800ffea: 42a3 cmp r3, r4 + 800ffec: d906 bls.n 800fffc <RegionAS923LinkAdrReq+0x34> + 800ffee: 6868 ldr r0, [r5, #4] + 800fff0: a904 add r1, sp, #16 + 800fff2: 4420 add r0, r4 + 800fff4: f000 fbf4 bl 80107e0 <RegionCommonParseLinkAdrReq> + 800fff8: 2800 cmp r0, #0 + 800fffa: d15d bne.n 80100b8 <RegionAS923LinkAdrReq+0xf0> + 800fffc: 2302 movs r3, #2 + 800fffe: f88d 3008 strb.w r3, [sp, #8] + 8010002: a802 add r0, sp, #8 + 8010004: 7a6b ldrb r3, [r5, #9] + 8010006: f88d 300a strb.w r3, [sp, #10] + 801000a: f7ff fd33 bl 800fa74 <RegionAS923GetPhyParam> + 801000e: 7aab ldrb r3, [r5, #10] + 8010010: f88d 301d strb.w r3, [sp, #29] + 8010014: f89d 3011 ldrb.w r3, [sp, #17] + 8010018: f88d 301e strb.w r3, [sp, #30] + 801001c: f89d 3012 ldrb.w r3, [sp, #18] + 8010020: f88d 301f strb.w r3, [sp, #31] + 8010024: f89d 3010 ldrb.w r3, [sp, #16] + 8010028: f88d 3020 strb.w r3, [sp, #32] + 801002c: 7aeb ldrb r3, [r5, #11] + 801002e: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 8010032: 7b2b ldrb r3, [r5, #12] + 8010034: f88d 3022 strb.w r3, [sp, #34] ; 0x22 + 8010038: 7b6b ldrb r3, [r5, #13] + 801003a: f88d 3023 strb.w r3, [sp, #35] ; 0x23 + 801003e: 2310 movs r3, #16 + 8010040: f88d 601c strb.w r6, [sp, #28] + 8010044: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + 8010048: 4e3a ldr r6, [pc, #232] ; (8010134 <RegionAS923LinkAdrReq+0x16c>) + 801004a: f88d 002c strb.w r0, [sp, #44] ; 0x2c + 801004e: f10d 0302 add.w r3, sp, #2 + 8010052: 930a str r3, [sp, #40] ; 0x28 + 8010054: 2307 movs r3, #7 + 8010056: 6832 ldr r2, [r6, #0] + 8010058: f88d 302d strb.w r3, [sp, #45] ; 0x2d + 801005c: f8ad 3034 strh.w r3, [sp, #52] ; 0x34 + 8010060: 682b ldr r3, [r5, #0] + 8010062: 920c str r2, [sp, #48] ; 0x30 + 8010064: 9306 str r3, [sp, #24] + 8010066: f10d 0212 add.w r2, sp, #18 + 801006a: ab04 add r3, sp, #16 + 801006c: f10d 0111 add.w r1, sp, #17 + 8010070: a806 add r0, sp, #24 + 8010072: f000 fbcf bl 8010814 <RegionCommonLinkAdrReqVerifyParams> + 8010076: 2807 cmp r0, #7 + 8010078: 4605 mov r5, r0 + 801007a: d10b bne.n 8010094 <RegionAS923LinkAdrReq+0xcc> + 801007c: 6830 ldr r0, [r6, #0] + 801007e: 220c movs r2, #12 + 8010080: 2100 movs r1, #0 + 8010082: f500 6090 add.w r0, r0, #1152 ; 0x480 + 8010086: f001 fbc1 bl 801180c <memset1> + 801008a: 6833 ldr r3, [r6, #0] + 801008c: f8bd 2002 ldrh.w r2, [sp, #2] + 8010090: f8a3 2480 strh.w r2, [r3, #1152] ; 0x480 + 8010094: f89d 3011 ldrb.w r3, [sp, #17] + 8010098: f88a 3000 strb.w r3, [sl] + 801009c: f89d 3012 ldrb.w r3, [sp, #18] + 80100a0: f889 3000 strb.w r3, [r9] + 80100a4: f89d 3010 ldrb.w r3, [sp, #16] + 80100a8: f888 3000 strb.w r3, [r8] + 80100ac: 9b18 ldr r3, [sp, #96] ; 0x60 + 80100ae: 4628 mov r0, r5 + 80100b0: 701c strb r4, [r3, #0] + 80100b2: b00f add sp, #60 ; 0x3c + 80100b4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80100b8: f89d 3013 ldrb.w r3, [sp, #19] + 80100bc: f8bd 7014 ldrh.w r7, [sp, #20] + 80100c0: f8ad 7002 strh.w r7, [sp, #2] + 80100c4: 4420 add r0, r4 + 80100c6: b2c4 uxtb r4, r0 + 80100c8: b9f3 cbnz r3, 8010108 <RegionAS923LinkAdrReq+0x140> + 80100ca: b317 cbz r7, 8010112 <RegionAS923LinkAdrReq+0x14a> + 80100cc: 4a19 ldr r2, [pc, #100] ; (8010134 <RegionAS923LinkAdrReq+0x16c>) + 80100ce: 2000 movs r0, #0 + 80100d0: 6811 ldr r1, [r2, #0] + 80100d2: 2607 movs r6, #7 + 80100d4: 4602 mov r2, r0 + 80100d6: f04f 0c0c mov.w ip, #12 + 80100da: 2b06 cmp r3, #6 + 80100dc: d11b bne.n 8010116 <RegionAS923LinkAdrReq+0x14e> + 80100de: fb0c fe00 mul.w lr, ip, r0 + 80100e2: f851 e00e ldr.w lr, [r1, lr] + 80100e6: f1be 0f00 cmp.w lr, #0 + 80100ea: d004 beq.n 80100f6 <RegionAS923LinkAdrReq+0x12e> + 80100ec: fa0b f200 lsl.w r2, fp, r0 + 80100f0: 433a orrs r2, r7 + 80100f2: b297 uxth r7, r2 + 80100f4: 2201 movs r2, #1 + 80100f6: 3001 adds r0, #1 + 80100f8: 2810 cmp r0, #16 + 80100fa: d1ee bne.n 80100da <RegionAS923LinkAdrReq+0x112> + 80100fc: 2a00 cmp r2, #0 + 80100fe: f43f af73 beq.w 800ffe8 <RegionAS923LinkAdrReq+0x20> + 8010102: f8ad 7002 strh.w r7, [sp, #2] + 8010106: e76f b.n 800ffe8 <RegionAS923LinkAdrReq+0x20> + 8010108: 1e5a subs r2, r3, #1 + 801010a: 2a04 cmp r2, #4 + 801010c: d901 bls.n 8010112 <RegionAS923LinkAdrReq+0x14a> + 801010e: 2b06 cmp r3, #6 + 8010110: d0dc beq.n 80100cc <RegionAS923LinkAdrReq+0x104> + 8010112: 2606 movs r6, #6 + 8010114: e768 b.n 800ffe8 <RegionAS923LinkAdrReq+0x20> + 8010116: fa47 fe00 asr.w lr, r7, r0 + 801011a: f01e 0f01 tst.w lr, #1 + 801011e: d0ea beq.n 80100f6 <RegionAS923LinkAdrReq+0x12e> + 8010120: fb0c fe00 mul.w lr, ip, r0 + 8010124: f851 e00e ldr.w lr, [r1, lr] + 8010128: f1be 0f00 cmp.w lr, #0 + 801012c: bf08 it eq + 801012e: 2606 moveq r6, #6 + 8010130: e7e1 b.n 80100f6 <RegionAS923LinkAdrReq+0x12e> + 8010132: bf00 nop + 8010134: 20002620 .word 0x20002620 + +08010138 <RegionAS923RxParamSetupReq>: + 8010138: b538 push {r3, r4, r5, lr} + 801013a: 4605 mov r5, r0 + 801013c: 6840 ldr r0, [r0, #4] + 801013e: f7ff fc5b bl 800f9f8 <VerifyRfFreq> + 8010142: 2207 movs r2, #7 + 8010144: 1d84 adds r4, r0, #6 + 8010146: 2100 movs r1, #0 + 8010148: f995 0000 ldrsb.w r0, [r5] + 801014c: b2e4 uxtb r4, r4 + 801014e: f000 f9e6 bl 801051e <RegionCommonValueInRange> + 8010152: b908 cbnz r0, 8010158 <RegionAS923RxParamSetupReq+0x20> + 8010154: f004 04fd and.w r4, r4, #253 ; 0xfd + 8010158: f995 0001 ldrsb.w r0, [r5, #1] + 801015c: 2207 movs r2, #7 + 801015e: 2100 movs r1, #0 + 8010160: f000 f9dd bl 801051e <RegionCommonValueInRange> + 8010164: b908 cbnz r0, 801016a <RegionAS923RxParamSetupReq+0x32> + 8010166: f004 04fb and.w r4, r4, #251 ; 0xfb + 801016a: 4620 mov r0, r4 + 801016c: bd38 pop {r3, r4, r5, pc} + +0801016e <RegionAS923TxParamSetupReq>: + 801016e: 2000 movs r0, #0 + 8010170: 4770 bx lr + ... + +08010174 <RegionAS923DlChannelReq>: + 8010174: b510 push {r4, lr} + 8010176: 7803 ldrb r3, [r0, #0] + 8010178: 2b0f cmp r3, #15 + 801017a: 4604 mov r4, r0 + 801017c: d818 bhi.n 80101b0 <RegionAS923DlChannelReq+0x3c> + 801017e: 6840 ldr r0, [r0, #4] + 8010180: f7ff fc3a bl 800f9f8 <VerifyRfFreq> + 8010184: 7822 ldrb r2, [r4, #0] + 8010186: 490b ldr r1, [pc, #44] ; (80101b4 <RegionAS923DlChannelReq+0x40>) + 8010188: eb02 0242 add.w r2, r2, r2, lsl #1 + 801018c: 6809 ldr r1, [r1, #0] + 801018e: 1c83 adds r3, r0, #2 + 8010190: eb01 0082 add.w r0, r1, r2, lsl #2 + 8010194: f851 2022 ldr.w r2, [r1, r2, lsl #2] + 8010198: b2db uxtb r3, r3 + 801019a: b91a cbnz r2, 80101a4 <RegionAS923DlChannelReq+0x30> + 801019c: f003 03fd and.w r3, r3, #253 ; 0xfd + 80101a0: b258 sxtb r0, r3 + 80101a2: bd10 pop {r4, pc} + 80101a4: 2b03 cmp r3, #3 + 80101a6: bf06 itte eq + 80101a8: 6862 ldreq r2, [r4, #4] + 80101aa: 6042 streq r2, [r0, #4] + 80101ac: 2302 movne r3, #2 + 80101ae: e7f7 b.n 80101a0 <RegionAS923DlChannelReq+0x2c> + 80101b0: 2000 movs r0, #0 + 80101b2: e7f6 b.n 80101a2 <RegionAS923DlChannelReq+0x2e> + 80101b4: 20002620 .word 0x20002620 + +080101b8 <RegionAS923AlternateDr>: + 80101b8: 2002 movs r0, #2 + 80101ba: 4770 bx lr + +080101bc <RegionAS923NextChannel>: + 80101bc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80101c0: 4d3a ldr r5, [pc, #232] ; (80102ac <RegionAS923NextChannel+0xf0>) + 80101c2: 4604 mov r4, r0 + 80101c4: 6828 ldr r0, [r5, #0] + 80101c6: b096 sub sp, #88 ; 0x58 + 80101c8: 460e mov r6, r1 + 80101ca: 4690 mov r8, r2 + 80101cc: 2100 movs r1, #0 + 80101ce: 461f mov r7, r3 + 80101d0: 2201 movs r2, #1 + 80101d2: 2303 movs r3, #3 + 80101d4: f500 6090 add.w r0, r0, #1152 ; 0x480 + 80101d8: e9cd 1104 strd r1, r1, [sp, #16] + 80101dc: e9cd 1106 strd r1, r1, [sp, #24] + 80101e0: f88d 100c strb.w r1, [sp, #12] + 80101e4: f88d 100d strb.w r1, [sp, #13] + 80101e8: f8ad 300e strh.w r3, [sp, #14] + 80101ec: f000 f9b9 bl 8010562 <RegionCommonCountChannels> + 80101f0: b930 cbnz r0, 8010200 <RegionAS923NextChannel+0x44> + 80101f2: 682a ldr r2, [r5, #0] + 80101f4: f8b2 3480 ldrh.w r3, [r2, #1152] ; 0x480 + 80101f8: f043 0303 orr.w r3, r3, #3 + 80101fc: f8a2 3480 strh.w r3, [r2, #1152] ; 0x480 + 8010200: 682a ldr r2, [r5, #0] + 8010202: 7a63 ldrb r3, [r4, #9] + 8010204: f88d 3020 strb.w r3, [sp, #32] + 8010208: f502 6190 add.w r1, r2, #1152 ; 0x480 + 801020c: e9cd 1209 strd r1, r2, [sp, #36] ; 0x24 + 8010210: 4a27 ldr r2, [pc, #156] ; (80102b0 <RegionAS923NextChannel+0xf4>) + 8010212: f994 3008 ldrsb.w r3, [r4, #8] + 8010216: 6812 ldr r2, [r2, #0] + 8010218: 920b str r2, [sp, #44] ; 0x2c + 801021a: 2210 movs r2, #16 + 801021c: f8ad 2030 strh.w r2, [sp, #48] ; 0x30 + 8010220: f10d 020e add.w r2, sp, #14 + 8010224: 920d str r2, [sp, #52] ; 0x34 + 8010226: 6822 ldr r2, [r4, #0] + 8010228: 920e str r2, [sp, #56] ; 0x38 + 801022a: 6862 ldr r2, [r4, #4] + 801022c: 920f str r2, [sp, #60] ; 0x3c + 801022e: e9d4 0103 ldrd r0, r1, [r4, #12] + 8010232: 7aa2 ldrb r2, [r4, #10] + 8010234: f88d 2040 strb.w r2, [sp, #64] ; 0x40 + 8010238: 2201 movs r2, #1 + 801023a: f88d 2041 strb.w r2, [sp, #65] ; 0x41 + 801023e: aa11 add r2, sp, #68 ; 0x44 + 8010240: e882 0003 stmia.w r2, {r0, r1} + 8010244: 7d22 ldrb r2, [r4, #20] + 8010246: 8ae1 ldrh r1, [r4, #22] + 8010248: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 801024c: 4618 mov r0, r3 + 801024e: f88d 204c strb.w r2, [sp, #76] ; 0x4c + 8010252: f7ff fbe5 bl 800fa20 <GetTimeOnAir> + 8010256: ab08 add r3, sp, #32 + 8010258: 9315 str r3, [sp, #84] ; 0x54 + 801025a: f10d 030d add.w r3, sp, #13 + 801025e: 9014 str r0, [sp, #80] ; 0x50 + 8010260: 9300 str r3, [sp, #0] + 8010262: f8cd 8004 str.w r8, [sp, #4] + 8010266: ab03 add r3, sp, #12 + 8010268: aa04 add r2, sp, #16 + 801026a: 4639 mov r1, r7 + 801026c: a80e add r0, sp, #56 ; 0x38 + 801026e: f000 fbc1 bl 80109f4 <RegionCommonIdentifyChannels> + 8010272: 4604 mov r4, r0 + 8010274: b978 cbnz r0, 8010296 <RegionAS923NextChannel+0xda> + 8010276: f89d 100c ldrb.w r1, [sp, #12] + 801027a: 3901 subs r1, #1 + 801027c: f001 fa96 bl 80117ac <randr> + 8010280: f100 0358 add.w r3, r0, #88 ; 0x58 + 8010284: eb0d 0003 add.w r0, sp, r3 + 8010288: f810 3c48 ldrb.w r3, [r0, #-72] + 801028c: 7033 strb r3, [r6, #0] + 801028e: 4620 mov r0, r4 + 8010290: b016 add sp, #88 ; 0x58 + 8010292: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8010296: 280c cmp r0, #12 + 8010298: bf01 itttt eq + 801029a: 682a ldreq r2, [r5, #0] + 801029c: f8b2 3480 ldrheq.w r3, [r2, #1152] ; 0x480 + 80102a0: f043 0303 orreq.w r3, r3, #3 + 80102a4: f8a2 3480 strheq.w r3, [r2, #1152] ; 0x480 + 80102a8: e7f1 b.n 801028e <RegionAS923NextChannel+0xd2> + 80102aa: bf00 nop + 80102ac: 20002620 .word 0x20002620 + 80102b0: 2000261c .word 0x2000261c + +080102b4 <RegionAS923ChannelAdd>: + 80102b4: b5f8 push {r3, r4, r5, r6, r7, lr} + 80102b6: 7906 ldrb r6, [r0, #4] + 80102b8: 2e01 cmp r6, #1 + 80102ba: 4605 mov r5, r0 + 80102bc: d801 bhi.n 80102c2 <RegionAS923ChannelAdd+0xe> + 80102be: 2006 movs r0, #6 + 80102c0: bdf8 pop {r3, r4, r5, r6, r7, pc} + 80102c2: 2e0f cmp r6, #15 + 80102c4: d82b bhi.n 801031e <RegionAS923ChannelAdd+0x6a> + 80102c6: 6803 ldr r3, [r0, #0] + 80102c8: 7a18 ldrb r0, [r3, #8] + 80102ca: f340 0003 sbfx r0, r0, #0, #4 + 80102ce: 2207 movs r2, #7 + 80102d0: 2100 movs r1, #0 + 80102d2: b240 sxtb r0, r0 + 80102d4: f000 f923 bl 801051e <RegionCommonValueInRange> + 80102d8: 682b ldr r3, [r5, #0] + 80102da: 4604 mov r4, r0 + 80102dc: 7a18 ldrb r0, [r3, #8] + 80102de: f340 1003 sbfx r0, r0, #4, #4 + 80102e2: 2207 movs r2, #7 + 80102e4: 2100 movs r1, #0 + 80102e6: b240 sxtb r0, r0 + 80102e8: f000 f919 bl 801051e <RegionCommonValueInRange> + 80102ec: b1a8 cbz r0, 801031a <RegionAS923ChannelAdd+0x66> + 80102ee: fab4 f484 clz r4, r4 + 80102f2: 0964 lsrs r4, r4, #5 + 80102f4: 6829 ldr r1, [r5, #0] + 80102f6: 7a0b ldrb r3, [r1, #8] + 80102f8: 6808 ldr r0, [r1, #0] + 80102fa: f343 0203 sbfx r2, r3, #0, #4 + 80102fe: f343 1303 sbfx r3, r3, #4, #4 + 8010302: b252 sxtb r2, r2 + 8010304: b25b sxtb r3, r3 + 8010306: 429a cmp r2, r3 + 8010308: bfc8 it gt + 801030a: 2401 movgt r4, #1 + 801030c: f7ff fb74 bl 800f9f8 <VerifyRfFreq> + 8010310: b948 cbnz r0, 8010326 <RegionAS923ChannelAdd+0x72> + 8010312: 2c00 cmp r4, #0 + 8010314: d1d3 bne.n 80102be <RegionAS923ChannelAdd+0xa> + 8010316: 2004 movs r0, #4 + 8010318: e7d2 b.n 80102c0 <RegionAS923ChannelAdd+0xc> + 801031a: 2401 movs r4, #1 + 801031c: e7ea b.n 80102f4 <RegionAS923ChannelAdd+0x40> + 801031e: 2003 movs r0, #3 + 8010320: e7ce b.n 80102c0 <RegionAS923ChannelAdd+0xc> + 8010322: 2005 movs r0, #5 + 8010324: e7cc b.n 80102c0 <RegionAS923ChannelAdd+0xc> + 8010326: 2c00 cmp r4, #0 + 8010328: d1fb bne.n 8010322 <RegionAS923ChannelAdd+0x6e> + 801032a: 4f0c ldr r7, [pc, #48] ; (801035c <RegionAS923ChannelAdd+0xa8>) + 801032c: 6829 ldr r1, [r5, #0] + 801032e: 683b ldr r3, [r7, #0] + 8010330: eb06 0046 add.w r0, r6, r6, lsl #1 + 8010334: eb03 0080 add.w r0, r3, r0, lsl #2 + 8010338: 220c movs r2, #12 + 801033a: f001 fa53 bl 80117e4 <memcpy1> + 801033e: 683a ldr r2, [r7, #0] + 8010340: 230c movs r3, #12 + 8010342: fb03 2306 mla r3, r3, r6, r2 + 8010346: 4620 mov r0, r4 + 8010348: 725c strb r4, [r3, #9] + 801034a: f8b2 1480 ldrh.w r1, [r2, #1152] ; 0x480 + 801034e: 2301 movs r3, #1 + 8010350: 40b3 lsls r3, r6 + 8010352: 430b orrs r3, r1 + 8010354: f8a2 3480 strh.w r3, [r2, #1152] ; 0x480 + 8010358: e7b2 b.n 80102c0 <RegionAS923ChannelAdd+0xc> + 801035a: bf00 nop + 801035c: 20002620 .word 0x20002620 + +08010360 <RegionAS923ChannelsRemove>: + 8010360: b410 push {r4} + 8010362: 7801 ldrb r1, [r0, #0] + 8010364: 2901 cmp r1, #1 + 8010366: d90e bls.n 8010386 <RegionAS923ChannelsRemove+0x26> + 8010368: 4b08 ldr r3, [pc, #32] ; (801038c <RegionAS923ChannelsRemove+0x2c>) + 801036a: 6818 ldr r0, [r3, #0] + 801036c: 230c movs r3, #12 + 801036e: 434b muls r3, r1 + 8010370: 18c4 adds r4, r0, r3 + 8010372: 2200 movs r2, #0 + 8010374: 50c2 str r2, [r0, r3] + 8010376: e9c4 2201 strd r2, r2, [r4, #4] + 801037a: f500 6090 add.w r0, r0, #1152 ; 0x480 + 801037e: bc10 pop {r4} + 8010380: 2210 movs r2, #16 + 8010382: f000 b8d5 b.w 8010530 <RegionCommonChanDisable> + 8010386: 2000 movs r0, #0 + 8010388: bc10 pop {r4} + 801038a: 4770 bx lr + 801038c: 20002620 .word 0x20002620 + +08010390 <RegionAS923ApplyCFList>: + 8010390: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8010394: b086 sub sp, #24 + 8010396: 2350 movs r3, #80 ; 0x50 + 8010398: f88d 3014 strb.w r3, [sp, #20] + 801039c: 7903 ldrb r3, [r0, #4] + 801039e: 2b10 cmp r3, #16 + 80103a0: 4607 mov r7, r0 + 80103a2: d130 bne.n 8010406 <RegionAS923ApplyCFList+0x76> + 80103a4: 6803 ldr r3, [r0, #0] + 80103a6: 7bdd ldrb r5, [r3, #15] + 80103a8: bb6d cbnz r5, 8010406 <RegionAS923ApplyCFList+0x76> + 80103aa: 2402 movs r4, #2 + 80103ac: 46a8 mov r8, r5 + 80103ae: 2664 movs r6, #100 ; 0x64 + 80103b0: 2c06 cmp r4, #6 + 80103b2: d814 bhi.n 80103de <RegionAS923ApplyCFList+0x4e> + 80103b4: 683a ldr r2, [r7, #0] + 80103b6: 5d53 ldrb r3, [r2, r5] + 80103b8: 9303 str r3, [sp, #12] + 80103ba: 442a add r2, r5 + 80103bc: 7851 ldrb r1, [r2, #1] + 80103be: ea43 2301 orr.w r3, r3, r1, lsl #8 + 80103c2: 9303 str r3, [sp, #12] + 80103c4: 7892 ldrb r2, [r2, #2] + 80103c6: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80103ca: 4373 muls r3, r6 + 80103cc: e9cd 3803 strd r3, r8, [sp, #12] + 80103d0: b963 cbnz r3, 80103ec <RegionAS923ApplyCFList+0x5c> + 80103d2: 4668 mov r0, sp + 80103d4: f88d 4000 strb.w r4, [sp] + 80103d8: f7ff ffc2 bl 8010360 <RegionAS923ChannelsRemove> + 80103dc: e00d b.n 80103fa <RegionAS923ApplyCFList+0x6a> + 80103de: f8cd 800c str.w r8, [sp, #12] + 80103e2: f88d 8014 strb.w r8, [sp, #20] + 80103e6: f8cd 8010 str.w r8, [sp, #16] + 80103ea: e7f2 b.n 80103d2 <RegionAS923ApplyCFList+0x42> + 80103ec: ab03 add r3, sp, #12 + 80103ee: a801 add r0, sp, #4 + 80103f0: 9301 str r3, [sp, #4] + 80103f2: f88d 4008 strb.w r4, [sp, #8] + 80103f6: f7ff ff5d bl 80102b4 <RegionAS923ChannelAdd> + 80103fa: 3401 adds r4, #1 + 80103fc: b2e4 uxtb r4, r4 + 80103fe: 2c10 cmp r4, #16 + 8010400: f105 0503 add.w r5, r5, #3 + 8010404: d1d4 bne.n 80103b0 <RegionAS923ApplyCFList+0x20> + 8010406: b006 add sp, #24 + 8010408: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +0801040c <RegionAS923NewChannelReq>: + 801040c: b51f push {r0, r1, r2, r3, r4, lr} + 801040e: 6802 ldr r2, [r0, #0] + 8010410: 7903 ldrb r3, [r0, #4] + 8010412: 6811 ldr r1, [r2, #0] + 8010414: b951 cbnz r1, 801042c <RegionAS923NewChannelReq+0x20> + 8010416: a801 add r0, sp, #4 + 8010418: f88d 3004 strb.w r3, [sp, #4] + 801041c: f7ff ffa0 bl 8010360 <RegionAS923ChannelsRemove> + 8010420: b978 cbnz r0, 8010442 <RegionAS923NewChannelReq+0x36> + 8010422: 2000 movs r0, #0 + 8010424: b240 sxtb r0, r0 + 8010426: b005 add sp, #20 + 8010428: f85d fb04 ldr.w pc, [sp], #4 + 801042c: a802 add r0, sp, #8 + 801042e: 9202 str r2, [sp, #8] + 8010430: f88d 300c strb.w r3, [sp, #12] + 8010434: f7ff ff3e bl 80102b4 <RegionAS923ChannelAdd> + 8010438: 2806 cmp r0, #6 + 801043a: d8f2 bhi.n 8010422 <RegionAS923NewChannelReq+0x16> + 801043c: 4b02 ldr r3, [pc, #8] ; (8010448 <RegionAS923NewChannelReq+0x3c>) + 801043e: 5c18 ldrb r0, [r3, r0] + 8010440: e7f0 b.n 8010424 <RegionAS923NewChannelReq+0x18> + 8010442: 2003 movs r0, #3 + 8010444: e7ee b.n 8010424 <RegionAS923NewChannelReq+0x18> + 8010446: bf00 nop + 8010448: 08015144 .word 0x08015144 + +0801044c <RegionAS923SetContinuousWave>: + 801044c: b570 push {r4, r5, r6, lr} + 801044e: 4e11 ldr r6, [pc, #68] ; (8010494 <RegionAS923SetContinuousWave+0x48>) + 8010450: 7801 ldrb r1, [r0, #0] + 8010452: 6832 ldr r2, [r6, #0] + 8010454: 4b10 ldr r3, [pc, #64] ; (8010498 <RegionAS923SetContinuousWave+0x4c>) + 8010456: 250c movs r5, #12 + 8010458: fb05 2201 mla r2, r5, r1, r2 + 801045c: 681b ldr r3, [r3, #0] + 801045e: 7a52 ldrb r2, [r2, #9] + 8010460: 2118 movs r1, #24 + 8010462: fb01 3302 mla r3, r1, r2, r3 + 8010466: 4604 mov r4, r0 + 8010468: f993 1002 ldrsb.w r1, [r3, #2] + 801046c: f990 0002 ldrsb.w r0, [r0, #2] + 8010470: f000 fb1f bl 8010ab2 <RegionCommonLimitTxPower> + 8010474: 7823 ldrb r3, [r4, #0] + 8010476: 6832 ldr r2, [r6, #0] + 8010478: 6861 ldr r1, [r4, #4] + 801047a: 436b muls r3, r5 + 801047c: 58d5 ldr r5, [r2, r3] + 801047e: 68a2 ldr r2, [r4, #8] + 8010480: f000 fa49 bl 8010916 <RegionCommonComputeTxPower> + 8010484: 4b05 ldr r3, [pc, #20] ; (801049c <RegionAS923SetContinuousWave+0x50>) + 8010486: 89a2 ldrh r2, [r4, #12] + 8010488: 6bdb ldr r3, [r3, #60] ; 0x3c + 801048a: 4601 mov r1, r0 + 801048c: 4628 mov r0, r5 + 801048e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8010492: 4718 bx r3 + 8010494: 20002620 .word 0x20002620 + 8010498: 2000261c .word 0x2000261c + 801049c: 08015784 .word 0x08015784 + +080104a0 <RegionAS923ApplyDrOffset>: + 80104a0: 4b07 ldr r3, [pc, #28] ; (80104c0 <RegionAS923ApplyDrOffset+0x20>) + 80104a2: 569b ldrsb r3, [r3, r2] + 80104a4: 1ac9 subs r1, r1, r3 + 80104a6: 1e43 subs r3, r0, #1 + 80104a8: 4258 negs r0, r3 + 80104aa: 4158 adcs r0, r3 + 80104ac: 0040 lsls r0, r0, #1 + 80104ae: 4288 cmp r0, r1 + 80104b0: bfb8 it lt + 80104b2: 4608 movlt r0, r1 + 80104b4: 2805 cmp r0, #5 + 80104b6: bfa8 it ge + 80104b8: 2005 movge r0, #5 + 80104ba: b2c0 uxtb r0, r0 + 80104bc: 4770 bx lr + 80104be: bf00 nop + 80104c0: 08015153 .word 0x08015153 + +080104c4 <RegionCommonChanVerifyDr>: + 80104c4: b5f0 push {r4, r5, r6, r7, lr} + 80104c6: 429a cmp r2, r3 + 80104c8: 9d06 ldr r5, [sp, #24] + 80104ca: db03 blt.n 80104d4 <RegionCommonChanVerifyDr+0x10> + 80104cc: f99d 3014 ldrsb.w r3, [sp, #20] + 80104d0: 429a cmp r2, r3 + 80104d2: dd20 ble.n 8010516 <RegionCommonChanVerifyDr+0x52> + 80104d4: 2000 movs r0, #0 + 80104d6: bdf0 pop {r4, r5, r6, r7, pc} + 80104d8: eb03 0343 add.w r3, r3, r3, lsl #1 + 80104dc: f831 c014 ldrh.w ip, [r1, r4, lsl #1] + 80104e0: eb05 0383 add.w r3, r5, r3, lsl #2 + 80104e4: 2600 movs r6, #0 + 80104e6: fa4c f706 asr.w r7, ip, r6 + 80104ea: 07ff lsls r7, r7, #31 + 80104ec: d507 bpl.n 80104fe <RegionCommonChanVerifyDr+0x3a> + 80104ee: 7a1f ldrb r7, [r3, #8] + 80104f0: f007 0e0f and.w lr, r7, #15 + 80104f4: 4572 cmp r2, lr + 80104f6: db02 blt.n 80104fe <RegionCommonChanVerifyDr+0x3a> + 80104f8: ebb2 1f17 cmp.w r2, r7, lsr #4 + 80104fc: dd0d ble.n 801051a <RegionCommonChanVerifyDr+0x56> + 80104fe: 3601 adds r6, #1 + 8010500: 2e10 cmp r6, #16 + 8010502: f103 030c add.w r3, r3, #12 + 8010506: d1ee bne.n 80104e6 <RegionCommonChanVerifyDr+0x22> + 8010508: 3401 adds r4, #1 + 801050a: b2e4 uxtb r4, r4 + 801050c: 0123 lsls r3, r4, #4 + 801050e: b2db uxtb r3, r3 + 8010510: 4298 cmp r0, r3 + 8010512: d8e1 bhi.n 80104d8 <RegionCommonChanVerifyDr+0x14> + 8010514: e7de b.n 80104d4 <RegionCommonChanVerifyDr+0x10> + 8010516: 2400 movs r4, #0 + 8010518: e7f8 b.n 801050c <RegionCommonChanVerifyDr+0x48> + 801051a: 2001 movs r0, #1 + 801051c: e7db b.n 80104d6 <RegionCommonChanVerifyDr+0x12> + +0801051e <RegionCommonValueInRange>: + 801051e: 4288 cmp r0, r1 + 8010520: db04 blt.n 801052c <RegionCommonValueInRange+0xe> + 8010522: 4290 cmp r0, r2 + 8010524: bfcc ite gt + 8010526: 2000 movgt r0, #0 + 8010528: 2001 movle r0, #1 + 801052a: 4770 bx lr + 801052c: 2000 movs r0, #0 + 801052e: 4770 bx lr + +08010530 <RegionCommonChanDisable>: + 8010530: b510 push {r4, lr} + 8010532: 0914 lsrs r4, r2, #4 + 8010534: ebb4 1f11 cmp.w r4, r1, lsr #4 + 8010538: 4603 mov r3, r0 + 801053a: ea4f 1011 mov.w r0, r1, lsr #4 + 801053e: d30e bcc.n 801055e <RegionCommonChanDisable+0x2e> + 8010540: 4291 cmp r1, r2 + 8010542: d20c bcs.n 801055e <RegionCommonChanDisable+0x2e> + 8010544: b202 sxth r2, r0 + 8010546: f001 010f and.w r1, r1, #15 + 801054a: f833 4012 ldrh.w r4, [r3, r2, lsl #1] + 801054e: 2001 movs r0, #1 + 8010550: fa00 f101 lsl.w r1, r0, r1 + 8010554: ea24 0101 bic.w r1, r4, r1 + 8010558: f823 1012 strh.w r1, [r3, r2, lsl #1] + 801055c: bd10 pop {r4, pc} + 801055e: 2000 movs r0, #0 + 8010560: e7fc b.n 801055c <RegionCommonChanDisable+0x2c> + +08010562 <RegionCommonCountChannels>: + 8010562: b5f0 push {r4, r5, r6, r7, lr} + 8010564: b128 cbz r0, 8010572 <RegionCommonCountChannels+0x10> + 8010566: eb00 0541 add.w r5, r0, r1, lsl #1 + 801056a: 2701 movs r7, #1 + 801056c: 2000 movs r0, #0 + 801056e: 4291 cmp r1, r2 + 8010570: d300 bcc.n 8010574 <RegionCommonCountChannels+0x12> + 8010572: bdf0 pop {r4, r5, r6, r7, pc} + 8010574: 2400 movs r4, #0 + 8010576: f835 cb02 ldrh.w ip, [r5], #2 + 801057a: 4623 mov r3, r4 + 801057c: fa07 f604 lsl.w r6, r7, r4 + 8010580: ea36 060c bics.w r6, r6, ip + 8010584: bf08 it eq + 8010586: 3301 addeq r3, #1 + 8010588: f104 0401 add.w r4, r4, #1 + 801058c: bf08 it eq + 801058e: b2db uxtbeq r3, r3 + 8010590: 2c10 cmp r4, #16 + 8010592: d1f3 bne.n 801057c <RegionCommonCountChannels+0x1a> + 8010594: 4418 add r0, r3 + 8010596: 3101 adds r1, #1 + 8010598: b2c0 uxtb r0, r0 + 801059a: b2c9 uxtb r1, r1 + 801059c: e7e7 b.n 801056e <RegionCommonCountChannels+0xc> + +0801059e <RegionCommonChanMaskCopy>: + 801059e: b510 push {r4, lr} + 80105a0: b100 cbz r0, 80105a4 <RegionCommonChanMaskCopy+0x6> + 80105a2: b949 cbnz r1, 80105b8 <RegionCommonChanMaskCopy+0x1a> + 80105a4: bd10 pop {r4, pc} + 80105a6: f831 4013 ldrh.w r4, [r1, r3, lsl #1] + 80105aa: f820 4013 strh.w r4, [r0, r3, lsl #1] + 80105ae: 3301 adds r3, #1 + 80105b0: b2dc uxtb r4, r3 + 80105b2: 42a2 cmp r2, r4 + 80105b4: d8f7 bhi.n 80105a6 <RegionCommonChanMaskCopy+0x8> + 80105b6: e7f5 b.n 80105a4 <RegionCommonChanMaskCopy+0x6> + 80105b8: 2300 movs r3, #0 + 80105ba: e7f9 b.n 80105b0 <RegionCommonChanMaskCopy+0x12> + +080105bc <RegionCommonSetBandTxDone>: + 80105bc: b082 sub sp, #8 + 80105be: b530 push {r4, r5, lr} + 80105c0: 8804 ldrh r4, [r0, #0] + 80105c2: 9304 str r3, [sp, #16] + 80105c4: b96a cbnz r2, 80105e2 <RegionCommonSetBandTxDone+0x26> + 80105c6: f5b3 6f61 cmp.w r3, #3600 ; 0xe10 + 80105ca: d318 bcc.n 80105fe <RegionCommonSetBandTxDone+0x42> + 80105cc: f649 25af movw r5, #39599 ; 0x9aaf + 80105d0: f242 7210 movw r2, #10000 ; 0x2710 + 80105d4: 42ab cmp r3, r5 + 80105d6: bf98 it ls + 80105d8: f44f 727a movls.w r2, #1000 ; 0x3e8 + 80105dc: 4294 cmp r4, r2 + 80105de: bf38 it cc + 80105e0: 4614 movcc r4, r2 + 80105e2: 2c01 cmp r4, #1 + 80105e4: bf38 it cc + 80105e6: 2401 movcc r4, #1 + 80105e8: 4361 muls r1, r4 + 80105ea: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 80105ee: 68c3 ldr r3, [r0, #12] + 80105f0: 428b cmp r3, r1 + 80105f2: bf8c ite hi + 80105f4: 1a5b subhi r3, r3, r1 + 80105f6: 2300 movls r3, #0 + 80105f8: 60c3 str r3, [r0, #12] + 80105fa: b002 add sp, #8 + 80105fc: 4770 bx lr + 80105fe: 2264 movs r2, #100 ; 0x64 + 8010600: e7ec b.n 80105dc <RegionCommonSetBandTxDone+0x20> + ... + +08010604 <RegionCommonUpdateBandTimeOff>: + 8010604: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8010608: b091 sub sp, #68 ; 0x44 + 801060a: 4615 mov r5, r2 + 801060c: f8dd 806c ldr.w r8, [sp, #108] ; 0x6c + 8010610: 9304 str r3, [sp, #16] + 8010612: f89d 3068 ldrb.w r3, [sp, #104] ; 0x68 + 8010616: 9309 str r3, [sp, #36] ; 0x24 + 8010618: 460c mov r4, r1 + 801061a: 4606 mov r6, r0 + 801061c: f003 fbc2 bl 8013da4 <UTIL_TIMER_GetCurrentTime> + 8010620: 4a68 ldr r2, [pc, #416] ; (80107c4 <RegionCommonUpdateBandTimeOff+0x1c0>) + 8010622: f8df b1a4 ldr.w fp, [pc, #420] ; 80107c8 <RegionCommonUpdateBandTimeOff+0x1c4> + 8010626: 9005 str r0, [sp, #20] + 8010628: f5a8 33f6 sub.w r3, r8, #125952 ; 0x1ec00 + 801062c: 3b30 subs r3, #48 ; 0x30 + 801062e: fbb3 f3f2 udiv r3, r3, r2 + 8010632: 4353 muls r3, r2 + 8010634: f503 32f6 add.w r2, r3, #125952 ; 0x1ec00 + 8010638: f503 33a8 add.w r3, r3, #86016 ; 0x15000 + 801063c: f503 73c0 add.w r3, r3, #384 ; 0x180 + 8010640: 9303 str r3, [sp, #12] + 8010642: 2318 movs r3, #24 + 8010644: fb13 4305 smlabb r3, r3, r5, r4 + 8010648: 3230 adds r2, #48 ; 0x30 + 801064a: 9206 str r2, [sp, #24] + 801064c: 9308 str r3, [sp, #32] + 801064e: 2500 movs r5, #0 + 8010650: f04f 3aff mov.w sl, #4294967295 + 8010654: 9b08 ldr r3, [sp, #32] + 8010656: 42a3 cmp r3, r4 + 8010658: d107 bne.n 801066a <RegionCommonUpdateBandTimeOff+0x66> + 801065a: 2d00 cmp r5, #0 + 801065c: bf14 ite ne + 801065e: 4650 movne r0, sl + 8010660: f04f 30ff moveq.w r0, #4294967295 + 8010664: b011 add sp, #68 ; 0x44 + 8010666: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 801066a: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 + 801066e: f8ad 302c strh.w r3, [sp, #44] ; 0x2c + 8010672: 990b ldr r1, [sp, #44] ; 0x2c + 8010674: f8cd 806c str.w r8, [sp, #108] ; 0x6c + 8010678: 4640 mov r0, r8 + 801067a: f8cd 8028 str.w r8, [sp, #40] ; 0x28 + 801067e: f003 fb21 bl 8013cc4 <SysTimeToMs> + 8010682: f8b4 9000 ldrh.w r9, [r4] + 8010686: b96e cbnz r6, 80106a4 <RegionCommonUpdateBandTimeOff+0xa0> + 8010688: f5b8 6f61 cmp.w r8, #3600 ; 0xe10 + 801068c: d35b bcc.n 8010746 <RegionCommonUpdateBandTimeOff+0x142> + 801068e: f649 22af movw r2, #39599 ; 0x9aaf + 8010692: f242 7310 movw r3, #10000 ; 0x2710 + 8010696: 4590 cmp r8, r2 + 8010698: bf98 it ls + 801069a: f44f 737a movls.w r3, #1000 ; 0x3e8 + 801069e: 4599 cmp r9, r3 + 80106a0: bf38 it cc + 80106a2: 4699 movcc r9, r3 + 80106a4: 464b mov r3, r9 + 80106a6: 2b01 cmp r3, #1 + 80106a8: bf38 it cc + 80106aa: 2301 movcc r3, #1 + 80106ac: 9307 str r3, [sp, #28] + 80106ae: 2e00 cmp r6, #0 + 80106b0: d152 bne.n 8010758 <RegionCommonUpdateBandTimeOff+0x154> + 80106b2: f1b9 0f64 cmp.w r9, #100 ; 0x64 + 80106b6: d148 bne.n 801074a <RegionCommonUpdateBandTimeOff+0x146> + 80106b8: 60a0 str r0, [r4, #8] + 80106ba: 465f mov r7, fp + 80106bc: 68a1 ldr r1, [r4, #8] + 80106be: a80e add r0, sp, #56 ; 0x38 + 80106c0: f003 fb22 bl 8013d08 <SysTimeFromMs> + 80106c4: 9b0f ldr r3, [sp, #60] ; 0x3c + 80106c6: 9300 str r3, [sp, #0] + 80106c8: e9dd 120a ldrd r1, r2, [sp, #40] ; 0x28 + 80106cc: 9b0e ldr r3, [sp, #56] ; 0x38 + 80106ce: a80c add r0, sp, #48 ; 0x30 + 80106d0: f003 fa79 bl 8013bc6 <SysTimeSub> + 80106d4: 9b04 ldr r3, [sp, #16] + 80106d6: 9a0c ldr r2, [sp, #48] ; 0x30 + 80106d8: b90b cbnz r3, 80106de <RegionCommonUpdateBandTimeOff+0xda> + 80106da: 9b09 ldr r3, [sp, #36] ; 0x24 + 80106dc: b12b cbz r3, 80106ea <RegionCommonUpdateBandTimeOff+0xe6> + 80106de: 6923 ldr r3, [r4, #16] + 80106e0: 42bb cmp r3, r7 + 80106e2: d102 bne.n 80106ea <RegionCommonUpdateBandTimeOff+0xe6> + 80106e4: 4b39 ldr r3, [pc, #228] ; (80107cc <RegionCommonUpdateBandTimeOff+0x1c8>) + 80106e6: 429a cmp r2, r3 + 80106e8: d90d bls.n 8010706 <RegionCommonUpdateBandTimeOff+0x102> + 80106ea: 4b39 ldr r3, [pc, #228] ; (80107d0 <RegionCommonUpdateBandTimeOff+0x1cc>) + 80106ec: 60e7 str r7, [r4, #12] + 80106ee: 4598 cmp r8, r3 + 80106f0: d909 bls.n 8010706 <RegionCommonUpdateBandTimeOff+0x102> + 80106f2: 2300 movs r3, #0 + 80106f4: f8ad 3034 strh.w r3, [sp, #52] ; 0x34 + 80106f8: 9b06 ldr r3, [sp, #24] + 80106fa: 990d ldr r1, [sp, #52] ; 0x34 + 80106fc: 930c str r3, [sp, #48] ; 0x30 + 80106fe: 4618 mov r0, r3 + 8010700: f003 fae0 bl 8013cc4 <SysTimeToMs> + 8010704: 60a0 str r0, [r4, #8] + 8010706: 6860 ldr r0, [r4, #4] + 8010708: b900 cbnz r0, 801070c <RegionCommonUpdateBandTimeOff+0x108> + 801070a: 60e7 str r7, [r4, #12] + 801070c: 6127 str r7, [r4, #16] + 801070e: b126 cbz r6, 801071a <RegionCommonUpdateBandTimeOff+0x116> + 8010710: f003 fb52 bl 8013db8 <UTIL_TIMER_GetElapsedTime> + 8010714: 68e3 ldr r3, [r4, #12] + 8010716: 4403 add r3, r0 + 8010718: 60e3 str r3, [r4, #12] + 801071a: e9d4 3203 ldrd r3, r2, [r4, #12] + 801071e: 4293 cmp r3, r2 + 8010720: 9b05 ldr r3, [sp, #20] + 8010722: 991d ldr r1, [sp, #116] ; 0x74 + 8010724: 6063 str r3, [r4, #4] + 8010726: 9b07 ldr r3, [sp, #28] + 8010728: bf88 it hi + 801072a: 60e2 strhi r2, [r4, #12] + 801072c: 434b muls r3, r1 + 801072e: 68e1 ldr r1, [r4, #12] + 8010730: 4299 cmp r1, r3 + 8010732: d202 bcs.n 801073a <RegionCommonUpdateBandTimeOff+0x136> + 8010734: 9804 ldr r0, [sp, #16] + 8010736: b9a8 cbnz r0, 8010764 <RegionCommonUpdateBandTimeOff+0x160> + 8010738: b1a6 cbz r6, 8010764 <RegionCommonUpdateBandTimeOff+0x160> + 801073a: 2301 movs r3, #1 + 801073c: 441d add r5, r3 + 801073e: 7523 strb r3, [r4, #20] + 8010740: b2ed uxtb r5, r5 + 8010742: 3418 adds r4, #24 + 8010744: e786 b.n 8010654 <RegionCommonUpdateBandTimeOff+0x50> + 8010746: 2364 movs r3, #100 ; 0x64 + 8010748: e7a9 b.n 801069e <RegionCommonUpdateBandTimeOff+0x9a> + 801074a: f5b9 7f7a cmp.w r9, #1000 ; 0x3e8 + 801074e: bf0a itet eq + 8010750: 4f20 ldreq r7, [pc, #128] ; (80107d4 <RegionCommonUpdateBandTimeOff+0x1d0>) + 8010752: 4f21 ldrne r7, [pc, #132] ; (80107d8 <RegionCommonUpdateBandTimeOff+0x1d4>) + 8010754: 60a0 streq r0, [r4, #8] + 8010756: e7b1 b.n 80106bc <RegionCommonUpdateBandTimeOff+0xb8> + 8010758: 9b04 ldr r3, [sp, #16] + 801075a: b90b cbnz r3, 8010760 <RegionCommonUpdateBandTimeOff+0x15c> + 801075c: f8c4 b00c str.w fp, [r4, #12] + 8010760: 465f mov r7, fp + 8010762: e7d0 b.n 8010706 <RegionCommonUpdateBandTimeOff+0x102> + 8010764: 2000 movs r0, #0 + 8010766: 4293 cmp r3, r2 + 8010768: 7520 strb r0, [r4, #20] + 801076a: d806 bhi.n 801077a <RegionCommonUpdateBandTimeOff+0x176> + 801076c: 1a5b subs r3, r3, r1 + 801076e: 459a cmp sl, r3 + 8010770: f105 0501 add.w r5, r5, #1 + 8010774: bf28 it cs + 8010776: 469a movcs sl, r3 + 8010778: b2ed uxtb r5, r5 + 801077a: 2e00 cmp r6, #0 + 801077c: d1e1 bne.n 8010742 <RegionCommonUpdateBandTimeOff+0x13e> + 801077e: f1b9 0f64 cmp.w r9, #100 ; 0x64 + 8010782: 4a16 ldr r2, [pc, #88] ; (80107dc <RegionCommonUpdateBandTimeOff+0x1d8>) + 8010784: f8ad 6034 strh.w r6, [sp, #52] ; 0x34 + 8010788: d019 beq.n 80107be <RegionCommonUpdateBandTimeOff+0x1ba> + 801078a: f649 23b0 movw r3, #39600 ; 0x9ab0 + 801078e: f5b9 7f7a cmp.w r9, #1000 ; 0x3e8 + 8010792: bf18 it ne + 8010794: 4613 movne r3, r2 + 8010796: 4590 cmp r8, r2 + 8010798: bf84 itt hi + 801079a: 9a03 ldrhi r2, [sp, #12] + 801079c: 189b addhi r3, r3, r2 + 801079e: 930c str r3, [sp, #48] ; 0x30 + 80107a0: 9b1c ldr r3, [sp, #112] ; 0x70 + 80107a2: 9300 str r3, [sp, #0] + 80107a4: af0c add r7, sp, #48 ; 0x30 + 80107a6: e897 0006 ldmia.w r7, {r1, r2} + 80107aa: 9b1b ldr r3, [sp, #108] ; 0x6c + 80107ac: 4638 mov r0, r7 + 80107ae: f003 fa0a bl 8013bc6 <SysTimeSub> + 80107b2: e897 0003 ldmia.w r7, {r0, r1} + 80107b6: f003 fa85 bl 8013cc4 <SysTimeToMs> + 80107ba: 4682 mov sl, r0 + 80107bc: e7c1 b.n 8010742 <RegionCommonUpdateBandTimeOff+0x13e> + 80107be: f44f 6361 mov.w r3, #3600 ; 0xe10 + 80107c2: e7e8 b.n 8010796 <RegionCommonUpdateBandTimeOff+0x192> + 80107c4: 00015180 .word 0x00015180 + 80107c8: 001b7740 .word 0x001b7740 + 80107cc: 0001517f .word 0x0001517f + 80107d0: 0001ec2f .word 0x0001ec2f + 80107d4: 0112a880 .word 0x0112a880 + 80107d8: 02932e00 .word 0x02932e00 + 80107dc: 0001ec30 .word 0x0001ec30 + +080107e0 <RegionCommonParseLinkAdrReq>: + 80107e0: 7803 ldrb r3, [r0, #0] + 80107e2: 2b03 cmp r3, #3 + 80107e4: d114 bne.n 8010810 <RegionCommonParseLinkAdrReq+0x30> + 80107e6: 7843 ldrb r3, [r0, #1] + 80107e8: f003 020f and.w r2, r3, #15 + 80107ec: 091b lsrs r3, r3, #4 + 80107ee: 708a strb r2, [r1, #2] + 80107f0: 704b strb r3, [r1, #1] + 80107f2: 7883 ldrb r3, [r0, #2] + 80107f4: 808b strh r3, [r1, #4] + 80107f6: 78c2 ldrb r2, [r0, #3] + 80107f8: ea43 2302 orr.w r3, r3, r2, lsl #8 + 80107fc: 808b strh r3, [r1, #4] + 80107fe: 7903 ldrb r3, [r0, #4] + 8010800: f3c3 1202 ubfx r2, r3, #4, #3 + 8010804: f003 030f and.w r3, r3, #15 + 8010808: 70ca strb r2, [r1, #3] + 801080a: 700b strb r3, [r1, #0] + 801080c: 2005 movs r0, #5 + 801080e: 4770 bx lr + 8010810: 2000 movs r0, #0 + 8010812: 4770 bx lr + +08010814 <RegionCommonLinkAdrReqVerifyParams>: + 8010814: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} + 8010818: 4698 mov r8, r3 + 801081a: 7943 ldrb r3, [r0, #5] + 801081c: 7905 ldrb r5, [r0, #4] + 801081e: f990 6007 ldrsb.w r6, [r0, #7] + 8010822: 4691 mov r9, r2 + 8010824: 4604 mov r4, r0 + 8010826: f990 2006 ldrsb.w r2, [r0, #6] + 801082a: 468a mov sl, r1 + 801082c: b183 cbz r3, 8010850 <RegionCommonLinkAdrReqVerifyParams+0x3c> + 801082e: f990 7008 ldrsb.w r7, [r0, #8] + 8010832: b375 cbz r5, 8010892 <RegionCommonLinkAdrReqVerifyParams+0x7e> + 8010834: 2a0f cmp r2, #15 + 8010836: d112 bne.n 801085e <RegionCommonLinkAdrReqVerifyParams+0x4a> + 8010838: f994 2009 ldrsb.w r2, [r4, #9] + 801083c: 2e0f cmp r6, #15 + 801083e: d11e bne.n 801087e <RegionCommonLinkAdrReqVerifyParams+0x6a> + 8010840: f994 600a ldrsb.w r6, [r4, #10] + 8010844: 2d07 cmp r5, #7 + 8010846: d124 bne.n 8010892 <RegionCommonLinkAdrReqVerifyParams+0x7e> + 8010848: 2f00 cmp r7, #0 + 801084a: bf08 it eq + 801084c: 2701 moveq r7, #1 + 801084e: e020 b.n 8010892 <RegionCommonLinkAdrReqVerifyParams+0x7e> + 8010850: f990 700b ldrsb.w r7, [r0, #11] + 8010854: f990 2009 ldrsb.w r2, [r0, #9] + 8010858: f990 600a ldrsb.w r6, [r0, #10] + 801085c: e7e9 b.n 8010832 <RegionCommonLinkAdrReqVerifyParams+0x1e> + 801085e: 69a3 ldr r3, [r4, #24] + 8010860: 9301 str r3, [sp, #4] + 8010862: f994 3015 ldrsb.w r3, [r4, #21] + 8010866: 9300 str r3, [sp, #0] + 8010868: 6921 ldr r1, [r4, #16] + 801086a: f994 3014 ldrsb.w r3, [r4, #20] + 801086e: 7b20 ldrb r0, [r4, #12] + 8010870: f7ff fe28 bl 80104c4 <RegionCommonChanVerifyDr> + 8010874: 2800 cmp r0, #0 + 8010876: d1e1 bne.n 801083c <RegionCommonLinkAdrReqVerifyParams+0x28> + 8010878: f005 05fd and.w r5, r5, #253 ; 0xfd + 801087c: e7de b.n 801083c <RegionCommonLinkAdrReqVerifyParams+0x28> + 801087e: f994 301d ldrsb.w r3, [r4, #29] + 8010882: 42b3 cmp r3, r6 + 8010884: dc0f bgt.n 80108a6 <RegionCommonLinkAdrReqVerifyParams+0x92> + 8010886: f994 301c ldrsb.w r3, [r4, #28] + 801088a: 42b3 cmp r3, r6 + 801088c: dada bge.n 8010844 <RegionCommonLinkAdrReqVerifyParams+0x30> + 801088e: f005 05fb and.w r5, r5, #251 ; 0xfb + 8010892: 4628 mov r0, r5 + 8010894: f88a 2000 strb.w r2, [sl] + 8010898: f889 6000 strb.w r6, [r9] + 801089c: f888 7000 strb.w r7, [r8] + 80108a0: b002 add sp, #8 + 80108a2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 80108a6: 461e mov r6, r3 + 80108a8: e7cc b.n 8010844 <RegionCommonLinkAdrReqVerifyParams+0x30> + ... + +080108ac <RegionCommonComputeSymbolTimeLoRa>: + 80108ac: 4b02 ldr r3, [pc, #8] ; (80108b8 <RegionCommonComputeSymbolTimeLoRa+0xc>) + 80108ae: fa03 f000 lsl.w r0, r3, r0 + 80108b2: fbb0 f0f1 udiv r0, r0, r1 + 80108b6: 4770 bx lr + 80108b8: 000f4240 .word 0x000f4240 + +080108bc <RegionCommonComputeSymbolTimeFsk>: + 80108bc: f44f 53fa mov.w r3, #8000 ; 0x1f40 + 80108c0: fbb3 f0f0 udiv r0, r3, r0 + 80108c4: 4770 bx lr + +080108c6 <RegionCommonComputeRxWindowParameters>: + 80108c6: b530 push {r4, r5, lr} + 80108c8: f44f 757a mov.w r5, #1000 ; 0x3e8 + 80108cc: 1f0c subs r4, r1, #4 + 80108ce: 436a muls r2, r5 + 80108d0: fb00 2204 mla r2, r0, r4, r2 + 80108d4: 0052 lsls r2, r2, #1 + 80108d6: bf1e ittt ne + 80108d8: f100 34ff addne.w r4, r0, #4294967295 + 80108dc: 1912 addne r2, r2, r4 + 80108de: fbb2 f2f0 udivne r2, r2, r0 + 80108e2: 4291 cmp r1, r2 + 80108e4: bf38 it cc + 80108e6: 4611 movcc r1, r2 + 80108e8: 9a03 ldr r2, [sp, #12] + 80108ea: 6011 str r1, [r2, #0] + 80108ec: 0082 lsls r2, r0, #2 + 80108ee: 4348 muls r0, r1 + 80108f0: bf1c itt ne + 80108f2: 3001 addne r0, #1 + 80108f4: 0840 lsrne r0, r0, #1 + 80108f6: f44f 717a mov.w r1, #1000 ; 0x3e8 + 80108fa: 1a12 subs r2, r2, r0 + 80108fc: fb01 2313 mls r3, r1, r3, r2 + 8010900: 2b00 cmp r3, #0 + 8010902: bfca itet gt + 8010904: f203 33e7 addwgt r3, r3, #999 ; 0x3e7 + 8010908: fb93 f1f1 sdivle r1, r3, r1 + 801090c: fbb3 f1f1 udivgt r1, r3, r1 + 8010910: 9b04 ldr r3, [sp, #16] + 8010912: 6019 str r1, [r3, #0] + 8010914: bd30 pop {r4, r5, pc} + +08010916 <RegionCommonComputeTxPower>: + 8010916: b538 push {r3, r4, r5, lr} + 8010918: 0040 lsls r0, r0, #1 + 801091a: 4614 mov r4, r2 + 801091c: 460d mov r5, r1 + 801091e: f7f1 f879 bl 8001a14 <__aeabi_ui2f> + 8010922: 4601 mov r1, r0 + 8010924: 4628 mov r0, r5 + 8010926: f7f0 ffc3 bl 80018b0 <__aeabi_fsub> + 801092a: 4621 mov r1, r4 + 801092c: f7f0 ffc0 bl 80018b0 <__aeabi_fsub> + 8010930: f7f0 feb2 bl 8001698 <__aeabi_f2d> + 8010934: f003 fcd8 bl 80142e8 <floor> + 8010938: f7f0 ff8e bl 8001858 <__aeabi_d2iz> + 801093c: b240 sxtb r0, r0 + 801093e: bd38 pop {r3, r4, r5, pc} + +08010940 <RegionCommonCountNbOfEnabledChannels>: + 8010940: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8010944: 9301 str r3, [sp, #4] + 8010946: 2300 movs r3, #0 + 8010948: 461f mov r7, r3 + 801094a: 469c mov ip, r3 + 801094c: 011c lsls r4, r3, #4 + 801094e: 8a05 ldrh r5, [r0, #16] + 8010950: fa5f fe84 uxtb.w lr, r4 + 8010954: f004 04f0 and.w r4, r4, #240 ; 0xf0 + 8010958: 42a5 cmp r5, r4 + 801095a: d806 bhi.n 801096a <RegionCommonCountNbOfEnabledChannels+0x2a> + 801095c: 9b01 ldr r3, [sp, #4] + 801095e: f882 c000 strb.w ip, [r2] + 8010962: 701f strb r7, [r3, #0] + 8010964: b003 add sp, #12 + 8010966: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 801096a: eb0e 054e add.w r5, lr, lr, lsl #1 + 801096e: ea4f 0943 mov.w r9, r3, lsl #1 + 8010972: 00ad lsls r5, r5, #2 + 8010974: 2400 movs r4, #0 + 8010976: 6846 ldr r6, [r0, #4] + 8010978: f836 6009 ldrh.w r6, [r6, r9] + 801097c: 4126 asrs r6, r4 + 801097e: 07f6 lsls r6, r6, #31 + 8010980: d527 bpl.n 80109d2 <RegionCommonCountNbOfEnabledChannels+0x92> + 8010982: 6886 ldr r6, [r0, #8] + 8010984: eb06 0a05 add.w sl, r6, r5 + 8010988: 5976 ldr r6, [r6, r5] + 801098a: b316 cbz r6, 80109d2 <RegionCommonCountNbOfEnabledChannels+0x92> + 801098c: 7806 ldrb r6, [r0, #0] + 801098e: b936 cbnz r6, 801099e <RegionCommonCountNbOfEnabledChannels+0x5e> + 8010990: 6946 ldr r6, [r0, #20] + 8010992: b126 cbz r6, 801099e <RegionCommonCountNbOfEnabledChannels+0x5e> + 8010994: f836 6009 ldrh.w r6, [r6, r9] + 8010998: 4126 asrs r6, r4 + 801099a: 07f6 lsls r6, r6, #31 + 801099c: d519 bpl.n 80109d2 <RegionCommonCountNbOfEnabledChannels+0x92> + 801099e: f89a 6008 ldrb.w r6, [sl, #8] + 80109a2: f990 b001 ldrsb.w fp, [r0, #1] + 80109a6: f346 0803 sbfx r8, r6, #0, #4 + 80109aa: fa4f f888 sxtb.w r8, r8 + 80109ae: 45d8 cmp r8, fp + 80109b0: dc0f bgt.n 80109d2 <RegionCommonCountNbOfEnabledChannels+0x92> + 80109b2: f346 1603 sbfx r6, r6, #4, #4 + 80109b6: b276 sxtb r6, r6 + 80109b8: 455e cmp r6, fp + 80109ba: db0a blt.n 80109d2 <RegionCommonCountNbOfEnabledChannels+0x92> + 80109bc: f89a 6009 ldrb.w r6, [sl, #9] + 80109c0: eb06 0846 add.w r8, r6, r6, lsl #1 + 80109c4: 68c6 ldr r6, [r0, #12] + 80109c6: eb06 06c8 add.w r6, r6, r8, lsl #3 + 80109ca: 7d36 ldrb r6, [r6, #20] + 80109cc: b94e cbnz r6, 80109e2 <RegionCommonCountNbOfEnabledChannels+0xa2> + 80109ce: 3701 adds r7, #1 + 80109d0: b2ff uxtb r7, r7 + 80109d2: 3401 adds r4, #1 + 80109d4: 2c10 cmp r4, #16 + 80109d6: f105 050c add.w r5, r5, #12 + 80109da: d1cc bne.n 8010976 <RegionCommonCountNbOfEnabledChannels+0x36> + 80109dc: 3301 adds r3, #1 + 80109de: b2db uxtb r3, r3 + 80109e0: e7b4 b.n 801094c <RegionCommonCountNbOfEnabledChannels+0xc> + 80109e2: f10c 0601 add.w r6, ip, #1 + 80109e6: eb0e 0804 add.w r8, lr, r4 + 80109ea: f801 800c strb.w r8, [r1, ip] + 80109ee: fa5f fc86 uxtb.w ip, r6 + 80109f2: e7ee b.n 80109d2 <RegionCommonCountNbOfEnabledChannels+0x92> + +080109f4 <RegionCommonIdentifyChannels>: + 80109f4: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 80109f8: 4604 mov r4, r0 + 80109fa: 6840 ldr r0, [r0, #4] + 80109fc: e9dd 670c ldrd r6, r7, [sp, #48] ; 0x30 + 8010a00: 461d mov r5, r3 + 8010a02: 468a mov sl, r1 + 8010a04: 4691 mov r9, r2 + 8010a06: f003 f9d7 bl 8013db8 <UTIL_TIMER_GetElapsedTime> + 8010a0a: 6823 ldr r3, [r4, #0] + 8010a0c: 1a1b subs r3, r3, r0 + 8010a0e: 603b str r3, [r7, #0] + 8010a10: f04f 0800 mov.w r8, #0 + 8010a14: 2301 movs r3, #1 + 8010a16: 7033 strb r3, [r6, #0] + 8010a18: f885 8000 strb.w r8, [r5] + 8010a1c: 6863 ldr r3, [r4, #4] + 8010a1e: b113 cbz r3, 8010a26 <RegionCommonIdentifyChannels+0x32> + 8010a20: 6823 ldr r3, [r4, #0] + 8010a22: 4283 cmp r3, r0 + 8010a24: d824 bhi.n 8010a70 <RegionCommonIdentifyChannels+0x7c> + 8010a26: f8ca 8000 str.w r8, [sl] + 8010a2a: f8d4 c01c ldr.w ip, [r4, #28] + 8010a2e: 69a3 ldr r3, [r4, #24] + 8010a30: f89c e000 ldrb.w lr, [ip] + 8010a34: 9303 str r3, [sp, #12] + 8010a36: e9d4 0103 ldrd r0, r1, [r4, #12] + 8010a3a: ab01 add r3, sp, #4 + 8010a3c: e883 0003 stmia.w r3, {r0, r1} + 8010a40: 7d23 ldrb r3, [r4, #20] + 8010a42: 9300 str r3, [sp, #0] + 8010a44: f8dc 100c ldr.w r1, [ip, #12] + 8010a48: 7a23 ldrb r3, [r4, #8] + 8010a4a: 7a62 ldrb r2, [r4, #9] + 8010a4c: 4670 mov r0, lr + 8010a4e: f7ff fdd9 bl 8010604 <RegionCommonUpdateBandTimeOff> + 8010a52: 4633 mov r3, r6 + 8010a54: 6038 str r0, [r7, #0] + 8010a56: 462a mov r2, r5 + 8010a58: 69e0 ldr r0, [r4, #28] + 8010a5a: 4649 mov r1, r9 + 8010a5c: f7ff ff70 bl 8010940 <RegionCommonCountNbOfEnabledChannels> + 8010a60: 782b ldrb r3, [r5, #0] + 8010a62: b12b cbz r3, 8010a70 <RegionCommonIdentifyChannels+0x7c> + 8010a64: f8c7 8000 str.w r8, [r7] + 8010a68: 2000 movs r0, #0 + 8010a6a: b004 add sp, #16 + 8010a6c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8010a70: 7833 ldrb r3, [r6, #0] + 8010a72: 2b00 cmp r3, #0 + 8010a74: bf14 ite ne + 8010a76: 200b movne r0, #11 + 8010a78: 200c moveq r0, #12 + 8010a7a: e7f6 b.n 8010a6a <RegionCommonIdentifyChannels+0x76> + +08010a7c <RegionCommonGetNextLowerTxDr>: + 8010a7c: b537 push {r0, r1, r2, r4, r5, lr} + 8010a7e: f990 2000 ldrsb.w r2, [r0] + 8010a82: f990 5002 ldrsb.w r5, [r0, #2] + 8010a86: 4295 cmp r5, r2 + 8010a88: 4604 mov r4, r0 + 8010a8a: d00f beq.n 8010aac <RegionCommonGetNextLowerTxDr+0x30> + 8010a8c: 3a01 subs r2, #1 + 8010a8e: b252 sxtb r2, r2 + 8010a90: 4295 cmp r5, r2 + 8010a92: d00b beq.n 8010aac <RegionCommonGetNextLowerTxDr+0x30> + 8010a94: 68a3 ldr r3, [r4, #8] + 8010a96: 9301 str r3, [sp, #4] + 8010a98: f994 3001 ldrsb.w r3, [r4, #1] + 8010a9c: 9300 str r3, [sp, #0] + 8010a9e: 6861 ldr r1, [r4, #4] + 8010aa0: 78e0 ldrb r0, [r4, #3] + 8010aa2: 462b mov r3, r5 + 8010aa4: f7ff fd0e bl 80104c4 <RegionCommonChanVerifyDr> + 8010aa8: 2800 cmp r0, #0 + 8010aaa: d0ef beq.n 8010a8c <RegionCommonGetNextLowerTxDr+0x10> + 8010aac: 4610 mov r0, r2 + 8010aae: b003 add sp, #12 + 8010ab0: bd30 pop {r4, r5, pc} + +08010ab2 <RegionCommonLimitTxPower>: + 8010ab2: 4288 cmp r0, r1 + 8010ab4: bfb8 it lt + 8010ab6: 4608 movlt r0, r1 + 8010ab8: 4770 bx lr + ... + +08010abc <RegionCommonGetBandwidth>: + 8010abc: f851 0020 ldr.w r0, [r1, r0, lsl #2] + 8010ac0: 4b05 ldr r3, [pc, #20] ; (8010ad8 <RegionCommonGetBandwidth+0x1c>) + 8010ac2: 4298 cmp r0, r3 + 8010ac4: d005 beq.n 8010ad2 <RegionCommonGetBandwidth+0x16> + 8010ac6: 4b05 ldr r3, [pc, #20] ; (8010adc <RegionCommonGetBandwidth+0x20>) + 8010ac8: 1ac3 subs r3, r0, r3 + 8010aca: 4258 negs r0, r3 + 8010acc: 4158 adcs r0, r3 + 8010ace: 0040 lsls r0, r0, #1 + 8010ad0: 4770 bx lr + 8010ad2: 2001 movs r0, #1 + 8010ad4: 4770 bx lr + 8010ad6: bf00 nop + 8010ad8: 0003d090 .word 0x0003d090 + 8010adc: 0007a120 .word 0x0007a120 + +08010ae0 <RegionCommonRxConfigPrint>: + 8010ae0: 2805 cmp r0, #5 + 8010ae2: b51f push {r0, r1, r2, r3, r4, lr} + 8010ae4: d80e bhi.n 8010b04 <RegionCommonRxConfigPrint+0x24> + 8010ae6: 4b0c ldr r3, [pc, #48] ; (8010b18 <RegionCommonRxConfigPrint+0x38>) + 8010ae8: f853 3020 ldr.w r3, [r3, r0, lsl #2] + 8010aec: 9300 str r3, [sp, #0] + 8010aee: e9cd 1201 strd r1, r2, [sp, #4] + 8010af2: 4b0a ldr r3, [pc, #40] ; (8010b1c <RegionCommonRxConfigPrint+0x3c>) + 8010af4: 2201 movs r2, #1 + 8010af6: 2100 movs r1, #0 + 8010af8: 2002 movs r0, #2 + 8010afa: f002 fe69 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8010afe: b005 add sp, #20 + 8010b00: f85d fb04 ldr.w pc, [sp], #4 + 8010b04: e9cd 1200 strd r1, r2, [sp] + 8010b08: 4b05 ldr r3, [pc, #20] ; (8010b20 <RegionCommonRxConfigPrint+0x40>) + 8010b0a: 2201 movs r2, #1 + 8010b0c: 2100 movs r1, #0 + 8010b0e: 2002 movs r0, #2 + 8010b10: f002 fe5e bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8010b14: e7f3 b.n 8010afe <RegionCommonRxConfigPrint+0x1e> + 8010b16: bf00 nop + 8010b18: 080151dc .word 0x080151dc + 8010b1c: 08015173 .word 0x08015173 + 8010b20: 08015192 .word 0x08015192 + +08010b24 <RegionCommonTxConfigPrint>: + 8010b24: b507 push {r0, r1, r2, lr} + 8010b26: 4b05 ldr r3, [pc, #20] ; (8010b3c <RegionCommonTxConfigPrint+0x18>) + 8010b28: e9cd 0100 strd r0, r1, [sp] + 8010b2c: 2201 movs r2, #1 + 8010b2e: 2100 movs r1, #0 + 8010b30: 2002 movs r0, #2 + 8010b32: f002 fe4d bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8010b36: b003 add sp, #12 + 8010b38: f85d fb04 ldr.w pc, [sp], #4 + 8010b3c: 080151ae .word 0x080151ae + +08010b40 <AES_CMAC_Init>: + 8010b40: b510 push {r4, lr} + 8010b42: 2210 movs r2, #16 + 8010b44: 4604 mov r4, r0 + 8010b46: 2100 movs r1, #0 + 8010b48: 30f1 adds r0, #241 ; 0xf1 + 8010b4a: f000 fe5f bl 801180c <memset1> + 8010b4e: 2100 movs r1, #0 + 8010b50: f8c4 1114 str.w r1, [r4, #276] ; 0x114 + 8010b54: 4620 mov r0, r4 + 8010b56: 22f0 movs r2, #240 ; 0xf0 + 8010b58: e8bd 4010 ldmia.w sp!, {r4, lr} + 8010b5c: f000 be56 b.w 801180c <memset1> + +08010b60 <AES_CMAC_SetKey>: + 8010b60: 4602 mov r2, r0 + 8010b62: 4608 mov r0, r1 + 8010b64: 2110 movs r1, #16 + 8010b66: f000 b9a5 b.w 8010eb4 <lorawan_aes_set_key> + +08010b6a <AES_CMAC_Update>: + 8010b6a: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8010b6e: 4604 mov r4, r0 + 8010b70: f8d0 0114 ldr.w r0, [r0, #276] ; 0x114 + 8010b74: b085 sub sp, #20 + 8010b76: 460e mov r6, r1 + 8010b78: 4615 mov r5, r2 + 8010b7a: f204 1901 addw r9, r4, #257 ; 0x101 + 8010b7e: b388 cbz r0, 8010be4 <AES_CMAC_Update+0x7a> + 8010b80: f1c0 0810 rsb r8, r0, #16 + 8010b84: 4590 cmp r8, r2 + 8010b86: 4647 mov r7, r8 + 8010b88: bf28 it cs + 8010b8a: 4617 movcs r7, r2 + 8010b8c: b2ba uxth r2, r7 + 8010b8e: 4448 add r0, r9 + 8010b90: f000 fe28 bl 80117e4 <memcpy1> + 8010b94: f8d4 3114 ldr.w r3, [r4, #276] ; 0x114 + 8010b98: 443b add r3, r7 + 8010b9a: 2b0f cmp r3, #15 + 8010b9c: f8c4 3114 str.w r3, [r4, #276] ; 0x114 + 8010ba0: d92d bls.n 8010bfe <AES_CMAC_Update+0x94> + 8010ba2: 45a8 cmp r8, r5 + 8010ba4: d22b bcs.n 8010bfe <AES_CMAC_Update+0x94> + 8010ba6: f104 03f0 add.w r3, r4, #240 ; 0xf0 + 8010baa: f504 7180 add.w r1, r4, #256 ; 0x100 + 8010bae: f813 2f01 ldrb.w r2, [r3, #1]! + 8010bb2: 7c18 ldrb r0, [r3, #16] + 8010bb4: 428b cmp r3, r1 + 8010bb6: ea82 0200 eor.w r2, r2, r0 + 8010bba: 701a strb r2, [r3, #0] + 8010bbc: d1f7 bne.n 8010bae <AES_CMAC_Update+0x44> + 8010bbe: f104 08f1 add.w r8, r4, #241 ; 0xf1 + 8010bc2: 2210 movs r2, #16 + 8010bc4: 4641 mov r1, r8 + 8010bc6: 4668 mov r0, sp + 8010bc8: f000 fe0c bl 80117e4 <memcpy1> + 8010bcc: 4622 mov r2, r4 + 8010bce: 4669 mov r1, sp + 8010bd0: 4668 mov r0, sp + 8010bd2: f000 f9e9 bl 8010fa8 <lorawan_aes_encrypt> + 8010bd6: 2210 movs r2, #16 + 8010bd8: 4669 mov r1, sp + 8010bda: 4640 mov r0, r8 + 8010bdc: f000 fe02 bl 80117e4 <memcpy1> + 8010be0: 443e add r6, r7 + 8010be2: 1bed subs r5, r5, r7 + 8010be4: f504 7880 add.w r8, r4, #256 ; 0x100 + 8010be8: f104 07f1 add.w r7, r4, #241 ; 0xf1 + 8010bec: 2d10 cmp r5, #16 + 8010bee: d809 bhi.n 8010c04 <AES_CMAC_Update+0x9a> + 8010bf0: b2aa uxth r2, r5 + 8010bf2: 4631 mov r1, r6 + 8010bf4: 4648 mov r0, r9 + 8010bf6: f000 fdf5 bl 80117e4 <memcpy1> + 8010bfa: f8c4 5114 str.w r5, [r4, #276] ; 0x114 + 8010bfe: b005 add sp, #20 + 8010c00: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8010c04: f104 03f0 add.w r3, r4, #240 ; 0xf0 + 8010c08: 1e71 subs r1, r6, #1 + 8010c0a: f813 2f01 ldrb.w r2, [r3, #1]! + 8010c0e: f811 0f01 ldrb.w r0, [r1, #1]! + 8010c12: 4543 cmp r3, r8 + 8010c14: ea82 0200 eor.w r2, r2, r0 + 8010c18: 701a strb r2, [r3, #0] + 8010c1a: d1f6 bne.n 8010c0a <AES_CMAC_Update+0xa0> + 8010c1c: 2210 movs r2, #16 + 8010c1e: 4639 mov r1, r7 + 8010c20: 4668 mov r0, sp + 8010c22: f000 fddf bl 80117e4 <memcpy1> + 8010c26: 4622 mov r2, r4 + 8010c28: 4669 mov r1, sp + 8010c2a: 4668 mov r0, sp + 8010c2c: f000 f9bc bl 8010fa8 <lorawan_aes_encrypt> + 8010c30: 2210 movs r2, #16 + 8010c32: 4669 mov r1, sp + 8010c34: 4638 mov r0, r7 + 8010c36: f000 fdd5 bl 80117e4 <memcpy1> + 8010c3a: 3610 adds r6, #16 + 8010c3c: 3d10 subs r5, #16 + 8010c3e: e7d5 b.n 8010bec <AES_CMAC_Update+0x82> + +08010c40 <AES_CMAC_Final>: + 8010c40: b5f0 push {r4, r5, r6, r7, lr} + 8010c42: b089 sub sp, #36 ; 0x24 + 8010c44: 460c mov r4, r1 + 8010c46: 2210 movs r2, #16 + 8010c48: 2100 movs r1, #0 + 8010c4a: 4605 mov r5, r0 + 8010c4c: 4668 mov r0, sp + 8010c4e: f000 fddd bl 801180c <memset1> + 8010c52: 4622 mov r2, r4 + 8010c54: 4669 mov r1, sp + 8010c56: 4668 mov r0, sp + 8010c58: f000 f9a6 bl 8010fa8 <lorawan_aes_encrypt> + 8010c5c: f99d 3000 ldrsb.w r3, [sp] + 8010c60: 2b00 cmp r3, #0 + 8010c62: 466a mov r2, sp + 8010c64: f04f 0100 mov.w r1, #0 + 8010c68: da43 bge.n 8010cf2 <AES_CMAC_Final+0xb2> + 8010c6a: 7813 ldrb r3, [r2, #0] + 8010c6c: f812 0f01 ldrb.w r0, [r2, #1]! + 8010c70: 3101 adds r1, #1 + 8010c72: 005b lsls r3, r3, #1 + 8010c74: ea43 13d0 orr.w r3, r3, r0, lsr #7 + 8010c78: 290f cmp r1, #15 + 8010c7a: f802 3c01 strb.w r3, [r2, #-1] + 8010c7e: d1f4 bne.n 8010c6a <AES_CMAC_Final+0x2a> + 8010c80: f89d 300f ldrb.w r3, [sp, #15] + 8010c84: 005b lsls r3, r3, #1 + 8010c86: f083 0387 eor.w r3, r3, #135 ; 0x87 + 8010c8a: f8d4 0114 ldr.w r0, [r4, #276] ; 0x114 + 8010c8e: b2db uxtb r3, r3 + 8010c90: 2810 cmp r0, #16 + 8010c92: f88d 300f strb.w r3, [sp, #15] + 8010c96: d13b bne.n 8010d10 <AES_CMAC_Final+0xd0> + 8010c98: f504 7380 add.w r3, r4, #256 ; 0x100 + 8010c9c: 4669 mov r1, sp + 8010c9e: f504 7088 add.w r0, r4, #272 ; 0x110 + 8010ca2: f813 6f01 ldrb.w r6, [r3, #1]! + 8010ca6: f811 2b01 ldrb.w r2, [r1], #1 + 8010caa: 4298 cmp r0, r3 + 8010cac: ea82 0206 eor.w r2, r2, r6 + 8010cb0: 701a strb r2, [r3, #0] + 8010cb2: d1f6 bne.n 8010ca2 <AES_CMAC_Final+0x62> + 8010cb4: f104 03f0 add.w r3, r4, #240 ; 0xf0 + 8010cb8: f504 7180 add.w r1, r4, #256 ; 0x100 + 8010cbc: f813 2f01 ldrb.w r2, [r3, #1]! + 8010cc0: 7c18 ldrb r0, [r3, #16] + 8010cc2: 428b cmp r3, r1 + 8010cc4: ea82 0200 eor.w r2, r2, r0 + 8010cc8: 701a strb r2, [r3, #0] + 8010cca: d1f7 bne.n 8010cbc <AES_CMAC_Final+0x7c> + 8010ccc: 2210 movs r2, #16 + 8010cce: eb0d 0002 add.w r0, sp, r2 + 8010cd2: f104 01f1 add.w r1, r4, #241 ; 0xf1 + 8010cd6: f000 fd85 bl 80117e4 <memcpy1> + 8010cda: 4622 mov r2, r4 + 8010cdc: 4629 mov r1, r5 + 8010cde: a804 add r0, sp, #16 + 8010ce0: f000 f962 bl 8010fa8 <lorawan_aes_encrypt> + 8010ce4: 2210 movs r2, #16 + 8010ce6: 2100 movs r1, #0 + 8010ce8: 4668 mov r0, sp + 8010cea: f000 fd8f bl 801180c <memset1> + 8010cee: b009 add sp, #36 ; 0x24 + 8010cf0: bdf0 pop {r4, r5, r6, r7, pc} + 8010cf2: 7813 ldrb r3, [r2, #0] + 8010cf4: f812 0f01 ldrb.w r0, [r2, #1]! + 8010cf8: 3101 adds r1, #1 + 8010cfa: 005b lsls r3, r3, #1 + 8010cfc: ea43 13d0 orr.w r3, r3, r0, lsr #7 + 8010d00: 290f cmp r1, #15 + 8010d02: f802 3c01 strb.w r3, [r2, #-1] + 8010d06: d1f4 bne.n 8010cf2 <AES_CMAC_Final+0xb2> + 8010d08: f89d 300f ldrb.w r3, [sp, #15] + 8010d0c: 005b lsls r3, r3, #1 + 8010d0e: e7bc b.n 8010c8a <AES_CMAC_Final+0x4a> + 8010d10: f99d 3000 ldrsb.w r3, [sp] + 8010d14: 2b00 cmp r3, #0 + 8010d16: 466a mov r2, sp + 8010d18: f04f 0100 mov.w r1, #0 + 8010d1c: da37 bge.n 8010d8e <AES_CMAC_Final+0x14e> + 8010d1e: 7813 ldrb r3, [r2, #0] + 8010d20: f812 6f01 ldrb.w r6, [r2, #1]! + 8010d24: 3101 adds r1, #1 + 8010d26: 005b lsls r3, r3, #1 + 8010d28: ea43 13d6 orr.w r3, r3, r6, lsr #7 + 8010d2c: 290f cmp r1, #15 + 8010d2e: f802 3c01 strb.w r3, [r2, #-1] + 8010d32: d1f4 bne.n 8010d1e <AES_CMAC_Final+0xde> + 8010d34: f89d 300f ldrb.w r3, [sp, #15] + 8010d38: 005b lsls r3, r3, #1 + 8010d3a: f083 0387 eor.w r3, r3, #135 ; 0x87 + 8010d3e: 1c47 adds r7, r0, #1 + 8010d40: b2db uxtb r3, r3 + 8010d42: f88d 300f strb.w r3, [sp, #15] + 8010d46: 2f10 cmp r7, #16 + 8010d48: eb04 0300 add.w r3, r4, r0 + 8010d4c: f1c0 060f rsb r6, r0, #15 + 8010d50: f04f 0280 mov.w r2, #128 ; 0x80 + 8010d54: bf88 it hi + 8010d56: 2600 movhi r6, #0 + 8010d58: f500 7081 add.w r0, r0, #258 ; 0x102 + 8010d5c: f883 2101 strb.w r2, [r3, #257] ; 0x101 + 8010d60: 2100 movs r1, #0 + 8010d62: 4632 mov r2, r6 + 8010d64: 4420 add r0, r4 + 8010d66: 443e add r6, r7 + 8010d68: f003 fa72 bl 8014250 <memset> + 8010d6c: f8c4 6114 str.w r6, [r4, #276] ; 0x114 + 8010d70: f504 7380 add.w r3, r4, #256 ; 0x100 + 8010d74: 4669 mov r1, sp + 8010d76: f504 7088 add.w r0, r4, #272 ; 0x110 + 8010d7a: f813 6f01 ldrb.w r6, [r3, #1]! + 8010d7e: f811 2b01 ldrb.w r2, [r1], #1 + 8010d82: 4298 cmp r0, r3 + 8010d84: ea82 0206 eor.w r2, r2, r6 + 8010d88: 701a strb r2, [r3, #0] + 8010d8a: d1f6 bne.n 8010d7a <AES_CMAC_Final+0x13a> + 8010d8c: e792 b.n 8010cb4 <AES_CMAC_Final+0x74> + 8010d8e: 7813 ldrb r3, [r2, #0] + 8010d90: f812 6f01 ldrb.w r6, [r2, #1]! + 8010d94: 3101 adds r1, #1 + 8010d96: 005b lsls r3, r3, #1 + 8010d98: ea43 13d6 orr.w r3, r3, r6, lsr #7 + 8010d9c: 290f cmp r1, #15 + 8010d9e: f802 3c01 strb.w r3, [r2, #-1] + 8010da2: d1f4 bne.n 8010d8e <AES_CMAC_Final+0x14e> + 8010da4: f89d 300f ldrb.w r3, [sp, #15] + 8010da8: 005b lsls r3, r3, #1 + 8010daa: e7c8 b.n 8010d3e <AES_CMAC_Final+0xfe> + +08010dac <xor_block>: + 8010dac: 780a ldrb r2, [r1, #0] + 8010dae: 7803 ldrb r3, [r0, #0] + 8010db0: 4053 eors r3, r2 + 8010db2: 7003 strb r3, [r0, #0] + 8010db4: 784a ldrb r2, [r1, #1] + 8010db6: 7843 ldrb r3, [r0, #1] + 8010db8: 4053 eors r3, r2 + 8010dba: 7043 strb r3, [r0, #1] + 8010dbc: 788a ldrb r2, [r1, #2] + 8010dbe: 7883 ldrb r3, [r0, #2] + 8010dc0: 4053 eors r3, r2 + 8010dc2: 7083 strb r3, [r0, #2] + 8010dc4: 78ca ldrb r2, [r1, #3] + 8010dc6: 78c3 ldrb r3, [r0, #3] + 8010dc8: 4053 eors r3, r2 + 8010dca: 70c3 strb r3, [r0, #3] + 8010dcc: 790a ldrb r2, [r1, #4] + 8010dce: 7903 ldrb r3, [r0, #4] + 8010dd0: 4053 eors r3, r2 + 8010dd2: 7103 strb r3, [r0, #4] + 8010dd4: 794a ldrb r2, [r1, #5] + 8010dd6: 7943 ldrb r3, [r0, #5] + 8010dd8: 4053 eors r3, r2 + 8010dda: 7143 strb r3, [r0, #5] + 8010ddc: 798a ldrb r2, [r1, #6] + 8010dde: 7983 ldrb r3, [r0, #6] + 8010de0: 4053 eors r3, r2 + 8010de2: 7183 strb r3, [r0, #6] + 8010de4: 79ca ldrb r2, [r1, #7] + 8010de6: 79c3 ldrb r3, [r0, #7] + 8010de8: 4053 eors r3, r2 + 8010dea: 71c3 strb r3, [r0, #7] + 8010dec: 7a0a ldrb r2, [r1, #8] + 8010dee: 7a03 ldrb r3, [r0, #8] + 8010df0: 4053 eors r3, r2 + 8010df2: 7203 strb r3, [r0, #8] + 8010df4: 7a4a ldrb r2, [r1, #9] + 8010df6: 7a43 ldrb r3, [r0, #9] + 8010df8: 4053 eors r3, r2 + 8010dfa: 7243 strb r3, [r0, #9] + 8010dfc: 7a8a ldrb r2, [r1, #10] + 8010dfe: 7a83 ldrb r3, [r0, #10] + 8010e00: 4053 eors r3, r2 + 8010e02: 7283 strb r3, [r0, #10] + 8010e04: 7aca ldrb r2, [r1, #11] + 8010e06: 7ac3 ldrb r3, [r0, #11] + 8010e08: 4053 eors r3, r2 + 8010e0a: 72c3 strb r3, [r0, #11] + 8010e0c: 7b0a ldrb r2, [r1, #12] + 8010e0e: 7b03 ldrb r3, [r0, #12] + 8010e10: 4053 eors r3, r2 + 8010e12: 7303 strb r3, [r0, #12] + 8010e14: 7b4a ldrb r2, [r1, #13] + 8010e16: 7b43 ldrb r3, [r0, #13] + 8010e18: 4053 eors r3, r2 + 8010e1a: 7343 strb r3, [r0, #13] + 8010e1c: 7b8a ldrb r2, [r1, #14] + 8010e1e: 7b83 ldrb r3, [r0, #14] + 8010e20: 4053 eors r3, r2 + 8010e22: 7383 strb r3, [r0, #14] + 8010e24: 7bca ldrb r2, [r1, #15] + 8010e26: 7bc3 ldrb r3, [r0, #15] + 8010e28: 4053 eors r3, r2 + 8010e2a: 73c3 strb r3, [r0, #15] + 8010e2c: 4770 bx lr + +08010e2e <copy_and_key>: + 8010e2e: b510 push {r4, lr} + 8010e30: 780b ldrb r3, [r1, #0] + 8010e32: 7814 ldrb r4, [r2, #0] + 8010e34: 4063 eors r3, r4 + 8010e36: 7003 strb r3, [r0, #0] + 8010e38: 7854 ldrb r4, [r2, #1] + 8010e3a: 784b ldrb r3, [r1, #1] + 8010e3c: 4063 eors r3, r4 + 8010e3e: 7043 strb r3, [r0, #1] + 8010e40: 7894 ldrb r4, [r2, #2] + 8010e42: 788b ldrb r3, [r1, #2] + 8010e44: 4063 eors r3, r4 + 8010e46: 7083 strb r3, [r0, #2] + 8010e48: 78d4 ldrb r4, [r2, #3] + 8010e4a: 78cb ldrb r3, [r1, #3] + 8010e4c: 4063 eors r3, r4 + 8010e4e: 70c3 strb r3, [r0, #3] + 8010e50: 7914 ldrb r4, [r2, #4] + 8010e52: 790b ldrb r3, [r1, #4] + 8010e54: 4063 eors r3, r4 + 8010e56: 7103 strb r3, [r0, #4] + 8010e58: 7954 ldrb r4, [r2, #5] + 8010e5a: 794b ldrb r3, [r1, #5] + 8010e5c: 4063 eors r3, r4 + 8010e5e: 7143 strb r3, [r0, #5] + 8010e60: 7994 ldrb r4, [r2, #6] + 8010e62: 798b ldrb r3, [r1, #6] + 8010e64: 4063 eors r3, r4 + 8010e66: 7183 strb r3, [r0, #6] + 8010e68: 79d4 ldrb r4, [r2, #7] + 8010e6a: 79cb ldrb r3, [r1, #7] + 8010e6c: 4063 eors r3, r4 + 8010e6e: 71c3 strb r3, [r0, #7] + 8010e70: 7a14 ldrb r4, [r2, #8] + 8010e72: 7a0b ldrb r3, [r1, #8] + 8010e74: 4063 eors r3, r4 + 8010e76: 7203 strb r3, [r0, #8] + 8010e78: 7a54 ldrb r4, [r2, #9] + 8010e7a: 7a4b ldrb r3, [r1, #9] + 8010e7c: 4063 eors r3, r4 + 8010e7e: 7243 strb r3, [r0, #9] + 8010e80: 7a8b ldrb r3, [r1, #10] + 8010e82: 7a94 ldrb r4, [r2, #10] + 8010e84: 4063 eors r3, r4 + 8010e86: 7283 strb r3, [r0, #10] + 8010e88: 7ad4 ldrb r4, [r2, #11] + 8010e8a: 7acb ldrb r3, [r1, #11] + 8010e8c: 4063 eors r3, r4 + 8010e8e: 72c3 strb r3, [r0, #11] + 8010e90: 7b14 ldrb r4, [r2, #12] + 8010e92: 7b0b ldrb r3, [r1, #12] + 8010e94: 4063 eors r3, r4 + 8010e96: 7303 strb r3, [r0, #12] + 8010e98: 7b54 ldrb r4, [r2, #13] + 8010e9a: 7b4b ldrb r3, [r1, #13] + 8010e9c: 4063 eors r3, r4 + 8010e9e: 7343 strb r3, [r0, #13] + 8010ea0: 7b94 ldrb r4, [r2, #14] + 8010ea2: 7b8b ldrb r3, [r1, #14] + 8010ea4: 4063 eors r3, r4 + 8010ea6: 7383 strb r3, [r0, #14] + 8010ea8: 7bcb ldrb r3, [r1, #15] + 8010eaa: 7bd2 ldrb r2, [r2, #15] + 8010eac: 4053 eors r3, r2 + 8010eae: 73c3 strb r3, [r0, #15] + 8010eb0: bd10 pop {r4, pc} + ... + +08010eb4 <lorawan_aes_set_key>: + 8010eb4: f1a1 0310 sub.w r3, r1, #16 + 8010eb8: b2db uxtb r3, r3 + 8010eba: 2b10 cmp r3, #16 + 8010ebc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8010ec0: d804 bhi.n 8010ecc <lorawan_aes_set_key+0x18> + 8010ec2: 4c37 ldr r4, [pc, #220] ; (8010fa0 <lorawan_aes_set_key+0xec>) + 8010ec4: fa24 f303 lsr.w r3, r4, r3 + 8010ec8: 07db lsls r3, r3, #31 + 8010eca: d405 bmi.n 8010ed8 <lorawan_aes_set_key+0x24> + 8010ecc: 2300 movs r3, #0 + 8010ece: f882 30f0 strb.w r3, [r2, #240] ; 0xf0 + 8010ed2: 20ff movs r0, #255 ; 0xff + 8010ed4: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8010ed8: 1e53 subs r3, r2, #1 + 8010eda: 1844 adds r4, r0, r1 + 8010edc: 42a0 cmp r0, r4 + 8010ede: d14e bne.n 8010f7e <lorawan_aes_set_key+0xca> + 8010ee0: f101 031c add.w r3, r1, #28 + 8010ee4: 009b lsls r3, r3, #2 + 8010ee6: fa5f f983 uxtb.w r9, r3 + 8010eea: f3c3 1303 ubfx r3, r3, #4, #4 + 8010eee: 3b01 subs r3, #1 + 8010ef0: 4d2c ldr r5, [pc, #176] ; (8010fa4 <lorawan_aes_set_key+0xf0>) + 8010ef2: f882 30f0 strb.w r3, [r2, #240] ; 0xf0 + 8010ef6: 2401 movs r4, #1 + 8010ef8: 460b mov r3, r1 + 8010efa: 18d6 adds r6, r2, r3 + 8010efc: fbb3 f0f1 udiv r0, r3, r1 + 8010f00: fb01 3010 mls r0, r1, r0, r3 + 8010f04: f010 00ff ands.w r0, r0, #255 ; 0xff + 8010f08: f816 ac04 ldrb.w sl, [r6, #-4] + 8010f0c: f816 ec03 ldrb.w lr, [r6, #-3] + 8010f10: f816 cc02 ldrb.w ip, [r6, #-2] + 8010f14: f816 7c01 ldrb.w r7, [r6, #-1] + 8010f18: d136 bne.n 8010f88 <lorawan_aes_set_key+0xd4> + 8010f1a: f815 800e ldrb.w r8, [r5, lr] + 8010f1e: f815 e00c ldrb.w lr, [r5, ip] + 8010f22: f815 c007 ldrb.w ip, [r5, r7] + 8010f26: f815 700a ldrb.w r7, [r5, sl] + 8010f2a: 09e0 lsrs r0, r4, #7 + 8010f2c: eb00 0040 add.w r0, r0, r0, lsl #1 + 8010f30: ea84 0808 eor.w r8, r4, r8 + 8010f34: eb00 00c0 add.w r0, r0, r0, lsl #3 + 8010f38: 0064 lsls r4, r4, #1 + 8010f3a: b2c0 uxtb r0, r0 + 8010f3c: b2e4 uxtb r4, r4 + 8010f3e: 4044 eors r4, r0 + 8010f40: 46c2 mov sl, r8 + 8010f42: 1a58 subs r0, r3, r1 + 8010f44: b2c0 uxtb r0, r0 + 8010f46: f812 8000 ldrb.w r8, [r2, r0] + 8010f4a: ea8a 0a08 eor.w sl, sl, r8 + 8010f4e: f802 a003 strb.w sl, [r2, r3] + 8010f52: 4410 add r0, r2 + 8010f54: 3304 adds r3, #4 + 8010f56: f890 8001 ldrb.w r8, [r0, #1] + 8010f5a: ea8e 0e08 eor.w lr, lr, r8 + 8010f5e: f886 e001 strb.w lr, [r6, #1] + 8010f62: f890 e002 ldrb.w lr, [r0, #2] + 8010f66: ea8c 0c0e eor.w ip, ip, lr + 8010f6a: f886 c002 strb.w ip, [r6, #2] + 8010f6e: 78c0 ldrb r0, [r0, #3] + 8010f70: b2db uxtb r3, r3 + 8010f72: 4047 eors r7, r0 + 8010f74: 4599 cmp r9, r3 + 8010f76: 70f7 strb r7, [r6, #3] + 8010f78: d8bf bhi.n 8010efa <lorawan_aes_set_key+0x46> + 8010f7a: 2000 movs r0, #0 + 8010f7c: e7aa b.n 8010ed4 <lorawan_aes_set_key+0x20> + 8010f7e: f810 5b01 ldrb.w r5, [r0], #1 + 8010f82: f803 5f01 strb.w r5, [r3, #1]! + 8010f86: e7a9 b.n 8010edc <lorawan_aes_set_key+0x28> + 8010f88: 2918 cmp r1, #24 + 8010f8a: d9da bls.n 8010f42 <lorawan_aes_set_key+0x8e> + 8010f8c: 2810 cmp r0, #16 + 8010f8e: bf01 itttt eq + 8010f90: f815 a00a ldrbeq.w sl, [r5, sl] + 8010f94: f815 e00e ldrbeq.w lr, [r5, lr] + 8010f98: f815 c00c ldrbeq.w ip, [r5, ip] + 8010f9c: 5def ldrbeq r7, [r5, r7] + 8010f9e: e7d0 b.n 8010f42 <lorawan_aes_set_key+0x8e> + 8010fa0: 00010101 .word 0x00010101 + 8010fa4: 080153f4 .word 0x080153f4 + +08010fa8 <lorawan_aes_encrypt>: + 8010fa8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8010fac: b0a3 sub sp, #140 ; 0x8c + 8010fae: f892 30f0 ldrb.w r3, [r2, #240] ; 0xf0 + 8010fb2: 911d str r1, [sp, #116] ; 0x74 + 8010fb4: 921b str r2, [sp, #108] ; 0x6c + 8010fb6: 9301 str r3, [sp, #4] + 8010fb8: 2b00 cmp r3, #0 + 8010fba: f000 8153 beq.w 8011264 <lorawan_aes_encrypt+0x2bc> + 8010fbe: 4601 mov r1, r0 + 8010fc0: a81e add r0, sp, #120 ; 0x78 + 8010fc2: f7ff ff34 bl 8010e2e <copy_and_key> + 8010fc6: 9b1b ldr r3, [sp, #108] ; 0x6c + 8010fc8: 4ca7 ldr r4, [pc, #668] ; (8011268 <lorawan_aes_encrypt+0x2c0>) + 8010fca: 4da8 ldr r5, [pc, #672] ; (801126c <lorawan_aes_encrypt+0x2c4>) + 8010fcc: 4ea8 ldr r6, [pc, #672] ; (8011270 <lorawan_aes_encrypt+0x2c8>) + 8010fce: 3310 adds r3, #16 + 8010fd0: 9302 str r3, [sp, #8] + 8010fd2: 2300 movs r3, #0 + 8010fd4: 9303 str r3, [sp, #12] + 8010fd6: f89d 007c ldrb.w r0, [sp, #124] ; 0x7c + 8010fda: 9004 str r0, [sp, #16] + 8010fdc: f89d 0086 ldrb.w r0, [sp, #134] ; 0x86 + 8010fe0: 9005 str r0, [sp, #20] + 8010fe2: 5c20 ldrb r0, [r4, r0] + 8010fe4: 9006 str r0, [sp, #24] + 8010fe6: f89d 007b ldrb.w r0, [sp, #123] ; 0x7b + 8010fea: 9007 str r0, [sp, #28] + 8010fec: 5c20 ldrb r0, [r4, r0] + 8010fee: 9008 str r0, [sp, #32] + 8010ff0: 9804 ldr r0, [sp, #16] + 8010ff2: f89d c081 ldrb.w ip, [sp, #129] ; 0x81 + 8010ff6: 5c20 ldrb r0, [r4, r0] + 8010ff8: 9009 str r0, [sp, #36] ; 0x24 + 8010ffa: f814 000c ldrb.w r0, [r4, ip] + 8010ffe: 900a str r0, [sp, #40] ; 0x28 + 8011000: f89d 0080 ldrb.w r0, [sp, #128] ; 0x80 + 8011004: 900b str r0, [sp, #44] ; 0x2c + 8011006: f89d 0085 ldrb.w r0, [sp, #133] ; 0x85 + 801100a: f89d 8078 ldrb.w r8, [sp, #120] ; 0x78 + 801100e: f89d e07d ldrb.w lr, [sp, #125] ; 0x7d + 8011012: f89d a082 ldrb.w sl, [sp, #130] ; 0x82 + 8011016: f89d 9087 ldrb.w r9, [sp, #135] ; 0x87 + 801101a: 900c str r0, [sp, #48] ; 0x30 + 801101c: f89d 007a ldrb.w r0, [sp, #122] ; 0x7a + 8011020: 9b02 ldr r3, [sp, #8] + 8011022: 931c str r3, [sp, #112] ; 0x70 + 8011024: f814 200a ldrb.w r2, [r4, sl] + 8011028: f814 3009 ldrb.w r3, [r4, r9] + 801102c: f814 1008 ldrb.w r1, [r4, r8] + 8011030: f814 700e ldrb.w r7, [r4, lr] + 8011034: 900d str r0, [sp, #52] ; 0x34 + 8011036: 5c20 ldrb r0, [r4, r0] + 8011038: 900e str r0, [sp, #56] ; 0x38 + 801103a: f89d 007f ldrb.w r0, [sp, #127] ; 0x7f + 801103e: 900f str r0, [sp, #60] ; 0x3c + 8011040: 5c20 ldrb r0, [r4, r0] + 8011042: 9010 str r0, [sp, #64] ; 0x40 + 8011044: 980b ldr r0, [sp, #44] ; 0x2c + 8011046: 5c20 ldrb r0, [r4, r0] + 8011048: 9011 str r0, [sp, #68] ; 0x44 + 801104a: 980c ldr r0, [sp, #48] ; 0x30 + 801104c: 5c20 ldrb r0, [r4, r0] + 801104e: 9012 str r0, [sp, #72] ; 0x48 + 8011050: f89d 0084 ldrb.w r0, [sp, #132] ; 0x84 + 8011054: 9013 str r0, [sp, #76] ; 0x4c + 8011056: f89d 0079 ldrb.w r0, [sp, #121] ; 0x79 + 801105a: 9014 str r0, [sp, #80] ; 0x50 + 801105c: f89d 007e ldrb.w r0, [sp, #126] ; 0x7e + 8011060: 9015 str r0, [sp, #84] ; 0x54 + 8011062: 5c20 ldrb r0, [r4, r0] + 8011064: 9016 str r0, [sp, #88] ; 0x58 + 8011066: f89d 0083 ldrb.w r0, [sp, #131] ; 0x83 + 801106a: 9017 str r0, [sp, #92] ; 0x5c + 801106c: 5c20 ldrb r0, [r4, r0] + 801106e: 9018 str r0, [sp, #96] ; 0x60 + 8011070: 9813 ldr r0, [sp, #76] ; 0x4c + 8011072: 5c20 ldrb r0, [r4, r0] + 8011074: 9019 str r0, [sp, #100] ; 0x64 + 8011076: 9814 ldr r0, [sp, #80] ; 0x50 + 8011078: 5c20 ldrb r0, [r4, r0] + 801107a: 901a str r0, [sp, #104] ; 0x68 + 801107c: 9803 ldr r0, [sp, #12] + 801107e: 3001 adds r0, #1 + 8011080: 9003 str r0, [sp, #12] + 8011082: 9802 ldr r0, [sp, #8] + 8011084: f8dd b004 ldr.w fp, [sp, #4] + 8011088: 3010 adds r0, #16 + 801108a: 9002 str r0, [sp, #8] + 801108c: f89d 000c ldrb.w r0, [sp, #12] + 8011090: 4583 cmp fp, r0 + 8011092: d836 bhi.n 8011102 <lorawan_aes_encrypt+0x15a> + 8011094: f88d 1078 strb.w r1, [sp, #120] ; 0x78 + 8011098: f88d 207a strb.w r2, [sp, #122] ; 0x7a + 801109c: 9909 ldr r1, [sp, #36] ; 0x24 + 801109e: 9a0e ldr r2, [sp, #56] ; 0x38 + 80110a0: f88d 107c strb.w r1, [sp, #124] ; 0x7c + 80110a4: f88d 2082 strb.w r2, [sp, #130] ; 0x82 + 80110a8: 9911 ldr r1, [sp, #68] ; 0x44 + 80110aa: 9a06 ldr r2, [sp, #24] + 80110ac: f88d 1080 strb.w r1, [sp, #128] ; 0x80 + 80110b0: f88d 207e strb.w r2, [sp, #126] ; 0x7e + 80110b4: 9919 ldr r1, [sp, #100] ; 0x64 + 80110b6: 9a16 ldr r2, [sp, #88] ; 0x58 + 80110b8: f88d 1084 strb.w r1, [sp, #132] ; 0x84 + 80110bc: f88d 2086 strb.w r2, [sp, #134] ; 0x86 + 80110c0: 990a ldr r1, [sp, #40] ; 0x28 + 80110c2: 9a18 ldr r2, [sp, #96] ; 0x60 + 80110c4: f88d 107d strb.w r1, [sp, #125] ; 0x7d + 80110c8: f88d 2087 strb.w r2, [sp, #135] ; 0x87 + 80110cc: 9912 ldr r1, [sp, #72] ; 0x48 + 80110ce: 9a10 ldr r2, [sp, #64] ; 0x40 + 80110d0: f88d 307b strb.w r3, [sp, #123] ; 0x7b + 80110d4: 9b1b ldr r3, [sp, #108] ; 0x6c + 80110d6: f88d 1081 strb.w r1, [sp, #129] ; 0x81 + 80110da: f88d 2083 strb.w r2, [sp, #131] ; 0x83 + 80110de: 991a ldr r1, [sp, #104] ; 0x68 + 80110e0: 9a08 ldr r2, [sp, #32] + 80110e2: 981d ldr r0, [sp, #116] ; 0x74 + 80110e4: f88d 1085 strb.w r1, [sp, #133] ; 0x85 + 80110e8: f88d 207f strb.w r2, [sp, #127] ; 0x7f + 80110ec: a91e add r1, sp, #120 ; 0x78 + 80110ee: eb03 120b add.w r2, r3, fp, lsl #4 + 80110f2: f88d 7079 strb.w r7, [sp, #121] ; 0x79 + 80110f6: f7ff fe9a bl 8010e2e <copy_and_key> + 80110fa: 2000 movs r0, #0 + 80110fc: b023 add sp, #140 ; 0x8c + 80110fe: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8011102: f815 b008 ldrb.w fp, [r5, r8] + 8011106: ea82 0003 eor.w r0, r2, r3 + 801110a: ea8b 0000 eor.w r0, fp, r0 + 801110e: f816 b00e ldrb.w fp, [r6, lr] + 8011112: ea80 000b eor.w r0, r0, fp + 8011116: f88d 0078 strb.w r0, [sp, #120] ; 0x78 + 801111a: f815 000e ldrb.w r0, [r5, lr] + 801111e: 404b eors r3, r1 + 8011120: 4043 eors r3, r0 + 8011122: f816 000a ldrb.w r0, [r6, sl] + 8011126: 4043 eors r3, r0 + 8011128: f88d 3079 strb.w r3, [sp, #121] ; 0x79 + 801112c: ea81 0307 eor.w r3, r1, r7 + 8011130: f815 100a ldrb.w r1, [r5, sl] + 8011134: 4059 eors r1, r3 + 8011136: f816 3009 ldrb.w r3, [r6, r9] + 801113a: 4059 eors r1, r3 + 801113c: f816 3008 ldrb.w r3, [r6, r8] + 8011140: f88d 107a strb.w r1, [sp, #122] ; 0x7a + 8011144: 407a eors r2, r7 + 8011146: 4053 eors r3, r2 + 8011148: f815 2009 ldrb.w r2, [r5, r9] + 801114c: 4053 eors r3, r2 + 801114e: f88d 307b strb.w r3, [sp, #123] ; 0x7b + 8011152: 9a08 ldr r2, [sp, #32] + 8011154: 9b06 ldr r3, [sp, #24] + 8011156: 4053 eors r3, r2 + 8011158: 9a04 ldr r2, [sp, #16] + 801115a: 5caa ldrb r2, [r5, r2] + 801115c: 4053 eors r3, r2 + 801115e: f816 200c ldrb.w r2, [r6, ip] + 8011162: 4053 eors r3, r2 + 8011164: f88d 307c strb.w r3, [sp, #124] ; 0x7c + 8011168: e9dd 3208 ldrd r3, r2, [sp, #32] + 801116c: 405a eors r2, r3 + 801116e: f815 300c ldrb.w r3, [r5, ip] + 8011172: 4053 eors r3, r2 + 8011174: 9a05 ldr r2, [sp, #20] + 8011176: 5cb2 ldrb r2, [r6, r2] + 8011178: 4053 eors r3, r2 + 801117a: f88d 307d strb.w r3, [sp, #125] ; 0x7d + 801117e: e9dd 3209 ldrd r3, r2, [sp, #36] ; 0x24 + 8011182: 405a eors r2, r3 + 8011184: 9b05 ldr r3, [sp, #20] + 8011186: 5ceb ldrb r3, [r5, r3] + 8011188: 4053 eors r3, r2 + 801118a: 9a07 ldr r2, [sp, #28] + 801118c: 5cb2 ldrb r2, [r6, r2] + 801118e: 4053 eors r3, r2 + 8011190: f88d 307e strb.w r3, [sp, #126] ; 0x7e + 8011194: 9b06 ldr r3, [sp, #24] + 8011196: 9a0a ldr r2, [sp, #40] ; 0x28 + 8011198: 4053 eors r3, r2 + 801119a: 9a04 ldr r2, [sp, #16] + 801119c: 5cb2 ldrb r2, [r6, r2] + 801119e: 405a eors r2, r3 + 80111a0: 9b07 ldr r3, [sp, #28] + 80111a2: 5ceb ldrb r3, [r5, r3] + 80111a4: 405a eors r2, r3 + 80111a6: f88d 207f strb.w r2, [sp, #127] ; 0x7f + 80111aa: 9b0e ldr r3, [sp, #56] ; 0x38 + 80111ac: 9a10 ldr r2, [sp, #64] ; 0x40 + 80111ae: 4053 eors r3, r2 + 80111b0: 9a0b ldr r2, [sp, #44] ; 0x2c + 80111b2: 5caa ldrb r2, [r5, r2] + 80111b4: 4053 eors r3, r2 + 80111b6: 9a0c ldr r2, [sp, #48] ; 0x30 + 80111b8: 5cb2 ldrb r2, [r6, r2] + 80111ba: 4053 eors r3, r2 + 80111bc: f88d 3080 strb.w r3, [sp, #128] ; 0x80 + 80111c0: e9dd 3210 ldrd r3, r2, [sp, #64] ; 0x40 + 80111c4: 405a eors r2, r3 + 80111c6: 9b0c ldr r3, [sp, #48] ; 0x30 + 80111c8: 5ceb ldrb r3, [r5, r3] + 80111ca: 4053 eors r3, r2 + 80111cc: 9a0d ldr r2, [sp, #52] ; 0x34 + 80111ce: 5cb2 ldrb r2, [r6, r2] + 80111d0: 4053 eors r3, r2 + 80111d2: f88d 3081 strb.w r3, [sp, #129] ; 0x81 + 80111d6: e9dd 3211 ldrd r3, r2, [sp, #68] ; 0x44 + 80111da: 405a eors r2, r3 + 80111dc: 9b0d ldr r3, [sp, #52] ; 0x34 + 80111de: 5ceb ldrb r3, [r5, r3] + 80111e0: 4053 eors r3, r2 + 80111e2: 9a0f ldr r2, [sp, #60] ; 0x3c + 80111e4: 5cb2 ldrb r2, [r6, r2] + 80111e6: 4053 eors r3, r2 + 80111e8: f88d 3082 strb.w r3, [sp, #130] ; 0x82 + 80111ec: 9a12 ldr r2, [sp, #72] ; 0x48 + 80111ee: 9b0e ldr r3, [sp, #56] ; 0x38 + 80111f0: 4053 eors r3, r2 + 80111f2: 9a0b ldr r2, [sp, #44] ; 0x2c + 80111f4: 5cb2 ldrb r2, [r6, r2] + 80111f6: 405a eors r2, r3 + 80111f8: 9b0f ldr r3, [sp, #60] ; 0x3c + 80111fa: 5ceb ldrb r3, [r5, r3] + 80111fc: 991c ldr r1, [sp, #112] ; 0x70 + 80111fe: 405a eors r2, r3 + 8011200: f88d 2083 strb.w r2, [sp, #131] ; 0x83 + 8011204: 9b16 ldr r3, [sp, #88] ; 0x58 + 8011206: 9a18 ldr r2, [sp, #96] ; 0x60 + 8011208: 4053 eors r3, r2 + 801120a: 9a13 ldr r2, [sp, #76] ; 0x4c + 801120c: 5caa ldrb r2, [r5, r2] + 801120e: 4053 eors r3, r2 + 8011210: 9a14 ldr r2, [sp, #80] ; 0x50 + 8011212: 5cb2 ldrb r2, [r6, r2] + 8011214: 4053 eors r3, r2 + 8011216: f88d 3084 strb.w r3, [sp, #132] ; 0x84 + 801121a: e9dd 3218 ldrd r3, r2, [sp, #96] ; 0x60 + 801121e: 405a eors r2, r3 + 8011220: 9b14 ldr r3, [sp, #80] ; 0x50 + 8011222: 5ceb ldrb r3, [r5, r3] + 8011224: 4053 eors r3, r2 + 8011226: 9a15 ldr r2, [sp, #84] ; 0x54 + 8011228: 5cb2 ldrb r2, [r6, r2] + 801122a: 4053 eors r3, r2 + 801122c: f88d 3085 strb.w r3, [sp, #133] ; 0x85 + 8011230: e9dd 3219 ldrd r3, r2, [sp, #100] ; 0x64 + 8011234: 405a eors r2, r3 + 8011236: 9b15 ldr r3, [sp, #84] ; 0x54 + 8011238: 5ceb ldrb r3, [r5, r3] + 801123a: 4053 eors r3, r2 + 801123c: 9a17 ldr r2, [sp, #92] ; 0x5c + 801123e: 5cb2 ldrb r2, [r6, r2] + 8011240: 4053 eors r3, r2 + 8011242: f88d 3086 strb.w r3, [sp, #134] ; 0x86 + 8011246: 9a1a ldr r2, [sp, #104] ; 0x68 + 8011248: 9b16 ldr r3, [sp, #88] ; 0x58 + 801124a: 4053 eors r3, r2 + 801124c: 9a13 ldr r2, [sp, #76] ; 0x4c + 801124e: 5cb2 ldrb r2, [r6, r2] + 8011250: 4053 eors r3, r2 + 8011252: 9a17 ldr r2, [sp, #92] ; 0x5c + 8011254: 5caa ldrb r2, [r5, r2] + 8011256: a81e add r0, sp, #120 ; 0x78 + 8011258: 4053 eors r3, r2 + 801125a: f88d 3087 strb.w r3, [sp, #135] ; 0x87 + 801125e: f7ff fda5 bl 8010dac <xor_block> + 8011262: e6b8 b.n 8010fd6 <lorawan_aes_encrypt+0x2e> + 8011264: 20ff movs r0, #255 ; 0xff + 8011266: e749 b.n 80110fc <lorawan_aes_encrypt+0x154> + 8011268: 080153f4 .word 0x080153f4 + 801126c: 080151f4 .word 0x080151f4 + 8011270: 080152f4 .word 0x080152f4 + +08011274 <SecureElementInit>: + 8011274: b508 push {r3, lr} + 8011276: b138 cbz r0, 8011288 <SecureElementInit+0x14> + 8011278: 4a04 ldr r2, [pc, #16] ; (801128c <SecureElementInit+0x18>) + 801127a: 4905 ldr r1, [pc, #20] ; (8011290 <SecureElementInit+0x1c>) + 801127c: 6010 str r0, [r2, #0] + 801127e: 22d8 movs r2, #216 ; 0xd8 + 8011280: f000 fab0 bl 80117e4 <memcpy1> + 8011284: 2000 movs r0, #0 + 8011286: bd08 pop {r3, pc} + 8011288: 2002 movs r0, #2 + 801128a: e7fc b.n 8011286 <SecureElementInit+0x12> + 801128c: 20002624 .word 0x20002624 + 8011290: 08015924 .word 0x08015924 + +08011294 <SecureElementGetKeyByID>: + 8011294: 4b0a ldr r3, [pc, #40] ; (80112c0 <SecureElementGetKeyByID+0x2c>) + 8011296: 681a ldr r2, [r3, #0] + 8011298: b570 push {r4, r5, r6, lr} + 801129a: 2300 movs r3, #0 + 801129c: f102 0518 add.w r5, r2, #24 + 80112a0: eb03 1403 add.w r4, r3, r3, lsl #4 + 80112a4: 5d2e ldrb r6, [r5, r4] + 80112a6: 4286 cmp r6, r0 + 80112a8: d104 bne.n 80112b4 <SecureElementGetKeyByID+0x20> + 80112aa: 3418 adds r4, #24 + 80112ac: 4422 add r2, r4 + 80112ae: 600a str r2, [r1, #0] + 80112b0: 2000 movs r0, #0 + 80112b2: bd70 pop {r4, r5, r6, pc} + 80112b4: 3301 adds r3, #1 + 80112b6: 2b0b cmp r3, #11 + 80112b8: d1f2 bne.n 80112a0 <SecureElementGetKeyByID+0xc> + 80112ba: 2003 movs r0, #3 + 80112bc: e7f9 b.n 80112b2 <SecureElementGetKeyByID+0x1e> + 80112be: bf00 nop + 80112c0: 20002624 .word 0x20002624 + +080112c4 <ComputeCmac>: + 80112c4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80112c8: b0cc sub sp, #304 ; 0x130 + 80112ca: 4606 mov r6, r0 + 80112cc: f8dd 8148 ldr.w r8, [sp, #328] ; 0x148 + 80112d0: 4617 mov r7, r2 + 80112d2: 461c mov r4, r3 + 80112d4: 460d mov r5, r1 + 80112d6: b331 cbz r1, 8011326 <ComputeCmac+0x62> + 80112d8: f1b8 0f00 cmp.w r8, #0 + 80112dc: d023 beq.n 8011326 <ComputeCmac+0x62> + 80112de: a806 add r0, sp, #24 + 80112e0: f7ff fc2e bl 8010b40 <AES_CMAC_Init> + 80112e4: 4620 mov r0, r4 + 80112e6: a901 add r1, sp, #4 + 80112e8: f7ff ffd4 bl 8011294 <SecureElementGetKeyByID> + 80112ec: 4604 mov r4, r0 + 80112ee: b9b0 cbnz r0, 801131e <ComputeCmac+0x5a> + 80112f0: 9901 ldr r1, [sp, #4] + 80112f2: a806 add r0, sp, #24 + 80112f4: 3101 adds r1, #1 + 80112f6: f7ff fc33 bl 8010b60 <AES_CMAC_SetKey> + 80112fa: b126 cbz r6, 8011306 <ComputeCmac+0x42> + 80112fc: 2210 movs r2, #16 + 80112fe: 4631 mov r1, r6 + 8011300: a806 add r0, sp, #24 + 8011302: f7ff fc32 bl 8010b6a <AES_CMAC_Update> + 8011306: 463a mov r2, r7 + 8011308: 4629 mov r1, r5 + 801130a: a806 add r0, sp, #24 + 801130c: f7ff fc2d bl 8010b6a <AES_CMAC_Update> + 8011310: a906 add r1, sp, #24 + 8011312: a802 add r0, sp, #8 + 8011314: f7ff fc94 bl 8010c40 <AES_CMAC_Final> + 8011318: 9b02 ldr r3, [sp, #8] + 801131a: f8c8 3000 str.w r3, [r8] + 801131e: 4620 mov r0, r4 + 8011320: b04c add sp, #304 ; 0x130 + 8011322: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8011326: 2402 movs r4, #2 + 8011328: e7f9 b.n 801131e <ComputeCmac+0x5a> + ... + +0801132c <PrintKey>: + 801132c: b530 push {r4, r5, lr} + 801132e: b095 sub sp, #84 ; 0x54 + 8011330: a913 add r1, sp, #76 ; 0x4c + 8011332: 4604 mov r4, r0 + 8011334: f7ff ffae bl 8011294 <SecureElementGetKeyByID> + 8011338: 2800 cmp r0, #0 + 801133a: d130 bne.n 801139e <PrintKey+0x72> + 801133c: 491b ldr r1, [pc, #108] ; (80113ac <PrintKey+0x80>) + 801133e: 230c movs r3, #12 + 8011340: fb03 f200 mul.w r2, r3, r0 + 8011344: 5c55 ldrb r5, [r2, r1] + 8011346: 42a5 cmp r5, r4 + 8011348: d12b bne.n 80113a2 <PrintKey+0x76> + 801134a: 9b13 ldr r3, [sp, #76] ; 0x4c + 801134c: 7c18 ldrb r0, [r3, #16] + 801134e: 9010 str r0, [sp, #64] ; 0x40 + 8011350: 7bd8 ldrb r0, [r3, #15] + 8011352: 900f str r0, [sp, #60] ; 0x3c + 8011354: 7b98 ldrb r0, [r3, #14] + 8011356: 900e str r0, [sp, #56] ; 0x38 + 8011358: 7b58 ldrb r0, [r3, #13] + 801135a: 900d str r0, [sp, #52] ; 0x34 + 801135c: 7b18 ldrb r0, [r3, #12] + 801135e: 900c str r0, [sp, #48] ; 0x30 + 8011360: 7ad8 ldrb r0, [r3, #11] + 8011362: 900b str r0, [sp, #44] ; 0x2c + 8011364: 7a98 ldrb r0, [r3, #10] + 8011366: 900a str r0, [sp, #40] ; 0x28 + 8011368: 7a58 ldrb r0, [r3, #9] + 801136a: 9009 str r0, [sp, #36] ; 0x24 + 801136c: 7a18 ldrb r0, [r3, #8] + 801136e: 9008 str r0, [sp, #32] + 8011370: 79d8 ldrb r0, [r3, #7] + 8011372: 9007 str r0, [sp, #28] + 8011374: 7998 ldrb r0, [r3, #6] + 8011376: 9006 str r0, [sp, #24] + 8011378: 7958 ldrb r0, [r3, #5] + 801137a: 9005 str r0, [sp, #20] + 801137c: 7918 ldrb r0, [r3, #4] + 801137e: 9004 str r0, [sp, #16] + 8011380: 78d8 ldrb r0, [r3, #3] + 8011382: 9003 str r0, [sp, #12] + 8011384: 7898 ldrb r0, [r3, #2] + 8011386: 9002 str r0, [sp, #8] + 8011388: 440a add r2, r1 + 801138a: 785b ldrb r3, [r3, #1] + 801138c: 9301 str r3, [sp, #4] + 801138e: 6893 ldr r3, [r2, #8] + 8011390: 9300 str r3, [sp, #0] + 8011392: 2200 movs r2, #0 + 8011394: 4b06 ldr r3, [pc, #24] ; (80113b0 <PrintKey+0x84>) + 8011396: 4611 mov r1, r2 + 8011398: 2002 movs r0, #2 + 801139a: f002 fa19 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 801139e: b015 add sp, #84 ; 0x54 + 80113a0: bd30 pop {r4, r5, pc} + 80113a2: 3001 adds r0, #1 + 80113a4: 280b cmp r0, #11 + 80113a6: d1cb bne.n 8011340 <PrintKey+0x14> + 80113a8: e7f9 b.n 801139e <PrintKey+0x72> + 80113aa: bf00 nop + 80113ac: 0801566c .word 0x0801566c + 80113b0: 080154f4 .word 0x080154f4 + +080113b4 <SecureElementComputeAesCmac>: + 80113b4: 2b0b cmp r3, #11 + 80113b6: b410 push {r4} + 80113b8: d802 bhi.n 80113c0 <SecureElementComputeAesCmac+0xc> + 80113ba: bc10 pop {r4} + 80113bc: f7ff bf82 b.w 80112c4 <ComputeCmac> + 80113c0: 2003 movs r0, #3 + 80113c2: bc10 pop {r4} + 80113c4: 4770 bx lr + +080113c6 <SecureElementVerifyAesCmac>: + 80113c6: b530 push {r4, r5, lr} + 80113c8: 460d mov r5, r1 + 80113ca: b085 sub sp, #20 + 80113cc: 4614 mov r4, r2 + 80113ce: 4601 mov r1, r0 + 80113d0: b168 cbz r0, 80113ee <SecureElementVerifyAesCmac+0x28> + 80113d2: aa03 add r2, sp, #12 + 80113d4: 2000 movs r0, #0 + 80113d6: 9200 str r2, [sp, #0] + 80113d8: 462a mov r2, r5 + 80113da: 9003 str r0, [sp, #12] + 80113dc: f7ff ff72 bl 80112c4 <ComputeCmac> + 80113e0: b918 cbnz r0, 80113ea <SecureElementVerifyAesCmac+0x24> + 80113e2: 9803 ldr r0, [sp, #12] + 80113e4: 1b00 subs r0, r0, r4 + 80113e6: bf18 it ne + 80113e8: 2001 movne r0, #1 + 80113ea: b005 add sp, #20 + 80113ec: bd30 pop {r4, r5, pc} + 80113ee: 2002 movs r0, #2 + 80113f0: e7fb b.n 80113ea <SecureElementVerifyAesCmac+0x24> + +080113f2 <SecureElementAesEncrypt>: + 80113f2: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 80113f6: 460d mov r5, r1 + 80113f8: b0bf sub sp, #252 ; 0xfc + 80113fa: 4614 mov r4, r2 + 80113fc: 4699 mov r9, r3 + 80113fe: 4680 mov r8, r0 + 8011400: b320 cbz r0, 801144c <SecureElementAesEncrypt+0x5a> + 8011402: b31b cbz r3, 801144c <SecureElementAesEncrypt+0x5a> + 8011404: f011 010f ands.w r1, r1, #15 + 8011408: d122 bne.n 8011450 <SecureElementAesEncrypt+0x5e> + 801140a: 22f0 movs r2, #240 ; 0xf0 + 801140c: a801 add r0, sp, #4 + 801140e: f000 f9fd bl 801180c <memset1> + 8011412: 4620 mov r0, r4 + 8011414: 4669 mov r1, sp + 8011416: f7ff ff3d bl 8011294 <SecureElementGetKeyByID> + 801141a: 4604 mov r4, r0 + 801141c: b948 cbnz r0, 8011432 <SecureElementAesEncrypt+0x40> + 801141e: 9800 ldr r0, [sp, #0] + 8011420: aa01 add r2, sp, #4 + 8011422: 2110 movs r1, #16 + 8011424: 3001 adds r0, #1 + 8011426: f7ff fd45 bl 8010eb4 <lorawan_aes_set_key> + 801142a: 462e mov r6, r5 + 801142c: 1baf subs r7, r5, r6 + 801142e: b2ff uxtb r7, r7 + 8011430: b91e cbnz r6, 801143a <SecureElementAesEncrypt+0x48> + 8011432: 4620 mov r0, r4 + 8011434: b03f add sp, #252 ; 0xfc + 8011436: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 801143a: aa01 add r2, sp, #4 + 801143c: eb09 0107 add.w r1, r9, r7 + 8011440: eb08 0007 add.w r0, r8, r7 + 8011444: f7ff fdb0 bl 8010fa8 <lorawan_aes_encrypt> + 8011448: 3e10 subs r6, #16 + 801144a: e7ef b.n 801142c <SecureElementAesEncrypt+0x3a> + 801144c: 2402 movs r4, #2 + 801144e: e7f0 b.n 8011432 <SecureElementAesEncrypt+0x40> + 8011450: 2405 movs r4, #5 + 8011452: e7ee b.n 8011432 <SecureElementAesEncrypt+0x40> + +08011454 <SecureElementSetKey.part.0>: + 8011454: b5f0 push {r4, r5, r6, r7, lr} + 8011456: 4e18 ldr r6, [pc, #96] ; (80114b8 <SecureElementSetKey.part.0+0x64>) + 8011458: 6834 ldr r4, [r6, #0] + 801145a: 4602 mov r2, r0 + 801145c: b085 sub sp, #20 + 801145e: 4608 mov r0, r1 + 8011460: 2300 movs r3, #0 + 8011462: f104 0118 add.w r1, r4, #24 + 8011466: eb03 1503 add.w r5, r3, r3, lsl #4 + 801146a: 5d4f ldrb r7, [r1, r5] + 801146c: 4297 cmp r7, r2 + 801146e: d11e bne.n 80114ae <SecureElementSetKey.part.0+0x5a> + 8011470: 2a0d cmp r2, #13 + 8011472: f105 0519 add.w r5, r5, #25 + 8011476: d113 bne.n 80114a0 <SecureElementSetKey.part.0+0x4c> + 8011478: 2300 movs r3, #0 + 801147a: e9cd 3300 strd r3, r3, [sp] + 801147e: e9cd 3302 strd r3, r3, [sp, #8] + 8011482: 220c movs r2, #12 + 8011484: 2110 movs r1, #16 + 8011486: 466b mov r3, sp + 8011488: f7ff ffb3 bl 80113f2 <SecureElementAesEncrypt> + 801148c: 4604 mov r4, r0 + 801148e: 6830 ldr r0, [r6, #0] + 8011490: 2210 movs r2, #16 + 8011492: 4669 mov r1, sp + 8011494: 4428 add r0, r5 + 8011496: f000 f9a5 bl 80117e4 <memcpy1> + 801149a: 4620 mov r0, r4 + 801149c: b005 add sp, #20 + 801149e: bdf0 pop {r4, r5, r6, r7, pc} + 80114a0: 4601 mov r1, r0 + 80114a2: 2210 movs r2, #16 + 80114a4: 1960 adds r0, r4, r5 + 80114a6: f000 f99d bl 80117e4 <memcpy1> + 80114aa: 2400 movs r4, #0 + 80114ac: e7f5 b.n 801149a <SecureElementSetKey.part.0+0x46> + 80114ae: 3301 adds r3, #1 + 80114b0: 2b0b cmp r3, #11 + 80114b2: d1d8 bne.n 8011466 <SecureElementSetKey.part.0+0x12> + 80114b4: 2403 movs r4, #3 + 80114b6: e7f0 b.n 801149a <SecureElementSetKey.part.0+0x46> + 80114b8: 20002624 .word 0x20002624 + +080114bc <SecureElementSetKey>: + 80114bc: b109 cbz r1, 80114c2 <SecureElementSetKey+0x6> + 80114be: f7ff bfc9 b.w 8011454 <SecureElementSetKey.part.0> + 80114c2: 2002 movs r0, #2 + 80114c4: 4770 bx lr + +080114c6 <SecureElementDeriveAndStoreKey>: + 80114c6: b51f push {r0, r1, r2, r3, r4, lr} + 80114c8: 4614 mov r4, r2 + 80114ca: b1a0 cbz r0, 80114f6 <SecureElementDeriveAndStoreKey+0x30> + 80114cc: 2a0c cmp r2, #12 + 80114ce: d101 bne.n 80114d4 <SecureElementDeriveAndStoreKey+0xe> + 80114d0: 290b cmp r1, #11 + 80114d2: d112 bne.n 80114fa <SecureElementDeriveAndStoreKey+0x34> + 80114d4: 2300 movs r3, #0 + 80114d6: e9cd 3300 strd r3, r3, [sp] + 80114da: e9cd 3302 strd r3, r3, [sp, #8] + 80114de: 460a mov r2, r1 + 80114e0: 466b mov r3, sp + 80114e2: 2110 movs r1, #16 + 80114e4: f7ff ff85 bl 80113f2 <SecureElementAesEncrypt> + 80114e8: b918 cbnz r0, 80114f2 <SecureElementDeriveAndStoreKey+0x2c> + 80114ea: 4669 mov r1, sp + 80114ec: 4620 mov r0, r4 + 80114ee: f7ff ffb1 bl 8011454 <SecureElementSetKey.part.0> + 80114f2: b004 add sp, #16 + 80114f4: bd10 pop {r4, pc} + 80114f6: 2002 movs r0, #2 + 80114f8: e7fb b.n 80114f2 <SecureElementDeriveAndStoreKey+0x2c> + 80114fa: 2003 movs r0, #3 + 80114fc: e7f9 b.n 80114f2 <SecureElementDeriveAndStoreKey+0x2c> + +080114fe <SecureElementProcessJoinAccept>: + 80114fe: b5f8 push {r3, r4, r5, r6, r7, lr} + 8011500: 461e mov r6, r3 + 8011502: e9dd 4707 ldrd r4, r7, [sp, #28] + 8011506: f89d 5018 ldrb.w r5, [sp, #24] + 801150a: b35b cbz r3, 8011564 <SecureElementProcessJoinAccept+0x66> + 801150c: b354 cbz r4, 8011564 <SecureElementProcessJoinAccept+0x66> + 801150e: b34f cbz r7, 8011564 <SecureElementProcessJoinAccept+0x66> + 8011510: 2d21 cmp r5, #33 ; 0x21 + 8011512: d829 bhi.n 8011568 <SecureElementProcessJoinAccept+0x6a> + 8011514: 4619 mov r1, r3 + 8011516: 462a mov r2, r5 + 8011518: 4620 mov r0, r4 + 801151a: f000 f963 bl 80117e4 <memcpy1> + 801151e: 2201 movs r2, #1 + 8011520: 1c63 adds r3, r4, #1 + 8011522: 1e69 subs r1, r5, #1 + 8011524: 18b0 adds r0, r6, r2 + 8011526: f7ff ff64 bl 80113f2 <SecureElementAesEncrypt> + 801152a: b9f8 cbnz r0, 801156c <SecureElementProcessJoinAccept+0x6e> + 801152c: 7ae3 ldrb r3, [r4, #11] + 801152e: 09db lsrs r3, r3, #7 + 8011530: 703b strb r3, [r7, #0] + 8011532: b9eb cbnz r3, 8011570 <SecureElementProcessJoinAccept+0x72> + 8011534: 1963 adds r3, r4, r5 + 8011536: 4620 mov r0, r4 + 8011538: f813 2c01 ldrb.w r2, [r3, #-1] + 801153c: f813 1c02 ldrb.w r1, [r3, #-2] + 8011540: 0612 lsls r2, r2, #24 + 8011542: ea42 4201 orr.w r2, r2, r1, lsl #16 + 8011546: f813 1c04 ldrb.w r1, [r3, #-4] + 801154a: 430a orrs r2, r1 + 801154c: f813 1c03 ldrb.w r1, [r3, #-3] + 8011550: 2301 movs r3, #1 + 8011552: ea42 2201 orr.w r2, r2, r1, lsl #8 + 8011556: 1f29 subs r1, r5, #4 + 8011558: f7ff ff35 bl 80113c6 <SecureElementVerifyAesCmac> + 801155c: 3800 subs r0, #0 + 801155e: bf18 it ne + 8011560: 2001 movne r0, #1 + 8011562: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8011564: 2002 movs r0, #2 + 8011566: e7fc b.n 8011562 <SecureElementProcessJoinAccept+0x64> + 8011568: 2005 movs r0, #5 + 801156a: e7fa b.n 8011562 <SecureElementProcessJoinAccept+0x64> + 801156c: 2007 movs r0, #7 + 801156e: e7f8 b.n 8011562 <SecureElementProcessJoinAccept+0x64> + 8011570: 2004 movs r0, #4 + 8011572: e7f6 b.n 8011562 <SecureElementProcessJoinAccept+0x64> + +08011574 <SecureElementRandomNumber>: + 8011574: b510 push {r4, lr} + 8011576: 4604 mov r4, r0 + 8011578: b128 cbz r0, 8011586 <SecureElementRandomNumber+0x12> + 801157a: 4b04 ldr r3, [pc, #16] ; (801158c <SecureElementRandomNumber+0x18>) + 801157c: 695b ldr r3, [r3, #20] + 801157e: 4798 blx r3 + 8011580: 6020 str r0, [r4, #0] + 8011582: 2000 movs r0, #0 + 8011584: bd10 pop {r4, pc} + 8011586: 2002 movs r0, #2 + 8011588: e7fc b.n 8011584 <SecureElementRandomNumber+0x10> + 801158a: bf00 nop + 801158c: 08015784 .word 0x08015784 + +08011590 <SecureElementSetDevEui>: + 8011590: b508 push {r3, lr} + 8011592: 4601 mov r1, r0 + 8011594: b130 cbz r0, 80115a4 <SecureElementSetDevEui+0x14> + 8011596: 4b04 ldr r3, [pc, #16] ; (80115a8 <SecureElementSetDevEui+0x18>) + 8011598: 2208 movs r2, #8 + 801159a: 6818 ldr r0, [r3, #0] + 801159c: f000 f922 bl 80117e4 <memcpy1> + 80115a0: 2000 movs r0, #0 + 80115a2: bd08 pop {r3, pc} + 80115a4: 2002 movs r0, #2 + 80115a6: e7fc b.n 80115a2 <SecureElementSetDevEui+0x12> + 80115a8: 20002624 .word 0x20002624 + +080115ac <SecureElementGetDevEui>: + 80115ac: b508 push {r3, lr} + 80115ae: b130 cbz r0, 80115be <SecureElementGetDevEui+0x12> + 80115b0: 4b04 ldr r3, [pc, #16] ; (80115c4 <SecureElementGetDevEui+0x18>) + 80115b2: 2208 movs r2, #8 + 80115b4: 6819 ldr r1, [r3, #0] + 80115b6: f000 f915 bl 80117e4 <memcpy1> + 80115ba: 2000 movs r0, #0 + 80115bc: bd08 pop {r3, pc} + 80115be: 2002 movs r0, #2 + 80115c0: e7fc b.n 80115bc <SecureElementGetDevEui+0x10> + 80115c2: bf00 nop + 80115c4: 20002624 .word 0x20002624 + +080115c8 <SecureElementInitMcuID>: + 80115c8: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} + 80115ca: 4e12 ldr r6, [pc, #72] ; (8011614 <SecureElementInitMcuID+0x4c>) + 80115cc: 2300 movs r3, #0 + 80115ce: 4604 mov r4, r0 + 80115d0: a802 add r0, sp, #8 + 80115d2: 9301 str r3, [sp, #4] + 80115d4: 460d mov r5, r1 + 80115d6: f7ff ffe9 bl 80115ac <SecureElementGetDevEui> + 80115da: 6833 ldr r3, [r6, #0] + 80115dc: 695b ldr r3, [r3, #20] + 80115de: 9301 str r3, [sp, #4] + 80115e0: b16c cbz r4, 80115fe <SecureElementInitMcuID+0x36> + 80115e2: aa02 add r2, sp, #8 + 80115e4: 2308 movs r3, #8 + 80115e6: f812 1b01 ldrb.w r1, [r2], #1 + 80115ea: b941 cbnz r1, 80115fe <SecureElementInitMcuID+0x36> + 80115ec: 3b01 subs r3, #1 + 80115ee: f013 03ff ands.w r3, r3, #255 ; 0xff + 80115f2: d1f8 bne.n 80115e6 <SecureElementInitMcuID+0x1e> + 80115f4: a802 add r0, sp, #8 + 80115f6: 47a0 blx r4 + 80115f8: a802 add r0, sp, #8 + 80115fa: f7ff ffc9 bl 8011590 <SecureElementSetDevEui> + 80115fe: b135 cbz r5, 801160e <SecureElementInitMcuID+0x46> + 8011600: 9b01 ldr r3, [sp, #4] + 8011602: b923 cbnz r3, 801160e <SecureElementInitMcuID+0x46> + 8011604: a801 add r0, sp, #4 + 8011606: 47a8 blx r5 + 8011608: 6833 ldr r3, [r6, #0] + 801160a: 9a01 ldr r2, [sp, #4] + 801160c: 615a str r2, [r3, #20] + 801160e: 2000 movs r0, #0 + 8011610: b004 add sp, #16 + 8011612: bd70 pop {r4, r5, r6, pc} + 8011614: 20002624 .word 0x20002624 + +08011618 <SecureElementSetJoinEui>: + 8011618: b508 push {r3, lr} + 801161a: 4601 mov r1, r0 + 801161c: b138 cbz r0, 801162e <SecureElementSetJoinEui+0x16> + 801161e: 4b05 ldr r3, [pc, #20] ; (8011634 <SecureElementSetJoinEui+0x1c>) + 8011620: 6818 ldr r0, [r3, #0] + 8011622: 2208 movs r2, #8 + 8011624: 4410 add r0, r2 + 8011626: f000 f8dd bl 80117e4 <memcpy1> + 801162a: 2000 movs r0, #0 + 801162c: bd08 pop {r3, pc} + 801162e: 2002 movs r0, #2 + 8011630: e7fc b.n 801162c <SecureElementSetJoinEui+0x14> + 8011632: bf00 nop + 8011634: 20002624 .word 0x20002624 + +08011638 <SecureElementGetJoinEui>: + 8011638: b508 push {r3, lr} + 801163a: b138 cbz r0, 801164c <SecureElementGetJoinEui+0x14> + 801163c: 4b04 ldr r3, [pc, #16] ; (8011650 <SecureElementGetJoinEui+0x18>) + 801163e: 6819 ldr r1, [r3, #0] + 8011640: 2208 movs r2, #8 + 8011642: 4411 add r1, r2 + 8011644: f000 f8ce bl 80117e4 <memcpy1> + 8011648: 2000 movs r0, #0 + 801164a: bd08 pop {r3, pc} + 801164c: 2002 movs r0, #2 + 801164e: e7fc b.n 801164a <SecureElementGetJoinEui+0x12> + 8011650: 20002624 .word 0x20002624 + +08011654 <SecureElementSetDevAddr>: + 8011654: 4b03 ldr r3, [pc, #12] ; (8011664 <SecureElementSetDevAddr+0x10>) + 8011656: 681b ldr r3, [r3, #0] + 8011658: 2802 cmp r0, #2 + 801165a: bf0c ite eq + 801165c: 6119 streq r1, [r3, #16] + 801165e: 6159 strne r1, [r3, #20] + 8011660: 2000 movs r0, #0 + 8011662: 4770 bx lr + 8011664: 20002624 .word 0x20002624 + +08011668 <SecureElementGetDevAddr>: + 8011668: b141 cbz r1, 801167c <SecureElementGetDevAddr+0x14> + 801166a: 4b05 ldr r3, [pc, #20] ; (8011680 <SecureElementGetDevAddr+0x18>) + 801166c: 681b ldr r3, [r3, #0] + 801166e: 2802 cmp r0, #2 + 8011670: bf0c ite eq + 8011672: 691b ldreq r3, [r3, #16] + 8011674: 695b ldrne r3, [r3, #20] + 8011676: 600b str r3, [r1, #0] + 8011678: 2000 movs r0, #0 + 801167a: 4770 bx lr + 801167c: 2002 movs r0, #2 + 801167e: 4770 bx lr + 8011680: 20002624 .word 0x20002624 + +08011684 <PrintIds>: + 8011684: b530 push {r4, r5, lr} + 8011686: b08f sub sp, #60 ; 0x3c + 8011688: 2400 movs r4, #0 + 801168a: 4605 mov r5, r0 + 801168c: a80c add r0, sp, #48 ; 0x30 + 801168e: 9409 str r4, [sp, #36] ; 0x24 + 8011690: f7ff ff8c bl 80115ac <SecureElementGetDevEui> + 8011694: f89d 3037 ldrb.w r3, [sp, #55] ; 0x37 + 8011698: 9307 str r3, [sp, #28] + 801169a: f89d 3036 ldrb.w r3, [sp, #54] ; 0x36 + 801169e: 9306 str r3, [sp, #24] + 80116a0: f89d 3035 ldrb.w r3, [sp, #53] ; 0x35 + 80116a4: 9305 str r3, [sp, #20] + 80116a6: f89d 3034 ldrb.w r3, [sp, #52] ; 0x34 + 80116aa: 9304 str r3, [sp, #16] + 80116ac: f89d 3033 ldrb.w r3, [sp, #51] ; 0x33 + 80116b0: 9303 str r3, [sp, #12] + 80116b2: f89d 3032 ldrb.w r3, [sp, #50] ; 0x32 + 80116b6: 9302 str r3, [sp, #8] + 80116b8: f89d 3031 ldrb.w r3, [sp, #49] ; 0x31 + 80116bc: 9301 str r3, [sp, #4] + 80116be: f89d 3030 ldrb.w r3, [sp, #48] ; 0x30 + 80116c2: 9300 str r3, [sp, #0] + 80116c4: 4622 mov r2, r4 + 80116c6: 4621 mov r1, r4 + 80116c8: 4b1e ldr r3, [pc, #120] ; (8011744 <PrintIds+0xc0>) + 80116ca: 2002 movs r0, #2 + 80116cc: f002 f880 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80116d0: a80a add r0, sp, #40 ; 0x28 + 80116d2: f7ff ffb1 bl 8011638 <SecureElementGetJoinEui> + 80116d6: f89d 302f ldrb.w r3, [sp, #47] ; 0x2f + 80116da: 9307 str r3, [sp, #28] + 80116dc: f89d 302e ldrb.w r3, [sp, #46] ; 0x2e + 80116e0: 9306 str r3, [sp, #24] + 80116e2: f89d 302d ldrb.w r3, [sp, #45] ; 0x2d + 80116e6: 9305 str r3, [sp, #20] + 80116e8: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 80116ec: 9304 str r3, [sp, #16] + 80116ee: f89d 302b ldrb.w r3, [sp, #43] ; 0x2b + 80116f2: 9303 str r3, [sp, #12] + 80116f4: f89d 302a ldrb.w r3, [sp, #42] ; 0x2a + 80116f8: 9302 str r3, [sp, #8] + 80116fa: f89d 3029 ldrb.w r3, [sp, #41] ; 0x29 + 80116fe: 9301 str r3, [sp, #4] + 8011700: f89d 3028 ldrb.w r3, [sp, #40] ; 0x28 + 8011704: 9300 str r3, [sp, #0] + 8011706: 4622 mov r2, r4 + 8011708: 4b0f ldr r3, [pc, #60] ; (8011748 <PrintIds+0xc4>) + 801170a: 4621 mov r1, r4 + 801170c: 2002 movs r0, #2 + 801170e: f002 f85f bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8011712: a909 add r1, sp, #36 ; 0x24 + 8011714: 4628 mov r0, r5 + 8011716: f7ff ffa7 bl 8011668 <SecureElementGetDevAddr> + 801171a: f89d 3024 ldrb.w r3, [sp, #36] ; 0x24 + 801171e: 9303 str r3, [sp, #12] + 8011720: f89d 3025 ldrb.w r3, [sp, #37] ; 0x25 + 8011724: 9302 str r3, [sp, #8] + 8011726: f89d 3026 ldrb.w r3, [sp, #38] ; 0x26 + 801172a: 9301 str r3, [sp, #4] + 801172c: f89d 3027 ldrb.w r3, [sp, #39] ; 0x27 + 8011730: 9300 str r3, [sp, #0] + 8011732: 4622 mov r2, r4 + 8011734: 4b05 ldr r3, [pc, #20] ; (801174c <PrintIds+0xc8>) + 8011736: 4621 mov r1, r4 + 8011738: 2002 movs r0, #2 + 801173a: f002 f849 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 801173e: b00f add sp, #60 ; 0x3c + 8011740: bd30 pop {r4, r5, pc} + 8011742: bf00 nop + 8011744: 08015550 .word 0x08015550 + 8011748: 0801558e .word 0x0801558e + 801174c: 080155cc .word 0x080155cc + +08011750 <SecureElementPrintKeys>: + 8011750: b508 push {r3, lr} + 8011752: 2000 movs r0, #0 + 8011754: f7ff fdea bl 801132c <PrintKey> + 8011758: 2001 movs r0, #1 + 801175a: f7ff fde7 bl 801132c <PrintKey> + 801175e: 2009 movs r0, #9 + 8011760: f7ff fde4 bl 801132c <PrintKey> + 8011764: 2008 movs r0, #8 + 8011766: f7ff fde1 bl 801132c <PrintKey> + 801176a: 2000 movs r0, #0 + 801176c: f7ff ff8a bl 8011684 <PrintIds> + 8011770: 2000 movs r0, #0 + 8011772: bd08 pop {r3, pc} + +08011774 <SecureElementPrintSessionKeys>: + 8011774: b510 push {r4, lr} + 8011776: 4604 mov r4, r0 + 8011778: 200b movs r0, #11 + 801177a: f7ff fdd7 bl 801132c <PrintKey> + 801177e: 200c movs r0, #12 + 8011780: f7ff fdd4 bl 801132c <PrintKey> + 8011784: 2009 movs r0, #9 + 8011786: f7ff fdd1 bl 801132c <PrintKey> + 801178a: 2008 movs r0, #8 + 801178c: f7ff fdce bl 801132c <PrintKey> + 8011790: 200a movs r0, #10 + 8011792: f7ff fdcb bl 801132c <PrintKey> + 8011796: 4620 mov r0, r4 + 8011798: f7ff ff74 bl 8011684 <PrintIds> + 801179c: 2000 movs r0, #0 + 801179e: bd10 pop {r4, pc} + +080117a0 <srand1>: + 80117a0: 4b01 ldr r3, [pc, #4] ; (80117a8 <srand1+0x8>) + 80117a2: 6018 str r0, [r3, #0] + 80117a4: 4770 bx lr + 80117a6: bf00 nop + 80117a8: 200008bc .word 0x200008bc + +080117ac <randr>: + 80117ac: 4a0b ldr r2, [pc, #44] ; (80117dc <randr+0x30>) + 80117ae: b530 push {r4, r5, lr} + 80117b0: 6814 ldr r4, [r2, #0] + 80117b2: 4d0b ldr r5, [pc, #44] ; (80117e0 <randr+0x34>) + 80117b4: f243 0339 movw r3, #12345 ; 0x3039 + 80117b8: fb05 3304 mla r3, r5, r4, r3 + 80117bc: 6013 str r3, [r2, #0] + 80117be: 1a09 subs r1, r1, r0 + 80117c0: f06f 4200 mvn.w r2, #2147483648 ; 0x80000000 + 80117c4: fbb3 f2f2 udiv r2, r3, r2 + 80117c8: ebc2 72c2 rsb r2, r2, r2, lsl #31 + 80117cc: 3101 adds r1, #1 + 80117ce: 1a9b subs r3, r3, r2 + 80117d0: fb93 f2f1 sdiv r2, r3, r1 + 80117d4: fb01 3312 mls r3, r1, r2, r3 + 80117d8: 4418 add r0, r3 + 80117da: bd30 pop {r4, r5, pc} + 80117dc: 200008bc .word 0x200008bc + 80117e0: 41c64e6d .word 0x41c64e6d + +080117e4 <memcpy1>: + 80117e4: 3801 subs r0, #1 + 80117e6: 440a add r2, r1 + 80117e8: 4291 cmp r1, r2 + 80117ea: d100 bne.n 80117ee <memcpy1+0xa> + 80117ec: 4770 bx lr + 80117ee: f811 3b01 ldrb.w r3, [r1], #1 + 80117f2: f800 3f01 strb.w r3, [r0, #1]! + 80117f6: e7f7 b.n 80117e8 <memcpy1+0x4> + +080117f8 <memcpyr>: + 80117f8: 4410 add r0, r2 + 80117fa: 440a add r2, r1 + 80117fc: 4291 cmp r1, r2 + 80117fe: d100 bne.n 8011802 <memcpyr+0xa> + 8011800: 4770 bx lr + 8011802: f811 3b01 ldrb.w r3, [r1], #1 + 8011806: f800 3d01 strb.w r3, [r0, #-1]! + 801180a: e7f7 b.n 80117fc <memcpyr+0x4> + +0801180c <memset1>: + 801180c: f002 bd20 b.w 8014250 <memset> + +08011810 <Crc32>: + 8011810: b530 push {r4, r5, lr} + 8011812: b130 cbz r0, 8011822 <Crc32+0x12> + 8011814: 4d0a ldr r5, [pc, #40] ; (8011840 <Crc32+0x30>) + 8011816: 4401 add r1, r0 + 8011818: f04f 33ff mov.w r3, #4294967295 + 801181c: 4281 cmp r1, r0 + 801181e: d101 bne.n 8011824 <Crc32+0x14> + 8011820: 43d8 mvns r0, r3 + 8011822: bd30 pop {r4, r5, pc} + 8011824: f810 2b01 ldrb.w r2, [r0], #1 + 8011828: 4053 eors r3, r2 + 801182a: 2208 movs r2, #8 + 801182c: f343 0400 sbfx r4, r3, #0, #1 + 8011830: 3a01 subs r2, #1 + 8011832: 402c ands r4, r5 + 8011834: b292 uxth r2, r2 + 8011836: ea84 0353 eor.w r3, r4, r3, lsr #1 + 801183a: 2a00 cmp r2, #0 + 801183c: d1f6 bne.n 801182c <Crc32+0x1c> + 801183e: e7ed b.n 801181c <Crc32+0xc> + 8011840: edb88320 .word 0xedb88320 + +08011844 <RadioCheckRfFrequency>: + 8011844: 2001 movs r0, #1 + 8011846: 4770 bx lr + +08011848 <RadioOnTxTimeoutIrq>: + 8011848: 4b05 ldr r3, [pc, #20] ; (8011860 <RadioOnTxTimeoutIrq+0x18>) + 801184a: f44f 5200 mov.w r2, #8192 ; 0x2000 + 801184e: 629a str r2, [r3, #40] ; 0x28 + 8011850: 4b04 ldr r3, [pc, #16] ; (8011864 <RadioOnTxTimeoutIrq+0x1c>) + 8011852: 681b ldr r3, [r3, #0] + 8011854: b113 cbz r3, 801185c <RadioOnTxTimeoutIrq+0x14> + 8011856: 685b ldr r3, [r3, #4] + 8011858: b103 cbz r3, 801185c <RadioOnTxTimeoutIrq+0x14> + 801185a: 4718 bx r3 + 801185c: 4770 bx lr + 801185e: bf00 nop + 8011860: 48000400 .word 0x48000400 + 8011864: 20002728 .word 0x20002728 + +08011868 <RadioOnRxTimeoutIrq>: + 8011868: 4b05 ldr r3, [pc, #20] ; (8011880 <RadioOnRxTimeoutIrq+0x18>) + 801186a: f44f 5280 mov.w r2, #4096 ; 0x1000 + 801186e: 629a str r2, [r3, #40] ; 0x28 + 8011870: 4b04 ldr r3, [pc, #16] ; (8011884 <RadioOnRxTimeoutIrq+0x1c>) + 8011872: 681b ldr r3, [r3, #0] + 8011874: b113 cbz r3, 801187c <RadioOnRxTimeoutIrq+0x14> + 8011876: 68db ldr r3, [r3, #12] + 8011878: b103 cbz r3, 801187c <RadioOnRxTimeoutIrq+0x14> + 801187a: 4718 bx r3 + 801187c: 4770 bx lr + 801187e: bf00 nop + 8011880: 48000400 .word 0x48000400 + 8011884: 20002728 .word 0x20002728 + +08011888 <RadioLrFhssSetCfg>: + 8011888: 2001 movs r0, #1 + 801188a: 4770 bx lr + +0801188c <RadioLrFhssGetTimeOnAirInMs>: + 801188c: 2001 movs r0, #1 + 801188e: 4770 bx lr + +08011890 <RadioRead>: + 8011890: f001 b948 b.w 8012b24 <SUBGRF_ReadRegister> + +08011894 <RadioWrite>: + 8011894: f001 b936 b.w 8012b04 <SUBGRF_WriteRegister> + +08011898 <RadioTxCw>: + 8011898: b510 push {r4, lr} + 801189a: f001 fe19 bl 80134d0 <SUBGRF_SetRfTxPower> + 801189e: 210e movs r1, #14 + 80118a0: 4604 mov r4, r0 + 80118a2: f640 101f movw r0, #2335 ; 0x91f + 80118a6: f001 f92d bl 8012b04 <SUBGRF_WriteRegister> + 80118aa: 4620 mov r0, r4 + 80118ac: 2101 movs r1, #1 + 80118ae: f001 fdf9 bl 80134a4 <SUBGRF_SetSwitch> + 80118b2: e8bd 4010 ldmia.w sp!, {r4, lr} + 80118b6: f001 bad7 b.w 8012e68 <SUBGRF_SetTxContinuousWave> + ... + +080118bc <RadioSetRxDutyCycle>: + 80118bc: b570 push {r4, r5, r6, lr} + 80118be: 4e0c ldr r6, [pc, #48] ; (80118f0 <RadioSetRxDutyCycle+0x34>) + 80118c0: eb01 0340 add.w r3, r1, r0, lsl #1 + 80118c4: 460d mov r5, r1 + 80118c6: 65b3 str r3, [r6, #88] ; 0x58 + 80118c8: f64f 71ff movw r1, #65535 ; 0xffff + 80118cc: 2300 movs r3, #0 + 80118ce: 4604 mov r4, r0 + 80118d0: 461a mov r2, r3 + 80118d2: 4608 mov r0, r1 + 80118d4: f001 fb5e bl 8012f94 <SUBGRF_SetDioIrqParams> + 80118d8: f896 0056 ldrb.w r0, [r6, #86] ; 0x56 + 80118dc: 2100 movs r1, #0 + 80118de: f001 fde1 bl 80134a4 <SUBGRF_SetSwitch> + 80118e2: 4629 mov r1, r5 + 80118e4: 4620 mov r0, r4 + 80118e6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 80118ea: f001 ba95 b.w 8012e18 <SUBGRF_SetRxDutyCycle> + 80118ee: bf00 nop + 80118f0: 20002744 .word 0x20002744 + +080118f4 <RadioRxBoosted>: + 80118f4: b510 push {r4, lr} + 80118f6: 4604 mov r4, r0 + 80118f8: f001 feaa bl 8013650 <RFW_Is_Init> + 80118fc: 2801 cmp r0, #1 + 80118fe: d11c bne.n 801193a <RadioRxBoosted+0x46> + 8011900: f001 feae bl 8013660 <RFW_ReceiveInit> + 8011904: b134 cbz r4, 8011914 <RadioRxBoosted+0x20> + 8011906: 4812 ldr r0, [pc, #72] ; (8011950 <RadioRxBoosted+0x5c>) + 8011908: 4621 mov r1, r4 + 801190a: f002 fb17 bl 8013f3c <UTIL_TIMER_SetPeriod> + 801190e: 4810 ldr r0, [pc, #64] ; (8011950 <RadioRxBoosted+0x5c>) + 8011910: f002 fada bl 8013ec8 <UTIL_TIMER_Start> + 8011914: 4c0f ldr r4, [pc, #60] ; (8011954 <RadioRxBoosted+0x60>) + 8011916: 4b10 ldr r3, [pc, #64] ; (8011958 <RadioRxBoosted+0x64>) + 8011918: 2100 movs r1, #0 + 801191a: f44f 5280 mov.w r2, #4096 ; 0x1000 + 801191e: 65a1 str r1, [r4, #88] ; 0x58 + 8011920: 619a str r2, [r3, #24] + 8011922: f894 0056 ldrb.w r0, [r4, #86] ; 0x56 + 8011926: f001 fdbd bl 80134a4 <SUBGRF_SetSwitch> + 801192a: 7863 ldrb r3, [r4, #1] + 801192c: b16b cbz r3, 801194a <RadioRxBoosted+0x56> + 801192e: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 8011932: e8bd 4010 ldmia.w sp!, {r4, lr} + 8011936: f001 ba53 b.w 8012de0 <SUBGRF_SetRxBoosted> + 801193a: 2300 movs r3, #0 + 801193c: f240 2162 movw r1, #610 ; 0x262 + 8011940: 461a mov r2, r3 + 8011942: 4608 mov r0, r1 + 8011944: f001 fb26 bl 8012f94 <SUBGRF_SetDioIrqParams> + 8011948: e7dc b.n 8011904 <RadioRxBoosted+0x10> + 801194a: 68a0 ldr r0, [r4, #8] + 801194c: 0180 lsls r0, r0, #6 + 801194e: e7f0 b.n 8011932 <RadioRxBoosted+0x3e> + 8011950: 2000272c .word 0x2000272c + 8011954: 20002744 .word 0x20002744 + 8011958: 48000400 .word 0x48000400 + +0801195c <RadioStandby>: + 801195c: 2000 movs r0, #0 + 801195e: f001 b9bf b.w 8012ce0 <SUBGRF_SetStandby> + ... + +08011964 <RadioGetStatus>: + 8011964: b508 push {r3, lr} + 8011966: f001 f8c7 bl 8012af8 <SUBGRF_GetOperatingMode> + 801196a: 3804 subs r0, #4 + 801196c: b2c0 uxtb r0, r0 + 801196e: 2803 cmp r0, #3 + 8011970: bf96 itet ls + 8011972: 4b02 ldrls r3, [pc, #8] ; (801197c <RadioGetStatus+0x18>) + 8011974: 2000 movhi r0, #0 + 8011976: 5c18 ldrbls r0, [r3, r0] + 8011978: bd08 pop {r3, pc} + 801197a: bf00 nop + 801197c: 08015780 .word 0x08015780 + +08011980 <RadioGetWakeupTime>: + 8011980: b508 push {r3, lr} + 8011982: f001 fdba bl 80134fa <SUBGRF_GetRadioWakeUpTime> + 8011986: 3003 adds r0, #3 + 8011988: bd08 pop {r3, pc} + +0801198a <RadioReadRegisters>: + 801198a: f001 b949 b.w 8012c20 <SUBGRF_ReadRegisters> + +0801198e <RadioWriteRegisters>: + 801198e: f001 b909 b.w 8012ba4 <SUBGRF_WriteRegisters> + +08011992 <RadioRssi>: + 8011992: b508 push {r3, lr} + 8011994: f001 fd00 bl 8013398 <SUBGRF_GetRssiInst> + 8011998: b200 sxth r0, r0 + 801199a: bd08 pop {r3, pc} + +0801199c <RadioSetTxContinuousWave>: + 801199c: b538 push {r3, r4, r5, lr} + 801199e: 460d mov r5, r1 + 80119a0: 4614 mov r4, r2 + 80119a2: f001 fb5d bl 8013060 <SUBGRF_SetRfFrequency> + 80119a6: 4628 mov r0, r5 + 80119a8: f001 fd92 bl 80134d0 <SUBGRF_SetRfTxPower> + 80119ac: 210e movs r1, #14 + 80119ae: 4605 mov r5, r0 + 80119b0: f640 101f movw r0, #2335 ; 0x91f + 80119b4: f001 f8a6 bl 8012b04 <SUBGRF_WriteRegister> + 80119b8: 4628 mov r0, r5 + 80119ba: 2101 movs r1, #1 + 80119bc: 4d07 ldr r5, [pc, #28] ; (80119dc <RadioSetTxContinuousWave+0x40>) + 80119be: f001 fd71 bl 80134a4 <SUBGRF_SetSwitch> + 80119c2: f001 fa51 bl 8012e68 <SUBGRF_SetTxContinuousWave> + 80119c6: f44f 717a mov.w r1, #1000 ; 0x3e8 + 80119ca: 4361 muls r1, r4 + 80119cc: 4628 mov r0, r5 + 80119ce: f002 fab5 bl 8013f3c <UTIL_TIMER_SetPeriod> + 80119d2: 4628 mov r0, r5 + 80119d4: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 80119d8: f002 ba76 b.w 8013ec8 <UTIL_TIMER_Start> + 80119dc: 200027a0 .word 0x200027a0 + +080119e0 <RadioSetChannel>: + 80119e0: f001 bb3e b.w 8013060 <SUBGRF_SetRfFrequency> + +080119e4 <RadioStartCad>: + 80119e4: b508 push {r3, lr} + 80119e6: 4b08 ldr r3, [pc, #32] ; (8011a08 <RadioStartCad+0x24>) + 80119e8: 2100 movs r1, #0 + 80119ea: f893 0056 ldrb.w r0, [r3, #86] ; 0x56 + 80119ee: f001 fd59 bl 80134a4 <SUBGRF_SetSwitch> + 80119f2: 2300 movs r3, #0 + 80119f4: f44f 71c0 mov.w r1, #384 ; 0x180 + 80119f8: 461a mov r2, r3 + 80119fa: 4608 mov r0, r1 + 80119fc: f001 faca bl 8012f94 <SUBGRF_SetDioIrqParams> + 8011a00: e8bd 4008 ldmia.w sp!, {r3, lr} + 8011a04: f001 ba24 b.w 8012e50 <SUBGRF_SetCad> + 8011a08: 20002744 .word 0x20002744 + +08011a0c <RadioRx>: + 8011a0c: b510 push {r4, lr} + 8011a0e: 4604 mov r4, r0 + 8011a10: f001 fe1e bl 8013650 <RFW_Is_Init> + 8011a14: 2801 cmp r0, #1 + 8011a16: d11c bne.n 8011a52 <RadioRx+0x46> + 8011a18: f001 fe22 bl 8013660 <RFW_ReceiveInit> + 8011a1c: b134 cbz r4, 8011a2c <RadioRx+0x20> + 8011a1e: 4812 ldr r0, [pc, #72] ; (8011a68 <RadioRx+0x5c>) + 8011a20: 4621 mov r1, r4 + 8011a22: f002 fa8b bl 8013f3c <UTIL_TIMER_SetPeriod> + 8011a26: 4810 ldr r0, [pc, #64] ; (8011a68 <RadioRx+0x5c>) + 8011a28: f002 fa4e bl 8013ec8 <UTIL_TIMER_Start> + 8011a2c: 4c0f ldr r4, [pc, #60] ; (8011a6c <RadioRx+0x60>) + 8011a2e: 4b10 ldr r3, [pc, #64] ; (8011a70 <RadioRx+0x64>) + 8011a30: 2100 movs r1, #0 + 8011a32: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8011a36: 65a1 str r1, [r4, #88] ; 0x58 + 8011a38: 619a str r2, [r3, #24] + 8011a3a: f894 0056 ldrb.w r0, [r4, #86] ; 0x56 + 8011a3e: f001 fd31 bl 80134a4 <SUBGRF_SetSwitch> + 8011a42: 7863 ldrb r3, [r4, #1] + 8011a44: b16b cbz r3, 8011a62 <RadioRx+0x56> + 8011a46: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 8011a4a: e8bd 4010 ldmia.w sp!, {r4, lr} + 8011a4e: f001 b97d b.w 8012d4c <SUBGRF_SetRx> + 8011a52: 2300 movs r3, #0 + 8011a54: f240 2162 movw r1, #610 ; 0x262 + 8011a58: 461a mov r2, r3 + 8011a5a: 4608 mov r0, r1 + 8011a5c: f001 fa9a bl 8012f94 <SUBGRF_SetDioIrqParams> + 8011a60: e7dc b.n 8011a1c <RadioRx+0x10> + 8011a62: 68a0 ldr r0, [r4, #8] + 8011a64: 0180 lsls r0, r0, #6 + 8011a66: e7f0 b.n 8011a4a <RadioRx+0x3e> + 8011a68: 2000272c .word 0x2000272c + 8011a6c: 20002744 .word 0x20002744 + 8011a70: 48000400 .word 0x48000400 + +08011a74 <RadioSleep>: + 8011a74: b508 push {r3, lr} + 8011a76: f04f 0004 mov.w r0, #4 + 8011a7a: f001 f917 bl 8012cac <SUBGRF_SetSleep> + 8011a7e: e8bd 4008 ldmia.w sp!, {r3, lr} + 8011a82: 2002 movs r0, #2 + 8011a84: f7f1 b86a b.w 8002b5c <HAL_Delay> + +08011a88 <RadioRandom>: + 8011a88: b508 push {r3, lr} + 8011a8a: 2300 movs r3, #0 + 8011a8c: 461a mov r2, r3 + 8011a8e: 4619 mov r1, r3 + 8011a90: 4618 mov r0, r3 + 8011a92: f001 fa7f bl 8012f94 <SUBGRF_SetDioIrqParams> + 8011a96: e8bd 4008 ldmia.w sp!, {r3, lr} + 8011a9a: f001 b96d b.w 8012d78 <SUBGRF_GetRandom> + ... + +08011aa0 <RadioInit>: + 8011aa0: 4b1d ldr r3, [pc, #116] ; (8011b18 <RadioInit+0x78>) + 8011aa2: b573 push {r0, r1, r4, r5, r6, lr} + 8011aa4: 4d1d ldr r5, [pc, #116] ; (8011b1c <RadioInit+0x7c>) + 8011aa6: 6018 str r0, [r3, #0] + 8011aa8: 2400 movs r4, #0 + 8011aaa: 481d ldr r0, [pc, #116] ; (8011b20 <RadioInit+0x80>) + 8011aac: 706c strb r4, [r5, #1] + 8011aae: e9c5 4401 strd r4, r4, [r5, #4] + 8011ab2: 65ac str r4, [r5, #88] ; 0x58 + 8011ab4: f001 fa98 bl 8012fe8 <SUBGRF_Init> + 8011ab8: 81ac strh r4, [r5, #12] + 8011aba: f001 fa03 bl 8012ec4 <SUBGRF_SetRegulatorMode> + 8011abe: 4621 mov r1, r4 + 8011ac0: 4620 mov r0, r4 + 8011ac2: f001 fc4b bl 801335c <SUBGRF_SetBufferBaseAddress> + 8011ac6: 4621 mov r1, r4 + 8011ac8: 2204 movs r2, #4 + 8011aca: 2001 movs r0, #1 + 8011acc: f001 fafc bl 80130c8 <SUBGRF_SetTxParams> + 8011ad0: 4e14 ldr r6, [pc, #80] ; (8011b24 <RadioInit+0x84>) + 8011ad2: 4d15 ldr r5, [pc, #84] ; (8011b28 <RadioInit+0x88>) + 8011ad4: f64f 71ff movw r1, #65535 ; 0xffff + 8011ad8: 4623 mov r3, r4 + 8011ada: 4622 mov r2, r4 + 8011adc: 4608 mov r0, r1 + 8011ade: f001 fa59 bl 8012f94 <SUBGRF_SetDioIrqParams> + 8011ae2: f7ff ffc7 bl 8011a74 <RadioSleep> + 8011ae6: 4622 mov r2, r4 + 8011ae8: 4b10 ldr r3, [pc, #64] ; (8011b2c <RadioInit+0x8c>) + 8011aea: 9400 str r4, [sp, #0] + 8011aec: f04f 31ff mov.w r1, #4294967295 + 8011af0: 4630 mov r0, r6 + 8011af2: f002 f93d bl 8013d70 <UTIL_TIMER_Create> + 8011af6: 4b0e ldr r3, [pc, #56] ; (8011b30 <RadioInit+0x90>) + 8011af8: 9400 str r4, [sp, #0] + 8011afa: 4622 mov r2, r4 + 8011afc: f04f 31ff mov.w r1, #4294967295 + 8011b00: 4628 mov r0, r5 + 8011b02: f002 f935 bl 8013d70 <UTIL_TIMER_Create> + 8011b06: 4630 mov r0, r6 + 8011b08: f002 f990 bl 8013e2c <UTIL_TIMER_Stop> + 8011b0c: 4628 mov r0, r5 + 8011b0e: b002 add sp, #8 + 8011b10: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8011b14: f002 b98a b.w 8013e2c <UTIL_TIMER_Stop> + 8011b18: 20002728 .word 0x20002728 + 8011b1c: 20002744 .word 0x20002744 + 8011b20: 08012ae9 .word 0x08012ae9 + 8011b24: 200027a0 .word 0x200027a0 + 8011b28: 2000272c .word 0x2000272c + 8011b2c: 08011849 .word 0x08011849 + 8011b30: 08011869 .word 0x08011869 + +08011b34 <RadioSetMaxPayloadLength>: + 8011b34: 2801 cmp r0, #1 + 8011b36: 4808 ldr r0, [pc, #32] ; (8011b58 <RadioSetMaxPayloadLength+0x24>) + 8011b38: d105 bne.n 8011b46 <RadioSetMaxPayloadLength+0x12> + 8011b3a: 4b08 ldr r3, [pc, #32] ; (8011b5c <RadioSetMaxPayloadLength+0x28>) + 8011b3c: 77c1 strb r1, [r0, #31] + 8011b3e: 7019 strb r1, [r3, #0] + 8011b40: 300e adds r0, #14 + 8011b42: f001 bba7 b.w 8013294 <SUBGRF_SetPacketParams> + 8011b46: 7d43 ldrb r3, [r0, #21] + 8011b48: 2b01 cmp r3, #1 + 8011b4a: d103 bne.n 8011b54 <RadioSetMaxPayloadLength+0x20> + 8011b4c: 4b03 ldr r3, [pc, #12] ; (8011b5c <RadioSetMaxPayloadLength+0x28>) + 8011b4e: 7581 strb r1, [r0, #22] + 8011b50: 7019 strb r1, [r3, #0] + 8011b52: e7f5 b.n 8011b40 <RadioSetMaxPayloadLength+0xc> + 8011b54: 4770 bx lr + 8011b56: bf00 nop + 8011b58: 20002744 .word 0x20002744 + 8011b5c: 200008c0 .word 0x200008c0 + +08011b60 <RadioSetPublicNetwork>: + 8011b60: 4b0d ldr r3, [pc, #52] ; (8011b98 <RadioSetPublicNetwork+0x38>) + 8011b62: b510 push {r4, lr} + 8011b64: 4604 mov r4, r0 + 8011b66: 7318 strb r0, [r3, #12] + 8011b68: 7358 strb r0, [r3, #13] + 8011b6a: 2001 movs r0, #1 + 8011b6c: f000 f816 bl 8011b9c <RadioSetModem> + 8011b70: b15c cbz r4, 8011b8a <RadioSetPublicNetwork+0x2a> + 8011b72: 2134 movs r1, #52 ; 0x34 + 8011b74: f44f 60e8 mov.w r0, #1856 ; 0x740 + 8011b78: f000 ffc4 bl 8012b04 <SUBGRF_WriteRegister> + 8011b7c: 2144 movs r1, #68 ; 0x44 + 8011b7e: e8bd 4010 ldmia.w sp!, {r4, lr} + 8011b82: f240 7041 movw r0, #1857 ; 0x741 + 8011b86: f000 bfbd b.w 8012b04 <SUBGRF_WriteRegister> + 8011b8a: 2114 movs r1, #20 + 8011b8c: f44f 60e8 mov.w r0, #1856 ; 0x740 + 8011b90: f000 ffb8 bl 8012b04 <SUBGRF_WriteRegister> + 8011b94: 2124 movs r1, #36 ; 0x24 + 8011b96: e7f2 b.n 8011b7e <RadioSetPublicNetwork+0x1e> + 8011b98: 20002744 .word 0x20002744 + +08011b9c <RadioSetModem>: + 8011b9c: b538 push {r3, r4, r5, lr} + 8011b9e: 4c11 ldr r4, [pc, #68] ; (8011be4 <RadioSetModem+0x48>) + 8011ba0: 4605 mov r5, r0 + 8011ba2: 7020 strb r0, [r4, #0] + 8011ba4: f001 fd61 bl 801366a <RFW_SetRadioModem> + 8011ba8: 2d05 cmp r5, #5 + 8011baa: d804 bhi.n 8011bb6 <RadioSetModem+0x1a> + 8011bac: e8df f005 tbb [pc, r5] + 8011bb0: 17030b09 .word 0x17030b09 + 8011bb4: 0917 .short 0x0917 + 8011bb6: 2003 movs r0, #3 + 8011bb8: f001 fa70 bl 801309c <SUBGRF_SetPacketType> + 8011bbc: 2300 movs r3, #0 + 8011bbe: 7363 strb r3, [r4, #13] + 8011bc0: bd38 pop {r3, r4, r5, pc} + 8011bc2: 2000 movs r0, #0 + 8011bc4: e7f8 b.n 8011bb8 <RadioSetModem+0x1c> + 8011bc6: 2001 movs r0, #1 + 8011bc8: f001 fa68 bl 801309c <SUBGRF_SetPacketType> + 8011bcc: 7b20 ldrb r0, [r4, #12] + 8011bce: 7b63 ldrb r3, [r4, #13] + 8011bd0: 4283 cmp r3, r0 + 8011bd2: d0f5 beq.n 8011bc0 <RadioSetModem+0x24> + 8011bd4: 7360 strb r0, [r4, #13] + 8011bd6: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 8011bda: f7ff bfc1 b.w 8011b60 <RadioSetPublicNetwork> + 8011bde: 2002 movs r0, #2 + 8011be0: e7ea b.n 8011bb8 <RadioSetModem+0x1c> + 8011be2: bf00 nop + 8011be4: 20002744 .word 0x20002744 + +08011be8 <RadioSetTxGenericConfig>: + 8011be8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8011bec: 461e mov r6, r3 + 8011bee: b087 sub sp, #28 + 8011bf0: 2300 movs r3, #0 + 8011bf2: 4605 mov r5, r0 + 8011bf4: e9cd 3301 strd r3, r3, [sp, #4] + 8011bf8: 460c mov r4, r1 + 8011bfa: 4617 mov r7, r2 + 8011bfc: f001 fd27 bl 801364e <RFW_DeInit> + 8011c00: 2d03 cmp r5, #3 + 8011c02: d861 bhi.n 8011cc8 <RadioSetTxGenericConfig+0xe0> + 8011c04: e8df f015 tbh [pc, r5, lsl #1] + 8011c08: 00c3007b .word 0x00c3007b + 8011c0c: 0004010e .word 0x0004010e + 8011c10: 7ca2 ldrb r2, [r4, #18] + 8011c12: 2a08 cmp r2, #8 + 8011c14: d904 bls.n 8011c20 <RadioSetTxGenericConfig+0x38> + 8011c16: f04f 30ff mov.w r0, #4294967295 + 8011c1a: b007 add sp, #28 + 8011c1c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8011c20: 68a1 ldr r1, [r4, #8] + 8011c22: a801 add r0, sp, #4 + 8011c24: f001 fedc bl 80139e0 <UTIL_MEM_cpy_8> + 8011c28: 6821 ldr r1, [r4, #0] + 8011c2a: 2900 cmp r1, #0 + 8011c2c: d0f3 beq.n 8011c16 <RadioSetTxGenericConfig+0x2e> + 8011c2e: f242 7210 movw r2, #10000 ; 0x2710 + 8011c32: 4291 cmp r1, r2 + 8011c34: 7ce3 ldrb r3, [r4, #19] + 8011c36: 4d86 ldr r5, [pc, #536] ; (8011e50 <RadioSetTxGenericConfig+0x268>) + 8011c38: d851 bhi.n 8011cde <RadioSetTxGenericConfig+0xf6> + 8011c3a: 2203 movs r2, #3 + 8011c3c: 73aa strb r2, [r5, #14] + 8011c3e: f885 2038 strb.w r2, [r5, #56] ; 0x38 + 8011c42: 63e9 str r1, [r5, #60] ; 0x3c + 8011c44: f885 3044 strb.w r3, [r5, #68] ; 0x44 + 8011c48: f04f 0802 mov.w r8, #2 + 8011c4c: 6863 ldr r3, [r4, #4] + 8011c4e: 7da1 ldrb r1, [r4, #22] + 8011c50: 00db lsls r3, r3, #3 + 8011c52: 822b strh r3, [r5, #16] + 8011c54: 2304 movs r3, #4 + 8011c56: 74ab strb r3, [r5, #18] + 8011c58: 7ca3 ldrb r3, [r4, #18] + 8011c5a: 00db lsls r3, r3, #3 + 8011c5c: 74eb strb r3, [r5, #19] + 8011c5e: 2902 cmp r1, #2 + 8011c60: f04f 0300 mov.w r3, #0 + 8011c64: 752b strb r3, [r5, #20] + 8011c66: 7d63 ldrb r3, [r4, #21] + 8011c68: d002 beq.n 8011c70 <RadioSetTxGenericConfig+0x88> + 8011c6a: 7d22 ldrb r2, [r4, #20] + 8011c6c: 2a02 cmp r2, #2 + 8011c6e: d142 bne.n 8011cf6 <RadioSetTxGenericConfig+0x10e> + 8011c70: f103 020f add.w r2, r3, #15 + 8011c74: b2d2 uxtb r2, r2 + 8011c76: 2a01 cmp r2, #1 + 8011c78: d901 bls.n 8011c7e <RadioSetTxGenericConfig+0x96> + 8011c7a: 2b01 cmp r3, #1 + 8011c7c: d1cb bne.n 8011c16 <RadioSetTxGenericConfig+0x2e> + 8011c7e: 4b75 ldr r3, [pc, #468] ; (8011e54 <RadioSetTxGenericConfig+0x26c>) + 8011c80: 4a75 ldr r2, [pc, #468] ; (8011e58 <RadioSetTxGenericConfig+0x270>) + 8011c82: 6819 ldr r1, [r3, #0] + 8011c84: 9403 str r4, [sp, #12] + 8011c86: f04f 0901 mov.w r9, #1 + 8011c8a: a803 add r0, sp, #12 + 8011c8c: f88d 9014 strb.w r9, [sp, #20] + 8011c90: f001 fcda bl 8013648 <RFW_Init> + 8011c94: 2800 cmp r0, #0 + 8011c96: d1be bne.n 8011c16 <RadioSetTxGenericConfig+0x2e> + 8011c98: 7628 strb r0, [r5, #24] + 8011c9a: f885 9017 strb.w r9, [r5, #23] + 8011c9e: 7568 strb r0, [r5, #21] + 8011ca0: f7ff fe5c bl 801195c <RadioStandby> + 8011ca4: 4640 mov r0, r8 + 8011ca6: f7ff ff79 bl 8011b9c <RadioSetModem> + 8011caa: 486c ldr r0, [pc, #432] ; (8011e5c <RadioSetTxGenericConfig+0x274>) + 8011cac: f001 fa86 bl 80131bc <SUBGRF_SetModulationParams> + 8011cb0: 486b ldr r0, [pc, #428] ; (8011e60 <RadioSetTxGenericConfig+0x278>) + 8011cb2: f001 faef bl 8013294 <SUBGRF_SetPacketParams> + 8011cb6: a801 add r0, sp, #4 + 8011cb8: f000 ff84 bl 8012bc4 <SUBGRF_SetSyncWord> + 8011cbc: 8a20 ldrh r0, [r4, #16] + 8011cbe: f000 ff55 bl 8012b6c <SUBGRF_SetWhiteningSeed> + 8011cc2: 89a0 ldrh r0, [r4, #12] + 8011cc4: f000 ff9a bl 8012bfc <SUBGRF_SetCrcPolynomial> + 8011cc8: 4638 mov r0, r7 + 8011cca: f001 fc01 bl 80134d0 <SUBGRF_SetRfTxPower> + 8011cce: 4c60 ldr r4, [pc, #384] ; (8011e50 <RadioSetTxGenericConfig+0x268>) + 8011cd0: f884 0056 strb.w r0, [r4, #86] ; 0x56 + 8011cd4: f001 fcc0 bl 8013658 <RFW_SetAntSwitch> + 8011cd8: 6066 str r6, [r4, #4] + 8011cda: 2000 movs r0, #0 + 8011cdc: e79d b.n 8011c1a <RadioSetTxGenericConfig+0x32> + 8011cde: f04f 0800 mov.w r8, #0 + 8011ce2: 63e9 str r1, [r5, #60] ; 0x3c + 8011ce4: 0889 lsrs r1, r1, #2 + 8011ce6: f885 800e strb.w r8, [r5, #14] + 8011cea: f885 8038 strb.w r8, [r5, #56] ; 0x38 + 8011cee: f885 3044 strb.w r3, [r5, #68] ; 0x44 + 8011cf2: 6429 str r1, [r5, #64] ; 0x40 + 8011cf4: e7aa b.n 8011c4c <RadioSetTxGenericConfig+0x64> + 8011cf6: 75eb strb r3, [r5, #23] + 8011cf8: 7629 strb r1, [r5, #24] + 8011cfa: 756a strb r2, [r5, #21] + 8011cfc: e7d0 b.n 8011ca0 <RadioSetTxGenericConfig+0xb8> + 8011cfe: 6823 ldr r3, [r4, #0] + 8011d00: 2b00 cmp r3, #0 + 8011d02: d088 beq.n 8011c16 <RadioSetTxGenericConfig+0x2e> + 8011d04: 7ca2 ldrb r2, [r4, #18] + 8011d06: 2a08 cmp r2, #8 + 8011d08: d885 bhi.n 8011c16 <RadioSetTxGenericConfig+0x2e> + 8011d0a: 4d51 ldr r5, [pc, #324] ; (8011e50 <RadioSetTxGenericConfig+0x268>) + 8011d0c: 68a1 ldr r1, [r4, #8] + 8011d0e: a801 add r0, sp, #4 + 8011d10: f001 fe66 bl 80139e0 <UTIL_MEM_cpy_8> + 8011d14: 2300 movs r3, #0 + 8011d16: f885 3038 strb.w r3, [r5, #56] ; 0x38 + 8011d1a: 6822 ldr r2, [r4, #0] + 8011d1c: 63ea str r2, [r5, #60] ; 0x3c + 8011d1e: 7ce2 ldrb r2, [r4, #19] + 8011d20: f885 2044 strb.w r2, [r5, #68] ; 0x44 + 8011d24: 69a2 ldr r2, [r4, #24] + 8011d26: 73ab strb r3, [r5, #14] + 8011d28: 642a str r2, [r5, #64] ; 0x40 + 8011d2a: 6862 ldr r2, [r4, #4] + 8011d2c: 7da1 ldrb r1, [r4, #22] + 8011d2e: 00d2 lsls r2, r2, #3 + 8011d30: 822a strh r2, [r5, #16] + 8011d32: 2204 movs r2, #4 + 8011d34: 74aa strb r2, [r5, #18] + 8011d36: 7ca2 ldrb r2, [r4, #18] + 8011d38: 752b strb r3, [r5, #20] + 8011d3a: 00d2 lsls r2, r2, #3 + 8011d3c: 2902 cmp r1, #2 + 8011d3e: 7d63 ldrb r3, [r4, #21] + 8011d40: 74ea strb r2, [r5, #19] + 8011d42: d002 beq.n 8011d4a <RadioSetTxGenericConfig+0x162> + 8011d44: 7d22 ldrb r2, [r4, #20] + 8011d46: 2a02 cmp r2, #2 + 8011d48: d11d bne.n 8011d86 <RadioSetTxGenericConfig+0x19e> + 8011d4a: f103 020f add.w r2, r3, #15 + 8011d4e: b2d2 uxtb r2, r2 + 8011d50: 2a01 cmp r2, #1 + 8011d52: d902 bls.n 8011d5a <RadioSetTxGenericConfig+0x172> + 8011d54: 2b01 cmp r3, #1 + 8011d56: f47f af5e bne.w 8011c16 <RadioSetTxGenericConfig+0x2e> + 8011d5a: 4b3e ldr r3, [pc, #248] ; (8011e54 <RadioSetTxGenericConfig+0x26c>) + 8011d5c: 4a3e ldr r2, [pc, #248] ; (8011e58 <RadioSetTxGenericConfig+0x270>) + 8011d5e: 6819 ldr r1, [r3, #0] + 8011d60: 9403 str r4, [sp, #12] + 8011d62: f04f 0801 mov.w r8, #1 + 8011d66: a803 add r0, sp, #12 + 8011d68: f88d 8014 strb.w r8, [sp, #20] + 8011d6c: f001 fc6c bl 8013648 <RFW_Init> + 8011d70: 2800 cmp r0, #0 + 8011d72: f47f af50 bne.w 8011c16 <RadioSetTxGenericConfig+0x2e> + 8011d76: 7628 strb r0, [r5, #24] + 8011d78: f885 8017 strb.w r8, [r5, #23] + 8011d7c: 7568 strb r0, [r5, #21] + 8011d7e: f7ff fded bl 801195c <RadioStandby> + 8011d82: 2000 movs r0, #0 + 8011d84: e78f b.n 8011ca6 <RadioSetTxGenericConfig+0xbe> + 8011d86: 75eb strb r3, [r5, #23] + 8011d88: 7629 strb r1, [r5, #24] + 8011d8a: 756a strb r2, [r5, #21] + 8011d8c: e7f7 b.n 8011d7e <RadioSetTxGenericConfig+0x196> + 8011d8e: 4d30 ldr r5, [pc, #192] ; (8011e50 <RadioSetTxGenericConfig+0x268>) + 8011d90: 2101 movs r1, #1 + 8011d92: f885 1038 strb.w r1, [r5, #56] ; 0x38 + 8011d96: 7822 ldrb r2, [r4, #0] + 8011d98: f885 2050 strb.w r2, [r5, #80] ; 0x50 + 8011d9c: 7863 ldrb r3, [r4, #1] + 8011d9e: f885 3051 strb.w r3, [r5, #81] ; 0x51 + 8011da2: 78a3 ldrb r3, [r4, #2] + 8011da4: f885 3052 strb.w r3, [r5, #82] ; 0x52 + 8011da8: 78e3 ldrb r3, [r4, #3] + 8011daa: 428b cmp r3, r1 + 8011dac: d002 beq.n 8011db4 <RadioSetTxGenericConfig+0x1cc> + 8011dae: 2b02 cmp r3, #2 + 8011db0: d003 beq.n 8011dba <RadioSetTxGenericConfig+0x1d2> + 8011db2: b93b cbnz r3, 8011dc4 <RadioSetTxGenericConfig+0x1dc> + 8011db4: f885 3053 strb.w r3, [r5, #83] ; 0x53 + 8011db8: e004 b.n 8011dc4 <RadioSetTxGenericConfig+0x1dc> + 8011dba: 3a0b subs r2, #11 + 8011dbc: 2a01 cmp r2, #1 + 8011dbe: d829 bhi.n 8011e14 <RadioSetTxGenericConfig+0x22c> + 8011dc0: f885 1053 strb.w r1, [r5, #83] ; 0x53 + 8011dc4: f04f 0801 mov.w r8, #1 + 8011dc8: f885 800e strb.w r8, [r5, #14] + 8011dcc: 88a3 ldrh r3, [r4, #4] + 8011dce: 83ab strh r3, [r5, #28] + 8011dd0: 79a3 ldrb r3, [r4, #6] + 8011dd2: 77ab strb r3, [r5, #30] + 8011dd4: 79e3 ldrb r3, [r4, #7] + 8011dd6: f885 3020 strb.w r3, [r5, #32] + 8011dda: 7a23 ldrb r3, [r4, #8] + 8011ddc: f885 3021 strb.w r3, [r5, #33] ; 0x21 + 8011de0: f7ff fdbc bl 801195c <RadioStandby> + 8011de4: 4640 mov r0, r8 + 8011de6: f7ff fed9 bl 8011b9c <RadioSetModem> + 8011dea: 481c ldr r0, [pc, #112] ; (8011e5c <RadioSetTxGenericConfig+0x274>) + 8011dec: f001 f9e6 bl 80131bc <SUBGRF_SetModulationParams> + 8011df0: 481b ldr r0, [pc, #108] ; (8011e60 <RadioSetTxGenericConfig+0x278>) + 8011df2: f001 fa4f bl 8013294 <SUBGRF_SetPacketParams> + 8011df6: f895 3051 ldrb.w r3, [r5, #81] ; 0x51 + 8011dfa: 2b06 cmp r3, #6 + 8011dfc: f640 0089 movw r0, #2185 ; 0x889 + 8011e00: d10a bne.n 8011e18 <RadioSetTxGenericConfig+0x230> + 8011e02: f000 fe8f bl 8012b24 <SUBGRF_ReadRegister> + 8011e06: f000 01fb and.w r1, r0, #251 ; 0xfb + 8011e0a: f640 0089 movw r0, #2185 ; 0x889 + 8011e0e: f000 fe79 bl 8012b04 <SUBGRF_WriteRegister> + 8011e12: e759 b.n 8011cc8 <RadioSetTxGenericConfig+0xe0> + 8011e14: 2300 movs r3, #0 + 8011e16: e7cd b.n 8011db4 <RadioSetTxGenericConfig+0x1cc> + 8011e18: f000 fe84 bl 8012b24 <SUBGRF_ReadRegister> + 8011e1c: f040 0104 orr.w r1, r0, #4 + 8011e20: b2c9 uxtb r1, r1 + 8011e22: e7f2 b.n 8011e0a <RadioSetTxGenericConfig+0x222> + 8011e24: 6823 ldr r3, [r4, #0] + 8011e26: 3b01 subs r3, #1 + 8011e28: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 8011e2c: f4bf aef3 bcs.w 8011c16 <RadioSetTxGenericConfig+0x2e> + 8011e30: 2003 movs r0, #3 + 8011e32: f7ff feb3 bl 8011b9c <RadioSetModem> + 8011e36: 4806 ldr r0, [pc, #24] ; (8011e50 <RadioSetTxGenericConfig+0x268>) + 8011e38: 2302 movs r3, #2 + 8011e3a: f880 3038 strb.w r3, [r0, #56] ; 0x38 + 8011e3e: 6823 ldr r3, [r4, #0] + 8011e40: 6483 str r3, [r0, #72] ; 0x48 + 8011e42: 2316 movs r3, #22 + 8011e44: f880 304c strb.w r3, [r0, #76] ; 0x4c + 8011e48: 3038 adds r0, #56 ; 0x38 + 8011e4a: f001 f9b7 bl 80131bc <SUBGRF_SetModulationParams> + 8011e4e: e73b b.n 8011cc8 <RadioSetTxGenericConfig+0xe0> + 8011e50: 20002744 .word 0x20002744 + 8011e54: 20002728 .word 0x20002728 + 8011e58: 200027a0 .word 0x200027a0 + 8011e5c: 2000277c .word 0x2000277c + 8011e60: 20002752 .word 0x20002752 + +08011e64 <RadioSetRxGenericConfig>: + 8011e64: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8011e68: 2600 movs r6, #0 + 8011e6a: b086 sub sp, #24 + 8011e6c: 461f mov r7, r3 + 8011e6e: 4614 mov r4, r2 + 8011e70: e9cd 6601 strd r6, r6, [sp, #4] + 8011e74: 4680 mov r8, r0 + 8011e76: 460d mov r5, r1 + 8011e78: f001 fbe9 bl 801364e <RFW_DeInit> + 8011e7c: 42b4 cmp r4, r6 + 8011e7e: 4c76 ldr r4, [pc, #472] ; (8012058 <RadioSetRxGenericConfig+0x1f4>) + 8011e80: bf16 itet ne + 8011e82: 2301 movne r3, #1 + 8011e84: 4633 moveq r3, r6 + 8011e86: 4637 movne r7, r6 + 8011e88: 7063 strb r3, [r4, #1] + 8011e8a: f1b8 0f00 cmp.w r8, #0 + 8011e8e: d006 beq.n 8011e9e <RadioSetRxGenericConfig+0x3a> + 8011e90: f1b8 0f01 cmp.w r8, #1 + 8011e94: d07c beq.n 8011f90 <RadioSetRxGenericConfig+0x12c> + 8011e96: 2000 movs r0, #0 + 8011e98: b006 add sp, #24 + 8011e9a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8011e9e: 68ab ldr r3, [r5, #8] + 8011ea0: 2b00 cmp r3, #0 + 8011ea2: f000 80d6 beq.w 8012052 <RadioSetRxGenericConfig+0x1ee> + 8011ea6: 68eb ldr r3, [r5, #12] + 8011ea8: 2b00 cmp r3, #0 + 8011eaa: f000 80d2 beq.w 8012052 <RadioSetRxGenericConfig+0x1ee> + 8011eae: 7faa ldrb r2, [r5, #30] + 8011eb0: 2a08 cmp r2, #8 + 8011eb2: f200 80ce bhi.w 8012052 <RadioSetRxGenericConfig+0x1ee> + 8011eb6: 6929 ldr r1, [r5, #16] + 8011eb8: a801 add r0, sp, #4 + 8011eba: f001 fd91 bl 80139e0 <UTIL_MEM_cpy_8> + 8011ebe: 6828 ldr r0, [r5, #0] + 8011ec0: 3800 subs r0, #0 + 8011ec2: bf18 it ne + 8011ec4: 2001 movne r0, #1 + 8011ec6: f000 ffd9 bl 8012e7c <SUBGRF_SetStopRxTimerOnPreambleDetect> + 8011eca: f884 8038 strb.w r8, [r4, #56] ; 0x38 + 8011ece: 68ab ldr r3, [r5, #8] + 8011ed0: 63e3 str r3, [r4, #60] ; 0x3c + 8011ed2: f895 3020 ldrb.w r3, [r5, #32] + 8011ed6: f884 3044 strb.w r3, [r4, #68] ; 0x44 + 8011eda: 6868 ldr r0, [r5, #4] + 8011edc: f001 fb5a bl 8013594 <SUBGRF_GetFskBandwidthRegValue> + 8011ee0: f884 800e strb.w r8, [r4, #14] + 8011ee4: f884 0045 strb.w r0, [r4, #69] ; 0x45 + 8011ee8: 68eb ldr r3, [r5, #12] + 8011eea: 00db lsls r3, r3, #3 + 8011eec: 8223 strh r3, [r4, #16] + 8011eee: 7feb ldrb r3, [r5, #31] + 8011ef0: 74a3 strb r3, [r4, #18] + 8011ef2: 7fab ldrb r3, [r5, #30] + 8011ef4: 00db lsls r3, r3, #3 + 8011ef6: 74e3 strb r3, [r4, #19] + 8011ef8: f895 3021 ldrb.w r3, [r5, #33] ; 0x21 + 8011efc: 7523 strb r3, [r4, #20] + 8011efe: f895 3022 ldrb.w r3, [r5, #34] ; 0x22 + 8011f02: 2b00 cmp r3, #0 + 8011f04: d13e bne.n 8011f84 <RadioSetRxGenericConfig+0x120> + 8011f06: 7d2a ldrb r2, [r5, #20] + 8011f08: f895 1024 ldrb.w r1, [r5, #36] ; 0x24 + 8011f0c: 75a2 strb r2, [r4, #22] + 8011f0e: 2902 cmp r1, #2 + 8011f10: f895 2023 ldrb.w r2, [r5, #35] ; 0x23 + 8011f14: d001 beq.n 8011f1a <RadioSetRxGenericConfig+0xb6> + 8011f16: 2b02 cmp r3, #2 + 8011f18: d136 bne.n 8011f88 <RadioSetRxGenericConfig+0x124> + 8011f1a: f102 030f add.w r3, r2, #15 + 8011f1e: b2db uxtb r3, r3 + 8011f20: 2b01 cmp r3, #1 + 8011f22: d902 bls.n 8011f2a <RadioSetRxGenericConfig+0xc6> + 8011f24: 2a01 cmp r2, #1 + 8011f26: f040 8094 bne.w 8012052 <RadioSetRxGenericConfig+0x1ee> + 8011f2a: 2300 movs r3, #0 + 8011f2c: f88d 3014 strb.w r3, [sp, #20] + 8011f30: 4b4a ldr r3, [pc, #296] ; (801205c <RadioSetRxGenericConfig+0x1f8>) + 8011f32: 4a4b ldr r2, [pc, #300] ; (8012060 <RadioSetRxGenericConfig+0x1fc>) + 8011f34: 6819 ldr r1, [r3, #0] + 8011f36: 9504 str r5, [sp, #16] + 8011f38: a803 add r0, sp, #12 + 8011f3a: f001 fb85 bl 8013648 <RFW_Init> + 8011f3e: 2800 cmp r0, #0 + 8011f40: f040 8087 bne.w 8012052 <RadioSetRxGenericConfig+0x1ee> + 8011f44: 2301 movs r3, #1 + 8011f46: 7620 strb r0, [r4, #24] + 8011f48: 75e3 strb r3, [r4, #23] + 8011f4a: 7560 strb r0, [r4, #21] + 8011f4c: f7ff fd06 bl 801195c <RadioStandby> + 8011f50: 2000 movs r0, #0 + 8011f52: f7ff fe23 bl 8011b9c <RadioSetModem> + 8011f56: 4843 ldr r0, [pc, #268] ; (8012064 <RadioSetRxGenericConfig+0x200>) + 8011f58: f001 f930 bl 80131bc <SUBGRF_SetModulationParams> + 8011f5c: 4842 ldr r0, [pc, #264] ; (8012068 <RadioSetRxGenericConfig+0x204>) + 8011f5e: f001 f999 bl 8013294 <SUBGRF_SetPacketParams> + 8011f62: a801 add r0, sp, #4 + 8011f64: f000 fe2e bl 8012bc4 <SUBGRF_SetSyncWord> + 8011f68: 8ba8 ldrh r0, [r5, #28] + 8011f6a: f000 fdff bl 8012b6c <SUBGRF_SetWhiteningSeed> + 8011f6e: 8b28 ldrh r0, [r5, #24] + 8011f70: f000 fe44 bl 8012bfc <SUBGRF_SetCrcPolynomial> + 8011f74: f44f 53fa mov.w r3, #8000 ; 0x1f40 + 8011f78: 68aa ldr r2, [r5, #8] + 8011f7a: 437b muls r3, r7 + 8011f7c: fbb3 f3f2 udiv r3, r3, r2 + 8011f80: 60a3 str r3, [r4, #8] + 8011f82: e788 b.n 8011e96 <RadioSetRxGenericConfig+0x32> + 8011f84: 22ff movs r2, #255 ; 0xff + 8011f86: e7bf b.n 8011f08 <RadioSetRxGenericConfig+0xa4> + 8011f88: 75e2 strb r2, [r4, #23] + 8011f8a: 7621 strb r1, [r4, #24] + 8011f8c: 7563 strb r3, [r4, #21] + 8011f8e: e7dd b.n 8011f4c <RadioSetRxGenericConfig+0xe8> + 8011f90: 8e2b ldrh r3, [r5, #48] ; 0x30 + 8011f92: 2b00 cmp r3, #0 + 8011f94: d05d beq.n 8012052 <RadioSetRxGenericConfig+0x1ee> + 8011f96: f895 3032 ldrb.w r3, [r5, #50] ; 0x32 + 8011f9a: 6aa8 ldr r0, [r5, #40] ; 0x28 + 8011f9c: 2b01 cmp r3, #1 + 8011f9e: bf0c ite eq + 8011fa0: f895 8014 ldrbeq.w r8, [r5, #20] + 8011fa4: f04f 08ff movne.w r8, #255 ; 0xff + 8011fa8: 3800 subs r0, #0 + 8011faa: bf18 it ne + 8011fac: 2001 movne r0, #1 + 8011fae: f000 ff65 bl 8012e7c <SUBGRF_SetStopRxTimerOnPreambleDetect> + 8011fb2: b2f8 uxtb r0, r7 + 8011fb4: f000 ff6e bl 8012e94 <SUBGRF_SetLoRaSymbNumTimeout> + 8011fb8: 2101 movs r1, #1 + 8011fba: f884 1038 strb.w r1, [r4, #56] ; 0x38 + 8011fbe: f895 202c ldrb.w r2, [r5, #44] ; 0x2c + 8011fc2: f884 2050 strb.w r2, [r4, #80] ; 0x50 + 8011fc6: f895 302d ldrb.w r3, [r5, #45] ; 0x2d + 8011fca: f884 3051 strb.w r3, [r4, #81] ; 0x51 + 8011fce: f895 302e ldrb.w r3, [r5, #46] ; 0x2e + 8011fd2: f884 3052 strb.w r3, [r4, #82] ; 0x52 + 8011fd6: f895 302f ldrb.w r3, [r5, #47] ; 0x2f + 8011fda: 428b cmp r3, r1 + 8011fdc: d002 beq.n 8011fe4 <RadioSetRxGenericConfig+0x180> + 8011fde: 2b02 cmp r3, #2 + 8011fe0: d003 beq.n 8011fea <RadioSetRxGenericConfig+0x186> + 8011fe2: b93b cbnz r3, 8011ff4 <RadioSetRxGenericConfig+0x190> + 8011fe4: f884 3053 strb.w r3, [r4, #83] ; 0x53 + 8011fe8: e004 b.n 8011ff4 <RadioSetRxGenericConfig+0x190> + 8011fea: 3a0b subs r2, #11 + 8011fec: 2a01 cmp r2, #1 + 8011fee: d828 bhi.n 8012042 <RadioSetRxGenericConfig+0x1de> + 8011ff0: f884 1053 strb.w r1, [r4, #83] ; 0x53 + 8011ff4: 8e2b ldrh r3, [r5, #48] ; 0x30 + 8011ff6: 83a3 strh r3, [r4, #28] + 8011ff8: f895 3032 ldrb.w r3, [r5, #50] ; 0x32 + 8011ffc: 77a3 strb r3, [r4, #30] + 8011ffe: 8eab ldrh r3, [r5, #52] ; 0x34 + 8012000: 8423 strh r3, [r4, #32] + 8012002: 2601 movs r6, #1 + 8012004: 73a6 strb r6, [r4, #14] + 8012006: f884 801f strb.w r8, [r4, #31] + 801200a: f7ff fca7 bl 801195c <RadioStandby> + 801200e: 4630 mov r0, r6 + 8012010: f7ff fdc4 bl 8011b9c <RadioSetModem> + 8012014: 4813 ldr r0, [pc, #76] ; (8012064 <RadioSetRxGenericConfig+0x200>) + 8012016: f001 f8d1 bl 80131bc <SUBGRF_SetModulationParams> + 801201a: 4813 ldr r0, [pc, #76] ; (8012068 <RadioSetRxGenericConfig+0x204>) + 801201c: f001 f93a bl 8013294 <SUBGRF_SetPacketParams> + 8012020: f894 3021 ldrb.w r3, [r4, #33] ; 0x21 + 8012024: 42b3 cmp r3, r6 + 8012026: f240 7036 movw r0, #1846 ; 0x736 + 801202a: d10c bne.n 8012046 <RadioSetRxGenericConfig+0x1e2> + 801202c: f000 fd7a bl 8012b24 <SUBGRF_ReadRegister> + 8012030: f000 01fb and.w r1, r0, #251 ; 0xfb + 8012034: f240 7036 movw r0, #1846 ; 0x736 + 8012038: f000 fd64 bl 8012b04 <SUBGRF_WriteRegister> + 801203c: f64f 73ff movw r3, #65535 ; 0xffff + 8012040: e79e b.n 8011f80 <RadioSetRxGenericConfig+0x11c> + 8012042: 2300 movs r3, #0 + 8012044: e7ce b.n 8011fe4 <RadioSetRxGenericConfig+0x180> + 8012046: f000 fd6d bl 8012b24 <SUBGRF_ReadRegister> + 801204a: f040 0104 orr.w r1, r0, #4 + 801204e: b2c9 uxtb r1, r1 + 8012050: e7f0 b.n 8012034 <RadioSetRxGenericConfig+0x1d0> + 8012052: f04f 30ff mov.w r0, #4294967295 + 8012056: e71f b.n 8011e98 <RadioSetRxGenericConfig+0x34> + 8012058: 20002744 .word 0x20002744 + 801205c: 20002728 .word 0x20002728 + 8012060: 2000272c .word 0x2000272c + 8012064: 2000277c .word 0x2000277c + 8012068: 20002752 .word 0x20002752 + +0801206c <RadioSetTxConfig>: + 801206c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8012070: b085 sub sp, #20 + 8012072: 4682 mov sl, r0 + 8012074: 9d0e ldr r5, [sp, #56] ; 0x38 + 8012076: f8bd b040 ldrh.w fp, [sp, #64] ; 0x40 + 801207a: f89d 7044 ldrb.w r7, [sp, #68] ; 0x44 + 801207e: f89d 9048 ldrb.w r9, [sp, #72] ; 0x48 + 8012082: 9201 str r2, [sp, #4] + 8012084: 4688 mov r8, r1 + 8012086: 461e mov r6, r3 + 8012088: f001 fae1 bl 801364e <RFW_DeInit> + 801208c: f1ba 0f01 cmp.w sl, #1 + 8012090: 4c52 ldr r4, [pc, #328] ; (80121dc <RadioSetTxConfig+0x170>) + 8012092: d054 beq.n 801213e <RadioSetTxConfig+0xd2> + 8012094: f1ba 0f04 cmp.w sl, #4 + 8012098: f000 8091 beq.w 80121be <RadioSetTxConfig+0x152> + 801209c: f1ba 0f00 cmp.w sl, #0 + 80120a0: d13a bne.n 8012118 <RadioSetTxConfig+0xac> + 80120a2: 220b movs r2, #11 + 80120a4: 4630 mov r0, r6 + 80120a6: f884 2044 strb.w r2, [r4, #68] ; 0x44 + 80120aa: f884 a038 strb.w sl, [r4, #56] ; 0x38 + 80120ae: 63e5 str r5, [r4, #60] ; 0x3c + 80120b0: f001 fa70 bl 8013594 <SUBGRF_GetFskBandwidthRegValue> + 80120b4: 9b01 ldr r3, [sp, #4] + 80120b6: 6423 str r3, [r4, #64] ; 0x40 + 80120b8: ea4f 03cb mov.w r3, fp, lsl #3 + 80120bc: f1b9 0f00 cmp.w r9, #0 + 80120c0: 8223 strh r3, [r4, #16] + 80120c2: f641 0304 movw r3, #6148 ; 0x1804 + 80120c6: 8263 strh r3, [r4, #18] + 80120c8: bf14 ite ne + 80120ca: 23f2 movne r3, #242 ; 0xf2 + 80120cc: 2301 moveq r3, #1 + 80120ce: 75e3 strb r3, [r4, #23] + 80120d0: f087 0701 eor.w r7, r7, #1 + 80120d4: 2301 movs r3, #1 + 80120d6: 7623 strb r3, [r4, #24] + 80120d8: f884 0045 strb.w r0, [r4, #69] ; 0x45 + 80120dc: f884 a00e strb.w sl, [r4, #14] + 80120e0: f884 a014 strb.w sl, [r4, #20] + 80120e4: 7567 strb r7, [r4, #21] + 80120e6: f7ff fc39 bl 801195c <RadioStandby> + 80120ea: 4650 mov r0, sl + 80120ec: f7ff fd56 bl 8011b9c <RadioSetModem> + 80120f0: f104 0038 add.w r0, r4, #56 ; 0x38 + 80120f4: f001 f862 bl 80131bc <SUBGRF_SetModulationParams> + 80120f8: f104 000e add.w r0, r4, #14 + 80120fc: f001 f8ca bl 8013294 <SUBGRF_SetPacketParams> + 8012100: 4a37 ldr r2, [pc, #220] ; (80121e0 <RadioSetTxConfig+0x174>) + 8012102: 6810 ldr r0, [r2, #0] + 8012104: 6851 ldr r1, [r2, #4] + 8012106: ab02 add r3, sp, #8 + 8012108: c303 stmia r3!, {r0, r1} + 801210a: a802 add r0, sp, #8 + 801210c: f000 fd5a bl 8012bc4 <SUBGRF_SetSyncWord> + 8012110: f240 10ff movw r0, #511 ; 0x1ff + 8012114: f000 fd2a bl 8012b6c <SUBGRF_SetWhiteningSeed> + 8012118: 4640 mov r0, r8 + 801211a: f001 f9d9 bl 80134d0 <SUBGRF_SetRfTxPower> + 801211e: 210e movs r1, #14 + 8012120: f884 0056 strb.w r0, [r4, #86] ; 0x56 + 8012124: f640 101f movw r0, #2335 ; 0x91f + 8012128: f000 fcec bl 8012b04 <SUBGRF_WriteRegister> + 801212c: f894 0056 ldrb.w r0, [r4, #86] ; 0x56 + 8012130: f001 fa92 bl 8013658 <RFW_SetAntSwitch> + 8012134: 9b16 ldr r3, [sp, #88] ; 0x58 + 8012136: 6063 str r3, [r4, #4] + 8012138: b005 add sp, #20 + 801213a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 801213e: 4929 ldr r1, [pc, #164] ; (80121e4 <RadioSetTxConfig+0x178>) + 8012140: f884 a038 strb.w sl, [r4, #56] ; 0x38 + 8012144: b2ea uxtb r2, r5 + 8012146: 5d89 ldrb r1, [r1, r6] + 8012148: f884 2050 strb.w r2, [r4, #80] ; 0x50 + 801214c: bb76 cbnz r6, 80121ac <RadioSetTxConfig+0x140> + 801214e: 3d0b subs r5, #11 + 8012150: 2d01 cmp r5, #1 + 8012152: bf8c ite hi + 8012154: 2500 movhi r5, #0 + 8012156: 2501 movls r5, #1 + 8012158: 3a05 subs r2, #5 + 801215a: 2a01 cmp r2, #1 + 801215c: d804 bhi.n 8012168 <RadioSetTxConfig+0xfc> + 801215e: f1bb 0f0c cmp.w fp, #12 + 8012162: bf38 it cc + 8012164: f04f 0b0c movcc.w fp, #12 + 8012168: 4b1f ldr r3, [pc, #124] ; (80121e8 <RadioSetTxConfig+0x17c>) + 801216a: f89d 203c ldrb.w r2, [sp, #60] ; 0x3c + 801216e: 781b ldrb r3, [r3, #0] + 8012170: f884 5053 strb.w r5, [r4, #83] ; 0x53 + 8012174: 77e3 strb r3, [r4, #31] + 8012176: 2501 movs r5, #1 + 8012178: f89d 3054 ldrb.w r3, [sp, #84] ; 0x54 + 801217c: f884 1051 strb.w r1, [r4, #81] ; 0x51 + 8012180: f884 2052 strb.w r2, [r4, #82] ; 0x52 + 8012184: f884 3021 strb.w r3, [r4, #33] ; 0x21 + 8012188: 73a5 strb r5, [r4, #14] + 801218a: f8a4 b01c strh.w fp, [r4, #28] + 801218e: 77a7 strb r7, [r4, #30] + 8012190: f884 9020 strb.w r9, [r4, #32] + 8012194: f7ff fbe2 bl 801195c <RadioStandby> + 8012198: 4628 mov r0, r5 + 801219a: f7ff fcff bl 8011b9c <RadioSetModem> + 801219e: 4813 ldr r0, [pc, #76] ; (80121ec <RadioSetTxConfig+0x180>) + 80121a0: f001 f80c bl 80131bc <SUBGRF_SetModulationParams> + 80121a4: 4812 ldr r0, [pc, #72] ; (80121f0 <RadioSetTxConfig+0x184>) + 80121a6: f001 f875 bl 8013294 <SUBGRF_SetPacketParams> + 80121aa: e7b5 b.n 8012118 <RadioSetTxConfig+0xac> + 80121ac: 2e01 cmp r6, #1 + 80121ae: d104 bne.n 80121ba <RadioSetTxConfig+0x14e> + 80121b0: f1a5 030c sub.w r3, r5, #12 + 80121b4: 425d negs r5, r3 + 80121b6: 415d adcs r5, r3 + 80121b8: e7ce b.n 8012158 <RadioSetTxConfig+0xec> + 80121ba: 2500 movs r5, #0 + 80121bc: e7cc b.n 8012158 <RadioSetTxConfig+0xec> + 80121be: 4650 mov r0, sl + 80121c0: f7ff fcec bl 8011b9c <RadioSetModem> + 80121c4: 2302 movs r3, #2 + 80121c6: f884 3038 strb.w r3, [r4, #56] ; 0x38 + 80121ca: f104 0038 add.w r0, r4, #56 ; 0x38 + 80121ce: 2316 movs r3, #22 + 80121d0: 64a5 str r5, [r4, #72] ; 0x48 + 80121d2: f884 304c strb.w r3, [r4, #76] ; 0x4c + 80121d6: f000 fff1 bl 80131bc <SUBGRF_SetModulationParams> + 80121da: e79d b.n 8012118 <RadioSetTxConfig+0xac> + 80121dc: 20002744 .word 0x20002744 + 80121e0: 08014424 .word 0x08014424 + 80121e4: 0801574e .word 0x0801574e + 80121e8: 200008c0 .word 0x200008c0 + 80121ec: 2000277c .word 0x2000277c + 80121f0: 20002752 .word 0x20002752 + +080121f4 <RadioSetRxConfig>: + 80121f4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80121f8: b087 sub sp, #28 + 80121fa: f8df b2b4 ldr.w fp, [pc, #692] ; 80124b0 <RadioSetRxConfig+0x2bc> + 80121fe: f89d a064 ldrb.w sl, [sp, #100] ; 0x64 + 8012202: f89d 904c ldrb.w r9, [sp, #76] ; 0x4c + 8012206: 9302 str r3, [sp, #8] + 8012208: 4614 mov r4, r2 + 801220a: f89d 3054 ldrb.w r3, [sp, #84] ; 0x54 + 801220e: f89d 2050 ldrb.w r2, [sp, #80] ; 0x50 + 8012212: f8bd 8048 ldrh.w r8, [sp, #72] ; 0x48 + 8012216: 9203 str r2, [sp, #12] + 8012218: 4605 mov r5, r0 + 801221a: f88b a001 strb.w sl, [fp, #1] + 801221e: f8bd 6044 ldrh.w r6, [sp, #68] ; 0x44 + 8012222: 9301 str r3, [sp, #4] + 8012224: 460f mov r7, r1 + 8012226: f001 fa12 bl 801364e <RFW_DeInit> + 801222a: f1ba 0f00 cmp.w sl, #0 + 801222e: bf18 it ne + 8012230: f04f 0800 movne.w r8, #0 + 8012234: f8df a27c ldr.w sl, [pc, #636] ; 80124b4 <RadioSetRxConfig+0x2c0> + 8012238: 9a03 ldr r2, [sp, #12] + 801223a: f1b9 0f00 cmp.w r9, #0 + 801223e: bf08 it eq + 8012240: 22ff moveq r2, #255 ; 0xff + 8012242: 2d01 cmp r5, #1 + 8012244: f88a 2000 strb.w r2, [sl] + 8012248: f000 80c8 beq.w 80123dc <RadioSetRxConfig+0x1e8> + 801224c: 2d05 cmp r5, #5 + 801224e: d048 beq.n 80122e2 <RadioSetRxConfig+0xee> + 8012250: 2d00 cmp r5, #0 + 8012252: f040 80c0 bne.w 80123d6 <RadioSetRxConfig+0x1e2> + 8012256: 4628 mov r0, r5 + 8012258: f000 fe10 bl 8012e7c <SUBGRF_SetStopRxTimerOnPreambleDetect> + 801225c: 220b movs r2, #11 + 801225e: 4638 mov r0, r7 + 8012260: f88b 2044 strb.w r2, [fp, #68] ; 0x44 + 8012264: f88b 5038 strb.w r5, [fp, #56] ; 0x38 + 8012268: f8cb 403c str.w r4, [fp, #60] ; 0x3c + 801226c: f001 f992 bl 8013594 <SUBGRF_GetFskBandwidthRegValue> + 8012270: 9b01 ldr r3, [sp, #4] + 8012272: f88b 0045 strb.w r0, [fp, #69] ; 0x45 + 8012276: f641 0204 movw r2, #6148 ; 0x1804 + 801227a: 2b00 cmp r3, #0 + 801227c: f8ab 2012 strh.w r2, [fp, #18] + 8012280: f89a 2000 ldrb.w r2, [sl] + 8012284: f88b 2016 strb.w r2, [fp, #22] + 8012288: bf14 ite ne + 801228a: 22f2 movne r2, #242 ; 0xf2 + 801228c: 2201 moveq r2, #1 + 801228e: f88b 2017 strb.w r2, [fp, #23] + 8012292: 00f6 lsls r6, r6, #3 + 8012294: 2201 movs r2, #1 + 8012296: f089 0901 eor.w r9, r9, #1 + 801229a: f88b 2018 strb.w r2, [fp, #24] + 801229e: f88b 500e strb.w r5, [fp, #14] + 80122a2: f8ab 6010 strh.w r6, [fp, #16] + 80122a6: f88b 5014 strb.w r5, [fp, #20] + 80122aa: f88b 9015 strb.w r9, [fp, #21] + 80122ae: f7ff fb55 bl 801195c <RadioStandby> + 80122b2: 4628 mov r0, r5 + 80122b4: f7ff fc72 bl 8011b9c <RadioSetModem> + 80122b8: f10b 0038 add.w r0, fp, #56 ; 0x38 + 80122bc: f000 ff7e bl 80131bc <SUBGRF_SetModulationParams> + 80122c0: f10b 000e add.w r0, fp, #14 + 80122c4: f000 ffe6 bl 8013294 <SUBGRF_SetPacketParams> + 80122c8: 497b ldr r1, [pc, #492] ; (80124b8 <RadioSetRxConfig+0x2c4>) + 80122ca: 6808 ldr r0, [r1, #0] + 80122cc: 6849 ldr r1, [r1, #4] + 80122ce: aa04 add r2, sp, #16 + 80122d0: c203 stmia r2!, {r0, r1} + 80122d2: a804 add r0, sp, #16 + 80122d4: f000 fc76 bl 8012bc4 <SUBGRF_SetSyncWord> + 80122d8: f240 10ff movw r0, #511 ; 0x1ff + 80122dc: f000 fc46 bl 8012b6c <SUBGRF_SetWhiteningSeed> + 80122e0: e071 b.n 80123c6 <RadioSetRxConfig+0x1d2> + 80122e2: 2001 movs r0, #1 + 80122e4: f000 fdca bl 8012e7c <SUBGRF_SetStopRxTimerOnPreambleDetect> + 80122e8: 2209 movs r2, #9 + 80122ea: f04f 0900 mov.w r9, #0 + 80122ee: f88b 2044 strb.w r2, [fp, #68] ; 0x44 + 80122f2: 4638 mov r0, r7 + 80122f4: f44f 7248 mov.w r2, #800 ; 0x320 + 80122f8: f8cb 2040 str.w r2, [fp, #64] ; 0x40 + 80122fc: f88b 9038 strb.w r9, [fp, #56] ; 0x38 + 8012300: f8cb 403c str.w r4, [fp, #60] ; 0x3c + 8012304: f001 f946 bl 8013594 <SUBGRF_GetFskBandwidthRegValue> + 8012308: f44f 5280 mov.w r2, #4096 ; 0x1000 + 801230c: f8ab 2012 strh.w r2, [fp, #18] + 8012310: f89a 2000 ldrb.w r2, [sl] + 8012314: f88b 0045 strb.w r0, [fp, #69] ; 0x45 + 8012318: f88b 2016 strb.w r2, [fp, #22] + 801231c: 4628 mov r0, r5 + 801231e: 2201 movs r2, #1 + 8012320: 00f6 lsls r6, r6, #3 + 8012322: f88b 2017 strb.w r2, [fp, #23] + 8012326: f88b 900e strb.w r9, [fp, #14] + 801232a: f8ab 6010 strh.w r6, [fp, #16] + 801232e: f8ab 9014 strh.w r9, [fp, #20] + 8012332: f88b 9018 strb.w r9, [fp, #24] + 8012336: f7ff fc31 bl 8011b9c <RadioSetModem> + 801233a: f10b 0038 add.w r0, fp, #56 ; 0x38 + 801233e: f000 ff3d bl 80131bc <SUBGRF_SetModulationParams> + 8012342: f10b 000e add.w r0, fp, #14 + 8012346: f000 ffa5 bl 8013294 <SUBGRF_SetPacketParams> + 801234a: 495b ldr r1, [pc, #364] ; (80124b8 <RadioSetRxConfig+0x2c4>) + 801234c: 6888 ldr r0, [r1, #8] + 801234e: 68c9 ldr r1, [r1, #12] + 8012350: aa04 add r2, sp, #16 + 8012352: c203 stmia r2!, {r0, r1} + 8012354: a804 add r0, sp, #16 + 8012356: f000 fc35 bl 8012bc4 <SUBGRF_SetSyncWord> + 801235a: f240 10ff movw r0, #511 ; 0x1ff + 801235e: f000 fc05 bl 8012b6c <SUBGRF_SetWhiteningSeed> + 8012362: f640 00b8 movw r0, #2232 ; 0x8b8 + 8012366: f000 fbdd bl 8012b24 <SUBGRF_ReadRegister> + 801236a: f000 01ef and.w r1, r0, #239 ; 0xef + 801236e: f640 00b8 movw r0, #2232 ; 0x8b8 + 8012372: f000 fbc7 bl 8012b04 <SUBGRF_WriteRegister> + 8012376: 2104 movs r1, #4 + 8012378: f640 00b9 movw r0, #2233 ; 0x8b9 + 801237c: f000 fbc2 bl 8012b04 <SUBGRF_WriteRegister> + 8012380: f640 009b movw r0, #2203 ; 0x89b + 8012384: f000 fbce bl 8012b24 <SUBGRF_ReadRegister> + 8012388: f000 01e3 and.w r1, r0, #227 ; 0xe3 + 801238c: f041 0108 orr.w r1, r1, #8 + 8012390: f640 009b movw r0, #2203 ; 0x89b + 8012394: f000 fbb6 bl 8012b04 <SUBGRF_WriteRegister> + 8012398: f240 60d1 movw r0, #1745 ; 0x6d1 + 801239c: f000 fbc2 bl 8012b24 <SUBGRF_ReadRegister> + 80123a0: f040 0118 orr.w r1, r0, #24 + 80123a4: b2c9 uxtb r1, r1 + 80123a6: f240 60d1 movw r0, #1745 ; 0x6d1 + 80123aa: f000 fbab bl 8012b04 <SUBGRF_WriteRegister> + 80123ae: f240 60ac movw r0, #1708 ; 0x6ac + 80123b2: f000 fbb7 bl 8012b24 <SUBGRF_ReadRegister> + 80123b6: f000 018f and.w r1, r0, #143 ; 0x8f + 80123ba: f041 0150 orr.w r1, r1, #80 ; 0x50 + 80123be: f240 60ac movw r0, #1708 ; 0x6ac + 80123c2: f000 fb9f bl 8012b04 <SUBGRF_WriteRegister> + 80123c6: f44f 52fa mov.w r2, #8000 ; 0x1f40 + 80123ca: fb02 f208 mul.w r2, r2, r8 + 80123ce: fbb2 f2f4 udiv r2, r2, r4 + 80123d2: f8cb 2008 str.w r2, [fp, #8] + 80123d6: b007 add sp, #28 + 80123d8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80123dc: 2000 movs r0, #0 + 80123de: f000 fd4d bl 8012e7c <SUBGRF_SetStopRxTimerOnPreambleDetect> + 80123e2: 4936 ldr r1, [pc, #216] ; (80124bc <RadioSetRxConfig+0x2c8>) + 80123e4: f88b 5038 strb.w r5, [fp, #56] ; 0x38 + 80123e8: b2e2 uxtb r2, r4 + 80123ea: 5dc9 ldrb r1, [r1, r7] + 80123ec: f88b 2050 strb.w r2, [fp, #80] ; 0x50 + 80123f0: 2f00 cmp r7, #0 + 80123f2: d14d bne.n 8012490 <RadioSetRxConfig+0x29c> + 80123f4: 3c0b subs r4, #11 + 80123f6: 2c01 cmp r4, #1 + 80123f8: bf8c ite hi + 80123fa: 2400 movhi r4, #0 + 80123fc: 2401 movls r4, #1 + 80123fe: 3a05 subs r2, #5 + 8012400: 2a01 cmp r2, #1 + 8012402: d802 bhi.n 801240a <RadioSetRxConfig+0x216> + 8012404: 2e0c cmp r6, #12 + 8012406: bf38 it cc + 8012408: 260c movcc r6, #12 + 801240a: 9b02 ldr r3, [sp, #8] + 801240c: f89a 2000 ldrb.w r2, [sl] + 8012410: f88b 3052 strb.w r3, [fp, #82] ; 0x52 + 8012414: f88b 4053 strb.w r4, [fp, #83] ; 0x53 + 8012418: 9b01 ldr r3, [sp, #4] + 801241a: f88b 201f strb.w r2, [fp, #31] + 801241e: 2401 movs r4, #1 + 8012420: f89d 2060 ldrb.w r2, [sp, #96] ; 0x60 + 8012424: f88b 2021 strb.w r2, [fp, #33] ; 0x21 + 8012428: f88b 1051 strb.w r1, [fp, #81] ; 0x51 + 801242c: f88b 3020 strb.w r3, [fp, #32] + 8012430: f88b 400e strb.w r4, [fp, #14] + 8012434: f8ab 601c strh.w r6, [fp, #28] + 8012438: f88b 901e strb.w r9, [fp, #30] + 801243c: f7ff fa8e bl 801195c <RadioStandby> + 8012440: 4620 mov r0, r4 + 8012442: f7ff fbab bl 8011b9c <RadioSetModem> + 8012446: 481e ldr r0, [pc, #120] ; (80124c0 <RadioSetRxConfig+0x2cc>) + 8012448: f000 feb8 bl 80131bc <SUBGRF_SetModulationParams> + 801244c: 481d ldr r0, [pc, #116] ; (80124c4 <RadioSetRxConfig+0x2d0>) + 801244e: f000 ff21 bl 8013294 <SUBGRF_SetPacketParams> + 8012452: fa5f f088 uxtb.w r0, r8 + 8012456: f000 fd1d bl 8012e94 <SUBGRF_SetLoRaSymbNumTimeout> + 801245a: f640 00a3 movw r0, #2211 ; 0x8a3 + 801245e: f000 fb61 bl 8012b24 <SUBGRF_ReadRegister> + 8012462: ea00 0104 and.w r1, r0, r4 + 8012466: f640 00a3 movw r0, #2211 ; 0x8a3 + 801246a: f000 fb4b bl 8012b04 <SUBGRF_WriteRegister> + 801246e: f89b 2021 ldrb.w r2, [fp, #33] ; 0x21 + 8012472: 42a2 cmp r2, r4 + 8012474: f240 7036 movw r0, #1846 ; 0x736 + 8012478: d113 bne.n 80124a2 <RadioSetRxConfig+0x2ae> + 801247a: f000 fb53 bl 8012b24 <SUBGRF_ReadRegister> + 801247e: f000 01fb and.w r1, r0, #251 ; 0xfb + 8012482: f240 7036 movw r0, #1846 ; 0x736 + 8012486: f000 fb3d bl 8012b04 <SUBGRF_WriteRegister> + 801248a: f64f 72ff movw r2, #65535 ; 0xffff + 801248e: e7a0 b.n 80123d2 <RadioSetRxConfig+0x1de> + 8012490: 2f01 cmp r7, #1 + 8012492: d104 bne.n 801249e <RadioSetRxConfig+0x2aa> + 8012494: f1a4 030c sub.w r3, r4, #12 + 8012498: 425c negs r4, r3 + 801249a: 415c adcs r4, r3 + 801249c: e7af b.n 80123fe <RadioSetRxConfig+0x20a> + 801249e: 2400 movs r4, #0 + 80124a0: e7ad b.n 80123fe <RadioSetRxConfig+0x20a> + 80124a2: f000 fb3f bl 8012b24 <SUBGRF_ReadRegister> + 80124a6: f040 0104 orr.w r1, r0, #4 + 80124aa: b2c9 uxtb r1, r1 + 80124ac: e7e9 b.n 8012482 <RadioSetRxConfig+0x28e> + 80124ae: bf00 nop + 80124b0: 20002744 .word 0x20002744 + 80124b4: 200008c0 .word 0x200008c0 + 80124b8: 08014424 .word 0x08014424 + 80124bc: 0801574e .word 0x0801574e + 80124c0: 2000277c .word 0x2000277c + 80124c4: 20002752 .word 0x20002752 + +080124c8 <RadioIsChannelFree>: + 80124c8: b5f0 push {r4, r5, r6, r7, lr} + 80124ca: b08b sub sp, #44 ; 0x2c + 80124cc: 460d mov r5, r1 + 80124ce: 4604 mov r4, r0 + 80124d0: 4617 mov r7, r2 + 80124d2: 461e mov r6, r3 + 80124d4: f7ff fa42 bl 801195c <RadioStandby> + 80124d8: 2000 movs r0, #0 + 80124da: f7ff fb5f bl 8011b9c <RadioSetModem> + 80124de: 4620 mov r0, r4 + 80124e0: f000 fdbe bl 8013060 <SUBGRF_SetRfFrequency> + 80124e4: 2400 movs r4, #0 + 80124e6: 2301 movs r3, #1 + 80124e8: e9cd 4308 strd r4, r3, [sp, #32] + 80124ec: 2303 movs r3, #3 + 80124ee: f44f 7216 mov.w r2, #600 ; 0x258 + 80124f2: 4629 mov r1, r5 + 80124f4: 4620 mov r0, r4 + 80124f6: e9cd 4406 strd r4, r4, [sp, #24] + 80124fa: e9cd 4404 strd r4, r4, [sp, #16] + 80124fe: e9cd 4402 strd r4, r4, [sp, #8] + 8012502: e9cd 5300 strd r5, r3, [sp] + 8012506: 4623 mov r3, r4 + 8012508: f7ff fe74 bl 80121f4 <RadioSetRxConfig> + 801250c: 4620 mov r0, r4 + 801250e: f7ff fa7d bl 8011a0c <RadioRx> + 8012512: f7ff fa35 bl 8011980 <RadioGetWakeupTime> + 8012516: f7f0 fb21 bl 8002b5c <HAL_Delay> + 801251a: f001 fc43 bl 8013da4 <UTIL_TIMER_GetCurrentTime> + 801251e: 4604 mov r4, r0 + 8012520: 4620 mov r0, r4 + 8012522: f001 fc49 bl 8013db8 <UTIL_TIMER_GetElapsedTime> + 8012526: 42b0 cmp r0, r6 + 8012528: d305 bcc.n 8012536 <RadioIsChannelFree+0x6e> + 801252a: 2401 movs r4, #1 + 801252c: f7ff fa16 bl 801195c <RadioStandby> + 8012530: 4620 mov r0, r4 + 8012532: b00b add sp, #44 ; 0x2c + 8012534: bdf0 pop {r4, r5, r6, r7, pc} + 8012536: f000 ff2f bl 8013398 <SUBGRF_GetRssiInst> + 801253a: b200 sxth r0, r0 + 801253c: 4287 cmp r7, r0 + 801253e: daef bge.n 8012520 <RadioIsChannelFree+0x58> + 8012540: 2400 movs r4, #0 + 8012542: e7f3 b.n 801252c <RadioIsChannelFree+0x64> + +08012544 <RadioSend>: + 8012544: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8012546: 2300 movs r3, #0 + 8012548: 460c mov r4, r1 + 801254a: f240 2101 movw r1, #513 ; 0x201 + 801254e: 461a mov r2, r3 + 8012550: 4606 mov r6, r0 + 8012552: 4608 mov r0, r1 + 8012554: f000 fd1e bl 8012f94 <SUBGRF_SetDioIrqParams> + 8012558: 4b64 ldr r3, [pc, #400] ; (80126ec <RadioSend+0x1a8>) + 801255a: 4d65 ldr r5, [pc, #404] ; (80126f0 <RadioSend+0x1ac>) + 801255c: f44f 5200 mov.w r2, #8192 ; 0x2000 + 8012560: 619a str r2, [r3, #24] + 8012562: f895 0056 ldrb.w r0, [r5, #86] ; 0x56 + 8012566: 2101 movs r1, #1 + 8012568: f000 ff9c bl 80134a4 <SUBGRF_SetSwitch> + 801256c: 782b ldrb r3, [r5, #0] + 801256e: 2b01 cmp r3, #1 + 8012570: f640 0089 movw r0, #2185 ; 0x889 + 8012574: d113 bne.n 801259e <RadioSend+0x5a> + 8012576: f895 3051 ldrb.w r3, [r5, #81] ; 0x51 + 801257a: 2b06 cmp r3, #6 + 801257c: d10f bne.n 801259e <RadioSend+0x5a> + 801257e: f000 fad1 bl 8012b24 <SUBGRF_ReadRegister> + 8012582: f000 01fb and.w r1, r0, #251 ; 0xfb + 8012586: f640 0089 movw r0, #2185 ; 0x889 + 801258a: f000 fabb bl 8012b04 <SUBGRF_WriteRegister> + 801258e: 782b ldrb r3, [r5, #0] + 8012590: 2b04 cmp r3, #4 + 8012592: d86c bhi.n 801266e <RadioSend+0x12a> + 8012594: e8df f003 tbb [pc, r3] + 8012598: 7f524b52 .word 0x7f524b52 + 801259c: 09 .byte 0x09 + 801259d: 00 .byte 0x00 + 801259e: f000 fac1 bl 8012b24 <SUBGRF_ReadRegister> + 80125a2: f040 0104 orr.w r1, r0, #4 + 80125a6: b2c9 uxtb r1, r1 + 80125a8: e7ed b.n 8012586 <RadioSend+0x42> + 80125aa: 4a52 ldr r2, [pc, #328] ; (80126f4 <RadioSend+0x1b0>) + 80125ac: 1e73 subs r3, r6, #1 + 80125ae: 4610 mov r0, r2 + 80125b0: f1c6 0701 rsb r7, r6, #1 + 80125b4: f04f 0c00 mov.w ip, #0 + 80125b8: 18f9 adds r1, r7, r3 + 80125ba: 428c cmp r4, r1 + 80125bc: dc6f bgt.n 801269e <RadioSend+0x15a> + 80125be: 2200 movs r2, #0 + 80125c0: 00e7 lsls r7, r4, #3 + 80125c2: 4613 mov r3, r2 + 80125c4: 42ba cmp r2, r7 + 80125c6: d171 bne.n 80126ac <RadioSend+0x168> + 80125c8: 019a lsls r2, r3, #6 + 80125ca: ea42 12c3 orr.w r2, r2, r3, lsl #7 + 80125ce: 015b lsls r3, r3, #5 + 80125d0: f083 0320 eor.w r3, r3, #32 + 80125d4: 4313 orrs r3, r2 + 80125d6: 1c66 adds r6, r4, #1 + 80125d8: 5503 strb r3, [r0, r4] + 80125da: b2f6 uxtb r6, r6 + 80125dc: 2302 movs r3, #2 + 80125de: 4846 ldr r0, [pc, #280] ; (80126f8 <RadioSend+0x1b4>) + 80125e0: 73ab strb r3, [r5, #14] + 80125e2: 76ae strb r6, [r5, #26] + 80125e4: f000 fe56 bl 8013294 <SUBGRF_SetPacketParams> + 80125e8: 2100 movs r1, #0 + 80125ea: 20f1 movs r0, #241 ; 0xf1 + 80125ec: f000 fa8a bl 8012b04 <SUBGRF_WriteRegister> + 80125f0: 2100 movs r1, #0 + 80125f2: 20f0 movs r0, #240 ; 0xf0 + 80125f4: f000 fa86 bl 8012b04 <SUBGRF_WriteRegister> + 80125f8: 6cab ldr r3, [r5, #72] ; 0x48 + 80125fa: 2b64 cmp r3, #100 ; 0x64 + 80125fc: d170 bne.n 80126e0 <RadioSend+0x19c> + 80125fe: 2170 movs r1, #112 ; 0x70 + 8012600: 20f3 movs r0, #243 ; 0xf3 + 8012602: f000 fa7f bl 8012b04 <SUBGRF_WriteRegister> + 8012606: 211d movs r1, #29 + 8012608: 20f2 movs r0, #242 ; 0xf2 + 801260a: f000 fa7b bl 8012b04 <SUBGRF_WriteRegister> + 801260e: 00e1 lsls r1, r4, #3 + 8012610: 1c8c adds r4, r1, #2 + 8012612: 20f4 movs r0, #244 ; 0xf4 + 8012614: 0a09 lsrs r1, r1, #8 + 8012616: f000 fa75 bl 8012b04 <SUBGRF_WriteRegister> + 801261a: f004 01fe and.w r1, r4, #254 ; 0xfe + 801261e: 20f5 movs r0, #245 ; 0xf5 + 8012620: f000 fa70 bl 8012b04 <SUBGRF_WriteRegister> + 8012624: 4833 ldr r0, [pc, #204] ; (80126f4 <RadioSend+0x1b0>) + 8012626: f06f 427f mvn.w r2, #4278190080 ; 0xff000000 + 801262a: 4631 mov r1, r6 + 801262c: e01d b.n 801266a <RadioSend+0x126> + 801262e: 77ec strb r4, [r5, #31] + 8012630: 4831 ldr r0, [pc, #196] ; (80126f8 <RadioSend+0x1b4>) + 8012632: f000 fe2f bl 8013294 <SUBGRF_SetPacketParams> + 8012636: 2200 movs r2, #0 + 8012638: 4621 mov r1, r4 + 801263a: e015 b.n 8012668 <RadioSend+0x124> + 801263c: f001 f808 bl 8013650 <RFW_Is_Init> + 8012640: 2801 cmp r0, #1 + 8012642: 4607 mov r7, r0 + 8012644: d125 bne.n 8012692 <RadioSend+0x14e> + 8012646: 4621 mov r1, r4 + 8012648: f10d 0207 add.w r2, sp, #7 + 801264c: 4630 mov r0, r6 + 801264e: f001 f804 bl 801365a <RFW_TransmitInit> + 8012652: 4604 mov r4, r0 + 8012654: b9a0 cbnz r0, 8012680 <RadioSend+0x13c> + 8012656: f89d 3007 ldrb.w r3, [sp, #7] + 801265a: 4827 ldr r0, [pc, #156] ; (80126f8 <RadioSend+0x1b4>) + 801265c: 75ab strb r3, [r5, #22] + 801265e: f000 fe19 bl 8013294 <SUBGRF_SetPacketParams> + 8012662: f89d 1007 ldrb.w r1, [sp, #7] + 8012666: 4622 mov r2, r4 + 8012668: 4630 mov r0, r6 + 801266a: f000 fb65 bl 8012d38 <SUBGRF_SendPayload> + 801266e: 6869 ldr r1, [r5, #4] + 8012670: 4822 ldr r0, [pc, #136] ; (80126fc <RadioSend+0x1b8>) + 8012672: f001 fc63 bl 8013f3c <UTIL_TIMER_SetPeriod> + 8012676: 4821 ldr r0, [pc, #132] ; (80126fc <RadioSend+0x1b8>) + 8012678: f001 fc26 bl 8013ec8 <UTIL_TIMER_Start> + 801267c: 2000 movs r0, #0 + 801267e: e006 b.n 801268e <RadioSend+0x14a> + 8012680: 4b1f ldr r3, [pc, #124] ; (8012700 <RadioSend+0x1bc>) + 8012682: 463a mov r2, r7 + 8012684: 2100 movs r1, #0 + 8012686: 2002 movs r0, #2 + 8012688: f001 f8a2 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 801268c: 2003 movs r0, #3 + 801268e: b003 add sp, #12 + 8012690: bdf0 pop {r4, r5, r6, r7, pc} + 8012692: 75ac strb r4, [r5, #22] + 8012694: e7cc b.n 8012630 <RadioSend+0xec> + 8012696: 2302 movs r3, #2 + 8012698: 73ab strb r3, [r5, #14] + 801269a: 76ac strb r4, [r5, #26] + 801269c: e7c8 b.n 8012630 <RadioSend+0xec> + 801269e: f813 1f01 ldrb.w r1, [r3, #1]! + 80126a2: 43c9 mvns r1, r1 + 80126a4: 7019 strb r1, [r3, #0] + 80126a6: f802 cb01 strb.w ip, [r2], #1 + 80126aa: e785 b.n 80125b8 <RadioSend+0x74> + 80126ac: 10d1 asrs r1, r2, #3 + 80126ae: ea6f 0c02 mvn.w ip, r2 + 80126b2: 5c71 ldrb r1, [r6, r1] + 80126b4: f00c 0c07 and.w ip, ip, #7 + 80126b8: 3201 adds r2, #1 + 80126ba: fa41 f10c asr.w r1, r1, ip + 80126be: f001 0101 and.w r1, r1, #1 + 80126c2: ea4f 0ce2 mov.w ip, r2, asr #3 + 80126c6: 404b eors r3, r1 + 80126c8: 43d1 mvns r1, r2 + 80126ca: f810 e00c ldrb.w lr, [r0, ip] + 80126ce: f001 0107 and.w r1, r1, #7 + 80126d2: fa03 f101 lsl.w r1, r3, r1 + 80126d6: ea41 010e orr.w r1, r1, lr + 80126da: f800 100c strb.w r1, [r0, ip] + 80126de: e771 b.n 80125c4 <RadioSend+0x80> + 80126e0: 21e1 movs r1, #225 ; 0xe1 + 80126e2: 20f3 movs r0, #243 ; 0xf3 + 80126e4: f000 fa0e bl 8012b04 <SUBGRF_WriteRegister> + 80126e8: 2104 movs r1, #4 + 80126ea: e78d b.n 8012608 <RadioSend+0xc4> + 80126ec: 48000400 .word 0x48000400 + 80126f0: 20002744 .word 0x20002744 + 80126f4: 20002628 .word 0x20002628 + 80126f8: 20002752 .word 0x20002752 + 80126fc: 200027a0 .word 0x200027a0 + 8012700: 080156f0 .word 0x080156f0 + +08012704 <RadioTimeOnAir>: + 8012704: b5f0 push {r4, r5, r6, r7, lr} + 8012706: f8bd 4014 ldrh.w r4, [sp, #20] + 801270a: f89d 7018 ldrb.w r7, [sp, #24] + 801270e: f89d e01c ldrb.w lr, [sp, #28] + 8012712: f89d 5020 ldrb.w r5, [sp, #32] + 8012716: b140 cbz r0, 801272a <RadioTimeOnAir+0x26> + 8012718: 2801 cmp r0, #1 + 801271a: d014 beq.n 8012746 <RadioTimeOnAir+0x42> + 801271c: 2201 movs r2, #1 + 801271e: 2300 movs r3, #0 + 8012720: 1898 adds r0, r3, r2 + 8012722: 3801 subs r0, #1 + 8012724: fbb0 f0f2 udiv r0, r0, r2 + 8012728: bdf0 pop {r4, r5, r6, r7, pc} + 801272a: f087 0701 eor.w r7, r7, #1 + 801272e: 00e3 lsls r3, r4, #3 + 8012730: eb03 03c7 add.w r3, r3, r7, lsl #3 + 8012734: 3318 adds r3, #24 + 8012736: eb0e 0545 add.w r5, lr, r5, lsl #1 + 801273a: eb03 03c5 add.w r3, r3, r5, lsl #3 + 801273e: f44f 717a mov.w r1, #1000 ; 0x3e8 + 8012742: 434b muls r3, r1 + 8012744: e7ec b.n 8012720 <RadioTimeOnAir+0x1c> + 8012746: 1f50 subs r0, r2, #5 + 8012748: 2801 cmp r0, #1 + 801274a: f103 0304 add.w r3, r3, #4 + 801274e: d802 bhi.n 8012756 <RadioTimeOnAir+0x52> + 8012750: 2c0c cmp r4, #12 + 8012752: bf38 it cc + 8012754: 240c movcc r4, #12 + 8012756: b9d1 cbnz r1, 801278e <RadioTimeOnAir+0x8a> + 8012758: f1a2 0c0b sub.w ip, r2, #11 + 801275c: f1bc 0f01 cmp.w ip, #1 + 8012760: bf8c ite hi + 8012762: f04f 0c00 movhi.w ip, #0 + 8012766: f04f 0c01 movls.w ip, #1 + 801276a: 0128 lsls r0, r5, #4 + 801276c: 2f00 cmp r7, #0 + 801276e: eb00 00ce add.w r0, r0, lr, lsl #3 + 8012772: bf14 ite ne + 8012774: 2500 movne r5, #0 + 8012776: 2514 moveq r5, #20 + 8012778: eba0 0082 sub.w r0, r0, r2, lsl #2 + 801277c: 2a06 cmp r2, #6 + 801277e: ea4f 0682 mov.w r6, r2, lsl #2 + 8012782: 4428 add r0, r5 + 8012784: f1a2 0702 sub.w r7, r2, #2 + 8012788: d80d bhi.n 80127a6 <RadioTimeOnAir+0xa2> + 801278a: 4635 mov r5, r6 + 801278c: e010 b.n 80127b0 <RadioTimeOnAir+0xac> + 801278e: 2901 cmp r1, #1 + 8012790: d106 bne.n 80127a0 <RadioTimeOnAir+0x9c> + 8012792: f1a2 000c sub.w r0, r2, #12 + 8012796: f1d0 0c00 rsbs ip, r0, #0 + 801279a: eb4c 0c00 adc.w ip, ip, r0 + 801279e: e7e4 b.n 801276a <RadioTimeOnAir+0x66> + 80127a0: f04f 0c00 mov.w ip, #0 + 80127a4: e7e1 b.n 801276a <RadioTimeOnAir+0x66> + 80127a6: 3008 adds r0, #8 + 80127a8: f1bc 0f00 cmp.w ip, #0 + 80127ac: d0ed beq.n 801278a <RadioTimeOnAir+0x86> + 80127ae: 00bd lsls r5, r7, #2 + 80127b0: 2800 cmp r0, #0 + 80127b2: bfac ite ge + 80127b4: 182e addge r6, r5, r0 + 80127b6: 1c2e addlt r6, r5, #0 + 80127b8: 1e70 subs r0, r6, #1 + 80127ba: fb90 f0f5 sdiv r0, r0, r5 + 80127be: fb03 4400 mla r4, r3, r0, r4 + 80127c2: 4b09 ldr r3, [pc, #36] ; (80127e8 <RadioTimeOnAir+0xe4>) + 80127c4: 2a06 cmp r2, #6 + 80127c6: 5c5a ldrb r2, [r3, r1] + 80127c8: bf8c ite hi + 80127ca: 340c addhi r4, #12 + 80127cc: 340e addls r4, #14 + 80127ce: 2a0a cmp r2, #10 + 80127d0: d809 bhi.n 80127e6 <RadioTimeOnAir+0xe2> + 80127d2: 00a3 lsls r3, r4, #2 + 80127d4: 3301 adds r3, #1 + 80127d6: f44f 717a mov.w r1, #1000 ; 0x3e8 + 80127da: 40bb lsls r3, r7 + 80127dc: 434b muls r3, r1 + 80127de: 4903 ldr r1, [pc, #12] ; (80127ec <RadioTimeOnAir+0xe8>) + 80127e0: f851 2022 ldr.w r2, [r1, r2, lsl #2] + 80127e4: e79c b.n 8012720 <RadioTimeOnAir+0x1c> + 80127e6: deff udf #255 ; 0xff + 80127e8: 0801574e .word 0x0801574e + 80127ec: 08015754 .word 0x08015754 + +080127f0 <RadioTxPrbs>: + 80127f0: b508 push {r3, lr} + 80127f2: 4b09 ldr r3, [pc, #36] ; (8012818 <RadioTxPrbs+0x28>) + 80127f4: 2101 movs r1, #1 + 80127f6: f893 0056 ldrb.w r0, [r3, #86] ; 0x56 + 80127fa: f000 fe53 bl 80134a4 <SUBGRF_SetSwitch> + 80127fe: f44f 60d7 mov.w r0, #1720 ; 0x6b8 + 8012802: 212d movs r1, #45 ; 0x2d + 8012804: f000 f97e bl 8012b04 <SUBGRF_WriteRegister> + 8012808: f000 fb33 bl 8012e72 <SUBGRF_SetTxInfinitePreamble> + 801280c: e8bd 4008 ldmia.w sp!, {r3, lr} + 8012810: 4802 ldr r0, [pc, #8] ; (801281c <RadioTxPrbs+0x2c>) + 8012812: f000 ba7b b.w 8012d0c <SUBGRF_SetTx> + 8012816: bf00 nop + 8012818: 20002744 .word 0x20002744 + 801281c: 000fffff .word 0x000fffff + +08012820 <RadioIrqProcess>: + 8012820: b573 push {r0, r1, r4, r5, r6, lr} + 8012822: 4ca4 ldr r4, [pc, #656] ; (8012ab4 <RadioIrqProcess+0x294>) + 8012824: f8b4 3054 ldrh.w r3, [r4, #84] ; 0x54 + 8012828: 2500 movs r5, #0 + 801282a: 2b20 cmp r3, #32 + 801282c: f88d 5003 strb.w r5, [sp, #3] + 8012830: 9501 str r5, [sp, #4] + 8012832: f000 811b beq.w 8012a6c <RadioIrqProcess+0x24c> + 8012836: d814 bhi.n 8012862 <RadioIrqProcess+0x42> + 8012838: 2b08 cmp r3, #8 + 801283a: d80d bhi.n 8012858 <RadioIrqProcess+0x38> + 801283c: b17b cbz r3, 801285e <RadioIrqProcess+0x3e> + 801283e: 3b01 subs r3, #1 + 8012840: 2b07 cmp r3, #7 + 8012842: d80c bhi.n 801285e <RadioIrqProcess+0x3e> + 8012844: e8df f013 tbh [pc, r3, lsl #1] + 8012848: 005b0042 .word 0x005b0042 + 801284c: 00cd000b .word 0x00cd000b + 8012850: 000b000b .word 0x000b000b + 8012854: 00fd000b .word 0x00fd000b + 8012858: 2b10 cmp r3, #16 + 801285a: f000 8100 beq.w 8012a5e <RadioIrqProcess+0x23e> + 801285e: b002 add sp, #8 + 8012860: bd70 pop {r4, r5, r6, pc} + 8012862: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8012866: f000 8098 beq.w 801299a <RadioIrqProcess+0x17a> + 801286a: d811 bhi.n 8012890 <RadioIrqProcess+0x70> + 801286c: 2b40 cmp r3, #64 ; 0x40 + 801286e: f000 8110 beq.w 8012a92 <RadioIrqProcess+0x272> + 8012872: 2b80 cmp r3, #128 ; 0x80 + 8012874: d1f3 bne.n 801285e <RadioIrqProcess+0x3e> + 8012876: 4628 mov r0, r5 + 8012878: f000 fa32 bl 8012ce0 <SUBGRF_SetStandby> + 801287c: 4b8e ldr r3, [pc, #568] ; (8012ab8 <RadioIrqProcess+0x298>) + 801287e: 681b ldr r3, [r3, #0] + 8012880: 2b00 cmp r3, #0 + 8012882: d0ec beq.n 801285e <RadioIrqProcess+0x3e> + 8012884: 699b ldr r3, [r3, #24] + 8012886: 2b00 cmp r3, #0 + 8012888: d0e9 beq.n 801285e <RadioIrqProcess+0x3e> + 801288a: 4628 mov r0, r5 + 801288c: 4798 blx r3 + 801288e: e7e6 b.n 801285e <RadioIrqProcess+0x3e> + 8012890: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 8012894: d1e3 bne.n 801285e <RadioIrqProcess+0x3e> + 8012896: 4b89 ldr r3, [pc, #548] ; (8012abc <RadioIrqProcess+0x29c>) + 8012898: 2201 movs r2, #1 + 801289a: 4629 mov r1, r5 + 801289c: 2002 movs r0, #2 + 801289e: f000 ff97 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80128a2: f000 f929 bl 8012af8 <SUBGRF_GetOperatingMode> + 80128a6: 2804 cmp r0, #4 + 80128a8: f040 8085 bne.w 80129b6 <RadioIrqProcess+0x196> + 80128ac: 4b84 ldr r3, [pc, #528] ; (8012ac0 <RadioIrqProcess+0x2a0>) + 80128ae: 4885 ldr r0, [pc, #532] ; (8012ac4 <RadioIrqProcess+0x2a4>) + 80128b0: f44f 5200 mov.w r2, #8192 ; 0x2000 + 80128b4: 629a str r2, [r3, #40] ; 0x28 + 80128b6: f001 fab9 bl 8013e2c <UTIL_TIMER_Stop> + 80128ba: 4628 mov r0, r5 + 80128bc: f000 fa10 bl 8012ce0 <SUBGRF_SetStandby> + 80128c0: 4b7d ldr r3, [pc, #500] ; (8012ab8 <RadioIrqProcess+0x298>) + 80128c2: 681b ldr r3, [r3, #0] + 80128c4: 2b00 cmp r3, #0 + 80128c6: d0ca beq.n 801285e <RadioIrqProcess+0x3e> + 80128c8: 685b ldr r3, [r3, #4] + 80128ca: e014 b.n 80128f6 <RadioIrqProcess+0xd6> + 80128cc: 4b7c ldr r3, [pc, #496] ; (8012ac0 <RadioIrqProcess+0x2a0>) + 80128ce: 487d ldr r0, [pc, #500] ; (8012ac4 <RadioIrqProcess+0x2a4>) + 80128d0: f44f 5200 mov.w r2, #8192 ; 0x2000 + 80128d4: 629a str r2, [r3, #40] ; 0x28 + 80128d6: f001 faa9 bl 8013e2c <UTIL_TIMER_Stop> + 80128da: 2000 movs r0, #0 + 80128dc: f000 fa00 bl 8012ce0 <SUBGRF_SetStandby> + 80128e0: f000 feb8 bl 8013654 <RFW_Is_LongPacketModeEnabled> + 80128e4: 2801 cmp r0, #1 + 80128e6: d101 bne.n 80128ec <RadioIrqProcess+0xcc> + 80128e8: f000 febd bl 8013666 <RFW_DeInit_TxLongPacket> + 80128ec: 4b72 ldr r3, [pc, #456] ; (8012ab8 <RadioIrqProcess+0x298>) + 80128ee: 681b ldr r3, [r3, #0] + 80128f0: 2b00 cmp r3, #0 + 80128f2: d0b4 beq.n 801285e <RadioIrqProcess+0x3e> + 80128f4: 681b ldr r3, [r3, #0] + 80128f6: 2b00 cmp r3, #0 + 80128f8: d0b1 beq.n 801285e <RadioIrqProcess+0x3e> + 80128fa: 4798 blx r3 + 80128fc: e7af b.n 801285e <RadioIrqProcess+0x3e> + 80128fe: 4b70 ldr r3, [pc, #448] ; (8012ac0 <RadioIrqProcess+0x2a0>) + 8012900: 4871 ldr r0, [pc, #452] ; (8012ac8 <RadioIrqProcess+0x2a8>) + 8012902: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8012906: 629a str r2, [r3, #40] ; 0x28 + 8012908: f001 fa90 bl 8013e2c <UTIL_TIMER_Stop> + 801290c: 7865 ldrb r5, [r4, #1] + 801290e: b995 cbnz r5, 8012936 <RadioIrqProcess+0x116> + 8012910: 4628 mov r0, r5 + 8012912: f000 f9e5 bl 8012ce0 <SUBGRF_SetStandby> + 8012916: 4629 mov r1, r5 + 8012918: f640 1002 movw r0, #2306 ; 0x902 + 801291c: f000 f8f2 bl 8012b04 <SUBGRF_WriteRegister> + 8012920: f640 1044 movw r0, #2372 ; 0x944 + 8012924: f000 f8fe bl 8012b24 <SUBGRF_ReadRegister> + 8012928: f040 0102 orr.w r1, r0, #2 + 801292c: b2c9 uxtb r1, r1 + 801292e: f640 1044 movw r0, #2372 ; 0x944 + 8012932: f000 f8e7 bl 8012b04 <SUBGRF_WriteRegister> + 8012936: 22ff movs r2, #255 ; 0xff + 8012938: f10d 0103 add.w r1, sp, #3 + 801293c: 4863 ldr r0, [pc, #396] ; (8012acc <RadioIrqProcess+0x2ac>) + 801293e: 4d5e ldr r5, [pc, #376] ; (8012ab8 <RadioIrqProcess+0x298>) + 8012940: f000 fd5a bl 80133f8 <SUBGRF_GetPayload> + 8012944: 4862 ldr r0, [pc, #392] ; (8012ad0 <RadioIrqProcess+0x2b0>) + 8012946: f000 fd71 bl 801342c <SUBGRF_GetPacketStatus> + 801294a: 682b ldr r3, [r5, #0] + 801294c: 2b00 cmp r3, #0 + 801294e: d086 beq.n 801285e <RadioIrqProcess+0x3e> + 8012950: 689e ldr r6, [r3, #8] + 8012952: 2e00 cmp r6, #0 + 8012954: d083 beq.n 801285e <RadioIrqProcess+0x3e> + 8012956: f894 3024 ldrb.w r3, [r4, #36] ; 0x24 + 801295a: 2b01 cmp r3, #1 + 801295c: d108 bne.n 8012970 <RadioIrqProcess+0x150> + 801295e: f994 3031 ldrsb.w r3, [r4, #49] ; 0x31 + 8012962: f994 2030 ldrsb.w r2, [r4, #48] ; 0x30 + 8012966: f89d 1003 ldrb.w r1, [sp, #3] + 801296a: 4858 ldr r0, [pc, #352] ; (8012acc <RadioIrqProcess+0x2ac>) + 801296c: 47b0 blx r6 + 801296e: e776 b.n 801285e <RadioIrqProcess+0x3e> + 8012970: 6be0 ldr r0, [r4, #60] ; 0x3c + 8012972: a901 add r1, sp, #4 + 8012974: f000 fe22 bl 80135bc <SUBGRF_GetCFO> + 8012978: 9b01 ldr r3, [sp, #4] + 801297a: f89d 1003 ldrb.w r1, [sp, #3] + 801297e: 4853 ldr r0, [pc, #332] ; (8012acc <RadioIrqProcess+0x2ac>) + 8012980: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8012984: f503 73fa add.w r3, r3, #500 ; 0x1f4 + 8012988: fb93 f3f2 sdiv r3, r3, r2 + 801298c: 682a ldr r2, [r5, #0] + 801298e: b25b sxtb r3, r3 + 8012990: 6895 ldr r5, [r2, #8] + 8012992: f994 2029 ldrsb.w r2, [r4, #41] ; 0x29 + 8012996: 47a8 blx r5 + 8012998: e761 b.n 801285e <RadioIrqProcess+0x3e> + 801299a: 4628 mov r0, r5 + 801299c: f000 f9a0 bl 8012ce0 <SUBGRF_SetStandby> + 80129a0: 4b45 ldr r3, [pc, #276] ; (8012ab8 <RadioIrqProcess+0x298>) + 80129a2: 681b ldr r3, [r3, #0] + 80129a4: 2b00 cmp r3, #0 + 80129a6: f43f af5a beq.w 801285e <RadioIrqProcess+0x3e> + 80129aa: 699b ldr r3, [r3, #24] + 80129ac: 2b00 cmp r3, #0 + 80129ae: f43f af56 beq.w 801285e <RadioIrqProcess+0x3e> + 80129b2: 2001 movs r0, #1 + 80129b4: e76a b.n 801288c <RadioIrqProcess+0x6c> + 80129b6: f000 f89f bl 8012af8 <SUBGRF_GetOperatingMode> + 80129ba: 2805 cmp r0, #5 + 80129bc: f47f af4f bne.w 801285e <RadioIrqProcess+0x3e> + 80129c0: 4b3f ldr r3, [pc, #252] ; (8012ac0 <RadioIrqProcess+0x2a0>) + 80129c2: 4841 ldr r0, [pc, #260] ; (8012ac8 <RadioIrqProcess+0x2a8>) + 80129c4: f44f 5280 mov.w r2, #4096 ; 0x1000 + 80129c8: 629a str r2, [r3, #40] ; 0x28 + 80129ca: f001 fa2f bl 8013e2c <UTIL_TIMER_Stop> + 80129ce: 4628 mov r0, r5 + 80129d0: f000 f986 bl 8012ce0 <SUBGRF_SetStandby> + 80129d4: 4b38 ldr r3, [pc, #224] ; (8012ab8 <RadioIrqProcess+0x298>) + 80129d6: 681b ldr r3, [r3, #0] + 80129d8: 2b00 cmp r3, #0 + 80129da: f43f af40 beq.w 801285e <RadioIrqProcess+0x3e> + 80129de: 68db ldr r3, [r3, #12] + 80129e0: e789 b.n 80128f6 <RadioIrqProcess+0xd6> + 80129e2: 2100 movs r1, #0 + 80129e4: 4b3b ldr r3, [pc, #236] ; (8012ad4 <RadioIrqProcess+0x2b4>) + 80129e6: 2201 movs r2, #1 + 80129e8: 2002 movs r0, #2 + 80129ea: f000 fef1 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 80129ee: 6da1 ldr r1, [r4, #88] ; 0x58 + 80129f0: 2900 cmp r1, #0 + 80129f2: f43f af34 beq.w 801285e <RadioIrqProcess+0x3e> + 80129f6: f3c1 4107 ubfx r1, r1, #16, #8 + 80129fa: f640 1003 movw r0, #2307 ; 0x903 + 80129fe: f000 f881 bl 8012b04 <SUBGRF_WriteRegister> + 8012a02: f894 1059 ldrb.w r1, [r4, #89] ; 0x59 + 8012a06: f640 1004 movw r0, #2308 ; 0x904 + 8012a0a: f000 f87b bl 8012b04 <SUBGRF_WriteRegister> + 8012a0e: f894 1058 ldrb.w r1, [r4, #88] ; 0x58 + 8012a12: f640 1005 movw r0, #2309 ; 0x905 + 8012a16: f000 f875 bl 8012b04 <SUBGRF_WriteRegister> + 8012a1a: f640 1002 movw r0, #2306 ; 0x902 + 8012a1e: f000 f881 bl 8012b24 <SUBGRF_ReadRegister> + 8012a22: f040 0101 orr.w r1, r0, #1 + 8012a26: b2c9 uxtb r1, r1 + 8012a28: f640 1002 movw r0, #2306 ; 0x902 + 8012a2c: f000 f86a bl 8012b04 <SUBGRF_WriteRegister> + 8012a30: 2300 movs r3, #0 + 8012a32: f240 2162 movw r1, #610 ; 0x262 + 8012a36: 461a mov r2, r3 + 8012a38: 4608 mov r0, r1 + 8012a3a: 65a3 str r3, [r4, #88] ; 0x58 + 8012a3c: f000 faaa bl 8012f94 <SUBGRF_SetDioIrqParams> + 8012a40: e70d b.n 801285e <RadioIrqProcess+0x3e> + 8012a42: 4b25 ldr r3, [pc, #148] ; (8012ad8 <RadioIrqProcess+0x2b8>) + 8012a44: 2201 movs r2, #1 + 8012a46: 2100 movs r1, #0 + 8012a48: 2002 movs r0, #2 + 8012a4a: f000 fec1 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8012a4e: f000 fdff bl 8013650 <RFW_Is_Init> + 8012a52: 2801 cmp r0, #1 + 8012a54: f47f af03 bne.w 801285e <RadioIrqProcess+0x3e> + 8012a58: f000 fe06 bl 8013668 <RFW_ReceivePayload> + 8012a5c: e6ff b.n 801285e <RadioIrqProcess+0x3e> + 8012a5e: 4b1f ldr r3, [pc, #124] ; (8012adc <RadioIrqProcess+0x2bc>) + 8012a60: 2201 movs r2, #1 + 8012a62: 2100 movs r1, #0 + 8012a64: 2002 movs r0, #2 + 8012a66: f000 feb3 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8012a6a: e6f8 b.n 801285e <RadioIrqProcess+0x3e> + 8012a6c: 4816 ldr r0, [pc, #88] ; (8012ac8 <RadioIrqProcess+0x2a8>) + 8012a6e: f001 f9dd bl 8013e2c <UTIL_TIMER_Stop> + 8012a72: 7860 ldrb r0, [r4, #1] + 8012a74: b908 cbnz r0, 8012a7a <RadioIrqProcess+0x25a> + 8012a76: f000 f933 bl 8012ce0 <SUBGRF_SetStandby> + 8012a7a: 4b0f ldr r3, [pc, #60] ; (8012ab8 <RadioIrqProcess+0x298>) + 8012a7c: 681b ldr r3, [r3, #0] + 8012a7e: 2b00 cmp r3, #0 + 8012a80: f43f aeed beq.w 801285e <RadioIrqProcess+0x3e> + 8012a84: 68db ldr r3, [r3, #12] + 8012a86: 2b00 cmp r3, #0 + 8012a88: f43f aee9 beq.w 801285e <RadioIrqProcess+0x3e> + 8012a8c: 4798 blx r3 + 8012a8e: 4b14 ldr r3, [pc, #80] ; (8012ae0 <RadioIrqProcess+0x2c0>) + 8012a90: e7e6 b.n 8012a60 <RadioIrqProcess+0x240> + 8012a92: 4b14 ldr r3, [pc, #80] ; (8012ae4 <RadioIrqProcess+0x2c4>) + 8012a94: 2201 movs r2, #1 + 8012a96: 4629 mov r1, r5 + 8012a98: 2002 movs r0, #2 + 8012a9a: f000 fe99 bl 80137d0 <UTIL_ADV_TRACE_COND_FSend> + 8012a9e: 7860 ldrb r0, [r4, #1] + 8012aa0: b908 cbnz r0, 8012aa6 <RadioIrqProcess+0x286> + 8012aa2: f000 f91d bl 8012ce0 <SUBGRF_SetStandby> + 8012aa6: 4b04 ldr r3, [pc, #16] ; (8012ab8 <RadioIrqProcess+0x298>) + 8012aa8: 681b ldr r3, [r3, #0] + 8012aaa: 2b00 cmp r3, #0 + 8012aac: f43f aed7 beq.w 801285e <RadioIrqProcess+0x3e> + 8012ab0: 691b ldr r3, [r3, #16] + 8012ab2: e720 b.n 80128f6 <RadioIrqProcess+0xd6> + 8012ab4: 20002744 .word 0x20002744 + 8012ab8: 20002728 .word 0x20002728 + 8012abc: 08015705 .word 0x08015705 + 8012ac0: 48000400 .word 0x48000400 + 8012ac4: 200027a0 .word 0x200027a0 + 8012ac8: 2000272c .word 0x2000272c + 8012acc: 20002628 .word 0x20002628 + 8012ad0: 20002768 .word 0x20002768 + 8012ad4: 08015719 .word 0x08015719 + 8012ad8: 08015722 .word 0x08015722 + 8012adc: 0801572c .word 0x0801572c + 8012ae0: 08015735 .word 0x08015735 + 8012ae4: 0801573e .word 0x0801573e + +08012ae8 <RadioOnDioIrq>: + 8012ae8: 4b02 ldr r3, [pc, #8] ; (8012af4 <RadioOnDioIrq+0xc>) + 8012aea: f8a3 0054 strh.w r0, [r3, #84] ; 0x54 + 8012aee: f7ff be97 b.w 8012820 <RadioIrqProcess> + 8012af2: bf00 nop + 8012af4: 20002744 .word 0x20002744 + +08012af8 <SUBGRF_GetOperatingMode>: + 8012af8: 4b01 ldr r3, [pc, #4] ; (8012b00 <SUBGRF_GetOperatingMode+0x8>) + 8012afa: 7818 ldrb r0, [r3, #0] + 8012afc: 4770 bx lr + 8012afe: bf00 nop + 8012b00: 200027be .word 0x200027be + +08012b04 <SUBGRF_WriteRegister>: + 8012b04: b507 push {r0, r1, r2, lr} + 8012b06: 2301 movs r3, #1 + 8012b08: f88d 1007 strb.w r1, [sp, #7] + 8012b0c: f10d 0207 add.w r2, sp, #7 + 8012b10: 4601 mov r1, r0 + 8012b12: 4803 ldr r0, [pc, #12] ; (8012b20 <SUBGRF_WriteRegister+0x1c>) + 8012b14: f7f7 fa06 bl 8009f24 <HAL_SUBGHZ_WriteRegisters> + 8012b18: b003 add sp, #12 + 8012b1a: f85d fb04 ldr.w pc, [sp], #4 + 8012b1e: bf00 nop + 8012b20: 20000acc .word 0x20000acc + +08012b24 <SUBGRF_ReadRegister>: + 8012b24: b507 push {r0, r1, r2, lr} + 8012b26: 2301 movs r3, #1 + 8012b28: 4601 mov r1, r0 + 8012b2a: f10d 0207 add.w r2, sp, #7 + 8012b2e: 4804 ldr r0, [pc, #16] ; (8012b40 <SUBGRF_ReadRegister+0x1c>) + 8012b30: f7f7 fa31 bl 8009f96 <HAL_SUBGHZ_ReadRegisters> + 8012b34: f89d 0007 ldrb.w r0, [sp, #7] + 8012b38: b003 add sp, #12 + 8012b3a: f85d fb04 ldr.w pc, [sp], #4 + 8012b3e: bf00 nop + 8012b40: 20000acc .word 0x20000acc + +08012b44 <Radio_SMPS_Set>: + 8012b44: b510 push {r4, lr} + 8012b46: 4604 mov r4, r0 + 8012b48: f7f1 fdae bl 80046a8 <RBI_IsDCDC> + 8012b4c: 2801 cmp r0, #1 + 8012b4e: d10c bne.n 8012b6a <Radio_SMPS_Set+0x26> + 8012b50: f640 1023 movw r0, #2339 ; 0x923 + 8012b54: f7ff ffe6 bl 8012b24 <SUBGRF_ReadRegister> + 8012b58: f000 01f9 and.w r1, r0, #249 ; 0xf9 + 8012b5c: 4321 orrs r1, r4 + 8012b5e: f640 1023 movw r0, #2339 ; 0x923 + 8012b62: e8bd 4010 ldmia.w sp!, {r4, lr} + 8012b66: f7ff bfcd b.w 8012b04 <SUBGRF_WriteRegister> + 8012b6a: bd10 pop {r4, pc} + +08012b6c <SUBGRF_SetWhiteningSeed>: + 8012b6c: b510 push {r4, lr} + 8012b6e: 4b0c ldr r3, [pc, #48] ; (8012ba0 <SUBGRF_SetWhiteningSeed+0x34>) + 8012b70: 781b ldrb r3, [r3, #0] + 8012b72: 4604 mov r4, r0 + 8012b74: b99b cbnz r3, 8012b9e <SUBGRF_SetWhiteningSeed+0x32> + 8012b76: f44f 60d7 mov.w r0, #1720 ; 0x6b8 + 8012b7a: f7ff ffd3 bl 8012b24 <SUBGRF_ReadRegister> + 8012b7e: f3c4 2100 ubfx r1, r4, #8, #1 + 8012b82: f000 00fe and.w r0, r0, #254 ; 0xfe + 8012b86: 4301 orrs r1, r0 + 8012b88: f44f 60d7 mov.w r0, #1720 ; 0x6b8 + 8012b8c: f7ff ffba bl 8012b04 <SUBGRF_WriteRegister> + 8012b90: b2e1 uxtb r1, r4 + 8012b92: f240 60b9 movw r0, #1721 ; 0x6b9 + 8012b96: e8bd 4010 ldmia.w sp!, {r4, lr} + 8012b9a: f7ff bfb3 b.w 8012b04 <SUBGRF_WriteRegister> + 8012b9e: bd10 pop {r4, pc} + 8012ba0: 200027bf .word 0x200027bf + +08012ba4 <SUBGRF_WriteRegisters>: + 8012ba4: b510 push {r4, lr} + 8012ba6: 4613 mov r3, r2 + 8012ba8: f3ef 8410 mrs r4, PRIMASK + 8012bac: b672 cpsid i + 8012bae: 460a mov r2, r1 + 8012bb0: 4601 mov r1, r0 + 8012bb2: 4803 ldr r0, [pc, #12] ; (8012bc0 <SUBGRF_WriteRegisters+0x1c>) + 8012bb4: f7f7 f9b6 bl 8009f24 <HAL_SUBGHZ_WriteRegisters> + 8012bb8: f384 8810 msr PRIMASK, r4 + 8012bbc: bd10 pop {r4, pc} + 8012bbe: bf00 nop + 8012bc0: 20000acc .word 0x20000acc + +08012bc4 <SUBGRF_SetSyncWord>: + 8012bc4: b508 push {r3, lr} + 8012bc6: 4601 mov r1, r0 + 8012bc8: 2208 movs r2, #8 + 8012bca: f44f 60d8 mov.w r0, #1728 ; 0x6c0 + 8012bce: f7ff ffe9 bl 8012ba4 <SUBGRF_WriteRegisters> + 8012bd2: 2000 movs r0, #0 + 8012bd4: bd08 pop {r3, pc} + ... + +08012bd8 <SUBGRF_SetCrcSeed>: + 8012bd8: b507 push {r0, r1, r2, lr} + 8012bda: 4b07 ldr r3, [pc, #28] ; (8012bf8 <SUBGRF_SetCrcSeed+0x20>) + 8012bdc: 781b ldrb r3, [r3, #0] + 8012bde: ba40 rev16 r0, r0 + 8012be0: f8ad 0004 strh.w r0, [sp, #4] + 8012be4: b92b cbnz r3, 8012bf2 <SUBGRF_SetCrcSeed+0x1a> + 8012be6: 2202 movs r2, #2 + 8012be8: a901 add r1, sp, #4 + 8012bea: f240 60bc movw r0, #1724 ; 0x6bc + 8012bee: f7ff ffd9 bl 8012ba4 <SUBGRF_WriteRegisters> + 8012bf2: b003 add sp, #12 + 8012bf4: f85d fb04 ldr.w pc, [sp], #4 + 8012bf8: 200027bf .word 0x200027bf + +08012bfc <SUBGRF_SetCrcPolynomial>: + 8012bfc: b507 push {r0, r1, r2, lr} + 8012bfe: 4b07 ldr r3, [pc, #28] ; (8012c1c <SUBGRF_SetCrcPolynomial+0x20>) + 8012c00: 781b ldrb r3, [r3, #0] + 8012c02: ba40 rev16 r0, r0 + 8012c04: f8ad 0004 strh.w r0, [sp, #4] + 8012c08: b92b cbnz r3, 8012c16 <SUBGRF_SetCrcPolynomial+0x1a> + 8012c0a: 2202 movs r2, #2 + 8012c0c: a901 add r1, sp, #4 + 8012c0e: f240 60be movw r0, #1726 ; 0x6be + 8012c12: f7ff ffc7 bl 8012ba4 <SUBGRF_WriteRegisters> + 8012c16: b003 add sp, #12 + 8012c18: f85d fb04 ldr.w pc, [sp], #4 + 8012c1c: 200027bf .word 0x200027bf + +08012c20 <SUBGRF_ReadRegisters>: + 8012c20: b510 push {r4, lr} + 8012c22: 4613 mov r3, r2 + 8012c24: f3ef 8410 mrs r4, PRIMASK + 8012c28: b672 cpsid i + 8012c2a: 460a mov r2, r1 + 8012c2c: 4601 mov r1, r0 + 8012c2e: 4803 ldr r0, [pc, #12] ; (8012c3c <SUBGRF_ReadRegisters+0x1c>) + 8012c30: f7f7 f9b1 bl 8009f96 <HAL_SUBGHZ_ReadRegisters> + 8012c34: f384 8810 msr PRIMASK, r4 + 8012c38: bd10 pop {r4, pc} + 8012c3a: bf00 nop + 8012c3c: 20000acc .word 0x20000acc + +08012c40 <SUBGRF_WriteBuffer>: + 8012c40: b510 push {r4, lr} + 8012c42: 4613 mov r3, r2 + 8012c44: f3ef 8410 mrs r4, PRIMASK + 8012c48: b672 cpsid i + 8012c4a: 460a mov r2, r1 + 8012c4c: 4601 mov r1, r0 + 8012c4e: 4803 ldr r0, [pc, #12] ; (8012c5c <SUBGRF_WriteBuffer+0x1c>) + 8012c50: f7f7 fa93 bl 800a17a <HAL_SUBGHZ_WriteBuffer> + 8012c54: f384 8810 msr PRIMASK, r4 + 8012c58: bd10 pop {r4, pc} + 8012c5a: bf00 nop + 8012c5c: 20000acc .word 0x20000acc + +08012c60 <SUBGRF_SetPayload>: + 8012c60: 460a mov r2, r1 + 8012c62: 4601 mov r1, r0 + 8012c64: 2000 movs r0, #0 + 8012c66: f7ff bfeb b.w 8012c40 <SUBGRF_WriteBuffer> + ... + +08012c6c <SUBGRF_ReadBuffer>: + 8012c6c: b510 push {r4, lr} + 8012c6e: 4613 mov r3, r2 + 8012c70: f3ef 8410 mrs r4, PRIMASK + 8012c74: b672 cpsid i + 8012c76: 460a mov r2, r1 + 8012c78: 4601 mov r1, r0 + 8012c7a: 4803 ldr r0, [pc, #12] ; (8012c88 <SUBGRF_ReadBuffer+0x1c>) + 8012c7c: f7f7 fab0 bl 800a1e0 <HAL_SUBGHZ_ReadBuffer> + 8012c80: f384 8810 msr PRIMASK, r4 + 8012c84: bd10 pop {r4, pc} + 8012c86: bf00 nop + 8012c88: 20000acc .word 0x20000acc + +08012c8c <SUBGRF_WriteCommand>: + 8012c8c: b510 push {r4, lr} + 8012c8e: 4613 mov r3, r2 + 8012c90: f3ef 8410 mrs r4, PRIMASK + 8012c94: b672 cpsid i + 8012c96: 460a mov r2, r1 + 8012c98: 4601 mov r1, r0 + 8012c9a: 4803 ldr r0, [pc, #12] ; (8012ca8 <SUBGRF_WriteCommand+0x1c>) + 8012c9c: f7f7 f9b6 bl 800a00c <HAL_SUBGHZ_ExecSetCmd> + 8012ca0: f384 8810 msr PRIMASK, r4 + 8012ca4: bd10 pop {r4, pc} + 8012ca6: bf00 nop + 8012ca8: 20000acc .word 0x20000acc + +08012cac <SUBGRF_SetSleep>: + 8012cac: b513 push {r0, r1, r4, lr} + 8012cae: 4604 mov r4, r0 + 8012cb0: 2000 movs r0, #0 + 8012cb2: f7f1 fcd3 bl 800465c <RBI_ConfigRFSwitch> + 8012cb6: 2002 movs r0, #2 + 8012cb8: f7ff ff44 bl 8012b44 <Radio_SMPS_Set> + 8012cbc: f004 0407 and.w r4, r4, #7 + 8012cc0: 2201 movs r2, #1 + 8012cc2: f10d 0107 add.w r1, sp, #7 + 8012cc6: 2084 movs r0, #132 ; 0x84 + 8012cc8: f88d 4007 strb.w r4, [sp, #7] + 8012ccc: f7ff ffde bl 8012c8c <SUBGRF_WriteCommand> + 8012cd0: 4b02 ldr r3, [pc, #8] ; (8012cdc <SUBGRF_SetSleep+0x30>) + 8012cd2: 2200 movs r2, #0 + 8012cd4: 701a strb r2, [r3, #0] + 8012cd6: b002 add sp, #8 + 8012cd8: bd10 pop {r4, pc} + 8012cda: bf00 nop + 8012cdc: 200027be .word 0x200027be + +08012ce0 <SUBGRF_SetStandby>: + 8012ce0: b507 push {r0, r1, r2, lr} + 8012ce2: 2201 movs r2, #1 + 8012ce4: f88d 0007 strb.w r0, [sp, #7] + 8012ce8: f10d 0107 add.w r1, sp, #7 + 8012cec: 2080 movs r0, #128 ; 0x80 + 8012cee: f7ff ffcd bl 8012c8c <SUBGRF_WriteCommand> + 8012cf2: f89d 3007 ldrb.w r3, [sp, #7] + 8012cf6: 2b00 cmp r3, #0 + 8012cf8: 4b03 ldr r3, [pc, #12] ; (8012d08 <SUBGRF_SetStandby+0x28>) + 8012cfa: bf0c ite eq + 8012cfc: 2201 moveq r2, #1 + 8012cfe: 2202 movne r2, #2 + 8012d00: 701a strb r2, [r3, #0] + 8012d02: b003 add sp, #12 + 8012d04: f85d fb04 ldr.w pc, [sp], #4 + 8012d08: 200027be .word 0x200027be + +08012d0c <SUBGRF_SetTx>: + 8012d0c: b507 push {r0, r1, r2, lr} + 8012d0e: 4b09 ldr r3, [pc, #36] ; (8012d34 <SUBGRF_SetTx+0x28>) + 8012d10: f88d 0006 strb.w r0, [sp, #6] + 8012d14: 2204 movs r2, #4 + 8012d16: 701a strb r2, [r3, #0] + 8012d18: 0c03 lsrs r3, r0, #16 + 8012d1a: f88d 3004 strb.w r3, [sp, #4] + 8012d1e: 2203 movs r2, #3 + 8012d20: 0a03 lsrs r3, r0, #8 + 8012d22: a901 add r1, sp, #4 + 8012d24: 2083 movs r0, #131 ; 0x83 + 8012d26: f88d 3005 strb.w r3, [sp, #5] + 8012d2a: f7ff ffaf bl 8012c8c <SUBGRF_WriteCommand> + 8012d2e: b003 add sp, #12 + 8012d30: f85d fb04 ldr.w pc, [sp], #4 + 8012d34: 200027be .word 0x200027be + +08012d38 <SUBGRF_SendPayload>: + 8012d38: b510 push {r4, lr} + 8012d3a: 4614 mov r4, r2 + 8012d3c: f7ff ff90 bl 8012c60 <SUBGRF_SetPayload> + 8012d40: 4620 mov r0, r4 + 8012d42: e8bd 4010 ldmia.w sp!, {r4, lr} + 8012d46: f7ff bfe1 b.w 8012d0c <SUBGRF_SetTx> + ... + +08012d4c <SUBGRF_SetRx>: + 8012d4c: b507 push {r0, r1, r2, lr} + 8012d4e: 4b09 ldr r3, [pc, #36] ; (8012d74 <SUBGRF_SetRx+0x28>) + 8012d50: f88d 0006 strb.w r0, [sp, #6] + 8012d54: 2205 movs r2, #5 + 8012d56: 701a strb r2, [r3, #0] + 8012d58: 0c03 lsrs r3, r0, #16 + 8012d5a: f88d 3004 strb.w r3, [sp, #4] + 8012d5e: 2203 movs r2, #3 + 8012d60: 0a03 lsrs r3, r0, #8 + 8012d62: a901 add r1, sp, #4 + 8012d64: 2082 movs r0, #130 ; 0x82 + 8012d66: f88d 3005 strb.w r3, [sp, #5] + 8012d6a: f7ff ff8f bl 8012c8c <SUBGRF_WriteCommand> + 8012d6e: b003 add sp, #12 + 8012d70: f85d fb04 ldr.w pc, [sp], #4 + 8012d74: 200027be .word 0x200027be + +08012d78 <SUBGRF_GetRandom>: + 8012d78: b573 push {r0, r1, r4, r5, r6, lr} + 8012d7a: 2600 movs r6, #0 + 8012d7c: f640 00e2 movw r0, #2274 ; 0x8e2 + 8012d80: 9601 str r6, [sp, #4] + 8012d82: f7ff fecf bl 8012b24 <SUBGRF_ReadRegister> + 8012d86: f000 01fe and.w r1, r0, #254 ; 0xfe + 8012d8a: 4605 mov r5, r0 + 8012d8c: f640 00e2 movw r0, #2274 ; 0x8e2 + 8012d90: f7ff feb8 bl 8012b04 <SUBGRF_WriteRegister> + 8012d94: f640 00e5 movw r0, #2277 ; 0x8e5 + 8012d98: f7ff fec4 bl 8012b24 <SUBGRF_ReadRegister> + 8012d9c: f000 017f and.w r1, r0, #127 ; 0x7f + 8012da0: 4604 mov r4, r0 + 8012da2: f640 00e5 movw r0, #2277 ; 0x8e5 + 8012da6: f7ff fead bl 8012b04 <SUBGRF_WriteRegister> + 8012daa: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 8012dae: f7ff ffcd bl 8012d4c <SUBGRF_SetRx> + 8012db2: 2204 movs r2, #4 + 8012db4: eb0d 0102 add.w r1, sp, r2 + 8012db8: f640 0019 movw r0, #2073 ; 0x819 + 8012dbc: f7ff ff30 bl 8012c20 <SUBGRF_ReadRegisters> + 8012dc0: 4630 mov r0, r6 + 8012dc2: f7ff ff8d bl 8012ce0 <SUBGRF_SetStandby> + 8012dc6: 4629 mov r1, r5 + 8012dc8: f640 00e2 movw r0, #2274 ; 0x8e2 + 8012dcc: f7ff fe9a bl 8012b04 <SUBGRF_WriteRegister> + 8012dd0: 4621 mov r1, r4 + 8012dd2: f640 00e5 movw r0, #2277 ; 0x8e5 + 8012dd6: f7ff fe95 bl 8012b04 <SUBGRF_WriteRegister> + 8012dda: 9801 ldr r0, [sp, #4] + 8012ddc: b002 add sp, #8 + 8012dde: bd70 pop {r4, r5, r6, pc} + +08012de0 <SUBGRF_SetRxBoosted>: + 8012de0: b513 push {r0, r1, r4, lr} + 8012de2: 4b0c ldr r3, [pc, #48] ; (8012e14 <SUBGRF_SetRxBoosted+0x34>) + 8012de4: 4604 mov r4, r0 + 8012de6: 2205 movs r2, #5 + 8012de8: 2197 movs r1, #151 ; 0x97 + 8012dea: f640 00ac movw r0, #2220 ; 0x8ac + 8012dee: 701a strb r2, [r3, #0] + 8012df0: f7ff fe88 bl 8012b04 <SUBGRF_WriteRegister> + 8012df4: 0c23 lsrs r3, r4, #16 + 8012df6: f88d 3004 strb.w r3, [sp, #4] + 8012dfa: 2203 movs r2, #3 + 8012dfc: 0a23 lsrs r3, r4, #8 + 8012dfe: a901 add r1, sp, #4 + 8012e00: 2082 movs r0, #130 ; 0x82 + 8012e02: f88d 3005 strb.w r3, [sp, #5] + 8012e06: f88d 4006 strb.w r4, [sp, #6] + 8012e0a: f7ff ff3f bl 8012c8c <SUBGRF_WriteCommand> + 8012e0e: b002 add sp, #8 + 8012e10: bd10 pop {r4, pc} + 8012e12: bf00 nop + 8012e14: 200027be .word 0x200027be + +08012e18 <SUBGRF_SetRxDutyCycle>: + 8012e18: b507 push {r0, r1, r2, lr} + 8012e1a: 0c03 lsrs r3, r0, #16 + 8012e1c: f88d 3000 strb.w r3, [sp] + 8012e20: 0a03 lsrs r3, r0, #8 + 8012e22: f88d 3001 strb.w r3, [sp, #1] + 8012e26: 0c0b lsrs r3, r1, #16 + 8012e28: ba49 rev16 r1, r1 + 8012e2a: f88d 0002 strb.w r0, [sp, #2] + 8012e2e: f8ad 1004 strh.w r1, [sp, #4] + 8012e32: 2206 movs r2, #6 + 8012e34: 4669 mov r1, sp + 8012e36: 2094 movs r0, #148 ; 0x94 + 8012e38: f88d 3003 strb.w r3, [sp, #3] + 8012e3c: f7ff ff26 bl 8012c8c <SUBGRF_WriteCommand> + 8012e40: 4b02 ldr r3, [pc, #8] ; (8012e4c <SUBGRF_SetRxDutyCycle+0x34>) + 8012e42: 2206 movs r2, #6 + 8012e44: 701a strb r2, [r3, #0] + 8012e46: b003 add sp, #12 + 8012e48: f85d fb04 ldr.w pc, [sp], #4 + 8012e4c: 200027be .word 0x200027be + +08012e50 <SUBGRF_SetCad>: + 8012e50: 2200 movs r2, #0 + 8012e52: b508 push {r3, lr} + 8012e54: 4611 mov r1, r2 + 8012e56: 20c5 movs r0, #197 ; 0xc5 + 8012e58: f7ff ff18 bl 8012c8c <SUBGRF_WriteCommand> + 8012e5c: 4b01 ldr r3, [pc, #4] ; (8012e64 <SUBGRF_SetCad+0x14>) + 8012e5e: 2207 movs r2, #7 + 8012e60: 701a strb r2, [r3, #0] + 8012e62: bd08 pop {r3, pc} + 8012e64: 200027be .word 0x200027be + +08012e68 <SUBGRF_SetTxContinuousWave>: + 8012e68: 2200 movs r2, #0 + 8012e6a: 4611 mov r1, r2 + 8012e6c: 20d1 movs r0, #209 ; 0xd1 + 8012e6e: f7ff bf0d b.w 8012c8c <SUBGRF_WriteCommand> + +08012e72 <SUBGRF_SetTxInfinitePreamble>: + 8012e72: 2200 movs r2, #0 + 8012e74: 4611 mov r1, r2 + 8012e76: 20d2 movs r0, #210 ; 0xd2 + 8012e78: f7ff bf08 b.w 8012c8c <SUBGRF_WriteCommand> + +08012e7c <SUBGRF_SetStopRxTimerOnPreambleDetect>: + 8012e7c: b507 push {r0, r1, r2, lr} + 8012e7e: 2201 movs r2, #1 + 8012e80: f88d 0007 strb.w r0, [sp, #7] + 8012e84: f10d 0107 add.w r1, sp, #7 + 8012e88: 209f movs r0, #159 ; 0x9f + 8012e8a: f7ff feff bl 8012c8c <SUBGRF_WriteCommand> + 8012e8e: b003 add sp, #12 + 8012e90: f85d fb04 ldr.w pc, [sp], #4 + +08012e94 <SUBGRF_SetLoRaSymbNumTimeout>: + 8012e94: b507 push {r0, r1, r2, lr} + 8012e96: 2201 movs r2, #1 + 8012e98: f88d 0007 strb.w r0, [sp, #7] + 8012e9c: f10d 0107 add.w r1, sp, #7 + 8012ea0: 20a0 movs r0, #160 ; 0xa0 + 8012ea2: f7ff fef3 bl 8012c8c <SUBGRF_WriteCommand> + 8012ea6: f89d 1007 ldrb.w r1, [sp, #7] + 8012eaa: 293f cmp r1, #63 ; 0x3f + 8012eac: d907 bls.n 8012ebe <SUBGRF_SetLoRaSymbNumTimeout+0x2a> + 8012eae: f001 01f8 and.w r1, r1, #248 ; 0xf8 + 8012eb2: 3101 adds r1, #1 + 8012eb4: b2c9 uxtb r1, r1 + 8012eb6: f240 7006 movw r0, #1798 ; 0x706 + 8012eba: f7ff fe23 bl 8012b04 <SUBGRF_WriteRegister> + 8012ebe: b003 add sp, #12 + 8012ec0: f85d fb04 ldr.w pc, [sp], #4 + +08012ec4 <SUBGRF_SetRegulatorMode>: + 8012ec4: b507 push {r0, r1, r2, lr} + 8012ec6: f7f1 fbef bl 80046a8 <RBI_IsDCDC> + 8012eca: 1e43 subs r3, r0, #1 + 8012ecc: 4258 negs r0, r3 + 8012ece: 4158 adcs r0, r3 + 8012ed0: f88d 0007 strb.w r0, [sp, #7] + 8012ed4: 2201 movs r2, #1 + 8012ed6: f10d 0107 add.w r1, sp, #7 + 8012eda: 2096 movs r0, #150 ; 0x96 + 8012edc: f7ff fed6 bl 8012c8c <SUBGRF_WriteCommand> + 8012ee0: b003 add sp, #12 + 8012ee2: f85d fb04 ldr.w pc, [sp], #4 + +08012ee6 <SUBGRF_Calibrate>: + 8012ee6: b507 push {r0, r1, r2, lr} + 8012ee8: f000 007f and.w r0, r0, #127 ; 0x7f + 8012eec: f88d 0007 strb.w r0, [sp, #7] + 8012ef0: 2201 movs r2, #1 + 8012ef2: f10d 0107 add.w r1, sp, #7 + 8012ef6: 2089 movs r0, #137 ; 0x89 + 8012ef8: f7ff fec8 bl 8012c8c <SUBGRF_WriteCommand> + 8012efc: b003 add sp, #12 + 8012efe: f85d fb04 ldr.w pc, [sp], #4 + ... + +08012f04 <SUBGRF_CalibrateImage>: + 8012f04: 4b15 ldr r3, [pc, #84] ; (8012f5c <SUBGRF_CalibrateImage+0x58>) + 8012f06: 4298 cmp r0, r3 + 8012f08: b507 push {r0, r1, r2, lr} + 8012f0a: d81b bhi.n 8012f44 <SUBGRF_CalibrateImage+0x40> + 8012f0c: 4b14 ldr r3, [pc, #80] ; (8012f60 <SUBGRF_CalibrateImage+0x5c>) + 8012f0e: 4298 cmp r0, r3 + 8012f10: d81b bhi.n 8012f4a <SUBGRF_CalibrateImage+0x46> + 8012f12: 4b14 ldr r3, [pc, #80] ; (8012f64 <SUBGRF_CalibrateImage+0x60>) + 8012f14: 4298 cmp r0, r3 + 8012f16: d81b bhi.n 8012f50 <SUBGRF_CalibrateImage+0x4c> + 8012f18: 4b13 ldr r3, [pc, #76] ; (8012f68 <SUBGRF_CalibrateImage+0x64>) + 8012f1a: 4298 cmp r0, r3 + 8012f1c: d81b bhi.n 8012f56 <SUBGRF_CalibrateImage+0x52> + 8012f1e: 4b13 ldr r3, [pc, #76] ; (8012f6c <SUBGRF_CalibrateImage+0x68>) + 8012f20: 4298 cmp r0, r3 + 8012f22: bf95 itete ls + 8012f24: 2229 movls r2, #41 ; 0x29 + 8012f26: 226b movhi r2, #107 ; 0x6b + 8012f28: 232b movls r3, #43 ; 0x2b + 8012f2a: 236f movhi r3, #111 ; 0x6f + 8012f2c: f88d 2004 strb.w r2, [sp, #4] + 8012f30: a901 add r1, sp, #4 + 8012f32: 2202 movs r2, #2 + 8012f34: 2098 movs r0, #152 ; 0x98 + 8012f36: f88d 3005 strb.w r3, [sp, #5] + 8012f3a: f7ff fea7 bl 8012c8c <SUBGRF_WriteCommand> + 8012f3e: b003 add sp, #12 + 8012f40: f85d fb04 ldr.w pc, [sp], #4 + 8012f44: 22e1 movs r2, #225 ; 0xe1 + 8012f46: 23e9 movs r3, #233 ; 0xe9 + 8012f48: e7f0 b.n 8012f2c <SUBGRF_CalibrateImage+0x28> + 8012f4a: 22d7 movs r2, #215 ; 0xd7 + 8012f4c: 23db movs r3, #219 ; 0xdb + 8012f4e: e7ed b.n 8012f2c <SUBGRF_CalibrateImage+0x28> + 8012f50: 22c1 movs r2, #193 ; 0xc1 + 8012f52: 23c5 movs r3, #197 ; 0xc5 + 8012f54: e7ea b.n 8012f2c <SUBGRF_CalibrateImage+0x28> + 8012f56: 2275 movs r2, #117 ; 0x75 + 8012f58: 2381 movs r3, #129 ; 0x81 + 8012f5a: e7e7 b.n 8012f2c <SUBGRF_CalibrateImage+0x28> + 8012f5c: 35a4e900 .word 0x35a4e900 + 8012f60: 32a9f880 .word 0x32a9f880 + 8012f64: 2de54480 .word 0x2de54480 + 8012f68: 1b6b0b00 .word 0x1b6b0b00 + 8012f6c: 1954fc40 .word 0x1954fc40 + +08012f70 <SUBGRF_SetPaConfig>: + 8012f70: b507 push {r0, r1, r2, lr} + 8012f72: f88d 2006 strb.w r2, [sp, #6] + 8012f76: 2204 movs r2, #4 + 8012f78: f88d 0004 strb.w r0, [sp, #4] + 8012f7c: f88d 1005 strb.w r1, [sp, #5] + 8012f80: 2095 movs r0, #149 ; 0x95 + 8012f82: eb0d 0102 add.w r1, sp, r2 + 8012f86: f88d 3007 strb.w r3, [sp, #7] + 8012f8a: f7ff fe7f bl 8012c8c <SUBGRF_WriteCommand> + 8012f8e: b003 add sp, #12 + 8012f90: f85d fb04 ldr.w pc, [sp], #4 + +08012f94 <SUBGRF_SetDioIrqParams>: + 8012f94: b507 push {r0, r1, r2, lr} + 8012f96: ba52 rev16 r2, r2 + 8012f98: f8ad 2004 strh.w r2, [sp, #4] + 8012f9c: ba40 rev16 r0, r0 + 8012f9e: 2208 movs r2, #8 + 8012fa0: ba49 rev16 r1, r1 + 8012fa2: f8ad 0000 strh.w r0, [sp] + 8012fa6: f8ad 1002 strh.w r1, [sp, #2] + 8012faa: ba5b rev16 r3, r3 + 8012fac: 4669 mov r1, sp + 8012fae: 4610 mov r0, r2 + 8012fb0: f8ad 3006 strh.w r3, [sp, #6] + 8012fb4: f7ff fe6a bl 8012c8c <SUBGRF_WriteCommand> + 8012fb8: b003 add sp, #12 + 8012fba: f85d fb04 ldr.w pc, [sp], #4 + +08012fbe <SUBGRF_SetTcxoMode>: + 8012fbe: b507 push {r0, r1, r2, lr} + 8012fc0: 0c0b lsrs r3, r1, #16 + 8012fc2: 2204 movs r2, #4 + 8012fc4: f000 0007 and.w r0, r0, #7 + 8012fc8: ba49 rev16 r1, r1 + 8012fca: f88d 0004 strb.w r0, [sp, #4] + 8012fce: f8ad 1006 strh.w r1, [sp, #6] + 8012fd2: 2097 movs r0, #151 ; 0x97 + 8012fd4: eb0d 0102 add.w r1, sp, r2 + 8012fd8: f88d 3005 strb.w r3, [sp, #5] + 8012fdc: f7ff fe56 bl 8012c8c <SUBGRF_WriteCommand> + 8012fe0: b003 add sp, #12 + 8012fe2: f85d fb04 ldr.w pc, [sp], #4 + ... + +08012fe8 <SUBGRF_Init>: + 8012fe8: b510 push {r4, lr} + 8012fea: b108 cbz r0, 8012ff0 <SUBGRF_Init+0x8> + 8012fec: 4b19 ldr r3, [pc, #100] ; (8013054 <SUBGRF_Init+0x6c>) + 8012fee: 6018 str r0, [r3, #0] + 8012ff0: f7ef fcb6 bl 8002960 <MX_SUBGHZ_Init> + 8012ff4: 2002 movs r0, #2 + 8012ff6: f7ff fda5 bl 8012b44 <Radio_SMPS_Set> + 8012ffa: 2400 movs r4, #0 + 8012ffc: 4b16 ldr r3, [pc, #88] ; (8013058 <SUBGRF_Init+0x70>) + 8012ffe: 4620 mov r0, r4 + 8013000: 701c strb r4, [r3, #0] + 8013002: f7ff fe6d bl 8012ce0 <SUBGRF_SetStandby> + 8013006: f7f1 fb4d bl 80046a4 <RBI_IsTCXO> + 801300a: 2801 cmp r0, #1 + 801300c: d117 bne.n 801303e <SUBGRF_Init+0x56> + 801300e: f44f 7120 mov.w r1, #640 ; 0x280 + 8013012: f7ff ffd4 bl 8012fbe <SUBGRF_SetTcxoMode> + 8013016: f640 1011 movw r0, #2321 ; 0x911 + 801301a: 4621 mov r1, r4 + 801301c: f7ff fd72 bl 8012b04 <SUBGRF_WriteRegister> + 8013020: f04f 007f mov.w r0, #127 ; 0x7f + 8013024: f7ff ff5f bl 8012ee6 <SUBGRF_Calibrate> + 8013028: 210e movs r1, #14 + 801302a: f640 101f movw r0, #2335 ; 0x91f + 801302e: f7ff fd69 bl 8012b04 <SUBGRF_WriteRegister> + 8013032: f7f1 fadf bl 80045f4 <RBI_Init> + 8013036: 4b09 ldr r3, [pc, #36] ; (801305c <SUBGRF_Init+0x74>) + 8013038: 2201 movs r2, #1 + 801303a: 701a strb r2, [r3, #0] + 801303c: bd10 pop {r4, pc} + 801303e: 2110 movs r1, #16 + 8013040: f640 1011 movw r0, #2321 ; 0x911 + 8013044: f7ff fd5e bl 8012b04 <SUBGRF_WriteRegister> + 8013048: 2110 movs r1, #16 + 801304a: f640 1012 movw r0, #2322 ; 0x912 + 801304e: f7ff fd59 bl 8012b04 <SUBGRF_WriteRegister> + 8013052: e7e9 b.n 8013028 <SUBGRF_Init+0x40> + 8013054: 200027c0 .word 0x200027c0 + 8013058: 200027bc .word 0x200027bc + 801305c: 200027be .word 0x200027be + +08013060 <SUBGRF_SetRfFrequency>: + 8013060: b537 push {r0, r1, r2, r4, r5, lr} + 8013062: 4d0c ldr r5, [pc, #48] ; (8013094 <SUBGRF_SetRfFrequency+0x34>) + 8013064: 782b ldrb r3, [r5, #0] + 8013066: 4604 mov r4, r0 + 8013068: b91b cbnz r3, 8013072 <SUBGRF_SetRfFrequency+0x12> + 801306a: f7ff ff4b bl 8012f04 <SUBGRF_CalibrateImage> + 801306e: 2301 movs r3, #1 + 8013070: 702b strb r3, [r5, #0] + 8013072: 2300 movs r3, #0 + 8013074: 4a08 ldr r2, [pc, #32] ; (8013098 <SUBGRF_SetRfFrequency+0x38>) + 8013076: 0660 lsls r0, r4, #25 + 8013078: 09e1 lsrs r1, r4, #7 + 801307a: f7ee fd49 bl 8001b10 <__aeabi_uldivmod> + 801307e: 2204 movs r2, #4 + 8013080: ba00 rev r0, r0 + 8013082: 9001 str r0, [sp, #4] + 8013084: eb0d 0102 add.w r1, sp, r2 + 8013088: 2086 movs r0, #134 ; 0x86 + 801308a: f7ff fdff bl 8012c8c <SUBGRF_WriteCommand> + 801308e: b003 add sp, #12 + 8013090: bd30 pop {r4, r5, pc} + 8013092: bf00 nop + 8013094: 200027bc .word 0x200027bc + 8013098: 01e84800 .word 0x01e84800 + +0801309c <SUBGRF_SetPacketType>: + 801309c: b507 push {r0, r1, r2, lr} + 801309e: 4b09 ldr r3, [pc, #36] ; (80130c4 <SUBGRF_SetPacketType+0x28>) + 80130a0: f88d 0007 strb.w r0, [sp, #7] + 80130a4: 4601 mov r1, r0 + 80130a6: 7018 strb r0, [r3, #0] + 80130a8: b918 cbnz r0, 80130b2 <SUBGRF_SetPacketType+0x16> + 80130aa: f240 60ac movw r0, #1708 ; 0x6ac + 80130ae: f7ff fd29 bl 8012b04 <SUBGRF_WriteRegister> + 80130b2: 2201 movs r2, #1 + 80130b4: f10d 0107 add.w r1, sp, #7 + 80130b8: 208a movs r0, #138 ; 0x8a + 80130ba: f7ff fde7 bl 8012c8c <SUBGRF_WriteCommand> + 80130be: b003 add sp, #12 + 80130c0: f85d fb04 ldr.w pc, [sp], #4 + 80130c4: 200027bf .word 0x200027bf + +080130c8 <SUBGRF_SetTxParams>: + 80130c8: 2801 cmp r0, #1 + 80130ca: b573 push {r0, r1, r4, r5, r6, lr} + 80130cc: 460c mov r4, r1 + 80130ce: 4616 mov r6, r2 + 80130d0: d137 bne.n 8013142 <SUBGRF_SetTxParams+0x7a> + 80130d2: 2000 movs r0, #0 + 80130d4: f7f1 faea bl 80046ac <RBI_GetRFOMaxPowerConfig> + 80130d8: 42a0 cmp r0, r4 + 80130da: bfb8 it lt + 80130dc: b244 sxtblt r4, r0 + 80130de: 280e cmp r0, #14 + 80130e0: 4605 mov r5, r0 + 80130e2: d11a bne.n 801311a <SUBGRF_SetTxParams+0x52> + 80130e4: 2301 movs r3, #1 + 80130e6: 461a mov r2, r3 + 80130e8: 2100 movs r1, #0 + 80130ea: 2004 movs r0, #4 + 80130ec: f7ff ff40 bl 8012f70 <SUBGRF_SetPaConfig> + 80130f0: f06f 0310 mvn.w r3, #16 + 80130f4: 429c cmp r4, r3 + 80130f6: bfb8 it lt + 80130f8: 461c movlt r4, r3 + 80130fa: 2118 movs r1, #24 + 80130fc: f640 00e7 movw r0, #2279 ; 0x8e7 + 8013100: f7ff fd00 bl 8012b04 <SUBGRF_WriteRegister> + 8013104: 2202 movs r2, #2 + 8013106: a901 add r1, sp, #4 + 8013108: 208e movs r0, #142 ; 0x8e + 801310a: f88d 4004 strb.w r4, [sp, #4] + 801310e: f88d 6005 strb.w r6, [sp, #5] + 8013112: f7ff fdbb bl 8012c8c <SUBGRF_WriteCommand> + 8013116: b002 add sp, #8 + 8013118: bd70 pop {r4, r5, r6, pc} + 801311a: 2301 movs r3, #1 + 801311c: 280a cmp r0, #10 + 801311e: b2e4 uxtb r4, r4 + 8013120: 461a mov r2, r3 + 8013122: f04f 0100 mov.w r1, #0 + 8013126: d105 bne.n 8013134 <SUBGRF_SetTxParams+0x6c> + 8013128: 4618 mov r0, r3 + 801312a: f7ff ff21 bl 8012f70 <SUBGRF_SetPaConfig> + 801312e: 3403 adds r4, #3 + 8013130: b264 sxtb r4, r4 + 8013132: e7dd b.n 80130f0 <SUBGRF_SetTxParams+0x28> + 8013134: 2007 movs r0, #7 + 8013136: f1c5 050e rsb r5, r5, #14 + 801313a: f7ff ff19 bl 8012f70 <SUBGRF_SetPaConfig> + 801313e: 442c add r4, r5 + 8013140: e7f6 b.n 8013130 <SUBGRF_SetTxParams+0x68> + 8013142: f640 00d8 movw r0, #2264 ; 0x8d8 + 8013146: f7ff fced bl 8012b24 <SUBGRF_ReadRegister> + 801314a: f040 011e orr.w r1, r0, #30 + 801314e: b2c9 uxtb r1, r1 + 8013150: f640 00d8 movw r0, #2264 ; 0x8d8 + 8013154: f7ff fcd6 bl 8012b04 <SUBGRF_WriteRegister> + 8013158: 2001 movs r0, #1 + 801315a: f7f1 faa7 bl 80046ac <RBI_GetRFOMaxPowerConfig> + 801315e: 42a0 cmp r0, r4 + 8013160: bfb8 it lt + 8013162: b244 sxtblt r4, r0 + 8013164: 2814 cmp r0, #20 + 8013166: 4605 mov r5, r0 + 8013168: f04f 0301 mov.w r3, #1 + 801316c: f04f 0200 mov.w r2, #0 + 8013170: d10c bne.n 801318c <SUBGRF_SetTxParams+0xc4> + 8013172: 2105 movs r1, #5 + 8013174: 2003 movs r0, #3 + 8013176: f7ff fefb bl 8012f70 <SUBGRF_SetPaConfig> + 801317a: 3402 adds r4, #2 + 801317c: b264 sxtb r4, r4 + 801317e: f06f 0308 mvn.w r3, #8 + 8013182: 429c cmp r4, r3 + 8013184: bfb8 it lt + 8013186: 461c movlt r4, r3 + 8013188: 2138 movs r1, #56 ; 0x38 + 801318a: e7b7 b.n 80130fc <SUBGRF_SetTxParams+0x34> + 801318c: 2811 cmp r0, #17 + 801318e: d105 bne.n 801319c <SUBGRF_SetTxParams+0xd4> + 8013190: 2103 movs r1, #3 + 8013192: 2002 movs r0, #2 + 8013194: f7ff feec bl 8012f70 <SUBGRF_SetPaConfig> + 8013198: 3405 adds r4, #5 + 801319a: e7ef b.n 801317c <SUBGRF_SetTxParams+0xb4> + 801319c: 280e cmp r0, #14 + 801319e: d104 bne.n 80131aa <SUBGRF_SetTxParams+0xe2> + 80131a0: 2102 movs r1, #2 + 80131a2: 4608 mov r0, r1 + 80131a4: f7ff fee4 bl 8012f70 <SUBGRF_SetPaConfig> + 80131a8: e7e9 b.n 801317e <SUBGRF_SetTxParams+0xb6> + 80131aa: f1c5 0516 rsb r5, r5, #22 + 80131ae: 2107 movs r1, #7 + 80131b0: 2004 movs r0, #4 + 80131b2: 4425 add r5, r4 + 80131b4: f7ff fedc bl 8012f70 <SUBGRF_SetPaConfig> + 80131b8: b26c sxtb r4, r5 + 80131ba: e7e0 b.n 801317e <SUBGRF_SetTxParams+0xb6> + +080131bc <SUBGRF_SetModulationParams>: + 80131bc: b513 push {r0, r1, r4, lr} + 80131be: 4a31 ldr r2, [pc, #196] ; (8013284 <SUBGRF_SetModulationParams+0xc8>) + 80131c0: 4604 mov r4, r0 + 80131c2: 6851 ldr r1, [r2, #4] + 80131c4: 6810 ldr r0, [r2, #0] + 80131c6: 466b mov r3, sp + 80131c8: c303 stmia r3!, {r0, r1} + 80131ca: 4b2f ldr r3, [pc, #188] ; (8013288 <SUBGRF_SetModulationParams+0xcc>) + 80131cc: 7820 ldrb r0, [r4, #0] + 80131ce: 781b ldrb r3, [r3, #0] + 80131d0: 4283 cmp r3, r0 + 80131d2: d001 beq.n 80131d8 <SUBGRF_SetModulationParams+0x1c> + 80131d4: f7ff ff62 bl 801309c <SUBGRF_SetPacketType> + 80131d8: 7823 ldrb r3, [r4, #0] + 80131da: 2b03 cmp r3, #3 + 80131dc: d827 bhi.n 801322e <SUBGRF_SetModulationParams+0x72> + 80131de: e8df f003 tbb [pc, r3] + 80131e2: 3902 .short 0x3902 + 80131e4: 3c28 .short 0x3c28 + 80131e6: 6862 ldr r2, [r4, #4] + 80131e8: 4b28 ldr r3, [pc, #160] ; (801328c <SUBGRF_SetModulationParams+0xd0>) + 80131ea: fbb3 f3f2 udiv r3, r3, r2 + 80131ee: 0c1a lsrs r2, r3, #16 + 80131f0: 68a1 ldr r1, [r4, #8] + 80131f2: f88d 2000 strb.w r2, [sp] + 80131f6: f88d 3002 strb.w r3, [sp, #2] + 80131fa: 0a1a lsrs r2, r3, #8 + 80131fc: 7b23 ldrb r3, [r4, #12] + 80131fe: f88d 3003 strb.w r3, [sp, #3] + 8013202: 7b63 ldrb r3, [r4, #13] + 8013204: f88d 2001 strb.w r2, [sp, #1] + 8013208: f88d 3004 strb.w r3, [sp, #4] + 801320c: 4a20 ldr r2, [pc, #128] ; (8013290 <SUBGRF_SetModulationParams+0xd4>) + 801320e: 2300 movs r3, #0 + 8013210: 0648 lsls r0, r1, #25 + 8013212: 09c9 lsrs r1, r1, #7 + 8013214: f7ee fc7c bl 8001b10 <__aeabi_uldivmod> + 8013218: 0c03 lsrs r3, r0, #16 + 801321a: ba40 rev16 r0, r0 + 801321c: f88d 3005 strb.w r3, [sp, #5] + 8013220: f8ad 0006 strh.w r0, [sp, #6] + 8013224: 2208 movs r2, #8 + 8013226: 4669 mov r1, sp + 8013228: 208b movs r0, #139 ; 0x8b + 801322a: f7ff fd2f bl 8012c8c <SUBGRF_WriteCommand> + 801322e: b002 add sp, #8 + 8013230: bd10 pop {r4, pc} + 8013232: 6922 ldr r2, [r4, #16] + 8013234: 4b15 ldr r3, [pc, #84] ; (801328c <SUBGRF_SetModulationParams+0xd0>) + 8013236: fbb3 f3f2 udiv r3, r3, r2 + 801323a: 0c1a lsrs r2, r3, #16 + 801323c: f88d 2000 strb.w r2, [sp] + 8013240: f88d 3002 strb.w r3, [sp, #2] + 8013244: 0a1a lsrs r2, r3, #8 + 8013246: 7d23 ldrb r3, [r4, #20] + 8013248: f88d 2001 strb.w r2, [sp, #1] + 801324c: f88d 3003 strb.w r3, [sp, #3] + 8013250: 2204 movs r2, #4 + 8013252: e7e8 b.n 8013226 <SUBGRF_SetModulationParams+0x6a> + 8013254: 69a3 ldr r3, [r4, #24] + 8013256: 9300 str r3, [sp, #0] + 8013258: e7fa b.n 8013250 <SUBGRF_SetModulationParams+0x94> + 801325a: 6862 ldr r2, [r4, #4] + 801325c: 4b0b ldr r3, [pc, #44] ; (801328c <SUBGRF_SetModulationParams+0xd0>) + 801325e: fbb3 f3f2 udiv r3, r3, r2 + 8013262: 0c1a lsrs r2, r3, #16 + 8013264: f88d 2000 strb.w r2, [sp] + 8013268: f88d 3002 strb.w r3, [sp, #2] + 801326c: 0a1a lsrs r2, r3, #8 + 801326e: 7b23 ldrb r3, [r4, #12] + 8013270: f88d 3003 strb.w r3, [sp, #3] + 8013274: 7b63 ldrb r3, [r4, #13] + 8013276: f88d 2001 strb.w r2, [sp, #1] + 801327a: f88d 3004 strb.w r3, [sp, #4] + 801327e: 2205 movs r2, #5 + 8013280: e7d1 b.n 8013226 <SUBGRF_SetModulationParams+0x6a> + 8013282: bf00 nop + 8013284: 08014434 .word 0x08014434 + 8013288: 200027bf .word 0x200027bf + 801328c: 3d090000 .word 0x3d090000 + 8013290: 01e84800 .word 0x01e84800 + +08013294 <SUBGRF_SetPacketParams>: + 8013294: b51f push {r0, r1, r2, r3, r4, lr} + 8013296: 4a2e ldr r2, [pc, #184] ; (8013350 <SUBGRF_SetPacketParams+0xbc>) + 8013298: 4604 mov r4, r0 + 801329a: 68d1 ldr r1, [r2, #12] + 801329c: 6890 ldr r0, [r2, #8] + 801329e: 7c12 ldrb r2, [r2, #16] + 80132a0: ab01 add r3, sp, #4 + 80132a2: c303 stmia r3!, {r0, r1} + 80132a4: 701a strb r2, [r3, #0] + 80132a6: 4b2b ldr r3, [pc, #172] ; (8013354 <SUBGRF_SetPacketParams+0xc0>) + 80132a8: 7820 ldrb r0, [r4, #0] + 80132aa: 781b ldrb r3, [r3, #0] + 80132ac: 4283 cmp r3, r0 + 80132ae: d001 beq.n 80132b4 <SUBGRF_SetPacketParams+0x20> + 80132b0: f7ff fef4 bl 801309c <SUBGRF_SetPacketType> + 80132b4: 7823 ldrb r3, [r4, #0] + 80132b6: 2b03 cmp r3, #3 + 80132b8: d826 bhi.n 8013308 <SUBGRF_SetPacketParams+0x74> + 80132ba: e8df f003 tbb [pc, r3] + 80132be: 3802 .short 0x3802 + 80132c0: 0233 .short 0x0233 + 80132c2: 7a63 ldrb r3, [r4, #9] + 80132c4: 2bf1 cmp r3, #241 ; 0xf1 + 80132c6: d121 bne.n 801330c <SUBGRF_SetPacketParams+0x78> + 80132c8: f64f 70ff movw r0, #65535 ; 0xffff + 80132cc: f7ff fc84 bl 8012bd8 <SUBGRF_SetCrcSeed> + 80132d0: f248 0005 movw r0, #32773 ; 0x8005 + 80132d4: f7ff fc92 bl 8012bfc <SUBGRF_SetCrcPolynomial> + 80132d8: 2302 movs r3, #2 + 80132da: 8862 ldrh r2, [r4, #2] + 80132dc: 88a1 ldrh r1, [r4, #4] + 80132de: f8ad 1006 strh.w r1, [sp, #6] + 80132e2: ba52 rev16 r2, r2 + 80132e4: 88e1 ldrh r1, [r4, #6] + 80132e6: f8ad 2004 strh.w r2, [sp, #4] + 80132ea: f88d 300b strb.w r3, [sp, #11] + 80132ee: 7a22 ldrb r2, [r4, #8] + 80132f0: 7aa3 ldrb r3, [r4, #10] + 80132f2: f88d 200a strb.w r2, [sp, #10] + 80132f6: f8ad 1008 strh.w r1, [sp, #8] + 80132fa: f88d 300c strb.w r3, [sp, #12] + 80132fe: 2209 movs r2, #9 + 8013300: a901 add r1, sp, #4 + 8013302: 208c movs r0, #140 ; 0x8c + 8013304: f7ff fcc2 bl 8012c8c <SUBGRF_WriteCommand> + 8013308: b004 add sp, #16 + 801330a: bd10 pop {r4, pc} + 801330c: 2bf2 cmp r3, #242 ; 0xf2 + 801330e: d1e4 bne.n 80132da <SUBGRF_SetPacketParams+0x46> + 8013310: f641 500f movw r0, #7439 ; 0x1d0f + 8013314: f7ff fc60 bl 8012bd8 <SUBGRF_SetCrcSeed> + 8013318: f241 0021 movw r0, #4129 ; 0x1021 + 801331c: f7ff fc6e bl 8012bfc <SUBGRF_SetCrcPolynomial> + 8013320: 2306 movs r3, #6 + 8013322: e7da b.n 80132da <SUBGRF_SetPacketParams+0x46> + 8013324: 7b23 ldrb r3, [r4, #12] + 8013326: f88d 3004 strb.w r3, [sp, #4] + 801332a: 2201 movs r2, #1 + 801332c: e7e8 b.n 8013300 <SUBGRF_SetPacketParams+0x6c> + 801332e: 89e3 ldrh r3, [r4, #14] + 8013330: 4a09 ldr r2, [pc, #36] ; (8013358 <SUBGRF_SetPacketParams+0xc4>) + 8013332: ba5b rev16 r3, r3 + 8013334: f8ad 3004 strh.w r3, [sp, #4] + 8013338: 7c23 ldrb r3, [r4, #16] + 801333a: 7013 strb r3, [r2, #0] + 801333c: f88d 3006 strb.w r3, [sp, #6] + 8013340: 7c63 ldrb r3, [r4, #17] + 8013342: f88d 3007 strb.w r3, [sp, #7] + 8013346: 8a63 ldrh r3, [r4, #18] + 8013348: f8ad 3008 strh.w r3, [sp, #8] + 801334c: 2206 movs r2, #6 + 801334e: e7d7 b.n 8013300 <SUBGRF_SetPacketParams+0x6c> + 8013350: 08014434 .word 0x08014434 + 8013354: 200027bf .word 0x200027bf + 8013358: 200027bd .word 0x200027bd + +0801335c <SUBGRF_SetBufferBaseAddress>: + 801335c: b507 push {r0, r1, r2, lr} + 801335e: 2202 movs r2, #2 + 8013360: f88d 0004 strb.w r0, [sp, #4] + 8013364: f88d 1005 strb.w r1, [sp, #5] + 8013368: 208f movs r0, #143 ; 0x8f + 801336a: a901 add r1, sp, #4 + 801336c: f7ff fc8e bl 8012c8c <SUBGRF_WriteCommand> + 8013370: b003 add sp, #12 + 8013372: f85d fb04 ldr.w pc, [sp], #4 + ... + +08013378 <SUBGRF_ReadCommand>: + 8013378: b510 push {r4, lr} + 801337a: 4613 mov r3, r2 + 801337c: f3ef 8410 mrs r4, PRIMASK + 8013380: b672 cpsid i + 8013382: 460a mov r2, r1 + 8013384: 4601 mov r1, r0 + 8013386: 4803 ldr r0, [pc, #12] ; (8013394 <SUBGRF_ReadCommand+0x1c>) + 8013388: f7f6 fe78 bl 800a07c <HAL_SUBGHZ_ExecGetCmd> + 801338c: f384 8810 msr PRIMASK, r4 + 8013390: bd10 pop {r4, pc} + 8013392: bf00 nop + 8013394: 20000acc .word 0x20000acc + +08013398 <SUBGRF_GetRssiInst>: + 8013398: b507 push {r0, r1, r2, lr} + 801339a: 2201 movs r2, #1 + 801339c: a901 add r1, sp, #4 + 801339e: 2015 movs r0, #21 + 80133a0: f7ff ffea bl 8013378 <SUBGRF_ReadCommand> + 80133a4: f89d 0004 ldrb.w r0, [sp, #4] + 80133a8: 4240 negs r0, r0 + 80133aa: 1040 asrs r0, r0, #1 + 80133ac: b003 add sp, #12 + 80133ae: f85d fb04 ldr.w pc, [sp], #4 + ... + +080133b4 <SUBGRF_GetRxBufferStatus>: + 80133b4: b537 push {r0, r1, r2, r4, r5, lr} + 80133b6: 4605 mov r5, r0 + 80133b8: 460c mov r4, r1 + 80133ba: 2202 movs r2, #2 + 80133bc: a901 add r1, sp, #4 + 80133be: 2013 movs r0, #19 + 80133c0: f7ff ffda bl 8013378 <SUBGRF_ReadCommand> + 80133c4: 4b0a ldr r3, [pc, #40] ; (80133f0 <SUBGRF_GetRxBufferStatus+0x3c>) + 80133c6: 781b ldrb r3, [r3, #0] + 80133c8: 2b01 cmp r3, #1 + 80133ca: d10d bne.n 80133e8 <SUBGRF_GetRxBufferStatus+0x34> + 80133cc: 4b09 ldr r3, [pc, #36] ; (80133f4 <SUBGRF_GetRxBufferStatus+0x40>) + 80133ce: 781b ldrb r3, [r3, #0] + 80133d0: 2b01 cmp r3, #1 + 80133d2: d109 bne.n 80133e8 <SUBGRF_GetRxBufferStatus+0x34> + 80133d4: f240 7002 movw r0, #1794 ; 0x702 + 80133d8: f7ff fba4 bl 8012b24 <SUBGRF_ReadRegister> + 80133dc: f89d 3005 ldrb.w r3, [sp, #5] + 80133e0: 7028 strb r0, [r5, #0] + 80133e2: 7023 strb r3, [r4, #0] + 80133e4: b003 add sp, #12 + 80133e6: bd30 pop {r4, r5, pc} + 80133e8: f89d 0004 ldrb.w r0, [sp, #4] + 80133ec: e7f6 b.n 80133dc <SUBGRF_GetRxBufferStatus+0x28> + 80133ee: bf00 nop + 80133f0: 200027bf .word 0x200027bf + 80133f4: 200027bd .word 0x200027bd + +080133f8 <SUBGRF_GetPayload>: + 80133f8: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 80133fa: 460d mov r5, r1 + 80133fc: 4606 mov r6, r0 + 80133fe: 2400 movs r4, #0 + 8013400: f10d 0107 add.w r1, sp, #7 + 8013404: 4628 mov r0, r5 + 8013406: 4617 mov r7, r2 + 8013408: f88d 4007 strb.w r4, [sp, #7] + 801340c: f7ff ffd2 bl 80133b4 <SUBGRF_GetRxBufferStatus> + 8013410: 782a ldrb r2, [r5, #0] + 8013412: 42ba cmp r2, r7 + 8013414: d807 bhi.n 8013426 <SUBGRF_GetPayload+0x2e> + 8013416: f89d 0007 ldrb.w r0, [sp, #7] + 801341a: 4631 mov r1, r6 + 801341c: f7ff fc26 bl 8012c6c <SUBGRF_ReadBuffer> + 8013420: 4620 mov r0, r4 + 8013422: b003 add sp, #12 + 8013424: bdf0 pop {r4, r5, r6, r7, pc} + 8013426: 2001 movs r0, #1 + 8013428: e7fb b.n 8013422 <SUBGRF_GetPayload+0x2a> + ... + +0801342c <SUBGRF_GetPacketStatus>: + 801342c: b513 push {r0, r1, r4, lr} + 801342e: 2203 movs r2, #3 + 8013430: 4604 mov r4, r0 + 8013432: a901 add r1, sp, #4 + 8013434: 2014 movs r0, #20 + 8013436: f7ff ff9f bl 8013378 <SUBGRF_ReadCommand> + 801343a: 4b18 ldr r3, [pc, #96] ; (801349c <SUBGRF_GetPacketStatus+0x70>) + 801343c: 781a ldrb r2, [r3, #0] + 801343e: 7022 strb r2, [r4, #0] + 8013440: b14a cbz r2, 8013456 <SUBGRF_GetPacketStatus+0x2a> + 8013442: 2a01 cmp r2, #1 + 8013444: d017 beq.n 8013476 <SUBGRF_GetPacketStatus+0x4a> + 8013446: 2214 movs r2, #20 + 8013448: 2100 movs r1, #0 + 801344a: 4620 mov r0, r4 + 801344c: f000 fad2 bl 80139f4 <UTIL_MEM_set_8> + 8013450: 230f movs r3, #15 + 8013452: 7023 strb r3, [r4, #0] + 8013454: e00d b.n 8013472 <SUBGRF_GetPacketStatus+0x46> + 8013456: f89d 3004 ldrb.w r3, [sp, #4] + 801345a: 7123 strb r3, [r4, #4] + 801345c: f89d 3005 ldrb.w r3, [sp, #5] + 8013460: 60a2 str r2, [r4, #8] + 8013462: 425b negs r3, r3 + 8013464: 105b asrs r3, r3, #1 + 8013466: 71a3 strb r3, [r4, #6] + 8013468: f89d 3006 ldrb.w r3, [sp, #6] + 801346c: 425b negs r3, r3 + 801346e: 105b asrs r3, r3, #1 + 8013470: 7163 strb r3, [r4, #5] + 8013472: b002 add sp, #8 + 8013474: bd10 pop {r4, pc} + 8013476: f89d 3004 ldrb.w r3, [sp, #4] + 801347a: 425b negs r3, r3 + 801347c: 105b asrs r3, r3, #1 + 801347e: 7323 strb r3, [r4, #12] + 8013480: f99d 3005 ldrsb.w r3, [sp, #5] + 8013484: 3302 adds r3, #2 + 8013486: 109b asrs r3, r3, #2 + 8013488: 7363 strb r3, [r4, #13] + 801348a: f89d 3006 ldrb.w r3, [sp, #6] + 801348e: 425b negs r3, r3 + 8013490: 105b asrs r3, r3, #1 + 8013492: 73a3 strb r3, [r4, #14] + 8013494: 4b02 ldr r3, [pc, #8] ; (80134a0 <SUBGRF_GetPacketStatus+0x74>) + 8013496: 681b ldr r3, [r3, #0] + 8013498: 6123 str r3, [r4, #16] + 801349a: e7ea b.n 8013472 <SUBGRF_GetPacketStatus+0x46> + 801349c: 200027bf .word 0x200027bf + 80134a0: 200027b8 .word 0x200027b8 + +080134a4 <SUBGRF_SetSwitch>: + 80134a4: 2901 cmp r1, #1 + 80134a6: b508 push {r3, lr} + 80134a8: 4603 mov r3, r0 + 80134aa: 4608 mov r0, r1 + 80134ac: d10e bne.n 80134cc <SUBGRF_SetSwitch+0x28> + 80134ae: 2b01 cmp r3, #1 + 80134b0: d107 bne.n 80134c2 <SUBGRF_SetSwitch+0x1e> + 80134b2: 2004 movs r0, #4 + 80134b4: f7ff fb46 bl 8012b44 <Radio_SMPS_Set> + 80134b8: 2002 movs r0, #2 + 80134ba: e8bd 4008 ldmia.w sp!, {r3, lr} + 80134be: f7f1 b8cd b.w 800465c <RBI_ConfigRFSwitch> + 80134c2: 2b02 cmp r3, #2 + 80134c4: bf14 ite ne + 80134c6: 4608 movne r0, r1 + 80134c8: 2003 moveq r0, #3 + 80134ca: e7f6 b.n 80134ba <SUBGRF_SetSwitch+0x16> + 80134cc: 2001 movs r0, #1 + 80134ce: e7f4 b.n 80134ba <SUBGRF_SetSwitch+0x16> + +080134d0 <SUBGRF_SetRfTxPower>: + 80134d0: b538 push {r3, r4, r5, lr} + 80134d2: 4604 mov r4, r0 + 80134d4: f7f1 f8e4 bl 80046a0 <RBI_GetTxConfig> + 80134d8: b150 cbz r0, 80134f0 <SUBGRF_SetRfTxPower+0x20> + 80134da: 2802 cmp r0, #2 + 80134dc: bf14 ite ne + 80134de: 2501 movne r5, #1 + 80134e0: 2502 moveq r5, #2 + 80134e2: 4628 mov r0, r5 + 80134e4: 2202 movs r2, #2 + 80134e6: 4621 mov r1, r4 + 80134e8: f7ff fdee bl 80130c8 <SUBGRF_SetTxParams> + 80134ec: 4628 mov r0, r5 + 80134ee: bd38 pop {r3, r4, r5, pc} + 80134f0: 2c0f cmp r4, #15 + 80134f2: bfcc ite gt + 80134f4: 2502 movgt r5, #2 + 80134f6: 2501 movle r5, #1 + 80134f8: e7f3 b.n 80134e2 <SUBGRF_SetRfTxPower+0x12> + +080134fa <SUBGRF_GetRadioWakeUpTime>: + 80134fa: 200a movs r0, #10 + 80134fc: 4770 bx lr + ... + +08013500 <HAL_SUBGHZ_TxCpltCallback>: + 8013500: 4b01 ldr r3, [pc, #4] ; (8013508 <HAL_SUBGHZ_TxCpltCallback+0x8>) + 8013502: 2001 movs r0, #1 + 8013504: 681b ldr r3, [r3, #0] + 8013506: 4718 bx r3 + 8013508: 200027c0 .word 0x200027c0 + +0801350c <HAL_SUBGHZ_RxCpltCallback>: + 801350c: 4b01 ldr r3, [pc, #4] ; (8013514 <HAL_SUBGHZ_RxCpltCallback+0x8>) + 801350e: 2002 movs r0, #2 + 8013510: 681b ldr r3, [r3, #0] + 8013512: 4718 bx r3 + 8013514: 200027c0 .word 0x200027c0 + +08013518 <HAL_SUBGHZ_CRCErrorCallback>: + 8013518: 4b01 ldr r3, [pc, #4] ; (8013520 <HAL_SUBGHZ_CRCErrorCallback+0x8>) + 801351a: 2040 movs r0, #64 ; 0x40 + 801351c: 681b ldr r3, [r3, #0] + 801351e: 4718 bx r3 + 8013520: 200027c0 .word 0x200027c0 + +08013524 <HAL_SUBGHZ_CADStatusCallback>: + 8013524: b111 cbz r1, 801352c <HAL_SUBGHZ_CADStatusCallback+0x8> + 8013526: 2901 cmp r1, #1 + 8013528: d004 beq.n 8013534 <HAL_SUBGHZ_CADStatusCallback+0x10> + 801352a: 4770 bx lr + 801352c: 4b04 ldr r3, [pc, #16] ; (8013540 <HAL_SUBGHZ_CADStatusCallback+0x1c>) + 801352e: 681b ldr r3, [r3, #0] + 8013530: 2080 movs r0, #128 ; 0x80 + 8013532: 4718 bx r3 + 8013534: 4b02 ldr r3, [pc, #8] ; (8013540 <HAL_SUBGHZ_CADStatusCallback+0x1c>) + 8013536: f44f 7080 mov.w r0, #256 ; 0x100 + 801353a: 681b ldr r3, [r3, #0] + 801353c: e7f9 b.n 8013532 <HAL_SUBGHZ_CADStatusCallback+0xe> + 801353e: bf00 nop + 8013540: 200027c0 .word 0x200027c0 + +08013544 <HAL_SUBGHZ_RxTxTimeoutCallback>: + 8013544: 4b02 ldr r3, [pc, #8] ; (8013550 <HAL_SUBGHZ_RxTxTimeoutCallback+0xc>) + 8013546: f44f 7000 mov.w r0, #512 ; 0x200 + 801354a: 681b ldr r3, [r3, #0] + 801354c: 4718 bx r3 + 801354e: bf00 nop + 8013550: 200027c0 .word 0x200027c0 + +08013554 <HAL_SUBGHZ_HeaderErrorCallback>: + 8013554: 4b01 ldr r3, [pc, #4] ; (801355c <HAL_SUBGHZ_HeaderErrorCallback+0x8>) + 8013556: 2020 movs r0, #32 + 8013558: 681b ldr r3, [r3, #0] + 801355a: 4718 bx r3 + 801355c: 200027c0 .word 0x200027c0 + +08013560 <HAL_SUBGHZ_PreambleDetectedCallback>: + 8013560: 4b01 ldr r3, [pc, #4] ; (8013568 <HAL_SUBGHZ_PreambleDetectedCallback+0x8>) + 8013562: 2004 movs r0, #4 + 8013564: 681b ldr r3, [r3, #0] + 8013566: 4718 bx r3 + 8013568: 200027c0 .word 0x200027c0 + +0801356c <HAL_SUBGHZ_SyncWordValidCallback>: + 801356c: 4b01 ldr r3, [pc, #4] ; (8013574 <HAL_SUBGHZ_SyncWordValidCallback+0x8>) + 801356e: 2008 movs r0, #8 + 8013570: 681b ldr r3, [r3, #0] + 8013572: 4718 bx r3 + 8013574: 200027c0 .word 0x200027c0 + +08013578 <HAL_SUBGHZ_HeaderValidCallback>: + 8013578: 4b01 ldr r3, [pc, #4] ; (8013580 <HAL_SUBGHZ_HeaderValidCallback+0x8>) + 801357a: 2010 movs r0, #16 + 801357c: 681b ldr r3, [r3, #0] + 801357e: 4718 bx r3 + 8013580: 200027c0 .word 0x200027c0 + +08013584 <HAL_SUBGHZ_LrFhssHopCallback>: + 8013584: 4b02 ldr r3, [pc, #8] ; (8013590 <HAL_SUBGHZ_LrFhssHopCallback+0xc>) + 8013586: f44f 4080 mov.w r0, #16384 ; 0x4000 + 801358a: 681b ldr r3, [r3, #0] + 801358c: 4718 bx r3 + 801358e: bf00 nop + 8013590: 200027c0 .word 0x200027c0 + +08013594 <SUBGRF_GetFskBandwidthRegValue>: + 8013594: b168 cbz r0, 80135b2 <SUBGRF_GetFskBandwidthRegValue+0x1e> + 8013596: 4a08 ldr r2, [pc, #32] ; (80135b8 <SUBGRF_GetFskBandwidthRegValue+0x24>) + 8013598: 2300 movs r3, #0 + 801359a: f852 1033 ldr.w r1, [r2, r3, lsl #3] + 801359e: 4281 cmp r1, r0 + 80135a0: d903 bls.n 80135aa <SUBGRF_GetFskBandwidthRegValue+0x16> + 80135a2: eb02 02c3 add.w r2, r2, r3, lsl #3 + 80135a6: 7910 ldrb r0, [r2, #4] + 80135a8: 4770 bx lr + 80135aa: 3301 adds r3, #1 + 80135ac: 2b16 cmp r3, #22 + 80135ae: d1f4 bne.n 801359a <SUBGRF_GetFskBandwidthRegValue+0x6> + 80135b0: e7fe b.n 80135b0 <SUBGRF_GetFskBandwidthRegValue+0x1c> + 80135b2: 201f movs r0, #31 + 80135b4: 4770 bx lr + 80135b6: bf00 nop + 80135b8: 08015810 .word 0x08015810 + +080135bc <SUBGRF_GetCFO>: + 80135bc: b573 push {r0, r1, r4, r5, r6, lr} + 80135be: 4b1d ldr r3, [pc, #116] ; (8013634 <SUBGRF_GetCFO+0x78>) + 80135c0: 9301 str r3, [sp, #4] + 80135c2: 4604 mov r4, r0 + 80135c4: f640 0007 movw r0, #2055 ; 0x807 + 80135c8: 460d mov r5, r1 + 80135ca: f7ff faab bl 8012b24 <SUBGRF_ReadRegister> + 80135ce: f3c0 03c1 ubfx r3, r0, #3, #2 + 80135d2: 3308 adds r3, #8 + 80135d4: 446b add r3, sp + 80135d6: f813 2c04 ldrb.w r2, [r3, #-4] + 80135da: f000 0307 and.w r3, r0, #7 + 80135de: 3301 adds r3, #1 + 80135e0: fa02 f303 lsl.w r3, r2, r3 + 80135e4: 4a14 ldr r2, [pc, #80] ; (8013638 <SUBGRF_GetCFO+0x7c>) + 80135e6: fbb2 f2f3 udiv r2, r2, r3 + 80135ea: fbb2 f0f4 udiv r0, r2, r4 + 80135ee: 2807 cmp r0, #7 + 80135f0: d81e bhi.n 8013630 <SUBGRF_GetCFO+0x74> + 80135f2: 0040 lsls r0, r0, #1 + 80135f4: 2803 cmp r0, #3 + 80135f6: bf8c ite hi + 80135f8: 2302 movhi r3, #2 + 80135fa: 2304 movls r3, #4 + 80135fc: f44f 60d6 mov.w r0, #1712 ; 0x6b0 + 8013600: fb02 f403 mul.w r4, r2, r3 + 8013604: f7ff fa8e bl 8012b24 <SUBGRF_ReadRegister> + 8013608: 0206 lsls r6, r0, #8 + 801360a: f240 60b1 movw r0, #1713 ; 0x6b1 + 801360e: f7ff fa89 bl 8012b24 <SUBGRF_ReadRegister> + 8013612: f406 6670 and.w r6, r6, #3840 ; 0xf00 + 8013616: 4330 orrs r0, r6 + 8013618: 0503 lsls r3, r0, #20 + 801361a: bf44 itt mi + 801361c: ea6f 5000 mvnmi.w r0, r0, lsl #20 + 8013620: ea6f 5010 mvnmi.w r0, r0, lsr #20 + 8013624: 0963 lsrs r3, r4, #5 + 8013626: 4343 muls r3, r0 + 8013628: 11db asrs r3, r3, #7 + 801362a: 602b str r3, [r5, #0] + 801362c: b002 add sp, #8 + 801362e: bd70 pop {r4, r5, r6, pc} + 8013630: 2301 movs r3, #1 + 8013632: e7e3 b.n 80135fc <SUBGRF_GetCFO+0x40> + 8013634: 0c0a0804 .word 0x0c0a0804 + 8013638: 01e84800 .word 0x01e84800 + +0801363c <RFW_TransmitLongPacket>: + 801363c: f04f 30ff mov.w r0, #4294967295 + 8013640: 4770 bx lr + +08013642 <RFW_ReceiveLongPacket>: + 8013642: f04f 30ff mov.w r0, #4294967295 + 8013646: 4770 bx lr + +08013648 <RFW_Init>: + 8013648: f04f 30ff mov.w r0, #4294967295 + 801364c: 4770 bx lr + +0801364e <RFW_DeInit>: + 801364e: 4770 bx lr + +08013650 <RFW_Is_Init>: + 8013650: 2000 movs r0, #0 + 8013652: 4770 bx lr + +08013654 <RFW_Is_LongPacketModeEnabled>: + 8013654: 2000 movs r0, #0 + 8013656: 4770 bx lr + +08013658 <RFW_SetAntSwitch>: + 8013658: 4770 bx lr + +0801365a <RFW_TransmitInit>: + 801365a: f04f 30ff mov.w r0, #4294967295 + 801365e: 4770 bx lr + +08013660 <RFW_ReceiveInit>: + 8013660: f04f 30ff mov.w r0, #4294967295 + 8013664: 4770 bx lr + +08013666 <RFW_DeInit_TxLongPacket>: + 8013666: 4770 bx lr + +08013668 <RFW_ReceivePayload>: + 8013668: 4770 bx lr + +0801366a <RFW_SetRadioModem>: + 801366a: 4770 bx lr + +0801366c <TRACE_AllocateBufer>: + 801366c: b570 push {r4, r5, r6, lr} + 801366e: f3ef 8610 mrs r6, PRIMASK + 8013672: b672 cpsid i + 8013674: 4b14 ldr r3, [pc, #80] ; (80136c8 <TRACE_AllocateBufer+0x5c>) + 8013676: 8a5c ldrh r4, [r3, #18] + 8013678: 8a1a ldrh r2, [r3, #16] + 801367a: 4294 cmp r4, r2 + 801367c: d113 bne.n 80136a6 <TRACE_AllocateBufer+0x3a> + 801367e: f5c4 6280 rsb r2, r4, #1024 ; 0x400 + 8013682: b292 uxth r2, r2 + 8013684: 4290 cmp r0, r2 + 8013686: d306 bcc.n 8013696 <TRACE_AllocateBufer+0x2a> + 8013688: 4284 cmp r4, r0 + 801368a: d918 bls.n 80136be <TRACE_AllocateBufer+0x52> + 801368c: 2201 movs r2, #1 + 801368e: 709a strb r2, [r3, #2] + 8013690: 2200 movs r2, #0 + 8013692: 801c strh r4, [r3, #0] + 8013694: 825a strh r2, [r3, #18] + 8013696: 8a5a ldrh r2, [r3, #18] + 8013698: 800a strh r2, [r1, #0] + 801369a: 4402 add r2, r0 + 801369c: f3c2 0209 ubfx r2, r2, #0, #10 + 80136a0: 825a strh r2, [r3, #18] + 80136a2: 2000 movs r0, #0 + 80136a4: e00d b.n 80136c2 <TRACE_AllocateBufer+0x56> + 80136a6: d906 bls.n 80136b6 <TRACE_AllocateBufer+0x4a> + 80136a8: f5c4 6580 rsb r5, r4, #1024 ; 0x400 + 80136ac: b2ad uxth r5, r5 + 80136ae: 4285 cmp r5, r0 + 80136b0: d8f1 bhi.n 8013696 <TRACE_AllocateBufer+0x2a> + 80136b2: 4282 cmp r2, r0 + 80136b4: e7e9 b.n 801368a <TRACE_AllocateBufer+0x1e> + 80136b6: 1b12 subs r2, r2, r4 + 80136b8: b292 uxth r2, r2 + 80136ba: 4282 cmp r2, r0 + 80136bc: d8eb bhi.n 8013696 <TRACE_AllocateBufer+0x2a> + 80136be: f04f 30ff mov.w r0, #4294967295 + 80136c2: f386 8810 msr PRIMASK, r6 + 80136c6: bd70 pop {r4, r5, r6, pc} + 80136c8: 20002bc4 .word 0x20002bc4 + +080136cc <TRACE_Lock>: + 80136cc: f3ef 8110 mrs r1, PRIMASK + 80136d0: b672 cpsid i + 80136d2: 4a03 ldr r2, [pc, #12] ; (80136e0 <TRACE_Lock+0x14>) + 80136d4: 8ad3 ldrh r3, [r2, #22] + 80136d6: 3301 adds r3, #1 + 80136d8: 82d3 strh r3, [r2, #22] + 80136da: f381 8810 msr PRIMASK, r1 + 80136de: 4770 bx lr + 80136e0: 20002bc4 .word 0x20002bc4 + +080136e4 <TRACE_UnLock>: + 80136e4: f3ef 8110 mrs r1, PRIMASK + 80136e8: b672 cpsid i + 80136ea: 4a03 ldr r2, [pc, #12] ; (80136f8 <TRACE_UnLock+0x14>) + 80136ec: 8ad3 ldrh r3, [r2, #22] + 80136ee: 3b01 subs r3, #1 + 80136f0: 82d3 strh r3, [r2, #22] + 80136f2: f381 8810 msr PRIMASK, r1 + 80136f6: 4770 bx lr + 80136f8: 20002bc4 .word 0x20002bc4 + +080136fc <UTIL_ADV_TRACE_Init>: + 80136fc: b510 push {r4, lr} + 80136fe: 4808 ldr r0, [pc, #32] ; (8013720 <UTIL_ADV_TRACE_Init+0x24>) + 8013700: 2218 movs r2, #24 + 8013702: 2100 movs r1, #0 + 8013704: f000 f976 bl 80139f4 <UTIL_MEM_set_8> + 8013708: 4806 ldr r0, [pc, #24] ; (8013724 <UTIL_ADV_TRACE_Init+0x28>) + 801370a: f44f 6280 mov.w r2, #1024 ; 0x400 + 801370e: 2100 movs r1, #0 + 8013710: f000 f970 bl 80139f4 <UTIL_MEM_set_8> + 8013714: 4b04 ldr r3, [pc, #16] ; (8013728 <UTIL_ADV_TRACE_Init+0x2c>) + 8013716: 4805 ldr r0, [pc, #20] ; (801372c <UTIL_ADV_TRACE_Init+0x30>) + 8013718: 681b ldr r3, [r3, #0] + 801371a: e8bd 4010 ldmia.w sp!, {r4, lr} + 801371e: 4718 bx r3 + 8013720: 20002bc4 .word 0x20002bc4 + 8013724: 200027c4 .word 0x200027c4 + 8013728: 0801450c .word 0x0801450c + 801372c: 0801389d .word 0x0801389d + +08013730 <UTIL_ADV_TRACE_RegisterTimeStampFunction>: + 8013730: 4b01 ldr r3, [pc, #4] ; (8013738 <UTIL_ADV_TRACE_RegisterTimeStampFunction+0x8>) + 8013732: 6058 str r0, [r3, #4] + 8013734: 4770 bx lr + 8013736: bf00 nop + 8013738: 20002bc4 .word 0x20002bc4 + +0801373c <UTIL_ADV_TRACE_SetVerboseLevel>: + 801373c: 4b01 ldr r3, [pc, #4] ; (8013744 <UTIL_ADV_TRACE_SetVerboseLevel+0x8>) + 801373e: 7218 strb r0, [r3, #8] + 8013740: 4770 bx lr + 8013742: bf00 nop + 8013744: 20002bc4 .word 0x20002bc4 + +08013748 <TRACE_Send>: + 8013748: b573 push {r0, r1, r4, r5, r6, lr} + 801374a: f3ef 8510 mrs r5, PRIMASK + 801374e: b672 cpsid i + 8013750: 4c1c ldr r4, [pc, #112] ; (80137c4 <TRACE_Send+0x7c>) + 8013752: 8ae0 ldrh r0, [r4, #22] + 8013754: 2800 cmp r0, #0 + 8013756: d12f bne.n 80137b8 <TRACE_Send+0x70> + 8013758: f7ff ffb8 bl 80136cc <TRACE_Lock> + 801375c: 8a21 ldrh r1, [r4, #16] + 801375e: 8a62 ldrh r2, [r4, #18] + 8013760: 4291 cmp r1, r2 + 8013762: d027 beq.n 80137b4 <TRACE_Send+0x6c> + 8013764: 78a3 ldrb r3, [r4, #2] + 8013766: 2b01 cmp r3, #1 + 8013768: d112 bne.n 8013790 <TRACE_Send+0x48> + 801376a: 8823 ldrh r3, [r4, #0] + 801376c: 8020 strh r0, [r4, #0] + 801376e: 1a5b subs r3, r3, r1 + 8013770: b29b uxth r3, r3 + 8013772: 2102 movs r1, #2 + 8013774: 82a3 strh r3, [r4, #20] + 8013776: 70a1 strb r1, [r4, #2] + 8013778: b963 cbnz r3, 8013794 <TRACE_Send+0x4c> + 801377a: 70a3 strb r3, [r4, #2] + 801377c: 8223 strh r3, [r4, #16] + 801377e: 8a23 ldrh r3, [r4, #16] + 8013780: 429a cmp r2, r3 + 8013782: bf8b itete hi + 8013784: 1ad2 subhi r2, r2, r3 + 8013786: f5c3 6380 rsbls r3, r3, #1024 ; 0x400 + 801378a: 82a2 strhhi r2, [r4, #20] + 801378c: 82a3 strhls r3, [r4, #20] + 801378e: e001 b.n 8013794 <TRACE_Send+0x4c> + 8013790: 2b00 cmp r3, #0 + 8013792: d0f4 beq.n 801377e <TRACE_Send+0x36> + 8013794: 8a23 ldrh r3, [r4, #16] + 8013796: 4e0c ldr r6, [pc, #48] ; (80137c8 <TRACE_Send+0x80>) + 8013798: 441e add r6, r3 + 801379a: f385 8810 msr PRIMASK, r5 + 801379e: f7ef f9cb bl 8002b38 <UTIL_ADV_TRACE_PreSendHook> + 80137a2: 4b0a ldr r3, [pc, #40] ; (80137cc <TRACE_Send+0x84>) + 80137a4: 8aa1 ldrh r1, [r4, #20] + 80137a6: 68db ldr r3, [r3, #12] + 80137a8: 9301 str r3, [sp, #4] + 80137aa: 4630 mov r0, r6 + 80137ac: b002 add sp, #8 + 80137ae: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 80137b2: 4718 bx r3 + 80137b4: f7ff ff96 bl 80136e4 <TRACE_UnLock> + 80137b8: f385 8810 msr PRIMASK, r5 + 80137bc: 2000 movs r0, #0 + 80137be: b002 add sp, #8 + 80137c0: bd70 pop {r4, r5, r6, pc} + 80137c2: bf00 nop + 80137c4: 20002bc4 .word 0x20002bc4 + 80137c8: 200027c4 .word 0x200027c4 + 80137cc: 0801450c .word 0x0801450c + +080137d0 <UTIL_ADV_TRACE_COND_FSend>: + 80137d0: b408 push {r3} + 80137d2: b5f0 push {r4, r5, r6, r7, lr} + 80137d4: b086 sub sp, #24 + 80137d6: 2300 movs r3, #0 + 80137d8: f8ad 3000 strh.w r3, [sp] + 80137dc: 4b2c ldr r3, [pc, #176] ; (8013890 <UTIL_ADV_TRACE_COND_FSend+0xc0>) + 80137de: 9c0b ldr r4, [sp, #44] ; 0x2c + 80137e0: 7a1d ldrb r5, [r3, #8] + 80137e2: 4285 cmp r5, r0 + 80137e4: d34d bcc.n 8013882 <UTIL_ADV_TRACE_COND_FSend+0xb2> + 80137e6: 68d8 ldr r0, [r3, #12] + 80137e8: 4381 bics r1, r0 + 80137ea: d14d bne.n 8013888 <UTIL_ADV_TRACE_COND_FSend+0xb8> + 80137ec: 685b ldr r3, [r3, #4] + 80137ee: b11b cbz r3, 80137f8 <UTIL_ADV_TRACE_COND_FSend+0x28> + 80137f0: b112 cbz r2, 80137f8 <UTIL_ADV_TRACE_COND_FSend+0x28> + 80137f2: 4669 mov r1, sp + 80137f4: a802 add r0, sp, #8 + 80137f6: 4798 blx r3 + 80137f8: ab0c add r3, sp, #48 ; 0x30 + 80137fa: 4622 mov r2, r4 + 80137fc: f44f 7100 mov.w r1, #512 ; 0x200 + 8013800: 4824 ldr r0, [pc, #144] ; (8013894 <UTIL_ADV_TRACE_COND_FSend+0xc4>) + 8013802: 9301 str r3, [sp, #4] + 8013804: f000 fbf6 bl 8013ff4 <tiny_vsnprintf_like> + 8013808: f7ff ff60 bl 80136cc <TRACE_Lock> + 801380c: f8bd 3000 ldrh.w r3, [sp] + 8013810: 4418 add r0, r3 + 8013812: f10d 0102 add.w r1, sp, #2 + 8013816: b280 uxth r0, r0 + 8013818: f7ff ff28 bl 801366c <TRACE_AllocateBufer> + 801381c: 3001 adds r0, #1 + 801381e: d02b beq.n 8013878 <UTIL_ADV_TRACE_COND_FSend+0xa8> + 8013820: 2200 movs r2, #0 + 8013822: f8bd 3000 ldrh.w r3, [sp] + 8013826: f8bd 7002 ldrh.w r7, [sp, #2] + 801382a: 481b ldr r0, [pc, #108] ; (8013898 <UTIL_ADV_TRACE_COND_FSend+0xc8>) + 801382c: f10d 0c08 add.w ip, sp, #8 + 8013830: 4616 mov r6, r2 + 8013832: b291 uxth r1, r2 + 8013834: fa17 f582 uxtah r5, r7, r2 + 8013838: 428b cmp r3, r1 + 801383a: b2ad uxth r5, r5 + 801383c: d816 bhi.n 801386c <UTIL_ADV_TRACE_COND_FSend+0x9c> + 801383e: 443b add r3, r7 + 8013840: b29b uxth r3, r3 + 8013842: b10e cbz r6, 8013848 <UTIL_ADV_TRACE_COND_FSend+0x78> + 8013844: f8ad 3002 strh.w r3, [sp, #2] + 8013848: f8bd 5002 ldrh.w r5, [sp, #2] + 801384c: 9b01 ldr r3, [sp, #4] + 801384e: 4622 mov r2, r4 + 8013850: f44f 7100 mov.w r1, #512 ; 0x200 + 8013854: 4428 add r0, r5 + 8013856: f000 fbcd bl 8013ff4 <tiny_vsnprintf_like> + 801385a: f7ff ff43 bl 80136e4 <TRACE_UnLock> + 801385e: f7ff ff73 bl 8013748 <TRACE_Send> + 8013862: b006 add sp, #24 + 8013864: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 8013868: b001 add sp, #4 + 801386a: 4770 bx lr + 801386c: f81c 1b01 ldrb.w r1, [ip], #1 + 8013870: 5541 strb r1, [r0, r5] + 8013872: 3201 adds r2, #1 + 8013874: 2601 movs r6, #1 + 8013876: e7dc b.n 8013832 <UTIL_ADV_TRACE_COND_FSend+0x62> + 8013878: f7ff ff34 bl 80136e4 <TRACE_UnLock> + 801387c: f06f 0002 mvn.w r0, #2 + 8013880: e7ef b.n 8013862 <UTIL_ADV_TRACE_COND_FSend+0x92> + 8013882: f06f 0004 mvn.w r0, #4 + 8013886: e7ec b.n 8013862 <UTIL_ADV_TRACE_COND_FSend+0x92> + 8013888: f06f 0005 mvn.w r0, #5 + 801388c: e7e9 b.n 8013862 <UTIL_ADV_TRACE_COND_FSend+0x92> + 801388e: bf00 nop + 8013890: 20002bc4 .word 0x20002bc4 + 8013894: 20002bdc .word 0x20002bdc + 8013898: 200027c4 .word 0x200027c4 + +0801389c <TRACE_TxCpltCallback>: + 801389c: b513 push {r0, r1, r4, lr} + 801389e: f3ef 8410 mrs r4, PRIMASK + 80138a2: b672 cpsid i + 80138a4: 4b20 ldr r3, [pc, #128] ; (8013928 <TRACE_TxCpltCallback+0x8c>) + 80138a6: 789a ldrb r2, [r3, #2] + 80138a8: 8a58 ldrh r0, [r3, #18] + 80138aa: 2a02 cmp r2, #2 + 80138ac: bf1d ittte ne + 80138ae: 8a1a ldrhne r2, [r3, #16] + 80138b0: 8a99 ldrhne r1, [r3, #20] + 80138b2: 1852 addne r2, r2, r1 + 80138b4: 2200 moveq r2, #0 + 80138b6: bf14 ite ne + 80138b8: f3c2 0209 ubfxne r2, r2, #0, #10 + 80138bc: 709a strbeq r2, [r3, #2] + 80138be: 4290 cmp r0, r2 + 80138c0: 821a strh r2, [r3, #16] + 80138c2: d028 beq.n 8013916 <TRACE_TxCpltCallback+0x7a> + 80138c4: 8ad9 ldrh r1, [r3, #22] + 80138c6: 2901 cmp r1, #1 + 80138c8: d125 bne.n 8013916 <TRACE_TxCpltCallback+0x7a> + 80138ca: 7899 ldrb r1, [r3, #2] + 80138cc: 2901 cmp r1, #1 + 80138ce: d113 bne.n 80138f8 <TRACE_TxCpltCallback+0x5c> + 80138d0: 8819 ldrh r1, [r3, #0] + 80138d2: 1a8a subs r2, r1, r2 + 80138d4: 2102 movs r1, #2 + 80138d6: b292 uxth r2, r2 + 80138d8: 7099 strb r1, [r3, #2] + 80138da: 2100 movs r1, #0 + 80138dc: 829a strh r2, [r3, #20] + 80138de: 8019 strh r1, [r3, #0] + 80138e0: b962 cbnz r2, 80138fc <TRACE_TxCpltCallback+0x60> + 80138e2: 709a strb r2, [r3, #2] + 80138e4: 821a strh r2, [r3, #16] + 80138e6: 8a1a ldrh r2, [r3, #16] + 80138e8: 4290 cmp r0, r2 + 80138ea: bf8b itete hi + 80138ec: 1a80 subhi r0, r0, r2 + 80138ee: f5c2 6280 rsbls r2, r2, #1024 ; 0x400 + 80138f2: 8298 strhhi r0, [r3, #20] + 80138f4: 829a strhls r2, [r3, #20] + 80138f6: e001 b.n 80138fc <TRACE_TxCpltCallback+0x60> + 80138f8: 2900 cmp r1, #0 + 80138fa: d0f4 beq.n 80138e6 <TRACE_TxCpltCallback+0x4a> + 80138fc: 8a1a ldrh r2, [r3, #16] + 80138fe: 480b ldr r0, [pc, #44] ; (801392c <TRACE_TxCpltCallback+0x90>) + 8013900: 4410 add r0, r2 + 8013902: f384 8810 msr PRIMASK, r4 + 8013906: 4a0a ldr r2, [pc, #40] ; (8013930 <TRACE_TxCpltCallback+0x94>) + 8013908: 8a99 ldrh r1, [r3, #20] + 801390a: 68d3 ldr r3, [r2, #12] + 801390c: 9301 str r3, [sp, #4] + 801390e: b002 add sp, #8 + 8013910: e8bd 4010 ldmia.w sp!, {r4, lr} + 8013914: 4718 bx r3 + 8013916: f384 8810 msr PRIMASK, r4 + 801391a: f7ef f911 bl 8002b40 <UTIL_ADV_TRACE_PostSendHook> + 801391e: b002 add sp, #8 + 8013920: e8bd 4010 ldmia.w sp!, {r4, lr} + 8013924: f7ff bede b.w 80136e4 <TRACE_UnLock> + 8013928: 20002bc4 .word 0x20002bc4 + 801392c: 200027c4 .word 0x200027c4 + 8013930: 0801450c .word 0x0801450c + +08013934 <UTIL_LPM_Init>: + 8013934: 4a02 ldr r2, [pc, #8] ; (8013940 <UTIL_LPM_Init+0xc>) + 8013936: 2300 movs r3, #0 + 8013938: 6013 str r3, [r2, #0] + 801393a: 4a02 ldr r2, [pc, #8] ; (8013944 <UTIL_LPM_Init+0x10>) + 801393c: 6013 str r3, [r2, #0] + 801393e: 4770 bx lr + 8013940: 20002de0 .word 0x20002de0 + 8013944: 20002ddc .word 0x20002ddc + +08013948 <UTIL_LPM_SetStopMode>: + 8013948: b510 push {r4, lr} + 801394a: f3ef 8410 mrs r4, PRIMASK + 801394e: b672 cpsid i + 8013950: b141 cbz r1, 8013964 <UTIL_LPM_SetStopMode+0x1c> + 8013952: 2901 cmp r1, #1 + 8013954: d103 bne.n 801395e <UTIL_LPM_SetStopMode+0x16> + 8013956: 4a06 ldr r2, [pc, #24] ; (8013970 <UTIL_LPM_SetStopMode+0x28>) + 8013958: 6813 ldr r3, [r2, #0] + 801395a: 4303 orrs r3, r0 + 801395c: 6013 str r3, [r2, #0] + 801395e: f384 8810 msr PRIMASK, r4 + 8013962: bd10 pop {r4, pc} + 8013964: 4a02 ldr r2, [pc, #8] ; (8013970 <UTIL_LPM_SetStopMode+0x28>) + 8013966: 6813 ldr r3, [r2, #0] + 8013968: ea23 0300 bic.w r3, r3, r0 + 801396c: e7f6 b.n 801395c <UTIL_LPM_SetStopMode+0x14> + 801396e: bf00 nop + 8013970: 20002de0 .word 0x20002de0 + +08013974 <UTIL_LPM_SetOffMode>: + 8013974: b510 push {r4, lr} + 8013976: f3ef 8410 mrs r4, PRIMASK + 801397a: b672 cpsid i + 801397c: b141 cbz r1, 8013990 <UTIL_LPM_SetOffMode+0x1c> + 801397e: 2901 cmp r1, #1 + 8013980: d103 bne.n 801398a <UTIL_LPM_SetOffMode+0x16> + 8013982: 4a06 ldr r2, [pc, #24] ; (801399c <UTIL_LPM_SetOffMode+0x28>) + 8013984: 6813 ldr r3, [r2, #0] + 8013986: 4303 orrs r3, r0 + 8013988: 6013 str r3, [r2, #0] + 801398a: f384 8810 msr PRIMASK, r4 + 801398e: bd10 pop {r4, pc} + 8013990: 4a02 ldr r2, [pc, #8] ; (801399c <UTIL_LPM_SetOffMode+0x28>) + 8013992: 6813 ldr r3, [r2, #0] + 8013994: ea23 0300 bic.w r3, r3, r0 + 8013998: e7f6 b.n 8013988 <UTIL_LPM_SetOffMode+0x14> + 801399a: bf00 nop + 801399c: 20002ddc .word 0x20002ddc + +080139a0 <UTIL_LPM_EnterLowPower>: + 80139a0: b538 push {r3, r4, r5, lr} + 80139a2: f3ef 8510 mrs r5, PRIMASK + 80139a6: b672 cpsid i + 80139a8: 4b0a ldr r3, [pc, #40] ; (80139d4 <UTIL_LPM_EnterLowPower+0x34>) + 80139aa: 4c0b ldr r4, [pc, #44] ; (80139d8 <UTIL_LPM_EnterLowPower+0x38>) + 80139ac: 681b ldr r3, [r3, #0] + 80139ae: b133 cbz r3, 80139be <UTIL_LPM_EnterLowPower+0x1e> + 80139b0: 6823 ldr r3, [r4, #0] + 80139b2: 4798 blx r3 + 80139b4: 6863 ldr r3, [r4, #4] + 80139b6: 4798 blx r3 + 80139b8: f385 8810 msr PRIMASK, r5 + 80139bc: bd38 pop {r3, r4, r5, pc} + 80139be: 4b07 ldr r3, [pc, #28] ; (80139dc <UTIL_LPM_EnterLowPower+0x3c>) + 80139c0: 681b ldr r3, [r3, #0] + 80139c2: b11b cbz r3, 80139cc <UTIL_LPM_EnterLowPower+0x2c> + 80139c4: 68a3 ldr r3, [r4, #8] + 80139c6: 4798 blx r3 + 80139c8: 68e3 ldr r3, [r4, #12] + 80139ca: e7f4 b.n 80139b6 <UTIL_LPM_EnterLowPower+0x16> + 80139cc: 6923 ldr r3, [r4, #16] + 80139ce: 4798 blx r3 + 80139d0: 6963 ldr r3, [r4, #20] + 80139d2: e7f0 b.n 80139b6 <UTIL_LPM_EnterLowPower+0x16> + 80139d4: 20002de0 .word 0x20002de0 + 80139d8: 08014460 .word 0x08014460 + 80139dc: 20002ddc .word 0x20002ddc + +080139e0 <UTIL_MEM_cpy_8>: + 80139e0: 3801 subs r0, #1 + 80139e2: 440a add r2, r1 + 80139e4: 4291 cmp r1, r2 + 80139e6: d100 bne.n 80139ea <UTIL_MEM_cpy_8+0xa> + 80139e8: 4770 bx lr + 80139ea: f811 3b01 ldrb.w r3, [r1], #1 + 80139ee: f800 3f01 strb.w r3, [r0, #1]! + 80139f2: e7f7 b.n 80139e4 <UTIL_MEM_cpy_8+0x4> + +080139f4 <UTIL_MEM_set_8>: + 80139f4: f000 bc2c b.w 8014250 <memset> + +080139f8 <UTIL_SEQ_SetTask>: + 80139f8: b510 push {r4, lr} + 80139fa: f3ef 8410 mrs r4, PRIMASK + 80139fe: b672 cpsid i + 8013a00: 4a06 ldr r2, [pc, #24] ; (8013a1c <UTIL_SEQ_SetTask+0x24>) + 8013a02: 6813 ldr r3, [r2, #0] + 8013a04: 4303 orrs r3, r0 + 8013a06: 6013 str r3, [r2, #0] + 8013a08: 4a05 ldr r2, [pc, #20] ; (8013a20 <UTIL_SEQ_SetTask+0x28>) + 8013a0a: f852 3031 ldr.w r3, [r2, r1, lsl #3] + 8013a0e: 4303 orrs r3, r0 + 8013a10: f842 3031 str.w r3, [r2, r1, lsl #3] + 8013a14: f384 8810 msr PRIMASK, r4 + 8013a18: bd10 pop {r4, pc} + 8013a1a: bf00 nop + 8013a1c: 20002e30 .word 0x20002e30 + 8013a20: 20002e28 .word 0x20002e28 + +08013a24 <UTIL_SEQ_PreIdle>: + 8013a24: 4770 bx lr + +08013a26 <UTIL_SEQ_PostIdle>: + 8013a26: 4770 bx lr + +08013a28 <SEQ_BitPosition>: + 8013a28: 0c03 lsrs r3, r0, #16 + 8013a2a: 041b lsls r3, r3, #16 + 8013a2c: b9c3 cbnz r3, 8013a60 <SEQ_BitPosition+0x38> + 8013a2e: 0400 lsls r0, r0, #16 + 8013a30: 2310 movs r3, #16 + 8013a32: f010 4f7f tst.w r0, #4278190080 ; 0xff000000 + 8013a36: bf02 ittt eq + 8013a38: 3308 addeq r3, #8 + 8013a3a: 0200 lsleq r0, r0, #8 + 8013a3c: b2db uxtbeq r3, r3 + 8013a3e: f010 4f70 tst.w r0, #4026531840 ; 0xf0000000 + 8013a42: bf08 it eq + 8013a44: 0100 lsleq r0, r0, #4 + 8013a46: ea4f 7010 mov.w r0, r0, lsr #28 + 8013a4a: 4a06 ldr r2, [pc, #24] ; (8013a64 <SEQ_BitPosition+0x3c>) + 8013a4c: bf08 it eq + 8013a4e: 3304 addeq r3, #4 + 8013a50: 5c12 ldrb r2, [r2, r0] + 8013a52: bf08 it eq + 8013a54: b2db uxtbeq r3, r3 + 8013a56: f1c3 031f rsb r3, r3, #31 + 8013a5a: 1a98 subs r0, r3, r2 + 8013a5c: b2c0 uxtb r0, r0 + 8013a5e: 4770 bx lr + 8013a60: 2300 movs r3, #0 + 8013a62: e7e6 b.n 8013a32 <SEQ_BitPosition+0xa> + 8013a64: 080158c0 .word 0x080158c0 + +08013a68 <UTIL_SEQ_Run>: + 8013a68: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8013a6c: 4d38 ldr r5, [pc, #224] ; (8013b50 <UTIL_SEQ_Run+0xe8>) + 8013a6e: 4e39 ldr r6, [pc, #228] ; (8013b54 <UTIL_SEQ_Run+0xec>) + 8013a70: f8d5 8000 ldr.w r8, [r5] + 8013a74: f8df b0e0 ldr.w fp, [pc, #224] ; 8013b58 <UTIL_SEQ_Run+0xf0> + 8013a78: f8df a0e0 ldr.w sl, [pc, #224] ; 8013b5c <UTIL_SEQ_Run+0xf4> + 8013a7c: f8df 90e0 ldr.w r9, [pc, #224] ; 8013b60 <UTIL_SEQ_Run+0xf8> + 8013a80: f8d6 c000 ldr.w ip, [r6] + 8013a84: 4f37 ldr r7, [pc, #220] ; (8013b64 <UTIL_SEQ_Run+0xfc>) + 8013a86: f8db 1000 ldr.w r1, [fp] + 8013a8a: 4c37 ldr r4, [pc, #220] ; (8013b68 <UTIL_SEQ_Run+0x100>) + 8013a8c: f8da 2000 ldr.w r2, [sl] + 8013a90: f8d9 3000 ldr.w r3, [r9] + 8013a94: ea08 0000 and.w r0, r8, r0 + 8013a98: 6028 str r0, [r5, #0] + 8013a9a: 6828 ldr r0, [r5, #0] + 8013a9c: ea00 0e02 and.w lr, r0, r2 + 8013aa0: ea1e 0f0c tst.w lr, ip + 8013aa4: d001 beq.n 8013aaa <UTIL_SEQ_Run+0x42> + 8013aa6: 4219 tst r1, r3 + 8013aa8: d01e beq.n 8013ae8 <UTIL_SEQ_Run+0x80> + 8013aaa: f04f 33ff mov.w r3, #4294967295 + 8013aae: 603b str r3, [r7, #0] + 8013ab0: f7ff ffb8 bl 8013a24 <UTIL_SEQ_PreIdle> + 8013ab4: f3ef 8410 mrs r4, PRIMASK + 8013ab8: b672 cpsid i + 8013aba: 6833 ldr r3, [r6, #0] + 8013abc: f8db 2000 ldr.w r2, [fp] + 8013ac0: f8da 1000 ldr.w r1, [sl] + 8013ac4: 400b ands r3, r1 + 8013ac6: 6829 ldr r1, [r5, #0] + 8013ac8: 420b tst r3, r1 + 8013aca: d105 bne.n 8013ad8 <UTIL_SEQ_Run+0x70> + 8013acc: f8d9 3000 ldr.w r3, [r9] + 8013ad0: 4213 tst r3, r2 + 8013ad2: d101 bne.n 8013ad8 <UTIL_SEQ_Run+0x70> + 8013ad4: f7ee ffbe bl 8002a54 <UTIL_SEQ_Idle> + 8013ad8: f384 8810 msr PRIMASK, r4 + 8013adc: f7ff ffa3 bl 8013a26 <UTIL_SEQ_PostIdle> + 8013ae0: f8c5 8000 str.w r8, [r5] + 8013ae4: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8013ae8: 6823 ldr r3, [r4, #0] + 8013aea: 6823 ldr r3, [r4, #0] + 8013aec: 4003 ands r3, r0 + 8013aee: 4013 ands r3, r2 + 8013af0: 6862 ldr r2, [r4, #4] + 8013af2: 421a tst r2, r3 + 8013af4: bf04 itt eq + 8013af6: f04f 32ff moveq.w r2, #4294967295 + 8013afa: 6062 streq r2, [r4, #4] + 8013afc: 6860 ldr r0, [r4, #4] + 8013afe: 4018 ands r0, r3 + 8013b00: f7ff ff92 bl 8013a28 <SEQ_BitPosition> + 8013b04: 6862 ldr r2, [r4, #4] + 8013b06: 6038 str r0, [r7, #0] + 8013b08: 2301 movs r3, #1 + 8013b0a: fa03 f000 lsl.w r0, r3, r0 + 8013b0e: ea22 0200 bic.w r2, r2, r0 + 8013b12: 6062 str r2, [r4, #4] + 8013b14: f3ef 8110 mrs r1, PRIMASK + 8013b18: b672 cpsid i + 8013b1a: 683a ldr r2, [r7, #0] + 8013b1c: 4093 lsls r3, r2 + 8013b1e: 6832 ldr r2, [r6, #0] + 8013b20: ea22 0203 bic.w r2, r2, r3 + 8013b24: 6032 str r2, [r6, #0] + 8013b26: 6822 ldr r2, [r4, #0] + 8013b28: ea22 0303 bic.w r3, r2, r3 + 8013b2c: 6023 str r3, [r4, #0] + 8013b2e: f381 8810 msr PRIMASK, r1 + 8013b32: 4a0e ldr r2, [pc, #56] ; (8013b6c <UTIL_SEQ_Run+0x104>) + 8013b34: 683b ldr r3, [r7, #0] + 8013b36: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8013b3a: 4798 blx r3 + 8013b3c: f8d6 c000 ldr.w ip, [r6] + 8013b40: f8db 1000 ldr.w r1, [fp] + 8013b44: f8da 2000 ldr.w r2, [sl] + 8013b48: f8d9 3000 ldr.w r3, [r9] + 8013b4c: e7a5 b.n 8013a9a <UTIL_SEQ_Run+0x32> + 8013b4e: bf00 nop + 8013b50: 200008c4 .word 0x200008c4 + 8013b54: 20002e30 .word 0x20002e30 + 8013b58: 20002de8 .word 0x20002de8 + 8013b5c: 200008c8 .word 0x200008c8 + 8013b60: 20002dec .word 0x20002dec + 8013b64: 20002de4 .word 0x20002de4 + 8013b68: 20002e28 .word 0x20002e28 + 8013b6c: 20002df0 .word 0x20002df0 + +08013b70 <UTIL_SEQ_RegTask>: + 8013b70: b510 push {r4, lr} + 8013b72: 4611 mov r1, r2 + 8013b74: f3ef 8410 mrs r4, PRIMASK + 8013b78: b672 cpsid i + 8013b7a: f7ff ff55 bl 8013a28 <SEQ_BitPosition> + 8013b7e: 4b03 ldr r3, [pc, #12] ; (8013b8c <UTIL_SEQ_RegTask+0x1c>) + 8013b80: f843 1020 str.w r1, [r3, r0, lsl #2] + 8013b84: f384 8810 msr PRIMASK, r4 + 8013b88: bd10 pop {r4, pc} + 8013b8a: bf00 nop + 8013b8c: 20002df0 .word 0x20002df0 + +08013b90 <SysTimeAdd>: + 8013b90: b082 sub sp, #8 + 8013b92: b082 sub sp, #8 + 8013b94: f10d 0c08 add.w ip, sp, #8 + 8013b98: e90c 0006 stmdb ip, {r1, r2} + 8013b9c: f8bd 2004 ldrh.w r2, [sp, #4] + 8013ba0: 9303 str r3, [sp, #12] + 8013ba2: 440b add r3, r1 + 8013ba4: f8bd 1010 ldrh.w r1, [sp, #16] + 8013ba8: 440a add r2, r1 + 8013baa: b291 uxth r1, r2 + 8013bac: b212 sxth r2, r2 + 8013bae: f5b2 7f7a cmp.w r2, #1000 ; 0x3e8 + 8013bb2: bfa2 ittt ge + 8013bb4: f5a1 727a subge.w r2, r1, #1000 ; 0x3e8 + 8013bb8: 3301 addge r3, #1 + 8013bba: b212 sxthge r2, r2 + 8013bbc: 6003 str r3, [r0, #0] + 8013bbe: 8082 strh r2, [r0, #4] + 8013bc0: b002 add sp, #8 + 8013bc2: b002 add sp, #8 + 8013bc4: 4770 bx lr + +08013bc6 <SysTimeSub>: + 8013bc6: b082 sub sp, #8 + 8013bc8: b082 sub sp, #8 + 8013bca: f10d 0c08 add.w ip, sp, #8 + 8013bce: e90c 0006 stmdb ip, {r1, r2} + 8013bd2: f8bd 2004 ldrh.w r2, [sp, #4] + 8013bd6: 9303 str r3, [sp, #12] + 8013bd8: 1acb subs r3, r1, r3 + 8013bda: f8bd 1010 ldrh.w r1, [sp, #16] + 8013bde: 1a52 subs r2, r2, r1 + 8013be0: b291 uxth r1, r2 + 8013be2: b212 sxth r2, r2 + 8013be4: 2a00 cmp r2, #0 + 8013be6: bfbe ittt lt + 8013be8: f501 727a addlt.w r2, r1, #1000 ; 0x3e8 + 8013bec: f103 33ff addlt.w r3, r3, #4294967295 + 8013bf0: b212 sxthlt r2, r2 + 8013bf2: 6003 str r3, [r0, #0] + 8013bf4: 8082 strh r2, [r0, #4] + 8013bf6: b002 add sp, #8 + 8013bf8: b002 add sp, #8 + 8013bfa: 4770 bx lr + +08013bfc <SysTimeSet>: + 8013bfc: b530 push {r4, r5, lr} + 8013bfe: b085 sub sp, #20 + 8013c00: 4d11 ldr r5, [pc, #68] ; (8013c48 <SysTimeSet+0x4c>) + 8013c02: 466b mov r3, sp + 8013c04: e883 0003 stmia.w r3, {r0, r1} + 8013c08: 2300 movs r3, #0 + 8013c0a: 9302 str r3, [sp, #8] + 8013c0c: f8ad 300c strh.w r3, [sp, #12] + 8013c10: a803 add r0, sp, #12 + 8013c12: 692b ldr r3, [r5, #16] + 8013c14: 4798 blx r3 + 8013c16: 9b00 ldr r3, [sp, #0] + 8013c18: f8bd 4004 ldrh.w r4, [sp, #4] + 8013c1c: 9002 str r0, [sp, #8] + 8013c1e: 1a18 subs r0, r3, r0 + 8013c20: f8bd 300c ldrh.w r3, [sp, #12] + 8013c24: 1ae4 subs r4, r4, r3 + 8013c26: b2a3 uxth r3, r4 + 8013c28: b224 sxth r4, r4 + 8013c2a: 2c00 cmp r4, #0 + 8013c2c: bfbe ittt lt + 8013c2e: f503 737a addlt.w r3, r3, #1000 ; 0x3e8 + 8013c32: b21c sxthlt r4, r3 + 8013c34: f100 30ff addlt.w r0, r0, #4294967295 + 8013c38: 682b ldr r3, [r5, #0] + 8013c3a: 4798 blx r3 + 8013c3c: 68ab ldr r3, [r5, #8] + 8013c3e: 4620 mov r0, r4 + 8013c40: 4798 blx r3 + 8013c42: b005 add sp, #20 + 8013c44: bd30 pop {r4, r5, pc} + 8013c46: bf00 nop + 8013c48: 080144cc .word 0x080144cc + +08013c4c <SysTimeGet>: + 8013c4c: b573 push {r0, r1, r4, r5, r6, lr} + 8013c4e: 4e11 ldr r6, [pc, #68] ; (8013c94 <SysTimeGet+0x48>) + 8013c50: 2300 movs r3, #0 + 8013c52: 4605 mov r5, r0 + 8013c54: 9300 str r3, [sp, #0] + 8013c56: f8ad 3004 strh.w r3, [sp, #4] + 8013c5a: a801 add r0, sp, #4 + 8013c5c: 6933 ldr r3, [r6, #16] + 8013c5e: 4798 blx r3 + 8013c60: 68f3 ldr r3, [r6, #12] + 8013c62: 9000 str r0, [sp, #0] + 8013c64: 4798 blx r3 + 8013c66: 6873 ldr r3, [r6, #4] + 8013c68: 4604 mov r4, r0 + 8013c6a: 4798 blx r3 + 8013c6c: 9b00 ldr r3, [sp, #0] + 8013c6e: 4418 add r0, r3 + 8013c70: f8bd 3004 ldrh.w r3, [sp, #4] + 8013c74: 4423 add r3, r4 + 8013c76: b29a uxth r2, r3 + 8013c78: b21b sxth r3, r3 + 8013c7a: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 8013c7e: bfa2 ittt ge + 8013c80: 3001 addge r0, #1 + 8013c82: f5a2 737a subge.w r3, r2, #1000 ; 0x3e8 + 8013c86: b21b sxthge r3, r3 + 8013c88: 6028 str r0, [r5, #0] + 8013c8a: 4628 mov r0, r5 + 8013c8c: 80ab strh r3, [r5, #4] + 8013c8e: b002 add sp, #8 + 8013c90: bd70 pop {r4, r5, r6, pc} + 8013c92: bf00 nop + 8013c94: 080144cc .word 0x080144cc + +08013c98 <SysTimeGetMcuTime>: + 8013c98: b537 push {r0, r1, r2, r4, r5, lr} + 8013c9a: 2300 movs r3, #0 + 8013c9c: 9300 str r3, [sp, #0] + 8013c9e: f8ad 3004 strh.w r3, [sp, #4] + 8013ca2: 4b07 ldr r3, [pc, #28] ; (8013cc0 <SysTimeGetMcuTime+0x28>) + 8013ca4: 4604 mov r4, r0 + 8013ca6: 691b ldr r3, [r3, #16] + 8013ca8: a801 add r0, sp, #4 + 8013caa: 4798 blx r3 + 8013cac: 466d mov r5, sp + 8013cae: 9000 str r0, [sp, #0] + 8013cb0: e895 0003 ldmia.w r5, {r0, r1} + 8013cb4: e884 0003 stmia.w r4, {r0, r1} + 8013cb8: 4620 mov r0, r4 + 8013cba: b003 add sp, #12 + 8013cbc: bd30 pop {r4, r5, pc} + 8013cbe: bf00 nop + 8013cc0: 080144cc .word 0x080144cc + +08013cc4 <SysTimeToMs>: + 8013cc4: b537 push {r0, r1, r2, r4, r5, lr} + 8013cc6: 4d0f ldr r5, [pc, #60] ; (8013d04 <SysTimeToMs+0x40>) + 8013cc8: ab02 add r3, sp, #8 + 8013cca: e903 0003 stmdb r3, {r0, r1} + 8013cce: 68eb ldr r3, [r5, #12] + 8013cd0: 4798 blx r3 + 8013cd2: 686b ldr r3, [r5, #4] + 8013cd4: 4604 mov r4, r0 + 8013cd6: 4798 blx r3 + 8013cd8: f8bd 3004 ldrh.w r3, [sp, #4] + 8013cdc: 9a00 ldr r2, [sp, #0] + 8013cde: 1b1b subs r3, r3, r4 + 8013ce0: b299 uxth r1, r3 + 8013ce2: b21b sxth r3, r3 + 8013ce4: 2b00 cmp r3, #0 + 8013ce6: eba2 0200 sub.w r2, r2, r0 + 8013cea: bfbe ittt lt + 8013cec: f501 717a addlt.w r1, r1, #1000 ; 0x3e8 + 8013cf0: f102 32ff addlt.w r2, r2, #4294967295 + 8013cf4: b20b sxthlt r3, r1 + 8013cf6: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8013cfa: fb00 3002 mla r0, r0, r2, r3 + 8013cfe: b003 add sp, #12 + 8013d00: bd30 pop {r4, r5, pc} + 8013d02: bf00 nop + 8013d04: 080144cc .word 0x080144cc + +08013d08 <SysTimeFromMs>: + 8013d08: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8013d0c: f44f 757a mov.w r5, #1000 ; 0x3e8 + 8013d10: fbb1 f5f5 udiv r5, r1, r5 + 8013d14: ebc5 1345 rsb r3, r5, r5, lsl #5 + 8013d18: f8df 803c ldr.w r8, [pc, #60] ; 8013d58 <SysTimeFromMs+0x50> + 8013d1c: eb05 0383 add.w r3, r5, r3, lsl #2 + 8013d20: eba1 03c3 sub.w r3, r1, r3, lsl #3 + 8013d24: b29c uxth r4, r3 + 8013d26: f8d8 300c ldr.w r3, [r8, #12] + 8013d2a: 4606 mov r6, r0 + 8013d2c: 4798 blx r3 + 8013d2e: f8d8 3004 ldr.w r3, [r8, #4] + 8013d32: 4607 mov r7, r0 + 8013d34: 4798 blx r3 + 8013d36: 19e3 adds r3, r4, r7 + 8013d38: b299 uxth r1, r3 + 8013d3a: b21b sxth r3, r3 + 8013d3c: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 8013d40: 4428 add r0, r5 + 8013d42: bfa2 ittt ge + 8013d44: f5a1 737a subge.w r3, r1, #1000 ; 0x3e8 + 8013d48: 3001 addge r0, #1 + 8013d4a: b21b sxthge r3, r3 + 8013d4c: 6030 str r0, [r6, #0] + 8013d4e: 80b3 strh r3, [r6, #4] + 8013d50: 4630 mov r0, r6 + 8013d52: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8013d56: bf00 nop + 8013d58: 080144cc .word 0x080144cc + +08013d5c <UTIL_TIMER_Init>: + 8013d5c: 4b02 ldr r3, [pc, #8] ; (8013d68 <UTIL_TIMER_Init+0xc>) + 8013d5e: 2200 movs r2, #0 + 8013d60: 601a str r2, [r3, #0] + 8013d62: 4b02 ldr r3, [pc, #8] ; (8013d6c <UTIL_TIMER_Init+0x10>) + 8013d64: 681b ldr r3, [r3, #0] + 8013d66: 4718 bx r3 + 8013d68: 20002e34 .word 0x20002e34 + 8013d6c: 080144e0 .word 0x080144e0 + +08013d70 <UTIL_TIMER_Create>: + 8013d70: b5f8 push {r3, r4, r5, r6, r7, lr} + 8013d72: 4604 mov r4, r0 + 8013d74: 4617 mov r7, r2 + 8013d76: 4608 mov r0, r1 + 8013d78: 461e mov r6, r3 + 8013d7a: b17c cbz r4, 8013d9c <UTIL_TIMER_Create+0x2c> + 8013d7c: b173 cbz r3, 8013d9c <UTIL_TIMER_Create+0x2c> + 8013d7e: 4b08 ldr r3, [pc, #32] ; (8013da0 <UTIL_TIMER_Create+0x30>) + 8013d80: 2500 movs r5, #0 + 8013d82: 6a5b ldr r3, [r3, #36] ; 0x24 + 8013d84: 6025 str r5, [r4, #0] + 8013d86: 4798 blx r3 + 8013d88: 9b06 ldr r3, [sp, #24] + 8013d8a: 6060 str r0, [r4, #4] + 8013d8c: 8125 strh r5, [r4, #8] + 8013d8e: 72a5 strb r5, [r4, #10] + 8013d90: 60e6 str r6, [r4, #12] + 8013d92: 6123 str r3, [r4, #16] + 8013d94: 72e7 strb r7, [r4, #11] + 8013d96: 6165 str r5, [r4, #20] + 8013d98: 4628 mov r0, r5 + 8013d9a: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8013d9c: 2001 movs r0, #1 + 8013d9e: e7fc b.n 8013d9a <UTIL_TIMER_Create+0x2a> + 8013da0: 080144e0 .word 0x080144e0 + +08013da4 <UTIL_TIMER_GetCurrentTime>: + 8013da4: b510 push {r4, lr} + 8013da6: 4c03 ldr r4, [pc, #12] ; (8013db4 <UTIL_TIMER_GetCurrentTime+0x10>) + 8013da8: 69e3 ldr r3, [r4, #28] + 8013daa: 4798 blx r3 + 8013dac: 6aa3 ldr r3, [r4, #40] ; 0x28 + 8013dae: e8bd 4010 ldmia.w sp!, {r4, lr} + 8013db2: 4718 bx r3 + 8013db4: 080144e0 .word 0x080144e0 + +08013db8 <UTIL_TIMER_GetElapsedTime>: + 8013db8: b570 push {r4, r5, r6, lr} + 8013dba: 4d06 ldr r5, [pc, #24] ; (8013dd4 <UTIL_TIMER_GetElapsedTime+0x1c>) + 8013dbc: 69eb ldr r3, [r5, #28] + 8013dbe: 4606 mov r6, r0 + 8013dc0: 4798 blx r3 + 8013dc2: 6a6b ldr r3, [r5, #36] ; 0x24 + 8013dc4: 4604 mov r4, r0 + 8013dc6: 4630 mov r0, r6 + 8013dc8: 4798 blx r3 + 8013dca: 6aab ldr r3, [r5, #40] ; 0x28 + 8013dcc: 1a20 subs r0, r4, r0 + 8013dce: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8013dd2: 4718 bx r3 + 8013dd4: 080144e0 .word 0x080144e0 + +08013dd8 <TimerExists>: + 8013dd8: 4b05 ldr r3, [pc, #20] ; (8013df0 <TimerExists+0x18>) + 8013dda: 681b ldr r3, [r3, #0] + 8013ddc: b90b cbnz r3, 8013de2 <TimerExists+0xa> + 8013dde: 4618 mov r0, r3 + 8013de0: 4770 bx lr + 8013de2: 4283 cmp r3, r0 + 8013de4: d001 beq.n 8013dea <TimerExists+0x12> + 8013de6: 695b ldr r3, [r3, #20] + 8013de8: e7f8 b.n 8013ddc <TimerExists+0x4> + 8013dea: 2001 movs r0, #1 + 8013dec: 4770 bx lr + 8013dee: bf00 nop + 8013df0: 20002e34 .word 0x20002e34 + +08013df4 <TimerSetTimeout>: + 8013df4: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} + 8013df8: 4e0b ldr r6, [pc, #44] ; (8013e28 <TimerSetTimeout+0x34>) + 8013dfa: 6a33 ldr r3, [r6, #32] + 8013dfc: 4604 mov r4, r0 + 8013dfe: 4798 blx r3 + 8013e00: 2301 movs r3, #1 + 8013e02: 69b7 ldr r7, [r6, #24] + 8013e04: 7223 strb r3, [r4, #8] + 8013e06: f8d4 8000 ldr.w r8, [r4] + 8013e0a: 4605 mov r5, r0 + 8013e0c: 47b8 blx r7 + 8013e0e: 4428 add r0, r5 + 8013e10: 4580 cmp r8, r0 + 8013e12: d202 bcs.n 8013e1a <TimerSetTimeout+0x26> + 8013e14: 47b8 blx r7 + 8013e16: 4428 add r0, r5 + 8013e18: 6020 str r0, [r4, #0] + 8013e1a: 68b3 ldr r3, [r6, #8] + 8013e1c: 6820 ldr r0, [r4, #0] + 8013e1e: 9301 str r3, [sp, #4] + 8013e20: b002 add sp, #8 + 8013e22: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 8013e26: 4718 bx r3 + 8013e28: 080144e0 .word 0x080144e0 + +08013e2c <UTIL_TIMER_Stop>: + 8013e2c: b570 push {r4, r5, r6, lr} + 8013e2e: b320 cbz r0, 8013e7a <UTIL_TIMER_Stop+0x4e> + 8013e30: f3ef 8610 mrs r6, PRIMASK + 8013e34: b672 cpsid i + 8013e36: 4d12 ldr r5, [pc, #72] ; (8013e80 <UTIL_TIMER_Stop+0x54>) + 8013e38: 682b ldr r3, [r5, #0] + 8013e3a: 2201 movs r2, #1 + 8013e3c: 7282 strb r2, [r0, #10] + 8013e3e: b153 cbz r3, 8013e56 <UTIL_TIMER_Stop+0x2a> + 8013e40: 2200 movs r2, #0 + 8013e42: 7242 strb r2, [r0, #9] + 8013e44: 4298 cmp r0, r3 + 8013e46: 695c ldr r4, [r3, #20] + 8013e48: d10e bne.n 8013e68 <UTIL_TIMER_Stop+0x3c> + 8013e4a: 7202 strb r2, [r0, #8] + 8013e4c: b13c cbz r4, 8013e5e <UTIL_TIMER_Stop+0x32> + 8013e4e: 4620 mov r0, r4 + 8013e50: 602c str r4, [r5, #0] + 8013e52: f7ff ffcf bl 8013df4 <TimerSetTimeout> + 8013e56: f386 8810 msr PRIMASK, r6 + 8013e5a: 2000 movs r0, #0 + 8013e5c: bd70 pop {r4, r5, r6, pc} + 8013e5e: 4b09 ldr r3, [pc, #36] ; (8013e84 <UTIL_TIMER_Stop+0x58>) + 8013e60: 68db ldr r3, [r3, #12] + 8013e62: 4798 blx r3 + 8013e64: 602c str r4, [r5, #0] + 8013e66: e7f6 b.n 8013e56 <UTIL_TIMER_Stop+0x2a> + 8013e68: 461a mov r2, r3 + 8013e6a: 695b ldr r3, [r3, #20] + 8013e6c: 2b00 cmp r3, #0 + 8013e6e: d0f2 beq.n 8013e56 <UTIL_TIMER_Stop+0x2a> + 8013e70: 4298 cmp r0, r3 + 8013e72: d1f9 bne.n 8013e68 <UTIL_TIMER_Stop+0x3c> + 8013e74: 6943 ldr r3, [r0, #20] + 8013e76: 6153 str r3, [r2, #20] + 8013e78: e7ed b.n 8013e56 <UTIL_TIMER_Stop+0x2a> + 8013e7a: 2001 movs r0, #1 + 8013e7c: e7ee b.n 8013e5c <UTIL_TIMER_Stop+0x30> + 8013e7e: bf00 nop + 8013e80: 20002e34 .word 0x20002e34 + 8013e84: 080144e0 .word 0x080144e0 + +08013e88 <TimerInsertTimer>: + 8013e88: 4b08 ldr r3, [pc, #32] ; (8013eac <TimerInsertTimer+0x24>) + 8013e8a: b510 push {r4, lr} + 8013e8c: 681a ldr r2, [r3, #0] + 8013e8e: 6953 ldr r3, [r2, #20] + 8013e90: 6951 ldr r1, [r2, #20] + 8013e92: b911 cbnz r1, 8013e9a <TimerInsertTimer+0x12> + 8013e94: 6150 str r0, [r2, #20] + 8013e96: 6141 str r1, [r0, #20] + 8013e98: bd10 pop {r4, pc} + 8013e9a: 6804 ldr r4, [r0, #0] + 8013e9c: 6819 ldr r1, [r3, #0] + 8013e9e: 428c cmp r4, r1 + 8013ea0: d902 bls.n 8013ea8 <TimerInsertTimer+0x20> + 8013ea2: 461a mov r2, r3 + 8013ea4: 695b ldr r3, [r3, #20] + 8013ea6: e7f3 b.n 8013e90 <TimerInsertTimer+0x8> + 8013ea8: 4619 mov r1, r3 + 8013eaa: e7f3 b.n 8013e94 <TimerInsertTimer+0xc> + 8013eac: 20002e34 .word 0x20002e34 + +08013eb0 <TimerInsertNewHeadTimer>: + 8013eb0: 4a04 ldr r2, [pc, #16] ; (8013ec4 <TimerInsertNewHeadTimer+0x14>) + 8013eb2: 6813 ldr r3, [r2, #0] + 8013eb4: b10b cbz r3, 8013eba <TimerInsertNewHeadTimer+0xa> + 8013eb6: 2100 movs r1, #0 + 8013eb8: 7219 strb r1, [r3, #8] + 8013eba: 6143 str r3, [r0, #20] + 8013ebc: 6010 str r0, [r2, #0] + 8013ebe: f7ff bf99 b.w 8013df4 <TimerSetTimeout> + 8013ec2: bf00 nop + 8013ec4: 20002e34 .word 0x20002e34 + +08013ec8 <UTIL_TIMER_Start>: + 8013ec8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8013ecc: 4604 mov r4, r0 + 8013ece: 2800 cmp r0, #0 + 8013ed0: d02d beq.n 8013f2e <UTIL_TIMER_Start+0x66> + 8013ed2: f7ff ff81 bl 8013dd8 <TimerExists> + 8013ed6: bb50 cbnz r0, 8013f2e <UTIL_TIMER_Start+0x66> + 8013ed8: 7a65 ldrb r5, [r4, #9] + 8013eda: bb45 cbnz r5, 8013f2e <UTIL_TIMER_Start+0x66> + 8013edc: f3ef 8810 mrs r8, PRIMASK + 8013ee0: b672 cpsid i + 8013ee2: 4e14 ldr r6, [pc, #80] ; (8013f34 <UTIL_TIMER_Start+0x6c>) + 8013ee4: 6867 ldr r7, [r4, #4] + 8013ee6: 6a33 ldr r3, [r6, #32] + 8013ee8: 4798 blx r3 + 8013eea: 4287 cmp r7, r0 + 8013eec: bf2c ite cs + 8013eee: 6027 strcs r7, [r4, #0] + 8013ef0: 6020 strcc r0, [r4, #0] + 8013ef2: 4f11 ldr r7, [pc, #68] ; (8013f38 <UTIL_TIMER_Start+0x70>) + 8013ef4: 72a5 strb r5, [r4, #10] + 8013ef6: f44f 7380 mov.w r3, #256 ; 0x100 + 8013efa: 8123 strh r3, [r4, #8] + 8013efc: 683b ldr r3, [r7, #0] + 8013efe: b94b cbnz r3, 8013f14 <UTIL_TIMER_Start+0x4c> + 8013f00: 6933 ldr r3, [r6, #16] + 8013f02: 4798 blx r3 + 8013f04: 4620 mov r0, r4 + 8013f06: f7ff ffd3 bl 8013eb0 <TimerInsertNewHeadTimer> + 8013f0a: f388 8810 msr PRIMASK, r8 + 8013f0e: 4628 mov r0, r5 + 8013f10: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8013f14: 69b3 ldr r3, [r6, #24] + 8013f16: 4798 blx r3 + 8013f18: 6823 ldr r3, [r4, #0] + 8013f1a: 4418 add r0, r3 + 8013f1c: 683b ldr r3, [r7, #0] + 8013f1e: 6020 str r0, [r4, #0] + 8013f20: 681b ldr r3, [r3, #0] + 8013f22: 4298 cmp r0, r3 + 8013f24: 4620 mov r0, r4 + 8013f26: d3ee bcc.n 8013f06 <UTIL_TIMER_Start+0x3e> + 8013f28: f7ff ffae bl 8013e88 <TimerInsertTimer> + 8013f2c: e7ed b.n 8013f0a <UTIL_TIMER_Start+0x42> + 8013f2e: 2501 movs r5, #1 + 8013f30: e7ed b.n 8013f0e <UTIL_TIMER_Start+0x46> + 8013f32: bf00 nop + 8013f34: 080144e0 .word 0x080144e0 + 8013f38: 20002e34 .word 0x20002e34 + +08013f3c <UTIL_TIMER_SetPeriod>: + 8013f3c: b510 push {r4, lr} + 8013f3e: 4604 mov r4, r0 + 8013f40: 4608 mov r0, r1 + 8013f42: b17c cbz r4, 8013f64 <UTIL_TIMER_SetPeriod+0x28> + 8013f44: 4b08 ldr r3, [pc, #32] ; (8013f68 <UTIL_TIMER_SetPeriod+0x2c>) + 8013f46: 6a5b ldr r3, [r3, #36] ; 0x24 + 8013f48: 4798 blx r3 + 8013f4a: 6060 str r0, [r4, #4] + 8013f4c: 4620 mov r0, r4 + 8013f4e: f7ff ff43 bl 8013dd8 <TimerExists> + 8013f52: b140 cbz r0, 8013f66 <UTIL_TIMER_SetPeriod+0x2a> + 8013f54: 4620 mov r0, r4 + 8013f56: f7ff ff69 bl 8013e2c <UTIL_TIMER_Stop> + 8013f5a: 4620 mov r0, r4 + 8013f5c: e8bd 4010 ldmia.w sp!, {r4, lr} + 8013f60: f7ff bfb2 b.w 8013ec8 <UTIL_TIMER_Start> + 8013f64: 2001 movs r0, #1 + 8013f66: bd10 pop {r4, pc} + 8013f68: 080144e0 .word 0x080144e0 + +08013f6c <UTIL_TIMER_IRQ_Handler>: + 8013f6c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8013f70: f3ef 8710 mrs r7, PRIMASK + 8013f74: b672 cpsid i + 8013f76: 4e1d ldr r6, [pc, #116] ; (8013fec <UTIL_TIMER_IRQ_Handler+0x80>) + 8013f78: 4d1d ldr r5, [pc, #116] ; (8013ff0 <UTIL_TIMER_IRQ_Handler+0x84>) + 8013f7a: 6973 ldr r3, [r6, #20] + 8013f7c: 4798 blx r3 + 8013f7e: 6933 ldr r3, [r6, #16] + 8013f80: 4604 mov r4, r0 + 8013f82: 4798 blx r3 + 8013f84: 682b ldr r3, [r5, #0] + 8013f86: b94b cbnz r3, 8013f9c <UTIL_TIMER_IRQ_Handler+0x30> + 8013f88: f04f 0800 mov.w r8, #0 + 8013f8c: 682b ldr r3, [r5, #0] + 8013f8e: b98b cbnz r3, 8013fb4 <UTIL_TIMER_IRQ_Handler+0x48> + 8013f90: 6828 ldr r0, [r5, #0] + 8013f92: bb28 cbnz r0, 8013fe0 <UTIL_TIMER_IRQ_Handler+0x74> + 8013f94: f387 8810 msr PRIMASK, r7 + 8013f98: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8013f9c: 1b01 subs r1, r0, r4 + 8013f9e: 1a24 subs r4, r4, r0 + 8013fa0: 681a ldr r2, [r3, #0] + 8013fa2: 428a cmp r2, r1 + 8013fa4: bf8c ite hi + 8013fa6: 1912 addhi r2, r2, r4 + 8013fa8: 2200 movls r2, #0 + 8013faa: 601a str r2, [r3, #0] + 8013fac: 695b ldr r3, [r3, #20] + 8013fae: 2b00 cmp r3, #0 + 8013fb0: d1f6 bne.n 8013fa0 <UTIL_TIMER_IRQ_Handler+0x34> + 8013fb2: e7e9 b.n 8013f88 <UTIL_TIMER_IRQ_Handler+0x1c> + 8013fb4: 681c ldr r4, [r3, #0] + 8013fb6: b11c cbz r4, 8013fc0 <UTIL_TIMER_IRQ_Handler+0x54> + 8013fb8: 69b3 ldr r3, [r6, #24] + 8013fba: 4798 blx r3 + 8013fbc: 4284 cmp r4, r0 + 8013fbe: d2e7 bcs.n 8013f90 <UTIL_TIMER_IRQ_Handler+0x24> + 8013fc0: 682c ldr r4, [r5, #0] + 8013fc2: 6963 ldr r3, [r4, #20] + 8013fc4: 602b str r3, [r5, #0] + 8013fc6: f8a4 8008 strh.w r8, [r4, #8] + 8013fca: e9d4 3003 ldrd r3, r0, [r4, #12] + 8013fce: 4798 blx r3 + 8013fd0: 8963 ldrh r3, [r4, #10] + 8013fd2: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8013fd6: d1d9 bne.n 8013f8c <UTIL_TIMER_IRQ_Handler+0x20> + 8013fd8: 4620 mov r0, r4 + 8013fda: f7ff ff75 bl 8013ec8 <UTIL_TIMER_Start> + 8013fde: e7d5 b.n 8013f8c <UTIL_TIMER_IRQ_Handler+0x20> + 8013fe0: 7a03 ldrb r3, [r0, #8] + 8013fe2: 2b00 cmp r3, #0 + 8013fe4: d1d6 bne.n 8013f94 <UTIL_TIMER_IRQ_Handler+0x28> + 8013fe6: f7ff ff05 bl 8013df4 <TimerSetTimeout> + 8013fea: e7d3 b.n 8013f94 <UTIL_TIMER_IRQ_Handler+0x28> + 8013fec: 080144e0 .word 0x080144e0 + 8013ff0: 20002e34 .word 0x20002e34 + +08013ff4 <tiny_vsnprintf_like>: + 8013ff4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8013ff8: b097 sub sp, #92 ; 0x5c + 8013ffa: 2900 cmp r1, #0 + 8013ffc: 4680 mov r8, r0 + 8013ffe: 9103 str r1, [sp, #12] + 8014000: f340 810e ble.w 8014220 <tiny_vsnprintf_like+0x22c> + 8014004: 469a mov sl, r3 + 8014006: 4604 mov r4, r0 + 8014008: 9903 ldr r1, [sp, #12] + 801400a: 7813 ldrb r3, [r2, #0] + 801400c: eba4 0008 sub.w r0, r4, r8 + 8014010: 3901 subs r1, #1 + 8014012: b923 cbnz r3, 801401e <tiny_vsnprintf_like+0x2a> + 8014014: 2300 movs r3, #0 + 8014016: 7023 strb r3, [r4, #0] + 8014018: b017 add sp, #92 ; 0x5c + 801401a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 801401e: 4288 cmp r0, r1 + 8014020: daf8 bge.n 8014014 <tiny_vsnprintf_like+0x20> + 8014022: 2b25 cmp r3, #37 ; 0x25 + 8014024: d004 beq.n 8014030 <tiny_vsnprintf_like+0x3c> + 8014026: f804 3b01 strb.w r3, [r4], #1 + 801402a: 4616 mov r6, r2 + 801402c: 1c72 adds r2, r6, #1 + 801402e: e7eb b.n 8014008 <tiny_vsnprintf_like+0x14> + 8014030: f892 c001 ldrb.w ip, [r2, #1] + 8014034: f1ac 0330 sub.w r3, ip, #48 ; 0x30 + 8014038: f1d3 0e00 rsbs lr, r3, #0 + 801403c: eb4e 0e03 adc.w lr, lr, r3 + 8014040: f1ac 0330 sub.w r3, ip, #48 ; 0x30 + 8014044: 2b09 cmp r3, #9 + 8014046: f102 0601 add.w r6, r2, #1 + 801404a: d829 bhi.n 80140a0 <tiny_vsnprintf_like+0xac> + 801404c: 4632 mov r2, r6 + 801404e: 2500 movs r5, #0 + 8014050: f04f 090a mov.w r9, #10 + 8014054: 4616 mov r6, r2 + 8014056: f812 3b01 ldrb.w r3, [r2], #1 + 801405a: f1a3 0030 sub.w r0, r3, #48 ; 0x30 + 801405e: 2809 cmp r0, #9 + 8014060: d919 bls.n 8014096 <tiny_vsnprintf_like+0xa2> + 8014062: 7833 ldrb r3, [r6, #0] + 8014064: 2b69 cmp r3, #105 ; 0x69 + 8014066: f000 809c beq.w 80141a2 <tiny_vsnprintf_like+0x1ae> + 801406a: d81c bhi.n 80140a6 <tiny_vsnprintf_like+0xb2> + 801406c: 2b63 cmp r3, #99 ; 0x63 + 801406e: d028 beq.n 80140c2 <tiny_vsnprintf_like+0xce> + 8014070: 2b64 cmp r3, #100 ; 0x64 + 8014072: f000 8096 beq.w 80141a2 <tiny_vsnprintf_like+0x1ae> + 8014076: 2b58 cmp r3, #88 ; 0x58 + 8014078: d05b beq.n 8014132 <tiny_vsnprintf_like+0x13e> + 801407a: 2b25 cmp r3, #37 ; 0x25 + 801407c: d119 bne.n 80140b2 <tiny_vsnprintf_like+0xbe> + 801407e: 7833 ldrb r3, [r6, #0] + 8014080: 2b00 cmp r3, #0 + 8014082: f000 8092 beq.w 80141aa <tiny_vsnprintf_like+0x1b6> + 8014086: f804 3b01 strb.w r3, [r4], #1 + 801408a: eba4 0308 sub.w r3, r4, r8 + 801408e: 428b cmp r3, r1 + 8014090: f280 8089 bge.w 80141a6 <tiny_vsnprintf_like+0x1b2> + 8014094: e7ca b.n 801402c <tiny_vsnprintf_like+0x38> + 8014096: fb09 3305 mla r3, r9, r5, r3 + 801409a: f1a3 0530 sub.w r5, r3, #48 ; 0x30 + 801409e: e7d9 b.n 8014054 <tiny_vsnprintf_like+0x60> + 80140a0: f04f 35ff mov.w r5, #4294967295 + 80140a4: e7dd b.n 8014062 <tiny_vsnprintf_like+0x6e> + 80140a6: 2b75 cmp r3, #117 ; 0x75 + 80140a8: d07d beq.n 80141a6 <tiny_vsnprintf_like+0x1b2> + 80140aa: 2b78 cmp r3, #120 ; 0x78 + 80140ac: d043 beq.n 8014136 <tiny_vsnprintf_like+0x142> + 80140ae: 2b73 cmp r3, #115 ; 0x73 + 80140b0: d01e beq.n 80140f0 <tiny_vsnprintf_like+0xfc> + 80140b2: 2325 movs r3, #37 ; 0x25 + 80140b4: f804 3b01 strb.w r3, [r4], #1 + 80140b8: eba4 0308 sub.w r3, r4, r8 + 80140bc: 428b cmp r3, r1 + 80140be: da72 bge.n 80141a6 <tiny_vsnprintf_like+0x1b2> + 80140c0: e7dd b.n 801407e <tiny_vsnprintf_like+0x8a> + 80140c2: 2d00 cmp r5, #0 + 80140c4: f105 39ff add.w r9, r5, #4294967295 + 80140c8: bfd8 it le + 80140ca: f04f 0900 movle.w r9, #0 + 80140ce: 464a mov r2, r9 + 80140d0: 4620 mov r0, r4 + 80140d2: 2120 movs r1, #32 + 80140d4: f000 f8bc bl 8014250 <memset> + 80140d8: 4653 mov r3, sl + 80140da: 44a1 add r9, r4 + 80140dc: 2d00 cmp r5, #0 + 80140de: f853 2b04 ldr.w r2, [r3], #4 + 80140e2: f889 2000 strb.w r2, [r9] + 80140e6: bfd8 it le + 80140e8: 2501 movle r5, #1 + 80140ea: 442c add r4, r5 + 80140ec: 469a mov sl, r3 + 80140ee: e79d b.n 801402c <tiny_vsnprintf_like+0x38> + 80140f0: 4b4c ldr r3, [pc, #304] ; (8014224 <tiny_vsnprintf_like+0x230>) + 80140f2: f85a 7b04 ldr.w r7, [sl], #4 + 80140f6: 2f00 cmp r7, #0 + 80140f8: bf08 it eq + 80140fa: 461f moveq r7, r3 + 80140fc: 4638 mov r0, r7 + 80140fe: f7ed f95f bl 80013c0 <strlen> + 8014102: eba5 0b00 sub.w fp, r5, r0 + 8014106: 4285 cmp r5, r0 + 8014108: bfb8 it lt + 801410a: f04f 0b00 movlt.w fp, #0 + 801410e: 465a mov r2, fp + 8014110: 4681 mov r9, r0 + 8014112: 2120 movs r1, #32 + 8014114: 4620 mov r0, r4 + 8014116: f000 f89b bl 8014250 <memset> + 801411a: 44a3 add fp, r4 + 801411c: 2300 movs r3, #0 + 801411e: 454b cmp r3, r9 + 8014120: db02 blt.n 8014128 <tiny_vsnprintf_like+0x134> + 8014122: eb0b 0409 add.w r4, fp, r9 + 8014126: e781 b.n 801402c <tiny_vsnprintf_like+0x38> + 8014128: 5cfa ldrb r2, [r7, r3] + 801412a: f80b 2003 strb.w r2, [fp, r3] + 801412e: 3301 adds r3, #1 + 8014130: e7f5 b.n 801411e <tiny_vsnprintf_like+0x12a> + 8014132: f04e 0e40 orr.w lr, lr, #64 ; 0x40 + 8014136: 2010 movs r0, #16 + 8014138: f8df 90ec ldr.w r9, [pc, #236] ; 8014228 <tiny_vsnprintf_like+0x234> + 801413c: 4f3b ldr r7, [pc, #236] ; (801422c <tiny_vsnprintf_like+0x238>) + 801413e: f01e 0f40 tst.w lr, #64 ; 0x40 + 8014142: bf08 it eq + 8014144: 464f moveq r7, r9 + 8014146: 4653 mov r3, sl + 8014148: f1bc 0f30 cmp.w ip, #48 ; 0x30 + 801414c: 9701 str r7, [sp, #4] + 801414e: eba4 0208 sub.w r2, r4, r8 + 8014152: bf0c ite eq + 8014154: 2730 moveq r7, #48 ; 0x30 + 8014156: 2720 movne r7, #32 + 8014158: f01e 0f02 tst.w lr, #2 + 801415c: eba1 0202 sub.w r2, r1, r2 + 8014160: 9702 str r7, [sp, #8] + 8014162: f853 1b04 ldr.w r1, [r3], #4 + 8014166: d022 beq.n 80141ae <tiny_vsnprintf_like+0x1ba> + 8014168: 2900 cmp r1, #0 + 801416a: da20 bge.n 80141ae <tiny_vsnprintf_like+0x1ba> + 801416c: 4249 negs r1, r1 + 801416e: 3d01 subs r5, #1 + 8014170: f04f 0e2d mov.w lr, #45 ; 0x2d + 8014174: af05 add r7, sp, #20 + 8014176: 9700 str r7, [sp, #0] + 8014178: 2700 movs r7, #0 + 801417a: 4689 mov r9, r1 + 801417c: f8dd a004 ldr.w sl, [sp, #4] + 8014180: fbb1 f1f0 udiv r1, r1, r0 + 8014184: fb00 9b11 mls fp, r0, r1, r9 + 8014188: 4548 cmp r0, r9 + 801418a: f81a b00b ldrb.w fp, [sl, fp] + 801418e: f8dd a000 ldr.w sl, [sp] + 8014192: f80a bb01 strb.w fp, [sl], #1 + 8014196: f107 0701 add.w r7, r7, #1 + 801419a: f8cd a000 str.w sl, [sp] + 801419e: d9ec bls.n 801417a <tiny_vsnprintf_like+0x186> + 80141a0: e00e b.n 80141c0 <tiny_vsnprintf_like+0x1cc> + 80141a2: f04e 0e02 orr.w lr, lr, #2 + 80141a6: 200a movs r0, #10 + 80141a8: e7c6 b.n 8014138 <tiny_vsnprintf_like+0x144> + 80141aa: 3e01 subs r6, #1 + 80141ac: e76d b.n 801408a <tiny_vsnprintf_like+0x96> + 80141ae: b111 cbz r1, 80141b6 <tiny_vsnprintf_like+0x1c2> + 80141b0: f04f 0e00 mov.w lr, #0 + 80141b4: e7de b.n 8014174 <tiny_vsnprintf_like+0x180> + 80141b6: 2030 movs r0, #48 ; 0x30 + 80141b8: f88d 0014 strb.w r0, [sp, #20] + 80141bc: 468e mov lr, r1 + 80141be: 2701 movs r7, #1 + 80141c0: f1bc 0f30 cmp.w ip, #48 ; 0x30 + 80141c4: eba5 0507 sub.w r5, r5, r7 + 80141c8: d004 beq.n 80141d4 <tiny_vsnprintf_like+0x1e0> + 80141ca: 2020 movs r0, #32 + 80141cc: 2d00 cmp r5, #0 + 80141ce: f105 35ff add.w r5, r5, #4294967295 + 80141d2: dc09 bgt.n 80141e8 <tiny_vsnprintf_like+0x1f4> + 80141d4: f1be 0f00 cmp.w lr, #0 + 80141d8: d004 beq.n 80141e4 <tiny_vsnprintf_like+0x1f0> + 80141da: 212d movs r1, #45 ; 0x2d + 80141dc: 3a01 subs r2, #1 + 80141de: f804 1b01 strb.w r1, [r4], #1 + 80141e2: d083 beq.n 80140ec <tiny_vsnprintf_like+0xf8> + 80141e4: 4425 add r5, r4 + 80141e6: e00a b.n 80141fe <tiny_vsnprintf_like+0x20a> + 80141e8: 3a01 subs r2, #1 + 80141ea: f804 0b01 strb.w r0, [r4], #1 + 80141ee: d1ed bne.n 80141cc <tiny_vsnprintf_like+0x1d8> + 80141f0: e77c b.n 80140ec <tiny_vsnprintf_like+0xf8> + 80141f2: 9902 ldr r1, [sp, #8] + 80141f4: f804 1b01 strb.w r1, [r4], #1 + 80141f8: 3a01 subs r2, #1 + 80141fa: f43f af77 beq.w 80140ec <tiny_vsnprintf_like+0xf8> + 80141fe: 1b29 subs r1, r5, r4 + 8014200: 2900 cmp r1, #0 + 8014202: dcf6 bgt.n 80141f2 <tiny_vsnprintf_like+0x1fe> + 8014204: a905 add r1, sp, #20 + 8014206: 4439 add r1, r7 + 8014208: 4422 add r2, r4 + 801420a: 4427 add r7, r4 + 801420c: 42a7 cmp r7, r4 + 801420e: f43f af6d beq.w 80140ec <tiny_vsnprintf_like+0xf8> + 8014212: f811 0d01 ldrb.w r0, [r1, #-1]! + 8014216: f804 0b01 strb.w r0, [r4], #1 + 801421a: 4294 cmp r4, r2 + 801421c: d1f6 bne.n 801420c <tiny_vsnprintf_like+0x218> + 801421e: e765 b.n 80140ec <tiny_vsnprintf_like+0xf8> + 8014220: 2000 movs r0, #0 + 8014222: e6f9 b.n 8014018 <tiny_vsnprintf_like+0x24> + 8014224: 080158d0 .word 0x080158d0 + 8014228: 080158d7 .word 0x080158d7 + 801422c: 080158fc .word 0x080158fc + +08014230 <memcmp>: + 8014230: b510 push {r4, lr} + 8014232: 3901 subs r1, #1 + 8014234: 4402 add r2, r0 + 8014236: 4290 cmp r0, r2 + 8014238: d101 bne.n 801423e <memcmp+0xe> + 801423a: 2000 movs r0, #0 + 801423c: e005 b.n 801424a <memcmp+0x1a> + 801423e: 7803 ldrb r3, [r0, #0] + 8014240: f811 4f01 ldrb.w r4, [r1, #1]! + 8014244: 42a3 cmp r3, r4 + 8014246: d001 beq.n 801424c <memcmp+0x1c> + 8014248: 1b18 subs r0, r3, r4 + 801424a: bd10 pop {r4, pc} + 801424c: 3001 adds r0, #1 + 801424e: e7f2 b.n 8014236 <memcmp+0x6> + +08014250 <memset>: + 8014250: 4402 add r2, r0 + 8014252: 4603 mov r3, r0 + 8014254: 4293 cmp r3, r2 + 8014256: d100 bne.n 801425a <memset+0xa> + 8014258: 4770 bx lr + 801425a: f803 1b01 strb.w r1, [r3], #1 + 801425e: e7f9 b.n 8014254 <memset+0x4> + +08014260 <__libc_init_array>: + 8014260: b570 push {r4, r5, r6, lr} + 8014262: 4d0d ldr r5, [pc, #52] ; (8014298 <__libc_init_array+0x38>) + 8014264: 4c0d ldr r4, [pc, #52] ; (801429c <__libc_init_array+0x3c>) + 8014266: 1b64 subs r4, r4, r5 + 8014268: 10a4 asrs r4, r4, #2 + 801426a: 2600 movs r6, #0 + 801426c: 42a6 cmp r6, r4 + 801426e: d109 bne.n 8014284 <__libc_init_array+0x24> + 8014270: 4d0b ldr r5, [pc, #44] ; (80142a0 <__libc_init_array+0x40>) + 8014272: 4c0c ldr r4, [pc, #48] ; (80142a4 <__libc_init_array+0x44>) + 8014274: f000 f8b8 bl 80143e8 <_init> + 8014278: 1b64 subs r4, r4, r5 + 801427a: 10a4 asrs r4, r4, #2 + 801427c: 2600 movs r6, #0 + 801427e: 42a6 cmp r6, r4 + 8014280: d105 bne.n 801428e <__libc_init_array+0x2e> + 8014282: bd70 pop {r4, r5, r6, pc} + 8014284: f855 3b04 ldr.w r3, [r5], #4 + 8014288: 4798 blx r3 + 801428a: 3601 adds r6, #1 + 801428c: e7ee b.n 801426c <__libc_init_array+0xc> + 801428e: f855 3b04 ldr.w r3, [r5], #4 + 8014292: 4798 blx r3 + 8014294: 3601 adds r6, #1 + 8014296: e7f2 b.n 801427e <__libc_init_array+0x1e> + 8014298: 08015a04 .word 0x08015a04 + 801429c: 08015a04 .word 0x08015a04 + 80142a0: 08015a04 .word 0x08015a04 + 80142a4: 08015a08 .word 0x08015a08 + +080142a8 <strcpy>: + 80142a8: 4603 mov r3, r0 + 80142aa: f811 2b01 ldrb.w r2, [r1], #1 + 80142ae: f803 2b01 strb.w r2, [r3], #1 + 80142b2: 2a00 cmp r2, #0 + 80142b4: d1f9 bne.n 80142aa <strcpy+0x2> + 80142b6: 4770 bx lr + +080142b8 <__aeabi_memcpy>: + 80142b8: f000 b803 b.w 80142c2 <memcpy> + +080142bc <__aeabi_memclr>: + 80142bc: 2200 movs r2, #0 + 80142be: f000 b80e b.w 80142de <__aeabi_memset> + +080142c2 <memcpy>: + 80142c2: 440a add r2, r1 + 80142c4: 4291 cmp r1, r2 + 80142c6: f100 33ff add.w r3, r0, #4294967295 + 80142ca: d100 bne.n 80142ce <memcpy+0xc> + 80142cc: 4770 bx lr + 80142ce: b510 push {r4, lr} + 80142d0: f811 4b01 ldrb.w r4, [r1], #1 + 80142d4: f803 4f01 strb.w r4, [r3, #1]! + 80142d8: 4291 cmp r1, r2 + 80142da: d1f9 bne.n 80142d0 <memcpy+0xe> + 80142dc: bd10 pop {r4, pc} + +080142de <__aeabi_memset>: + 80142de: 4613 mov r3, r2 + 80142e0: 460a mov r2, r1 + 80142e2: 4619 mov r1, r3 + 80142e4: f7ff bfb4 b.w 8014250 <memset> + +080142e8 <floor>: + 80142e8: f3c1 520a ubfx r2, r1, #20, #11 + 80142ec: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 80142f0: f2a2 36ff subw r6, r2, #1023 ; 0x3ff + 80142f4: 2e13 cmp r6, #19 + 80142f6: 460b mov r3, r1 + 80142f8: 4607 mov r7, r0 + 80142fa: 460c mov r4, r1 + 80142fc: 4605 mov r5, r0 + 80142fe: dc32 bgt.n 8014366 <floor+0x7e> + 8014300: 2e00 cmp r6, #0 + 8014302: da14 bge.n 801432e <floor+0x46> + 8014304: a334 add r3, pc, #208 ; (adr r3, 80143d8 <floor+0xf0>) + 8014306: e9d3 2300 ldrd r2, r3, [r3] + 801430a: f7ed f867 bl 80013dc <__adddf3> + 801430e: 2200 movs r2, #0 + 8014310: 2300 movs r3, #0 + 8014312: f7ed fa97 bl 8001844 <__aeabi_dcmpgt> + 8014316: b138 cbz r0, 8014328 <floor+0x40> + 8014318: 2c00 cmp r4, #0 + 801431a: da56 bge.n 80143ca <floor+0xe2> + 801431c: f024 4400 bic.w r4, r4, #2147483648 ; 0x80000000 + 8014320: 4325 orrs r5, r4 + 8014322: d055 beq.n 80143d0 <floor+0xe8> + 8014324: 4c2e ldr r4, [pc, #184] ; (80143e0 <floor+0xf8>) + 8014326: 2500 movs r5, #0 + 8014328: 4623 mov r3, r4 + 801432a: 462f mov r7, r5 + 801432c: e025 b.n 801437a <floor+0x92> + 801432e: 4a2d ldr r2, [pc, #180] ; (80143e4 <floor+0xfc>) + 8014330: fa42 f806 asr.w r8, r2, r6 + 8014334: ea01 0208 and.w r2, r1, r8 + 8014338: 4302 orrs r2, r0 + 801433a: d01e beq.n 801437a <floor+0x92> + 801433c: a326 add r3, pc, #152 ; (adr r3, 80143d8 <floor+0xf0>) + 801433e: e9d3 2300 ldrd r2, r3, [r3] + 8014342: f7ed f84b bl 80013dc <__adddf3> + 8014346: 2200 movs r2, #0 + 8014348: 2300 movs r3, #0 + 801434a: f7ed fa7b bl 8001844 <__aeabi_dcmpgt> + 801434e: 2800 cmp r0, #0 + 8014350: d0ea beq.n 8014328 <floor+0x40> + 8014352: 2c00 cmp r4, #0 + 8014354: bfbe ittt lt + 8014356: f44f 1380 movlt.w r3, #1048576 ; 0x100000 + 801435a: 4133 asrlt r3, r6 + 801435c: 18e4 addlt r4, r4, r3 + 801435e: ea24 0408 bic.w r4, r4, r8 + 8014362: 2500 movs r5, #0 + 8014364: e7e0 b.n 8014328 <floor+0x40> + 8014366: 2e33 cmp r6, #51 ; 0x33 + 8014368: dd0b ble.n 8014382 <floor+0x9a> + 801436a: f5b6 6f80 cmp.w r6, #1024 ; 0x400 + 801436e: d104 bne.n 801437a <floor+0x92> + 8014370: 4602 mov r2, r0 + 8014372: f7ed f833 bl 80013dc <__adddf3> + 8014376: 4607 mov r7, r0 + 8014378: 460b mov r3, r1 + 801437a: 4638 mov r0, r7 + 801437c: 4619 mov r1, r3 + 801437e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 8014382: f2a2 4213 subw r2, r2, #1043 ; 0x413 + 8014386: f04f 38ff mov.w r8, #4294967295 + 801438a: fa28 f802 lsr.w r8, r8, r2 + 801438e: ea10 0f08 tst.w r0, r8 + 8014392: d0f2 beq.n 801437a <floor+0x92> + 8014394: a310 add r3, pc, #64 ; (adr r3, 80143d8 <floor+0xf0>) + 8014396: e9d3 2300 ldrd r2, r3, [r3] + 801439a: f7ed f81f bl 80013dc <__adddf3> + 801439e: 2200 movs r2, #0 + 80143a0: 2300 movs r3, #0 + 80143a2: f7ed fa4f bl 8001844 <__aeabi_dcmpgt> + 80143a6: 2800 cmp r0, #0 + 80143a8: d0be beq.n 8014328 <floor+0x40> + 80143aa: 2c00 cmp r4, #0 + 80143ac: da0a bge.n 80143c4 <floor+0xdc> + 80143ae: 2e14 cmp r6, #20 + 80143b0: d101 bne.n 80143b6 <floor+0xce> + 80143b2: 3401 adds r4, #1 + 80143b4: e006 b.n 80143c4 <floor+0xdc> + 80143b6: f1c6 0634 rsb r6, r6, #52 ; 0x34 + 80143ba: 2301 movs r3, #1 + 80143bc: 40b3 lsls r3, r6 + 80143be: 441d add r5, r3 + 80143c0: 42af cmp r7, r5 + 80143c2: d8f6 bhi.n 80143b2 <floor+0xca> + 80143c4: ea25 0508 bic.w r5, r5, r8 + 80143c8: e7ae b.n 8014328 <floor+0x40> + 80143ca: 2500 movs r5, #0 + 80143cc: 462c mov r4, r5 + 80143ce: e7ab b.n 8014328 <floor+0x40> + 80143d0: f04f 4400 mov.w r4, #2147483648 ; 0x80000000 + 80143d4: e7a8 b.n 8014328 <floor+0x40> + 80143d6: bf00 nop + 80143d8: 8800759c .word 0x8800759c + 80143dc: 7e37e43c .word 0x7e37e43c + 80143e0: bff00000 .word 0xbff00000 + 80143e4: 000fffff .word 0x000fffff + +080143e8 <_init>: + 80143e8: b5f8 push {r3, r4, r5, r6, r7, lr} + 80143ea: bf00 nop + 80143ec: bcf8 pop {r3, r4, r5, r6, r7} + 80143ee: bc08 pop {r3} + 80143f0: 469e mov lr, r3 + 80143f2: 4770 bx lr + +080143f4 <_fini>: + 80143f4: b5f8 push {r3, r4, r5, r6, r7, lr} + 80143f6: bf00 nop + 80143f8: bcf8 pop {r3, r4, r5, r6, r7} + 80143fa: bc08 pop {r3} + 80143fc: 469e mov lr, r3 + 80143fe: 4770 bx lr diff --git a/STM32CubeIDE/Release/STS_RR_R125.bin b/STM32CubeIDE/Release/STS_RR_R125.bin new file mode 100644 index 0000000000000000000000000000000000000000..10a05ed5964d075ae74a7139fb9fd945d8f2d48e GIT binary patch literal 91396 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 Qf<hDn(Wm^Jv<Kb)0i%w5$p8QV literal 0 HcmV?d00001 diff --git a/STM32CubeIDE/Release/STS_RR_R125.list b/STM32CubeIDE/Release/STS_RR_R125.list new file mode 100644 index 0000000..fda6135 --- /dev/null +++ b/STM32CubeIDE/Release/STS_RR_R125.list @@ -0,0 +1,32914 @@ + +STS_RR_R125.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 00000138 08000000 08000000 00010000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00014470 08000138 08000138 00010138 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 000015a8 080145a8 080145a8 000245a8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .USER_embedded_Keys 000000d8 08015b50 08015b50 00025b50 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 4 .ARM.extab 00000000 08015c28 08015c28 000308cc 2**0 + CONTENTS + 5 .ARM 00000008 08015c28 08015c28 00025c28 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 6 .preinit_array 00000000 08015c30 08015c30 000308cc 2**0 + CONTENTS, ALLOC, LOAD, DATA + 7 .init_array 00000004 08015c30 08015c30 00025c30 2**2 + CONTENTS, ALLOC, LOAD, DATA + 8 .fini_array 00000004 08015c34 08015c34 00025c34 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .data 000008cc 20000000 08015c38 00030000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 10 .bss 00002570 200008cc 08016504 000308cc 2**2 + ALLOC + 11 ._user_heap_stack 00000a04 20002e3c 08016504 00032e3c 2**0 + ALLOC + 12 .ARM.attributes 0000002e 00000000 00000000 000308cc 2**0 + CONTENTS, READONLY + 13 .comment 00000043 00000000 00000000 000308fa 2**0 + CONTENTS, READONLY + 14 .iar_vfe_header 00000020 00000000 00000000 00030940 2**2 + CONTENTS, READONLY + 15 .debug_frame 000003b4 00000000 00000000 00030960 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +08000138 <__do_global_dtors_aux>: + 8000138: b510 push {r4, lr} + 800013a: 4c05 ldr r4, [pc, #20] ; (8000150 <__do_global_dtors_aux+0x18>) + 800013c: 7823 ldrb r3, [r4, #0] + 800013e: b933 cbnz r3, 800014e <__do_global_dtors_aux+0x16> + 8000140: 4b04 ldr r3, [pc, #16] ; (8000154 <__do_global_dtors_aux+0x1c>) + 8000142: b113 cbz r3, 800014a <__do_global_dtors_aux+0x12> + 8000144: 4804 ldr r0, [pc, #16] ; (8000158 <__do_global_dtors_aux+0x20>) + 8000146: f3af 8000 nop.w + 800014a: 2301 movs r3, #1 + 800014c: 7023 strb r3, [r4, #0] + 800014e: bd10 pop {r4, pc} + 8000150: 200008cc .word 0x200008cc + 8000154: 00000000 .word 0x00000000 + 8000158: 08014590 .word 0x08014590 + +0800015c <frame_dummy>: + 800015c: b508 push {r3, lr} + 800015e: 4b03 ldr r3, [pc, #12] ; (800016c <frame_dummy+0x10>) + 8000160: b11b cbz r3, 800016a <frame_dummy+0xe> + 8000162: 4903 ldr r1, [pc, #12] ; (8000170 <frame_dummy+0x14>) + 8000164: 4803 ldr r0, [pc, #12] ; (8000174 <frame_dummy+0x18>) + 8000166: f3af 8000 nop.w + 800016a: bd08 pop {r3, pc} + 800016c: 00000000 .word 0x00000000 + 8000170: 200008d0 .word 0x200008d0 + 8000174: 08014590 .word 0x08014590 + +08000178 <cmox_sha1_setDefaultMacLen>: + 8000178: 2114 movs r1, #20 + 800017a: 6041 str r1, [r0, #4] + 800017c: 4770 bx lr + +0800017e <cmox_sha1_getDefaultMacLen>: + 800017e: 2014 movs r0, #20 + 8000180: 4770 bx lr + +08000182 <cmox_sha1_getBlockLen>: + 8000182: 6a40 ldr r0, [r0, #36] ; 0x24 + 8000184: 4770 bx lr + ... + +08000188 <CMOX_HMAC_SUPPORT_SHA1>: + 8000188: 0179 0800 017f 0800 0183 0800 y........... + +08000194 <CMOX_HMAC_SHA1_TABLE>: + 8000194: 0199 0800 .... + +08000198 <cmox_hmac_sha1_constructor>: + 8000198: b510 push {r4, lr} + 800019a: 4604 mov r4, r0 + 800019c: f104 0010 add.w r0, r4, #16 + 80001a0: f000 fc5c bl 8000a5c <cmox_sha1_construct> + 80001a4: f8c4 00f8 str.w r0, [r4, #248] ; 0xf8 + 80001a8: 4801 ldr r0, [pc, #4] ; (80001b0 <cmox_hmac_sha1_constructor+0x18>) + 80001aa: f8c4 017c str.w r0, [r4, #380] ; 0x17c + 80001ae: bd10 pop {r4, pc} + 80001b0: 08000188 .word 0x08000188 + +080001b4 <cmox_hmac_sha1_compute>: + 80001b4: b5f8 push {r3, r4, r5, r6, r7, lr} + 80001b6: b0e6 sub sp, #408 ; 0x198 + 80001b8: 4604 mov r4, r0 + 80001ba: 460d mov r5, r1 + 80001bc: 4616 mov r6, r2 + 80001be: 461f mov r7, r3 + 80001c0: 490a ldr r1, [pc, #40] ; (80001ec <cmox_hmac_sha1_compute+0x38>) + 80001c2: a806 add r0, sp, #24 + 80001c4: f000 feca bl 8000f5c <cmox_hmac_construct> + 80001c8: 9970 ldr r1, [sp, #448] ; 0x1c0 + 80001ca: 9a6f ldr r2, [sp, #444] ; 0x1bc + 80001cc: 9105 str r1, [sp, #20] + 80001ce: 9204 str r2, [sp, #16] + 80001d0: 9700 str r7, [sp, #0] + 80001d2: 4633 mov r3, r6 + 80001d4: 996e ldr r1, [sp, #440] ; 0x1b8 + 80001d6: 9a6d ldr r2, [sp, #436] ; 0x1b4 + 80001d8: 9103 str r1, [sp, #12] + 80001da: 9202 str r2, [sp, #8] + 80001dc: 462a mov r2, r5 + 80001de: 996c ldr r1, [sp, #432] ; 0x1b0 + 80001e0: 9101 str r1, [sp, #4] + 80001e2: 4621 mov r1, r4 + 80001e4: f000 f860 bl 80002a8 <cmox_mac_innerCompute> + 80001e8: b067 add sp, #412 ; 0x19c + 80001ea: bdf0 pop {r4, r5, r6, r7, pc} + 80001ec: 08000194 .word 0x08000194 + +080001f0 <cmox_hmac_sha1_verify>: + 80001f0: b5f8 push {r3, r4, r5, r6, r7, lr} + 80001f2: b0e6 sub sp, #408 ; 0x198 + 80001f4: 4604 mov r4, r0 + 80001f6: 460d mov r5, r1 + 80001f8: 4616 mov r6, r2 + 80001fa: 461f mov r7, r3 + 80001fc: 4909 ldr r1, [pc, #36] ; (8000224 <cmox_hmac_sha1_verify+0x34>) + 80001fe: a806 add r0, sp, #24 + 8000200: f000 feac bl 8000f5c <cmox_hmac_construct> + 8000204: 996f ldr r1, [sp, #444] ; 0x1bc + 8000206: 9a6e ldr r2, [sp, #440] ; 0x1b8 + 8000208: 9104 str r1, [sp, #16] + 800020a: 9203 str r2, [sp, #12] + 800020c: 9700 str r7, [sp, #0] + 800020e: 996d ldr r1, [sp, #436] ; 0x1b4 + 8000210: 9a6c ldr r2, [sp, #432] ; 0x1b0 + 8000212: 9102 str r1, [sp, #8] + 8000214: 9201 str r2, [sp, #4] + 8000216: 4633 mov r3, r6 + 8000218: 462a mov r2, r5 + 800021a: 4621 mov r1, r4 + 800021c: f000 f887 bl 800032e <cmox_mac_innerVerify> + 8000220: b067 add sp, #412 ; 0x19c + 8000222: bdf0 pop {r4, r5, r6, r7, pc} + 8000224: 08000194 .word 0x08000194 + +08000228 <cmox_initialize>: + 8000228: b538 push {r3, r4, r5, lr} + 800022a: 2800 cmp r0, #0 + 800022c: bf1c itt ne + 800022e: 6801 ldrne r1, [r0, #0] + 8000230: 2900 cmpne r1, #0 + 8000232: 4a18 ldr r2, [pc, #96] ; (8000294 <cmox_initialize+0x6c>) + 8000234: d123 bne.n 800027e <cmox_initialize+0x56> + 8000236: 4b18 ldr r3, [pc, #96] ; (8000298 <cmox_initialize+0x70>) + 8000238: 681c ldr r4, [r3, #0] + 800023a: f64f 71f0 movw r1, #65520 ; 0xfff0 + 800023e: 400c ands r4, r1 + 8000240: f24c 2540 movw r5, #49728 ; 0xc240 + 8000244: 42ac cmp r4, r5 + 8000246: bf1f itttt ne + 8000248: 681b ldrne r3, [r3, #0] + 800024a: 4019 andne r1, r3 + 800024c: f24c 2470 movwne r4, #49776 ; 0xc270 + 8000250: 42a1 cmpne r1, r4 + 8000252: d112 bne.n 800027a <cmox_initialize+0x52> + 8000254: 4d11 ldr r5, [pc, #68] ; (800029c <cmox_initialize+0x74>) + 8000256: 6829 ldr r1, [r5, #0] + 8000258: b979 cbnz r1, 800027a <cmox_initialize+0x52> + 800025a: 4911 ldr r1, [pc, #68] ; (80002a0 <cmox_initialize+0x78>) + 800025c: 680b ldr r3, [r1, #0] + 800025e: f3c3 030b ubfx r3, r3, #0, #12 + 8000262: f5b3 6f8a cmp.w r3, #1104 ; 0x450 + 8000266: bf1f itttt ne + 8000268: 6809 ldrne r1, [r1, #0] + 800026a: f3c1 010b ubfxne r1, r1, #0, #12 + 800026e: f240 4383 movwne r3, #1155 ; 0x483 + 8000272: 4299 cmpne r1, r3 + 8000274: bf04 itt eq + 8000276: 2101 moveq r1, #1 + 8000278: 7011 strbeq r1, [r2, #0] + 800027a: b928 cbnz r0, 8000288 <cmox_initialize+0x60> + 800027c: e005 b.n 800028a <cmox_initialize+0x62> + 800027e: 4b09 ldr r3, [pc, #36] ; (80002a4 <cmox_initialize+0x7c>) + 8000280: 4299 cmp r1, r3 + 8000282: bf04 itt eq + 8000284: 2101 moveq r1, #1 + 8000286: 7011 strbeq r1, [r2, #0] + 8000288: 6840 ldr r0, [r0, #4] + 800028a: e8bd 4032 ldmia.w sp!, {r1, r4, r5, lr} + 800028e: f001 be9f b.w 8001fd0 <cmox_ll_init> + 8000292: bf00 nop + 8000294: 200008e8 .word 0x200008e8 + 8000298: e000ed00 .word 0xe000ed00 + 800029c: e0042000 .word 0xe0042000 + 80002a0: 5c001000 .word 0x5c001000 + 80002a4: 48370000 .word 0x48370000 + +080002a8 <cmox_mac_innerCompute>: + 80002a8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80002ac: 4604 mov r4, r0 + 80002ae: 460d mov r5, r1 + 80002b0: 6821 ldr r1, [r4, #0] + 80002b2: 4616 mov r6, r2 + 80002b4: 684a ldr r2, [r1, #4] + 80002b6: 461f mov r7, r3 + 80002b8: 4790 blx r2 + 80002ba: 4680 mov r8, r0 + 80002bc: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002c0: d12e bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002c2: 6822 ldr r2, [r4, #0] + 80002c4: 990a ldr r1, [sp, #40] ; 0x28 + 80002c6: 6893 ldr r3, [r2, #8] + 80002c8: 4620 mov r0, r4 + 80002ca: 4798 blx r3 + 80002cc: 4680 mov r8, r0 + 80002ce: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002d2: d125 bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002d4: 6823 ldr r3, [r4, #0] + 80002d6: 9a08 ldr r2, [sp, #32] + 80002d8: 9907 ldr r1, [sp, #28] + 80002da: f8d3 c00c ldr.w ip, [r3, #12] + 80002de: 4620 mov r0, r4 + 80002e0: 47e0 blx ip + 80002e2: 4680 mov r8, r0 + 80002e4: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002e8: d11a bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002ea: 6823 ldr r3, [r4, #0] + 80002ec: 9a06 ldr r2, [sp, #24] + 80002ee: 4639 mov r1, r7 + 80002f0: 691f ldr r7, [r3, #16] + 80002f2: 4620 mov r0, r4 + 80002f4: 47b8 blx r7 + 80002f6: 4680 mov r8, r0 + 80002f8: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 80002fc: d110 bne.n 8000320 <cmox_mac_innerCompute+0x78> + 80002fe: 6823 ldr r3, [r4, #0] + 8000300: 4629 mov r1, r5 + 8000302: 695d ldr r5, [r3, #20] + 8000304: 4632 mov r2, r6 + 8000306: 4620 mov r0, r4 + 8000308: 47a8 blx r5 + 800030a: 4680 mov r8, r0 + 800030c: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000310: d106 bne.n 8000320 <cmox_mac_innerCompute+0x78> + 8000312: 6823 ldr r3, [r4, #0] + 8000314: 9a0b ldr r2, [sp, #44] ; 0x2c + 8000316: 9909 ldr r1, [sp, #36] ; 0x24 + 8000318: 699d ldr r5, [r3, #24] + 800031a: 4620 mov r0, r4 + 800031c: 47a8 blx r5 + 800031e: 4680 mov r8, r0 + 8000320: 6821 ldr r1, [r4, #0] + 8000322: 680a ldr r2, [r1, #0] + 8000324: 4620 mov r0, r4 + 8000326: 4790 blx r2 + 8000328: 4640 mov r0, r8 + 800032a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +0800032e <cmox_mac_innerVerify>: + 800032e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8000332: 4604 mov r4, r0 + 8000334: 460d mov r5, r1 + 8000336: 6821 ldr r1, [r4, #0] + 8000338: 4616 mov r6, r2 + 800033a: 684a ldr r2, [r1, #4] + 800033c: 461f mov r7, r3 + 800033e: 4790 blx r2 + 8000340: 4680 mov r8, r0 + 8000342: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000346: d12e bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000348: 6822 ldr r2, [r4, #0] + 800034a: 990a ldr r1, [sp, #40] ; 0x28 + 800034c: 6893 ldr r3, [r2, #8] + 800034e: 4620 mov r0, r4 + 8000350: 4798 blx r3 + 8000352: 4680 mov r8, r0 + 8000354: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000358: d125 bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 800035a: 6823 ldr r3, [r4, #0] + 800035c: 9a08 ldr r2, [sp, #32] + 800035e: 9907 ldr r1, [sp, #28] + 8000360: f8d3 c00c ldr.w ip, [r3, #12] + 8000364: 4620 mov r0, r4 + 8000366: 47e0 blx ip + 8000368: 4680 mov r8, r0 + 800036a: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 800036e: d11a bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000370: 6823 ldr r3, [r4, #0] + 8000372: 9a06 ldr r2, [sp, #24] + 8000374: 4639 mov r1, r7 + 8000376: 691f ldr r7, [r3, #16] + 8000378: 4620 mov r0, r4 + 800037a: 47b8 blx r7 + 800037c: 4680 mov r8, r0 + 800037e: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000382: d110 bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000384: 6823 ldr r3, [r4, #0] + 8000386: 4629 mov r1, r5 + 8000388: 695d ldr r5, [r3, #20] + 800038a: 4632 mov r2, r6 + 800038c: 4620 mov r0, r4 + 800038e: 47a8 blx r5 + 8000390: 4680 mov r8, r0 + 8000392: f5b8 3f40 cmp.w r8, #196608 ; 0x30000 + 8000396: d106 bne.n 80003a6 <cmox_mac_innerVerify+0x78> + 8000398: 6823 ldr r3, [r4, #0] + 800039a: 9909 ldr r1, [sp, #36] ; 0x24 + 800039c: 69dd ldr r5, [r3, #28] + 800039e: 2200 movs r2, #0 + 80003a0: 4620 mov r0, r4 + 80003a2: 47a8 blx r5 + 80003a4: 4680 mov r8, r0 + 80003a6: 6821 ldr r1, [r4, #0] + 80003a8: 680a ldr r2, [r1, #0] + 80003aa: 4620 mov r0, r4 + 80003ac: 4790 blx r2 + 80003ae: 4640 mov r0, r8 + 80003b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +080003b4 <cmox_mac_setCustomData_empty>: + 80003b4: f44f 3040 mov.w r0, #196608 ; 0x30000 + 80003b8: 4770 bx lr + ... + +080003bc <cmox_mac_compute>: + 80003bc: b5f0 push {r4, r5, r6, r7, lr} + 80003be: 460c mov r4, r1 + 80003c0: b085 sub sp, #20 + 80003c2: 4611 mov r1, r2 + 80003c4: 2800 cmp r0, #0 + 80003c6: 461a mov r2, r3 + 80003c8: bf1c itt ne + 80003ca: 6805 ldrne r5, [r0, #0] + 80003cc: 2d00 cmpne r5, #0 + 80003ce: 4b0b ldr r3, [pc, #44] ; (80003fc <cmox_mac_compute+0x40>) + 80003d0: d011 beq.n 80003f6 <cmox_mac_compute+0x3a> + 80003d2: b182 cbz r2, 80003f6 <cmox_mac_compute+0x3a> + 80003d4: b904 cbnz r4, 80003d8 <cmox_mac_compute+0x1c> + 80003d6: b971 cbnz r1, 80003f6 <cmox_mac_compute+0x3a> + 80003d8: 980d ldr r0, [sp, #52] ; 0x34 + 80003da: b160 cbz r0, 80003f6 <cmox_mac_compute+0x3a> + 80003dc: 9e0f ldr r6, [sp, #60] ; 0x3c + 80003de: 9f0e ldr r7, [sp, #56] ; 0x38 + 80003e0: 9b0a ldr r3, [sp, #40] ; 0x28 + 80003e2: 9002 str r0, [sp, #8] + 80003e4: 9604 str r6, [sp, #16] + 80003e6: 9703 str r7, [sp, #12] + 80003e8: 980b ldr r0, [sp, #44] ; 0x2c + 80003ea: 9e0c ldr r6, [sp, #48] ; 0x30 + 80003ec: 9000 str r0, [sp, #0] + 80003ee: 9601 str r6, [sp, #4] + 80003f0: 4620 mov r0, r4 + 80003f2: 47a8 blx r5 + 80003f4: 4603 mov r3, r0 + 80003f6: 4618 mov r0, r3 + 80003f8: b005 add sp, #20 + 80003fa: bdf0 pop {r4, r5, r6, r7, pc} + 80003fc: 00030002 .word 0x00030002 + +08000400 <cmox_sha1_transform>: + 8000400: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8000404: 4606 mov r6, r0 + 8000406: b0d0 sub sp, #320 ; 0x140 + 8000408: 6808 ldr r0, [r1, #0] + 800040a: 6df5 ldr r5, [r6, #92] ; 0x5c + 800040c: f8d6 e060 ldr.w lr, [r6, #96] ; 0x60 + 8000410: 6e72 ldr r2, [r6, #100] ; 0x64 + 8000412: 6eb7 ldr r7, [r6, #104] ; 0x68 + 8000414: 6ef3 ldr r3, [r6, #108] ; 0x6c + 8000416: ba00 rev r0, r0 + 8000418: 9000 str r0, [sp, #0] + 800041a: 466c mov r4, sp + 800041c: 6848 ldr r0, [r1, #4] + 800041e: ba00 rev r0, r0 + 8000420: 6060 str r0, [r4, #4] + 8000422: f10d 0840 add.w r8, sp, #64 ; 0x40 + 8000426: 6888 ldr r0, [r1, #8] + 8000428: ba00 rev r0, r0 + 800042a: 60a0 str r0, [r4, #8] + 800042c: 68c8 ldr r0, [r1, #12] + 800042e: ba00 rev r0, r0 + 8000430: 60e0 str r0, [r4, #12] + 8000432: 6908 ldr r0, [r1, #16] + 8000434: ba00 rev r0, r0 + 8000436: 6120 str r0, [r4, #16] + 8000438: 6948 ldr r0, [r1, #20] + 800043a: ba00 rev r0, r0 + 800043c: 6160 str r0, [r4, #20] + 800043e: 6988 ldr r0, [r1, #24] + 8000440: ba00 rev r0, r0 + 8000442: 61a0 str r0, [r4, #24] + 8000444: 69c8 ldr r0, [r1, #28] + 8000446: ba00 rev r0, r0 + 8000448: 61e0 str r0, [r4, #28] + 800044a: 6a08 ldr r0, [r1, #32] + 800044c: ba00 rev r0, r0 + 800044e: 6220 str r0, [r4, #32] + 8000450: 6a48 ldr r0, [r1, #36] ; 0x24 + 8000452: ba00 rev r0, r0 + 8000454: 6260 str r0, [r4, #36] ; 0x24 + 8000456: 6a88 ldr r0, [r1, #40] ; 0x28 + 8000458: ba00 rev r0, r0 + 800045a: 62a0 str r0, [r4, #40] ; 0x28 + 800045c: 6ac8 ldr r0, [r1, #44] ; 0x2c + 800045e: ba00 rev r0, r0 + 8000460: 62e0 str r0, [r4, #44] ; 0x2c + 8000462: 6b08 ldr r0, [r1, #48] ; 0x30 + 8000464: ba00 rev r0, r0 + 8000466: 6320 str r0, [r4, #48] ; 0x30 + 8000468: 6b48 ldr r0, [r1, #52] ; 0x34 + 800046a: ba00 rev r0, r0 + 800046c: 6360 str r0, [r4, #52] ; 0x34 + 800046e: 6b88 ldr r0, [r1, #56] ; 0x38 + 8000470: ba00 rev r0, r0 + 8000472: 63a0 str r0, [r4, #56] ; 0x38 + 8000474: 6bc8 ldr r0, [r1, #60] ; 0x3c + 8000476: ba00 rev r0, r0 + 8000478: 63e0 str r0, [r4, #60] ; 0x3c + 800047a: 2040 movs r0, #64 ; 0x40 + 800047c: f858 1c0c ldr.w r1, [r8, #-12] + 8000480: f858 cc20 ldr.w ip, [r8, #-32] + 8000484: f858 ac38 ldr.w sl, [r8, #-56] + 8000488: ea8c 0101 eor.w r1, ip, r1 + 800048c: f858 cc40 ldr.w ip, [r8, #-64] + 8000490: ea8a 0101 eor.w r1, sl, r1 + 8000494: ea8c 0901 eor.w r9, ip, r1 + 8000498: ea4f 79f9 mov.w r9, r9, ror #31 + 800049c: 1e40 subs r0, r0, #1 + 800049e: f848 9b04 str.w r9, [r8], #4 + 80004a2: d1eb bne.n 800047c <cmox_sha1_transform+0x7c> + 80004a4: ea87 0002 eor.w r0, r7, r2 + 80004a8: ea00 000e and.w r0, r0, lr + 80004ac: 4078 eors r0, r7 + 80004ae: eb10 61f5 adds.w r1, r0, r5, ror #27 + 80004b2: 9800 ldr r0, [sp, #0] + 80004b4: f8df c424 ldr.w ip, [pc, #1060] ; 80008dc <cmox_sha1_transform+0x4dc> + 80004b8: 1841 adds r1, r0, r1 + 80004ba: 4461 add r1, ip + 80004bc: 18c8 adds r0, r1, r3 + 80004be: ea82 03be eor.w r3, r2, lr, ror #2 + 80004c2: 402b ands r3, r5 + 80004c4: ea4f 61f0 mov.w r1, r0, ror #27 + 80004c8: 4053 eors r3, r2 + 80004ca: 1859 adds r1, r3, r1 + 80004cc: 6863 ldr r3, [r4, #4] + 80004ce: 1859 adds r1, r3, r1 + 80004d0: 4461 add r1, ip + 80004d2: 19cf adds r7, r1, r7 + 80004d4: ea4f 03b5 mov.w r3, r5, ror #2 + 80004d8: ea83 01be eor.w r1, r3, lr, ror #2 + 80004dc: 4001 ands r1, r0 + 80004de: ea81 01be eor.w r1, r1, lr, ror #2 + 80004e2: eb11 65f7 adds.w r5, r1, r7, ror #27 + 80004e6: 68a1 ldr r1, [r4, #8] + 80004e8: 194d adds r5, r1, r5 + 80004ea: 4465 add r5, ip + 80004ec: 18a9 adds r1, r5, r2 + 80004ee: ea83 02b0 eor.w r2, r3, r0, ror #2 + 80004f2: 403a ands r2, r7 + 80004f4: ea4f 65f1 mov.w r5, r1, ror #27 + 80004f8: 405a eors r2, r3 + 80004fa: 1955 adds r5, r2, r5 + 80004fc: 68e2 ldr r2, [r4, #12] + 80004fe: 1955 adds r5, r2, r5 + 8000500: ea4f 02b7 mov.w r2, r7, ror #2 + 8000504: ea82 07b0 eor.w r7, r2, r0, ror #2 + 8000508: 4465 add r5, ip + 800050a: 400f ands r7, r1 + 800050c: eb05 0ebe add.w lr, r5, lr, ror #2 + 8000510: ea97 07b0 eors.w r7, r7, r0, ror #2 + 8000514: eb17 65fe adds.w r5, r7, lr, ror #27 + 8000518: 6927 ldr r7, [r4, #16] + 800051a: 197d adds r5, r7, r5 + 800051c: ea4f 07b1 mov.w r7, r1, ror #2 + 8000520: ea82 0107 eor.w r1, r2, r7 + 8000524: 4465 add r5, ip + 8000526: ea01 010e and.w r1, r1, lr + 800052a: 18eb adds r3, r5, r3 + 800052c: 4051 eors r1, r2 + 800052e: eb11 65f3 adds.w r5, r1, r3, ror #27 + 8000532: 6961 ldr r1, [r4, #20] + 8000534: 194d adds r5, r1, r5 + 8000536: ea4f 01be mov.w r1, lr, ror #2 + 800053a: ea87 0e01 eor.w lr, r7, r1 + 800053e: 4465 add r5, ip + 8000540: ea0e 0e03 and.w lr, lr, r3 + 8000544: eb15 00b0 adds.w r0, r5, r0, ror #2 + 8000548: ea8e 0e07 eor.w lr, lr, r7 + 800054c: eb0e 65f0 add.w r5, lr, r0, ror #27 + 8000550: f8d4 e018 ldr.w lr, [r4, #24] + 8000554: 4475 add r5, lr + 8000556: 4465 add r5, ip + 8000558: 18aa adds r2, r5, r2 + 800055a: ea81 05b3 eor.w r5, r1, r3, ror #2 + 800055e: 4005 ands r5, r0 + 8000560: ea4f 6ef2 mov.w lr, r2, ror #27 + 8000564: 404d eors r5, r1 + 8000566: 44ae add lr, r5 + 8000568: 69e5 ldr r5, [r4, #28] + 800056a: 44ae add lr, r5 + 800056c: 44e6 add lr, ip + 800056e: 4477 add r7, lr + 8000570: ea4f 00b0 mov.w r0, r0, ror #2 + 8000574: ea80 0eb3 eor.w lr, r0, r3, ror #2 + 8000578: ea0e 0e02 and.w lr, lr, r2 + 800057c: ea8e 0eb3 eor.w lr, lr, r3, ror #2 + 8000580: eb0e 65f7 add.w r5, lr, r7, ror #27 + 8000584: f8d4 e020 ldr.w lr, [r4, #32] + 8000588: 4475 add r5, lr + 800058a: 4465 add r5, ip + 800058c: 1869 adds r1, r5, r1 + 800058e: ea80 05b2 eor.w r5, r0, r2, ror #2 + 8000592: 403d ands r5, r7 + 8000594: ea4f 6ef1 mov.w lr, r1, ror #27 + 8000598: 4045 eors r5, r0 + 800059a: 44ae add lr, r5 + 800059c: 6a65 ldr r5, [r4, #36] ; 0x24 + 800059e: 44ae add lr, r5 + 80005a0: 44e6 add lr, ip + 80005a2: eb0e 03b3 add.w r3, lr, r3, ror #2 + 80005a6: ea4f 07b7 mov.w r7, r7, ror #2 + 80005aa: ea87 0eb2 eor.w lr, r7, r2, ror #2 + 80005ae: ea0e 0e01 and.w lr, lr, r1 + 80005b2: ea8e 0eb2 eor.w lr, lr, r2, ror #2 + 80005b6: eb0e 65f3 add.w r5, lr, r3, ror #27 + 80005ba: f8d4 e028 ldr.w lr, [r4, #40] ; 0x28 + 80005be: 4475 add r5, lr + 80005c0: 4465 add r5, ip + 80005c2: 1828 adds r0, r5, r0 + 80005c4: ea87 05b1 eor.w r5, r7, r1, ror #2 + 80005c8: 401d ands r5, r3 + 80005ca: ea4f 6ef0 mov.w lr, r0, ror #27 + 80005ce: 407d eors r5, r7 + 80005d0: 44ae add lr, r5 + 80005d2: 6ae5 ldr r5, [r4, #44] ; 0x2c + 80005d4: 44ae add lr, r5 + 80005d6: 44e6 add lr, ip + 80005d8: eb0e 02b2 add.w r2, lr, r2, ror #2 + 80005dc: ea4f 03b3 mov.w r3, r3, ror #2 + 80005e0: ea83 0eb1 eor.w lr, r3, r1, ror #2 + 80005e4: ea0e 0e00 and.w lr, lr, r0 + 80005e8: ea8e 0eb1 eor.w lr, lr, r1, ror #2 + 80005ec: eb0e 65f2 add.w r5, lr, r2, ror #27 + 80005f0: f8d4 e030 ldr.w lr, [r4, #48] ; 0x30 + 80005f4: 4475 add r5, lr + 80005f6: 4465 add r5, ip + 80005f8: 19ef adds r7, r5, r7 + 80005fa: ea83 05b0 eor.w r5, r3, r0, ror #2 + 80005fe: 4015 ands r5, r2 + 8000600: ea4f 6ef7 mov.w lr, r7, ror #27 + 8000604: 405d eors r5, r3 + 8000606: 44ae add lr, r5 + 8000608: 6b65 ldr r5, [r4, #52] ; 0x34 + 800060a: 44ae add lr, r5 + 800060c: 44e6 add lr, ip + 800060e: eb0e 01b1 add.w r1, lr, r1, ror #2 + 8000612: ea4f 02b2 mov.w r2, r2, ror #2 + 8000616: ea82 0eb0 eor.w lr, r2, r0, ror #2 + 800061a: ea0e 0e07 and.w lr, lr, r7 + 800061e: ea8e 0eb0 eor.w lr, lr, r0, ror #2 + 8000622: eb0e 65f1 add.w r5, lr, r1, ror #27 + 8000626: f8d4 e038 ldr.w lr, [r4, #56] ; 0x38 + 800062a: 4475 add r5, lr + 800062c: 4465 add r5, ip + 800062e: 18eb adds r3, r5, r3 + 8000630: ea82 05b7 eor.w r5, r2, r7, ror #2 + 8000634: 400d ands r5, r1 + 8000636: ea4f 6ef3 mov.w lr, r3, ror #27 + 800063a: 4055 eors r5, r2 + 800063c: 44ae add lr, r5 + 800063e: 6be5 ldr r5, [r4, #60] ; 0x3c + 8000640: 44ae add lr, r5 + 8000642: 44e6 add lr, ip + 8000644: eb0e 00b0 add.w r0, lr, r0, ror #2 + 8000648: ea4f 01b1 mov.w r1, r1, ror #2 + 800064c: ea81 0eb7 eor.w lr, r1, r7, ror #2 + 8000650: ea0e 0e03 and.w lr, lr, r3 + 8000654: ea8e 0eb7 eor.w lr, lr, r7, ror #2 + 8000658: eb0e 65f0 add.w r5, lr, r0, ror #27 + 800065c: f8d4 e040 ldr.w lr, [r4, #64] ; 0x40 + 8000660: 4475 add r5, lr + 8000662: 4465 add r5, ip + 8000664: ea81 0eb3 eor.w lr, r1, r3, ror #2 + 8000668: 18aa adds r2, r5, r2 + 800066a: ea0e 0e00 and.w lr, lr, r0 + 800066e: ea4f 65f2 mov.w r5, r2, ror #27 + 8000672: ea8e 0e01 eor.w lr, lr, r1 + 8000676: 4475 add r5, lr + 8000678: f8dd e044 ldr.w lr, [sp, #68] ; 0x44 + 800067c: ea4f 00b0 mov.w r0, r0, ror #2 + 8000680: 4475 add r5, lr + 8000682: ea80 0eb3 eor.w lr, r0, r3, ror #2 + 8000686: 4465 add r5, ip + 8000688: ea0e 0e02 and.w lr, lr, r2 + 800068c: eb15 07b7 adds.w r7, r5, r7, ror #2 + 8000690: ea8e 0eb3 eor.w lr, lr, r3, ror #2 + 8000694: eb0e 65f7 add.w r5, lr, r7, ror #27 + 8000698: f8dd e048 ldr.w lr, [sp, #72] ; 0x48 + 800069c: ea4f 02b2 mov.w r2, r2, ror #2 + 80006a0: 4475 add r5, lr + 80006a2: ea80 0e02 eor.w lr, r0, r2 + 80006a6: 4465 add r5, ip + 80006a8: ea0e 0e07 and.w lr, lr, r7 + 80006ac: 1869 adds r1, r5, r1 + 80006ae: ea8e 0e00 eor.w lr, lr, r0 + 80006b2: eb0e 65f1 add.w r5, lr, r1, ror #27 + 80006b6: f8dd e04c ldr.w lr, [sp, #76] ; 0x4c + 80006ba: 4475 add r5, lr + 80006bc: 4465 add r5, ip + 80006be: eb05 03b3 add.w r3, r5, r3, ror #2 + 80006c2: ea4f 0eb7 mov.w lr, r7, ror #2 + 80006c6: 2714 movs r7, #20 + 80006c8: f10d 0c50 add.w ip, sp, #80 ; 0x50 + 80006cc: f8df 5210 ldr.w r5, [pc, #528] ; 80008e0 <cmox_sha1_transform+0x4e0> + 80006d0: ea8e 0b01 eor.w fp, lr, r1 + 80006d4: ea82 0b0b eor.w fp, r2, fp + 80006d8: eb0b 6af3 add.w sl, fp, r3, ror #27 + 80006dc: f85c bb04 ldr.w fp, [ip], #4 + 80006e0: 44da add sl, fp + 80006e2: 44aa add sl, r5 + 80006e4: 4450 add r0, sl + 80006e6: ea83 0bb1 eor.w fp, r3, r1, ror #2 + 80006ea: ea4f 6af0 mov.w sl, r0, ror #27 + 80006ee: ea8e 0b0b eor.w fp, lr, fp + 80006f2: 44da add sl, fp + 80006f4: f85c bb04 ldr.w fp, [ip], #4 + 80006f8: 44da add sl, fp + 80006fa: 44aa add sl, r5 + 80006fc: 4452 add r2, sl + 80006fe: ea80 0bb3 eor.w fp, r0, r3, ror #2 + 8000702: ea4f 6af2 mov.w sl, r2, ror #27 + 8000706: ea8b 0bb1 eor.w fp, fp, r1, ror #2 + 800070a: 44da add sl, fp + 800070c: f85c bb04 ldr.w fp, [ip], #4 + 8000710: 44da add sl, fp + 8000712: ea4f 00b0 mov.w r0, r0, ror #2 + 8000716: 44aa add sl, r5 + 8000718: ea80 0b02 eor.w fp, r0, r2 + 800071c: 44d6 add lr, sl + 800071e: ea8b 0bb3 eor.w fp, fp, r3, ror #2 + 8000722: eb0b 6afe add.w sl, fp, lr, ror #27 + 8000726: f85c bb04 ldr.w fp, [ip], #4 + 800072a: 44da add sl, fp + 800072c: ea4f 02b2 mov.w r2, r2, ror #2 + 8000730: 44aa add sl, r5 + 8000732: ea82 0b0e eor.w fp, r2, lr + 8000736: eb0a 01b1 add.w r1, sl, r1, ror #2 + 800073a: ea80 0b0b eor.w fp, r0, fp + 800073e: eb0b 6af1 add.w sl, fp, r1, ror #27 + 8000742: f85c bb04 ldr.w fp, [ip], #4 + 8000746: 44da add sl, fp + 8000748: 1d7f adds r7, r7, #5 + 800074a: 44aa add sl, r5 + 800074c: 2f28 cmp r7, #40 ; 0x28 + 800074e: eb0a 03b3 add.w r3, sl, r3, ror #2 + 8000752: ea4f 0ebe mov.w lr, lr, ror #2 + 8000756: d3bb bcc.n 80006d0 <cmox_sha1_transform+0x2d0> + 8000758: 2f3c cmp r7, #60 ; 0x3c + 800075a: d361 bcc.n 8000820 <cmox_sha1_transform+0x420> + 800075c: 2f50 cmp r7, #80 ; 0x50 + 800075e: d24d bcs.n 80007fc <cmox_sha1_transform+0x3fc> + 8000760: eb04 0c87 add.w ip, r4, r7, lsl #2 + 8000764: f1c7 0754 rsb r7, r7, #84 ; 0x54 + 8000768: 4c5e ldr r4, [pc, #376] ; (80008e4 <cmox_sha1_transform+0x4e4>) + 800076a: fba7 a504 umull sl, r5, r7, r4 + 800076e: 4604 mov r4, r0 + 8000770: 4f5d ldr r7, [pc, #372] ; (80008e8 <cmox_sha1_transform+0x4e8>) + 8000772: 08a8 lsrs r0, r5, #2 + 8000774: ea8e 0a01 eor.w sl, lr, r1 + 8000778: ea82 0a0a eor.w sl, r2, sl + 800077c: f85c bb04 ldr.w fp, [ip], #4 + 8000780: eb0a 65f3 add.w r5, sl, r3, ror #27 + 8000784: 445d add r5, fp + 8000786: 197d adds r5, r7, r5 + 8000788: 192c adds r4, r5, r4 + 800078a: ea83 0ab1 eor.w sl, r3, r1, ror #2 + 800078e: ea4f 65f4 mov.w r5, r4, ror #27 + 8000792: ea8e 0a0a eor.w sl, lr, sl + 8000796: 4455 add r5, sl + 8000798: f85c ab04 ldr.w sl, [ip], #4 + 800079c: f85c bb04 ldr.w fp, [ip], #4 + 80007a0: 4455 add r5, sl + 80007a2: 197d adds r5, r7, r5 + 80007a4: 18aa adds r2, r5, r2 + 80007a6: ea84 0ab3 eor.w sl, r4, r3, ror #2 + 80007aa: ea4f 65f2 mov.w r5, r2, ror #27 + 80007ae: ea8a 0ab1 eor.w sl, sl, r1, ror #2 + 80007b2: 4455 add r5, sl + 80007b4: 445d add r5, fp + 80007b6: ea4f 04b4 mov.w r4, r4, ror #2 + 80007ba: 197d adds r5, r7, r5 + 80007bc: ea84 0a02 eor.w sl, r4, r2 + 80007c0: 44ae add lr, r5 + 80007c2: ea8a 0ab3 eor.w sl, sl, r3, ror #2 + 80007c6: eb0a 65fe add.w r5, sl, lr, ror #27 + 80007ca: f85c ab04 ldr.w sl, [ip], #4 + 80007ce: 4455 add r5, sl + 80007d0: ea4f 02b2 mov.w r2, r2, ror #2 + 80007d4: 197d adds r5, r7, r5 + 80007d6: ea82 0a0e eor.w sl, r2, lr + 80007da: eb15 01b1 adds.w r1, r5, r1, ror #2 + 80007de: ea84 0a0a eor.w sl, r4, sl + 80007e2: f85c bb04 ldr.w fp, [ip], #4 + 80007e6: eb0a 65f1 add.w r5, sl, r1, ror #27 + 80007ea: 445d add r5, fp + 80007ec: 197d adds r5, r7, r5 + 80007ee: eb15 03b3 adds.w r3, r5, r3, ror #2 + 80007f2: 1e40 subs r0, r0, #1 + 80007f4: ea4f 0ebe mov.w lr, lr, ror #2 + 80007f8: d1bc bne.n 8000774 <cmox_sha1_transform+0x374> + 80007fa: 4620 mov r0, r4 + 80007fc: 6df4 ldr r4, [r6, #92] ; 0x5c + 80007fe: 191b adds r3, r3, r4 + 8000800: 65f3 str r3, [r6, #92] ; 0x5c + 8000802: 6e33 ldr r3, [r6, #96] ; 0x60 + 8000804: 18c9 adds r1, r1, r3 + 8000806: 6631 str r1, [r6, #96] ; 0x60 + 8000808: 6e71 ldr r1, [r6, #100] ; 0x64 + 800080a: 4471 add r1, lr + 800080c: 6671 str r1, [r6, #100] ; 0x64 + 800080e: 6eb3 ldr r3, [r6, #104] ; 0x68 + 8000810: 18d2 adds r2, r2, r3 + 8000812: 66b2 str r2, [r6, #104] ; 0x68 + 8000814: 6ef1 ldr r1, [r6, #108] ; 0x6c + 8000816: 1840 adds r0, r0, r1 + 8000818: 66f0 str r0, [r6, #108] ; 0x6c + 800081a: b050 add sp, #320 ; 0x140 + 800081c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8000820: ea4e 0b01 orr.w fp, lr, r1 + 8000824: ea0e 0a01 and.w sl, lr, r1 + 8000828: ea0b 0b02 and.w fp, fp, r2 + 800082c: ea4b 0a0a orr.w sl, fp, sl + 8000830: eb0a 65f3 add.w r5, sl, r3, ror #27 + 8000834: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 8000838: f8df c0b0 ldr.w ip, [pc, #176] ; 80008ec <cmox_sha1_transform+0x4ec> + 800083c: 4455 add r5, sl + 800083e: ea43 0bb1 orr.w fp, r3, r1, ror #2 + 8000842: 4465 add r5, ip + 8000844: ea03 0ab1 and.w sl, r3, r1, ror #2 + 8000848: ea0b 0b0e and.w fp, fp, lr + 800084c: 1828 adds r0, r5, r0 + 800084e: ea4b 0a0a orr.w sl, fp, sl + 8000852: 1c7f adds r7, r7, #1 + 8000854: eb0a 65f0 add.w r5, sl, r0, ror #27 + 8000858: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 800085c: 4455 add r5, sl + 800085e: ea40 0bb3 orr.w fp, r0, r3, ror #2 + 8000862: 4465 add r5, ip + 8000864: ea00 0ab3 and.w sl, r0, r3, ror #2 + 8000868: ea0b 0bb1 and.w fp, fp, r1, ror #2 + 800086c: 18aa adds r2, r5, r2 + 800086e: ea4b 0a0a orr.w sl, fp, sl + 8000872: 1c7f adds r7, r7, #1 + 8000874: eb0a 65f2 add.w r5, sl, r2, ror #27 + 8000878: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 800087c: 4455 add r5, sl + 800087e: ea4f 00b0 mov.w r0, r0, ror #2 + 8000882: ea40 0b02 orr.w fp, r0, r2 + 8000886: 4465 add r5, ip + 8000888: ea00 0a02 and.w sl, r0, r2 + 800088c: ea0b 0bb3 and.w fp, fp, r3, ror #2 + 8000890: 44ae add lr, r5 + 8000892: ea4b 0a0a orr.w sl, fp, sl + 8000896: 1c7f adds r7, r7, #1 + 8000898: eb0a 65fe add.w r5, sl, lr, ror #27 + 800089c: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 80008a0: 4455 add r5, sl + 80008a2: ea4f 02b2 mov.w r2, r2, ror #2 + 80008a6: ea42 0b0e orr.w fp, r2, lr + 80008aa: 4465 add r5, ip + 80008ac: ea02 0a0e and.w sl, r2, lr + 80008b0: ea0b 0b00 and.w fp, fp, r0 + 80008b4: eb15 01b1 adds.w r1, r5, r1, ror #2 + 80008b8: ea4b 0a0a orr.w sl, fp, sl + 80008bc: 1c7f adds r7, r7, #1 + 80008be: eb0a 65f1 add.w r5, sl, r1, ror #27 + 80008c2: f854 a027 ldr.w sl, [r4, r7, lsl #2] + 80008c6: 4455 add r5, sl + 80008c8: 1c7f adds r7, r7, #1 + 80008ca: 4465 add r5, ip + 80008cc: 2f3c cmp r7, #60 ; 0x3c + 80008ce: eb05 03b3 add.w r3, r5, r3, ror #2 + 80008d2: ea4f 0ebe mov.w lr, lr, ror #2 + 80008d6: d3a3 bcc.n 8000820 <cmox_sha1_transform+0x420> + 80008d8: e740 b.n 800075c <cmox_sha1_transform+0x35c> + 80008da: bf00 nop + 80008dc: 5a827999 .word 0x5a827999 + 80008e0: 6ed9eba1 .word 0x6ed9eba1 + 80008e4: cccccccd .word 0xcccccccd + 80008e8: ca62c1d6 .word 0xca62c1d6 + 80008ec: 8f1bbcdc .word 0x8f1bbcdc + +080008f0 <cmox_sha1_cleanup>: + 80008f0: b500 push {lr} + 80008f2: b081 sub sp, #4 + 80008f4: 6801 ldr r1, [r0, #0] + 80008f6: 4a07 ldr r2, [pc, #28] ; (8000914 <cmox_sha1_cleanup+0x24>) + 80008f8: 4291 cmp r1, r2 + 80008fa: d100 bne.n 80008fe <cmox_sha1_cleanup+0xe> + 80008fc: b910 cbnz r0, 8000904 <cmox_sha1_cleanup+0x14> + 80008fe: 4806 ldr r0, [pc, #24] ; (8000918 <cmox_sha1_cleanup+0x28>) + 8000900: b001 add sp, #4 + 8000902: bd00 pop {pc} + 8000904: 217c movs r1, #124 ; 0x7c + 8000906: f013 fdad bl 8014464 <__aeabi_memclr> + 800090a: f44f 3000 mov.w r0, #131072 ; 0x20000 + 800090e: b001 add sp, #4 + 8000910: bd00 pop {pc} + 8000912: bf00 nop + 8000914: 080009fc .word 0x080009fc + 8000918: 00020003 .word 0x00020003 + +0800091c <cmox_sha1_init>: + 800091c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8000920: 4a0b ldr r2, [pc, #44] ; (8000950 <cmox_sha1_init+0x34>) + 8000922: e892 51f8 ldmia.w r2, {r3, r4, r5, r6, r7, r8, ip, lr} + 8000926: b088 sub sp, #32 + 8000928: 4669 mov r1, sp + 800092a: e881 51f8 stmia.w r1, {r3, r4, r5, r6, r7, r8, ip, lr} + 800092e: 6802 ldr r2, [r0, #0] + 8000930: 4b08 ldr r3, [pc, #32] ; (8000954 <cmox_sha1_init+0x38>) + 8000932: 429a cmp r2, r3 + 8000934: d100 bne.n 8000938 <cmox_sha1_init+0x1c> + 8000936: b918 cbnz r0, 8000940 <cmox_sha1_init+0x24> + 8000938: 4807 ldr r0, [pc, #28] ; (8000958 <cmox_sha1_init+0x3c>) + 800093a: b008 add sp, #32 + 800093c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8000940: 2214 movs r2, #20 + 8000942: 3008 adds r0, #8 + 8000944: f000 fb4f bl 8000fe6 <cmox_md_init> + 8000948: b008 add sp, #32 + 800094a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800094e: bf00 nop + 8000950: 080009dc .word 0x080009dc + 8000954: 080009fc .word 0x080009fc + 8000958: 00020003 .word 0x00020003 + +0800095c <cmox_sha1_setTagLen>: + 800095c: 2915 cmp r1, #21 + 800095e: d204 bcs.n 800096a <cmox_sha1_setTagLen+0xe> + 8000960: 6802 ldr r2, [r0, #0] + 8000962: 4b04 ldr r3, [pc, #16] ; (8000974 <cmox_sha1_setTagLen+0x18>) + 8000964: 429a cmp r2, r3 + 8000966: d100 bne.n 800096a <cmox_sha1_setTagLen+0xe> + 8000968: b908 cbnz r0, 800096e <cmox_sha1_setTagLen+0x12> + 800096a: 4803 ldr r0, [pc, #12] ; (8000978 <cmox_sha1_setTagLen+0x1c>) + 800096c: 4770 bx lr + 800096e: 3008 adds r0, #8 + 8000970: f000 bb48 b.w 8001004 <cmox_md_setTagSize> + 8000974: 080009fc .word 0x080009fc + 8000978: 00020003 .word 0x00020003 + +0800097c <cmox_sha1_append>: + 800097c: b410 push {r4} + 800097e: b081 sub sp, #4 + 8000980: 4613 mov r3, r2 + 8000982: 6802 ldr r2, [r0, #0] + 8000984: 4c07 ldr r4, [pc, #28] ; (80009a4 <cmox_sha1_append+0x28>) + 8000986: 42a2 cmp r2, r4 + 8000988: d100 bne.n 800098c <cmox_sha1_append+0x10> + 800098a: b918 cbnz r0, 8000994 <cmox_sha1_append+0x18> + 800098c: b001 add sp, #4 + 800098e: bc10 pop {r4} + 8000990: 4805 ldr r0, [pc, #20] ; (80009a8 <cmox_sha1_append+0x2c>) + 8000992: 4770 bx lr + 8000994: b001 add sp, #4 + 8000996: f100 0224 add.w r2, r0, #36 ; 0x24 + 800099a: bc10 pop {r4} + 800099c: 3008 adds r0, #8 + 800099e: f000 bb35 b.w 800100c <cmox_md_append> + 80009a2: bf00 nop + 80009a4: 080009fc .word 0x080009fc + 80009a8: 00020003 .word 0x00020003 + +080009ac <cmox_sha1_generateTag>: + 80009ac: b410 push {r4} + 80009ae: b081 sub sp, #4 + 80009b0: 4613 mov r3, r2 + 80009b2: 6802 ldr r2, [r0, #0] + 80009b4: 4c07 ldr r4, [pc, #28] ; (80009d4 <cmox_sha1_generateTag+0x28>) + 80009b6: 42a2 cmp r2, r4 + 80009b8: d100 bne.n 80009bc <cmox_sha1_generateTag+0x10> + 80009ba: b918 cbnz r0, 80009c4 <cmox_sha1_generateTag+0x18> + 80009bc: b001 add sp, #4 + 80009be: bc10 pop {r4} + 80009c0: 4805 ldr r0, [pc, #20] ; (80009d8 <cmox_sha1_generateTag+0x2c>) + 80009c2: 4770 bx lr + 80009c4: 460a mov r2, r1 + 80009c6: b001 add sp, #4 + 80009c8: f100 0124 add.w r1, r0, #36 ; 0x24 + 80009cc: bc10 pop {r4} + 80009ce: 3008 adds r0, #8 + 80009d0: f000 bb70 b.w 80010b4 <cmox_md_generateTag> + 80009d4: 080009fc .word 0x080009fc + 80009d8: 00020003 .word 0x00020003 + 80009dc: 67452301 .word 0x67452301 + 80009e0: efcdab89 .word 0xefcdab89 + 80009e4: 98badcfe .word 0x98badcfe + 80009e8: 10325476 .word 0x10325476 + 80009ec: c3d2e1f0 .word 0xc3d2e1f0 + ... + +080009fc <CMOX_SHA1_VTABLE>: + 80009fc: 080008f1 0800091d 0800095d 0800097d ........]...}... + 8000a0c: 080009ad .... + +08000a10 <CMOX_SHA1_MD_VTABLE_ST>: + 8000a10: 08000401 08000f79 08000fc5 08000f81 ....y........... + +08000a20 <cmox_sha1_compute>: + 8000a20: b5f0 push {r4, r5, r6, r7, lr} + 8000a22: b0a3 sub sp, #140 ; 0x8c + 8000a24: 4604 mov r4, r0 + 8000a26: 480b ldr r0, [pc, #44] ; (8000a54 <cmox_sha1_compute+0x34>) + 8000a28: 9002 str r0, [sp, #8] + 8000a2a: 460d mov r5, r1 + 8000a2c: 4616 mov r6, r2 + 8000a2e: 461f mov r7, r3 + 8000a30: 4b09 ldr r3, [pc, #36] ; (8000a58 <cmox_sha1_compute+0x38>) + 8000a32: 2208 movs r2, #8 + 8000a34: 2140 movs r1, #64 ; 0x40 + 8000a36: a804 add r0, sp, #16 + 8000a38: f000 fad1 bl 8000fde <cmox_md_construct> + 8000a3c: 9828 ldr r0, [sp, #160] ; 0xa0 + 8000a3e: 9001 str r0, [sp, #4] + 8000a40: 9700 str r7, [sp, #0] + 8000a42: 4633 mov r3, r6 + 8000a44: 462a mov r2, r5 + 8000a46: 4621 mov r1, r4 + 8000a48: a802 add r0, sp, #8 + 8000a4a: f000 f81b bl 8000a84 <cmox_hash_common_compute> + 8000a4e: b023 add sp, #140 ; 0x8c + 8000a50: bdf0 pop {r4, r5, r6, r7, pc} + 8000a52: bf00 nop + 8000a54: 080009fc .word 0x080009fc + 8000a58: 08000a10 .word 0x08000a10 + +08000a5c <cmox_sha1_construct>: + 8000a5c: b510 push {r4, lr} + 8000a5e: 0004 movs r4, r0 + 8000a60: bf08 it eq + 8000a62: 2400 moveq r4, #0 + 8000a64: d008 beq.n 8000a78 <cmox_sha1_construct+0x1c> + 8000a66: 4805 ldr r0, [pc, #20] ; (8000a7c <cmox_sha1_construct+0x20>) + 8000a68: 4b05 ldr r3, [pc, #20] ; (8000a80 <cmox_sha1_construct+0x24>) + 8000a6a: 6020 str r0, [r4, #0] + 8000a6c: 2208 movs r2, #8 + 8000a6e: 2140 movs r1, #64 ; 0x40 + 8000a70: f104 0008 add.w r0, r4, #8 + 8000a74: f000 fab3 bl 8000fde <cmox_md_construct> + 8000a78: 4620 mov r0, r4 + 8000a7a: bd10 pop {r4, pc} + 8000a7c: 080009fc .word 0x080009fc + 8000a80: 08000a10 .word 0x08000a10 + +08000a84 <cmox_hash_common_compute>: + 8000a84: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8000a88: 4604 mov r4, r0 + 8000a8a: 460e mov r6, r1 + 8000a8c: 6821 ldr r1, [r4, #0] + 8000a8e: 4617 mov r7, r2 + 8000a90: 684a ldr r2, [r1, #4] + 8000a92: 461d mov r5, r3 + 8000a94: 4790 blx r2 + 8000a96: 4680 mov r8, r0 + 8000a98: f5b8 3f00 cmp.w r8, #131072 ; 0x20000 + 8000a9c: d119 bne.n 8000ad2 <cmox_hash_common_compute+0x4e> + 8000a9e: 6822 ldr r2, [r4, #0] + 8000aa0: 9906 ldr r1, [sp, #24] + 8000aa2: 6893 ldr r3, [r2, #8] + 8000aa4: 4620 mov r0, r4 + 8000aa6: 4798 blx r3 + 8000aa8: 4680 mov r8, r0 + 8000aaa: f5b8 3f00 cmp.w r8, #131072 ; 0x20000 + 8000aae: d110 bne.n 8000ad2 <cmox_hash_common_compute+0x4e> + 8000ab0: 6823 ldr r3, [r4, #0] + 8000ab2: 4631 mov r1, r6 + 8000ab4: 68de ldr r6, [r3, #12] + 8000ab6: 463a mov r2, r7 + 8000ab8: 4620 mov r0, r4 + 8000aba: 47b0 blx r6 + 8000abc: 4680 mov r8, r0 + 8000abe: f5b8 3f00 cmp.w r8, #131072 ; 0x20000 + 8000ac2: d106 bne.n 8000ad2 <cmox_hash_common_compute+0x4e> + 8000ac4: 6823 ldr r3, [r4, #0] + 8000ac6: 9a07 ldr r2, [sp, #28] + 8000ac8: 4629 mov r1, r5 + 8000aca: 691d ldr r5, [r3, #16] + 8000acc: 4620 mov r0, r4 + 8000ace: 47a8 blx r5 + 8000ad0: 4680 mov r8, r0 + 8000ad2: 6821 ldr r1, [r4, #0] + 8000ad4: 680a ldr r2, [r1, #0] + 8000ad6: 4620 mov r0, r4 + 8000ad8: 4790 blx r2 + 8000ada: 4640 mov r0, r8 + 8000adc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +08000ae0 <cmox_hmac_cleanup>: + 8000ae0: b510 push {r4, lr} + 8000ae2: f000 fa33 bl 8000f4c <cmox_hmac_getByMAC> + 8000ae6: f44f 3440 mov.w r4, #196608 ; 0x30000 + 8000aea: 2800 cmp r0, #0 + 8000aec: bf0e itee eq + 8000aee: 4c03 ldreq r4, [pc, #12] ; (8000afc <cmox_hmac_cleanup+0x1c>) + 8000af0: f44f 71c0 movne.w r1, #384 ; 0x180 + 8000af4: f013 fcb6 blne 8014464 <__aeabi_memclr> + 8000af8: 4620 mov r0, r4 + 8000afa: bd10 pop {r4, pc} + 8000afc: 00030002 .word 0x00030002 + +08000b00 <cmox_hmac_init>: + 8000b00: b510 push {r4, lr} + 8000b02: 4604 mov r4, r0 + 8000b04: f000 fa22 bl 8000f4c <cmox_hmac_getByMAC> + 8000b08: b908 cbnz r0, 8000b0e <cmox_hmac_init+0xe> + 8000b0a: 4805 ldr r0, [pc, #20] ; (8000b20 <cmox_hmac_init+0x20>) + 8000b0c: bd10 pop {r4, pc} + 8000b0e: 2100 movs r1, #0 + 8000b10: 60a1 str r1, [r4, #8] + 8000b12: f8d0 217c ldr.w r2, [r0, #380] ; 0x17c + 8000b16: 6811 ldr r1, [r2, #0] + 8000b18: 4788 blx r1 + 8000b1a: f44f 3040 mov.w r0, #196608 ; 0x30000 + 8000b1e: bd10 pop {r4, pc} + 8000b20: 00030002 .word 0x00030002 + +08000b24 <cmox_hmac_setTagLen>: + 8000b24: b570 push {r4, r5, r6, lr} + 8000b26: 4604 mov r4, r0 + 8000b28: 460d mov r5, r1 + 8000b2a: f000 fa0f bl 8000f4c <cmox_hmac_getByMAC> + 8000b2e: 4e06 ldr r6, [pc, #24] ; (8000b48 <cmox_hmac_setTagLen+0x24>) + 8000b30: b140 cbz r0, 8000b44 <cmox_hmac_setTagLen+0x20> + 8000b32: f8d0 017c ldr.w r0, [r0, #380] ; 0x17c + 8000b36: 6841 ldr r1, [r0, #4] + 8000b38: 4788 blx r1 + 8000b3a: 42a8 cmp r0, r5 + 8000b3c: bf24 itt cs + 8000b3e: 6065 strcs r5, [r4, #4] + 8000b40: f44f 3640 movcs.w r6, #196608 ; 0x30000 + 8000b44: 4630 mov r0, r6 + 8000b46: bd70 pop {r4, r5, r6, pc} + 8000b48: 00030002 .word 0x00030002 + +08000b4c <cmox_hmac_setKey>: + 8000b4c: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 8000b50: 0015 movs r5, r2 + 8000b52: 460c mov r4, r1 + 8000b54: d000 beq.n 8000b58 <cmox_hmac_setKey+0xc> + 8000b56: b12c cbz r4, 8000b64 <cmox_hmac_setKey+0x18> + 8000b58: 4606 mov r6, r0 + 8000b5a: f000 f9f7 bl 8000f4c <cmox_hmac_getByMAC> + 8000b5e: ea5f 0800 movs.w r8, r0 + 8000b62: d101 bne.n 8000b68 <cmox_hmac_setKey+0x1c> + 8000b64: 4864 ldr r0, [pc, #400] ; (8000cf8 <cmox_hmac_setKey+0x1ac>) + 8000b66: e0c3 b.n 8000cf0 <cmox_hmac_setKey+0x1a4> + 8000b68: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000b6c: 6801 ldr r1, [r0, #0] + 8000b6e: 684a ldr r2, [r1, #4] + 8000b70: 4790 blx r2 + 8000b72: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000b76: d117 bne.n 8000ba8 <cmox_hmac_setKey+0x5c> + 8000b78: f8d8 117c ldr.w r1, [r8, #380] ; 0x17c + 8000b7c: 688a ldr r2, [r1, #8] + 8000b7e: 4640 mov r0, r8 + 8000b80: 4790 blx r2 + 8000b82: 4681 mov r9, r0 + 8000b84: f1b9 0f81 cmp.w r9, #129 ; 0x81 + 8000b88: f080 809e bcs.w 8000cc8 <cmox_hmac_setKey+0x17c> + 8000b8c: 45a9 cmp r9, r5 + 8000b8e: f108 0afc add.w sl, r8, #252 ; 0xfc + 8000b92: d217 bcs.n 8000bc4 <cmox_hmac_setKey+0x78> + 8000b94: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000b98: 6803 ldr r3, [r0, #0] + 8000b9a: f8d3 c00c ldr.w ip, [r3, #12] + 8000b9e: 462a mov r2, r5 + 8000ba0: 4621 mov r1, r4 + 8000ba2: 47e0 blx ip + 8000ba4: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ba8: f040 808e bne.w 8000cc8 <cmox_hmac_setKey+0x17c> + 8000bac: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000bb0: 6803 ldr r3, [r0, #0] + 8000bb2: f8d3 c010 ldr.w ip, [r3, #16] + 8000bb6: 466a mov r2, sp + 8000bb8: 4651 mov r1, sl + 8000bba: 47e0 blx ip + 8000bbc: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000bc0: d176 bne.n 8000cb0 <cmox_hmac_setKey+0x164> + 8000bc2: e00a b.n 8000bda <cmox_hmac_setKey+0x8e> + 8000bc4: 2000 movs r0, #0 + 8000bc6: e004 b.n 8000bd2 <cmox_hmac_setKey+0x86> + 8000bc8: 5c21 ldrb r1, [r4, r0] + 8000bca: f80a 1000 strb.w r1, [sl, r0] + 8000bce: 9800 ldr r0, [sp, #0] + 8000bd0: 1c40 adds r0, r0, #1 + 8000bd2: 9000 str r0, [sp, #0] + 8000bd4: 9800 ldr r0, [sp, #0] + 8000bd6: 42a8 cmp r0, r5 + 8000bd8: d3f6 bcc.n 8000bc8 <cmox_hmac_setKey+0x7c> + 8000bda: f04f 0c00 mov.w ip, #0 + 8000bde: 4947 ldr r1, [pc, #284] ; (8000cfc <cmox_hmac_setKey+0x1b0>) + 8000be0: 4a47 ldr r2, [pc, #284] ; (8000d00 <cmox_hmac_setKey+0x1b4>) + 8000be2: 4b48 ldr r3, [pc, #288] ; (8000d04 <cmox_hmac_setKey+0x1b8>) + 8000be4: ac01 add r4, sp, #4 + 8000be6: 9800 ldr r0, [sp, #0] + 8000be8: 4584 cmp ip, r0 + 8000bea: d258 bcs.n 8000c9e <cmox_hmac_setKey+0x152> + 8000bec: e9d3 7000 ldrd r7, r0, [r3] + 8000bf0: ad01 add r5, sp, #4 + 8000bf2: e9c5 7000 strd r7, r0, [r5] + 8000bf6: 7810 ldrb r0, [r2, #0] + 8000bf8: 2800 cmp r0, #0 + 8000bfa: bf1a itte ne + 8000bfc: 2004 movne r0, #4 + 8000bfe: 4686 movne lr, r0 + 8000c00: f04f 0e00 moveq.w lr, #0 + 8000c04: 5808 ldr r0, [r1, r0] + 8000c06: f854 500e ldr.w r5, [r4, lr] + 8000c0a: 4428 add r0, r5 + 8000c0c: 4d3e ldr r5, [pc, #248] ; (8000d08 <cmox_hmac_setKey+0x1bc>) + 8000c0e: 6005 str r5, [r0, #0] + 8000c10: 2701 movs r7, #1 + 8000c12: f8d0 e000 ldr.w lr, [r0] + 8000c16: 6087 str r7, [r0, #8] + 8000c18: 9d01 ldr r5, [sp, #4] + 8000c1a: 684f ldr r7, [r1, #4] + 8000c1c: f81a 000c ldrb.w r0, [sl, ip] + 8000c20: 407d eors r5, r7 + 8000c22: ea8e 0505 eor.w r5, lr, r5 + 8000c26: f085 0e04 eor.w lr, r5, #4 + 8000c2a: 6865 ldr r5, [r4, #4] + 8000c2c: 680f ldr r7, [r1, #0] + 8000c2e: 407d eors r5, r7 + 8000c30: f085 05fc eor.w r5, r5, #252 ; 0xfc + 8000c34: 4475 add r5, lr + 8000c36: f085 05a3 eor.w r5, r5, #163 ; 0xa3 + 8000c3a: 4068 eors r0, r5 + 8000c3c: f80a 000c strb.w r0, [sl, ip] + 8000c40: f10c 0c01 add.w ip, ip, #1 + 8000c44: e7cf b.n 8000be6 <cmox_hmac_setKey+0x9a> + 8000c46: e9d3 4500 ldrd r4, r5, [r3] + 8000c4a: a801 add r0, sp, #4 + 8000c4c: e9c0 4500 strd r4, r5, [r0] + 8000c50: 7810 ldrb r0, [r2, #0] + 8000c52: 4d2e ldr r5, [pc, #184] ; (8000d0c <cmox_hmac_setKey+0x1c0>) + 8000c54: 2800 cmp r0, #0 + 8000c56: bf14 ite ne + 8000c58: f04f 0e04 movne.w lr, #4 + 8000c5c: f04f 0e00 moveq.w lr, #0 + 8000c60: a801 add r0, sp, #4 + 8000c62: 4674 mov r4, lr + 8000c64: f851 e00e ldr.w lr, [r1, lr] + 8000c68: 5904 ldr r4, [r0, r4] + 8000c6a: 44a6 add lr, r4 + 8000c6c: 2701 movs r7, #1 + 8000c6e: f8ce 5000 str.w r5, [lr] + 8000c72: f8de 4000 ldr.w r4, [lr] + 8000c76: f8ce 7008 str.w r7, [lr, #8] + 8000c7a: 684d ldr r5, [r1, #4] + 8000c7c: 9f01 ldr r7, [sp, #4] + 8000c7e: 6840 ldr r0, [r0, #4] + 8000c80: 407d eors r5, r7 + 8000c82: 406c eors r4, r5 + 8000c84: 680d ldr r5, [r1, #0] + 8000c86: 4068 eors r0, r5 + 8000c88: f084 0404 eor.w r4, r4, #4 + 8000c8c: f080 00fc eor.w r0, r0, #252 ; 0xfc + 8000c90: 1904 adds r4, r0, r4 + 8000c92: f084 0457 eor.w r4, r4, #87 ; 0x57 + 8000c96: f80a 400c strb.w r4, [sl, ip] + 8000c9a: f10c 0c01 add.w ip, ip, #1 + 8000c9e: 45cc cmp ip, r9 + 8000ca0: d3d1 bcc.n 8000c46 <cmox_hmac_setKey+0xfa> + 8000ca2: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000ca6: 6801 ldr r1, [r0, #0] + 8000ca8: 684a ldr r2, [r1, #4] + 8000caa: 4790 blx r2 + 8000cac: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000cb0: d10a bne.n 8000cc8 <cmox_hmac_setKey+0x17c> + 8000cb2: f8d8 00f8 ldr.w r0, [r8, #248] ; 0xf8 + 8000cb6: 6803 ldr r3, [r0, #0] + 8000cb8: f8d3 800c ldr.w r8, [r3, #12] + 8000cbc: 464a mov r2, r9 + 8000cbe: 4651 mov r1, sl + 8000cc0: 47c0 blx r8 + 8000cc2: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000cc6: d001 beq.n 8000ccc <cmox_hmac_setKey+0x180> + 8000cc8: 4811 ldr r0, [pc, #68] ; (8000d10 <cmox_hmac_setKey+0x1c4>) + 8000cca: e011 b.n 8000cf0 <cmox_hmac_setKey+0x1a4> + 8000ccc: 2000 movs r0, #0 + 8000cce: e006 b.n 8000cde <cmox_hmac_setKey+0x192> + 8000cd0: f85a 1020 ldr.w r1, [sl, r0, lsl #2] + 8000cd4: f081 316a eor.w r1, r1, #1785358954 ; 0x6a6a6a6a + 8000cd8: f84a 1020 str.w r1, [sl, r0, lsl #2] + 8000cdc: 1c40 adds r0, r0, #1 + 8000cde: ebb0 0f99 cmp.w r0, r9, lsr #2 + 8000ce2: d3f5 bcc.n 8000cd0 <cmox_hmac_setKey+0x184> + 8000ce4: 68b0 ldr r0, [r6, #8] + 8000ce6: f040 0001 orr.w r0, r0, #1 + 8000cea: 60b0 str r0, [r6, #8] + 8000cec: f44f 3040 mov.w r0, #196608 ; 0x30000 + 8000cf0: b004 add sp, #16 + 8000cf2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8000cf6: bf00 nop + 8000cf8: 00030002 .word 0x00030002 + 8000cfc: 080145fc .word 0x080145fc + 8000d00: 200008e8 .word 0x200008e8 + 8000d04: 08000f24 .word 0x08000f24 + 8000d08: d74ebead .word 0xd74ebead + 8000d0c: a175be0d .word 0xa175be0d + 8000d10: 00030001 .word 0x00030001 + +08000d14 <cmox_hmac_append>: + 8000d14: b538 push {r3, r4, r5, lr} + 8000d16: 460c mov r4, r1 + 8000d18: 7a01 ldrb r1, [r0, #8] + 8000d1a: 4615 mov r5, r2 + 8000d1c: 07ca lsls r2, r1, #31 + 8000d1e: d502 bpl.n 8000d26 <cmox_hmac_append+0x12> + 8000d20: f000 f914 bl 8000f4c <cmox_hmac_getByMAC> + 8000d24: b908 cbnz r0, 8000d2a <cmox_hmac_append+0x16> + 8000d26: 4808 ldr r0, [pc, #32] ; (8000d48 <cmox_hmac_append+0x34>) + 8000d28: bd32 pop {r1, r4, r5, pc} + 8000d2a: f8d0 00f8 ldr.w r0, [r0, #248] ; 0xf8 + 8000d2e: 6803 ldr r3, [r0, #0] + 8000d30: 4621 mov r1, r4 + 8000d32: 68dc ldr r4, [r3, #12] + 8000d34: 462a mov r2, r5 + 8000d36: 47a0 blx r4 + 8000d38: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000d3c: d001 beq.n 8000d42 <cmox_hmac_append+0x2e> + 8000d3e: 4803 ldr r0, [pc, #12] ; (8000d4c <cmox_hmac_append+0x38>) + 8000d40: bd32 pop {r1, r4, r5, pc} + 8000d42: f44f 3040 mov.w r0, #196608 ; 0x30000 + 8000d46: bd32 pop {r1, r4, r5, pc} + 8000d48: 00030002 .word 0x00030002 + 8000d4c: 00030001 .word 0x00030001 + +08000d50 <cmox_hmac_generateTag>: + 8000d50: e92d 41f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + 8000d54: b091 sub sp, #68 ; 0x44 + 8000d56: 4605 mov r5, r0 + 8000d58: 460e mov r6, r1 + 8000d5a: 4617 mov r7, r2 + 8000d5c: 2140 movs r1, #64 ; 0x40 + 8000d5e: a801 add r0, sp, #4 + 8000d60: f013 fb80 bl 8014464 <__aeabi_memclr> + 8000d64: 7a29 ldrb r1, [r5, #8] + 8000d66: 07c8 lsls r0, r1, #31 + 8000d68: d504 bpl.n 8000d74 <cmox_hmac_generateTag+0x24> + 8000d6a: 4628 mov r0, r5 + 8000d6c: f000 f8ee bl 8000f4c <cmox_hmac_getByMAC> + 8000d70: 0004 movs r4, r0 + 8000d72: d102 bne.n 8000d7a <cmox_hmac_generateTag+0x2a> + 8000d74: f8df 80a4 ldr.w r8, [pc, #164] ; 8000e1c <cmox_hmac_generateTag+0xcc> + 8000d78: e04b b.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000d7a: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000d7e: f8df 80a0 ldr.w r8, [pc, #160] ; 8000e20 <cmox_hmac_generateTag+0xd0> + 8000d82: 6803 ldr r3, [r0, #0] + 8000d84: f8d3 c010 ldr.w ip, [r3, #16] + 8000d88: 466a mov r2, sp + 8000d8a: a901 add r1, sp, #4 + 8000d8c: 47e0 blx ip + 8000d8e: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000d92: d13e bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000d94: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000d98: 6801 ldr r1, [r0, #0] + 8000d9a: 684a ldr r2, [r1, #4] + 8000d9c: 4790 blx r2 + 8000d9e: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000da2: d136 bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000da4: f8d4 117c ldr.w r1, [r4, #380] ; 0x17c + 8000da8: 688a ldr r2, [r1, #8] + 8000daa: 4620 mov r0, r4 + 8000dac: 4790 blx r2 + 8000dae: f8d4 30f8 ldr.w r3, [r4, #248] ; 0xf8 + 8000db2: 4602 mov r2, r0 + 8000db4: 4618 mov r0, r3 + 8000db6: 681b ldr r3, [r3, #0] + 8000db8: f8d3 c00c ldr.w ip, [r3, #12] + 8000dbc: f104 01fc add.w r1, r4, #252 ; 0xfc + 8000dc0: 47e0 blx ip + 8000dc2: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000dc6: d124 bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000dc8: f8d4 017c ldr.w r0, [r4, #380] ; 0x17c + 8000dcc: 6841 ldr r1, [r0, #4] + 8000dce: 4788 blx r1 + 8000dd0: f8d4 30f8 ldr.w r3, [r4, #248] ; 0xf8 + 8000dd4: 4602 mov r2, r0 + 8000dd6: 4618 mov r0, r3 + 8000dd8: 681b ldr r3, [r3, #0] + 8000dda: f8d3 c00c ldr.w ip, [r3, #12] + 8000dde: a901 add r1, sp, #4 + 8000de0: 47e0 blx ip + 8000de2: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000de6: d114 bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000de8: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000dec: 6802 ldr r2, [r0, #0] + 8000dee: 6869 ldr r1, [r5, #4] + 8000df0: 6893 ldr r3, [r2, #8] + 8000df2: 4798 blx r3 + 8000df4: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000df8: d10b bne.n 8000e12 <cmox_hmac_generateTag+0xc2> + 8000dfa: f8d4 00f8 ldr.w r0, [r4, #248] ; 0xf8 + 8000dfe: 6803 ldr r3, [r0, #0] + 8000e00: 691c ldr r4, [r3, #16] + 8000e02: 463a mov r2, r7 + 8000e04: 4631 mov r1, r6 + 8000e06: 47a0 blx r4 + 8000e08: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e0c: bf08 it eq + 8000e0e: f44f 3840 moveq.w r8, #196608 ; 0x30000 + 8000e12: 4640 mov r0, r8 + 8000e14: b012 add sp, #72 ; 0x48 + 8000e16: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8000e1a: bf00 nop + 8000e1c: 00030002 .word 0x00030002 + 8000e20: 00030001 .word 0x00030001 + +08000e24 <cmox_hmac_verifyTag>: + 8000e24: e92d 41f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + 8000e28: b0a5 sub sp, #148 ; 0x94 + 8000e2a: 4607 mov r7, r0 + 8000e2c: 4688 mov r8, r1 + 8000e2e: 4616 mov r6, r2 + 8000e30: 2140 movs r1, #64 ; 0x40 + 8000e32: a815 add r0, sp, #84 ; 0x54 + 8000e34: f013 fb16 bl 8014464 <__aeabi_memclr> + 8000e38: 2200 movs r2, #0 + 8000e3a: 9204 str r2, [sp, #16] + 8000e3c: 2140 movs r1, #64 ; 0x40 + 8000e3e: a805 add r0, sp, #20 + 8000e40: f013 fb10 bl 8014464 <__aeabi_memclr> + 8000e44: 7a38 ldrb r0, [r7, #8] + 8000e46: 07c1 lsls r1, r0, #31 + 8000e48: d55e bpl.n 8000f08 <cmox_hmac_verifyTag+0xe4> + 8000e4a: 4638 mov r0, r7 + 8000e4c: f000 f87e bl 8000f4c <cmox_hmac_getByMAC> + 8000e50: 0005 movs r5, r0 + 8000e52: d059 beq.n 8000f08 <cmox_hmac_verifyTag+0xe4> + 8000e54: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000e58: 4c2d ldr r4, [pc, #180] ; (8000f10 <cmox_hmac_verifyTag+0xec>) + 8000e5a: 6803 ldr r3, [r0, #0] + 8000e5c: f8d3 c010 ldr.w ip, [r3, #16] + 8000e60: 466a mov r2, sp + 8000e62: a905 add r1, sp, #20 + 8000e64: 47e0 blx ip + 8000e66: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e6a: d13c bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000e6c: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000e70: 6801 ldr r1, [r0, #0] + 8000e72: 684a ldr r2, [r1, #4] + 8000e74: 4790 blx r2 + 8000e76: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e7a: d134 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000e7c: f8d5 117c ldr.w r1, [r5, #380] ; 0x17c + 8000e80: 688a ldr r2, [r1, #8] + 8000e82: 4628 mov r0, r5 + 8000e84: 4790 blx r2 + 8000e86: f8d5 30f8 ldr.w r3, [r5, #248] ; 0xf8 + 8000e8a: 4602 mov r2, r0 + 8000e8c: 4618 mov r0, r3 + 8000e8e: 681b ldr r3, [r3, #0] + 8000e90: f8d3 c00c ldr.w ip, [r3, #12] + 8000e94: f105 01fc add.w r1, r5, #252 ; 0xfc + 8000e98: 47e0 blx ip + 8000e9a: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000e9e: d122 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000ea0: f8d5 017c ldr.w r0, [r5, #380] ; 0x17c + 8000ea4: 6841 ldr r1, [r0, #4] + 8000ea6: 4788 blx r1 + 8000ea8: f8d5 30f8 ldr.w r3, [r5, #248] ; 0xf8 + 8000eac: 4602 mov r2, r0 + 8000eae: 4618 mov r0, r3 + 8000eb0: 681b ldr r3, [r3, #0] + 8000eb2: f8d3 c00c ldr.w ip, [r3, #12] + 8000eb6: a905 add r1, sp, #20 + 8000eb8: 47e0 blx ip + 8000eba: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ebe: d112 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000ec0: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000ec4: 6802 ldr r2, [r0, #0] + 8000ec6: 6879 ldr r1, [r7, #4] + 8000ec8: 6893 ldr r3, [r2, #8] + 8000eca: 4798 blx r3 + 8000ecc: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ed0: d109 bne.n 8000ee6 <cmox_hmac_verifyTag+0xc2> + 8000ed2: f8d5 00f8 ldr.w r0, [r5, #248] ; 0xf8 + 8000ed6: 6803 ldr r3, [r0, #0] + 8000ed8: 691d ldr r5, [r3, #16] + 8000eda: aa04 add r2, sp, #16 + 8000edc: a915 add r1, sp, #84 ; 0x54 + 8000ede: 47a8 blx r5 + 8000ee0: f5b0 3f00 cmp.w r0, #131072 ; 0x20000 + 8000ee4: d001 beq.n 8000eea <cmox_hmac_verifyTag+0xc6> + 8000ee6: 4620 mov r0, r4 + 8000ee8: e00f b.n 8000f0a <cmox_hmac_verifyTag+0xe6> + 8000eea: 4b0a ldr r3, [pc, #40] ; (8000f14 <cmox_hmac_verifyTag+0xf0>) + 8000eec: 490a ldr r1, [pc, #40] ; (8000f18 <cmox_hmac_verifyTag+0xf4>) + 8000eee: 4a0b ldr r2, [pc, #44] ; (8000f1c <cmox_hmac_verifyTag+0xf8>) + 8000ef0: 9603 str r6, [sp, #12] + 8000ef2: 9102 str r1, [sp, #8] + 8000ef4: 9201 str r2, [sp, #4] + 8000ef6: 4640 mov r0, r8 + 8000ef8: 681c ldr r4, [r3, #0] + 8000efa: 9b04 ldr r3, [sp, #16] + 8000efc: 9400 str r4, [sp, #0] + 8000efe: aa15 add r2, sp, #84 ; 0x54 + 8000f00: 6879 ldr r1, [r7, #4] + 8000f02: f000 f9e5 bl 80012d0 <cmox_utils_robustCmp> + 8000f06: e000 b.n 8000f0a <cmox_hmac_verifyTag+0xe6> + 8000f08: 4805 ldr r0, [pc, #20] ; (8000f20 <cmox_hmac_verifyTag+0xfc>) + 8000f0a: b026 add sp, #152 ; 0x98 + 8000f0c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8000f10: 00030001 .word 0x00030001 + 8000f14: 08014604 .word 0x08014604 + 8000f18: 00036e93 .word 0x00036e93 + 8000f1c: 0003c726 .word 0x0003c726 + 8000f20: 00030002 .word 0x00030002 + 8000f24: 0101b004 .word 0x0101b004 + 8000f28: 45011700 .word 0x45011700 + +08000f2c <hmac_table>: + 8000f2c: 08000ae1 08000b01 08000b25 080003b5 ........%....... + 8000f3c: 08000b4d 08000d15 08000d51 08000e25 M.......Q...%... + +08000f4c <cmox_hmac_getByMAC>: + 8000f4c: 6801 ldr r1, [r0, #0] + 8000f4e: 4a02 ldr r2, [pc, #8] ; (8000f58 <cmox_hmac_getByMAC+0xc>) + 8000f50: 4291 cmp r1, r2 + 8000f52: bf18 it ne + 8000f54: 2000 movne r0, #0 + 8000f56: 4770 bx lr + 8000f58: 08000f2c .word 0x08000f2c + +08000f5c <cmox_hmac_construct>: + 8000f5c: b510 push {r4, lr} + 8000f5e: 0004 movs r4, r0 + 8000f60: bf08 it eq + 8000f62: 2400 moveq r4, #0 + 8000f64: d004 beq.n 8000f70 <cmox_hmac_construct+0x14> + 8000f66: 4803 ldr r0, [pc, #12] ; (8000f74 <cmox_hmac_construct+0x18>) + 8000f68: 6020 str r0, [r4, #0] + 8000f6a: 4620 mov r0, r4 + 8000f6c: 6809 ldr r1, [r1, #0] + 8000f6e: 4788 blx r1 + 8000f70: 4620 mov r0, r4 + 8000f72: bd10 pop {r4, pc} + 8000f74: 08000f2c .word 0x08000f2c + +08000f78 <cmox_md_updateState_small>: + 8000f78: 2220 movs r2, #32 + 8000f7a: 305c adds r0, #92 ; 0x5c + 8000f7c: f013 ba70 b.w 8014460 <__aeabi_memcpy> + +08000f80 <cmox_md_copyLastState_small>: + 8000f80: b5f0 push {r4, r5, r6, r7, lr} + 8000f82: 6884 ldr r4, [r0, #8] + 8000f84: 08a3 lsrs r3, r4, #2 + 8000f86: 2200 movs r2, #0 + 8000f88: f004 0403 and.w r4, r4, #3 + 8000f8c: e007 b.n 8000f9e <cmox_md_copyLastState_small+0x1e> + 8000f8e: f100 055c add.w r5, r0, #92 ; 0x5c + 8000f92: f855 6022 ldr.w r6, [r5, r2, lsl #2] + 8000f96: ba35 rev r5, r6 + 8000f98: f841 5022 str.w r5, [r1, r2, lsl #2] + 8000f9c: 1c52 adds r2, r2, #1 + 8000f9e: 429a cmp r2, r3 + 8000fa0: d3f5 bcc.n 8000f8e <cmox_md_copyLastState_small+0xe> + 8000fa2: 2200 movs r2, #0 + 8000fa4: e00b b.n 8000fbe <cmox_md_copyLastState_small+0x3e> + 8000fa6: f100 055c add.w r5, r0, #92 ; 0x5c + 8000faa: eb02 0783 add.w r7, r2, r3, lsl #2 + 8000fae: f855 6023 ldr.w r6, [r5, r3, lsl #2] + 8000fb2: 00d5 lsls r5, r2, #3 + 8000fb4: f1c5 0518 rsb r5, r5, #24 + 8000fb8: 40ee lsrs r6, r5 + 8000fba: 55ce strb r6, [r1, r7] + 8000fbc: 1c52 adds r2, r2, #1 + 8000fbe: 42a2 cmp r2, r4 + 8000fc0: d3f1 bcc.n 8000fa6 <cmox_md_copyLastState_small+0x26> + 8000fc2: bdf0 pop {r4, r5, r6, r7, pc} + +08000fc4 <cmox_md_padMsgLen_small>: + 8000fc4: b530 push {r4, r5, lr} + 8000fc6: 68c4 ldr r4, [r0, #12] + 8000fc8: 6903 ldr r3, [r0, #16] + 8000fca: 2200 movs r2, #0 + 8000fcc: 1ae3 subs r3, r4, r3 + 8000fce: 18d5 adds r5, r2, r3 + 8000fd0: 5c8c ldrb r4, [r1, r2] + 8000fd2: 4405 add r5, r0 + 8000fd4: 1c52 adds r2, r2, #1 + 8000fd6: 2a08 cmp r2, #8 + 8000fd8: 772c strb r4, [r5, #28] + 8000fda: d3f8 bcc.n 8000fce <cmox_md_padMsgLen_small+0xa> + 8000fdc: bd30 pop {r4, r5, pc} + +08000fde <cmox_md_construct>: + 8000fde: 6003 str r3, [r0, #0] + 8000fe0: 60c1 str r1, [r0, #12] + 8000fe2: 6102 str r2, [r0, #16] + 8000fe4: 4770 bx lr + +08000fe6 <cmox_md_init>: + 8000fe6: b538 push {r3, r4, r5, lr} + 8000fe8: 4604 mov r4, r0 + 8000fea: 4615 mov r5, r2 + 8000fec: 2200 movs r2, #0 + 8000fee: 6062 str r2, [r4, #4] + 8000ff0: 6823 ldr r3, [r4, #0] + 8000ff2: 685a ldr r2, [r3, #4] + 8000ff4: 4790 blx r2 + 8000ff6: 2000 movs r0, #0 + 8000ff8: 6160 str r0, [r4, #20] + 8000ffa: 61a0 str r0, [r4, #24] + 8000ffc: 60a5 str r5, [r4, #8] + 8000ffe: f44f 3000 mov.w r0, #131072 ; 0x20000 + 8001002: bd32 pop {r1, r4, r5, pc} + +08001004 <cmox_md_setTagSize>: + 8001004: 6081 str r1, [r0, #8] + 8001006: f44f 3000 mov.w r0, #131072 ; 0x20000 + 800100a: 4770 bx lr + +0800100c <cmox_md_append>: + 800100c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8001010: 4604 mov r4, r0 + 8001012: 7920 ldrb r0, [r4, #4] + 8001014: f8d4 800c ldr.w r8, [r4, #12] + 8001018: 0745 lsls r5, r0, #29 + 800101a: bf48 it mi + 800101c: 4824 ldrmi r0, [pc, #144] ; (80010b0 <cmox_md_append+0xa4>) + 800101e: d445 bmi.n 80010ac <cmox_md_append+0xa0> + 8001020: 6966 ldr r6, [r4, #20] + 8001022: 461d mov r5, r3 + 8001024: f1a8 0001 sub.w r0, r8, #1 + 8001028: ea00 03d6 and.w r3, r0, r6, lsr #3 + 800102c: eb06 06c5 add.w r6, r6, r5, lsl #3 + 8001030: ebb6 0fc5 cmp.w r6, r5, lsl #3 + 8001034: 6166 str r6, [r4, #20] + 8001036: d202 bcs.n 800103e <cmox_md_append+0x32> + 8001038: 69a6 ldr r6, [r4, #24] + 800103a: 1c76 adds r6, r6, #1 + 800103c: 61a6 str r6, [r4, #24] + 800103e: 4617 mov r7, r2 + 8001040: 69a6 ldr r6, [r4, #24] + 8001042: eb06 7655 add.w r6, r6, r5, lsr #29 + 8001046: 61a6 str r6, [r4, #24] + 8001048: 460e mov r6, r1 + 800104a: 18e9 adds r1, r5, r3 + 800104c: 4288 cmp r0, r1 + 800104e: d225 bcs.n 800109c <cmox_md_append+0x90> + 8001050: eba8 0903 sub.w r9, r8, r3 + 8001054: 464a mov r2, r9 + 8001056: 4631 mov r1, r6 + 8001058: 18f8 adds r0, r7, r3 + 800105a: f013 fa01 bl 8014460 <__aeabi_memcpy> + 800105e: 6822 ldr r2, [r4, #0] + 8001060: 6813 ldr r3, [r2, #0] + 8001062: 4639 mov r1, r7 + 8001064: e00f b.n 8001086 <cmox_md_append+0x7a> + 8001066: 4642 mov r2, r8 + 8001068: 4638 mov r0, r7 + 800106a: f013 f9f9 bl 8014460 <__aeabi_memcpy> + 800106e: 6823 ldr r3, [r4, #0] + 8001070: 681a ldr r2, [r3, #0] + 8001072: 4639 mov r1, r7 + 8001074: 4620 mov r0, r4 + 8001076: 4790 blx r2 + 8001078: e007 b.n 800108a <cmox_md_append+0x7e> + 800107a: 1831 adds r1, r6, r0 + 800107c: f011 0003 ands.w r0, r1, #3 + 8001080: d1f1 bne.n 8001066 <cmox_md_append+0x5a> + 8001082: 6822 ldr r2, [r4, #0] + 8001084: 6813 ldr r3, [r2, #0] + 8001086: 4620 mov r0, r4 + 8001088: 4798 blx r3 + 800108a: 4648 mov r0, r9 + 800108c: eb00 0908 add.w r9, r0, r8 + 8001090: f1a9 0101 sub.w r1, r9, #1 + 8001094: 42a9 cmp r1, r5 + 8001096: d3f0 bcc.n 800107a <cmox_md_append+0x6e> + 8001098: 2300 movs r3, #0 + 800109a: e000 b.n 800109e <cmox_md_append+0x92> + 800109c: 2000 movs r0, #0 + 800109e: 1a2a subs r2, r5, r0 + 80010a0: 1831 adds r1, r6, r0 + 80010a2: 18f8 adds r0, r7, r3 + 80010a4: f013 f9dc bl 8014460 <__aeabi_memcpy> + 80010a8: f44f 3000 mov.w r0, #131072 ; 0x20000 + 80010ac: e8bd 83f2 ldmia.w sp!, {r1, r4, r5, r6, r7, r8, r9, pc} + 80010b0: 00020004 .word 0x00020004 + +080010b4 <cmox_md_generateTag>: + 80010b4: e92d 4ffc stmdb sp!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80010b8: 4602 mov r2, r0 + 80010ba: b085 sub sp, #20 + 80010bc: 68d0 ldr r0, [r2, #12] + 80010be: 6913 ldr r3, [r2, #16] + 80010c0: f8df c16c ldr.w ip, [pc, #364] ; 8001230 <cmox_md_generateTag+0x17c> + 80010c4: f8df 816c ldr.w r8, [pc, #364] ; 8001234 <cmox_md_generateTag+0x180> + 80010c8: eba0 0a03 sub.w sl, r0, r3 + 80010cc: 6850 ldr r0, [r2, #4] + 80010ce: f040 0004 orr.w r0, r0, #4 + 80010d2: 6050 str r0, [r2, #4] + 80010d4: 2700 movs r7, #0 + 80010d6: a803 add r0, sp, #12 + 80010d8: 9002 str r0, [sp, #8] + 80010da: f10d 0e0c add.w lr, sp, #12 + 80010de: e9d8 3400 ldrd r3, r4, [r8] + 80010e2: a803 add r0, sp, #12 + 80010e4: 4d54 ldr r5, [pc, #336] ; (8001238 <cmox_md_generateTag+0x184>) + 80010e6: e9c0 3400 strd r3, r4, [r0] + 80010ea: 7828 ldrb r0, [r5, #0] + 80010ec: 4d53 ldr r5, [pc, #332] ; (800123c <cmox_md_generateTag+0x188>) + 80010ee: 2800 cmp r0, #0 + 80010f0: bf0c ite eq + 80010f2: 2300 moveq r3, #0 + 80010f4: 2304 movne r3, #4 + 80010f6: 4699 mov r9, r3 + 80010f8: f85c 3003 ldr.w r3, [ip, r3] + 80010fc: f85e 4009 ldr.w r4, [lr, r9] + 8001100: 4423 add r3, r4 + 8001102: 2601 movs r6, #1 + 8001104: 601d str r5, [r3, #0] + 8001106: 681c ldr r4, [r3, #0] + 8001108: 609e str r6, [r3, #8] + 800110a: f8dc 3004 ldr.w r3, [ip, #4] + 800110e: 9d03 ldr r5, [sp, #12] + 8001110: f8dc 9000 ldr.w r9, [ip] + 8001114: f8de 6004 ldr.w r6, [lr, #4] + 8001118: 405d eors r5, r3 + 800111a: 4065 eors r5, r4 + 800111c: 4c48 ldr r4, [pc, #288] ; (8001240 <cmox_md_generateTag+0x18c>) + 800111e: 4065 eors r5, r4 + 8001120: ea89 0606 eor.w r6, r9, r6 + 8001124: 4c47 ldr r4, [pc, #284] ; (8001244 <cmox_md_generateTag+0x190>) + 8001126: 4066 eors r6, r4 + 8001128: 1975 adds r5, r6, r5 + 800112a: 4c47 ldr r4, [pc, #284] ; (8001248 <cmox_md_generateTag+0x194>) + 800112c: 4065 eors r5, r4 + 800112e: e9d8 6b00 ldrd r6, fp, [r8] + 8001132: ac03 add r4, sp, #12 + 8001134: 2800 cmp r0, #0 + 8001136: e9c4 6b00 strd r6, fp, [r4] + 800113a: bf0e itee eq + 800113c: 2400 moveq r4, #0 + 800113e: 2004 movne r0, #4 + 8001140: 2404 movne r4, #4 + 8001142: 9e02 ldr r6, [sp, #8] + 8001144: f85c 0000 ldr.w r0, [ip, r0] + 8001148: 5934 ldr r4, [r6, r4] + 800114a: 1820 adds r0, r4, r0 + 800114c: 4c3f ldr r4, [pc, #252] ; (800124c <cmox_md_generateTag+0x198>) + 800114e: 6004 str r4, [r0, #0] + 8001150: 2601 movs r6, #1 + 8001152: 6804 ldr r4, [r0, #0] + 8001154: 6086 str r6, [r0, #8] + 8001156: 9803 ldr r0, [sp, #12] + 8001158: 9e02 ldr r6, [sp, #8] + 800115a: 4043 eors r3, r0 + 800115c: 4063 eors r3, r4 + 800115e: 4c38 ldr r4, [pc, #224] ; (8001240 <cmox_md_generateTag+0x18c>) + 8001160: 6870 ldr r0, [r6, #4] + 8001162: 4063 eors r3, r4 + 8001164: ea89 0000 eor.w r0, r9, r0 + 8001168: 4c36 ldr r4, [pc, #216] ; (8001244 <cmox_md_generateTag+0x190>) + 800116a: 4060 eors r0, r4 + 800116c: 4403 add r3, r0 + 800116e: 4838 ldr r0, [pc, #224] ; (8001250 <cmox_md_generateTag+0x19c>) + 8001170: 4043 eors r3, r0 + 8001172: 0028 movs r0, r5 + 8001174: bf18 it ne + 8001176: 2001 movne r0, #1 + 8001178: 1e5b subs r3, r3, #1 + 800117a: 419b sbcs r3, r3 + 800117c: 2f04 cmp r7, #4 + 800117e: bf2c ite cs + 8001180: b2c0 uxtbcs r0, r0 + 8001182: 0fd8 lsrcc r0, r3, #31 + 8001184: f102 0314 add.w r3, r2, #20 + 8001188: f853 0020 ldr.w r0, [r3, r0, lsl #2] + 800118c: f007 0303 and.w r3, r7, #3 + 8001190: f1c3 0303 rsb r3, r3, #3 + 8001194: 00db lsls r3, r3, #3 + 8001196: 40d8 lsrs r0, r3 + 8001198: f80d 0007 strb.w r0, [sp, r7] + 800119c: 1c7f adds r7, r7, #1 + 800119e: 2f08 cmp r7, #8 + 80011a0: d39d bcc.n 80010de <cmox_md_generateTag+0x2a> + 80011a2: 4615 mov r5, r2 + 80011a4: 460c mov r4, r1 + 80011a6: 696a ldr r2, [r5, #20] + 80011a8: 69ab ldr r3, [r5, #24] + 80011aa: 68e8 ldr r0, [r5, #12] + 80011ac: 08d2 lsrs r2, r2, #3 + 80011ae: ea42 7243 orr.w r2, r2, r3, lsl #29 + 80011b2: 1e40 subs r0, r0, #1 + 80011b4: ea00 0702 and.w r7, r0, r2 + 80011b8: 2300 movs r3, #0 + 80011ba: 4002 ands r2, r0 + 80011bc: 429b cmp r3, r3 + 80011be: d80a bhi.n 80011d6 <cmox_md_generateTag+0x122> + 80011c0: 4552 cmp r2, sl + 80011c2: d208 bcs.n 80011d6 <cmox_md_generateTag+0x122> + 80011c4: 2080 movs r0, #128 ; 0x80 + 80011c6: 55e0 strb r0, [r4, r7] + 80011c8: 1c7f adds r7, r7, #1 + 80011ca: 4557 cmp r7, sl + 80011cc: d216 bcs.n 80011fc <cmox_md_generateTag+0x148> + 80011ce: ebaa 0107 sub.w r1, sl, r7 + 80011d2: 19e0 adds r0, r4, r7 + 80011d4: e010 b.n 80011f8 <cmox_md_generateTag+0x144> + 80011d6: 2080 movs r0, #128 ; 0x80 + 80011d8: 55e0 strb r0, [r4, r7] + 80011da: e000 b.n 80011de <cmox_md_generateTag+0x12a> + 80011dc: 55e3 strb r3, [r4, r7] + 80011de: 68e8 ldr r0, [r5, #12] + 80011e0: 1c7f adds r7, r7, #1 + 80011e2: 4287 cmp r7, r0 + 80011e4: d3fa bcc.n 80011dc <cmox_md_generateTag+0x128> + 80011e6: 682a ldr r2, [r5, #0] + 80011e8: 6813 ldr r3, [r2, #0] + 80011ea: 4628 mov r0, r5 + 80011ec: 4798 blx r3 + 80011ee: f1ba 0f00 cmp.w sl, #0 + 80011f2: d003 beq.n 80011fc <cmox_md_generateTag+0x148> + 80011f4: 4651 mov r1, sl + 80011f6: 4620 mov r0, r4 + 80011f8: f013 f934 bl 8014464 <__aeabi_memclr> + 80011fc: 682a ldr r2, [r5, #0] + 80011fe: 9e06 ldr r6, [sp, #24] + 8001200: 9f05 ldr r7, [sp, #20] + 8001202: 6893 ldr r3, [r2, #8] + 8001204: 4669 mov r1, sp + 8001206: 4628 mov r0, r5 + 8001208: 4798 blx r3 + 800120a: 682a ldr r2, [r5, #0] + 800120c: f8d2 9000 ldr.w r9, [r2] + 8001210: 4621 mov r1, r4 + 8001212: 4628 mov r0, r5 + 8001214: 47c8 blx r9 + 8001216: 682b ldr r3, [r5, #0] + 8001218: 68da ldr r2, [r3, #12] + 800121a: 4639 mov r1, r7 + 800121c: 4628 mov r0, r5 + 800121e: 4790 blx r2 + 8001220: b10e cbz r6, 8001226 <cmox_md_generateTag+0x172> + 8001222: 68a8 ldr r0, [r5, #8] + 8001224: 6030 str r0, [r6, #0] + 8001226: f44f 3000 mov.w r0, #131072 ; 0x20000 + 800122a: b007 add sp, #28 + 800122c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8001230: 080145fc .word 0x080145fc + 8001234: 08001254 .word 0x08001254 + 8001238: 200008e8 .word 0x200008e8 + 800123c: 9310c55f .word 0x9310c55f + 8001240: 12008504 .word 0x12008504 + 8001244: 7a0168fc .word 0x7a0168fc + 8001248: ff24f5c0 .word 0xff24f5c0 + 800124c: d433af24 .word 0xd433af24 + 8001250: 8b69af26 .word 0x8b69af26 + 8001254: 0101b004 .word 0x0101b004 + 8001258: 45011700 .word 0x45011700 + +0800125c <firstloop_bb_cmp>: + 800125c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800125e: 2401 movs r4, #1 + 8001260: 9400 str r4, [sp, #0] + 8001262: 2300 movs r3, #0 + 8001264: 2400 movs r4, #0 + 8001266: e00d b.n 8001284 <firstloop_bb_cmp+0x28> + 8001268: 9d00 ldr r5, [sp, #0] + 800126a: 5d06 ldrb r6, [r0, r4] + 800126c: 5d0f ldrb r7, [r1, r4] + 800126e: 407e eors r6, r7 + 8001270: 43f6 mvns r6, r6 + 8001272: 1c76 adds r6, r6, #1 + 8001274: 0ff6 lsrs r6, r6, #31 + 8001276: f086 0601 eor.w r6, r6, #1 + 800127a: 4035 ands r5, r6 + 800127c: 9500 str r5, [sp, #0] + 800127e: 1c64 adds r4, r4, #1 + 8001280: 9d00 ldr r5, [sp, #0] + 8001282: 18eb adds r3, r5, r3 + 8001284: 4294 cmp r4, r2 + 8001286: d3ef bcc.n 8001268 <firstloop_bb_cmp+0xc> + 8001288: 4618 mov r0, r3 + 800128a: bdf2 pop {r1, r4, r5, r6, r7, pc} + +0800128c <secondloop_bb_cmp>: + 800128c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800128e: 2300 movs r3, #0 + 8001290: 2401 movs r4, #1 + 8001292: 9400 str r4, [sp, #0] + 8001294: 2a00 cmp r2, #0 + 8001296: e011 b.n 80012bc <secondloop_bb_cmp+0x30> + 8001298: 9c00 ldr r4, [sp, #0] + 800129a: 1885 adds r5, r0, r2 + 800129c: 188f adds r7, r1, r2 + 800129e: f815 6c01 ldrb.w r6, [r5, #-1] + 80012a2: f817 5c01 ldrb.w r5, [r7, #-1] + 80012a6: 406e eors r6, r5 + 80012a8: 43f6 mvns r6, r6 + 80012aa: 1c76 adds r6, r6, #1 + 80012ac: 0ff6 lsrs r6, r6, #31 + 80012ae: f086 0601 eor.w r6, r6, #1 + 80012b2: 4034 ands r4, r6 + 80012b4: 9400 str r4, [sp, #0] + 80012b6: 9c00 ldr r4, [sp, #0] + 80012b8: 18e3 adds r3, r4, r3 + 80012ba: 1e52 subs r2, r2, #1 + 80012bc: d1ec bne.n 8001298 <secondloop_bb_cmp+0xc> + 80012be: 4618 mov r0, r3 + 80012c0: bdf2 pop {r1, r4, r5, r6, r7, pc} + ... + +080012c4 <bufType_bb>: + 80012c4: 125d 0800 128d 0800 0001 0000 ]........... + +080012d0 <cmox_utils_robustCmp>: + 80012d0: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80012d4: 461d mov r5, r3 + 80012d6: f8dd 9028 ldr.w r9, [sp, #40] ; 0x28 + 80012da: 9f0b ldr r7, [sp, #44] ; 0x2c + 80012dc: 9c0d ldr r4, [sp, #52] ; 0x34 + 80012de: f04f 33ff mov.w r3, #4294967295 + 80012e2: 9300 str r3, [sp, #0] + 80012e4: 460e mov r6, r1 + 80012e6: 4692 mov sl, r2 + 80012e8: f8d9 b000 ldr.w fp, [r9] + 80012ec: 4680 mov r8, r0 + 80012ee: 4632 mov r2, r6 + 80012f0: 4651 mov r1, sl + 80012f2: 47d8 blx fp + 80012f4: 4683 mov fp, r0 + 80012f6: b364 cbz r4, 8001352 <cmox_utils_robustCmp+0x82> + 80012f8: f8d9 3004 ldr.w r3, [r9, #4] + 80012fc: 4632 mov r2, r6 + 80012fe: 4651 mov r1, sl + 8001300: 4640 mov r0, r8 + 8001302: 4798 blx r3 + 8001304: ea6f 020b mvn.w r2, fp + 8001308: 1c52 adds r2, r2, #1 + 800130a: ea42 020b orr.w r2, r2, fp + 800130e: 9900 ldr r1, [sp, #0] + 8001310: ea6f 73d2 mvn.w r3, r2, lsr #31 + 8001314: 1c5b adds r3, r3, #1 + 8001316: 4019 ands r1, r3 + 8001318: 43c2 mvns r2, r0 + 800131a: 9100 str r1, [sp, #0] + 800131c: 1c52 adds r2, r2, #1 + 800131e: 4302 orrs r2, r0 + 8001320: 9900 ldr r1, [sp, #0] + 8001322: ea6f 73d2 mvn.w r3, r2, lsr #31 + 8001326: 1c5b adds r3, r3, #1 + 8001328: 4019 ands r1, r3 + 800132a: 9100 str r1, [sp, #0] + 800132c: f086 3155 eor.w r1, r6, #1431655765 ; 0x55555555 + 8001330: 4048 eors r0, r1 + 8001332: ea87 0100 eor.w r1, r7, r0 + 8001336: f081 3155 eor.w r1, r1, #1431655765 ; 0x55555555 + 800133a: 6021 str r1, [r4, #0] + 800133c: f080 3155 eor.w r1, r0, #1431655765 ; 0x55555555 + 8001340: 43c9 mvns r1, r1 + 8001342: 1c49 adds r1, r1, #1 + 8001344: 4308 orrs r0, r1 + 8001346: 9a00 ldr r2, [sp, #0] + 8001348: ea6f 70d0 mvn.w r0, r0, lsr #31 + 800134c: 1c40 adds r0, r0, #1 + 800134e: 4382 bics r2, r0 + 8001350: 9200 str r2, [sp, #0] + 8001352: f8d9 0008 ldr.w r0, [r9, #8] + 8001356: 2801 cmp r0, #1 + 8001358: d109 bne.n 800136e <cmox_utils_robustCmp+0x9e> + 800135a: 4075 eors r5, r6 + 800135c: 43e9 mvns r1, r5 + 800135e: 1c49 adds r1, r1, #1 + 8001360: 430d orrs r5, r1 + 8001362: 9800 ldr r0, [sp, #0] + 8001364: ea6f 72d5 mvn.w r2, r5, lsr #31 + 8001368: 1c52 adds r2, r2, #1 + 800136a: 4390 bics r0, r2 + 800136c: e00a b.n 8001384 <cmox_utils_robustCmp+0xb4> + 800136e: 1cf1 adds r1, r6, #3 + 8001370: ea85 0291 eor.w r2, r5, r1, lsr #2 + 8001374: 43d2 mvns r2, r2 + 8001376: 1c52 adds r2, r2, #1 + 8001378: 4315 orrs r5, r2 + 800137a: 9800 ldr r0, [sp, #0] + 800137c: ea6f 73d5 mvn.w r3, r5, lsr #31 + 8001380: 1c5b adds r3, r3, #1 + 8001382: 4398 bics r0, r3 + 8001384: f086 36aa eor.w r6, r6, #2863311530 ; 0xaaaaaaaa + 8001388: 9000 str r0, [sp, #0] + 800138a: ea86 060b eor.w r6, r6, fp + 800138e: f086 33aa eor.w r3, r6, #2863311530 ; 0xaaaaaaaa + 8001392: 43f2 mvns r2, r6 + 8001394: 43db mvns r3, r3 + 8001396: 980c ldr r0, [sp, #48] ; 0x30 + 8001398: f3c2 72c0 ubfx r2, r2, #31, #1 + 800139c: 1c5b adds r3, r3, #1 + 800139e: ea42 72d3 orr.w r2, r2, r3, lsr #31 + 80013a2: 9900 ldr r1, [sp, #0] + 80013a4: 43d2 mvns r2, r2 + 80013a6: 1c52 adds r2, r2, #1 + 80013a8: 4391 bics r1, r2 + 80013aa: 9100 str r1, [sp, #0] + 80013ac: 4077 eors r7, r6 + 80013ae: 9900 ldr r1, [sp, #0] + 80013b0: 4388 bics r0, r1 + 80013b2: 9900 ldr r1, [sp, #0] + 80013b4: f087 37aa eor.w r7, r7, #2863311530 ; 0xaaaaaaaa + 80013b8: 400f ands r7, r1 + 80013ba: 4338 orrs r0, r7 + 80013bc: e8bd 8ff2 ldmia.w sp!, {r1, r4, r5, r6, r7, r8, r9, sl, fp, pc} + +080013c0 <strlen>: + 80013c0: 4603 mov r3, r0 + 80013c2: f813 2b01 ldrb.w r2, [r3], #1 + 80013c6: 2a00 cmp r2, #0 + 80013c8: d1fb bne.n 80013c2 <strlen+0x2> + 80013ca: 1a18 subs r0, r3, r0 + 80013cc: 3801 subs r0, #1 + 80013ce: 4770 bx lr + +080013d0 <__aeabi_drsub>: + 80013d0: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000 + 80013d4: e002 b.n 80013dc <__adddf3> + 80013d6: bf00 nop + +080013d8 <__aeabi_dsub>: + 80013d8: f083 4300 eor.w r3, r3, #2147483648 ; 0x80000000 + +080013dc <__adddf3>: + 80013dc: b530 push {r4, r5, lr} + 80013de: ea4f 0441 mov.w r4, r1, lsl #1 + 80013e2: ea4f 0543 mov.w r5, r3, lsl #1 + 80013e6: ea94 0f05 teq r4, r5 + 80013ea: bf08 it eq + 80013ec: ea90 0f02 teqeq r0, r2 + 80013f0: bf1f itttt ne + 80013f2: ea54 0c00 orrsne.w ip, r4, r0 + 80013f6: ea55 0c02 orrsne.w ip, r5, r2 + 80013fa: ea7f 5c64 mvnsne.w ip, r4, asr #21 + 80013fe: ea7f 5c65 mvnsne.w ip, r5, asr #21 + 8001402: f000 80e2 beq.w 80015ca <__adddf3+0x1ee> + 8001406: ea4f 5454 mov.w r4, r4, lsr #21 + 800140a: ebd4 5555 rsbs r5, r4, r5, lsr #21 + 800140e: bfb8 it lt + 8001410: 426d neglt r5, r5 + 8001412: dd0c ble.n 800142e <__adddf3+0x52> + 8001414: 442c add r4, r5 + 8001416: ea80 0202 eor.w r2, r0, r2 + 800141a: ea81 0303 eor.w r3, r1, r3 + 800141e: ea82 0000 eor.w r0, r2, r0 + 8001422: ea83 0101 eor.w r1, r3, r1 + 8001426: ea80 0202 eor.w r2, r0, r2 + 800142a: ea81 0303 eor.w r3, r1, r3 + 800142e: 2d36 cmp r5, #54 ; 0x36 + 8001430: bf88 it hi + 8001432: bd30 pophi {r4, r5, pc} + 8001434: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 + 8001438: ea4f 3101 mov.w r1, r1, lsl #12 + 800143c: f44f 1c80 mov.w ip, #1048576 ; 0x100000 + 8001440: ea4c 3111 orr.w r1, ip, r1, lsr #12 + 8001444: d002 beq.n 800144c <__adddf3+0x70> + 8001446: 4240 negs r0, r0 + 8001448: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 800144c: f013 4f00 tst.w r3, #2147483648 ; 0x80000000 + 8001450: ea4f 3303 mov.w r3, r3, lsl #12 + 8001454: ea4c 3313 orr.w r3, ip, r3, lsr #12 + 8001458: d002 beq.n 8001460 <__adddf3+0x84> + 800145a: 4252 negs r2, r2 + 800145c: eb63 0343 sbc.w r3, r3, r3, lsl #1 + 8001460: ea94 0f05 teq r4, r5 + 8001464: f000 80a7 beq.w 80015b6 <__adddf3+0x1da> + 8001468: f1a4 0401 sub.w r4, r4, #1 + 800146c: f1d5 0e20 rsbs lr, r5, #32 + 8001470: db0d blt.n 800148e <__adddf3+0xb2> + 8001472: fa02 fc0e lsl.w ip, r2, lr + 8001476: fa22 f205 lsr.w r2, r2, r5 + 800147a: 1880 adds r0, r0, r2 + 800147c: f141 0100 adc.w r1, r1, #0 + 8001480: fa03 f20e lsl.w r2, r3, lr + 8001484: 1880 adds r0, r0, r2 + 8001486: fa43 f305 asr.w r3, r3, r5 + 800148a: 4159 adcs r1, r3 + 800148c: e00e b.n 80014ac <__adddf3+0xd0> + 800148e: f1a5 0520 sub.w r5, r5, #32 + 8001492: f10e 0e20 add.w lr, lr, #32 + 8001496: 2a01 cmp r2, #1 + 8001498: fa03 fc0e lsl.w ip, r3, lr + 800149c: bf28 it cs + 800149e: f04c 0c02 orrcs.w ip, ip, #2 + 80014a2: fa43 f305 asr.w r3, r3, r5 + 80014a6: 18c0 adds r0, r0, r3 + 80014a8: eb51 71e3 adcs.w r1, r1, r3, asr #31 + 80014ac: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 + 80014b0: d507 bpl.n 80014c2 <__adddf3+0xe6> + 80014b2: f04f 0e00 mov.w lr, #0 + 80014b6: f1dc 0c00 rsbs ip, ip, #0 + 80014ba: eb7e 0000 sbcs.w r0, lr, r0 + 80014be: eb6e 0101 sbc.w r1, lr, r1 + 80014c2: f5b1 1f80 cmp.w r1, #1048576 ; 0x100000 + 80014c6: d31b bcc.n 8001500 <__adddf3+0x124> + 80014c8: f5b1 1f00 cmp.w r1, #2097152 ; 0x200000 + 80014cc: d30c bcc.n 80014e8 <__adddf3+0x10c> + 80014ce: 0849 lsrs r1, r1, #1 + 80014d0: ea5f 0030 movs.w r0, r0, rrx + 80014d4: ea4f 0c3c mov.w ip, ip, rrx + 80014d8: f104 0401 add.w r4, r4, #1 + 80014dc: ea4f 5244 mov.w r2, r4, lsl #21 + 80014e0: f512 0f80 cmn.w r2, #4194304 ; 0x400000 + 80014e4: f080 809a bcs.w 800161c <__adddf3+0x240> + 80014e8: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000 + 80014ec: bf08 it eq + 80014ee: ea5f 0c50 movseq.w ip, r0, lsr #1 + 80014f2: f150 0000 adcs.w r0, r0, #0 + 80014f6: eb41 5104 adc.w r1, r1, r4, lsl #20 + 80014fa: ea41 0105 orr.w r1, r1, r5 + 80014fe: bd30 pop {r4, r5, pc} + 8001500: ea5f 0c4c movs.w ip, ip, lsl #1 + 8001504: 4140 adcs r0, r0 + 8001506: eb41 0101 adc.w r1, r1, r1 + 800150a: 3c01 subs r4, #1 + 800150c: bf28 it cs + 800150e: f5b1 1f80 cmpcs.w r1, #1048576 ; 0x100000 + 8001512: d2e9 bcs.n 80014e8 <__adddf3+0x10c> + 8001514: f091 0f00 teq r1, #0 + 8001518: bf04 itt eq + 800151a: 4601 moveq r1, r0 + 800151c: 2000 moveq r0, #0 + 800151e: fab1 f381 clz r3, r1 + 8001522: bf08 it eq + 8001524: 3320 addeq r3, #32 + 8001526: f1a3 030b sub.w r3, r3, #11 + 800152a: f1b3 0220 subs.w r2, r3, #32 + 800152e: da0c bge.n 800154a <__adddf3+0x16e> + 8001530: 320c adds r2, #12 + 8001532: dd08 ble.n 8001546 <__adddf3+0x16a> + 8001534: f102 0c14 add.w ip, r2, #20 + 8001538: f1c2 020c rsb r2, r2, #12 + 800153c: fa01 f00c lsl.w r0, r1, ip + 8001540: fa21 f102 lsr.w r1, r1, r2 + 8001544: e00c b.n 8001560 <__adddf3+0x184> + 8001546: f102 0214 add.w r2, r2, #20 + 800154a: bfd8 it le + 800154c: f1c2 0c20 rsble ip, r2, #32 + 8001550: fa01 f102 lsl.w r1, r1, r2 + 8001554: fa20 fc0c lsr.w ip, r0, ip + 8001558: bfdc itt le + 800155a: ea41 010c orrle.w r1, r1, ip + 800155e: 4090 lslle r0, r2 + 8001560: 1ae4 subs r4, r4, r3 + 8001562: bfa2 ittt ge + 8001564: eb01 5104 addge.w r1, r1, r4, lsl #20 + 8001568: 4329 orrge r1, r5 + 800156a: bd30 popge {r4, r5, pc} + 800156c: ea6f 0404 mvn.w r4, r4 + 8001570: 3c1f subs r4, #31 + 8001572: da1c bge.n 80015ae <__adddf3+0x1d2> + 8001574: 340c adds r4, #12 + 8001576: dc0e bgt.n 8001596 <__adddf3+0x1ba> + 8001578: f104 0414 add.w r4, r4, #20 + 800157c: f1c4 0220 rsb r2, r4, #32 + 8001580: fa20 f004 lsr.w r0, r0, r4 + 8001584: fa01 f302 lsl.w r3, r1, r2 + 8001588: ea40 0003 orr.w r0, r0, r3 + 800158c: fa21 f304 lsr.w r3, r1, r4 + 8001590: ea45 0103 orr.w r1, r5, r3 + 8001594: bd30 pop {r4, r5, pc} + 8001596: f1c4 040c rsb r4, r4, #12 + 800159a: f1c4 0220 rsb r2, r4, #32 + 800159e: fa20 f002 lsr.w r0, r0, r2 + 80015a2: fa01 f304 lsl.w r3, r1, r4 + 80015a6: ea40 0003 orr.w r0, r0, r3 + 80015aa: 4629 mov r1, r5 + 80015ac: bd30 pop {r4, r5, pc} + 80015ae: fa21 f004 lsr.w r0, r1, r4 + 80015b2: 4629 mov r1, r5 + 80015b4: bd30 pop {r4, r5, pc} + 80015b6: f094 0f00 teq r4, #0 + 80015ba: f483 1380 eor.w r3, r3, #1048576 ; 0x100000 + 80015be: bf06 itte eq + 80015c0: f481 1180 eoreq.w r1, r1, #1048576 ; 0x100000 + 80015c4: 3401 addeq r4, #1 + 80015c6: 3d01 subne r5, #1 + 80015c8: e74e b.n 8001468 <__adddf3+0x8c> + 80015ca: ea7f 5c64 mvns.w ip, r4, asr #21 + 80015ce: bf18 it ne + 80015d0: ea7f 5c65 mvnsne.w ip, r5, asr #21 + 80015d4: d029 beq.n 800162a <__adddf3+0x24e> + 80015d6: ea94 0f05 teq r4, r5 + 80015da: bf08 it eq + 80015dc: ea90 0f02 teqeq r0, r2 + 80015e0: d005 beq.n 80015ee <__adddf3+0x212> + 80015e2: ea54 0c00 orrs.w ip, r4, r0 + 80015e6: bf04 itt eq + 80015e8: 4619 moveq r1, r3 + 80015ea: 4610 moveq r0, r2 + 80015ec: bd30 pop {r4, r5, pc} + 80015ee: ea91 0f03 teq r1, r3 + 80015f2: bf1e ittt ne + 80015f4: 2100 movne r1, #0 + 80015f6: 2000 movne r0, #0 + 80015f8: bd30 popne {r4, r5, pc} + 80015fa: ea5f 5c54 movs.w ip, r4, lsr #21 + 80015fe: d105 bne.n 800160c <__adddf3+0x230> + 8001600: 0040 lsls r0, r0, #1 + 8001602: 4149 adcs r1, r1 + 8001604: bf28 it cs + 8001606: f041 4100 orrcs.w r1, r1, #2147483648 ; 0x80000000 + 800160a: bd30 pop {r4, r5, pc} + 800160c: f514 0480 adds.w r4, r4, #4194304 ; 0x400000 + 8001610: bf3c itt cc + 8001612: f501 1180 addcc.w r1, r1, #1048576 ; 0x100000 + 8001616: bd30 popcc {r4, r5, pc} + 8001618: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 + 800161c: f045 41fe orr.w r1, r5, #2130706432 ; 0x7f000000 + 8001620: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000 + 8001624: f04f 0000 mov.w r0, #0 + 8001628: bd30 pop {r4, r5, pc} + 800162a: ea7f 5c64 mvns.w ip, r4, asr #21 + 800162e: bf1a itte ne + 8001630: 4619 movne r1, r3 + 8001632: 4610 movne r0, r2 + 8001634: ea7f 5c65 mvnseq.w ip, r5, asr #21 + 8001638: bf1c itt ne + 800163a: 460b movne r3, r1 + 800163c: 4602 movne r2, r0 + 800163e: ea50 3401 orrs.w r4, r0, r1, lsl #12 + 8001642: bf06 itte eq + 8001644: ea52 3503 orrseq.w r5, r2, r3, lsl #12 + 8001648: ea91 0f03 teqeq r1, r3 + 800164c: f441 2100 orrne.w r1, r1, #524288 ; 0x80000 + 8001650: bd30 pop {r4, r5, pc} + 8001652: bf00 nop + +08001654 <__aeabi_ui2d>: + 8001654: f090 0f00 teq r0, #0 + 8001658: bf04 itt eq + 800165a: 2100 moveq r1, #0 + 800165c: 4770 bxeq lr + 800165e: b530 push {r4, r5, lr} + 8001660: f44f 6480 mov.w r4, #1024 ; 0x400 + 8001664: f104 0432 add.w r4, r4, #50 ; 0x32 + 8001668: f04f 0500 mov.w r5, #0 + 800166c: f04f 0100 mov.w r1, #0 + 8001670: e750 b.n 8001514 <__adddf3+0x138> + 8001672: bf00 nop + +08001674 <__aeabi_i2d>: + 8001674: f090 0f00 teq r0, #0 + 8001678: bf04 itt eq + 800167a: 2100 moveq r1, #0 + 800167c: 4770 bxeq lr + 800167e: b530 push {r4, r5, lr} + 8001680: f44f 6480 mov.w r4, #1024 ; 0x400 + 8001684: f104 0432 add.w r4, r4, #50 ; 0x32 + 8001688: f010 4500 ands.w r5, r0, #2147483648 ; 0x80000000 + 800168c: bf48 it mi + 800168e: 4240 negmi r0, r0 + 8001690: f04f 0100 mov.w r1, #0 + 8001694: e73e b.n 8001514 <__adddf3+0x138> + 8001696: bf00 nop + +08001698 <__aeabi_f2d>: + 8001698: 0042 lsls r2, r0, #1 + 800169a: ea4f 01e2 mov.w r1, r2, asr #3 + 800169e: ea4f 0131 mov.w r1, r1, rrx + 80016a2: ea4f 7002 mov.w r0, r2, lsl #28 + 80016a6: bf1f itttt ne + 80016a8: f012 437f andsne.w r3, r2, #4278190080 ; 0xff000000 + 80016ac: f093 4f7f teqne r3, #4278190080 ; 0xff000000 + 80016b0: f081 5160 eorne.w r1, r1, #939524096 ; 0x38000000 + 80016b4: 4770 bxne lr + 80016b6: f032 427f bics.w r2, r2, #4278190080 ; 0xff000000 + 80016ba: bf08 it eq + 80016bc: 4770 bxeq lr + 80016be: f093 4f7f teq r3, #4278190080 ; 0xff000000 + 80016c2: bf04 itt eq + 80016c4: f441 2100 orreq.w r1, r1, #524288 ; 0x80000 + 80016c8: 4770 bxeq lr + 80016ca: b530 push {r4, r5, lr} + 80016cc: f44f 7460 mov.w r4, #896 ; 0x380 + 80016d0: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000 + 80016d4: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 80016d8: e71c b.n 8001514 <__adddf3+0x138> + 80016da: bf00 nop + +080016dc <__aeabi_ul2d>: + 80016dc: ea50 0201 orrs.w r2, r0, r1 + 80016e0: bf08 it eq + 80016e2: 4770 bxeq lr + 80016e4: b530 push {r4, r5, lr} + 80016e6: f04f 0500 mov.w r5, #0 + 80016ea: e00a b.n 8001702 <__aeabi_l2d+0x16> + +080016ec <__aeabi_l2d>: + 80016ec: ea50 0201 orrs.w r2, r0, r1 + 80016f0: bf08 it eq + 80016f2: 4770 bxeq lr + 80016f4: b530 push {r4, r5, lr} + 80016f6: f011 4500 ands.w r5, r1, #2147483648 ; 0x80000000 + 80016fa: d502 bpl.n 8001702 <__aeabi_l2d+0x16> + 80016fc: 4240 negs r0, r0 + 80016fe: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 8001702: f44f 6480 mov.w r4, #1024 ; 0x400 + 8001706: f104 0432 add.w r4, r4, #50 ; 0x32 + 800170a: ea5f 5c91 movs.w ip, r1, lsr #22 + 800170e: f43f aed8 beq.w 80014c2 <__adddf3+0xe6> + 8001712: f04f 0203 mov.w r2, #3 + 8001716: ea5f 0cdc movs.w ip, ip, lsr #3 + 800171a: bf18 it ne + 800171c: 3203 addne r2, #3 + 800171e: ea5f 0cdc movs.w ip, ip, lsr #3 + 8001722: bf18 it ne + 8001724: 3203 addne r2, #3 + 8001726: eb02 02dc add.w r2, r2, ip, lsr #3 + 800172a: f1c2 0320 rsb r3, r2, #32 + 800172e: fa00 fc03 lsl.w ip, r0, r3 + 8001732: fa20 f002 lsr.w r0, r0, r2 + 8001736: fa01 fe03 lsl.w lr, r1, r3 + 800173a: ea40 000e orr.w r0, r0, lr + 800173e: fa21 f102 lsr.w r1, r1, r2 + 8001742: 4414 add r4, r2 + 8001744: e6bd b.n 80014c2 <__adddf3+0xe6> + 8001746: bf00 nop + +08001748 <__gedf2>: + 8001748: f04f 3cff mov.w ip, #4294967295 + 800174c: e006 b.n 800175c <__cmpdf2+0x4> + 800174e: bf00 nop + +08001750 <__ledf2>: + 8001750: f04f 0c01 mov.w ip, #1 + 8001754: e002 b.n 800175c <__cmpdf2+0x4> + 8001756: bf00 nop + +08001758 <__cmpdf2>: + 8001758: f04f 0c01 mov.w ip, #1 + 800175c: f84d cd04 str.w ip, [sp, #-4]! + 8001760: ea4f 0c41 mov.w ip, r1, lsl #1 + 8001764: ea7f 5c6c mvns.w ip, ip, asr #21 + 8001768: ea4f 0c43 mov.w ip, r3, lsl #1 + 800176c: bf18 it ne + 800176e: ea7f 5c6c mvnsne.w ip, ip, asr #21 + 8001772: d01b beq.n 80017ac <__cmpdf2+0x54> + 8001774: b001 add sp, #4 + 8001776: ea50 0c41 orrs.w ip, r0, r1, lsl #1 + 800177a: bf0c ite eq + 800177c: ea52 0c43 orrseq.w ip, r2, r3, lsl #1 + 8001780: ea91 0f03 teqne r1, r3 + 8001784: bf02 ittt eq + 8001786: ea90 0f02 teqeq r0, r2 + 800178a: 2000 moveq r0, #0 + 800178c: 4770 bxeq lr + 800178e: f110 0f00 cmn.w r0, #0 + 8001792: ea91 0f03 teq r1, r3 + 8001796: bf58 it pl + 8001798: 4299 cmppl r1, r3 + 800179a: bf08 it eq + 800179c: 4290 cmpeq r0, r2 + 800179e: bf2c ite cs + 80017a0: 17d8 asrcs r0, r3, #31 + 80017a2: ea6f 70e3 mvncc.w r0, r3, asr #31 + 80017a6: f040 0001 orr.w r0, r0, #1 + 80017aa: 4770 bx lr + 80017ac: ea4f 0c41 mov.w ip, r1, lsl #1 + 80017b0: ea7f 5c6c mvns.w ip, ip, asr #21 + 80017b4: d102 bne.n 80017bc <__cmpdf2+0x64> + 80017b6: ea50 3c01 orrs.w ip, r0, r1, lsl #12 + 80017ba: d107 bne.n 80017cc <__cmpdf2+0x74> + 80017bc: ea4f 0c43 mov.w ip, r3, lsl #1 + 80017c0: ea7f 5c6c mvns.w ip, ip, asr #21 + 80017c4: d1d6 bne.n 8001774 <__cmpdf2+0x1c> + 80017c6: ea52 3c03 orrs.w ip, r2, r3, lsl #12 + 80017ca: d0d3 beq.n 8001774 <__cmpdf2+0x1c> + 80017cc: f85d 0b04 ldr.w r0, [sp], #4 + 80017d0: 4770 bx lr + 80017d2: bf00 nop + +080017d4 <__aeabi_cdrcmple>: + 80017d4: 4684 mov ip, r0 + 80017d6: 4610 mov r0, r2 + 80017d8: 4662 mov r2, ip + 80017da: 468c mov ip, r1 + 80017dc: 4619 mov r1, r3 + 80017de: 4663 mov r3, ip + 80017e0: e000 b.n 80017e4 <__aeabi_cdcmpeq> + 80017e2: bf00 nop + +080017e4 <__aeabi_cdcmpeq>: + 80017e4: b501 push {r0, lr} + 80017e6: f7ff ffb7 bl 8001758 <__cmpdf2> + 80017ea: 2800 cmp r0, #0 + 80017ec: bf48 it mi + 80017ee: f110 0f00 cmnmi.w r0, #0 + 80017f2: bd01 pop {r0, pc} + +080017f4 <__aeabi_dcmpeq>: + 80017f4: f84d ed08 str.w lr, [sp, #-8]! + 80017f8: f7ff fff4 bl 80017e4 <__aeabi_cdcmpeq> + 80017fc: bf0c ite eq + 80017fe: 2001 moveq r0, #1 + 8001800: 2000 movne r0, #0 + 8001802: f85d fb08 ldr.w pc, [sp], #8 + 8001806: bf00 nop + +08001808 <__aeabi_dcmplt>: + 8001808: f84d ed08 str.w lr, [sp, #-8]! + 800180c: f7ff ffea bl 80017e4 <__aeabi_cdcmpeq> + 8001810: bf34 ite cc + 8001812: 2001 movcc r0, #1 + 8001814: 2000 movcs r0, #0 + 8001816: f85d fb08 ldr.w pc, [sp], #8 + 800181a: bf00 nop + +0800181c <__aeabi_dcmple>: + 800181c: f84d ed08 str.w lr, [sp, #-8]! + 8001820: f7ff ffe0 bl 80017e4 <__aeabi_cdcmpeq> + 8001824: bf94 ite ls + 8001826: 2001 movls r0, #1 + 8001828: 2000 movhi r0, #0 + 800182a: f85d fb08 ldr.w pc, [sp], #8 + 800182e: bf00 nop + +08001830 <__aeabi_dcmpge>: + 8001830: f84d ed08 str.w lr, [sp, #-8]! + 8001834: f7ff ffce bl 80017d4 <__aeabi_cdrcmple> + 8001838: bf94 ite ls + 800183a: 2001 movls r0, #1 + 800183c: 2000 movhi r0, #0 + 800183e: f85d fb08 ldr.w pc, [sp], #8 + 8001842: bf00 nop + +08001844 <__aeabi_dcmpgt>: + 8001844: f84d ed08 str.w lr, [sp, #-8]! + 8001848: f7ff ffc4 bl 80017d4 <__aeabi_cdrcmple> + 800184c: bf34 ite cc + 800184e: 2001 movcc r0, #1 + 8001850: 2000 movcs r0, #0 + 8001852: f85d fb08 ldr.w pc, [sp], #8 + 8001856: bf00 nop + +08001858 <__aeabi_d2iz>: + 8001858: ea4f 0241 mov.w r2, r1, lsl #1 + 800185c: f512 1200 adds.w r2, r2, #2097152 ; 0x200000 + 8001860: d215 bcs.n 800188e <__aeabi_d2iz+0x36> + 8001862: d511 bpl.n 8001888 <__aeabi_d2iz+0x30> + 8001864: f46f 7378 mvn.w r3, #992 ; 0x3e0 + 8001868: ebb3 5262 subs.w r2, r3, r2, asr #21 + 800186c: d912 bls.n 8001894 <__aeabi_d2iz+0x3c> + 800186e: ea4f 23c1 mov.w r3, r1, lsl #11 + 8001872: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000 + 8001876: ea43 5350 orr.w r3, r3, r0, lsr #21 + 800187a: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 + 800187e: fa23 f002 lsr.w r0, r3, r2 + 8001882: bf18 it ne + 8001884: 4240 negne r0, r0 + 8001886: 4770 bx lr + 8001888: f04f 0000 mov.w r0, #0 + 800188c: 4770 bx lr + 800188e: ea50 3001 orrs.w r0, r0, r1, lsl #12 + 8001892: d105 bne.n 80018a0 <__aeabi_d2iz+0x48> + 8001894: f011 4000 ands.w r0, r1, #2147483648 ; 0x80000000 + 8001898: bf08 it eq + 800189a: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000 + 800189e: 4770 bx lr + 80018a0: f04f 0000 mov.w r0, #0 + 80018a4: 4770 bx lr + 80018a6: bf00 nop + +080018a8 <__aeabi_frsub>: + 80018a8: f080 4000 eor.w r0, r0, #2147483648 ; 0x80000000 + 80018ac: e002 b.n 80018b4 <__addsf3> + 80018ae: bf00 nop + +080018b0 <__aeabi_fsub>: + 80018b0: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000 + +080018b4 <__addsf3>: + 80018b4: 0042 lsls r2, r0, #1 + 80018b6: bf1f itttt ne + 80018b8: ea5f 0341 movsne.w r3, r1, lsl #1 + 80018bc: ea92 0f03 teqne r2, r3 + 80018c0: ea7f 6c22 mvnsne.w ip, r2, asr #24 + 80018c4: ea7f 6c23 mvnsne.w ip, r3, asr #24 + 80018c8: d06a beq.n 80019a0 <__addsf3+0xec> + 80018ca: ea4f 6212 mov.w r2, r2, lsr #24 + 80018ce: ebd2 6313 rsbs r3, r2, r3, lsr #24 + 80018d2: bfc1 itttt gt + 80018d4: 18d2 addgt r2, r2, r3 + 80018d6: 4041 eorgt r1, r0 + 80018d8: 4048 eorgt r0, r1 + 80018da: 4041 eorgt r1, r0 + 80018dc: bfb8 it lt + 80018de: 425b neglt r3, r3 + 80018e0: 2b19 cmp r3, #25 + 80018e2: bf88 it hi + 80018e4: 4770 bxhi lr + 80018e6: f010 4f00 tst.w r0, #2147483648 ; 0x80000000 + 80018ea: f440 0000 orr.w r0, r0, #8388608 ; 0x800000 + 80018ee: f020 407f bic.w r0, r0, #4278190080 ; 0xff000000 + 80018f2: bf18 it ne + 80018f4: 4240 negne r0, r0 + 80018f6: f011 4f00 tst.w r1, #2147483648 ; 0x80000000 + 80018fa: f441 0100 orr.w r1, r1, #8388608 ; 0x800000 + 80018fe: f021 417f bic.w r1, r1, #4278190080 ; 0xff000000 + 8001902: bf18 it ne + 8001904: 4249 negne r1, r1 + 8001906: ea92 0f03 teq r2, r3 + 800190a: d03f beq.n 800198c <__addsf3+0xd8> + 800190c: f1a2 0201 sub.w r2, r2, #1 + 8001910: fa41 fc03 asr.w ip, r1, r3 + 8001914: eb10 000c adds.w r0, r0, ip + 8001918: f1c3 0320 rsb r3, r3, #32 + 800191c: fa01 f103 lsl.w r1, r1, r3 + 8001920: f000 4300 and.w r3, r0, #2147483648 ; 0x80000000 + 8001924: d502 bpl.n 800192c <__addsf3+0x78> + 8001926: 4249 negs r1, r1 + 8001928: eb60 0040 sbc.w r0, r0, r0, lsl #1 + 800192c: f5b0 0f00 cmp.w r0, #8388608 ; 0x800000 + 8001930: d313 bcc.n 800195a <__addsf3+0xa6> + 8001932: f1b0 7f80 cmp.w r0, #16777216 ; 0x1000000 + 8001936: d306 bcc.n 8001946 <__addsf3+0x92> + 8001938: 0840 lsrs r0, r0, #1 + 800193a: ea4f 0131 mov.w r1, r1, rrx + 800193e: f102 0201 add.w r2, r2, #1 + 8001942: 2afe cmp r2, #254 ; 0xfe + 8001944: d251 bcs.n 80019ea <__addsf3+0x136> + 8001946: f1b1 4f00 cmp.w r1, #2147483648 ; 0x80000000 + 800194a: eb40 50c2 adc.w r0, r0, r2, lsl #23 + 800194e: bf08 it eq + 8001950: f020 0001 biceq.w r0, r0, #1 + 8001954: ea40 0003 orr.w r0, r0, r3 + 8001958: 4770 bx lr + 800195a: 0049 lsls r1, r1, #1 + 800195c: eb40 0000 adc.w r0, r0, r0 + 8001960: 3a01 subs r2, #1 + 8001962: bf28 it cs + 8001964: f5b0 0f00 cmpcs.w r0, #8388608 ; 0x800000 + 8001968: d2ed bcs.n 8001946 <__addsf3+0x92> + 800196a: fab0 fc80 clz ip, r0 + 800196e: f1ac 0c08 sub.w ip, ip, #8 + 8001972: ebb2 020c subs.w r2, r2, ip + 8001976: fa00 f00c lsl.w r0, r0, ip + 800197a: bfaa itet ge + 800197c: eb00 50c2 addge.w r0, r0, r2, lsl #23 + 8001980: 4252 neglt r2, r2 + 8001982: 4318 orrge r0, r3 + 8001984: bfbc itt lt + 8001986: 40d0 lsrlt r0, r2 + 8001988: 4318 orrlt r0, r3 + 800198a: 4770 bx lr + 800198c: f092 0f00 teq r2, #0 + 8001990: f481 0100 eor.w r1, r1, #8388608 ; 0x800000 + 8001994: bf06 itte eq + 8001996: f480 0000 eoreq.w r0, r0, #8388608 ; 0x800000 + 800199a: 3201 addeq r2, #1 + 800199c: 3b01 subne r3, #1 + 800199e: e7b5 b.n 800190c <__addsf3+0x58> + 80019a0: ea4f 0341 mov.w r3, r1, lsl #1 + 80019a4: ea7f 6c22 mvns.w ip, r2, asr #24 + 80019a8: bf18 it ne + 80019aa: ea7f 6c23 mvnsne.w ip, r3, asr #24 + 80019ae: d021 beq.n 80019f4 <__addsf3+0x140> + 80019b0: ea92 0f03 teq r2, r3 + 80019b4: d004 beq.n 80019c0 <__addsf3+0x10c> + 80019b6: f092 0f00 teq r2, #0 + 80019ba: bf08 it eq + 80019bc: 4608 moveq r0, r1 + 80019be: 4770 bx lr + 80019c0: ea90 0f01 teq r0, r1 + 80019c4: bf1c itt ne + 80019c6: 2000 movne r0, #0 + 80019c8: 4770 bxne lr + 80019ca: f012 4f7f tst.w r2, #4278190080 ; 0xff000000 + 80019ce: d104 bne.n 80019da <__addsf3+0x126> + 80019d0: 0040 lsls r0, r0, #1 + 80019d2: bf28 it cs + 80019d4: f040 4000 orrcs.w r0, r0, #2147483648 ; 0x80000000 + 80019d8: 4770 bx lr + 80019da: f112 7200 adds.w r2, r2, #33554432 ; 0x2000000 + 80019de: bf3c itt cc + 80019e0: f500 0000 addcc.w r0, r0, #8388608 ; 0x800000 + 80019e4: 4770 bxcc lr + 80019e6: f000 4300 and.w r3, r0, #2147483648 ; 0x80000000 + 80019ea: f043 40fe orr.w r0, r3, #2130706432 ; 0x7f000000 + 80019ee: f440 0000 orr.w r0, r0, #8388608 ; 0x800000 + 80019f2: 4770 bx lr + 80019f4: ea7f 6222 mvns.w r2, r2, asr #24 + 80019f8: bf16 itet ne + 80019fa: 4608 movne r0, r1 + 80019fc: ea7f 6323 mvnseq.w r3, r3, asr #24 + 8001a00: 4601 movne r1, r0 + 8001a02: 0242 lsls r2, r0, #9 + 8001a04: bf06 itte eq + 8001a06: ea5f 2341 movseq.w r3, r1, lsl #9 + 8001a0a: ea90 0f01 teqeq r0, r1 + 8001a0e: f440 0080 orrne.w r0, r0, #4194304 ; 0x400000 + 8001a12: 4770 bx lr + +08001a14 <__aeabi_ui2f>: + 8001a14: f04f 0300 mov.w r3, #0 + 8001a18: e004 b.n 8001a24 <__aeabi_i2f+0x8> + 8001a1a: bf00 nop + +08001a1c <__aeabi_i2f>: + 8001a1c: f010 4300 ands.w r3, r0, #2147483648 ; 0x80000000 + 8001a20: bf48 it mi + 8001a22: 4240 negmi r0, r0 + 8001a24: ea5f 0c00 movs.w ip, r0 + 8001a28: bf08 it eq + 8001a2a: 4770 bxeq lr + 8001a2c: f043 4396 orr.w r3, r3, #1258291200 ; 0x4b000000 + 8001a30: 4601 mov r1, r0 + 8001a32: f04f 0000 mov.w r0, #0 + 8001a36: e01c b.n 8001a72 <__aeabi_l2f+0x2a> + +08001a38 <__aeabi_ul2f>: + 8001a38: ea50 0201 orrs.w r2, r0, r1 + 8001a3c: bf08 it eq + 8001a3e: 4770 bxeq lr + 8001a40: f04f 0300 mov.w r3, #0 + 8001a44: e00a b.n 8001a5c <__aeabi_l2f+0x14> + 8001a46: bf00 nop + +08001a48 <__aeabi_l2f>: + 8001a48: ea50 0201 orrs.w r2, r0, r1 + 8001a4c: bf08 it eq + 8001a4e: 4770 bxeq lr + 8001a50: f011 4300 ands.w r3, r1, #2147483648 ; 0x80000000 + 8001a54: d502 bpl.n 8001a5c <__aeabi_l2f+0x14> + 8001a56: 4240 negs r0, r0 + 8001a58: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 8001a5c: ea5f 0c01 movs.w ip, r1 + 8001a60: bf02 ittt eq + 8001a62: 4684 moveq ip, r0 + 8001a64: 4601 moveq r1, r0 + 8001a66: 2000 moveq r0, #0 + 8001a68: f043 43b6 orr.w r3, r3, #1526726656 ; 0x5b000000 + 8001a6c: bf08 it eq + 8001a6e: f1a3 5380 subeq.w r3, r3, #268435456 ; 0x10000000 + 8001a72: f5a3 0300 sub.w r3, r3, #8388608 ; 0x800000 + 8001a76: fabc f28c clz r2, ip + 8001a7a: 3a08 subs r2, #8 + 8001a7c: eba3 53c2 sub.w r3, r3, r2, lsl #23 + 8001a80: db10 blt.n 8001aa4 <__aeabi_l2f+0x5c> + 8001a82: fa01 fc02 lsl.w ip, r1, r2 + 8001a86: 4463 add r3, ip + 8001a88: fa00 fc02 lsl.w ip, r0, r2 + 8001a8c: f1c2 0220 rsb r2, r2, #32 + 8001a90: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000 + 8001a94: fa20 f202 lsr.w r2, r0, r2 + 8001a98: eb43 0002 adc.w r0, r3, r2 + 8001a9c: bf08 it eq + 8001a9e: f020 0001 biceq.w r0, r0, #1 + 8001aa2: 4770 bx lr + 8001aa4: f102 0220 add.w r2, r2, #32 + 8001aa8: fa01 fc02 lsl.w ip, r1, r2 + 8001aac: f1c2 0220 rsb r2, r2, #32 + 8001ab0: ea50 004c orrs.w r0, r0, ip, lsl #1 + 8001ab4: fa21 f202 lsr.w r2, r1, r2 + 8001ab8: eb43 0002 adc.w r0, r3, r2 + 8001abc: bf08 it eq + 8001abe: ea20 70dc biceq.w r0, r0, ip, lsr #31 + 8001ac2: 4770 bx lr + +08001ac4 <__aeabi_f2iz>: + 8001ac4: ea4f 0240 mov.w r2, r0, lsl #1 + 8001ac8: f1b2 4ffe cmp.w r2, #2130706432 ; 0x7f000000 + 8001acc: d30f bcc.n 8001aee <__aeabi_f2iz+0x2a> + 8001ace: f04f 039e mov.w r3, #158 ; 0x9e + 8001ad2: ebb3 6212 subs.w r2, r3, r2, lsr #24 + 8001ad6: d90d bls.n 8001af4 <__aeabi_f2iz+0x30> + 8001ad8: ea4f 2300 mov.w r3, r0, lsl #8 + 8001adc: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000 + 8001ae0: f010 4f00 tst.w r0, #2147483648 ; 0x80000000 + 8001ae4: fa23 f002 lsr.w r0, r3, r2 + 8001ae8: bf18 it ne + 8001aea: 4240 negne r0, r0 + 8001aec: 4770 bx lr + 8001aee: f04f 0000 mov.w r0, #0 + 8001af2: 4770 bx lr + 8001af4: f112 0f61 cmn.w r2, #97 ; 0x61 + 8001af8: d101 bne.n 8001afe <__aeabi_f2iz+0x3a> + 8001afa: 0242 lsls r2, r0, #9 + 8001afc: d105 bne.n 8001b0a <__aeabi_f2iz+0x46> + 8001afe: f010 4000 ands.w r0, r0, #2147483648 ; 0x80000000 + 8001b02: bf08 it eq + 8001b04: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000 + 8001b08: 4770 bx lr + 8001b0a: f04f 0000 mov.w r0, #0 + 8001b0e: 4770 bx lr + +08001b10 <__aeabi_uldivmod>: + 8001b10: b953 cbnz r3, 8001b28 <__aeabi_uldivmod+0x18> + 8001b12: b94a cbnz r2, 8001b28 <__aeabi_uldivmod+0x18> + 8001b14: 2900 cmp r1, #0 + 8001b16: bf08 it eq + 8001b18: 2800 cmpeq r0, #0 + 8001b1a: bf1c itt ne + 8001b1c: f04f 31ff movne.w r1, #4294967295 + 8001b20: f04f 30ff movne.w r0, #4294967295 + 8001b24: f000 b970 b.w 8001e08 <__aeabi_idiv0> + 8001b28: f1ad 0c08 sub.w ip, sp, #8 + 8001b2c: e96d ce04 strd ip, lr, [sp, #-16]! + 8001b30: f000 f806 bl 8001b40 <__udivmoddi4> + 8001b34: f8dd e004 ldr.w lr, [sp, #4] + 8001b38: e9dd 2302 ldrd r2, r3, [sp, #8] + 8001b3c: b004 add sp, #16 + 8001b3e: 4770 bx lr + +08001b40 <__udivmoddi4>: + 8001b40: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8001b44: 9e08 ldr r6, [sp, #32] + 8001b46: 460d mov r5, r1 + 8001b48: 4604 mov r4, r0 + 8001b4a: 460f mov r7, r1 + 8001b4c: 2b00 cmp r3, #0 + 8001b4e: d14a bne.n 8001be6 <__udivmoddi4+0xa6> + 8001b50: 428a cmp r2, r1 + 8001b52: 4694 mov ip, r2 + 8001b54: d965 bls.n 8001c22 <__udivmoddi4+0xe2> + 8001b56: fab2 f382 clz r3, r2 + 8001b5a: b143 cbz r3, 8001b6e <__udivmoddi4+0x2e> + 8001b5c: fa02 fc03 lsl.w ip, r2, r3 + 8001b60: f1c3 0220 rsb r2, r3, #32 + 8001b64: 409f lsls r7, r3 + 8001b66: fa20 f202 lsr.w r2, r0, r2 + 8001b6a: 4317 orrs r7, r2 + 8001b6c: 409c lsls r4, r3 + 8001b6e: ea4f 4e1c mov.w lr, ip, lsr #16 + 8001b72: fa1f f58c uxth.w r5, ip + 8001b76: fbb7 f1fe udiv r1, r7, lr + 8001b7a: 0c22 lsrs r2, r4, #16 + 8001b7c: fb0e 7711 mls r7, lr, r1, r7 + 8001b80: ea42 4207 orr.w r2, r2, r7, lsl #16 + 8001b84: fb01 f005 mul.w r0, r1, r5 + 8001b88: 4290 cmp r0, r2 + 8001b8a: d90a bls.n 8001ba2 <__udivmoddi4+0x62> + 8001b8c: eb1c 0202 adds.w r2, ip, r2 + 8001b90: f101 37ff add.w r7, r1, #4294967295 + 8001b94: f080 811b bcs.w 8001dce <__udivmoddi4+0x28e> + 8001b98: 4290 cmp r0, r2 + 8001b9a: f240 8118 bls.w 8001dce <__udivmoddi4+0x28e> + 8001b9e: 3902 subs r1, #2 + 8001ba0: 4462 add r2, ip + 8001ba2: 1a12 subs r2, r2, r0 + 8001ba4: b2a4 uxth r4, r4 + 8001ba6: fbb2 f0fe udiv r0, r2, lr + 8001baa: fb0e 2210 mls r2, lr, r0, r2 + 8001bae: ea44 4402 orr.w r4, r4, r2, lsl #16 + 8001bb2: fb00 f505 mul.w r5, r0, r5 + 8001bb6: 42a5 cmp r5, r4 + 8001bb8: d90a bls.n 8001bd0 <__udivmoddi4+0x90> + 8001bba: eb1c 0404 adds.w r4, ip, r4 + 8001bbe: f100 32ff add.w r2, r0, #4294967295 + 8001bc2: f080 8106 bcs.w 8001dd2 <__udivmoddi4+0x292> + 8001bc6: 42a5 cmp r5, r4 + 8001bc8: f240 8103 bls.w 8001dd2 <__udivmoddi4+0x292> + 8001bcc: 4464 add r4, ip + 8001bce: 3802 subs r0, #2 + 8001bd0: ea40 4001 orr.w r0, r0, r1, lsl #16 + 8001bd4: 1b64 subs r4, r4, r5 + 8001bd6: 2100 movs r1, #0 + 8001bd8: b11e cbz r6, 8001be2 <__udivmoddi4+0xa2> + 8001bda: 40dc lsrs r4, r3 + 8001bdc: 2300 movs r3, #0 + 8001bde: e9c6 4300 strd r4, r3, [r6] + 8001be2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8001be6: 428b cmp r3, r1 + 8001be8: d908 bls.n 8001bfc <__udivmoddi4+0xbc> + 8001bea: 2e00 cmp r6, #0 + 8001bec: f000 80ec beq.w 8001dc8 <__udivmoddi4+0x288> + 8001bf0: 2100 movs r1, #0 + 8001bf2: e9c6 0500 strd r0, r5, [r6] + 8001bf6: 4608 mov r0, r1 + 8001bf8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8001bfc: fab3 f183 clz r1, r3 + 8001c00: 2900 cmp r1, #0 + 8001c02: d149 bne.n 8001c98 <__udivmoddi4+0x158> + 8001c04: 42ab cmp r3, r5 + 8001c06: d302 bcc.n 8001c0e <__udivmoddi4+0xce> + 8001c08: 4282 cmp r2, r0 + 8001c0a: f200 80f7 bhi.w 8001dfc <__udivmoddi4+0x2bc> + 8001c0e: 1a84 subs r4, r0, r2 + 8001c10: eb65 0203 sbc.w r2, r5, r3 + 8001c14: 2001 movs r0, #1 + 8001c16: 4617 mov r7, r2 + 8001c18: 2e00 cmp r6, #0 + 8001c1a: d0e2 beq.n 8001be2 <__udivmoddi4+0xa2> + 8001c1c: e9c6 4700 strd r4, r7, [r6] + 8001c20: e7df b.n 8001be2 <__udivmoddi4+0xa2> + 8001c22: b902 cbnz r2, 8001c26 <__udivmoddi4+0xe6> + 8001c24: deff udf #255 ; 0xff + 8001c26: fab2 f382 clz r3, r2 + 8001c2a: 2b00 cmp r3, #0 + 8001c2c: f040 808f bne.w 8001d4e <__udivmoddi4+0x20e> + 8001c30: 1a8a subs r2, r1, r2 + 8001c32: ea4f 471c mov.w r7, ip, lsr #16 + 8001c36: fa1f fe8c uxth.w lr, ip + 8001c3a: 2101 movs r1, #1 + 8001c3c: fbb2 f5f7 udiv r5, r2, r7 + 8001c40: fb07 2015 mls r0, r7, r5, r2 + 8001c44: 0c22 lsrs r2, r4, #16 + 8001c46: ea42 4200 orr.w r2, r2, r0, lsl #16 + 8001c4a: fb0e f005 mul.w r0, lr, r5 + 8001c4e: 4290 cmp r0, r2 + 8001c50: d908 bls.n 8001c64 <__udivmoddi4+0x124> + 8001c52: eb1c 0202 adds.w r2, ip, r2 + 8001c56: f105 38ff add.w r8, r5, #4294967295 + 8001c5a: d202 bcs.n 8001c62 <__udivmoddi4+0x122> + 8001c5c: 4290 cmp r0, r2 + 8001c5e: f200 80ca bhi.w 8001df6 <__udivmoddi4+0x2b6> + 8001c62: 4645 mov r5, r8 + 8001c64: 1a12 subs r2, r2, r0 + 8001c66: b2a4 uxth r4, r4 + 8001c68: fbb2 f0f7 udiv r0, r2, r7 + 8001c6c: fb07 2210 mls r2, r7, r0, r2 + 8001c70: ea44 4402 orr.w r4, r4, r2, lsl #16 + 8001c74: fb0e fe00 mul.w lr, lr, r0 + 8001c78: 45a6 cmp lr, r4 + 8001c7a: d908 bls.n 8001c8e <__udivmoddi4+0x14e> + 8001c7c: eb1c 0404 adds.w r4, ip, r4 + 8001c80: f100 32ff add.w r2, r0, #4294967295 + 8001c84: d202 bcs.n 8001c8c <__udivmoddi4+0x14c> + 8001c86: 45a6 cmp lr, r4 + 8001c88: f200 80ba bhi.w 8001e00 <__udivmoddi4+0x2c0> + 8001c8c: 4610 mov r0, r2 + 8001c8e: eba4 040e sub.w r4, r4, lr + 8001c92: ea40 4005 orr.w r0, r0, r5, lsl #16 + 8001c96: e79f b.n 8001bd8 <__udivmoddi4+0x98> + 8001c98: f1c1 0720 rsb r7, r1, #32 + 8001c9c: 408b lsls r3, r1 + 8001c9e: fa22 fc07 lsr.w ip, r2, r7 + 8001ca2: ea4c 0c03 orr.w ip, ip, r3 + 8001ca6: fa05 f401 lsl.w r4, r5, r1 + 8001caa: fa20 f307 lsr.w r3, r0, r7 + 8001cae: 40fd lsrs r5, r7 + 8001cb0: 4323 orrs r3, r4 + 8001cb2: fa00 f901 lsl.w r9, r0, r1 + 8001cb6: ea4f 401c mov.w r0, ip, lsr #16 + 8001cba: fa1f fe8c uxth.w lr, ip + 8001cbe: fbb5 f8f0 udiv r8, r5, r0 + 8001cc2: 0c1c lsrs r4, r3, #16 + 8001cc4: fb00 5518 mls r5, r0, r8, r5 + 8001cc8: ea44 4405 orr.w r4, r4, r5, lsl #16 + 8001ccc: fb08 f50e mul.w r5, r8, lr + 8001cd0: 42a5 cmp r5, r4 + 8001cd2: fa02 f201 lsl.w r2, r2, r1 + 8001cd6: d90b bls.n 8001cf0 <__udivmoddi4+0x1b0> + 8001cd8: eb1c 0404 adds.w r4, ip, r4 + 8001cdc: f108 3aff add.w sl, r8, #4294967295 + 8001ce0: f080 8087 bcs.w 8001df2 <__udivmoddi4+0x2b2> + 8001ce4: 42a5 cmp r5, r4 + 8001ce6: f240 8084 bls.w 8001df2 <__udivmoddi4+0x2b2> + 8001cea: f1a8 0802 sub.w r8, r8, #2 + 8001cee: 4464 add r4, ip + 8001cf0: 1b64 subs r4, r4, r5 + 8001cf2: b29d uxth r5, r3 + 8001cf4: fbb4 f3f0 udiv r3, r4, r0 + 8001cf8: fb00 4413 mls r4, r0, r3, r4 + 8001cfc: ea45 4404 orr.w r4, r5, r4, lsl #16 + 8001d00: fb03 fe0e mul.w lr, r3, lr + 8001d04: 45a6 cmp lr, r4 + 8001d06: d908 bls.n 8001d1a <__udivmoddi4+0x1da> + 8001d08: eb1c 0404 adds.w r4, ip, r4 + 8001d0c: f103 30ff add.w r0, r3, #4294967295 + 8001d10: d26b bcs.n 8001dea <__udivmoddi4+0x2aa> + 8001d12: 45a6 cmp lr, r4 + 8001d14: d969 bls.n 8001dea <__udivmoddi4+0x2aa> + 8001d16: 3b02 subs r3, #2 + 8001d18: 4464 add r4, ip + 8001d1a: ea43 4008 orr.w r0, r3, r8, lsl #16 + 8001d1e: fba0 8302 umull r8, r3, r0, r2 + 8001d22: eba4 040e sub.w r4, r4, lr + 8001d26: 429c cmp r4, r3 + 8001d28: 46c6 mov lr, r8 + 8001d2a: 461d mov r5, r3 + 8001d2c: d355 bcc.n 8001dda <__udivmoddi4+0x29a> + 8001d2e: d052 beq.n 8001dd6 <__udivmoddi4+0x296> + 8001d30: b156 cbz r6, 8001d48 <__udivmoddi4+0x208> + 8001d32: ebb9 030e subs.w r3, r9, lr + 8001d36: eb64 0405 sbc.w r4, r4, r5 + 8001d3a: fa04 f707 lsl.w r7, r4, r7 + 8001d3e: 40cb lsrs r3, r1 + 8001d40: 40cc lsrs r4, r1 + 8001d42: 431f orrs r7, r3 + 8001d44: e9c6 7400 strd r7, r4, [r6] + 8001d48: 2100 movs r1, #0 + 8001d4a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8001d4e: f1c3 0120 rsb r1, r3, #32 + 8001d52: fa02 fc03 lsl.w ip, r2, r3 + 8001d56: fa20 f201 lsr.w r2, r0, r1 + 8001d5a: fa25 f101 lsr.w r1, r5, r1 + 8001d5e: 409d lsls r5, r3 + 8001d60: 432a orrs r2, r5 + 8001d62: ea4f 471c mov.w r7, ip, lsr #16 + 8001d66: fa1f fe8c uxth.w lr, ip + 8001d6a: fbb1 f0f7 udiv r0, r1, r7 + 8001d6e: fb07 1510 mls r5, r7, r0, r1 + 8001d72: 0c11 lsrs r1, r2, #16 + 8001d74: ea41 4105 orr.w r1, r1, r5, lsl #16 + 8001d78: fb00 f50e mul.w r5, r0, lr + 8001d7c: 428d cmp r5, r1 + 8001d7e: fa04 f403 lsl.w r4, r4, r3 + 8001d82: d908 bls.n 8001d96 <__udivmoddi4+0x256> + 8001d84: eb1c 0101 adds.w r1, ip, r1 + 8001d88: f100 38ff add.w r8, r0, #4294967295 + 8001d8c: d22f bcs.n 8001dee <__udivmoddi4+0x2ae> + 8001d8e: 428d cmp r5, r1 + 8001d90: d92d bls.n 8001dee <__udivmoddi4+0x2ae> + 8001d92: 3802 subs r0, #2 + 8001d94: 4461 add r1, ip + 8001d96: 1b49 subs r1, r1, r5 + 8001d98: b292 uxth r2, r2 + 8001d9a: fbb1 f5f7 udiv r5, r1, r7 + 8001d9e: fb07 1115 mls r1, r7, r5, r1 + 8001da2: ea42 4201 orr.w r2, r2, r1, lsl #16 + 8001da6: fb05 f10e mul.w r1, r5, lr + 8001daa: 4291 cmp r1, r2 + 8001dac: d908 bls.n 8001dc0 <__udivmoddi4+0x280> + 8001dae: eb1c 0202 adds.w r2, ip, r2 + 8001db2: f105 38ff add.w r8, r5, #4294967295 + 8001db6: d216 bcs.n 8001de6 <__udivmoddi4+0x2a6> + 8001db8: 4291 cmp r1, r2 + 8001dba: d914 bls.n 8001de6 <__udivmoddi4+0x2a6> + 8001dbc: 3d02 subs r5, #2 + 8001dbe: 4462 add r2, ip + 8001dc0: 1a52 subs r2, r2, r1 + 8001dc2: ea45 4100 orr.w r1, r5, r0, lsl #16 + 8001dc6: e739 b.n 8001c3c <__udivmoddi4+0xfc> + 8001dc8: 4631 mov r1, r6 + 8001dca: 4630 mov r0, r6 + 8001dcc: e709 b.n 8001be2 <__udivmoddi4+0xa2> + 8001dce: 4639 mov r1, r7 + 8001dd0: e6e7 b.n 8001ba2 <__udivmoddi4+0x62> + 8001dd2: 4610 mov r0, r2 + 8001dd4: e6fc b.n 8001bd0 <__udivmoddi4+0x90> + 8001dd6: 45c1 cmp r9, r8 + 8001dd8: d2aa bcs.n 8001d30 <__udivmoddi4+0x1f0> + 8001dda: ebb8 0e02 subs.w lr, r8, r2 + 8001dde: eb63 050c sbc.w r5, r3, ip + 8001de2: 3801 subs r0, #1 + 8001de4: e7a4 b.n 8001d30 <__udivmoddi4+0x1f0> + 8001de6: 4645 mov r5, r8 + 8001de8: e7ea b.n 8001dc0 <__udivmoddi4+0x280> + 8001dea: 4603 mov r3, r0 + 8001dec: e795 b.n 8001d1a <__udivmoddi4+0x1da> + 8001dee: 4640 mov r0, r8 + 8001df0: e7d1 b.n 8001d96 <__udivmoddi4+0x256> + 8001df2: 46d0 mov r8, sl + 8001df4: e77c b.n 8001cf0 <__udivmoddi4+0x1b0> + 8001df6: 3d02 subs r5, #2 + 8001df8: 4462 add r2, ip + 8001dfa: e733 b.n 8001c64 <__udivmoddi4+0x124> + 8001dfc: 4608 mov r0, r1 + 8001dfe: e70b b.n 8001c18 <__udivmoddi4+0xd8> + 8001e00: 4464 add r4, ip + 8001e02: 3802 subs r0, #2 + 8001e04: e743 b.n 8001c8e <__udivmoddi4+0x14e> + 8001e06: bf00 nop + +08001e08 <__aeabi_idiv0>: + 8001e08: 4770 bx lr + 8001e0a: bf00 nop + +08001e0c <MX_ADC_Init>: + 8001e0c: 4813 ldr r0, [pc, #76] ; (8001e5c <MX_ADC_Init+0x50>) + 8001e0e: 4a14 ldr r2, [pc, #80] ; (8001e60 <MX_ADC_Init+0x54>) + 8001e10: b508 push {r3, lr} + 8001e12: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 + 8001e16: e9c0 2300 strd r2, r3, [r0] + 8001e1a: 2204 movs r2, #4 + 8001e1c: 2300 movs r3, #0 + 8001e1e: 6142 str r2, [r0, #20] + 8001e20: 2201 movs r2, #1 + 8001e22: 61c2 str r2, [r0, #28] + 8001e24: f44f 5180 mov.w r1, #4096 ; 0x1000 + 8001e28: 2207 movs r2, #7 + 8001e2a: 8303 strh r3, [r0, #24] + 8001e2c: e9c0 3302 strd r3, r3, [r0, #8] + 8001e30: e9c0 3309 strd r3, r3, [r0, #36] ; 0x24 + 8001e34: e9c0 120c strd r1, r2, [r0, #48] ; 0x30 + 8001e38: 6103 str r3, [r0, #16] + 8001e3a: 7683 strb r3, [r0, #26] + 8001e3c: f880 3020 strb.w r3, [r0, #32] + 8001e40: f880 302c strb.w r3, [r0, #44] ; 0x2c + 8001e44: 6382 str r2, [r0, #56] ; 0x38 + 8001e46: f880 303c strb.w r3, [r0, #60] ; 0x3c + 8001e4a: 64c3 str r3, [r0, #76] ; 0x4c + 8001e4c: f005 fbee bl 800762c <HAL_ADC_Init> + 8001e50: b118 cbz r0, 8001e5a <MX_ADC_Init+0x4e> + 8001e52: e8bd 4008 ldmia.w sp!, {r3, lr} + 8001e56: f000 bc47 b.w 80026e8 <Error_Handler> + 8001e5a: bd08 pop {r3, pc} + 8001e5c: 200008ec .word 0x200008ec + 8001e60: 40012400 .word 0x40012400 + +08001e64 <HAL_ADC_MspInit>: + 8001e64: 6802 ldr r2, [r0, #0] + 8001e66: 4b08 ldr r3, [pc, #32] ; (8001e88 <HAL_ADC_MspInit+0x24>) + 8001e68: 429a cmp r2, r3 + 8001e6a: b082 sub sp, #8 + 8001e6c: d10a bne.n 8001e84 <HAL_ADC_MspInit+0x20> + 8001e6e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8001e72: 6e1a ldr r2, [r3, #96] ; 0x60 + 8001e74: f442 7200 orr.w r2, r2, #512 ; 0x200 + 8001e78: 661a str r2, [r3, #96] ; 0x60 + 8001e7a: 6e1b ldr r3, [r3, #96] ; 0x60 + 8001e7c: f403 7300 and.w r3, r3, #512 ; 0x200 + 8001e80: 9301 str r3, [sp, #4] + 8001e82: 9b01 ldr r3, [sp, #4] + 8001e84: b002 add sp, #8 + 8001e86: 4770 bx lr + 8001e88: 40012400 .word 0x40012400 + +08001e8c <HAL_ADC_MspDeInit>: + 8001e8c: 6802 ldr r2, [r0, #0] + 8001e8e: 4b05 ldr r3, [pc, #20] ; (8001ea4 <HAL_ADC_MspDeInit+0x18>) + 8001e90: 429a cmp r2, r3 + 8001e92: bf01 itttt eq + 8001e94: f04f 42b0 moveq.w r2, #1476395008 ; 0x58000000 + 8001e98: 6e13 ldreq r3, [r2, #96] ; 0x60 + 8001e9a: f423 7300 biceq.w r3, r3, #512 ; 0x200 + 8001e9e: 6613 streq r3, [r2, #96] ; 0x60 + 8001ea0: 4770 bx lr + 8001ea2: bf00 nop + 8001ea4: 40012400 .word 0x40012400 + +08001ea8 <ADC_ReadChannels>: + 8001ea8: b530 push {r4, r5, lr} + 8001eaa: b085 sub sp, #20 + 8001eac: 2400 movs r4, #0 + 8001eae: 4605 mov r5, r0 + 8001eb0: e9cd 4401 strd r4, r4, [sp, #4] + 8001eb4: 9403 str r4, [sp, #12] + 8001eb6: f7ff ffa9 bl 8001e0c <MX_ADC_Init> + 8001eba: 4814 ldr r0, [pc, #80] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001ebc: f005 ff4e bl 8007d5c <HAL_ADCEx_Calibration_Start> + 8001ec0: b108 cbz r0, 8001ec6 <ADC_ReadChannels+0x1e> + 8001ec2: f000 fc11 bl 80026e8 <Error_Handler> + 8001ec6: 4811 ldr r0, [pc, #68] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001ec8: 9403 str r4, [sp, #12] + 8001eca: a901 add r1, sp, #4 + 8001ecc: e9cd 5401 strd r5, r4, [sp, #4] + 8001ed0: f005 fd0a bl 80078e8 <HAL_ADC_ConfigChannel> + 8001ed4: b108 cbz r0, 8001eda <ADC_ReadChannels+0x32> + 8001ed6: f000 fc07 bl 80026e8 <Error_Handler> + 8001eda: 480c ldr r0, [pc, #48] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001edc: f005 fe68 bl 8007bb0 <HAL_ADC_Start> + 8001ee0: b108 cbz r0, 8001ee6 <ADC_ReadChannels+0x3e> + 8001ee2: f000 fc01 bl 80026e8 <Error_Handler> + 8001ee6: f04f 31ff mov.w r1, #4294967295 + 8001eea: 4808 ldr r0, [pc, #32] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001eec: f005 fc9e bl 800782c <HAL_ADC_PollForConversion> + 8001ef0: 4806 ldr r0, [pc, #24] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001ef2: f005 ff15 bl 8007d20 <HAL_ADC_Stop> + 8001ef6: 4805 ldr r0, [pc, #20] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001ef8: f005 fcf2 bl 80078e0 <HAL_ADC_GetValue> + 8001efc: 4604 mov r4, r0 + 8001efe: 4803 ldr r0, [pc, #12] ; (8001f0c <ADC_ReadChannels+0x64>) + 8001f00: f005 feb8 bl 8007c74 <HAL_ADC_DeInit> + 8001f04: 4620 mov r0, r4 + 8001f06: b005 add sp, #20 + 8001f08: bd30 pop {r4, r5, pc} + 8001f0a: bf00 nop + 8001f0c: 200008ec .word 0x200008ec + +08001f10 <SYS_InitMeasurement>: + 8001f10: 4b01 ldr r3, [pc, #4] ; (8001f18 <SYS_InitMeasurement+0x8>) + 8001f12: 4a02 ldr r2, [pc, #8] ; (8001f1c <SYS_InitMeasurement+0xc>) + 8001f14: 601a str r2, [r3, #0] + 8001f16: 4770 bx lr + 8001f18: 200008ec .word 0x200008ec + 8001f1c: 40012400 .word 0x40012400 + +08001f20 <SYS_GetBatteryLevel>: + 8001f20: b508 push {r3, lr} + 8001f22: 4809 ldr r0, [pc, #36] ; (8001f48 <SYS_GetBatteryLevel+0x28>) + 8001f24: f7ff ffc0 bl 8001ea8 <ADC_ReadChannels> + 8001f28: b168 cbz r0, 8001f46 <SYS_GetBatteryLevel+0x26> + 8001f2a: 4b08 ldr r3, [pc, #32] ; (8001f4c <SYS_GetBatteryLevel+0x2c>) + 8001f2c: f8b3 30aa ldrh.w r3, [r3, #170] ; 0xaa + 8001f30: f64f 72ff movw r2, #65535 ; 0xffff + 8001f34: 4293 cmp r3, r2 + 8001f36: bf16 itet ne + 8001f38: f640 42e4 movwne r2, #3300 ; 0xce4 + 8001f3c: 4b04 ldreq r3, [pc, #16] ; (8001f50 <SYS_GetBatteryLevel+0x30>) + 8001f3e: 4353 mulne r3, r2 + 8001f40: fbb3 f3f0 udiv r3, r3, r0 + 8001f44: b298 uxth r0, r3 + 8001f46: bd08 pop {r3, pc} + 8001f48: b4002000 .word 0xb4002000 + 8001f4c: 1fff7500 .word 0x1fff7500 + 8001f50: 004c08d8 .word 0x004c08d8 + +08001f54 <SYS_GetTemperatureLevel>: + 8001f54: b513 push {r0, r1, r4, lr} + 8001f56: 2300 movs r3, #0 + 8001f58: f8ad 3006 strh.w r3, [sp, #6] + 8001f5c: f7ff ffe0 bl 8001f20 <SYS_GetBatteryLevel> + 8001f60: 4604 mov r4, r0 + 8001f62: 4819 ldr r0, [pc, #100] ; (8001fc8 <SYS_GetTemperatureLevel+0x74>) + 8001f64: f7ff ffa0 bl 8001ea8 <ADC_ReadChannels> + 8001f68: 4b18 ldr r3, [pc, #96] ; (8001fcc <SYS_GetTemperatureLevel+0x78>) + 8001f6a: f8b3 20c8 ldrh.w r2, [r3, #200] ; 0xc8 + 8001f6e: f8b3 10a8 ldrh.w r1, [r3, #168] ; 0xa8 + 8001f72: 428a cmp r2, r1 + 8001f74: fb04 f000 mul.w r0, r4, r0 + 8001f78: d018 beq.n 8001fac <SYS_GetTemperatureLevel+0x58> + 8001f7a: f640 43e4 movw r3, #3300 ; 0xce4 + 8001f7e: fbb0 f3f3 udiv r3, r0, r3 + 8001f82: 2064 movs r0, #100 ; 0x64 + 8001f84: 1a5b subs r3, r3, r1 + 8001f86: 4343 muls r3, r0 + 8001f88: 1a52 subs r2, r2, r1 + 8001f8a: fb93 f3f2 sdiv r3, r3, r2 + 8001f8e: 331e adds r3, #30 + 8001f90: b21b sxth r3, r3 + 8001f92: f8ad 3006 strh.w r3, [sp, #6] + 8001f96: f8bd 3006 ldrh.w r3, [sp, #6] + 8001f9a: b25b sxtb r3, r3 + 8001f9c: 021b lsls r3, r3, #8 + 8001f9e: f8ad 3006 strh.w r3, [sp, #6] + 8001fa2: f8bd 0006 ldrh.w r0, [sp, #6] + 8001fa6: b200 sxth r0, r0 + 8001fa8: b002 add sp, #8 + 8001faa: bd10 pop {r4, pc} + 8001fac: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8001fb0: f640 73ff movw r3, #4095 ; 0xfff + 8001fb4: fbb0 f3f3 udiv r3, r0, r3 + 8001fb8: 4353 muls r3, r2 + 8001fba: f5a3 2339 sub.w r3, r3, #757760 ; 0xb9000 + 8001fbe: f5a3 630c sub.w r3, r3, #2240 ; 0x8c0 + 8001fc2: f640 12c4 movw r2, #2500 ; 0x9c4 + 8001fc6: e7e0 b.n 8001f8a <SYS_GetTemperatureLevel+0x36> + 8001fc8: b0001000 .word 0xb0001000 + 8001fcc: 1fff7500 .word 0x1fff7500 + +08001fd0 <cmox_ll_init>: + 8001fd0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8001fd4: b082 sub sp, #8 + 8001fd6: 6a9a ldr r2, [r3, #40] ; 0x28 + 8001fd8: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 8001fdc: 629a str r2, [r3, #40] ; 0x28 + 8001fde: 6c9a ldr r2, [r3, #72] ; 0x48 + 8001fe0: f442 5280 orr.w r2, r2, #4096 ; 0x1000 + 8001fe4: 649a str r2, [r3, #72] ; 0x48 + 8001fe6: 6c9b ldr r3, [r3, #72] ; 0x48 + 8001fe8: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 8001fec: 9301 str r3, [sp, #4] + 8001fee: 9b01 ldr r3, [sp, #4] + 8001ff0: 2000 movs r0, #0 + 8001ff2: b002 add sp, #8 + 8001ff4: 4770 bx lr + +08001ff6 <LL_AHB1_GRP1_EnableClock>: + 8001ff6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8001ffa: b082 sub sp, #8 + 8001ffc: 6c9a ldr r2, [r3, #72] ; 0x48 + 8001ffe: 4302 orrs r2, r0 + 8002000: 649a str r2, [r3, #72] ; 0x48 + 8002002: 6c9b ldr r3, [r3, #72] ; 0x48 + 8002004: 4003 ands r3, r0 + 8002006: 9301 str r3, [sp, #4] + 8002008: 9b01 ldr r3, [sp, #4] + 800200a: b002 add sp, #8 + 800200c: 4770 bx lr + +0800200e <MX_DMA_Init>: + 800200e: b508 push {r3, lr} + 8002010: 2004 movs r0, #4 + 8002012: f7ff fff0 bl 8001ff6 <LL_AHB1_GRP1_EnableClock> + 8002016: 2001 movs r0, #1 + 8002018: f7ff ffed bl 8001ff6 <LL_AHB1_GRP1_EnableClock> + 800201c: 2002 movs r0, #2 + 800201e: f7ff ffea bl 8001ff6 <LL_AHB1_GRP1_EnableClock> + 8002022: 2200 movs r2, #0 + 8002024: 4611 mov r1, r2 + 8002026: 200b movs r0, #11 + 8002028: f005 ff36 bl 8007e98 <HAL_NVIC_SetPriority> + 800202c: 200b movs r0, #11 + 800202e: f005 ff65 bl 8007efc <HAL_NVIC_EnableIRQ> + 8002032: 2200 movs r2, #0 + 8002034: 4611 mov r1, r2 + 8002036: 200c movs r0, #12 + 8002038: f005 ff2e bl 8007e98 <HAL_NVIC_SetPriority> + 800203c: 200c movs r0, #12 + 800203e: f005 ff5d bl 8007efc <HAL_NVIC_EnableIRQ> + 8002042: 2200 movs r2, #0 + 8002044: 4611 mov r1, r2 + 8002046: 200d movs r0, #13 + 8002048: f005 ff26 bl 8007e98 <HAL_NVIC_SetPriority> + 800204c: 200d movs r0, #13 + 800204e: f005 ff55 bl 8007efc <HAL_NVIC_EnableIRQ> + 8002052: 2200 movs r2, #0 + 8002054: 4611 mov r1, r2 + 8002056: 200e movs r0, #14 + 8002058: f005 ff1e bl 8007e98 <HAL_NVIC_SetPriority> + 800205c: 200e movs r0, #14 + 800205e: f005 ff4d bl 8007efc <HAL_NVIC_EnableIRQ> + 8002062: 2200 movs r2, #0 + 8002064: 4611 mov r1, r2 + 8002066: 200f movs r0, #15 + 8002068: f005 ff16 bl 8007e98 <HAL_NVIC_SetPriority> + 800206c: 200f movs r0, #15 + 800206e: f005 ff45 bl 8007efc <HAL_NVIC_EnableIRQ> + 8002072: 2200 movs r2, #0 + 8002074: 4611 mov r1, r2 + 8002076: 2010 movs r0, #16 + 8002078: f005 ff0e bl 8007e98 <HAL_NVIC_SetPriority> + 800207c: 2010 movs r0, #16 + 800207e: f005 ff3d bl 8007efc <HAL_NVIC_EnableIRQ> + 8002082: 2200 movs r2, #0 + 8002084: 4611 mov r1, r2 + 8002086: 2011 movs r0, #17 + 8002088: f005 ff06 bl 8007e98 <HAL_NVIC_SetPriority> + 800208c: 2011 movs r0, #17 + 800208e: f005 ff35 bl 8007efc <HAL_NVIC_EnableIRQ> + 8002092: 2200 movs r2, #0 + 8002094: 2036 movs r0, #54 ; 0x36 + 8002096: 4611 mov r1, r2 + 8002098: f005 fefe bl 8007e98 <HAL_NVIC_SetPriority> + 800209c: e8bd 4008 ldmia.w sp!, {r3, lr} + 80020a0: 2036 movs r0, #54 ; 0x36 + 80020a2: f005 bf2b b.w 8007efc <HAL_NVIC_EnableIRQ> + ... + +080020a8 <FLASH_IF_INT_Clear_Error>: + 80020a8: b508 push {r3, lr} + 80020aa: f006 f96f bl 800838c <HAL_FLASH_Unlock> + 80020ae: b110 cbz r0, 80020b6 <FLASH_IF_INT_Clear_Error+0xe> + 80020b0: f06f 0004 mvn.w r0, #4 + 80020b4: bd08 pop {r3, pc} + 80020b6: 4b06 ldr r3, [pc, #24] ; (80020d0 <FLASH_IF_INT_Clear_Error+0x28>) + 80020b8: 699a ldr r2, [r3, #24] + 80020ba: f042 4240 orr.w r2, r2, #3221225472 ; 0xc0000000 + 80020be: 619a str r2, [r3, #24] + 80020c0: f24c 32fa movw r2, #50170 ; 0xc3fa + 80020c4: 611a str r2, [r3, #16] + 80020c6: f006 f973 bl 80083b0 <HAL_FLASH_Lock> + 80020ca: 2800 cmp r0, #0 + 80020cc: d0f2 beq.n 80020b4 <FLASH_IF_INT_Clear_Error+0xc> + 80020ce: e7ef b.n 80020b0 <FLASH_IF_INT_Clear_Error+0x8> + 80020d0: 58004000 .word 0x58004000 + +080020d4 <FLASH_IF_INT_Erase>: + 80020d4: b5f0 push {r4, r5, r6, r7, lr} + 80020d6: b085 sub sp, #20 + 80020d8: 2300 movs r3, #0 + 80020da: 460c mov r4, r1 + 80020dc: 9300 str r3, [sp, #0] + 80020de: 4606 mov r6, r0 + 80020e0: b3a8 cbz r0, 800214e <FLASH_IF_INT_Erase+0x7a> + 80020e2: f7ff ffe1 bl 80020a8 <FLASH_IF_INT_Clear_Error> + 80020e6: 4605 mov r5, r0 + 80020e8: bb70 cbnz r0, 8002148 <FLASH_IF_INT_Erase+0x74> + 80020ea: f006 f94f bl 800838c <HAL_FLASH_Unlock> + 80020ee: bb88 cbnz r0, 8002154 <FLASH_IF_INT_Erase+0x80> + 80020f0: 481a ldr r0, [pc, #104] ; (800215c <FLASH_IF_INT_Erase+0x88>) + 80020f2: 4a1b ldr r2, [pc, #108] ; (8002160 <FLASH_IF_INT_Erase+0x8c>) + 80020f4: 2302 movs r3, #2 + 80020f6: 9301 str r3, [sp, #4] + 80020f8: f8d0 15e0 ldr.w r1, [r0, #1504] ; 0x5e0 + 80020fc: f106 4378 add.w r3, r6, #4160749568 ; 0xf8000000 + 8002100: ea02 2181 and.w r1, r2, r1, lsl #10 + 8002104: fbb3 f7f1 udiv r7, r3, r1 + 8002108: fb01 3317 mls r3, r1, r7, r3 + 800210c: 0adb lsrs r3, r3, #11 + 800210e: 9302 str r3, [sp, #8] + 8002110: f8d0 05e0 ldr.w r0, [r0, #1504] ; 0x5e0 + 8002114: f104 4178 add.w r1, r4, #4160749568 ; 0xf8000000 + 8002118: 3901 subs r1, #1 + 800211a: 4431 add r1, r6 + 800211c: ea02 2280 and.w r2, r2, r0, lsl #10 + 8002120: fbb1 f0f2 udiv r0, r1, r2 + 8002124: fb02 1110 mls r1, r2, r0, r1 + 8002128: ebc3 23d1 rsb r3, r3, r1, lsr #11 + 800212c: 3301 adds r3, #1 + 800212e: 4669 mov r1, sp + 8002130: a801 add r0, sp, #4 + 8002132: 9303 str r3, [sp, #12] + 8002134: f006 f9bc bl 80084b0 <HAL_FLASHEx_Erase> + 8002138: b120 cbz r0, 8002144 <FLASH_IF_INT_Erase+0x70> + 800213a: 2802 cmp r0, #2 + 800213c: bf0c ite eq + 800213e: 2501 moveq r5, #1 + 8002140: f06f 0501 mvnne.w r5, #1 + 8002144: f006 f934 bl 80083b0 <HAL_FLASH_Lock> + 8002148: 4628 mov r0, r5 + 800214a: b005 add sp, #20 + 800214c: bdf0 pop {r4, r5, r6, r7, pc} + 800214e: f06f 0505 mvn.w r5, #5 + 8002152: e7f9 b.n 8002148 <FLASH_IF_INT_Erase+0x74> + 8002154: f06f 0504 mvn.w r5, #4 + 8002158: e7f6 b.n 8002148 <FLASH_IF_INT_Erase+0x74> + 800215a: bf00 nop + 800215c: 1fff7000 .word 0x1fff7000 + 8002160: 03fffc00 .word 0x03fffc00 + +08002164 <FLASH_IF_Init>: + 8002164: 4b01 ldr r3, [pc, #4] ; (800216c <FLASH_IF_Init+0x8>) + 8002166: 6018 str r0, [r3, #0] + 8002168: 2000 movs r0, #0 + 800216a: 4770 bx lr + 800216c: 20000950 .word 0x20000950 + +08002170 <FLASH_IF_Write>: + 8002170: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8002174: b089 sub sp, #36 ; 0x24 + 8002176: f1b0 6f00 cmp.w r0, #134217728 ; 0x8000000 + 800217a: 4606 mov r6, r0 + 800217c: 460f mov r7, r1 + 800217e: 9200 str r2, [sp, #0] + 8002180: f0c0 80c5 bcc.w 800230e <FLASH_IF_Write+0x19e> + 8002184: f8df 8198 ldr.w r8, [pc, #408] ; 8002320 <FLASH_IF_Write+0x1b0> + 8002188: 4d66 ldr r5, [pc, #408] ; (8002324 <FLASH_IF_Write+0x1b4>) + 800218a: f8d8 35e0 ldr.w r3, [r8, #1504] ; 0x5e0 + 800218e: ea05 2383 and.w r3, r5, r3, lsl #10 + 8002192: f103 6300 add.w r3, r3, #134217728 ; 0x8000000 + 8002196: 3b01 subs r3, #1 + 8002198: 4298 cmp r0, r3 + 800219a: f200 80b8 bhi.w 800230e <FLASH_IF_Write+0x19e> + 800219e: 2800 cmp r0, #0 + 80021a0: f000 80b8 beq.w 8002314 <FLASH_IF_Write+0x1a4> + 80021a4: 2900 cmp r1, #0 + 80021a6: f000 80b5 beq.w 8002314 <FLASH_IF_Write+0x1a4> + 80021aa: ea40 0302 orr.w r3, r0, r2 + 80021ae: 075b lsls r3, r3, #29 + 80021b0: f040 80b0 bne.w 8002314 <FLASH_IF_Write+0x1a4> + 80021b4: f7ff ff78 bl 80020a8 <FLASH_IF_INT_Clear_Error> + 80021b8: 4604 mov r4, r0 + 80021ba: bba0 cbnz r0, 8002226 <FLASH_IF_Write+0xb6> + 80021bc: f006 f8e6 bl 800838c <HAL_FLASH_Unlock> + 80021c0: 2800 cmp r0, #0 + 80021c2: f040 80aa bne.w 800231a <FLASH_IF_Write+0x1aa> + 80021c6: f8d8 15e0 ldr.w r1, [r8, #1504] ; 0x5e0 + 80021ca: f106 4278 add.w r2, r6, #4160749568 ; 0xf8000000 + 80021ce: ea05 2181 and.w r1, r5, r1, lsl #10 + 80021d2: fbb2 f3f1 udiv r3, r2, r1 + 80021d6: fb01 2213 mls r2, r1, r3, r2 + 80021da: 9b00 ldr r3, [sp, #0] + 80021dc: f103 4378 add.w r3, r3, #4160749568 ; 0xf8000000 + 80021e0: 3b01 subs r3, #1 + 80021e2: 4433 add r3, r6 + 80021e4: fbb3 f0f1 udiv r0, r3, r1 + 80021e8: fb01 3310 mls r3, r1, r0, r3 + 80021ec: 0adb lsrs r3, r3, #11 + 80021ee: 3301 adds r3, #1 + 80021f0: ea4f 2ad2 mov.w sl, r2, lsr #11 + 80021f4: eba3 22d2 sub.w r2, r3, r2, lsr #11 + 80021f8: 2a01 cmp r2, #1 + 80021fa: 9303 str r3, [sp, #12] + 80021fc: bf88 it hi + 80021fe: f3c6 050a ubfxhi r5, r6, #0, #11 + 8002202: f50a 3880 add.w r8, sl, #65536 ; 0x10000 + 8002206: f1c6 0308 rsb r3, r6, #8 + 800220a: bf98 it ls + 800220c: 9d00 ldrls r5, [sp, #0] + 800220e: 9306 str r3, [sp, #24] + 8002210: bf88 it hi + 8002212: f5c5 6500 rsbhi r5, r5, #2048 ; 0x800 + 8002216: ea4f 28c8 mov.w r8, r8, lsl #11 + 800221a: 46b3 mov fp, r6 + 800221c: 9b03 ldr r3, [sp, #12] + 800221e: 459a cmp sl, r3 + 8002220: d305 bcc.n 800222e <FLASH_IF_Write+0xbe> + 8002222: f006 f8c5 bl 80083b0 <HAL_FLASH_Lock> + 8002226: 4620 mov r0, r4 + 8002228: b009 add sp, #36 ; 0x24 + 800222a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800222e: f1a6 0308 sub.w r3, r6, #8 + 8002232: 9a06 ldr r2, [sp, #24] + 8002234: 441a add r2, r3 + 8002236: 4295 cmp r5, r2 + 8002238: d819 bhi.n 800226e <FLASH_IF_Write+0xfe> + 800223a: 9504 str r5, [sp, #16] + 800223c: 9701 str r7, [sp, #4] + 800223e: f8cd b014 str.w fp, [sp, #20] + 8002242: f04f 0900 mov.w r9, #0 + 8002246: 9b05 ldr r3, [sp, #20] + 8002248: eb09 0103 add.w r1, r9, r3 + 800224c: 9b04 ldr r3, [sp, #16] + 800224e: 4599 cmp r9, r3 + 8002250: d33e bcc.n 80022d0 <FLASH_IF_Write+0x160> + 8002252: 9b00 ldr r3, [sp, #0] + 8002254: 44ab add fp, r5 + 8002256: 442f add r7, r5 + 8002258: 1b5d subs r5, r3, r5 + 800225a: f5b5 6f00 cmp.w r5, #2048 ; 0x800 + 800225e: bf28 it cs + 8002260: f44f 6500 movcs.w r5, #2048 ; 0x800 + 8002264: f10a 0a01 add.w sl, sl, #1 + 8002268: f508 6800 add.w r8, r8, #2048 ; 0x800 + 800226c: e7d6 b.n 800221c <FLASH_IF_Write+0xac> + 800226e: f853 1f08 ldr.w r1, [r3, #8]! + 8002272: 685a ldr r2, [r3, #4] + 8002274: f1b2 3fff cmp.w r2, #4294967295 + 8002278: bf08 it eq + 800227a: f1b1 3fff cmpeq.w r1, #4294967295 + 800227e: d0d8 beq.n 8002232 <FLASH_IF_Write+0xc2> + 8002280: 4b29 ldr r3, [pc, #164] ; (8002328 <FLASH_IF_Write+0x1b8>) + 8002282: 6818 ldr r0, [r3, #0] + 8002284: b910 cbnz r0, 800228c <FLASH_IF_Write+0x11c> + 8002286: f06f 0405 mvn.w r4, #5 + 800228a: e7ca b.n 8002222 <FLASH_IF_Write+0xb2> + 800228c: f1b8 0f00 cmp.w r8, #0 + 8002290: d004 beq.n 800229c <FLASH_IF_Write+0x12c> + 8002292: f44f 6200 mov.w r2, #2048 ; 0x800 + 8002296: 4641 mov r1, r8 + 8002298: f011 fc76 bl 8013b88 <UTIL_MEM_cpy_8> + 800229c: f8df 9088 ldr.w r9, [pc, #136] ; 8002328 <FLASH_IF_Write+0x1b8> + 80022a0: f8d9 3000 ldr.w r3, [r9] + 80022a4: f3cb 000a ubfx r0, fp, #0, #11 + 80022a8: 4639 mov r1, r7 + 80022aa: 4418 add r0, r3 + 80022ac: b2aa uxth r2, r5 + 80022ae: f011 fc6b bl 8013b88 <UTIL_MEM_cpy_8> + 80022b2: f44f 6100 mov.w r1, #2048 ; 0x800 + 80022b6: 4640 mov r0, r8 + 80022b8: f7ff ff0c bl 80020d4 <FLASH_IF_INT_Erase> + 80022bc: bb08 cbnz r0, 8002302 <FLASH_IF_Write+0x192> + 80022be: f8d9 3000 ldr.w r3, [r9] + 80022c2: 9301 str r3, [sp, #4] + 80022c4: f44f 6300 mov.w r3, #2048 ; 0x800 + 80022c8: f8cd 8014 str.w r8, [sp, #20] + 80022cc: 9304 str r3, [sp, #16] + 80022ce: e7b8 b.n 8002242 <FLASH_IF_Write+0xd2> + 80022d0: 9b01 ldr r3, [sp, #4] + 80022d2: 9107 str r1, [sp, #28] + 80022d4: 444b add r3, r9 + 80022d6: 9302 str r3, [sp, #8] + 80022d8: 2001 movs r0, #1 + 80022da: e9d3 2300 ldrd r2, r3, [r3] + 80022de: f006 f8a1 bl 8008424 <HAL_FLASH_Program> + 80022e2: b988 cbnz r0, 8002308 <FLASH_IF_Write+0x198> + 80022e4: 9907 ldr r1, [sp, #28] + 80022e6: 9b01 ldr r3, [sp, #4] + 80022e8: e9d1 0200 ldrd r0, r2, [r1] + 80022ec: f859 1003 ldr.w r1, [r9, r3] + 80022f0: 9b02 ldr r3, [sp, #8] + 80022f2: 685b ldr r3, [r3, #4] + 80022f4: 429a cmp r2, r3 + 80022f6: bf08 it eq + 80022f8: 4288 cmpeq r0, r1 + 80022fa: d105 bne.n 8002308 <FLASH_IF_Write+0x198> + 80022fc: f109 0908 add.w r9, r9, #8 + 8002300: e7a1 b.n 8002246 <FLASH_IF_Write+0xd6> + 8002302: f06f 0401 mvn.w r4, #1 + 8002306: e78c b.n 8002222 <FLASH_IF_Write+0xb2> + 8002308: f06f 0403 mvn.w r4, #3 + 800230c: e789 b.n 8002222 <FLASH_IF_Write+0xb2> + 800230e: f04f 34ff mov.w r4, #4294967295 + 8002312: e788 b.n 8002226 <FLASH_IF_Write+0xb6> + 8002314: f06f 0405 mvn.w r4, #5 + 8002318: e785 b.n 8002226 <FLASH_IF_Write+0xb6> + 800231a: f06f 0404 mvn.w r4, #4 + 800231e: e782 b.n 8002226 <FLASH_IF_Write+0xb6> + 8002320: 1fff7000 .word 0x1fff7000 + 8002324: 03fffc00 .word 0x03fffc00 + 8002328: 20000950 .word 0x20000950 + +0800232c <FLASH_IF_Read>: + 800232c: f1b1 6f00 cmp.w r1, #134217728 ; 0x8000000 + 8002330: b570 push {r4, r5, r6, lr} + 8002332: d311 bcc.n 8002358 <FLASH_IF_Read+0x2c> + 8002334: 4b0b ldr r3, [pc, #44] ; (8002364 <FLASH_IF_Read+0x38>) + 8002336: f8d3 65e0 ldr.w r6, [r3, #1504] ; 0x5e0 + 800233a: 4b0b ldr r3, [pc, #44] ; (8002368 <FLASH_IF_Read+0x3c>) + 800233c: ea03 2386 and.w r3, r3, r6, lsl #10 + 8002340: f103 6300 add.w r3, r3, #134217728 ; 0x8000000 + 8002344: 3b01 subs r3, #1 + 8002346: 4299 cmp r1, r3 + 8002348: d806 bhi.n 8002358 <FLASH_IF_Read+0x2c> + 800234a: b140 cbz r0, 800235e <FLASH_IF_Read+0x32> + 800234c: b139 cbz r1, 800235e <FLASH_IF_Read+0x32> + 800234e: b292 uxth r2, r2 + 8002350: f011 fc1a bl 8013b88 <UTIL_MEM_cpy_8> + 8002354: 2000 movs r0, #0 + 8002356: bd70 pop {r4, r5, r6, pc} + 8002358: f04f 30ff mov.w r0, #4294967295 + 800235c: e7fb b.n 8002356 <FLASH_IF_Read+0x2a> + 800235e: f06f 0005 mvn.w r0, #5 + 8002362: e7f8 b.n 8002356 <FLASH_IF_Read+0x2a> + 8002364: 1fff7000 .word 0x1fff7000 + 8002368: 03fffc00 .word 0x03fffc00 + +0800236c <FLASH_IF_Erase>: + 800236c: f1b0 6f00 cmp.w r0, #134217728 ; 0x8000000 + 8002370: b410 push {r4} + 8002372: d30d bcc.n 8002390 <FLASH_IF_Erase+0x24> + 8002374: 4b08 ldr r3, [pc, #32] ; (8002398 <FLASH_IF_Erase+0x2c>) + 8002376: f8d3 45e0 ldr.w r4, [r3, #1504] ; 0x5e0 + 800237a: 4b08 ldr r3, [pc, #32] ; (800239c <FLASH_IF_Erase+0x30>) + 800237c: ea03 2384 and.w r3, r3, r4, lsl #10 + 8002380: f103 6300 add.w r3, r3, #134217728 ; 0x8000000 + 8002384: 3b01 subs r3, #1 + 8002386: 4298 cmp r0, r3 + 8002388: d802 bhi.n 8002390 <FLASH_IF_Erase+0x24> + 800238a: bc10 pop {r4} + 800238c: f7ff bea2 b.w 80020d4 <FLASH_IF_INT_Erase> + 8002390: f04f 30ff mov.w r0, #4294967295 + 8002394: bc10 pop {r4} + 8002396: 4770 bx lr + 8002398: 1fff7000 .word 0x1fff7000 + 800239c: 03fffc00 .word 0x03fffc00 + +080023a0 <LL_AHB2_GRP1_EnableClock>: + 80023a0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80023a4: b082 sub sp, #8 + 80023a6: 6cda ldr r2, [r3, #76] ; 0x4c + 80023a8: 4302 orrs r2, r0 + 80023aa: 64da str r2, [r3, #76] ; 0x4c + 80023ac: 6cdb ldr r3, [r3, #76] ; 0x4c + 80023ae: 4003 ands r3, r0 + 80023b0: 9301 str r3, [sp, #4] + 80023b2: 9b01 ldr r3, [sp, #4] + 80023b4: b002 add sp, #8 + 80023b6: 4770 bx lr + +080023b8 <MX_GPIO_Init>: + 80023b8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80023bc: b086 sub sp, #24 + 80023be: 2214 movs r2, #20 + 80023c0: 2100 movs r1, #0 + 80023c2: a801 add r0, sp, #4 + 80023c4: f012 f818 bl 80143f8 <memset> + 80023c8: 2001 movs r0, #1 + 80023ca: 4e46 ldr r6, [pc, #280] ; (80024e4 <MX_GPIO_Init+0x12c>) + 80023cc: f7ff ffe8 bl 80023a0 <LL_AHB2_GRP1_EnableClock> + 80023d0: 2002 movs r0, #2 + 80023d2: f7ff ffe5 bl 80023a0 <LL_AHB2_GRP1_EnableClock> + 80023d6: 2004 movs r0, #4 + 80023d8: f7ff ffe2 bl 80023a0 <LL_AHB2_GRP1_EnableClock> + 80023dc: 2108 movs r1, #8 + 80023de: 2201 movs r2, #1 + 80023e0: 4630 mov r0, r6 + 80023e2: f006 f9d9 bl 8008798 <HAL_GPIO_WritePin> + 80023e6: 2501 movs r5, #1 + 80023e8: f44f 1704 mov.w r7, #2162688 ; 0x210000 + 80023ec: 2302 movs r3, #2 + 80023ee: a901 add r1, sp, #4 + 80023f0: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80023f4: e9cd 3701 strd r3, r7, [sp, #4] + 80023f8: 9503 str r5, [sp, #12] + 80023fa: f006 f8a7 bl 800854c <HAL_GPIO_Init> + 80023fe: f44f 1344 mov.w r3, #3211264 ; 0x310000 + 8002402: a901 add r1, sp, #4 + 8002404: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8002408: 2400 movs r4, #0 + 800240a: e9cd 3502 strd r3, r5, [sp, #8] + 800240e: f04f 0820 mov.w r8, #32 + 8002412: 9501 str r5, [sp, #4] + 8002414: f006 f89a bl 800854c <HAL_GPIO_Init> + 8002418: a901 add r1, sp, #4 + 800241a: 4630 mov r0, r6 + 800241c: e9cd 8701 strd r8, r7, [sp, #4] + 8002420: 9403 str r4, [sp, #12] + 8002422: f006 f893 bl 800854c <HAL_GPIO_Init> + 8002426: a901 add r1, sp, #4 + 8002428: 4630 mov r0, r6 + 800242a: e9cd 8701 strd r8, r7, [sp, #4] + 800242e: 9403 str r4, [sp, #12] + 8002430: 2708 movs r7, #8 + 8002432: f006 f88b bl 800854c <HAL_GPIO_Init> + 8002436: a901 add r1, sp, #4 + 8002438: 4630 mov r0, r6 + 800243a: e9cd 7501 strd r7, r5, [sp, #4] + 800243e: e9cd 5403 strd r5, r4, [sp, #12] + 8002442: f006 f883 bl 800854c <HAL_GPIO_Init> + 8002446: f44f 7300 mov.w r3, #512 ; 0x200 + 800244a: a901 add r1, sp, #4 + 800244c: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8002450: e9cd 3501 strd r3, r5, [sp, #4] + 8002454: e9cd 5403 strd r5, r4, [sp, #12] + 8002458: f006 f878 bl 800854c <HAL_GPIO_Init> + 800245c: 2304 movs r3, #4 + 800245e: eb0d 0103 add.w r1, sp, r3 + 8002462: 4630 mov r0, r6 + 8002464: e9cd 3501 strd r3, r5, [sp, #4] + 8002468: e9cd 4403 strd r4, r4, [sp, #12] + 800246c: f006 f86e bl 800854c <HAL_GPIO_Init> + 8002470: 4622 mov r2, r4 + 8002472: 4639 mov r1, r7 + 8002474: 4630 mov r0, r6 + 8002476: f006 f98f bl 8008798 <HAL_GPIO_WritePin> + 800247a: f44f 6380 mov.w r3, #1024 ; 0x400 + 800247e: a901 add r1, sp, #4 + 8002480: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8002484: e9cd 3401 strd r3, r4, [sp, #4] + 8002488: 9403 str r4, [sp, #12] + 800248a: f006 f85f bl 800854c <HAL_GPIO_Init> + 800248e: a901 add r1, sp, #4 + 8002490: 4630 mov r0, r6 + 8002492: e9cd 7501 strd r7, r5, [sp, #4] + 8002496: e9cd 4403 strd r4, r4, [sp, #12] + 800249a: f006 f857 bl 800854c <HAL_GPIO_Init> + 800249e: 4622 mov r2, r4 + 80024a0: 4621 mov r1, r4 + 80024a2: 2006 movs r0, #6 + 80024a4: f005 fcf8 bl 8007e98 <HAL_NVIC_SetPriority> + 80024a8: 2006 movs r0, #6 + 80024aa: f005 fd27 bl 8007efc <HAL_NVIC_EnableIRQ> + 80024ae: 4622 mov r2, r4 + 80024b0: 4621 mov r1, r4 + 80024b2: 2007 movs r0, #7 + 80024b4: f005 fcf0 bl 8007e98 <HAL_NVIC_SetPriority> + 80024b8: 2007 movs r0, #7 + 80024ba: f005 fd1f bl 8007efc <HAL_NVIC_EnableIRQ> + 80024be: 4622 mov r2, r4 + 80024c0: 4621 mov r1, r4 + 80024c2: 2016 movs r0, #22 + 80024c4: f005 fce8 bl 8007e98 <HAL_NVIC_SetPriority> + 80024c8: 2016 movs r0, #22 + 80024ca: f005 fd17 bl 8007efc <HAL_NVIC_EnableIRQ> + 80024ce: 4622 mov r2, r4 + 80024d0: 4621 mov r1, r4 + 80024d2: 2016 movs r0, #22 + 80024d4: f005 fce0 bl 8007e98 <HAL_NVIC_SetPriority> + 80024d8: 2016 movs r0, #22 + 80024da: f005 fd0f bl 8007efc <HAL_NVIC_EnableIRQ> + 80024de: b006 add sp, #24 + 80024e0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 80024e4: 48000400 .word 0x48000400 + +080024e8 <MX_I2C2_Init>: + 80024e8: b508 push {r3, lr} + 80024ea: 4812 ldr r0, [pc, #72] ; (8002534 <MX_I2C2_Init+0x4c>) + 80024ec: 4a12 ldr r2, [pc, #72] ; (8002538 <MX_I2C2_Init+0x50>) + 80024ee: 4b13 ldr r3, [pc, #76] ; (800253c <MX_I2C2_Init+0x54>) + 80024f0: e9c0 2300 strd r2, r3, [r0] + 80024f4: 2300 movs r3, #0 + 80024f6: 2201 movs r2, #1 + 80024f8: e9c0 3202 strd r3, r2, [r0, #8] + 80024fc: e9c0 3304 strd r3, r3, [r0, #16] + 8002500: e9c0 3306 strd r3, r3, [r0, #24] + 8002504: 6203 str r3, [r0, #32] + 8002506: f006 fabb bl 8008a80 <HAL_I2C_Init> + 800250a: b108 cbz r0, 8002510 <MX_I2C2_Init+0x28> + 800250c: f000 f8ec bl 80026e8 <Error_Handler> + 8002510: 4808 ldr r0, [pc, #32] ; (8002534 <MX_I2C2_Init+0x4c>) + 8002512: 2100 movs r1, #0 + 8002514: f006 fc34 bl 8008d80 <HAL_I2CEx_ConfigAnalogFilter> + 8002518: b108 cbz r0, 800251e <MX_I2C2_Init+0x36> + 800251a: f000 f8e5 bl 80026e8 <Error_Handler> + 800251e: 4805 ldr r0, [pc, #20] ; (8002534 <MX_I2C2_Init+0x4c>) + 8002520: 2100 movs r1, #0 + 8002522: f006 fc53 bl 8008dcc <HAL_I2CEx_ConfigDigitalFilter> + 8002526: b118 cbz r0, 8002530 <MX_I2C2_Init+0x48> + 8002528: e8bd 4008 ldmia.w sp!, {r3, lr} + 800252c: f000 b8dc b.w 80026e8 <Error_Handler> + 8002530: bd08 pop {r3, pc} + 8002532: bf00 nop + 8002534: 20000a14 .word 0x20000a14 + 8002538: 40005800 .word 0x40005800 + 800253c: 2010091a .word 0x2010091a + +08002540 <HAL_I2C_MspInit>: + 8002540: b570 push {r4, r5, r6, lr} + 8002542: b096 sub sp, #88 ; 0x58 + 8002544: 4605 mov r5, r0 + 8002546: 2214 movs r2, #20 + 8002548: 2100 movs r1, #0 + 800254a: a803 add r0, sp, #12 + 800254c: f011 ff54 bl 80143f8 <memset> + 8002550: 2238 movs r2, #56 ; 0x38 + 8002552: 2100 movs r1, #0 + 8002554: a808 add r0, sp, #32 + 8002556: f011 ff4f bl 80143f8 <memset> + 800255a: 682a ldr r2, [r5, #0] + 800255c: 4b30 ldr r3, [pc, #192] ; (8002620 <HAL_I2C_MspInit+0xe0>) + 800255e: 429a cmp r2, r3 + 8002560: d15b bne.n 800261a <HAL_I2C_MspInit+0xda> + 8002562: 2380 movs r3, #128 ; 0x80 + 8002564: 9308 str r3, [sp, #32] + 8002566: a808 add r0, sp, #32 + 8002568: f44f 2340 mov.w r3, #786432 ; 0xc0000 + 800256c: 930e str r3, [sp, #56] ; 0x38 + 800256e: f007 f989 bl 8009884 <HAL_RCCEx_PeriphCLKConfig> + 8002572: b108 cbz r0, 8002578 <HAL_I2C_MspInit+0x38> + 8002574: f000 f8b8 bl 80026e8 <Error_Handler> + 8002578: f04f 44b0 mov.w r4, #1476395008 ; 0x58000000 + 800257c: f44f 50c0 mov.w r0, #6144 ; 0x1800 + 8002580: 6ce3 ldr r3, [r4, #76] ; 0x4c + 8002582: f043 0301 orr.w r3, r3, #1 + 8002586: 64e3 str r3, [r4, #76] ; 0x4c + 8002588: 6ce3 ldr r3, [r4, #76] ; 0x4c + 800258a: f003 0301 and.w r3, r3, #1 + 800258e: 9302 str r3, [sp, #8] + 8002590: 9b02 ldr r3, [sp, #8] + 8002592: 2312 movs r3, #18 + 8002594: 2600 movs r6, #0 + 8002596: e9cd 0303 strd r0, r3, [sp, #12] + 800259a: 2303 movs r3, #3 + 800259c: e9cd 6305 strd r6, r3, [sp, #20] + 80025a0: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80025a4: 2304 movs r3, #4 + 80025a6: a903 add r1, sp, #12 + 80025a8: 9307 str r3, [sp, #28] + 80025aa: f005 ffcf bl 800854c <HAL_GPIO_Init> + 80025ae: 6da3 ldr r3, [r4, #88] ; 0x58 + 80025b0: f8df c070 ldr.w ip, [pc, #112] ; 8002624 <HAL_I2C_MspInit+0xe4> + 80025b4: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 + 80025b8: 65a3 str r3, [r4, #88] ; 0x58 + 80025ba: 6da3 ldr r3, [r4, #88] ; 0x58 + 80025bc: 4c1a ldr r4, [pc, #104] ; (8002628 <HAL_I2C_MspInit+0xe8>) + 80025be: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 80025c2: 9301 str r3, [sp, #4] + 80025c4: 9b01 ldr r3, [sp, #4] + 80025c6: 6226 str r6, [r4, #32] + 80025c8: 230d movs r3, #13 + 80025ca: e9c4 c300 strd ip, r3, [r4] + 80025ce: 4620 mov r0, r4 + 80025d0: 2380 movs r3, #128 ; 0x80 + 80025d2: e9c4 6602 strd r6, r6, [r4, #8] + 80025d6: e9c4 3604 strd r3, r6, [r4, #16] + 80025da: e9c4 6606 strd r6, r6, [r4, #24] + 80025de: f005 fced bl 8007fbc <HAL_DMA_Init> + 80025e2: b108 cbz r0, 80025e8 <HAL_I2C_MspInit+0xa8> + 80025e4: f000 f880 bl 80026e8 <Error_Handler> + 80025e8: 4a10 ldr r2, [pc, #64] ; (800262c <HAL_I2C_MspInit+0xec>) + 80025ea: 63ec str r4, [r5, #60] ; 0x3c + 80025ec: 62a5 str r5, [r4, #40] ; 0x28 + 80025ee: 4c10 ldr r4, [pc, #64] ; (8002630 <HAL_I2C_MspInit+0xf0>) + 80025f0: 230e movs r3, #14 + 80025f2: e9c4 2300 strd r2, r3, [r4] + 80025f6: 2110 movs r1, #16 + 80025f8: 2300 movs r3, #0 + 80025fa: 2280 movs r2, #128 ; 0x80 + 80025fc: 4620 mov r0, r4 + 80025fe: e9c4 1302 strd r1, r3, [r4, #8] + 8002602: e9c4 2304 strd r2, r3, [r4, #16] + 8002606: e9c4 3306 strd r3, r3, [r4, #24] + 800260a: 6223 str r3, [r4, #32] + 800260c: f005 fcd6 bl 8007fbc <HAL_DMA_Init> + 8002610: b108 cbz r0, 8002616 <HAL_I2C_MspInit+0xd6> + 8002612: f000 f869 bl 80026e8 <Error_Handler> + 8002616: 63ac str r4, [r5, #56] ; 0x38 + 8002618: 62a5 str r5, [r4, #40] ; 0x28 + 800261a: b016 add sp, #88 ; 0x58 + 800261c: bd70 pop {r4, r5, r6, pc} + 800261e: bf00 nop + 8002620: 40005800 .word 0x40005800 + 8002624: 40020044 .word 0x40020044 + 8002628: 20000954 .word 0x20000954 + 800262c: 40020058 .word 0x40020058 + 8002630: 200009b4 .word 0x200009b4 + +08002634 <SystemClock_Config>: + 8002634: b500 push {lr} + 8002636: b09b sub sp, #108 ; 0x6c + 8002638: 2248 movs r2, #72 ; 0x48 + 800263a: 2100 movs r1, #0 + 800263c: a808 add r0, sp, #32 + 800263e: f011 fedb bl 80143f8 <memset> + 8002642: 2218 movs r2, #24 + 8002644: 2100 movs r1, #0 + 8002646: a802 add r0, sp, #8 + 8002648: f011 fed6 bl 80143f8 <memset> + 800264c: f006 fbe4 bl 8008e18 <HAL_PWR_EnableBkUpAccess> + 8002650: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002654: 2001 movs r0, #1 + 8002656: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 800265a: f023 0318 bic.w r3, r3, #24 + 800265e: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8002662: f8d2 3400 ldr.w r3, [r2, #1024] ; 0x400 + 8002666: f423 63c0 bic.w r3, r3, #1536 ; 0x600 + 800266a: f443 7300 orr.w r3, r3, #512 ; 0x200 + 800266e: f8c2 3400 str.w r3, [r2, #1024] ; 0x400 + 8002672: f8d2 3400 ldr.w r3, [r2, #1024] ; 0x400 + 8002676: f403 63c0 and.w r3, r3, #1536 ; 0x600 + 800267a: 9301 str r3, [sp, #4] + 800267c: 9b01 ldr r3, [sp, #4] + 800267e: 2324 movs r3, #36 ; 0x24 + 8002680: 9308 str r3, [sp, #32] + 8002682: 2381 movs r3, #129 ; 0x81 + 8002684: 930b str r3, [sp, #44] ; 0x2c + 8002686: 2300 movs r3, #0 + 8002688: e9cd 0310 strd r0, r3, [sp, #64] ; 0x40 + 800268c: 22b0 movs r2, #176 ; 0xb0 + 800268e: a808 add r0, sp, #32 + 8002690: e9cd 2312 strd r2, r3, [sp, #72] ; 0x48 + 8002694: f006 fd38 bl 8009108 <HAL_RCC_OscConfig> + 8002698: b108 cbz r0, 800269e <SystemClock_Config+0x6a> + 800269a: b672 cpsid i + 800269c: e7fe b.n 800269c <SystemClock_Config+0x68> + 800269e: 234f movs r3, #79 ; 0x4f + 80026a0: e9cd 3002 strd r3, r0, [sp, #8] + 80026a4: e9cd 0004 strd r0, r0, [sp, #16] + 80026a8: e9cd 0006 strd r0, r0, [sp, #24] + 80026ac: 2102 movs r1, #2 + 80026ae: a802 add r0, sp, #8 + 80026b0: f006 ffc4 bl 800963c <HAL_RCC_ClockConfig> + 80026b4: b108 cbz r0, 80026ba <SystemClock_Config+0x86> + 80026b6: b672 cpsid i + 80026b8: e7fe b.n 80026b8 <SystemClock_Config+0x84> + 80026ba: b01b add sp, #108 ; 0x6c + 80026bc: f85d fb04 ldr.w pc, [sp], #4 + +080026c0 <main>: + 80026c0: b508 push {r3, lr} + 80026c2: f004 ff61 bl 8007588 <HAL_Init> + 80026c6: f7ff ffb5 bl 8002634 <SystemClock_Config> + 80026ca: f7ff fe75 bl 80023b8 <MX_GPIO_Init> + 80026ce: f7ff fc9e bl 800200e <MX_DMA_Init> + 80026d2: f7ff ff09 bl 80024e8 <MX_I2C2_Init> + 80026d6: f000 fe60 bl 800339a <MX_LoRaWAN_Init> + 80026da: f640 30b8 movw r0, #3000 ; 0xbb8 + 80026de: f000 fa5f bl 8002ba0 <HAL_Delay> + 80026e2: f000 fe61 bl 80033a8 <MX_LoRaWAN_Process> + 80026e6: e7fc b.n 80026e2 <main+0x22> + +080026e8 <Error_Handler>: + 80026e8: b672 cpsid i + 80026ea: e7fe b.n 80026ea <Error_Handler+0x2> + +080026ec <MX_RTC_Init>: + 80026ec: b500 push {lr} + 80026ee: b08d sub sp, #52 ; 0x34 + 80026f0: 222c movs r2, #44 ; 0x2c + 80026f2: 2100 movs r1, #0 + 80026f4: a801 add r0, sp, #4 + 80026f6: f011 fe7f bl 80143f8 <memset> + 80026fa: 4817 ldr r0, [pc, #92] ; (8002758 <MX_RTC_Init+0x6c>) + 80026fc: 4b17 ldr r3, [pc, #92] ; (800275c <MX_RTC_Init+0x70>) + 80026fe: 6003 str r3, [r0, #0] + 8002700: 231f movs r3, #31 + 8002702: 6083 str r3, [r0, #8] + 8002704: f04f 4280 mov.w r2, #1073741824 ; 0x40000000 + 8002708: 2300 movs r3, #0 + 800270a: e9c0 3304 strd r3, r3, [r0, #16] + 800270e: e9c0 2307 strd r2, r3, [r0, #28] + 8002712: 6183 str r3, [r0, #24] + 8002714: f44f 7380 mov.w r3, #256 ; 0x100 + 8002718: 6243 str r3, [r0, #36] ; 0x24 + 800271a: f007 fa39 bl 8009b90 <HAL_RTC_Init> + 800271e: b108 cbz r0, 8002724 <MX_RTC_Init+0x38> + 8002720: f7ff ffe2 bl 80026e8 <Error_Handler> + 8002724: 480c ldr r0, [pc, #48] ; (8002758 <MX_RTC_Init+0x6c>) + 8002726: f007 fb5f bl 8009de8 <HAL_RTCEx_SetSSRU_IT> + 800272a: b108 cbz r0, 8002730 <MX_RTC_Init+0x44> + 800272c: f7ff ffdc bl 80026e8 <Error_Handler> + 8002730: f04f 5300 mov.w r3, #536870912 ; 0x20000000 + 8002734: 2200 movs r2, #0 + 8002736: 9307 str r3, [sp, #28] + 8002738: 4807 ldr r0, [pc, #28] ; (8002758 <MX_RTC_Init+0x6c>) + 800273a: 9208 str r2, [sp, #32] + 800273c: f44f 7380 mov.w r3, #256 ; 0x100 + 8002740: a901 add r1, sp, #4 + 8002742: 9202 str r2, [sp, #8] + 8002744: 9206 str r2, [sp, #24] + 8002746: 930b str r3, [sp, #44] ; 0x2c + 8002748: f007 fa82 bl 8009c50 <HAL_RTC_SetAlarm_IT> + 800274c: b108 cbz r0, 8002752 <MX_RTC_Init+0x66> + 800274e: f7ff ffcb bl 80026e8 <Error_Handler> + 8002752: b00d add sp, #52 ; 0x34 + 8002754: f85d fb04 ldr.w pc, [sp], #4 + 8002758: 20000a68 .word 0x20000a68 + 800275c: 40002800 .word 0x40002800 + +08002760 <HAL_RTC_MspInit>: + 8002760: b510 push {r4, lr} + 8002762: 4604 mov r4, r0 + 8002764: b090 sub sp, #64 ; 0x40 + 8002766: 2238 movs r2, #56 ; 0x38 + 8002768: 2100 movs r1, #0 + 800276a: a802 add r0, sp, #8 + 800276c: f011 fe44 bl 80143f8 <memset> + 8002770: 6822 ldr r2, [r4, #0] + 8002772: 4b19 ldr r3, [pc, #100] ; (80027d8 <HAL_RTC_MspInit+0x78>) + 8002774: 429a cmp r2, r3 + 8002776: d12c bne.n 80027d2 <HAL_RTC_MspInit+0x72> + 8002778: f44f 3380 mov.w r3, #65536 ; 0x10000 + 800277c: 9302 str r3, [sp, #8] + 800277e: a802 add r0, sp, #8 + 8002780: f44f 7380 mov.w r3, #256 ; 0x100 + 8002784: 930f str r3, [sp, #60] ; 0x3c + 8002786: f007 f87d bl 8009884 <HAL_RCCEx_PeriphCLKConfig> + 800278a: b108 cbz r0, 8002790 <HAL_RTC_MspInit+0x30> + 800278c: f7ff ffac bl 80026e8 <Error_Handler> + 8002790: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002794: 2002 movs r0, #2 + 8002796: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 800279a: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 800279e: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 80027a2: 6d9a ldr r2, [r3, #88] ; 0x58 + 80027a4: f442 6280 orr.w r2, r2, #1024 ; 0x400 + 80027a8: 659a str r2, [r3, #88] ; 0x58 + 80027aa: 6d9b ldr r3, [r3, #88] ; 0x58 + 80027ac: 2200 movs r2, #0 + 80027ae: f403 6380 and.w r3, r3, #1024 ; 0x400 + 80027b2: 4611 mov r1, r2 + 80027b4: 9301 str r3, [sp, #4] + 80027b6: 9b01 ldr r3, [sp, #4] + 80027b8: f005 fb6e bl 8007e98 <HAL_NVIC_SetPriority> + 80027bc: 2002 movs r0, #2 + 80027be: f005 fb9d bl 8007efc <HAL_NVIC_EnableIRQ> + 80027c2: 2200 movs r2, #0 + 80027c4: 202a movs r0, #42 ; 0x2a + 80027c6: 4611 mov r1, r2 + 80027c8: f005 fb66 bl 8007e98 <HAL_NVIC_SetPriority> + 80027cc: 202a movs r0, #42 ; 0x2a + 80027ce: f005 fb95 bl 8007efc <HAL_NVIC_EnableIRQ> + 80027d2: b010 add sp, #64 ; 0x40 + 80027d4: bd10 pop {r4, pc} + 80027d6: bf00 nop + 80027d8: 40002800 .word 0x40002800 + +080027dc <PWR_EnterOffMode>: + 80027dc: 4770 bx lr + ... + +080027e0 <PWR_EnterStopMode>: + 80027e0: b508 push {r3, lr} + 80027e2: f004 fee7 bl 80075b4 <HAL_SuspendTick> + 80027e6: 4b04 ldr r3, [pc, #16] ; (80027f8 <PWR_EnterStopMode+0x18>) + 80027e8: 2001 movs r0, #1 + 80027ea: f8c3 0088 str.w r0, [r3, #136] ; 0x88 + 80027ee: e8bd 4008 ldmia.w sp!, {r3, lr} + 80027f2: f006 bb69 b.w 8008ec8 <HAL_PWREx_EnterSTOP2Mode> + 80027f6: bf00 nop + 80027f8: 58000400 .word 0x58000400 + +080027fc <PWR_ExitSleepMode>: + 80027fc: f004 bee1 b.w 80075c2 <HAL_ResumeTick> + +08002800 <PWR_ExitStopMode>: + 8002800: b508 push {r3, lr} + 8002802: f004 fede bl 80075c2 <HAL_ResumeTick> + 8002806: f000 fc83 bl 8003110 <vcom_Resume> + 800280a: f7ff fdd5 bl 80023b8 <MX_GPIO_Init> + 800280e: f7ff fbfe bl 800200e <MX_DMA_Init> + 8002812: e8bd 4008 ldmia.w sp!, {r3, lr} + 8002816: f7ff be67 b.w 80024e8 <MX_I2C2_Init> + +0800281a <PWR_EnterSleepMode>: + 800281a: b508 push {r3, lr} + 800281c: f004 feca bl 80075b4 <HAL_SuspendTick> + 8002820: e8bd 4008 ldmia.w sp!, {r3, lr} + 8002824: 2101 movs r1, #1 + 8002826: 2000 movs r0, #0 + 8002828: f006 bafe b.w 8008e28 <HAL_PWR_EnterSLEEPMode> + +0800282c <PWR_ExitOffMode>: + 800282c: 4770 bx lr + +0800282e <HAL_MspInit>: + 800282e: 4770 bx lr + +08002830 <NMI_Handler>: + 8002830: e7fe b.n 8002830 <NMI_Handler> + +08002832 <HardFault_Handler>: + 8002832: e7fe b.n 8002832 <HardFault_Handler> + +08002834 <MemManage_Handler>: + 8002834: e7fe b.n 8002834 <MemManage_Handler> + +08002836 <BusFault_Handler>: + 8002836: e7fe b.n 8002836 <BusFault_Handler> + +08002838 <UsageFault_Handler>: + 8002838: e7fe b.n 8002838 <UsageFault_Handler> + +0800283a <SVC_Handler>: + 800283a: 4770 bx lr + +0800283c <DebugMon_Handler>: + 800283c: 4770 bx lr + +0800283e <PendSV_Handler>: + 800283e: 4770 bx lr + +08002840 <SysTick_Handler>: + 8002840: 4770 bx lr + ... + +08002844 <TAMP_STAMP_LSECSS_SSRU_IRQHandler>: + 8002844: 4801 ldr r0, [pc, #4] ; (800284c <TAMP_STAMP_LSECSS_SSRU_IRQHandler+0x8>) + 8002846: f007 baf5 b.w 8009e34 <HAL_RTCEx_SSRUIRQHandler> + 800284a: bf00 nop + 800284c: 20000a68 .word 0x20000a68 + +08002850 <EXTI0_IRQHandler>: + 8002850: 2001 movs r0, #1 + 8002852: f005 bfa7 b.w 80087a4 <HAL_GPIO_EXTI_IRQHandler> + +08002856 <EXTI1_IRQHandler>: + 8002856: 2002 movs r0, #2 + 8002858: f005 bfa4 b.w 80087a4 <HAL_GPIO_EXTI_IRQHandler> + +0800285c <DMA1_Channel2_IRQHandler>: + 800285c: 4770 bx lr + +0800285e <DMA1_Channel3_IRQHandler>: + 800285e: 4770 bx lr + +08002860 <DMA1_Channel4_IRQHandler>: + 8002860: 4801 ldr r0, [pc, #4] ; (8002868 <DMA1_Channel4_IRQHandler+0x8>) + 8002862: f005 bd25 b.w 80082b0 <HAL_DMA_IRQHandler> + 8002866: bf00 nop + 8002868: 20000954 .word 0x20000954 + +0800286c <DMA1_Channel5_IRQHandler>: + 800286c: 4801 ldr r0, [pc, #4] ; (8002874 <DMA1_Channel5_IRQHandler+0x8>) + 800286e: f005 bd1f b.w 80082b0 <HAL_DMA_IRQHandler> + 8002872: bf00 nop + 8002874: 20000b40 .word 0x20000b40 + +08002878 <DMA1_Channel6_IRQHandler>: + 8002878: 4801 ldr r0, [pc, #4] ; (8002880 <DMA1_Channel6_IRQHandler+0x8>) + 800287a: f005 bd19 b.w 80082b0 <HAL_DMA_IRQHandler> + 800287e: bf00 nop + 8002880: 20000ae0 .word 0x20000ae0 + +08002884 <DMA1_Channel7_IRQHandler>: + 8002884: f7ff bff2 b.w 800286c <DMA1_Channel5_IRQHandler> + +08002888 <EXTI4_IRQHandler>: + 8002888: 4770 bx lr + +0800288a <EXTI9_5_IRQHandler>: + 800288a: 2020 movs r0, #32 + 800288c: f005 bf8a b.w 80087a4 <HAL_GPIO_EXTI_IRQHandler> + +08002890 <EXTI15_10_IRQHandler>: + 8002890: 4770 bx lr + ... + +08002894 <USART2_IRQHandler>: + 8002894: 4801 ldr r0, [pc, #4] ; (800289c <USART2_IRQHandler+0x8>) + 8002896: f007 be91 b.w 800a5bc <HAL_UART_IRQHandler> + 800289a: bf00 nop + 800289c: 20000ba0 .word 0x20000ba0 + +080028a0 <RTC_Alarm_IRQHandler>: + 80028a0: 4801 ldr r0, [pc, #4] ; (80028a8 <RTC_Alarm_IRQHandler+0x8>) + 80028a2: f007 b8f9 b.w 8009a98 <HAL_RTC_AlarmIRQHandler> + 80028a6: bf00 nop + 80028a8: 20000a68 .word 0x20000a68 + +080028ac <SUBGHZ_Radio_IRQHandler>: + 80028ac: 4801 ldr r0, [pc, #4] ; (80028b4 <SUBGHZ_Radio_IRQHandler+0x8>) + 80028ae: f007 bcec b.w 800a28a <HAL_SUBGHZ_IRQHandler> + 80028b2: bf00 nop + 80028b4: 20000acc .word 0x20000acc + +080028b8 <sts_hmac_sha1>: + 80028b8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 80028bc: b089 sub sp, #36 ; 0x24 + 80028be: 4680 mov r8, r0 + 80028c0: 2000 movs r0, #0 + 80028c2: 9e10 ldr r6, [sp, #64] ; 0x40 + 80028c4: 9007 str r0, [sp, #28] + 80028c6: 4689 mov r9, r1 + 80028c8: 4615 mov r5, r2 + 80028ca: 461f mov r7, r3 + 80028cc: f7fd fcac bl 8000228 <cmox_initialize> + 80028d0: b9f0 cbnz r0, 8002910 <sts_hmac_sha1+0x58> + 80028d2: 4c10 ldr r4, [pc, #64] ; (8002914 <sts_hmac_sha1+0x5c>) + 80028d4: e9cd 9000 strd r9, r0, [sp] + 80028d8: e9cd 0402 strd r0, r4, [sp, #8] + 80028dc: ab07 add r3, sp, #28 + 80028de: 480e ldr r0, [pc, #56] ; (8002918 <sts_hmac_sha1+0x60>) + 80028e0: 9305 str r3, [sp, #20] + 80028e2: 2314 movs r3, #20 + 80028e4: 9304 str r3, [sp, #16] + 80028e6: 463a mov r2, r7 + 80028e8: 4643 mov r3, r8 + 80028ea: 4629 mov r1, r5 + 80028ec: 6800 ldr r0, [r0, #0] + 80028ee: f7fd fd65 bl 80003bc <cmox_mac_compute> + 80028f2: 4623 mov r3, r4 + 80028f4: 4632 mov r2, r6 + 80028f6: f104 0114 add.w r1, r4, #20 + 80028fa: f853 4b04 ldr.w r4, [r3], #4 + 80028fe: f842 4b04 str.w r4, [r2], #4 + 8002902: 428b cmp r3, r1 + 8002904: d1f9 bne.n 80028fa <sts_hmac_sha1+0x42> + 8002906: 9b07 ldr r3, [sp, #28] + 8002908: 7533 strb r3, [r6, #20] + 800290a: b009 add sp, #36 ; 0x24 + 800290c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8002910: 2001 movs r0, #1 + 8002912: e7fa b.n 800290a <sts_hmac_sha1+0x52> + 8002914: 20000aa0 .word 0x20000aa0 + 8002918: 080145f8 .word 0x080145f8 + +0800291c <sts_hmac_verify>: + 800291c: b5f0 push {r4, r5, r6, r7, lr} + 800291e: 4d1b ldr r5, [pc, #108] ; (800298c <sts_hmac_verify+0x70>) + 8002920: 4f1b ldr r7, [pc, #108] ; (8002990 <sts_hmac_verify+0x74>) + 8002922: b085 sub sp, #20 + 8002924: 2300 movs r3, #0 + 8002926: 223c movs r2, #60 ; 0x3c + 8002928: a802 add r0, sp, #8 + 800292a: e9cd 3302 strd r3, r3, [sp, #8] + 800292e: 756a strb r2, [r5, #21] + 8002930: 752b strb r3, [r5, #20] + 8002932: f000 f8d7 bl 8002ae4 <GetUniqueId> + 8002936: 4817 ldr r0, [pc, #92] ; (8002994 <sts_hmac_verify+0x78>) + 8002938: 9500 str r5, [sp, #0] + 800293a: 2304 movs r3, #4 + 800293c: aa03 add r2, sp, #12 + 800293e: 2112 movs r1, #18 + 8002940: f7ff ffba bl 80028b8 <sts_hmac_sha1> + 8002944: 2414 movs r4, #20 + 8002946: 462e mov r6, r5 + 8002948: f815 3b01 ldrb.w r3, [r5], #1 + 800294c: 9300 str r3, [sp, #0] + 800294e: 2200 movs r2, #0 + 8002950: 463b mov r3, r7 + 8002952: 4611 mov r1, r2 + 8002954: 2002 movs r0, #2 + 8002956: 3c01 subs r4, #1 + 8002958: f011 f80e bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800295c: f014 04ff ands.w r4, r4, #255 ; 0xff + 8002960: d1f2 bne.n 8002948 <sts_hmac_verify+0x2c> + 8002962: 490d ldr r1, [pc, #52] ; (8002998 <sts_hmac_verify+0x7c>) + 8002964: 4809 ldr r0, [pc, #36] ; (800298c <sts_hmac_verify+0x70>) + 8002966: 2214 movs r2, #20 + 8002968: f011 fd36 bl 80143d8 <memcmp> + 800296c: 4605 mov r5, r0 + 800296e: b148 cbz r0, 8002984 <sts_hmac_verify+0x68> + 8002970: 4b0a ldr r3, [pc, #40] ; (800299c <sts_hmac_verify+0x80>) + 8002972: 7574 strb r4, [r6, #21] + 8002974: 4622 mov r2, r4 + 8002976: 4621 mov r1, r4 + 8002978: 2002 movs r0, #2 + 800297a: f010 fffd bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800297e: 4628 mov r0, r5 + 8002980: b005 add sp, #20 + 8002982: bdf0 pop {r4, r5, r6, r7, pc} + 8002984: 2301 movs r3, #1 + 8002986: 7573 strb r3, [r6, #21] + 8002988: 4b05 ldr r3, [pc, #20] ; (80029a0 <sts_hmac_verify+0x84>) + 800298a: e7f3 b.n 8002974 <sts_hmac_verify+0x58> + 800298c: 20000ab4 .word 0x20000ab4 + 8002990: 08014620 .word 0x08014620 + 8002994: 08014657 .word 0x08014657 + 8002998: 20000e52 .word 0x20000e52 + 800299c: 08014628 .word 0x08014628 + 80029a0: 0801463f .word 0x0801463f + +080029a4 <MX_SUBGHZ_Init>: + 80029a4: 4805 ldr r0, [pc, #20] ; (80029bc <MX_SUBGHZ_Init+0x18>) + 80029a6: b508 push {r3, lr} + 80029a8: 2308 movs r3, #8 + 80029aa: 6003 str r3, [r0, #0] + 80029ac: f007 fa88 bl 8009ec0 <HAL_SUBGHZ_Init> + 80029b0: b118 cbz r0, 80029ba <MX_SUBGHZ_Init+0x16> + 80029b2: e8bd 4008 ldmia.w sp!, {r3, lr} + 80029b6: f7ff be97 b.w 80026e8 <Error_Handler> + 80029ba: bd08 pop {r3, pc} + 80029bc: 20000acc .word 0x20000acc + +080029c0 <HAL_SUBGHZ_MspInit>: + 80029c0: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80029c4: b507 push {r0, r1, r2, lr} + 80029c6: 6e5a ldr r2, [r3, #100] ; 0x64 + 80029c8: f042 0201 orr.w r2, r2, #1 + 80029cc: 665a str r2, [r3, #100] ; 0x64 + 80029ce: 6e5b ldr r3, [r3, #100] ; 0x64 + 80029d0: 2200 movs r2, #0 + 80029d2: f003 0301 and.w r3, r3, #1 + 80029d6: 9301 str r3, [sp, #4] + 80029d8: 4611 mov r1, r2 + 80029da: 2032 movs r0, #50 ; 0x32 + 80029dc: 9b01 ldr r3, [sp, #4] + 80029de: f005 fa5b bl 8007e98 <HAL_NVIC_SetPriority> + 80029e2: 2032 movs r0, #50 ; 0x32 + 80029e4: b003 add sp, #12 + 80029e6: f85d eb04 ldr.w lr, [sp], #4 + 80029ea: f005 ba87 b.w 8007efc <HAL_NVIC_EnableIRQ> + ... + +080029f0 <tiny_snprintf_like.constprop.0>: + 80029f0: b40c push {r2, r3} + 80029f2: b507 push {r0, r1, r2, lr} + 80029f4: 4a05 ldr r2, [pc, #20] ; (8002a0c <tiny_snprintf_like.constprop.0+0x1c>) + 80029f6: ab05 add r3, sp, #20 + 80029f8: 2110 movs r1, #16 + 80029fa: 9301 str r3, [sp, #4] + 80029fc: f011 fbce bl 801419c <tiny_vsnprintf_like> + 8002a00: b003 add sp, #12 + 8002a02: f85d eb04 ldr.w lr, [sp], #4 + 8002a06: b002 add sp, #8 + 8002a08: 4770 bx lr + 8002a0a: bf00 nop + 8002a0c: 08014669 .word 0x08014669 + +08002a10 <TimestampNow>: + 8002a10: b530 push {r4, r5, lr} + 8002a12: b085 sub sp, #20 + 8002a14: 4604 mov r4, r0 + 8002a16: a802 add r0, sp, #8 + 8002a18: 460d mov r5, r1 + 8002a1a: f011 f9eb bl 8013df4 <SysTimeGet> + 8002a1e: f9bd 300c ldrsh.w r3, [sp, #12] + 8002a22: 4a06 ldr r2, [pc, #24] ; (8002a3c <TimestampNow+0x2c>) + 8002a24: 9300 str r3, [sp, #0] + 8002a26: 2110 movs r1, #16 + 8002a28: 9b02 ldr r3, [sp, #8] + 8002a2a: 4620 mov r0, r4 + 8002a2c: f7ff ffe0 bl 80029f0 <tiny_snprintf_like.constprop.0> + 8002a30: 4620 mov r0, r4 + 8002a32: f7fe fcc5 bl 80013c0 <strlen> + 8002a36: 8028 strh r0, [r5, #0] + 8002a38: b005 add sp, #20 + 8002a3a: bd30 pop {r4, r5, pc} + 8002a3c: 08014669 .word 0x08014669 + +08002a40 <SystemApp_Init>: + 8002a40: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8002a44: b510 push {r4, lr} + 8002a46: 6893 ldr r3, [r2, #8] + 8002a48: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8002a4c: 6093 str r3, [r2, #8] + 8002a4e: f011 fa59 bl 8013f04 <UTIL_TIMER_Init> + 8002a52: 4b0e ldr r3, [pc, #56] ; (8002a8c <SystemApp_Init+0x4c>) + 8002a54: 2401 movs r4, #1 + 8002a56: 701c strb r4, [r3, #0] + 8002a58: f000 f8b6 bl 8002bc8 <DBG_Init> + 8002a5c: f010 ff22 bl 80138a4 <UTIL_ADV_TRACE_Init> + 8002a60: 480b ldr r0, [pc, #44] ; (8002a90 <SystemApp_Init+0x50>) + 8002a62: f010 ff39 bl 80138d8 <UTIL_ADV_TRACE_RegisterTimeStampFunction> + 8002a66: 4b0b ldr r3, [pc, #44] ; (8002a94 <SystemApp_Init+0x54>) + 8002a68: f44f 4200 mov.w r2, #32768 ; 0x8000 + 8002a6c: 611a str r2, [r3, #16] + 8002a6e: 4620 mov r0, r4 + 8002a70: f010 ff38 bl 80138e4 <UTIL_ADV_TRACE_SetVerboseLevel> + 8002a74: f7ff fa4c bl 8001f10 <SYS_InitMeasurement> + 8002a78: f000 f91c bl 8002cb4 <EnvSensors_Init> + 8002a7c: f011 f82e bl 8013adc <UTIL_LPM_Init> + 8002a80: 4621 mov r1, r4 + 8002a82: 4620 mov r0, r4 + 8002a84: e8bd 4010 ldmia.w sp!, {r4, lr} + 8002a88: f011 b848 b.w 8013b1c <UTIL_LPM_SetOffMode> + 8002a8c: 20000ad8 .word 0x20000ad8 + 8002a90: 08002a11 .word 0x08002a11 + 8002a94: 58004000 .word 0x58004000 + +08002a98 <UTIL_SEQ_Idle>: + 8002a98: f011 b856 b.w 8013b48 <UTIL_LPM_EnterLowPower> + +08002a9c <GetBatteryLevel>: + 8002a9c: b508 push {r3, lr} + 8002a9e: f7ff fa3f bl 8001f20 <SYS_GetBatteryLevel> + 8002aa2: f640 33b8 movw r3, #3000 ; 0xbb8 + 8002aa6: 4298 cmp r0, r3 + 8002aa8: d80c bhi.n 8002ac4 <GetBatteryLevel+0x28> + 8002aaa: f5b0 6fe1 cmp.w r0, #1800 ; 0x708 + 8002aae: d30b bcc.n 8002ac8 <GetBatteryLevel+0x2c> + 8002ab0: 23fe movs r3, #254 ; 0xfe + 8002ab2: f5a0 60e1 sub.w r0, r0, #1800 ; 0x708 + 8002ab6: 4358 muls r0, r3 + 8002ab8: f44f 6396 mov.w r3, #1200 ; 0x4b0 + 8002abc: fbb0 f0f3 udiv r0, r0, r3 + 8002ac0: b2c0 uxtb r0, r0 + 8002ac2: bd08 pop {r3, pc} + 8002ac4: 20fe movs r0, #254 ; 0xfe + 8002ac6: e7fc b.n 8002ac2 <GetBatteryLevel+0x26> + 8002ac8: 2000 movs r0, #0 + 8002aca: e7fa b.n 8002ac2 <GetBatteryLevel+0x26> + +08002acc <GetTemperatureLevel>: + 8002acc: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} + 8002ace: 4668 mov r0, sp + 8002ad0: f000 f8d4 bl 8002c7c <EnvSensors_Read> + 8002ad4: 9801 ldr r0, [sp, #4] + 8002ad6: f7fe fff5 bl 8001ac4 <__aeabi_f2iz> + 8002ada: b200 sxth r0, r0 + 8002adc: b007 add sp, #28 + 8002ade: f85d fb04 ldr.w pc, [sp], #4 + ... + +08002ae4 <GetUniqueId>: + 8002ae4: 4a19 ldr r2, [pc, #100] ; (8002b4c <GetUniqueId+0x68>) + 8002ae6: b538 push {r3, r4, r5, lr} + 8002ae8: f8d2 3580 ldr.w r3, [r2, #1408] ; 0x580 + 8002aec: 1c59 adds r1, r3, #1 + 8002aee: 4604 mov r4, r0 + 8002af0: d119 bne.n 8002b26 <GetUniqueId+0x42> + 8002af2: f004 fd6d bl 80075d0 <HAL_GetUIDw0> + 8002af6: 4605 mov r5, r0 + 8002af8: f004 fd76 bl 80075e8 <HAL_GetUIDw2> + 8002afc: 4405 add r5, r0 + 8002afe: f004 fd6d bl 80075dc <HAL_GetUIDw1> + 8002b02: 0e2b lsrs r3, r5, #24 + 8002b04: 71e3 strb r3, [r4, #7] + 8002b06: 0c2b lsrs r3, r5, #16 + 8002b08: 71a3 strb r3, [r4, #6] + 8002b0a: 0a2b lsrs r3, r5, #8 + 8002b0c: 7163 strb r3, [r4, #5] + 8002b0e: 0e03 lsrs r3, r0, #24 + 8002b10: 70e3 strb r3, [r4, #3] + 8002b12: f3c0 4207 ubfx r2, r0, #16, #8 + 8002b16: f3c0 2307 ubfx r3, r0, #8, #8 + 8002b1a: 7125 strb r5, [r4, #4] + 8002b1c: b2c0 uxtb r0, r0 + 8002b1e: 70a2 strb r2, [r4, #2] + 8002b20: 7063 strb r3, [r4, #1] + 8002b22: 7020 strb r0, [r4, #0] + 8002b24: bd38 pop {r3, r4, r5, pc} + 8002b26: 0a19 lsrs r1, r3, #8 + 8002b28: 71c3 strb r3, [r0, #7] + 8002b2a: 7181 strb r1, [r0, #6] + 8002b2c: 0c19 lsrs r1, r3, #16 + 8002b2e: 0e1b lsrs r3, r3, #24 + 8002b30: 7141 strb r1, [r0, #5] + 8002b32: 7103 strb r3, [r0, #4] + 8002b34: f8d2 3584 ldr.w r3, [r2, #1412] ; 0x584 + 8002b38: 70c3 strb r3, [r0, #3] + 8002b3a: f8d2 0584 ldr.w r0, [r2, #1412] ; 0x584 + 8002b3e: f3c0 2207 ubfx r2, r0, #8, #8 + 8002b42: f3c0 4307 ubfx r3, r0, #16, #8 + 8002b46: 0e00 lsrs r0, r0, #24 + 8002b48: e7e9 b.n 8002b1e <GetUniqueId+0x3a> + 8002b4a: bf00 nop + 8002b4c: 1fff7000 .word 0x1fff7000 + +08002b50 <GetDevAddr>: + 8002b50: b538 push {r3, r4, r5, lr} + 8002b52: 4b09 ldr r3, [pc, #36] ; (8002b78 <GetDevAddr+0x28>) + 8002b54: f8d3 3580 ldr.w r3, [r3, #1408] ; 0x580 + 8002b58: 6003 str r3, [r0, #0] + 8002b5a: 3301 adds r3, #1 + 8002b5c: 4605 mov r5, r0 + 8002b5e: d109 bne.n 8002b74 <GetDevAddr+0x24> + 8002b60: f004 fd36 bl 80075d0 <HAL_GetUIDw0> + 8002b64: 4604 mov r4, r0 + 8002b66: f004 fd39 bl 80075dc <HAL_GetUIDw1> + 8002b6a: 4044 eors r4, r0 + 8002b6c: f004 fd3c bl 80075e8 <HAL_GetUIDw2> + 8002b70: 4044 eors r4, r0 + 8002b72: 602c str r4, [r5, #0] + 8002b74: bd38 pop {r3, r4, r5, pc} + 8002b76: bf00 nop + 8002b78: 1fff7000 .word 0x1fff7000 + +08002b7c <UTIL_ADV_TRACE_PreSendHook>: + 8002b7c: 2101 movs r1, #1 + 8002b7e: 2002 movs r0, #2 + 8002b80: f010 bfb6 b.w 8013af0 <UTIL_LPM_SetStopMode> + +08002b84 <UTIL_ADV_TRACE_PostSendHook>: + 8002b84: 2100 movs r1, #0 + 8002b86: 2002 movs r0, #2 + 8002b88: f010 bfb2 b.w 8013af0 <UTIL_LPM_SetStopMode> + +08002b8c <HAL_InitTick>: + 8002b8c: 2000 movs r0, #0 + 8002b8e: 4770 bx lr + +08002b90 <HAL_GetTick>: + 8002b90: 4b02 ldr r3, [pc, #8] ; (8002b9c <HAL_GetTick+0xc>) + 8002b92: 7818 ldrb r0, [r3, #0] + 8002b94: b108 cbz r0, 8002b9a <HAL_GetTick+0xa> + 8002b96: f000 b8c5 b.w 8002d24 <TIMER_IF_GetTimerValue> + 8002b9a: 4770 bx lr + 8002b9c: 20000ad8 .word 0x20000ad8 + +08002ba0 <HAL_Delay>: + 8002ba0: b082 sub sp, #8 + 8002ba2: 9001 str r0, [sp, #4] + 8002ba4: 9801 ldr r0, [sp, #4] + 8002ba6: b002 add sp, #8 + 8002ba8: f000 b958 b.w 8002e5c <TIMER_IF_DelayMs> + +08002bac <LL_AHB2_GRP1_EnableClock.constprop.0>: + 8002bac: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002bb0: b082 sub sp, #8 + 8002bb2: 6cda ldr r2, [r3, #76] ; 0x4c + 8002bb4: f042 0202 orr.w r2, r2, #2 + 8002bb8: 64da str r2, [r3, #76] ; 0x4c + 8002bba: 6cdb ldr r3, [r3, #76] ; 0x4c + 8002bbc: f003 0302 and.w r3, r3, #2 + 8002bc0: 9301 str r3, [sp, #4] + 8002bc2: 9b01 ldr r3, [sp, #4] + 8002bc4: b002 add sp, #8 + 8002bc6: 4770 bx lr + +08002bc8 <DBG_Init>: + 8002bc8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8002bcc: 4a29 ldr r2, [pc, #164] ; (8002c74 <DBG_Init+0xac>) + 8002bce: 4c2a ldr r4, [pc, #168] ; (8002c78 <DBG_Init+0xb0>) + 8002bd0: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8002bd4: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 8002bd8: b087 sub sp, #28 + 8002bda: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8002bde: f004 fd09 bl 80075f4 <HAL_DBGMCU_EnableDBGSleepMode> + 8002be2: f004 fd0f bl 8007604 <HAL_DBGMCU_EnableDBGStopMode> + 8002be6: f004 fd15 bl 8007614 <HAL_DBGMCU_EnableDBGStandbyMode> + 8002bea: 2301 movs r3, #1 + 8002bec: 2500 movs r5, #0 + 8002bee: 9302 str r3, [sp, #8] + 8002bf0: f44f 5980 mov.w r9, #4096 ; 0x1000 + 8002bf4: 2303 movs r3, #3 + 8002bf6: a901 add r1, sp, #4 + 8002bf8: 4620 mov r0, r4 + 8002bfa: 9304 str r3, [sp, #16] + 8002bfc: f44f 5800 mov.w r8, #8192 ; 0x2000 + 8002c00: 9503 str r5, [sp, #12] + 8002c02: 9505 str r5, [sp, #20] + 8002c04: f7ff ffd2 bl 8002bac <LL_AHB2_GRP1_EnableClock.constprop.0> + 8002c08: f7ff ffd0 bl 8002bac <LL_AHB2_GRP1_EnableClock.constprop.0> + 8002c0c: f7ff ffce bl 8002bac <LL_AHB2_GRP1_EnableClock.constprop.0> + 8002c10: f7ff ffcc bl 8002bac <LL_AHB2_GRP1_EnableClock.constprop.0> + 8002c14: f8cd 9004 str.w r9, [sp, #4] + 8002c18: f005 fc98 bl 800854c <HAL_GPIO_Init> + 8002c1c: a901 add r1, sp, #4 + 8002c1e: 4620 mov r0, r4 + 8002c20: f44f 6700 mov.w r7, #2048 ; 0x800 + 8002c24: f8cd 8004 str.w r8, [sp, #4] + 8002c28: f005 fc90 bl 800854c <HAL_GPIO_Init> + 8002c2c: a901 add r1, sp, #4 + 8002c2e: 4620 mov r0, r4 + 8002c30: f44f 4600 mov.w r6, #32768 ; 0x8000 + 8002c34: 9701 str r7, [sp, #4] + 8002c36: f005 fc89 bl 800854c <HAL_GPIO_Init> + 8002c3a: a901 add r1, sp, #4 + 8002c3c: 4620 mov r0, r4 + 8002c3e: 9601 str r6, [sp, #4] + 8002c40: f005 fc84 bl 800854c <HAL_GPIO_Init> + 8002c44: 462a mov r2, r5 + 8002c46: 4649 mov r1, r9 + 8002c48: 4620 mov r0, r4 + 8002c4a: f005 fda5 bl 8008798 <HAL_GPIO_WritePin> + 8002c4e: 462a mov r2, r5 + 8002c50: 4641 mov r1, r8 + 8002c52: 4620 mov r0, r4 + 8002c54: f005 fda0 bl 8008798 <HAL_GPIO_WritePin> + 8002c58: 462a mov r2, r5 + 8002c5a: 4639 mov r1, r7 + 8002c5c: 4620 mov r0, r4 + 8002c5e: f005 fd9b bl 8008798 <HAL_GPIO_WritePin> + 8002c62: 462a mov r2, r5 + 8002c64: 4631 mov r1, r6 + 8002c66: 4620 mov r0, r4 + 8002c68: f005 fd96 bl 8008798 <HAL_GPIO_WritePin> + 8002c6c: b007 add sp, #28 + 8002c6e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8002c72: bf00 nop + 8002c74: 58000800 .word 0x58000800 + 8002c78: 48000400 .word 0x48000400 + +08002c7c <EnvSensors_Read>: + 8002c7c: b510 push {r4, lr} + 8002c7e: 4604 mov r4, r0 + 8002c80: f7ff f968 bl 8001f54 <SYS_GetTemperatureLevel> + 8002c84: 4b07 ldr r3, [pc, #28] ; (8002ca4 <EnvSensors_Read+0x28>) + 8002c86: 60a3 str r3, [r4, #8] + 8002c88: f340 200f sbfx r0, r0, #8, #16 + 8002c8c: f7fe fec6 bl 8001a1c <__aeabi_i2f> + 8002c90: 4b05 ldr r3, [pc, #20] ; (8002ca8 <EnvSensors_Read+0x2c>) + 8002c92: 4a06 ldr r2, [pc, #24] ; (8002cac <EnvSensors_Read+0x30>) + 8002c94: 6023 str r3, [r4, #0] + 8002c96: 4b06 ldr r3, [pc, #24] ; (8002cb0 <EnvSensors_Read+0x34>) + 8002c98: 6060 str r0, [r4, #4] + 8002c9a: e9c4 2303 strd r2, r3, [r4, #12] + 8002c9e: 2000 movs r0, #0 + 8002ca0: bd10 pop {r4, pc} + 8002ca2: bf00 nop + 8002ca4: 42480000 .word 0x42480000 + 8002ca8: 447a0000 .word 0x447a0000 + 8002cac: 003e090d .word 0x003e090d + 8002cb0: 000503ab .word 0x000503ab + +08002cb4 <EnvSensors_Init>: + 8002cb4: 2000 movs r0, #0 + 8002cb6: 4770 bx lr + +08002cb8 <TIMER_IF_GetTimerContext>: + 8002cb8: 4b01 ldr r3, [pc, #4] ; (8002cc0 <TIMER_IF_GetTimerContext+0x8>) + 8002cba: 6818 ldr r0, [r3, #0] + 8002cbc: 4770 bx lr + 8002cbe: bf00 nop + 8002cc0: 20000adc .word 0x20000adc + +08002cc4 <TIMER_IF_GetMinimumTimeout>: + 8002cc4: 2003 movs r0, #3 + 8002cc6: 4770 bx lr + +08002cc8 <TIMER_IF_Convert_ms2Tick>: + 8002cc8: b508 push {r3, lr} + 8002cca: 4601 mov r1, r0 + 8002ccc: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8002cd0: 2300 movs r3, #0 + 8002cd2: 0280 lsls r0, r0, #10 + 8002cd4: 0d89 lsrs r1, r1, #22 + 8002cd6: f7fe ff1b bl 8001b10 <__aeabi_uldivmod> + 8002cda: bd08 pop {r3, pc} + +08002cdc <TIMER_IF_Convert_Tick2ms>: + 8002cdc: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8002ce0: fba0 0303 umull r0, r3, r0, r3 + 8002ce4: 0a80 lsrs r0, r0, #10 + 8002ce6: ea40 5083 orr.w r0, r0, r3, lsl #22 + 8002cea: 4770 bx lr + +08002cec <GetTimerTicks>: + 8002cec: 4b03 ldr r3, [pc, #12] ; (8002cfc <GetTimerTicks+0x10>) + 8002cee: 6898 ldr r0, [r3, #8] + 8002cf0: 689a ldr r2, [r3, #8] + 8002cf2: 4290 cmp r0, r2 + 8002cf4: d1fb bne.n 8002cee <GetTimerTicks+0x2> + 8002cf6: 43c0 mvns r0, r0 + 8002cf8: 4770 bx lr + 8002cfa: bf00 nop + 8002cfc: 40002800 .word 0x40002800 + +08002d00 <TIMER_IF_SetTimerContext>: + 8002d00: b508 push {r3, lr} + 8002d02: f7ff fff3 bl 8002cec <GetTimerTicks> + 8002d06: 4b01 ldr r3, [pc, #4] ; (8002d0c <TIMER_IF_SetTimerContext+0xc>) + 8002d08: 6018 str r0, [r3, #0] + 8002d0a: bd08 pop {r3, pc} + 8002d0c: 20000adc .word 0x20000adc + +08002d10 <TIMER_IF_GetTimerElapsedTime>: + 8002d10: b508 push {r3, lr} + 8002d12: f7ff ffeb bl 8002cec <GetTimerTicks> + 8002d16: 4b02 ldr r3, [pc, #8] ; (8002d20 <TIMER_IF_GetTimerElapsedTime+0x10>) + 8002d18: 681b ldr r3, [r3, #0] + 8002d1a: 1ac0 subs r0, r0, r3 + 8002d1c: bd08 pop {r3, pc} + 8002d1e: bf00 nop + 8002d20: 20000adc .word 0x20000adc + +08002d24 <TIMER_IF_GetTimerValue>: + 8002d24: 4b02 ldr r3, [pc, #8] ; (8002d30 <TIMER_IF_GetTimerValue+0xc>) + 8002d26: 7818 ldrb r0, [r3, #0] + 8002d28: b108 cbz r0, 8002d2e <TIMER_IF_GetTimerValue+0xa> + 8002d2a: f7ff bfdf b.w 8002cec <GetTimerTicks> + 8002d2e: 4770 bx lr + 8002d30: 20000ad9 .word 0x20000ad9 + +08002d34 <TIMER_IF_StopTimer>: + 8002d34: b510 push {r4, lr} + 8002d36: 4b07 ldr r3, [pc, #28] ; (8002d54 <TIMER_IF_StopTimer+0x20>) + 8002d38: 4c07 ldr r4, [pc, #28] ; (8002d58 <TIMER_IF_StopTimer+0x24>) + 8002d3a: 2201 movs r2, #1 + 8002d3c: 65da str r2, [r3, #92] ; 0x5c + 8002d3e: f44f 7180 mov.w r1, #256 ; 0x100 + 8002d42: 4620 mov r0, r4 + 8002d44: f006 fe6e bl 8009a24 <HAL_RTC_DeactivateAlarm> + 8002d48: f04f 33ff mov.w r3, #4294967295 + 8002d4c: 6323 str r3, [r4, #48] ; 0x30 + 8002d4e: 2000 movs r0, #0 + 8002d50: bd10 pop {r4, pc} + 8002d52: bf00 nop + 8002d54: 40002800 .word 0x40002800 + 8002d58: 20000a68 .word 0x20000a68 + +08002d5c <TIMER_IF_BkUp_Write_Seconds>: + 8002d5c: 4602 mov r2, r0 + 8002d5e: 2100 movs r1, #0 + 8002d60: 4801 ldr r0, [pc, #4] ; (8002d68 <TIMER_IF_BkUp_Write_Seconds+0xc>) + 8002d62: f007 b878 b.w 8009e56 <HAL_RTCEx_BKUPWrite> + 8002d66: bf00 nop + 8002d68: 20000a68 .word 0x20000a68 + +08002d6c <TIMER_IF_BkUp_Write_SubSeconds>: + 8002d6c: 4602 mov r2, r0 + 8002d6e: 2101 movs r1, #1 + 8002d70: 4801 ldr r0, [pc, #4] ; (8002d78 <TIMER_IF_BkUp_Write_SubSeconds+0xc>) + 8002d72: f007 b870 b.w 8009e56 <HAL_RTCEx_BKUPWrite> + 8002d76: bf00 nop + 8002d78: 20000a68 .word 0x20000a68 + +08002d7c <TIMER_IF_StartTimer>: + 8002d7c: b510 push {r4, lr} + 8002d7e: b08c sub sp, #48 ; 0x30 + 8002d80: 222c movs r2, #44 ; 0x2c + 8002d82: 2100 movs r1, #0 + 8002d84: 4604 mov r4, r0 + 8002d86: a801 add r0, sp, #4 + 8002d88: f011 fb36 bl 80143f8 <memset> + 8002d8c: f7ff ffd2 bl 8002d34 <TIMER_IF_StopTimer> + 8002d90: 4b0c ldr r3, [pc, #48] ; (8002dc4 <TIMER_IF_StartTimer+0x48>) + 8002d92: 480d ldr r0, [pc, #52] ; (8002dc8 <TIMER_IF_StartTimer+0x4c>) + 8002d94: 681b ldr r3, [r3, #0] + 8002d96: 441c add r4, r3 + 8002d98: 2300 movs r3, #0 + 8002d9a: 9308 str r3, [sp, #32] + 8002d9c: 9306 str r3, [sp, #24] + 8002d9e: f04f 5300 mov.w r3, #536870912 ; 0x20000000 + 8002da2: 43e4 mvns r4, r4 + 8002da4: 9307 str r3, [sp, #28] + 8002da6: 2201 movs r2, #1 + 8002da8: f44f 7380 mov.w r3, #256 ; 0x100 + 8002dac: a901 add r1, sp, #4 + 8002dae: 9402 str r4, [sp, #8] + 8002db0: 930b str r3, [sp, #44] ; 0x2c + 8002db2: f006 ff4d bl 8009c50 <HAL_RTC_SetAlarm_IT> + 8002db6: b108 cbz r0, 8002dbc <TIMER_IF_StartTimer+0x40> + 8002db8: f7ff fc96 bl 80026e8 <Error_Handler> + 8002dbc: 2000 movs r0, #0 + 8002dbe: b00c add sp, #48 ; 0x30 + 8002dc0: bd10 pop {r4, pc} + 8002dc2: bf00 nop + 8002dc4: 20000adc .word 0x20000adc + 8002dc8: 20000a68 .word 0x20000a68 + +08002dcc <TIMER_IF_GetTime>: + 8002dcc: b538 push {r3, r4, r5, lr} + 8002dce: 4605 mov r5, r0 + 8002dd0: f7ff ff8c bl 8002cec <GetTimerTicks> + 8002dd4: 2102 movs r1, #2 + 8002dd6: 4604 mov r4, r0 + 8002dd8: 4807 ldr r0, [pc, #28] ; (8002df8 <TIMER_IF_GetTime+0x2c>) + 8002dda: f007 f843 bl 8009e64 <HAL_RTCEx_BKUPRead> + 8002dde: f3c4 0209 ubfx r2, r4, #0, #10 + 8002de2: f44f 717a mov.w r1, #1000 ; 0x3e8 + 8002de6: fba2 2101 umull r2, r1, r2, r1 + 8002dea: 0a92 lsrs r2, r2, #10 + 8002dec: 0aa3 lsrs r3, r4, #10 + 8002dee: 802a strh r2, [r5, #0] + 8002df0: ea43 5080 orr.w r0, r3, r0, lsl #22 + 8002df4: bd38 pop {r3, r4, r5, pc} + 8002df6: bf00 nop + 8002df8: 20000a68 .word 0x20000a68 + +08002dfc <TIMER_IF_BkUp_Read_Seconds>: + 8002dfc: 4801 ldr r0, [pc, #4] ; (8002e04 <TIMER_IF_BkUp_Read_Seconds+0x8>) + 8002dfe: 2100 movs r1, #0 + 8002e00: f007 b830 b.w 8009e64 <HAL_RTCEx_BKUPRead> + 8002e04: 20000a68 .word 0x20000a68 + +08002e08 <TIMER_IF_BkUp_Read_SubSeconds>: + 8002e08: 4801 ldr r0, [pc, #4] ; (8002e10 <TIMER_IF_BkUp_Read_SubSeconds+0x8>) + 8002e0a: 2101 movs r1, #1 + 8002e0c: f007 b82a b.w 8009e64 <HAL_RTCEx_BKUPRead> + 8002e10: 20000a68 .word 0x20000a68 + +08002e14 <TIMER_IF_Init>: + 8002e14: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002e16: 4d0f ldr r5, [pc, #60] ; (8002e54 <TIMER_IF_Init+0x40>) + 8002e18: 782e ldrb r6, [r5, #0] + 8002e1a: b9ce cbnz r6, 8002e50 <TIMER_IF_Init+0x3c> + 8002e1c: 4c0e ldr r4, [pc, #56] ; (8002e58 <TIMER_IF_Init+0x44>) + 8002e1e: f04f 37ff mov.w r7, #4294967295 + 8002e22: 6327 str r7, [r4, #48] ; 0x30 + 8002e24: f7ff fc62 bl 80026ec <MX_RTC_Init> + 8002e28: f7ff ff84 bl 8002d34 <TIMER_IF_StopTimer> + 8002e2c: f44f 7180 mov.w r1, #256 ; 0x100 + 8002e30: 4620 mov r0, r4 + 8002e32: f006 fdf7 bl 8009a24 <HAL_RTC_DeactivateAlarm> + 8002e36: 4620 mov r0, r4 + 8002e38: 6327 str r7, [r4, #48] ; 0x30 + 8002e3a: f006 ffb7 bl 8009dac <HAL_RTCEx_EnableBypassShadow> + 8002e3e: 4632 mov r2, r6 + 8002e40: 4620 mov r0, r4 + 8002e42: 2102 movs r1, #2 + 8002e44: f007 f807 bl 8009e56 <HAL_RTCEx_BKUPWrite> + 8002e48: f7ff ff5a bl 8002d00 <TIMER_IF_SetTimerContext> + 8002e4c: 2301 movs r3, #1 + 8002e4e: 702b strb r3, [r5, #0] + 8002e50: 2000 movs r0, #0 + 8002e52: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8002e54: 20000ad9 .word 0x20000ad9 + 8002e58: 20000a68 .word 0x20000a68 + +08002e5c <TIMER_IF_DelayMs>: + 8002e5c: 4601 mov r1, r0 + 8002e5e: b510 push {r4, lr} + 8002e60: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8002e64: 2300 movs r3, #0 + 8002e66: 0280 lsls r0, r0, #10 + 8002e68: 0d89 lsrs r1, r1, #22 + 8002e6a: f7fe fe51 bl 8001b10 <__aeabi_uldivmod> + 8002e6e: 4601 mov r1, r0 + 8002e70: f7ff ff3c bl 8002cec <GetTimerTicks> + 8002e74: 4604 mov r4, r0 + 8002e76: f7ff ff39 bl 8002cec <GetTimerTicks> + 8002e7a: 1b03 subs r3, r0, r4 + 8002e7c: 428b cmp r3, r1 + 8002e7e: d300 bcc.n 8002e82 <TIMER_IF_DelayMs+0x26> + 8002e80: bd10 pop {r4, pc} + 8002e82: bf00 nop + 8002e84: e7f7 b.n 8002e76 <TIMER_IF_DelayMs+0x1a> + +08002e86 <HAL_RTC_AlarmAEventCallback>: + 8002e86: f011 b945 b.w 8014114 <UTIL_TIMER_IRQ_Handler> + ... + +08002e8c <HAL_RTCEx_SSRUEventCallback>: + 8002e8c: b510 push {r4, lr} + 8002e8e: 4c06 ldr r4, [pc, #24] ; (8002ea8 <HAL_RTCEx_SSRUEventCallback+0x1c>) + 8002e90: 2102 movs r1, #2 + 8002e92: 4620 mov r0, r4 + 8002e94: f006 ffe6 bl 8009e64 <HAL_RTCEx_BKUPRead> + 8002e98: 2102 movs r1, #2 + 8002e9a: 1c42 adds r2, r0, #1 + 8002e9c: 4620 mov r0, r4 + 8002e9e: e8bd 4010 ldmia.w sp!, {r4, lr} + 8002ea2: f006 bfd8 b.w 8009e56 <HAL_RTCEx_BKUPWrite> + 8002ea6: bf00 nop + 8002ea8: 20000a68 .word 0x20000a68 + +08002eac <MX_USART2_UART_Init>: + 8002eac: 4816 ldr r0, [pc, #88] ; (8002f08 <MX_USART2_UART_Init+0x5c>) + 8002eae: 4a17 ldr r2, [pc, #92] ; (8002f0c <MX_USART2_UART_Init+0x60>) + 8002eb0: b508 push {r3, lr} + 8002eb2: f44f 33e1 mov.w r3, #115200 ; 0x1c200 + 8002eb6: e9c0 2300 strd r2, r3, [r0] + 8002eba: 2300 movs r3, #0 + 8002ebc: 220c movs r2, #12 + 8002ebe: e9c0 3302 strd r3, r3, [r0, #8] + 8002ec2: e9c0 2305 strd r2, r3, [r0, #20] + 8002ec6: e9c0 3307 strd r3, r3, [r0, #28] + 8002eca: e9c0 3309 strd r3, r3, [r0, #36] ; 0x24 + 8002ece: 6103 str r3, [r0, #16] + 8002ed0: f008 f955 bl 800b17e <HAL_UART_Init> + 8002ed4: b108 cbz r0, 8002eda <MX_USART2_UART_Init+0x2e> + 8002ed6: f7ff fc07 bl 80026e8 <Error_Handler> + 8002eda: 480b ldr r0, [pc, #44] ; (8002f08 <MX_USART2_UART_Init+0x5c>) + 8002edc: 2100 movs r1, #0 + 8002ede: f008 faca bl 800b476 <HAL_UARTEx_SetTxFifoThreshold> + 8002ee2: b108 cbz r0, 8002ee8 <MX_USART2_UART_Init+0x3c> + 8002ee4: f7ff fc00 bl 80026e8 <Error_Handler> + 8002ee8: 4807 ldr r0, [pc, #28] ; (8002f08 <MX_USART2_UART_Init+0x5c>) + 8002eea: 2100 movs r1, #0 + 8002eec: f008 fae3 bl 800b4b6 <HAL_UARTEx_SetRxFifoThreshold> + 8002ef0: b108 cbz r0, 8002ef6 <MX_USART2_UART_Init+0x4a> + 8002ef2: f7ff fbf9 bl 80026e8 <Error_Handler> + 8002ef6: 4804 ldr r0, [pc, #16] ; (8002f08 <MX_USART2_UART_Init+0x5c>) + 8002ef8: f008 fa9d bl 800b436 <HAL_UARTEx_EnableFifoMode> + 8002efc: b118 cbz r0, 8002f06 <MX_USART2_UART_Init+0x5a> + 8002efe: e8bd 4008 ldmia.w sp!, {r3, lr} + 8002f02: f7ff bbf1 b.w 80026e8 <Error_Handler> + 8002f06: bd08 pop {r3, pc} + 8002f08: 20000ba0 .word 0x20000ba0 + 8002f0c: 40004400 .word 0x40004400 + +08002f10 <HAL_UART_MspInit>: + 8002f10: b570 push {r4, r5, r6, lr} + 8002f12: b096 sub sp, #88 ; 0x58 + 8002f14: 4605 mov r5, r0 + 8002f16: 2214 movs r2, #20 + 8002f18: 2100 movs r1, #0 + 8002f1a: a803 add r0, sp, #12 + 8002f1c: f011 fa6c bl 80143f8 <memset> + 8002f20: 2238 movs r2, #56 ; 0x38 + 8002f22: 2100 movs r1, #0 + 8002f24: a808 add r0, sp, #32 + 8002f26: f011 fa67 bl 80143f8 <memset> + 8002f2a: 682a ldr r2, [r5, #0] + 8002f2c: 4b33 ldr r3, [pc, #204] ; (8002ffc <HAL_UART_MspInit+0xec>) + 8002f2e: 429a cmp r2, r3 + 8002f30: d161 bne.n 8002ff6 <HAL_UART_MspInit+0xe6> + 8002f32: 2302 movs r3, #2 + 8002f34: 9308 str r3, [sp, #32] + 8002f36: a808 add r0, sp, #32 + 8002f38: 4b31 ldr r3, [pc, #196] ; (8003000 <HAL_UART_MspInit+0xf0>) + 8002f3a: 930a str r3, [sp, #40] ; 0x28 + 8002f3c: f006 fca2 bl 8009884 <HAL_RCCEx_PeriphCLKConfig> + 8002f40: b108 cbz r0, 8002f46 <HAL_UART_MspInit+0x36> + 8002f42: f7ff fbd1 bl 80026e8 <Error_Handler> + 8002f46: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8002f4a: 210c movs r1, #12 + 8002f4c: 6d9a ldr r2, [r3, #88] ; 0x58 + 8002f4e: 4c2d ldr r4, [pc, #180] ; (8003004 <HAL_UART_MspInit+0xf4>) + 8002f50: f442 3200 orr.w r2, r2, #131072 ; 0x20000 + 8002f54: 659a str r2, [r3, #88] ; 0x58 + 8002f56: 6d9a ldr r2, [r3, #88] ; 0x58 + 8002f58: f402 3200 and.w r2, r2, #131072 ; 0x20000 + 8002f5c: 9202 str r2, [sp, #8] + 8002f5e: 9a02 ldr r2, [sp, #8] + 8002f60: 6cda ldr r2, [r3, #76] ; 0x4c + 8002f62: f042 0201 orr.w r2, r2, #1 + 8002f66: 64da str r2, [r3, #76] ; 0x4c + 8002f68: 6cdb ldr r3, [r3, #76] ; 0x4c + 8002f6a: f003 0301 and.w r3, r3, #1 + 8002f6e: 9301 str r3, [sp, #4] + 8002f70: 9b01 ldr r3, [sp, #4] + 8002f72: 2302 movs r3, #2 + 8002f74: 2600 movs r6, #0 + 8002f76: e9cd 1303 strd r1, r3, [sp, #12] + 8002f7a: 2303 movs r3, #3 + 8002f7c: e9cd 6305 strd r6, r3, [sp, #20] + 8002f80: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8002f84: 2307 movs r3, #7 + 8002f86: a903 add r1, sp, #12 + 8002f88: 9307 str r3, [sp, #28] + 8002f8a: f005 fadf bl 800854c <HAL_GPIO_Init> + 8002f8e: 481e ldr r0, [pc, #120] ; (8003008 <HAL_UART_MspInit+0xf8>) + 8002f90: 6226 str r6, [r4, #32] + 8002f92: 2314 movs r3, #20 + 8002f94: e9c4 0300 strd r0, r3, [r4] + 8002f98: 2310 movs r3, #16 + 8002f9a: e9c4 3602 strd r3, r6, [r4, #8] + 8002f9e: 4620 mov r0, r4 + 8002fa0: 2380 movs r3, #128 ; 0x80 + 8002fa2: e9c4 3604 strd r3, r6, [r4, #16] + 8002fa6: e9c4 6606 strd r6, r6, [r4, #24] + 8002faa: f005 f807 bl 8007fbc <HAL_DMA_Init> + 8002fae: b108 cbz r0, 8002fb4 <HAL_UART_MspInit+0xa4> + 8002fb0: f7ff fb9a bl 80026e8 <Error_Handler> + 8002fb4: 4a15 ldr r2, [pc, #84] ; (800300c <HAL_UART_MspInit+0xfc>) + 8002fb6: 67ec str r4, [r5, #124] ; 0x7c + 8002fb8: 62a5 str r5, [r4, #40] ; 0x28 + 8002fba: 4c15 ldr r4, [pc, #84] ; (8003010 <HAL_UART_MspInit+0x100>) + 8002fbc: 2313 movs r3, #19 + 8002fbe: e9c4 2300 strd r2, r3, [r4] + 8002fc2: 4620 mov r0, r4 + 8002fc4: 2300 movs r3, #0 + 8002fc6: 2280 movs r2, #128 ; 0x80 + 8002fc8: e9c4 3302 strd r3, r3, [r4, #8] + 8002fcc: e9c4 2304 strd r2, r3, [r4, #16] + 8002fd0: e9c4 3306 strd r3, r3, [r4, #24] + 8002fd4: 6223 str r3, [r4, #32] + 8002fd6: f004 fff1 bl 8007fbc <HAL_DMA_Init> + 8002fda: b108 cbz r0, 8002fe0 <HAL_UART_MspInit+0xd0> + 8002fdc: f7ff fb84 bl 80026e8 <Error_Handler> + 8002fe0: 2025 movs r0, #37 ; 0x25 + 8002fe2: f8c5 4080 str.w r4, [r5, #128] ; 0x80 + 8002fe6: 2200 movs r2, #0 + 8002fe8: 2102 movs r1, #2 + 8002fea: 62a5 str r5, [r4, #40] ; 0x28 + 8002fec: f004 ff54 bl 8007e98 <HAL_NVIC_SetPriority> + 8002ff0: 2025 movs r0, #37 ; 0x25 + 8002ff2: f004 ff83 bl 8007efc <HAL_NVIC_EnableIRQ> + 8002ff6: b016 add sp, #88 ; 0x58 + 8002ff8: bd70 pop {r4, r5, r6, pc} + 8002ffa: bf00 nop + 8002ffc: 40004400 .word 0x40004400 + 8003000: 000c0004 .word 0x000c0004 + 8003004: 20000b40 .word 0x20000b40 + 8003008: 40020080 .word 0x40020080 + 800300c: 4002006c .word 0x4002006c + 8003010: 20000ae0 .word 0x20000ae0 + +08003014 <HAL_UART_MspDeInit>: + 8003014: 6802 ldr r2, [r0, #0] + 8003016: 4b0e ldr r3, [pc, #56] ; (8003050 <HAL_UART_MspDeInit+0x3c>) + 8003018: 429a cmp r2, r3 + 800301a: b510 push {r4, lr} + 800301c: 4604 mov r4, r0 + 800301e: d116 bne.n 800304e <HAL_UART_MspDeInit+0x3a> + 8003020: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8003024: 210c movs r1, #12 + 8003026: 6d93 ldr r3, [r2, #88] ; 0x58 + 8003028: f423 3300 bic.w r3, r3, #131072 ; 0x20000 + 800302c: 6593 str r3, [r2, #88] ; 0x58 + 800302e: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8003032: f005 fb37 bl 80086a4 <HAL_GPIO_DeInit> + 8003036: 6fe0 ldr r0, [r4, #124] ; 0x7c + 8003038: f005 f834 bl 80080a4 <HAL_DMA_DeInit> + 800303c: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 8003040: f005 f830 bl 80080a4 <HAL_DMA_DeInit> + 8003044: e8bd 4010 ldmia.w sp!, {r4, lr} + 8003048: 2025 movs r0, #37 ; 0x25 + 800304a: f004 bf65 b.w 8007f18 <HAL_NVIC_DisableIRQ> + 800304e: bd10 pop {r4, pc} + 8003050: 40004400 .word 0x40004400 + +08003054 <vcom_Trace_DMA>: + 8003054: b508 push {r3, lr} + 8003056: 460a mov r2, r1 + 8003058: 4601 mov r1, r0 + 800305a: 4802 ldr r0, [pc, #8] ; (8003064 <vcom_Trace_DMA+0x10>) + 800305c: f007 fa12 bl 800a484 <HAL_UART_Transmit_DMA> + 8003060: 2000 movs r0, #0 + 8003062: bd08 pop {r3, pc} + 8003064: 20000ba0 .word 0x20000ba0 + +08003068 <vcom_ReceiveInit>: + 8003068: b513 push {r0, r1, r4, lr} + 800306a: 4b11 ldr r3, [pc, #68] ; (80030b0 <vcom_ReceiveInit+0x48>) + 800306c: 4c11 ldr r4, [pc, #68] ; (80030b4 <vcom_ReceiveInit+0x4c>) + 800306e: 6018 str r0, [r3, #0] + 8003070: f44f 1300 mov.w r3, #2097152 ; 0x200000 + 8003074: 9300 str r3, [sp, #0] + 8003076: ab02 add r3, sp, #8 + 8003078: e913 0006 ldmdb r3, {r1, r2} + 800307c: 4620 mov r0, r4 + 800307e: f008 f97e bl 800b37e <HAL_UARTEx_StopModeWakeUpSourceConfig> + 8003082: 6823 ldr r3, [r4, #0] + 8003084: 69da ldr r2, [r3, #28] + 8003086: 03d1 lsls r1, r2, #15 + 8003088: d4fc bmi.n 8003084 <vcom_ReceiveInit+0x1c> + 800308a: 69da ldr r2, [r3, #28] + 800308c: 0252 lsls r2, r2, #9 + 800308e: d5fc bpl.n 800308a <vcom_ReceiveInit+0x22> + 8003090: 689a ldr r2, [r3, #8] + 8003092: 4808 ldr r0, [pc, #32] ; (80030b4 <vcom_ReceiveInit+0x4c>) + 8003094: f442 0280 orr.w r2, r2, #4194304 ; 0x400000 + 8003098: 609a str r2, [r3, #8] + 800309a: f008 f9b6 bl 800b40a <HAL_UARTEx_EnableStopMode> + 800309e: 4906 ldr r1, [pc, #24] ; (80030b8 <vcom_ReceiveInit+0x50>) + 80030a0: 4804 ldr r0, [pc, #16] ; (80030b4 <vcom_ReceiveInit+0x4c>) + 80030a2: 2201 movs r2, #1 + 80030a4: f008 f924 bl 800b2f0 <HAL_UART_Receive_IT> + 80030a8: 2000 movs r0, #0 + 80030aa: b002 add sp, #8 + 80030ac: bd10 pop {r4, pc} + 80030ae: bf00 nop + 80030b0: 20000c34 .word 0x20000c34 + 80030b4: 20000ba0 .word 0x20000ba0 + 80030b8: 20000c3c .word 0x20000c3c + +080030bc <vcom_Init>: + 80030bc: b508 push {r3, lr} + 80030be: 4b07 ldr r3, [pc, #28] ; (80030dc <vcom_Init+0x20>) + 80030c0: 6018 str r0, [r3, #0] + 80030c2: f7fe ffa4 bl 800200e <MX_DMA_Init> + 80030c6: f7ff fef1 bl 8002eac <MX_USART2_UART_Init> + 80030ca: 4a05 ldr r2, [pc, #20] ; (80030e0 <vcom_Init+0x24>) + 80030cc: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 + 80030d0: f043 6300 orr.w r3, r3, #134217728 ; 0x8000000 + 80030d4: f8c2 3080 str.w r3, [r2, #128] ; 0x80 + 80030d8: 2000 movs r0, #0 + 80030da: bd08 pop {r3, pc} + 80030dc: 20000c38 .word 0x20000c38 + 80030e0: 58000800 .word 0x58000800 + +080030e4 <vcom_DeInit>: + 80030e4: b508 push {r3, lr} + 80030e6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80030ea: 4808 ldr r0, [pc, #32] ; (800310c <vcom_DeInit+0x28>) + 80030ec: 6b9a ldr r2, [r3, #56] ; 0x38 + 80030ee: f442 3200 orr.w r2, r2, #131072 ; 0x20000 + 80030f2: 639a str r2, [r3, #56] ; 0x38 + 80030f4: 6b9a ldr r2, [r3, #56] ; 0x38 + 80030f6: f422 3200 bic.w r2, r2, #131072 ; 0x20000 + 80030fa: 639a str r2, [r3, #56] ; 0x38 + 80030fc: f7ff ff8a bl 8003014 <HAL_UART_MspDeInit> + 8003100: 200f movs r0, #15 + 8003102: f004 ff09 bl 8007f18 <HAL_NVIC_DisableIRQ> + 8003106: 2000 movs r0, #0 + 8003108: bd08 pop {r3, pc} + 800310a: bf00 nop + 800310c: 20000ba0 .word 0x20000ba0 + +08003110 <vcom_Resume>: + 8003110: b508 push {r3, lr} + 8003112: 4807 ldr r0, [pc, #28] ; (8003130 <vcom_Resume+0x20>) + 8003114: f008 f833 bl 800b17e <HAL_UART_Init> + 8003118: b108 cbz r0, 800311e <vcom_Resume+0xe> + 800311a: f7ff fae5 bl 80026e8 <Error_Handler> + 800311e: 4805 ldr r0, [pc, #20] ; (8003134 <vcom_Resume+0x24>) + 8003120: f004 ff4c bl 8007fbc <HAL_DMA_Init> + 8003124: b118 cbz r0, 800312e <vcom_Resume+0x1e> + 8003126: e8bd 4008 ldmia.w sp!, {r3, lr} + 800312a: f7ff badd b.w 80026e8 <Error_Handler> + 800312e: bd08 pop {r3, pc} + 8003130: 20000ba0 .word 0x20000ba0 + 8003134: 20000b40 .word 0x20000b40 + +08003138 <HAL_UART_TxCpltCallback>: + 8003138: 6802 ldr r2, [r0, #0] + 800313a: 4b04 ldr r3, [pc, #16] ; (800314c <HAL_UART_TxCpltCallback+0x14>) + 800313c: 429a cmp r2, r3 + 800313e: d103 bne.n 8003148 <HAL_UART_TxCpltCallback+0x10> + 8003140: 4b03 ldr r3, [pc, #12] ; (8003150 <HAL_UART_TxCpltCallback+0x18>) + 8003142: 2000 movs r0, #0 + 8003144: 681b ldr r3, [r3, #0] + 8003146: 4718 bx r3 + 8003148: 4770 bx lr + 800314a: bf00 nop + 800314c: 40004400 .word 0x40004400 + 8003150: 20000c38 .word 0x20000c38 + +08003154 <HAL_UART_RxCpltCallback>: + 8003154: 6802 ldr r2, [r0, #0] + 8003156: 4b0b ldr r3, [pc, #44] ; (8003184 <HAL_UART_RxCpltCallback+0x30>) + 8003158: 429a cmp r2, r3 + 800315a: b510 push {r4, lr} + 800315c: 4604 mov r4, r0 + 800315e: d10f bne.n 8003180 <HAL_UART_RxCpltCallback+0x2c> + 8003160: 4b09 ldr r3, [pc, #36] ; (8003188 <HAL_UART_RxCpltCallback+0x34>) + 8003162: 681b ldr r3, [r3, #0] + 8003164: b12b cbz r3, 8003172 <HAL_UART_RxCpltCallback+0x1e> + 8003166: f8d0 2090 ldr.w r2, [r0, #144] ; 0x90 + 800316a: b912 cbnz r2, 8003172 <HAL_UART_RxCpltCallback+0x1e> + 800316c: 4807 ldr r0, [pc, #28] ; (800318c <HAL_UART_RxCpltCallback+0x38>) + 800316e: 2101 movs r1, #1 + 8003170: 4798 blx r3 + 8003172: 4620 mov r0, r4 + 8003174: 4905 ldr r1, [pc, #20] ; (800318c <HAL_UART_RxCpltCallback+0x38>) + 8003176: e8bd 4010 ldmia.w sp!, {r4, lr} + 800317a: 2201 movs r2, #1 + 800317c: f008 b8b8 b.w 800b2f0 <HAL_UART_Receive_IT> + 8003180: bd10 pop {r4, pc} + 8003182: bf00 nop + 8003184: 40004400 .word 0x40004400 + 8003188: 20000c34 .word 0x20000c34 + 800318c: 20000c3c .word 0x20000c3c + +08003190 <STS_SENSOR_Power_ON.part.0>: + 8003190: 4802 ldr r0, [pc, #8] ; (800319c <STS_SENSOR_Power_ON.part.0+0xc>) + 8003192: 2201 movs r2, #1 + 8003194: 2110 movs r1, #16 + 8003196: f005 baff b.w 8008798 <HAL_GPIO_WritePin> + 800319a: bf00 nop + 800319c: 48000400 .word 0x48000400 + +080031a0 <STS_SENSOR_Power_OFF.part.0>: + 80031a0: 4802 ldr r0, [pc, #8] ; (80031ac <STS_SENSOR_Power_OFF.part.0+0xc>) + 80031a2: 2200 movs r2, #0 + 80031a4: 2110 movs r1, #16 + 80031a6: f005 baf7 b.w 8008798 <HAL_GPIO_WritePin> + 80031aa: bf00 nop + 80031ac: 48000400 .word 0x48000400 + +080031b0 <STS_YunhornAuthenticationCode_Process>: + 80031b0: b513 push {r0, r1, r4, lr} + 80031b2: 4c12 ldr r4, [pc, #72] ; (80031fc <STS_YunhornAuthenticationCode_Process+0x4c>) + 80031b4: 7823 ldrb r3, [r4, #0] + 80031b6: f003 02ff and.w r2, r3, #255 ; 0xff + 80031ba: b93b cbnz r3, 80031cc <STS_YunhornAuthenticationCode_Process+0x1c> + 80031bc: 4b10 ldr r3, [pc, #64] ; (8003200 <STS_YunhornAuthenticationCode_Process+0x50>) + 80031be: 4611 mov r1, r2 + 80031c0: 2002 movs r0, #2 + 80031c2: b002 add sp, #8 + 80031c4: e8bd 4010 ldmia.w sp!, {r4, lr} + 80031c8: f010 bbd6 b.w 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80031cc: f7ff fba6 bl 800291c <sts_hmac_verify> + 80031d0: 3800 subs r0, #0 + 80031d2: 4b0c ldr r3, [pc, #48] ; (8003204 <STS_YunhornAuthenticationCode_Process+0x54>) + 80031d4: bf18 it ne + 80031d6: 2001 movne r0, #1 + 80031d8: 0040 lsls r0, r0, #1 + 80031da: 7018 strb r0, [r3, #0] + 80031dc: 781a ldrb r2, [r3, #0] + 80031de: 2a02 cmp r2, #2 + 80031e0: bf04 itt eq + 80031e2: 2200 moveq r2, #0 + 80031e4: 7022 strbeq r2, [r4, #0] + 80031e6: 781b ldrb r3, [r3, #0] + 80031e8: 9300 str r3, [sp, #0] + 80031ea: 2200 movs r2, #0 + 80031ec: 4b06 ldr r3, [pc, #24] ; (8003208 <STS_YunhornAuthenticationCode_Process+0x58>) + 80031ee: 4611 mov r1, r2 + 80031f0: 2003 movs r0, #3 + 80031f2: f010 fbc1 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80031f6: b002 add sp, #8 + 80031f8: bd10 pop {r4, pc} + 80031fa: bf00 nop + 80031fc: 20000e52 .word 0x20000e52 + 8003200: 080146c4 .word 0x080146c4 + 8003204: 20000c44 .word 0x20000c44 + 8003208: 080146e0 .word 0x080146e0 + +0800320c <STS_YunhornSTSEventRFAC_Process>: + 800320c: b538 push {r3, r4, r5, lr} + 800320e: 4d16 ldr r5, [pc, #88] ; (8003268 <STS_YunhornSTSEventRFAC_Process+0x5c>) + 8003210: 782b ldrb r3, [r5, #0] + 8003212: f003 02ff and.w r2, r3, #255 ; 0xff + 8003216: bb33 cbnz r3, 8003266 <STS_YunhornSTSEventRFAC_Process+0x5a> + 8003218: 4c14 ldr r4, [pc, #80] ; (800326c <STS_YunhornSTSEventRFAC_Process+0x60>) + 800321a: 6823 ldr r3, [r4, #0] + 800321c: 2b01 cmp r3, #1 + 800321e: d90c bls.n 800323a <STS_YunhornSTSEventRFAC_Process+0x2e> + 8003220: 6823 ldr r3, [r4, #0] + 8003222: 2b04 cmp r3, #4 + 8003224: d809 bhi.n 800323a <STS_YunhornSTSEventRFAC_Process+0x2e> + 8003226: 4611 mov r1, r2 + 8003228: 4b11 ldr r3, [pc, #68] ; (8003270 <STS_YunhornSTSEventRFAC_Process+0x64>) + 800322a: 2002 movs r0, #2 + 800322c: f010 fba4 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003230: 4a10 ldr r2, [pc, #64] ; (8003274 <STS_YunhornSTSEventRFAC_Process+0x68>) + 8003232: 2104 movs r1, #4 + 8003234: 2001 movs r0, #1 + 8003236: f000 fc31 bl 8003a9c <STS_SENSOR_Upload_Message> + 800323a: 6823 ldr r3, [r4, #0] + 800323c: 2b04 cmp r3, #4 + 800323e: d912 bls.n 8003266 <STS_YunhornSTSEventRFAC_Process+0x5a> + 8003240: 2200 movs r2, #0 + 8003242: 4b0d ldr r3, [pc, #52] ; (8003278 <STS_YunhornSTSEventRFAC_Process+0x6c>) + 8003244: 4611 mov r1, r2 + 8003246: 2002 movs r0, #2 + 8003248: f010 fb96 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800324c: f7ff fb66 bl 800291c <sts_hmac_verify> + 8003250: 3800 subs r0, #0 + 8003252: 4b0a ldr r3, [pc, #40] ; (800327c <STS_YunhornSTSEventRFAC_Process+0x70>) + 8003254: bf18 it ne + 8003256: 2001 movne r0, #1 + 8003258: 0040 lsls r0, r0, #1 + 800325a: 7018 strb r0, [r3, #0] + 800325c: 781b ldrb r3, [r3, #0] + 800325e: 2b02 cmp r3, #2 + 8003260: bf04 itt eq + 8003262: 2300 moveq r3, #0 + 8003264: 702b strbeq r3, [r5, #0] + 8003266: bd38 pop {r3, r4, r5, pc} + 8003268: 20000e52 .word 0x20000e52 + 800326c: 20000c40 .word 0x20000c40 + 8003270: 080146f7 .word 0x080146f7 + 8003274: 0801471c .word 0x0801471c + 8003278: 08014721 .word 0x08014721 + 800327c: 20000c44 .word 0x20000c44 + +08003280 <STS_YunhornSTSEventP4_Process>: + 8003280: b508 push {r3, lr} + 8003282: f7ff ff85 bl 8003190 <STS_SENSOR_Power_ON.part.0> + 8003286: 2064 movs r0, #100 ; 0x64 + 8003288: f7ff fc8a bl 8002ba0 <HAL_Delay> + 800328c: 2200 movs r2, #0 + 800328e: 4b05 ldr r3, [pc, #20] ; (80032a4 <STS_YunhornSTSEventP4_Process+0x24>) + 8003290: 4611 mov r1, r2 + 8003292: 2001 movs r0, #1 + 8003294: f010 fb70 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003298: f001 fdbc bl 8004e14 <STS_TOF_VL53L0X_Range_Process> + 800329c: e8bd 4008 ldmia.w sp!, {r3, lr} + 80032a0: f7ff bf7e b.w 80031a0 <STS_SENSOR_Power_OFF.part.0> + 80032a4: 08014754 .word 0x08014754 + +080032a8 <STS_YunhornSTSEventP6_Process>: + 80032a8: b537 push {r0, r1, r2, r4, r5, lr} + 80032aa: 2200 movs r2, #0 + 80032ac: 4b20 ldr r3, [pc, #128] ; (8003330 <STS_YunhornSTSEventP6_Process+0x88>) + 80032ae: 4c21 ldr r4, [pc, #132] ; (8003334 <STS_YunhornSTSEventP6_Process+0x8c>) + 80032b0: 4611 mov r1, r2 + 80032b2: 2001 movs r0, #1 + 80032b4: f010 fb60 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80032b8: f7ff ff6a bl 8003190 <STS_SENSOR_Power_ON.part.0> + 80032bc: 2201 movs r2, #1 + 80032be: 2108 movs r1, #8 + 80032c0: 481d ldr r0, [pc, #116] ; (8003338 <STS_YunhornSTSEventP6_Process+0x90>) + 80032c2: f005 fa69 bl 8008798 <HAL_GPIO_WritePin> + 80032c6: f241 3088 movw r0, #5000 ; 0x1388 + 80032ca: f7ff fc69 bl 8002ba0 <HAL_Delay> + 80032ce: 2500 movs r5, #0 + 80032d0: f44f 6180 mov.w r1, #1024 ; 0x400 + 80032d4: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80032d8: 7025 strb r5, [r4, #0] + 80032da: f005 fa57 bl 800878c <HAL_GPIO_ReadPin> + 80032de: 7020 strb r0, [r4, #0] + 80032e0: 7823 ldrb r3, [r4, #0] + 80032e2: 9300 str r3, [sp, #0] + 80032e4: 462a mov r2, r5 + 80032e6: 4b15 ldr r3, [pc, #84] ; (800333c <STS_YunhornSTSEventP6_Process+0x94>) + 80032e8: 4629 mov r1, r5 + 80032ea: 2001 movs r0, #1 + 80032ec: f010 fb44 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80032f0: 7823 ldrb r3, [r4, #0] + 80032f2: 2b01 cmp r3, #1 + 80032f4: b2da uxtb r2, r3 + 80032f6: d103 bne.n 8003300 <STS_YunhornSTSEventP6_Process+0x58> + 80032f8: 480f ldr r0, [pc, #60] ; (8003338 <STS_YunhornSTSEventP6_Process+0x90>) + 80032fa: 2104 movs r1, #4 + 80032fc: f005 fa4c bl 8008798 <HAL_GPIO_WritePin> + 8003300: 480d ldr r0, [pc, #52] ; (8003338 <STS_YunhornSTSEventP6_Process+0x90>) + 8003302: 2200 movs r2, #0 + 8003304: 2108 movs r1, #8 + 8003306: f005 fa47 bl 8008798 <HAL_GPIO_WritePin> + 800330a: f7ff ff49 bl 80031a0 <STS_SENSOR_Power_OFF.part.0> + 800330e: 2201 movs r2, #1 + 8003310: 2104 movs r1, #4 + 8003312: 4809 ldr r0, [pc, #36] ; (8003338 <STS_YunhornSTSEventP6_Process+0x90>) + 8003314: f005 fa40 bl 8008798 <HAL_GPIO_WritePin> + 8003318: f44f 70fa mov.w r0, #500 ; 0x1f4 + 800331c: f7ff fc40 bl 8002ba0 <HAL_Delay> + 8003320: 4805 ldr r0, [pc, #20] ; (8003338 <STS_YunhornSTSEventP6_Process+0x90>) + 8003322: 2200 movs r2, #0 + 8003324: 2104 movs r1, #4 + 8003326: b003 add sp, #12 + 8003328: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 800332c: f005 ba34 b.w 8008798 <HAL_GPIO_WritePin> + 8003330: 0801476c .word 0x0801476c + 8003334: 20000c45 .word 0x20000c45 + 8003338: 48000400 .word 0x48000400 + 800333c: 08014784 .word 0x08014784 + +08003340 <STS_SENSOR_Power_ON>: + 8003340: 2802 cmp r0, #2 + 8003342: d801 bhi.n 8003348 <STS_SENSOR_Power_ON+0x8> + 8003344: f7ff bf24 b.w 8003190 <STS_SENSOR_Power_ON.part.0> + 8003348: 4770 bx lr + +0800334a <STS_SENSOR_Power_OFF>: + 800334a: 2802 cmp r0, #2 + 800334c: d801 bhi.n 8003352 <STS_SENSOR_Power_OFF+0x8> + 800334e: f7ff bf27 b.w 80031a0 <STS_SENSOR_Power_OFF.part.0> + 8003352: 4770 bx lr + +08003354 <STS_SENSOR_MEMS_Reset>: + 8003354: 2802 cmp r0, #2 + 8003356: b508 push {r3, lr} + 8003358: d81b bhi.n 8003392 <STS_SENSOR_MEMS_Reset+0x3e> + 800335a: 2201 movs r2, #1 + 800335c: 2110 movs r1, #16 + 800335e: 480d ldr r0, [pc, #52] ; (8003394 <STS_SENSOR_MEMS_Reset+0x40>) + 8003360: f005 fa1a bl 8008798 <HAL_GPIO_WritePin> + 8003364: 2032 movs r0, #50 ; 0x32 + 8003366: f7ff fc1b bl 8002ba0 <HAL_Delay> + 800336a: 480a ldr r0, [pc, #40] ; (8003394 <STS_SENSOR_MEMS_Reset+0x40>) + 800336c: 2200 movs r2, #0 + 800336e: 2110 movs r1, #16 + 8003370: f005 fa12 bl 8008798 <HAL_GPIO_WritePin> + 8003374: 2201 movs r2, #1 + 8003376: 2110 movs r1, #16 + 8003378: 4806 ldr r0, [pc, #24] ; (8003394 <STS_SENSOR_MEMS_Reset+0x40>) + 800337a: f005 fa0d bl 8008798 <HAL_GPIO_WritePin> + 800337e: 2032 movs r0, #50 ; 0x32 + 8003380: f7ff fc0e bl 8002ba0 <HAL_Delay> + 8003384: e8bd 4008 ldmia.w sp!, {r3, lr} + 8003388: 4802 ldr r0, [pc, #8] ; (8003394 <STS_SENSOR_MEMS_Reset+0x40>) + 800338a: 2200 movs r2, #0 + 800338c: 2110 movs r1, #16 + 800338e: f005 ba03 b.w 8008798 <HAL_GPIO_WritePin> + 8003392: bd08 pop {r3, pc} + 8003394: 48000400 .word 0x48000400 + +08003398 <STS_SENSOR_NVM_CFG_SIMPLE>: + 8003398: 4770 bx lr + +0800339a <MX_LoRaWAN_Init>: + 800339a: b508 push {r3, lr} + 800339c: f7ff fb50 bl 8002a40 <SystemApp_Init> + 80033a0: e8bd 4008 ldmia.w sp!, {r3, lr} + 80033a4: f000 bd2e b.w 8003e04 <LoRaWAN_Init> + +080033a8 <MX_LoRaWAN_Process>: + 80033a8: f04f 30ff mov.w r0, #4294967295 + 80033ac: f010 bc30 b.w 8013c10 <UTIL_SEQ_Run> + +080033b0 <OnTxTimerLedEvent>: + 80033b0: 4770 bx lr + +080033b2 <OnSysTimeUpdate>: + 80033b2: 4770 bx lr + +080033b4 <OnTxFrameCtrlChanged>: + 80033b4: 4b01 ldr r3, [pc, #4] ; (80033bc <OnTxFrameCtrlChanged+0x8>) + 80033b6: 70d8 strb r0, [r3, #3] + 80033b8: 4770 bx lr + 80033ba: bf00 nop + 80033bc: 2000005c .word 0x2000005c + +080033c0 <OnPingSlotPeriodicityChanged>: + 80033c0: 4b01 ldr r3, [pc, #4] ; (80033c8 <OnPingSlotPeriodicityChanged+0x8>) + 80033c2: 7418 strb r0, [r3, #16] + 80033c4: 4770 bx lr + 80033c6: bf00 nop + 80033c8: 2000005c .word 0x2000005c + +080033cc <OnClassChange>: + 80033cc: b507 push {r0, r1, r2, lr} + 80033ce: 4b06 ldr r3, [pc, #24] ; (80033e8 <OnClassChange+0x1c>) + 80033d0: 2200 movs r2, #0 + 80033d2: 5c1b ldrb r3, [r3, r0] + 80033d4: 9300 str r3, [sp, #0] + 80033d6: 4611 mov r1, r2 + 80033d8: 4b04 ldr r3, [pc, #16] ; (80033ec <OnClassChange+0x20>) + 80033da: 2002 movs r0, #2 + 80033dc: f010 facc bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80033e0: b003 add sp, #12 + 80033e2: f85d fb04 ldr.w pc, [sp], #4 + 80033e6: bf00 nop + 80033e8: 080147b4 .word 0x080147b4 + 80033ec: 0801479a .word 0x0801479a + +080033f0 <OnTxTimerEvent>: + 80033f0: b508 push {r3, lr} + 80033f2: 4b06 ldr r3, [pc, #24] ; (800340c <OnTxTimerEvent+0x1c>) + 80033f4: 2201 movs r2, #1 + 80033f6: 2002 movs r0, #2 + 80033f8: 2100 movs r1, #0 + 80033fa: 701a strb r2, [r3, #0] + 80033fc: f010 fbd0 bl 8013ba0 <UTIL_SEQ_SetTask> + 8003400: e8bd 4008 ldmia.w sp!, {r3, lr} + 8003404: 4802 ldr r0, [pc, #8] ; (8003410 <OnTxTimerEvent+0x20>) + 8003406: f010 be33 b.w 8014070 <UTIL_TIMER_Start> + 800340a: bf00 nop + 800340c: 20000e67 .word 0x20000e67 + 8003410: 20000da0 .word 0x20000da0 + +08003414 <OnMacProcessNotify>: + 8003414: 2100 movs r1, #0 + 8003416: 2001 movs r0, #1 + 8003418: f010 bbc2 b.w 8013ba0 <UTIL_SEQ_SetTask> + +0800341c <OnJoinRequest>: + 800341c: b537 push {r0, r1, r2, r4, r5, lr} + 800341e: 4604 mov r4, r0 + 8003420: b360 cbz r0, 800347c <OnJoinRequest+0x60> + 8003422: f990 5006 ldrsb.w r5, [r0, #6] + 8003426: bb5d cbnz r5, 8003480 <OnJoinRequest+0x64> + 8003428: 4819 ldr r0, [pc, #100] ; (8003490 <OnJoinRequest+0x74>) + 800342a: f010 fdd3 bl 8013fd4 <UTIL_TIMER_Stop> + 800342e: 4b19 ldr r3, [pc, #100] ; (8003494 <OnJoinRequest+0x78>) + 8003430: 462a mov r2, r5 + 8003432: 4629 mov r1, r5 + 8003434: 2002 movs r0, #2 + 8003436: f010 fa9f bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800343a: 79e3 ldrb r3, [r4, #7] + 800343c: 2b01 cmp r3, #1 + 800343e: bf0c ite eq + 8003440: 4b15 ldreq r3, [pc, #84] ; (8003498 <OnJoinRequest+0x7c>) + 8003442: 4b16 ldrne r3, [pc, #88] ; (800349c <OnJoinRequest+0x80>) + 8003444: 462a mov r2, r5 + 8003446: 4629 mov r1, r5 + 8003448: 2002 movs r0, #2 + 800344a: f010 fa95 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800344e: 4b14 ldr r3, [pc, #80] ; (80034a0 <OnJoinRequest+0x84>) + 8003450: 79e2 ldrb r2, [r4, #7] + 8003452: 701a strb r2, [r3, #0] + 8003454: 781b ldrb r3, [r3, #0] + 8003456: 9300 str r3, [sp, #0] + 8003458: 2200 movs r2, #0 + 800345a: 4b12 ldr r3, [pc, #72] ; (80034a4 <OnJoinRequest+0x88>) + 800345c: 4611 mov r1, r2 + 800345e: 2001 movs r0, #1 + 8003460: f010 fa8a bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003464: f994 3005 ldrsb.w r3, [r4, #5] + 8003468: 9301 str r3, [sp, #4] + 800346a: f994 3004 ldrsb.w r3, [r4, #4] + 800346e: 9300 str r3, [sp, #0] + 8003470: 2200 movs r2, #0 + 8003472: 4b0d ldr r3, [pc, #52] ; (80034a8 <OnJoinRequest+0x8c>) + 8003474: 4611 mov r1, r2 + 8003476: 2003 movs r0, #3 + 8003478: f010 fa7e bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800347c: b003 add sp, #12 + 800347e: bd30 pop {r4, r5, pc} + 8003480: 2200 movs r2, #0 + 8003482: 4b0a ldr r3, [pc, #40] ; (80034ac <OnJoinRequest+0x90>) + 8003484: 4611 mov r1, r2 + 8003486: 2002 movs r0, #2 + 8003488: f010 fa76 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800348c: e7ea b.n 8003464 <OnJoinRequest+0x48> + 800348e: bf00 nop + 8003490: 20000d3c .word 0x20000d3c + 8003494: 080147b8 .word 0x080147b8 + 8003498: 080147cd .word 0x080147cd + 800349c: 080147ea .word 0x080147ea + 80034a0: 20000d6c .word 0x20000d6c + 80034a4: 08014807 .word 0x08014807 + 80034a8: 0801483f .word 0x0801483f + 80034ac: 08014826 .word 0x08014826 + +080034b0 <OnTxPeriodicityChanged>: + 80034b0: b513 push {r0, r1, r4, lr} + 80034b2: 4c0d ldr r4, [pc, #52] ; (80034e8 <OnTxPeriodicityChanged+0x38>) + 80034b4: b1a0 cbz r0, 80034e0 <OnTxPeriodicityChanged+0x30> + 80034b6: 6020 str r0, [r4, #0] + 80034b8: 480c ldr r0, [pc, #48] ; (80034ec <OnTxPeriodicityChanged+0x3c>) + 80034ba: f010 fd8b bl 8013fd4 <UTIL_TIMER_Stop> + 80034be: 6821 ldr r1, [r4, #0] + 80034c0: 480a ldr r0, [pc, #40] ; (80034ec <OnTxPeriodicityChanged+0x3c>) + 80034c2: f010 fe0f bl 80140e4 <UTIL_TIMER_SetPeriod> + 80034c6: 4809 ldr r0, [pc, #36] ; (80034ec <OnTxPeriodicityChanged+0x3c>) + 80034c8: f010 fdd2 bl 8014070 <UTIL_TIMER_Start> + 80034cc: 6823 ldr r3, [r4, #0] + 80034ce: 9300 str r3, [sp, #0] + 80034d0: 2200 movs r2, #0 + 80034d2: 4b07 ldr r3, [pc, #28] ; (80034f0 <OnTxPeriodicityChanged+0x40>) + 80034d4: 4611 mov r1, r2 + 80034d6: 2001 movs r0, #1 + 80034d8: f010 fa4e bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80034dc: b002 add sp, #8 + 80034de: bd10 pop {r4, pc} + 80034e0: f242 7310 movw r3, #10000 ; 0x2710 + 80034e4: 6023 str r3, [r4, #0] + 80034e6: e7e7 b.n 80034b8 <OnTxPeriodicityChanged+0x8> + 80034e8: 20000074 .word 0x20000074 + 80034ec: 20000da0 .word 0x20000da0 + 80034f0: 08014868 .word 0x08014868 + +080034f4 <OnYunhornSTSHeartBeatPeriodicityChanged>: + 80034f4: b513 push {r0, r1, r4, lr} + 80034f6: 4c0d ldr r4, [pc, #52] ; (800352c <OnYunhornSTSHeartBeatPeriodicityChanged+0x38>) + 80034f8: 6020 str r0, [r4, #0] + 80034fa: 6823 ldr r3, [r4, #0] + 80034fc: b90b cbnz r3, 8003502 <OnYunhornSTSHeartBeatPeriodicityChanged+0xe> + 80034fe: 4b0c ldr r3, [pc, #48] ; (8003530 <OnYunhornSTSHeartBeatPeriodicityChanged+0x3c>) + 8003500: 6023 str r3, [r4, #0] + 8003502: 480c ldr r0, [pc, #48] ; (8003534 <OnYunhornSTSHeartBeatPeriodicityChanged+0x40>) + 8003504: f010 fd66 bl 8013fd4 <UTIL_TIMER_Stop> + 8003508: 6821 ldr r1, [r4, #0] + 800350a: 480a ldr r0, [pc, #40] ; (8003534 <OnYunhornSTSHeartBeatPeriodicityChanged+0x40>) + 800350c: f010 fdea bl 80140e4 <UTIL_TIMER_SetPeriod> + 8003510: 4808 ldr r0, [pc, #32] ; (8003534 <OnYunhornSTSHeartBeatPeriodicityChanged+0x40>) + 8003512: f010 fdad bl 8014070 <UTIL_TIMER_Start> + 8003516: 6823 ldr r3, [r4, #0] + 8003518: 9300 str r3, [sp, #0] + 800351a: 2200 movs r2, #0 + 800351c: 4b06 ldr r3, [pc, #24] ; (8003538 <OnYunhornSTSHeartBeatPeriodicityChanged+0x44>) + 800351e: 4611 mov r1, r2 + 8003520: 2001 movs r0, #1 + 8003522: f010 fa29 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003526: b002 add sp, #8 + 8003528: bd10 pop {r4, pc} + 800352a: bf00 nop + 800352c: 2000000c .word 0x2000000c + 8003530: 000186a0 .word 0x000186a0 + 8003534: 20000db8 .word 0x20000db8 + 8003538: 08014891 .word 0x08014891 + +0800353c <OnStoreContextRequest>: + 800353c: b538 push {r3, r4, r5, lr} + 800353e: 4604 mov r4, r0 + 8003540: 460d mov r5, r1 + 8003542: 4807 ldr r0, [pc, #28] ; (8003560 <OnStoreContextRequest+0x24>) + 8003544: f44f 6100 mov.w r1, #2048 ; 0x800 + 8003548: f7fe ff10 bl 800236c <FLASH_IF_Erase> + 800354c: b930 cbnz r0, 800355c <OnStoreContextRequest+0x20> + 800354e: 462a mov r2, r5 + 8003550: 4621 mov r1, r4 + 8003552: 4803 ldr r0, [pc, #12] ; (8003560 <OnStoreContextRequest+0x24>) + 8003554: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 8003558: f7fe be0a b.w 8002170 <FLASH_IF_Write> + 800355c: bd38 pop {r3, r4, r5, pc} + 800355e: bf00 nop + 8003560: 0803f000 .word 0x0803f000 + +08003564 <OnRestoreContextRequest>: + 8003564: 460a mov r2, r1 + 8003566: 4901 ldr r1, [pc, #4] ; (800356c <OnRestoreContextRequest+0x8>) + 8003568: f7fe bee0 b.w 800232c <FLASH_IF_Read> + 800356c: 0803f000 .word 0x0803f000 + +08003570 <StopJoin>: + 8003570: b570 push {r4, r5, r6, lr} + 8003572: 4816 ldr r0, [pc, #88] ; (80035cc <StopJoin+0x5c>) + 8003574: f010 fd2e bl 8013fd4 <UTIL_TIMER_Stop> + 8003578: f008 fbf6 bl 800bd68 <LmHandlerStop> + 800357c: 4604 mov r4, r0 + 800357e: b150 cbz r0, 8003596 <StopJoin+0x26> + 8003580: 2200 movs r2, #0 + 8003582: 4b13 ldr r3, [pc, #76] ; (80035d0 <StopJoin+0x60>) + 8003584: 4611 mov r1, r2 + 8003586: 2002 movs r0, #2 + 8003588: f010 f9f6 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800358c: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8003590: 4810 ldr r0, [pc, #64] ; (80035d4 <StopJoin+0x64>) + 8003592: f010 bd6d b.w 8014070 <UTIL_TIMER_Start> + 8003596: 4d10 ldr r5, [pc, #64] ; (80035d8 <StopJoin+0x68>) + 8003598: 4b10 ldr r3, [pc, #64] ; (80035dc <StopJoin+0x6c>) + 800359a: 4602 mov r2, r0 + 800359c: 4601 mov r1, r0 + 800359e: 2002 movs r0, #2 + 80035a0: f010 f9ea bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80035a4: 2601 movs r6, #1 + 80035a6: 4b0e ldr r3, [pc, #56] ; (80035e0 <StopJoin+0x70>) + 80035a8: 702e strb r6, [r5, #0] + 80035aa: 4622 mov r2, r4 + 80035ac: 4621 mov r1, r4 + 80035ae: 2002 movs r0, #2 + 80035b0: f010 f9e2 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80035b4: 480b ldr r0, [pc, #44] ; (80035e4 <StopJoin+0x74>) + 80035b6: f008 fa7b bl 800bab0 <LmHandlerConfigure> + 80035ba: 7828 ldrb r0, [r5, #0] + 80035bc: 4631 mov r1, r6 + 80035be: f008 f8a5 bl 800b70c <LmHandlerJoin> + 80035c2: 4802 ldr r0, [pc, #8] ; (80035cc <StopJoin+0x5c>) + 80035c4: f010 fd54 bl 8014070 <UTIL_TIMER_Start> + 80035c8: e7e0 b.n 800358c <StopJoin+0x1c> + 80035ca: bf00 nop + 80035cc: 20000da0 .word 0x20000da0 + 80035d0: 080148cd .word 0x080148cd + 80035d4: 20000d70 .word 0x20000d70 + 80035d8: 20000000 .word 0x20000000 + 80035dc: 080148eb .word 0x080148eb + 80035e0: 080148ff .word 0x080148ff + 80035e4: 2000005c .word 0x2000005c + +080035e8 <SendTxData>: + 80035e8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 80035ec: b08f sub sp, #60 ; 0x3c + 80035ee: f7ff fa55 bl 8002a9c <GetBatteryLevel> + 80035f2: f8df 81fc ldr.w r8, [pc, #508] ; 80037f0 <SendTxData+0x208> + 80035f6: 4e7f ldr r6, [pc, #508] ; (80037f4 <SendTxData+0x20c>) + 80035f8: 4f7f ldr r7, [pc, #508] ; (80037f8 <SendTxData+0x210>) + 80035fa: 4604 mov r4, r0 + 80035fc: f7fe fc90 bl 8001f20 <SYS_GetBatteryLevel> + 8003600: f898 3000 ldrb.w r3, [r8] + 8003604: 7832 ldrb r2, [r6, #0] + 8003606: 7839 ldrb r1, [r7, #0] + 8003608: 9300 str r3, [sp, #0] + 800360a: e9cd 2101 strd r2, r1, [sp, #4] + 800360e: 4b7b ldr r3, [pc, #492] ; (80037fc <SendTxData+0x214>) + 8003610: 4681 mov r9, r0 + 8003612: 2201 movs r2, #1 + 8003614: 2100 movs r1, #0 + 8003616: 2003 movs r0, #3 + 8003618: f010 f9ae bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800361c: 2201 movs r2, #1 + 800361e: 4b78 ldr r3, [pc, #480] ; (8003800 <SendTxData+0x218>) + 8003620: f8cd 9000 str.w r9, [sp] + 8003624: 2100 movs r1, #0 + 8003626: 4610 mov r0, r2 + 8003628: f010 f9a6 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800362c: f008 f8de bl 800b7ec <LmHandlerIsBusy> + 8003630: 4605 mov r5, r0 + 8003632: b188 cbz r0, 8003658 <SendTxData+0x70> + 8003634: 2400 movs r4, #0 + 8003636: 4873 ldr r0, [pc, #460] ; (8003804 <SendTxData+0x21c>) + 8003638: f010 fccc bl 8013fd4 <UTIL_TIMER_Stop> + 800363c: 4b72 ldr r3, [pc, #456] ; (8003808 <SendTxData+0x220>) + 800363e: 4871 ldr r0, [pc, #452] ; (8003804 <SendTxData+0x21c>) + 8003640: 6819 ldr r1, [r3, #0] + 8003642: 42a1 cmp r1, r4 + 8003644: bf38 it cc + 8003646: 4621 movcc r1, r4 + 8003648: f010 fd4c bl 80140e4 <UTIL_TIMER_SetPeriod> + 800364c: 486d ldr r0, [pc, #436] ; (8003804 <SendTxData+0x21c>) + 800364e: f010 fd0f bl 8014070 <UTIL_TIMER_Start> + 8003652: b00f add sp, #60 ; 0x3c + 8003654: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8003658: 2201 movs r2, #1 + 800365a: 2104 movs r1, #4 + 800365c: 486b ldr r0, [pc, #428] ; (800380c <SendTxData+0x224>) + 800365e: f005 f89b bl 8008798 <HAL_GPIO_WritePin> + 8003662: f7ff fe21 bl 80032a8 <STS_YunhornSTSEventP6_Process> + 8003666: 20c8 movs r0, #200 ; 0xc8 + 8003668: f7ff fa9a bl 8002ba0 <HAL_Delay> + 800366c: f7ff fe08 bl 8003280 <STS_YunhornSTSEventP4_Process> + 8003670: 462a mov r2, r5 + 8003672: 2104 movs r1, #4 + 8003674: 4865 ldr r0, [pc, #404] ; (800380c <SendTxData+0x224>) + 8003676: f005 f88f bl 8008798 <HAL_GPIO_WritePin> + 800367a: 20c8 movs r0, #200 ; 0xc8 + 800367c: f7ff fa90 bl 8002ba0 <HAL_Delay> + 8003680: 2201 movs r2, #1 + 8003682: 4862 ldr r0, [pc, #392] ; (800380c <SendTxData+0x224>) + 8003684: 2104 movs r1, #4 + 8003686: f005 f887 bl 8008798 <HAL_GPIO_WritePin> + 800368a: 4629 mov r1, r5 + 800368c: f44f 7080 mov.w r0, #256 ; 0x100 + 8003690: f010 fa86 bl 8013ba0 <UTIL_SEQ_SetTask> + 8003694: 2104 movs r1, #4 + 8003696: 462a mov r2, r5 + 8003698: 485c ldr r0, [pc, #368] ; (800380c <SendTxData+0x224>) + 800369a: f005 f87d bl 8008798 <HAL_GPIO_WritePin> + 800369e: a804 add r0, sp, #16 + 80036a0: f001 f9e0 bl 8004a64 <STS_R0_SENSOR_Read> + 80036a4: b223 sxth r3, r4 + 80036a6: eb03 0343 add.w r3, r3, r3, lsl #1 + 80036aa: 4c59 ldr r4, [pc, #356] ; (8003810 <SendTxData+0x228>) + 80036ac: f8ad 9012 strh.w r9, [sp, #18] + 80036b0: a808 add r0, sp, #32 + 80036b2: 22fe movs r2, #254 ; 0xfe + 80036b4: eb03 1343 add.w r3, r3, r3, lsl #5 + 80036b8: fbb3 f3f2 udiv r3, r3, r2 + 80036bc: f88d 301c strb.w r3, [sp, #28] + 80036c0: f7ff fadc bl 8002c7c <EnvSensors_Read> + 80036c4: 230a movs r3, #10 + 80036c6: 4a53 ldr r2, [pc, #332] ; (8003814 <SendTxData+0x22c>) + 80036c8: 7023 strb r3, [r4, #0] + 80036ca: 6863 ldr r3, [r4, #4] + 80036cc: 7812 ldrb r2, [r2, #0] + 80036ce: 701a strb r2, [r3, #0] + 80036d0: 6863 ldr r3, [r4, #4] + 80036d2: 705d strb r5, [r3, #1] + 80036d4: 6863 ldr r3, [r4, #4] + 80036d6: 2210 movs r2, #16 + 80036d8: 709a strb r2, [r3, #2] + 80036da: 6863 ldr r3, [r4, #4] + 80036dc: 2201 movs r2, #1 + 80036de: 70da strb r2, [r3, #3] + 80036e0: 6861 ldr r1, [r4, #4] + 80036e2: f89d 301c ldrb.w r3, [sp, #28] + 80036e6: 710b strb r3, [r1, #4] + 80036e8: f898 1000 ldrb.w r1, [r8] + 80036ec: b1a1 cbz r1, 8003718 <SendTxData+0x130> + 80036ee: 210b movs r1, #11 + 80036f0: 7021 strb r1, [r4, #0] + 80036f2: 9303 str r3, [sp, #12] + 80036f4: f8bd 301a ldrh.w r3, [sp, #26] + 80036f8: 9302 str r3, [sp, #8] + 80036fa: f8bd 3018 ldrh.w r3, [sp, #24] + 80036fe: 9301 str r3, [sp, #4] + 8003700: f8bd 3010 ldrh.w r3, [sp, #16] + 8003704: 9300 str r3, [sp, #0] + 8003706: 4629 mov r1, r5 + 8003708: 4b43 ldr r3, [pc, #268] ; (8003818 <SendTxData+0x230>) + 800370a: f888 5000 strb.w r5, [r8] + 800370e: 2003 movs r0, #3 + 8003710: f010 f932 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003714: 2305 movs r3, #5 + 8003716: e036 b.n 8003786 <SendTxData+0x19e> + 8003718: 7833 ldrb r3, [r6, #0] + 800371a: b913 cbnz r3, 8003722 <SendTxData+0x13a> + 800371c: 783b ldrb r3, [r7, #0] + 800371e: 2b00 cmp r3, #0 + 8003720: d0f8 beq.n 8003714 <SendTxData+0x12c> + 8003722: f8bd 2010 ldrh.w r2, [sp, #16] + 8003726: 6863 ldr r3, [r4, #4] + 8003728: 0a10 lsrs r0, r2, #8 + 800372a: 7158 strb r0, [r3, #5] + 800372c: 6863 ldr r3, [r4, #4] + 800372e: 719a strb r2, [r3, #6] + 8003730: f8bd 3018 ldrh.w r3, [sp, #24] + 8003734: 6860 ldr r0, [r4, #4] + 8003736: 0a1b lsrs r3, r3, #8 + 8003738: 71c3 strb r3, [r0, #7] + 800373a: 6863 ldr r3, [r4, #4] + 800373c: f8bd 0018 ldrh.w r0, [sp, #24] + 8003740: 7218 strb r0, [r3, #8] + 8003742: f8bd 001a ldrh.w r0, [sp, #26] + 8003746: 0a00 lsrs r0, r0, #8 + 8003748: 7258 strb r0, [r3, #9] + 800374a: f8bd 001a ldrh.w r0, [sp, #26] + 800374e: 7298 strb r0, [r3, #10] + 8003750: 2100 movs r1, #0 + 8003752: 4832 ldr r0, [pc, #200] ; (800381c <SendTxData+0x234>) + 8003754: 7039 strb r1, [r7, #0] + 8003756: 7031 strb r1, [r6, #0] + 8003758: 7800 ldrb r0, [r0, #0] + 800375a: 72d8 strb r0, [r3, #11] + 800375c: f8bd 0012 ldrh.w r0, [sp, #18] + 8003760: 7358 strb r0, [r3, #13] + 8003762: 0a05 lsrs r5, r0, #8 + 8003764: 731d strb r5, [r3, #12] + 8003766: f89d 301c ldrb.w r3, [sp, #28] + 800376a: 9303 str r3, [sp, #12] + 800376c: f8bd 301a ldrh.w r3, [sp, #26] + 8003770: 9302 str r3, [sp, #8] + 8003772: f8bd 3018 ldrh.w r3, [sp, #24] + 8003776: 2003 movs r0, #3 + 8003778: e9cd 2300 strd r2, r3, [sp] + 800377c: 4b26 ldr r3, [pc, #152] ; (8003818 <SendTxData+0x230>) + 800377e: 2201 movs r2, #1 + 8003780: f010 f8fa bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003784: 230e movs r3, #14 + 8003786: 4a26 ldr r2, [pc, #152] ; (8003820 <SendTxData+0x238>) + 8003788: 7812 ldrb r2, [r2, #0] + 800378a: 2a01 cmp r2, #1 + 800378c: bf88 it hi + 800378e: 2300 movhi r3, #0 + 8003790: 7063 strb r3, [r4, #1] + 8003792: 4c24 ldr r4, [pc, #144] ; (8003824 <SendTxData+0x23c>) + 8003794: 7a63 ldrb r3, [r4, #9] + 8003796: b133 cbz r3, 80037a6 <SendTxData+0x1be> + 8003798: f007 ff5a bl 800b650 <LmHandlerJoinStatus> + 800379c: 2801 cmp r0, #1 + 800379e: d102 bne.n 80037a6 <SendTxData+0x1be> + 80037a0: 4620 mov r0, r4 + 80037a2: f010 fc17 bl 8013fd4 <UTIL_TIMER_Stop> + 80037a6: 4b20 ldr r3, [pc, #128] ; (8003828 <SendTxData+0x240>) + 80037a8: 4819 ldr r0, [pc, #100] ; (8003810 <SendTxData+0x228>) + 80037aa: 78d9 ldrb r1, [r3, #3] + 80037ac: 2200 movs r2, #0 + 80037ae: f008 f83b bl 800b828 <LmHandlerSend> + 80037b2: 4604 mov r4, r0 + 80037b4: b930 cbnz r0, 80037c4 <SendTxData+0x1dc> + 80037b6: 4601 mov r1, r0 + 80037b8: 4b1c ldr r3, [pc, #112] ; (800382c <SendTxData+0x244>) + 80037ba: 2201 movs r2, #1 + 80037bc: 2002 movs r0, #2 + 80037be: f010 f8db bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80037c2: e738 b.n 8003636 <SendTxData+0x4e> + 80037c4: 3406 adds r4, #6 + 80037c6: f47f af35 bne.w 8003634 <SendTxData+0x4c> + 80037ca: f007 ff3b bl 800b644 <LmHandlerGetDutyCycleWaitTime> + 80037ce: 4604 mov r4, r0 + 80037d0: 2800 cmp r0, #0 + 80037d2: f43f af30 beq.w 8003636 <SendTxData+0x4e> + 80037d6: 2201 movs r2, #1 + 80037d8: f44f 737a mov.w r3, #1000 ; 0x3e8 + 80037dc: 2100 movs r1, #0 + 80037de: fbb0 f3f3 udiv r3, r0, r3 + 80037e2: 4610 mov r0, r2 + 80037e4: 9300 str r3, [sp, #0] + 80037e6: 4b12 ldr r3, [pc, #72] ; (8003830 <SendTxData+0x248>) + 80037e8: f010 f8c6 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80037ec: e723 b.n 8003636 <SendTxData+0x4e> + 80037ee: bf00 nop + 80037f0: 20000dd0 .word 0x20000dd0 + 80037f4: 20000e67 .word 0x20000e67 + 80037f8: 20000e51 .word 0x20000e51 + 80037fc: 0801491e .word 0x0801491e + 8003800: 0801497a .word 0x0801497a + 8003804: 20000da0 .word 0x20000da0 + 8003808: 20000074 .word 0x20000074 + 800380c: 48000400 .word 0x48000400 + 8003810: 20000004 .word 0x20000004 + 8003814: 20000d38 .word 0x20000d38 + 8003818: 0801498d .word 0x0801498d + 800381c: 20000c45 .word 0x20000c45 + 8003820: 20000c44 .word 0x20000c44 + 8003824: 20000d3c .word 0x20000d3c + 8003828: 2000005c .word 0x2000005c + 800382c: 08014a14 .word 0x08014a14 + 8003830: 08014a23 .word 0x08014a23 + +08003834 <OnBeaconStatusChange>: + 8003834: b500 push {lr} + 8003836: 4603 mov r3, r0 + 8003838: b08d sub sp, #52 ; 0x34 + 800383a: 2800 cmp r0, #0 + 800383c: d02c beq.n 8003898 <OnBeaconStatusChange+0x64> + 800383e: 7840 ldrb r0, [r0, #1] + 8003840: 2802 cmp r0, #2 + 8003842: d00a beq.n 800385a <OnBeaconStatusChange+0x26> + 8003844: 2803 cmp r0, #3 + 8003846: d02a beq.n 800389e <OnBeaconStatusChange+0x6a> + 8003848: 4b16 ldr r3, [pc, #88] ; (80038a4 <OnBeaconStatusChange+0x70>) + 800384a: 2200 movs r2, #0 + 800384c: 4611 mov r1, r2 + 800384e: 2002 movs r0, #2 + 8003850: b00d add sp, #52 ; 0x34 + 8003852: f85d eb04 ldr.w lr, [sp], #4 + 8003856: f010 b88f b.w 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800385a: 7eda ldrb r2, [r3, #27] + 800385c: 920b str r2, [sp, #44] ; 0x2c + 800385e: 7e9a ldrb r2, [r3, #26] + 8003860: 920a str r2, [sp, #40] ; 0x28 + 8003862: 7e5a ldrb r2, [r3, #25] + 8003864: 9209 str r2, [sp, #36] ; 0x24 + 8003866: 7e1a ldrb r2, [r3, #24] + 8003868: 9208 str r2, [sp, #32] + 800386a: 7dda ldrb r2, [r3, #23] + 800386c: 9207 str r2, [sp, #28] + 800386e: 7d9a ldrb r2, [r3, #22] + 8003870: 9206 str r2, [sp, #24] + 8003872: 7d5a ldrb r2, [r3, #21] + 8003874: 9205 str r2, [sp, #20] + 8003876: 685a ldr r2, [r3, #4] + 8003878: 9204 str r2, [sp, #16] + 800387a: 68da ldr r2, [r3, #12] + 800387c: 9203 str r2, [sp, #12] + 800387e: f993 2014 ldrsb.w r2, [r3, #20] + 8003882: 9202 str r2, [sp, #8] + 8003884: f9b3 2012 ldrsh.w r2, [r3, #18] + 8003888: 9201 str r2, [sp, #4] + 800388a: 7c1b ldrb r3, [r3, #16] + 800388c: 9300 str r3, [sp, #0] + 800388e: 2200 movs r2, #0 + 8003890: 4b05 ldr r3, [pc, #20] ; (80038a8 <OnBeaconStatusChange+0x74>) + 8003892: 4611 mov r1, r2 + 8003894: f010 f870 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003898: b00d add sp, #52 ; 0x34 + 800389a: f85d fb04 ldr.w pc, [sp], #4 + 800389e: 4b03 ldr r3, [pc, #12] ; (80038ac <OnBeaconStatusChange+0x78>) + 80038a0: e7d3 b.n 800384a <OnBeaconStatusChange+0x16> + 80038a2: bf00 nop + 80038a4: 08014a41 .word 0x08014a41 + 80038a8: 08014a58 .word 0x08014a58 + 80038ac: 08014aca .word 0x08014aca + +080038b0 <OnNvmDataChange>: + 80038b0: 2801 cmp r0, #1 + 80038b2: f04f 0200 mov.w r2, #0 + 80038b6: bf0c ite eq + 80038b8: 4b02 ldreq r3, [pc, #8] ; (80038c4 <OnNvmDataChange+0x14>) + 80038ba: 4b03 ldrne r3, [pc, #12] ; (80038c8 <OnNvmDataChange+0x18>) + 80038bc: 4611 mov r1, r2 + 80038be: 2002 movs r0, #2 + 80038c0: f010 b85a b.w 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80038c4: 08014ae9 .word 0x08014ae9 + 80038c8: 08014afb .word 0x08014afb + +080038cc <OnTxData>: + 80038cc: b51f push {r0, r1, r2, r3, r4, lr} + 80038ce: 4604 mov r4, r0 + 80038d0: 2800 cmp r0, #0 + 80038d2: d031 beq.n 8003938 <OnTxData+0x6c> + 80038d4: 7803 ldrb r3, [r0, #0] + 80038d6: 2b00 cmp r3, #0 + 80038d8: d02e beq.n 8003938 <OnTxData+0x6c> + 80038da: 481d ldr r0, [pc, #116] ; (8003950 <OnTxData+0x84>) + 80038dc: f010 fbc8 bl 8014070 <UTIL_TIMER_Start> + 80038e0: 2200 movs r2, #0 + 80038e2: 4611 mov r1, r2 + 80038e4: 4b1b ldr r3, [pc, #108] ; (8003954 <OnTxData+0x88>) + 80038e6: 2002 movs r0, #2 + 80038e8: f010 f846 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80038ec: f994 3018 ldrsb.w r3, [r4, #24] + 80038f0: 9303 str r3, [sp, #12] + 80038f2: f994 300a ldrsb.w r3, [r4, #10] + 80038f6: 9302 str r3, [sp, #8] + 80038f8: 7c23 ldrb r3, [r4, #16] + 80038fa: 9301 str r3, [sp, #4] + 80038fc: 68e3 ldr r3, [r4, #12] + 80038fe: 9300 str r3, [sp, #0] + 8003900: 2200 movs r2, #0 + 8003902: 4611 mov r1, r2 + 8003904: 4b14 ldr r3, [pc, #80] ; (8003958 <OnTxData+0x8c>) + 8003906: 2003 movs r0, #3 + 8003908: f010 f836 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800390c: 2200 movs r2, #0 + 800390e: 4b13 ldr r3, [pc, #76] ; (800395c <OnTxData+0x90>) + 8003910: 4611 mov r1, r2 + 8003912: 2003 movs r0, #3 + 8003914: f010 f830 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003918: 7a23 ldrb r3, [r4, #8] + 800391a: 2b01 cmp r3, #1 + 800391c: d10e bne.n 800393c <OnTxData+0x70> + 800391e: 7a61 ldrb r1, [r4, #9] + 8003920: 4a0f ldr r2, [pc, #60] ; (8003960 <OnTxData+0x94>) + 8003922: 4b10 ldr r3, [pc, #64] ; (8003964 <OnTxData+0x98>) + 8003924: 2900 cmp r1, #0 + 8003926: bf08 it eq + 8003928: 4613 moveq r3, r2 + 800392a: 2200 movs r2, #0 + 800392c: 9300 str r3, [sp, #0] + 800392e: 4611 mov r1, r2 + 8003930: 4b0d ldr r3, [pc, #52] ; (8003968 <OnTxData+0x9c>) + 8003932: 2003 movs r0, #3 + 8003934: f010 f820 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003938: b004 add sp, #16 + 800393a: bd10 pop {r4, pc} + 800393c: 2200 movs r2, #0 + 800393e: 4b0b ldr r3, [pc, #44] ; (800396c <OnTxData+0xa0>) + 8003940: 4611 mov r1, r2 + 8003942: 2003 movs r0, #3 + 8003944: b004 add sp, #16 + 8003946: e8bd 4010 ldmia.w sp!, {r4, lr} + 800394a: f010 b815 b.w 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800394e: bf00 nop + 8003950: 20000d88 .word 0x20000d88 + 8003954: 08014b14 .word 0x08014b14 + 8003958: 08014b45 .word 0x08014b45 + 800395c: 08014b76 .word 0x08014b76 + 8003960: 08014b0f .word 0x08014b0f + 8003964: 08014b10 .word 0x08014b10 + 8003968: 08014b83 .word 0x08014b83 + 800396c: 08014b94 .word 0x08014b94 + +08003970 <OnYunhornSTSHeartBeatTimerEvent>: + 8003970: b508 push {r3, lr} + 8003972: 4b0f ldr r3, [pc, #60] ; (80039b0 <OnYunhornSTSHeartBeatTimerEvent+0x40>) + 8003974: 2201 movs r2, #1 + 8003976: 2100 movs r1, #0 + 8003978: 2002 movs r0, #2 + 800397a: 701a strb r2, [r3, #0] + 800397c: f010 f910 bl 8013ba0 <UTIL_SEQ_SetTask> + 8003980: 480c ldr r0, [pc, #48] ; (80039b4 <OnYunhornSTSHeartBeatTimerEvent+0x44>) + 8003982: f010 fb75 bl 8014070 <UTIL_TIMER_Start> + 8003986: 4b0c ldr r3, [pc, #48] ; (80039b8 <OnYunhornSTSHeartBeatTimerEvent+0x48>) + 8003988: 781b ldrb r3, [r3, #0] + 800398a: b17b cbz r3, 80039ac <OnYunhornSTSHeartBeatTimerEvent+0x3c> + 800398c: 4b0b ldr r3, [pc, #44] ; (80039bc <OnYunhornSTSHeartBeatTimerEvent+0x4c>) + 800398e: 781b ldrb r3, [r3, #0] + 8003990: b963 cbnz r3, 80039ac <OnYunhornSTSHeartBeatTimerEvent+0x3c> + 8003992: 4b0b ldr r3, [pc, #44] ; (80039c0 <OnYunhornSTSHeartBeatTimerEvent+0x50>) + 8003994: 681a ldr r2, [r3, #0] + 8003996: 2a04 cmp r2, #4 + 8003998: bf9e ittt ls + 800399a: 681a ldrls r2, [r3, #0] + 800399c: 3201 addls r2, #1 + 800399e: 601a strls r2, [r3, #0] + 80039a0: 2100 movs r1, #0 + 80039a2: e8bd 4008 ldmia.w sp!, {r3, lr} + 80039a6: 2010 movs r0, #16 + 80039a8: f010 b8fa b.w 8013ba0 <UTIL_SEQ_SetTask> + 80039ac: bd08 pop {r3, pc} + 80039ae: bf00 nop + 80039b0: 20000dd0 .word 0x20000dd0 + 80039b4: 20000db8 .word 0x20000db8 + 80039b8: 20000d6c .word 0x20000d6c + 80039bc: 20000e52 .word 0x20000e52 + 80039c0: 20000c40 .word 0x20000c40 + +080039c4 <OnStopJoinTimerEvent>: + 80039c4: 4b04 ldr r3, [pc, #16] ; (80039d8 <OnStopJoinTimerEvent+0x14>) + 80039c6: 781b ldrb r3, [r3, #0] + 80039c8: 2b02 cmp r3, #2 + 80039ca: d103 bne.n 80039d4 <OnStopJoinTimerEvent+0x10> + 80039cc: 2100 movs r1, #0 + 80039ce: 2008 movs r0, #8 + 80039d0: f010 b8e6 b.w 8013ba0 <UTIL_SEQ_SetTask> + 80039d4: 4770 bx lr + 80039d6: bf00 nop + 80039d8: 20000000 .word 0x20000000 + +080039dc <OnSystemReset>: + 80039dc: b508 push {r3, lr} + 80039de: f008 f9cc bl 800bd7a <LmHandlerHalt> + 80039e2: b980 cbnz r0, 8003a06 <OnSystemReset+0x2a> + 80039e4: f007 fe34 bl 800b650 <LmHandlerJoinStatus> + 80039e8: 2801 cmp r0, #1 + 80039ea: d10c bne.n 8003a06 <OnSystemReset+0x2a> + 80039ec: f3bf 8f4f dsb sy + 80039f0: 4905 ldr r1, [pc, #20] ; (8003a08 <OnSystemReset+0x2c>) + 80039f2: 4b06 ldr r3, [pc, #24] ; (8003a0c <OnSystemReset+0x30>) + 80039f4: 68ca ldr r2, [r1, #12] + 80039f6: f402 62e0 and.w r2, r2, #1792 ; 0x700 + 80039fa: 4313 orrs r3, r2 + 80039fc: 60cb str r3, [r1, #12] + 80039fe: f3bf 8f4f dsb sy + 8003a02: bf00 nop + 8003a04: e7fd b.n 8003a02 <OnSystemReset+0x26> + 8003a06: bd08 pop {r3, pc} + 8003a08: e000ed00 .word 0xe000ed00 + 8003a0c: 05fa0004 .word 0x05fa0004 + +08003a10 <StoreContext>: + 8003a10: b510 push {r4, lr} + 8003a12: f008 fa47 bl 800bea4 <LmHandlerNvmDataStore> + 8003a16: f110 0f08 cmn.w r0, #8 + 8003a1a: d107 bne.n 8003a2c <StoreContext+0x1c> + 8003a1c: 4b06 ldr r3, [pc, #24] ; (8003a38 <StoreContext+0x28>) + 8003a1e: 2200 movs r2, #0 + 8003a20: e8bd 4010 ldmia.w sp!, {r4, lr} + 8003a24: 4611 mov r1, r2 + 8003a26: 2002 movs r0, #2 + 8003a28: f00f bfa6 b.w 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003a2c: 3001 adds r0, #1 + 8003a2e: d101 bne.n 8003a34 <StoreContext+0x24> + 8003a30: 4b02 ldr r3, [pc, #8] ; (8003a3c <StoreContext+0x2c>) + 8003a32: e7f4 b.n 8003a1e <StoreContext+0xe> + 8003a34: bd10 pop {r4, pc} + 8003a36: bf00 nop + 8003a38: 08014ba2 .word 0x08014ba2 + 8003a3c: 08014bb8 .word 0x08014bb8 + +08003a40 <OnJoinTimerLedEvent>: + 8003a40: 4770 bx lr + +08003a42 <OnRxTimerLedEvent>: + 8003a42: 4770 bx lr + +08003a44 <HAL_GPIO_EXTI_Callback>: + 8003a44: 2802 cmp r0, #2 + 8003a46: b513 push {r0, r1, r4, lr} + 8003a48: 4604 mov r4, r0 + 8003a4a: d018 beq.n 8003a7e <HAL_GPIO_EXTI_Callback+0x3a> + 8003a4c: 2820 cmp r0, #32 + 8003a4e: d019 beq.n 8003a84 <HAL_GPIO_EXTI_Callback+0x40> + 8003a50: 2801 cmp r0, #1 + 8003a52: d11a bne.n 8003a8a <HAL_GPIO_EXTI_Callback+0x46> + 8003a54: 4b0e ldr r3, [pc, #56] ; (8003a90 <HAL_GPIO_EXTI_Callback+0x4c>) + 8003a56: 4601 mov r1, r0 + 8003a58: 7018 strb r0, [r3, #0] + 8003a5a: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8003a5e: f004 fe95 bl 800878c <HAL_GPIO_ReadPin> + 8003a62: 2200 movs r2, #0 + 8003a64: 9000 str r0, [sp, #0] + 8003a66: 4611 mov r1, r2 + 8003a68: 4b0a ldr r3, [pc, #40] ; (8003a94 <HAL_GPIO_EXTI_Callback+0x50>) + 8003a6a: 4620 mov r0, r4 + 8003a6c: f00f ff84 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003a70: 2100 movs r1, #0 + 8003a72: 2002 movs r0, #2 + 8003a74: b002 add sp, #8 + 8003a76: e8bd 4010 ldmia.w sp!, {r4, lr} + 8003a7a: f010 b891 b.w 8013ba0 <UTIL_SEQ_SetTask> + 8003a7e: 2100 movs r1, #0 + 8003a80: 2008 movs r0, #8 + 8003a82: e7f7 b.n 8003a74 <HAL_GPIO_EXTI_Callback+0x30> + 8003a84: 4b04 ldr r3, [pc, #16] ; (8003a98 <HAL_GPIO_EXTI_Callback+0x54>) + 8003a86: 2201 movs r2, #1 + 8003a88: 701a strb r2, [r3, #0] + 8003a8a: b002 add sp, #8 + 8003a8c: bd10 pop {r4, pc} + 8003a8e: bf00 nop + 8003a90: 20000e51 .word 0x20000e51 + 8003a94: 08014bd0 .word 0x08014bd0 + 8003a98: 20000ecc .word 0x20000ecc + +08003a9c <STS_SENSOR_Upload_Message>: + 8003a9c: b573 push {r0, r1, r4, r5, r6, lr} + 8003a9e: 4605 mov r5, r0 + 8003aa0: 460c mov r4, r1 + 8003aa2: 4616 mov r6, r2 + 8003aa4: f007 fea2 bl 800b7ec <LmHandlerIsBusy> + 8003aa8: 4603 mov r3, r0 + 8003aaa: 2800 cmp r0, #0 + 8003aac: d038 beq.n 8003b20 <STS_SENSOR_Upload_Message+0x84> + 8003aae: 2400 movs r4, #0 + 8003ab0: 4826 ldr r0, [pc, #152] ; (8003b4c <STS_SENSOR_Upload_Message+0xb0>) + 8003ab2: f010 fa8f bl 8013fd4 <UTIL_TIMER_Stop> + 8003ab6: 4b26 ldr r3, [pc, #152] ; (8003b50 <STS_SENSOR_Upload_Message+0xb4>) + 8003ab8: 4824 ldr r0, [pc, #144] ; (8003b4c <STS_SENSOR_Upload_Message+0xb0>) + 8003aba: 6819 ldr r1, [r3, #0] + 8003abc: 42a1 cmp r1, r4 + 8003abe: bf38 it cc + 8003ac0: 4621 movcc r1, r4 + 8003ac2: f010 fb0f bl 80140e4 <UTIL_TIMER_SetPeriod> + 8003ac6: 4821 ldr r0, [pc, #132] ; (8003b4c <STS_SENSOR_Upload_Message+0xb0>) + 8003ac8: b002 add sp, #8 + 8003aca: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8003ace: f010 bacf b.w 8014070 <UTIL_TIMER_Start> + 8003ad2: 684a ldr r2, [r1, #4] + 8003ad4: 5cf0 ldrb r0, [r6, r3] + 8003ad6: 54d0 strb r0, [r2, r3] + 8003ad8: 3301 adds r3, #1 + 8003ada: b2da uxtb r2, r3 + 8003adc: 42a2 cmp r2, r4 + 8003ade: d3f8 bcc.n 8003ad2 <STS_SENSOR_Upload_Message+0x36> + 8003ae0: 4b1c ldr r3, [pc, #112] ; (8003b54 <STS_SENSOR_Upload_Message+0xb8>) + 8003ae2: 700d strb r5, [r1, #0] + 8003ae4: 781b ldrb r3, [r3, #0] + 8003ae6: 2b01 cmp r3, #1 + 8003ae8: bf88 it hi + 8003aea: 2400 movhi r4, #0 + 8003aec: 704c strb r4, [r1, #1] + 8003aee: 4c1a ldr r4, [pc, #104] ; (8003b58 <STS_SENSOR_Upload_Message+0xbc>) + 8003af0: 7a63 ldrb r3, [r4, #9] + 8003af2: b133 cbz r3, 8003b02 <STS_SENSOR_Upload_Message+0x66> + 8003af4: f007 fdac bl 800b650 <LmHandlerJoinStatus> + 8003af8: 2801 cmp r0, #1 + 8003afa: d102 bne.n 8003b02 <STS_SENSOR_Upload_Message+0x66> + 8003afc: 4620 mov r0, r4 + 8003afe: f010 fa69 bl 8013fd4 <UTIL_TIMER_Stop> + 8003b02: 4b16 ldr r3, [pc, #88] ; (8003b5c <STS_SENSOR_Upload_Message+0xc0>) + 8003b04: 4816 ldr r0, [pc, #88] ; (8003b60 <STS_SENSOR_Upload_Message+0xc4>) + 8003b06: 78d9 ldrb r1, [r3, #3] + 8003b08: 2200 movs r2, #0 + 8003b0a: f007 fe8d bl 800b828 <LmHandlerSend> + 8003b0e: 4604 mov r4, r0 + 8003b10: b940 cbnz r0, 8003b24 <STS_SENSOR_Upload_Message+0x88> + 8003b12: 2201 movs r2, #1 + 8003b14: 4601 mov r1, r0 + 8003b16: 4b13 ldr r3, [pc, #76] ; (8003b64 <STS_SENSOR_Upload_Message+0xc8>) + 8003b18: 4610 mov r0, r2 + 8003b1a: f00f ff2d bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003b1e: e7c7 b.n 8003ab0 <STS_SENSOR_Upload_Message+0x14> + 8003b20: 490f ldr r1, [pc, #60] ; (8003b60 <STS_SENSOR_Upload_Message+0xc4>) + 8003b22: e7da b.n 8003ada <STS_SENSOR_Upload_Message+0x3e> + 8003b24: 3406 adds r4, #6 + 8003b26: d1c2 bne.n 8003aae <STS_SENSOR_Upload_Message+0x12> + 8003b28: f007 fd8c bl 800b644 <LmHandlerGetDutyCycleWaitTime> + 8003b2c: 4604 mov r4, r0 + 8003b2e: 2800 cmp r0, #0 + 8003b30: d0be beq.n 8003ab0 <STS_SENSOR_Upload_Message+0x14> + 8003b32: 2201 movs r2, #1 + 8003b34: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8003b38: 2100 movs r1, #0 + 8003b3a: fbb0 f3f3 udiv r3, r0, r3 + 8003b3e: 4610 mov r0, r2 + 8003b40: 9300 str r3, [sp, #0] + 8003b42: 4b09 ldr r3, [pc, #36] ; (8003b68 <STS_SENSOR_Upload_Message+0xcc>) + 8003b44: f00f ff18 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003b48: e7b2 b.n 8003ab0 <STS_SENSOR_Upload_Message+0x14> + 8003b4a: bf00 nop + 8003b4c: 20000da0 .word 0x20000da0 + 8003b50: 20000074 .word 0x20000074 + 8003b54: 20000c44 .word 0x20000c44 + 8003b58: 20000d3c .word 0x20000d3c + 8003b5c: 2000005c .word 0x2000005c + 8003b60: 20000004 .word 0x20000004 + 8003b64: 08014a14 .word 0x08014a14 + 8003b68: 08014a23 .word 0x08014a23 + +08003b6c <STS_SENSOR_Upload_Config_Invalid_Message>: + 8003b6c: 4b04 ldr r3, [pc, #16] ; (8003b80 <STS_SENSOR_Upload_Config_Invalid_Message+0x14>) + 8003b6e: 781b ldrb r3, [r3, #0] + 8003b70: b923 cbnz r3, 8003b7c <STS_SENSOR_Upload_Config_Invalid_Message+0x10> + 8003b72: 4a04 ldr r2, [pc, #16] ; (8003b84 <STS_SENSOR_Upload_Config_Invalid_Message+0x18>) + 8003b74: 2105 movs r1, #5 + 8003b76: 2001 movs r0, #1 + 8003b78: f7ff bf90 b.w 8003a9c <STS_SENSOR_Upload_Message> + 8003b7c: 4770 bx lr + 8003b7e: bf00 nop + 8003b80: 20000c44 .word 0x20000c44 + 8003b84: 08014c11 .word 0x08014c11 + +08003b88 <OnStoreSTSCFGContextRequest>: + 8003b88: b510 push {r4, lr} + 8003b8a: 2400 movs r4, #0 + 8003b8c: b090 sub sp, #64 ; 0x40 + 8003b8e: 223c movs r2, #60 ; 0x3c + 8003b90: 4621 mov r1, r4 + 8003b92: a801 add r0, sp, #4 + 8003b94: 9400 str r4, [sp, #0] + 8003b96: f010 fc2f bl 80143f8 <memset> + 8003b9a: 4b2c ldr r3, [pc, #176] ; (8003c4c <OnStoreSTSCFGContextRequest+0xc4>) + 8003b9c: 2220 movs r2, #32 + 8003b9e: 72da strb r2, [r3, #11] + 8003ba0: 7819 ldrb r1, [r3, #0] + 8003ba2: f88d 1000 strb.w r1, [sp] + 8003ba6: 7859 ldrb r1, [r3, #1] + 8003ba8: f88d 1001 strb.w r1, [sp, #1] + 8003bac: 7899 ldrb r1, [r3, #2] + 8003bae: f88d 1002 strb.w r1, [sp, #2] + 8003bb2: 78d9 ldrb r1, [r3, #3] + 8003bb4: f88d 1003 strb.w r1, [sp, #3] + 8003bb8: 7919 ldrb r1, [r3, #4] + 8003bba: f88d 1004 strb.w r1, [sp, #4] + 8003bbe: 7959 ldrb r1, [r3, #5] + 8003bc0: f88d 1005 strb.w r1, [sp, #5] + 8003bc4: 7999 ldrb r1, [r3, #6] + 8003bc6: f88d 1006 strb.w r1, [sp, #6] + 8003bca: 79d9 ldrb r1, [r3, #7] + 8003bcc: f88d 1007 strb.w r1, [sp, #7] + 8003bd0: 7a19 ldrb r1, [r3, #8] + 8003bd2: f88d 1008 strb.w r1, [sp, #8] + 8003bd6: 7a59 ldrb r1, [r3, #9] + 8003bd8: f88d 1009 strb.w r1, [sp, #9] + 8003bdc: 7a99 ldrb r1, [r3, #10] + 8003bde: f88d 100a strb.w r1, [sp, #10] + 8003be2: f88d 200b strb.w r2, [sp, #11] + 8003be6: 4621 mov r1, r4 + 8003be8: f10d 020b add.w r2, sp, #11 + 8003bec: 1858 adds r0, r3, r1 + 8003bee: 3101 adds r1, #1 + 8003bf0: 7b00 ldrb r0, [r0, #12] + 8003bf2: f802 0f01 strb.w r0, [r2, #1]! + 8003bf6: 291c cmp r1, #28 + 8003bf8: d1f8 bne.n 8003bec <OnStoreSTSCFGContextRequest+0x64> + 8003bfa: f893 2028 ldrb.w r2, [r3, #40] ; 0x28 + 8003bfe: f88d 2028 strb.w r2, [sp, #40] ; 0x28 + 8003c02: f893 2029 ldrb.w r2, [r3, #41] ; 0x29 + 8003c06: f88d 2029 strb.w r2, [sp, #41] ; 0x29 + 8003c0a: f893 202a ldrb.w r2, [r3, #42] ; 0x2a + 8003c0e: f88d 202a strb.w r2, [sp, #42] ; 0x2a + 8003c12: f893 202b ldrb.w r2, [r3, #43] ; 0x2b + 8003c16: f88d 202b strb.w r2, [sp, #43] ; 0x2b + 8003c1a: f10d 012b add.w r1, sp, #43 ; 0x2b + 8003c1e: 2200 movs r2, #0 + 8003c20: 1898 adds r0, r3, r2 + 8003c22: 3201 adds r2, #1 + 8003c24: f890 002c ldrb.w r0, [r0, #44] ; 0x2c + 8003c28: f801 0f01 strb.w r0, [r1, #1]! + 8003c2c: 2a14 cmp r2, #20 + 8003c2e: d1f7 bne.n 8003c20 <OnStoreSTSCFGContextRequest+0x98> + 8003c30: 4807 ldr r0, [pc, #28] ; (8003c50 <OnStoreSTSCFGContextRequest+0xc8>) + 8003c32: f44f 6100 mov.w r1, #2048 ; 0x800 + 8003c36: f7fe fb99 bl 800236c <FLASH_IF_Erase> + 8003c3a: b920 cbnz r0, 8003c46 <OnStoreSTSCFGContextRequest+0xbe> + 8003c3c: 4804 ldr r0, [pc, #16] ; (8003c50 <OnStoreSTSCFGContextRequest+0xc8>) + 8003c3e: 2240 movs r2, #64 ; 0x40 + 8003c40: 4669 mov r1, sp + 8003c42: f7fe fa95 bl 8002170 <FLASH_IF_Write> + 8003c46: b010 add sp, #64 ; 0x40 + 8003c48: bd10 pop {r4, pc} + 8003c4a: bf00 nop + 8003c4c: 20000078 .word 0x20000078 + 8003c50: 0803f800 .word 0x0803f800 + +08003c54 <OnRestoreSTSCFGContextRequest>: + 8003c54: 4901 ldr r1, [pc, #4] ; (8003c5c <OnRestoreSTSCFGContextRequest+0x8>) + 8003c56: 2240 movs r2, #64 ; 0x40 + 8003c58: f00f bf96 b.w 8013b88 <UTIL_MEM_cpy_8> + 8003c5c: 0803f800 .word 0x0803f800 + +08003c60 <OnRestoreSTSCFGContextProcess>: + 8003c60: b510 push {r4, lr} + 8003c62: 4c23 ldr r4, [pc, #140] ; (8003cf0 <OnRestoreSTSCFGContextProcess+0x90>) + 8003c64: 7920 ldrb r0, [r4, #4] + 8003c66: 7963 ldrb r3, [r4, #5] + 8003c68: 2b4d cmp r3, #77 ; 0x4d + 8003c6a: b2c0 uxtb r0, r0 + 8003c6c: d12f bne.n 8003cce <OnRestoreSTSCFGContextProcess+0x6e> + 8003c6e: ebc0 1000 rsb r0, r0, r0, lsl #4 + 8003c72: 0080 lsls r0, r0, #2 + 8003c74: 280a cmp r0, #10 + 8003c76: bf38 it cc + 8003c78: 200a movcc r0, #10 + 8003c7a: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8003c7e: 4358 muls r0, r3 + 8003c80: 4b1c ldr r3, [pc, #112] ; (8003cf4 <OnRestoreSTSCFGContextProcess+0x94>) + 8003c82: 6018 str r0, [r3, #0] + 8003c84: f7ff fc14 bl 80034b0 <OnTxPeriodicityChanged> + 8003c88: 79a0 ldrb r0, [r4, #6] + 8003c8a: 79e3 ldrb r3, [r4, #7] + 8003c8c: 2b4d cmp r3, #77 ; 0x4d + 8003c8e: b2c0 uxtb r0, r0 + 8003c90: d125 bne.n 8003cde <OnRestoreSTSCFGContextProcess+0x7e> + 8003c92: ebc0 1000 rsb r0, r0, r0, lsl #4 + 8003c96: 0080 lsls r0, r0, #2 + 8003c98: 2801 cmp r0, #1 + 8003c9a: f44f 737a mov.w r3, #1000 ; 0x3e8 + 8003c9e: bf38 it cc + 8003ca0: 2001 movcc r0, #1 + 8003ca2: 4358 muls r0, r3 + 8003ca4: f7ff fc26 bl 80034f4 <OnYunhornSTSHeartBeatPeriodicityChanged> + 8003ca8: 7a23 ldrb r3, [r4, #8] + 8003caa: 4a13 ldr r2, [pc, #76] ; (8003cf8 <OnRestoreSTSCFGContextProcess+0x98>) + 8003cac: 4913 ldr r1, [pc, #76] ; (8003cfc <OnRestoreSTSCFGContextProcess+0x9c>) + 8003cae: b2db uxtb r3, r3 + 8003cb0: 7013 strb r3, [r2, #0] + 8003cb2: 7a63 ldrb r3, [r4, #9] + 8003cb4: 4a12 ldr r2, [pc, #72] ; (8003d00 <OnRestoreSTSCFGContextProcess+0xa0>) + 8003cb6: b2db uxtb r3, r3 + 8003cb8: 7013 strb r3, [r2, #0] + 8003cba: 2300 movs r3, #0 + 8003cbc: 18e2 adds r2, r4, r3 + 8003cbe: f892 202c ldrb.w r2, [r2, #44] ; 0x2c + 8003cc2: b2d2 uxtb r2, r2 + 8003cc4: 54ca strb r2, [r1, r3] + 8003cc6: 3301 adds r3, #1 + 8003cc8: 2b14 cmp r3, #20 + 8003cca: d1f7 bne.n 8003cbc <OnRestoreSTSCFGContextProcess+0x5c> + 8003ccc: bd10 pop {r4, pc} + 8003cce: 7963 ldrb r3, [r4, #5] + 8003cd0: 2b48 cmp r3, #72 ; 0x48 + 8003cd2: bf0a itet eq + 8003cd4: f44f 6361 moveq.w r3, #3600 ; 0xe10 + 8003cd8: 7963 ldrbne r3, [r4, #5] + 8003cda: 4358 muleq r0, r3 + 8003cdc: e7ca b.n 8003c74 <OnRestoreSTSCFGContextProcess+0x14> + 8003cde: 79e3 ldrb r3, [r4, #7] + 8003ce0: 2b48 cmp r3, #72 ; 0x48 + 8003ce2: bf0a itet eq + 8003ce4: f44f 6361 moveq.w r3, #3600 ; 0xe10 + 8003ce8: 79e3 ldrbne r3, [r4, #7] + 8003cea: 4358 muleq r0, r3 + 8003cec: e7d4 b.n 8003c98 <OnRestoreSTSCFGContextProcess+0x38> + 8003cee: bf00 nop + 8003cf0: 20000078 .word 0x20000078 + 8003cf4: 20000074 .word 0x20000074 + 8003cf8: 20000e66 .word 0x20000e66 + 8003cfc: 20000e52 .word 0x20000e52 + 8003d00: 20000c44 .word 0x20000c44 + +08003d04 <STS_REBOOT_CONFIG_Init>: + 8003d04: b510 push {r4, lr} + 8003d06: b090 sub sp, #64 ; 0x40 + 8003d08: 2100 movs r1, #0 + 8003d0a: 223c movs r2, #60 ; 0x3c + 8003d0c: a801 add r0, sp, #4 + 8003d0e: 9100 str r1, [sp, #0] + 8003d10: f010 fb72 bl 80143f8 <memset> + 8003d14: 2240 movs r2, #64 ; 0x40 + 8003d16: 4937 ldr r1, [pc, #220] ; (8003df4 <STS_REBOOT_CONFIG_Init+0xf0>) + 8003d18: 4668 mov r0, sp + 8003d1a: f00f ff35 bl 8013b88 <UTIL_MEM_cpy_8> + 8003d1e: f89d 2000 ldrb.w r2, [sp] + 8003d22: b93a cbnz r2, 8003d34 <STS_REBOOT_CONFIG_Init+0x30> + 8003d24: f89d 0001 ldrb.w r0, [sp, #1] + 8003d28: 2810 cmp r0, #16 + 8003d2a: d103 bne.n 8003d34 <STS_REBOOT_CONFIG_Init+0x30> + 8003d2c: f89d 1002 ldrb.w r1, [sp, #2] + 8003d30: 2901 cmp r1, #1 + 8003d32: d014 beq.n 8003d5e <STS_REBOOT_CONFIG_Init+0x5a> + 8003d34: 2200 movs r2, #0 + 8003d36: 4611 mov r1, r2 + 8003d38: 4b2f ldr r3, [pc, #188] ; (8003df8 <STS_REBOOT_CONFIG_Init+0xf4>) + 8003d3a: 2001 movs r0, #1 + 8003d3c: f00f fe1c bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003d40: f7ff ff22 bl 8003b88 <OnStoreSTSCFGContextRequest> + 8003d44: 482d ldr r0, [pc, #180] ; (8003dfc <STS_REBOOT_CONFIG_Init+0xf8>) + 8003d46: 2214 movs r2, #20 + 8003d48: 2100 movs r1, #0 + 8003d4a: f00f ff27 bl 8013b9c <UTIL_MEM_set_8> + 8003d4e: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8003d52: f7fe ff25 bl 8002ba0 <HAL_Delay> + 8003d56: f7ff ff83 bl 8003c60 <OnRestoreSTSCFGContextProcess> + 8003d5a: b010 add sp, #64 ; 0x40 + 8003d5c: bd10 pop {r4, pc} + 8003d5e: 4b28 ldr r3, [pc, #160] ; (8003e00 <STS_REBOOT_CONFIG_Init+0xfc>) + 8003d60: 701a strb r2, [r3, #0] + 8003d62: 7058 strb r0, [r3, #1] + 8003d64: 7099 strb r1, [r3, #2] + 8003d66: f89d 1003 ldrb.w r1, [sp, #3] + 8003d6a: 70d9 strb r1, [r3, #3] + 8003d6c: f89d 1004 ldrb.w r1, [sp, #4] + 8003d70: 7119 strb r1, [r3, #4] + 8003d72: f89d 1005 ldrb.w r1, [sp, #5] + 8003d76: 7159 strb r1, [r3, #5] + 8003d78: f89d 1006 ldrb.w r1, [sp, #6] + 8003d7c: 7199 strb r1, [r3, #6] + 8003d7e: f89d 1007 ldrb.w r1, [sp, #7] + 8003d82: 71d9 strb r1, [r3, #7] + 8003d84: f89d 1008 ldrb.w r1, [sp, #8] + 8003d88: 7219 strb r1, [r3, #8] + 8003d8a: f89d 1009 ldrb.w r1, [sp, #9] + 8003d8e: 7259 strb r1, [r3, #9] + 8003d90: f89d 100a ldrb.w r1, [sp, #10] + 8003d94: 7299 strb r1, [r3, #10] + 8003d96: f89d 100b ldrb.w r1, [sp, #11] + 8003d9a: f001 013f and.w r1, r1, #63 ; 0x3f + 8003d9e: 72d9 strb r1, [r3, #11] + 8003da0: 7ad8 ldrb r0, [r3, #11] + 8003da2: b2d1 uxtb r1, r2 + 8003da4: 4288 cmp r0, r1 + 8003da6: d81b bhi.n 8003de0 <STS_REBOOT_CONFIG_Init+0xdc> + 8003da8: f89d 2028 ldrb.w r2, [sp, #40] ; 0x28 + 8003dac: f883 2028 strb.w r2, [r3, #40] ; 0x28 + 8003db0: f89d 2029 ldrb.w r2, [sp, #41] ; 0x29 + 8003db4: f883 2029 strb.w r2, [r3, #41] ; 0x29 + 8003db8: f89d 202a ldrb.w r2, [sp, #42] ; 0x2a + 8003dbc: f883 202a strb.w r2, [r3, #42] ; 0x2a + 8003dc0: f89d 202b ldrb.w r2, [sp, #43] ; 0x2b + 8003dc4: f883 202b strb.w r2, [r3, #43] ; 0x2b + 8003dc8: f10d 012b add.w r1, sp, #43 ; 0x2b + 8003dcc: 2200 movs r2, #0 + 8003dce: 1898 adds r0, r3, r2 + 8003dd0: 3201 adds r2, #1 + 8003dd2: f811 4f01 ldrb.w r4, [r1, #1]! + 8003dd6: f880 402c strb.w r4, [r0, #44] ; 0x2c + 8003dda: 2a14 cmp r2, #20 + 8003ddc: d1f7 bne.n 8003dce <STS_REBOOT_CONFIG_Init+0xca> + 8003dde: e7ba b.n 8003d56 <STS_REBOOT_CONFIG_Init+0x52> + 8003de0: f101 0040 add.w r0, r1, #64 ; 0x40 + 8003de4: 4468 add r0, sp + 8003de6: 4419 add r1, r3 + 8003de8: f810 0c34 ldrb.w r0, [r0, #-52] + 8003dec: 7308 strb r0, [r1, #12] + 8003dee: 3201 adds r2, #1 + 8003df0: e7d6 b.n 8003da0 <STS_REBOOT_CONFIG_Init+0x9c> + 8003df2: bf00 nop + 8003df4: 0803f800 .word 0x0803f800 + 8003df8: 08014c17 .word 0x08014c17 + 8003dfc: 20000e52 .word 0x20000e52 + 8003e00: 20000078 .word 0x20000078 + +08003e04 <LoRaWAN_Init>: + 8003e04: b5f0 push {r4, r5, r6, r7, lr} + 8003e06: 2306 movs r3, #6 + 8003e08: b08b sub sp, #44 ; 0x2c + 8003e0a: 221c movs r2, #28 + 8003e0c: 2400 movs r4, #0 + 8003e0e: 2501 movs r5, #1 + 8003e10: e9cd 3206 strd r3, r2, [sp, #24] + 8003e14: 2703 movs r7, #3 + 8003e16: 2310 movs r3, #16 + 8003e18: 2117 movs r1, #23 + 8003e1a: e9cd 3104 strd r3, r1, [sp, #16] + 8003e1e: 4622 mov r2, r4 + 8003e20: 4b62 ldr r3, [pc, #392] ; (8003fac <LoRaWAN_Init+0x1a8>) + 8003e22: 9403 str r4, [sp, #12] + 8003e24: 4621 mov r1, r4 + 8003e26: e9cd 5501 strd r5, r5, [sp, #4] + 8003e2a: 9700 str r7, [sp, #0] + 8003e2c: 2002 movs r0, #2 + 8003e2e: 9409 str r4, [sp, #36] ; 0x24 + 8003e30: f00f fda2 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003e34: 4b5e ldr r3, [pc, #376] ; (8003fb0 <LoRaWAN_Init+0x1ac>) + 8003e36: 9500 str r5, [sp, #0] + 8003e38: 4622 mov r2, r4 + 8003e3a: 4621 mov r1, r4 + 8003e3c: e9cd 7401 strd r7, r4, [sp, #4] + 8003e40: 2002 movs r0, #2 + 8003e42: f00f fd99 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003e46: 2602 movs r6, #2 + 8003e48: 2305 movs r3, #5 + 8003e4a: e9cd 6300 strd r6, r3, [sp] + 8003e4e: 4622 mov r2, r4 + 8003e50: 4b58 ldr r3, [pc, #352] ; (8003fb4 <LoRaWAN_Init+0x1b0>) + 8003e52: 9402 str r4, [sp, #8] + 8003e54: 4621 mov r1, r4 + 8003e56: 4630 mov r0, r6 + 8003e58: f00f fd8e bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003e5c: 4b56 ldr r3, [pc, #344] ; (8003fb8 <LoRaWAN_Init+0x1b4>) + 8003e5e: 9500 str r5, [sp, #0] + 8003e60: 4622 mov r2, r4 + 8003e62: 4621 mov r1, r4 + 8003e64: e9cd 7401 strd r7, r4, [sp, #4] + 8003e68: 4630 mov r0, r6 + 8003e6a: f00f fd85 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003e6e: a909 add r1, sp, #36 ; 0x24 + 8003e70: 4620 mov r0, r4 + 8003e72: f007 ff65 bl 800bd40 <LmHandlerGetVersion> + 8003e76: 9b09 ldr r3, [sp, #36] ; 0x24 + 8003e78: f3c3 2207 ubfx r2, r3, #8, #8 + 8003e7c: 9202 str r2, [sp, #8] + 8003e7e: f3c3 4207 ubfx r2, r3, #16, #8 + 8003e82: 0e1b lsrs r3, r3, #24 + 8003e84: 9201 str r2, [sp, #4] + 8003e86: 9300 str r3, [sp, #0] + 8003e88: 4622 mov r2, r4 + 8003e8a: 4b4c ldr r3, [pc, #304] ; (8003fbc <LoRaWAN_Init+0x1b8>) + 8003e8c: 4621 mov r1, r4 + 8003e8e: 4630 mov r0, r6 + 8003e90: f00f fd72 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003e94: a909 add r1, sp, #36 ; 0x24 + 8003e96: 4628 mov r0, r5 + 8003e98: f007 ff52 bl 800bd40 <LmHandlerGetVersion> + 8003e9c: 9b09 ldr r3, [sp, #36] ; 0x24 + 8003e9e: b2da uxtb r2, r3 + 8003ea0: 9203 str r2, [sp, #12] + 8003ea2: f3c3 2207 ubfx r2, r3, #8, #8 + 8003ea6: 9202 str r2, [sp, #8] + 8003ea8: f3c3 4207 ubfx r2, r3, #16, #8 + 8003eac: 0e1b lsrs r3, r3, #24 + 8003eae: 9201 str r2, [sp, #4] + 8003eb0: 9300 str r3, [sp, #0] + 8003eb2: 4622 mov r2, r4 + 8003eb4: 4b42 ldr r3, [pc, #264] ; (8003fc0 <LoRaWAN_Init+0x1bc>) + 8003eb6: 4621 mov r1, r4 + 8003eb8: 4630 mov r0, r6 + 8003eba: f00f fd5d bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8003ebe: 4b41 ldr r3, [pc, #260] ; (8003fc4 <LoRaWAN_Init+0x1c0>) + 8003ec0: 4841 ldr r0, [pc, #260] ; (8003fc8 <LoRaWAN_Init+0x1c4>) + 8003ec2: 9400 str r4, [sp, #0] + 8003ec4: 4622 mov r2, r4 + 8003ec6: f44f 71fa mov.w r1, #500 ; 0x1f4 + 8003eca: f010 f825 bl 8013f18 <UTIL_TIMER_Create> + 8003ece: 4b3f ldr r3, [pc, #252] ; (8003fcc <LoRaWAN_Init+0x1c8>) + 8003ed0: 483f ldr r0, [pc, #252] ; (8003fd0 <LoRaWAN_Init+0x1cc>) + 8003ed2: 9400 str r4, [sp, #0] + 8003ed4: 4622 mov r2, r4 + 8003ed6: f44f 71fa mov.w r1, #500 ; 0x1f4 + 8003eda: f010 f81d bl 8013f18 <UTIL_TIMER_Create> + 8003ede: 4b3d ldr r3, [pc, #244] ; (8003fd4 <LoRaWAN_Init+0x1d0>) + 8003ee0: 483d ldr r0, [pc, #244] ; (8003fd8 <LoRaWAN_Init+0x1d4>) + 8003ee2: 9400 str r4, [sp, #0] + 8003ee4: 462a mov r2, r5 + 8003ee6: f44f 71fa mov.w r1, #500 ; 0x1f4 + 8003eea: f010 f815 bl 8013f18 <UTIL_TIMER_Create> + 8003eee: 4620 mov r0, r4 + 8003ef0: f7fe f938 bl 8002164 <FLASH_IF_Init> + 8003ef4: b108 cbz r0, 8003efa <LoRaWAN_Init+0xf6> + 8003ef6: f7fe fbf7 bl 80026e8 <Error_Handler> + 8003efa: 4b38 ldr r3, [pc, #224] ; (8003fdc <LoRaWAN_Init+0x1d8>) + 8003efc: 9400 str r4, [sp, #0] + 8003efe: 2200 movs r2, #0 + 8003f00: f44f 61fa mov.w r1, #2000 ; 0x7d0 + 8003f04: 4836 ldr r0, [pc, #216] ; (8003fe0 <LoRaWAN_Init+0x1dc>) + 8003f06: f010 f807 bl 8013f18 <UTIL_TIMER_Create> + 8003f0a: 4a36 ldr r2, [pc, #216] ; (8003fe4 <LoRaWAN_Init+0x1e0>) + 8003f0c: 2100 movs r1, #0 + 8003f0e: 2001 movs r0, #1 + 8003f10: f00f ff02 bl 8013d18 <UTIL_SEQ_RegTask> + 8003f14: 4a34 ldr r2, [pc, #208] ; (8003fe8 <LoRaWAN_Init+0x1e4>) + 8003f16: 2100 movs r1, #0 + 8003f18: 2002 movs r0, #2 + 8003f1a: f00f fefd bl 8013d18 <UTIL_SEQ_RegTask> + 8003f1e: 4a33 ldr r2, [pc, #204] ; (8003fec <LoRaWAN_Init+0x1e8>) + 8003f20: 2100 movs r1, #0 + 8003f22: 2004 movs r0, #4 + 8003f24: f00f fef8 bl 8013d18 <UTIL_SEQ_RegTask> + 8003f28: 4a31 ldr r2, [pc, #196] ; (8003ff0 <LoRaWAN_Init+0x1ec>) + 8003f2a: 2100 movs r1, #0 + 8003f2c: 2008 movs r0, #8 + 8003f2e: f00f fef3 bl 8013d18 <UTIL_SEQ_RegTask> + 8003f32: f000 fc0f bl 8004754 <LoraInfo_Init> + 8003f36: 492f ldr r1, [pc, #188] ; (8003ff4 <LoRaWAN_Init+0x1f0>) + 8003f38: 482f ldr r0, [pc, #188] ; (8003ff8 <LoRaWAN_Init+0x1f4>) + 8003f3a: f007 fec3 bl 800bcc4 <LmHandlerInit> + 8003f3e: 482f ldr r0, [pc, #188] ; (8003ffc <LoRaWAN_Init+0x1f8>) + 8003f40: f007 fdb6 bl 800bab0 <LmHandlerConfigure> + 8003f44: 4824 ldr r0, [pc, #144] ; (8003fd8 <LoRaWAN_Init+0x1d4>) + 8003f46: f010 f893 bl 8014070 <UTIL_TIMER_Start> + 8003f4a: 4b2d ldr r3, [pc, #180] ; (8004000 <LoRaWAN_Init+0x1fc>) + 8003f4c: 2100 movs r1, #0 + 8003f4e: 7818 ldrb r0, [r3, #0] + 8003f50: f007 fbdc bl 800b70c <LmHandlerJoin> + 8003f54: 492b ldr r1, [pc, #172] ; (8004004 <LoRaWAN_Init+0x200>) + 8003f56: 9400 str r4, [sp, #0] + 8003f58: 4b2b ldr r3, [pc, #172] ; (8004008 <LoRaWAN_Init+0x204>) + 8003f5a: 6809 ldr r1, [r1, #0] + 8003f5c: 482b ldr r0, [pc, #172] ; (800400c <LoRaWAN_Init+0x208>) + 8003f5e: 2200 movs r2, #0 + 8003f60: f00f ffda bl 8013f18 <UTIL_TIMER_Create> + 8003f64: 4829 ldr r0, [pc, #164] ; (800400c <LoRaWAN_Init+0x208>) + 8003f66: f010 f883 bl 8014070 <UTIL_TIMER_Start> + 8003f6a: f7ff fecb bl 8003d04 <STS_REBOOT_CONFIG_Init> + 8003f6e: 4a28 ldr r2, [pc, #160] ; (8004010 <LoRaWAN_Init+0x20c>) + 8003f70: 2100 movs r1, #0 + 8003f72: 2010 movs r0, #16 + 8003f74: f00f fed0 bl 8013d18 <UTIL_SEQ_RegTask> + 8003f78: 4a26 ldr r2, [pc, #152] ; (8004014 <LoRaWAN_Init+0x210>) + 8003f7a: 2100 movs r1, #0 + 8003f7c: f44f 7080 mov.w r0, #256 ; 0x100 + 8003f80: f00f feca bl 8013d18 <UTIL_SEQ_RegTask> + 8003f84: 4a24 ldr r2, [pc, #144] ; (8004018 <LoRaWAN_Init+0x214>) + 8003f86: 2100 movs r1, #0 + 8003f88: f44f 6080 mov.w r0, #1024 ; 0x400 + 8003f8c: f00f fec4 bl 8013d18 <UTIL_SEQ_RegTask> + 8003f90: 4b22 ldr r3, [pc, #136] ; (800401c <LoRaWAN_Init+0x218>) + 8003f92: 4823 ldr r0, [pc, #140] ; (8004020 <LoRaWAN_Init+0x21c>) + 8003f94: 6819 ldr r1, [r3, #0] + 8003f96: 4b23 ldr r3, [pc, #140] ; (8004024 <LoRaWAN_Init+0x220>) + 8003f98: 9400 str r4, [sp, #0] + 8003f9a: 2200 movs r2, #0 + 8003f9c: f00f ffbc bl 8013f18 <UTIL_TIMER_Create> + 8003fa0: 481f ldr r0, [pc, #124] ; (8004020 <LoRaWAN_Init+0x21c>) + 8003fa2: f010 f865 bl 8014070 <UTIL_TIMER_Start> + 8003fa6: b00b add sp, #44 ; 0x2c + 8003fa8: bdf0 pop {r4, r5, r6, r7, pc} + 8003faa: bf00 nop + 8003fac: 08014c59 .word 0x08014c59 + 8003fb0: 08014ca0 .word 0x08014ca0 + 8003fb4: 08014cc1 .word 0x08014cc1 + 8003fb8: 08014ce2 .word 0x08014ce2 + 8003fbc: 08014d03 .word 0x08014d03 + 8003fc0: 08014d24 .word 0x08014d24 + 8003fc4: 080033b1 .word 0x080033b1 + 8003fc8: 20000d88 .word 0x20000d88 + 8003fcc: 08003a43 .word 0x08003a43 + 8003fd0: 20000d54 .word 0x20000d54 + 8003fd4: 08003a41 .word 0x08003a41 + 8003fd8: 20000d3c .word 0x20000d3c + 8003fdc: 080039c5 .word 0x080039c5 + 8003fe0: 20000d70 .word 0x20000d70 + 8003fe4: 0800b609 .word 0x0800b609 + 8003fe8: 080035e9 .word 0x080035e9 + 8003fec: 08003a11 .word 0x08003a11 + 8003ff0: 08003571 .word 0x08003571 + 8003ff4: 01030000 .word 0x01030000 + 8003ff8: 20000010 .word 0x20000010 + 8003ffc: 2000005c .word 0x2000005c + 8004000: 20000000 .word 0x20000000 + 8004004: 20000074 .word 0x20000074 + 8004008: 080033f1 .word 0x080033f1 + 800400c: 20000da0 .word 0x20000da0 + 8004010: 0800320d .word 0x0800320d + 8004014: 08003281 .word 0x08003281 + 8004018: 080032a9 .word 0x080032a9 + 800401c: 2000000c .word 0x2000000c + 8004020: 20000db8 .word 0x20000db8 + 8004024: 08003971 .word 0x08003971 + +08004028 <STS_SENSOR_Function_Test_Process>: + 8004028: b510 push {r4, lr} + 800402a: 2400 movs r4, #0 + 800402c: b0a2 sub sp, #136 ; 0x88 + 800402e: 227c movs r2, #124 ; 0x7c + 8004030: 4621 mov r1, r4 + 8004032: a803 add r0, sp, #12 + 8004034: 9402 str r4, [sp, #8] + 8004036: f010 f9df bl 80143f8 <memset> + 800403a: 2353 movs r3, #83 ; 0x53 + 800403c: f88d 3008 strb.w r3, [sp, #8] + 8004040: f44f 7388 mov.w r3, #272 ; 0x110 + 8004044: f8ad 300a strh.w r3, [sp, #10] + 8004048: 2301 movs r3, #1 + 800404a: f88d 300c strb.w r3, [sp, #12] + 800404e: f8ad 4004 strh.w r4, [sp, #4] + 8004052: f7fe fd23 bl 8002a9c <GetBatteryLevel> + 8004056: 23fe movs r3, #254 ; 0xfe + 8004058: fbb0 f0f3 udiv r0, r0, r3 + 800405c: eb00 0040 add.w r0, r0, r0, lsl #1 + 8004060: eb00 1040 add.w r0, r0, r0, lsl #5 + 8004064: f88d 000d strb.w r0, [sp, #13] + 8004068: a801 add r0, sp, #4 + 800406a: f000 fd0b bl 8004a84 <STS_SENSOR_MEMS_Get_ID> + 800406e: b978 cbnz r0, 8004090 <STS_SENSOR_Function_Test_Process+0x68> + 8004070: 2358 movs r3, #88 ; 0x58 + 8004072: f88d 300e strb.w r3, [sp, #14] + 8004076: 2407 movs r4, #7 + 8004078: 2230 movs r2, #48 ; 0x30 + 800407a: 2180 movs r1, #128 ; 0x80 + 800407c: 4813 ldr r0, [pc, #76] ; (80040cc <STS_SENSOR_Function_Test_Process+0xa4>) + 800407e: f010 f9bb bl 80143f8 <memset> + 8004082: 4622 mov r2, r4 + 8004084: a902 add r1, sp, #8 + 8004086: 4811 ldr r0, [pc, #68] ; (80040cc <STS_SENSOR_Function_Test_Process+0xa4>) + 8004088: f010 f9ef bl 801446a <memcpy> + 800408c: b022 add sp, #136 ; 0x88 + 800408e: bd10 pop {r4, pc} + 8004090: 2302 movs r3, #2 + 8004092: f88d 300e strb.w r3, [sp, #14] + 8004096: f000 fcd3 bl 8004a40 <MX_TOF_Process> + 800409a: 4b0d ldr r3, [pc, #52] ; (80040d0 <STS_SENSOR_Function_Test_Process+0xa8>) + 800409c: 681a ldr r2, [r3, #0] + 800409e: 1212 asrs r2, r2, #8 + 80040a0: f88d 200f strb.w r2, [sp, #15] + 80040a4: 681a ldr r2, [r3, #0] + 80040a6: f88d 2010 strb.w r2, [sp, #16] + 80040aa: 685a ldr r2, [r3, #4] + 80040ac: 1212 asrs r2, r2, #8 + 80040ae: f88d 2011 strb.w r2, [sp, #17] + 80040b2: 685a ldr r2, [r3, #4] + 80040b4: f88d 2012 strb.w r2, [sp, #18] + 80040b8: 689a ldr r2, [r3, #8] + 80040ba: 689b ldr r3, [r3, #8] + 80040bc: f88d 3014 strb.w r3, [sp, #20] + 80040c0: 1212 asrs r2, r2, #8 + 80040c2: f88d 2013 strb.w r2, [sp, #19] + 80040c6: 240d movs r4, #13 + 80040c8: e7d6 b.n 8004078 <STS_SENSOR_Function_Test_Process+0x50> + 80040ca: bf00 nop + 80040cc: 20000dd1 .word 0x20000dd1 + 80040d0: 20000ef8 .word 0x20000ef8 + +080040d4 <USER_APP_AUTO_RESPONDER_Parse>: + 80040d4: b5f0 push {r4, r5, r6, r7, lr} + 80040d6: 7803 ldrb r3, [r0, #0] + 80040d8: 2b59 cmp r3, #89 ; 0x59 + 80040da: b095 sub sp, #84 ; 0x54 + 80040dc: 4604 mov r4, r0 + 80040de: f040 821f bne.w 8004520 <USER_APP_AUTO_RESPONDER_Parse+0x44c> + 80040e2: 2905 cmp r1, #5 + 80040e4: d85f bhi.n 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80040e6: 7843 ldrb r3, [r0, #1] + 80040e8: 3b44 subs r3, #68 ; 0x44 + 80040ea: 2b16 cmp r3, #22 + 80040ec: d85b bhi.n 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80040ee: e8df f013 tbh [pc, r3, lsl #1] + 80040f2: 015b .short 0x015b + 80040f4: 013d005a .word 0x013d005a + 80040f8: 0145005a .word 0x0145005a + 80040fc: 005a005a .word 0x005a005a + 8004100: 005a005a .word 0x005a005a + 8004104: 005a00a6 .word 0x005a00a6 + 8004108: 005a0128 .word 0x005a0128 + 800410c: 005a005a .word 0x005a005a + 8004110: 005a01ba .word 0x005a01ba + 8004114: 00ca005a .word 0x00ca005a + 8004118: 005a005a .word 0x005a005a + 800411c: 0017005a .word 0x0017005a + 8004120: 7885 ldrb r5, [r0, #2] + 8004122: 2d48 cmp r5, #72 ; 0x48 + 8004124: d117 bne.n 8004156 <USER_APP_AUTO_RESPONDER_Parse+0x82> + 8004126: 4a99 ldr r2, [pc, #612] ; (800438c <USER_APP_AUTO_RESPONDER_Parse+0x2b8>) + 8004128: 2114 movs r1, #20 + 800412a: 2001 movs r0, #1 + 800412c: f7ff fcb6 bl 8003a9c <STS_SENSOR_Upload_Message> + 8004130: f241 3088 movw r0, #5000 ; 0x1388 + 8004134: f7fe fd34 bl 8002ba0 <HAL_Delay> + 8004138: 2200 movs r2, #0 + 800413a: 4b95 ldr r3, [pc, #596] ; (8004390 <USER_APP_AUTO_RESPONDER_Parse+0x2bc>) + 800413c: 4611 mov r1, r2 + 800413e: 2003 movs r0, #3 + 8004140: f00f fc1a bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004144: f640 30b8 movw r0, #3000 ; 0xbb8 + 8004148: f7fe fd2a bl 8002ba0 <HAL_Delay> + 800414c: b015 add sp, #84 ; 0x54 + 800414e: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 8004152: f7ff bc43 b.w 80039dc <OnSystemReset> + 8004156: 2d53 cmp r5, #83 ; 0x53 + 8004158: d10e bne.n 8004178 <USER_APP_AUTO_RESPONDER_Parse+0xa4> + 800415a: 2230 movs r2, #48 ; 0x30 + 800415c: 2180 movs r1, #128 ; 0x80 + 800415e: 488d ldr r0, [pc, #564] ; (8004394 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 8004160: f010 f94a bl 80143f8 <memset> + 8004164: f7ff ff60 bl 8004028 <STS_SENSOR_Function_Test_Process> + 8004168: f241 3088 movw r0, #5000 ; 0x1388 + 800416c: f7fe fd18 bl 8002ba0 <HAL_Delay> + 8004170: 4a88 ldr r2, [pc, #544] ; (8004394 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 8004172: 2115 movs r1, #21 + 8004174: 2001 movs r0, #1 + 8004176: e09b b.n 80042b0 <USER_APP_AUTO_RESPONDER_Parse+0x1dc> + 8004178: 2d43 cmp r5, #67 ; 0x43 + 800417a: d116 bne.n 80041aa <USER_APP_AUTO_RESPONDER_Parse+0xd6> + 800417c: 2400 movs r4, #0 + 800417e: a804 add r0, sp, #16 + 8004180: f88d 4010 strb.w r4, [sp, #16] + 8004184: f007 fbf8 bl 800b978 <LmHandlerGetCurrentClass> + 8004188: 4a82 ldr r2, [pc, #520] ; (8004394 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 800418a: 234c movs r3, #76 ; 0x4c + 800418c: 7013 strb r3, [r2, #0] + 800418e: 2310 movs r3, #16 + 8004190: 7093 strb r3, [r2, #2] + 8004192: f89d 3010 ldrb.w r3, [sp, #16] + 8004196: 7054 strb r4, [r2, #1] + 8004198: 2001 movs r0, #1 + 800419a: 3341 adds r3, #65 ; 0x41 + 800419c: 70d0 strb r0, [r2, #3] + 800419e: 7113 strb r3, [r2, #4] + 80041a0: 2105 movs r1, #5 + 80041a2: f7ff fc7b bl 8003a9c <STS_SENSOR_Upload_Message> + 80041a6: b015 add sp, #84 ; 0x54 + 80041a8: bdf0 pop {r4, r5, r6, r7, pc} + 80041aa: 2d44 cmp r5, #68 ; 0x44 + 80041ac: d1fb bne.n 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80041ae: 4c79 ldr r4, [pc, #484] ; (8004394 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 80041b0: 2359 movs r3, #89 ; 0x59 + 80041b2: 7023 strb r3, [r4, #0] + 80041b4: 235a movs r3, #90 ; 0x5a + 80041b6: 7063 strb r3, [r4, #1] + 80041b8: 70a5 strb r5, [r4, #2] + 80041ba: f000 fc41 bl 8004a40 <MX_TOF_Process> + 80041be: 222c movs r2, #44 ; 0x2c + 80041c0: 2180 movs r1, #128 ; 0x80 + 80041c2: 1d20 adds r0, r4, #4 + 80041c4: f010 f918 bl 80143f8 <memset> + 80041c8: 2300 movs r3, #0 + 80041ca: 7025 strb r5, [r4, #0] + 80041cc: 7063 strb r3, [r4, #1] + 80041ce: 2501 movs r5, #1 + 80041d0: 2310 movs r3, #16 + 80041d2: 70a3 strb r3, [r4, #2] + 80041d4: 70e5 strb r5, [r4, #3] + 80041d6: 7125 strb r5, [r4, #4] + 80041d8: f7fe fc60 bl 8002a9c <GetBatteryLevel> + 80041dc: 4a6e ldr r2, [pc, #440] ; (8004398 <USER_APP_AUTO_RESPONDER_Parse+0x2c4>) + 80041de: 6811 ldr r1, [r2, #0] + 80041e0: 23fe movs r3, #254 ; 0xfe + 80041e2: b289 uxth r1, r1 + 80041e4: fbb0 f0f3 udiv r0, r0, r3 + 80041e8: 2364 movs r3, #100 ; 0x64 + 80041ea: fbb1 f1f3 udiv r1, r1, r3 + 80041ee: 71a1 strb r1, [r4, #6] + 80041f0: 6811 ldr r1, [r2, #0] + 80041f2: eb00 0040 add.w r0, r0, r0, lsl #1 + 80041f6: eb00 1040 add.w r0, r0, r0, lsl #5 + 80041fa: b289 uxth r1, r1 + 80041fc: 7160 strb r0, [r4, #5] + 80041fe: fbb1 f0f3 udiv r0, r1, r3 + 8004202: fb03 1110 mls r1, r3, r0, r1 + 8004206: 71e1 strb r1, [r4, #7] + 8004208: 6851 ldr r1, [r2, #4] + 800420a: b289 uxth r1, r1 + 800420c: fbb1 f1f3 udiv r1, r1, r3 + 8004210: 7221 strb r1, [r4, #8] + 8004212: 6851 ldr r1, [r2, #4] + 8004214: b289 uxth r1, r1 + 8004216: fbb1 f0f3 udiv r0, r1, r3 + 800421a: fb03 1110 mls r1, r3, r0, r1 + 800421e: 7261 strb r1, [r4, #9] + 8004220: 6891 ldr r1, [r2, #8] + 8004222: 6892 ldr r2, [r2, #8] + 8004224: b292 uxth r2, r2 + 8004226: b289 uxth r1, r1 + 8004228: fbb1 f1f3 udiv r1, r1, r3 + 800422c: 72a1 strb r1, [r4, #10] + 800422e: fbb2 f1f3 udiv r1, r2, r3 + 8004232: fb03 2211 mls r2, r3, r1, r2 + 8004236: 72e2 strb r2, [r4, #11] + 8004238: 210c movs r1, #12 + 800423a: 4622 mov r2, r4 + 800423c: e79a b.n 8004174 <USER_APP_AUTO_RESPONDER_Parse+0xa0> + 800423e: 7883 ldrb r3, [r0, #2] + 8004240: 3b30 subs r3, #48 ; 0x30 + 8004242: b2db uxtb r3, r3 + 8004244: 2b09 cmp r3, #9 + 8004246: d8ae bhi.n 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 8004248: 4c54 ldr r4, [pc, #336] ; (800439c <USER_APP_AUTO_RESPONDER_Parse+0x2c8>) + 800424a: 4a55 ldr r2, [pc, #340] ; (80043a0 <USER_APP_AUTO_RESPONDER_Parse+0x2cc>) + 800424c: 7023 strb r3, [r4, #0] + 800424e: 7823 ldrb r3, [r4, #0] + 8004250: b2db uxtb r3, r3 + 8004252: 7253 strb r3, [r2, #9] + 8004254: 4a4f ldr r2, [pc, #316] ; (8004394 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 8004256: 2359 movs r3, #89 ; 0x59 + 8004258: 7013 strb r3, [r2, #0] + 800425a: 234d movs r3, #77 ; 0x4d + 800425c: 7053 strb r3, [r2, #1] + 800425e: 7823 ldrb r3, [r4, #0] + 8004260: 3330 adds r3, #48 ; 0x30 + 8004262: 7093 strb r3, [r2, #2] + 8004264: 2103 movs r1, #3 + 8004266: 2001 movs r0, #1 + 8004268: f7ff fc18 bl 8003a9c <STS_SENSOR_Upload_Message> + 800426c: 7823 ldrb r3, [r4, #0] + 800426e: 9300 str r3, [sp, #0] + 8004270: 2200 movs r2, #0 + 8004272: 4b4c ldr r3, [pc, #304] ; (80043a4 <USER_APP_AUTO_RESPONDER_Parse+0x2d0>) + 8004274: 4611 mov r1, r2 + 8004276: 2001 movs r0, #1 + 8004278: f00f fb7e bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800427c: b015 add sp, #84 ; 0x54 + 800427e: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 8004282: f7ff bc81 b.w 8003b88 <OnStoreSTSCFGContextRequest> + 8004286: 7885 ldrb r5, [r0, #2] + 8004288: 2d48 cmp r5, #72 ; 0x48 + 800428a: d116 bne.n 80042ba <USER_APP_AUTO_RESPONDER_Parse+0x1e6> + 800428c: 4a41 ldr r2, [pc, #260] ; (8004394 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 800428e: 2356 movs r3, #86 ; 0x56 + 8004290: 7013 strb r3, [r2, #0] + 8004292: 2300 movs r3, #0 + 8004294: 7053 strb r3, [r2, #1] + 8004296: 2310 movs r3, #16 + 8004298: 7093 strb r3, [r2, #2] + 800429a: 2303 movs r3, #3 + 800429c: 7113 strb r3, [r2, #4] + 800429e: 2317 movs r3, #23 + 80042a0: 7153 strb r3, [r2, #5] + 80042a2: 2306 movs r3, #6 + 80042a4: 2001 movs r0, #1 + 80042a6: 7193 strb r3, [r2, #6] + 80042a8: 231c movs r3, #28 + 80042aa: 70d0 strb r0, [r2, #3] + 80042ac: 71d3 strb r3, [r2, #7] + 80042ae: 2108 movs r1, #8 + 80042b0: b015 add sp, #84 ; 0x54 + 80042b2: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 80042b6: f7ff bbf1 b.w 8003a9c <STS_SENSOR_Upload_Message> + 80042ba: 2d43 cmp r5, #67 ; 0x43 + 80042bc: f47f af73 bne.w 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80042c0: 4c34 ldr r4, [pc, #208] ; (8004394 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 80042c2: 2100 movs r1, #0 + 80042c4: 223c movs r2, #60 ; 0x3c + 80042c6: a805 add r0, sp, #20 + 80042c8: 9104 str r1, [sp, #16] + 80042ca: f010 f895 bl 80143f8 <memset> + 80042ce: a804 add r0, sp, #16 + 80042d0: f7ff fcc0 bl 8003c54 <OnRestoreSTSCFGContextRequest> + 80042d4: 2224 movs r2, #36 ; 0x24 + 80042d6: 2180 movs r1, #128 ; 0x80 + 80042d8: f104 000c add.w r0, r4, #12 + 80042dc: f010 f88c bl 80143f8 <memset> + 80042e0: f89d 3010 ldrb.w r3, [sp, #16] + 80042e4: 7063 strb r3, [r4, #1] + 80042e6: f89d 3011 ldrb.w r3, [sp, #17] + 80042ea: 70a3 strb r3, [r4, #2] + 80042ec: f89d 3012 ldrb.w r3, [sp, #18] + 80042f0: 70e3 strb r3, [r4, #3] + 80042f2: f89d 3013 ldrb.w r3, [sp, #19] + 80042f6: 7123 strb r3, [r4, #4] + 80042f8: f89d 3014 ldrb.w r3, [sp, #20] + 80042fc: 7163 strb r3, [r4, #5] + 80042fe: f89d 3015 ldrb.w r3, [sp, #21] + 8004302: 71a3 strb r3, [r4, #6] + 8004304: f89d 3016 ldrb.w r3, [sp, #22] + 8004308: 71e3 strb r3, [r4, #7] + 800430a: f89d 3017 ldrb.w r3, [sp, #23] + 800430e: 7223 strb r3, [r4, #8] + 8004310: f89d 3018 ldrb.w r3, [sp, #24] + 8004314: 7025 strb r5, [r4, #0] + 8004316: 7263 strb r3, [r4, #9] + 8004318: f89d 501b ldrb.w r5, [sp, #27] + 800431c: f89d 3019 ldrb.w r3, [sp, #25] + 8004320: 72a3 strb r3, [r4, #10] + 8004322: f89d 301a ldrb.w r3, [sp, #26] + 8004326: 72e3 strb r3, [r4, #11] + 8004328: 462a mov r2, r5 + 800432a: a907 add r1, sp, #28 + 800432c: 7325 strb r5, [r4, #12] + 800432e: f104 000d add.w r0, r4, #13 + 8004332: f010 f89a bl 801446a <memcpy> + 8004336: f105 010d add.w r1, r5, #13 + 800433a: 4622 mov r2, r4 + 800433c: b2c9 uxtb r1, r1 + 800433e: 2001 movs r0, #1 + 8004340: e72f b.n 80041a2 <USER_APP_AUTO_RESPONDER_Parse+0xce> + 8004342: 7880 ldrb r0, [r0, #2] + 8004344: 2839 cmp r0, #57 ; 0x39 + 8004346: d80c bhi.n 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 8004348: 3830 subs r0, #48 ; 0x30 + 800434a: b2c0 uxtb r0, r0 + 800434c: f7fe fff8 bl 8003340 <STS_SENSOR_Power_ON> + 8004350: 4a10 ldr r2, [pc, #64] ; (8004394 <USER_APP_AUTO_RESPONDER_Parse+0x2c0>) + 8004352: 7823 ldrb r3, [r4, #0] + 8004354: 7013 strb r3, [r2, #0] + 8004356: 7863 ldrb r3, [r4, #1] + 8004358: 7053 strb r3, [r2, #1] + 800435a: 78a3 ldrb r3, [r4, #2] + 800435c: 7093 strb r3, [r2, #2] + 800435e: 2103 movs r1, #3 + 8004360: e708 b.n 8004174 <USER_APP_AUTO_RESPONDER_Parse+0xa0> + 8004362: b015 add sp, #84 ; 0x54 + 8004364: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 8004368: f7ff bc00 b.w 8003b6c <STS_SENSOR_Upload_Config_Invalid_Message> + 800436c: 7880 ldrb r0, [r0, #2] + 800436e: 2839 cmp r0, #57 ; 0x39 + 8004370: d8f7 bhi.n 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 8004372: 3830 subs r0, #48 ; 0x30 + 8004374: b2c0 uxtb r0, r0 + 8004376: f7fe ffe8 bl 800334a <STS_SENSOR_Power_OFF> + 800437a: e7e9 b.n 8004350 <USER_APP_AUTO_RESPONDER_Parse+0x27c> + 800437c: 7880 ldrb r0, [r0, #2] + 800437e: 2839 cmp r0, #57 ; 0x39 + 8004380: d8ef bhi.n 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 8004382: 3830 subs r0, #48 ; 0x30 + 8004384: b2c0 uxtb r0, r0 + 8004386: f7fe ffe5 bl 8003354 <STS_SENSOR_MEMS_Reset> + 800438a: e7e1 b.n 8004350 <USER_APP_AUTO_RESPONDER_Parse+0x27c> + 800438c: 08014d48 .word 0x08014d48 + 8004390: 08014d5d .word 0x08014d5d + 8004394: 20000dd1 .word 0x20000dd1 + 8004398: 20000ef8 .word 0x20000ef8 + 800439c: 20000c44 .word 0x20000c44 + 80043a0: 20000078 .word 0x20000078 + 80043a4: 08014d7f .word 0x08014d7f + 80043a8: 7883 ldrb r3, [r0, #2] + 80043aa: 3b30 subs r3, #48 ; 0x30 + 80043ac: b2da uxtb r2, r3 + 80043ae: 2a09 cmp r2, #9 + 80043b0: d8d7 bhi.n 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80043b2: 78c5 ldrb r5, [r0, #3] + 80043b4: 3d30 subs r5, #48 ; 0x30 + 80043b6: b2ea uxtb r2, r5 + 80043b8: 2a09 cmp r2, #9 + 80043ba: d8d2 bhi.n 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80043bc: 7901 ldrb r1, [r0, #4] + 80043be: f1a1 0248 sub.w r2, r1, #72 ; 0x48 + 80043c2: b2d2 uxtb r2, r2 + 80043c4: 2a0b cmp r2, #11 + 80043c6: d8cc bhi.n 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80043c8: 48a3 ldr r0, [pc, #652] ; (8004658 <USER_APP_AUTO_RESPONDER_Parse+0x584>) + 80043ca: fa40 f202 asr.w r2, r0, r2 + 80043ce: 07d0 lsls r0, r2, #31 + 80043d0: d4c7 bmi.n 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 80043d2: 220a movs r2, #10 + 80043d4: 294d cmp r1, #77 ; 0x4d + 80043d6: fb02 5503 mla r5, r2, r3, r5 + 80043da: d13f bne.n 800445c <USER_APP_AUTO_RESPONDER_Parse+0x388> + 80043dc: 233c movs r3, #60 ; 0x3c + 80043de: 435d muls r5, r3 + 80043e0: 4b9e ldr r3, [pc, #632] ; (800465c <USER_APP_AUTO_RESPONDER_Parse+0x588>) + 80043e2: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80043e6: 4368 muls r0, r5 + 80043e8: 6018 str r0, [r3, #0] + 80043ea: 4b9d ldr r3, [pc, #628] ; (8004660 <USER_APP_AUTO_RESPONDER_Parse+0x58c>) + 80043ec: 6018 str r0, [r3, #0] + 80043ee: f7ff f85f bl 80034b0 <OnTxPeriodicityChanged> + 80043f2: 4a9c ldr r2, [pc, #624] ; (8004664 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 80043f4: 7823 ldrb r3, [r4, #0] + 80043f6: 7013 strb r3, [r2, #0] + 80043f8: 7863 ldrb r3, [r4, #1] + 80043fa: 7053 strb r3, [r2, #1] + 80043fc: 78a3 ldrb r3, [r4, #2] + 80043fe: 7093 strb r3, [r2, #2] + 8004400: 78e3 ldrb r3, [r4, #3] + 8004402: 70d3 strb r3, [r2, #3] + 8004404: 7923 ldrb r3, [r4, #4] + 8004406: 7113 strb r3, [r2, #4] + 8004408: 2105 movs r1, #5 + 800440a: 2001 movs r0, #1 + 800440c: f7ff fb46 bl 8003a9c <STS_SENSOR_Upload_Message> + 8004410: 4b95 ldr r3, [pc, #596] ; (8004668 <USER_APP_AUTO_RESPONDER_Parse+0x594>) + 8004412: 2210 movs r2, #16 + 8004414: 2600 movs r6, #0 + 8004416: 701e strb r6, [r3, #0] + 8004418: 705a strb r2, [r3, #1] + 800441a: 2201 movs r2, #1 + 800441c: 709a strb r2, [r3, #2] + 800441e: 70da strb r2, [r3, #3] + 8004420: 78a1 ldrb r1, [r4, #2] + 8004422: 3930 subs r1, #48 ; 0x30 + 8004424: eb01 0081 add.w r0, r1, r1, lsl #2 + 8004428: 78e1 ldrb r1, [r4, #3] + 800442a: 3930 subs r1, #48 ; 0x30 + 800442c: eb01 0140 add.w r1, r1, r0, lsl #1 + 8004430: b2c9 uxtb r1, r1 + 8004432: 7119 strb r1, [r3, #4] + 8004434: 7922 ldrb r2, [r4, #4] + 8004436: 715a strb r2, [r3, #5] + 8004438: 4a8c ldr r2, [pc, #560] ; (800466c <USER_APP_AUTO_RESPONDER_Parse+0x598>) + 800443a: 7812 ldrb r2, [r2, #0] + 800443c: b2d2 uxtb r2, r2 + 800443e: 721a strb r2, [r3, #8] + 8004440: 4a8b ldr r2, [pc, #556] ; (8004670 <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 8004442: 7812 ldrb r2, [r2, #0] + 8004444: b2d2 uxtb r2, r2 + 8004446: 725a strb r2, [r3, #9] + 8004448: f7ff fb9e bl 8003b88 <OnStoreSTSCFGContextRequest> + 800444c: 4b89 ldr r3, [pc, #548] ; (8004674 <USER_APP_AUTO_RESPONDER_Parse+0x5a0>) + 800444e: 9500 str r5, [sp, #0] + 8004450: 4632 mov r2, r6 + 8004452: 4631 mov r1, r6 + 8004454: 2002 movs r0, #2 + 8004456: f00f fa8f bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800445a: e6a4 b.n 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 800445c: 2948 cmp r1, #72 ; 0x48 + 800445e: d1bf bne.n 80043e0 <USER_APP_AUTO_RESPONDER_Parse+0x30c> + 8004460: f44f 6361 mov.w r3, #3600 ; 0xe10 + 8004464: e7bb b.n 80043de <USER_APP_AUTO_RESPONDER_Parse+0x30a> + 8004466: 7883 ldrb r3, [r0, #2] + 8004468: 3b30 subs r3, #48 ; 0x30 + 800446a: b2da uxtb r2, r3 + 800446c: 2a09 cmp r2, #9 + 800446e: f63f af78 bhi.w 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 8004472: 78c5 ldrb r5, [r0, #3] + 8004474: 3d30 subs r5, #48 ; 0x30 + 8004476: b2ea uxtb r2, r5 + 8004478: 2a09 cmp r2, #9 + 800447a: f63f af72 bhi.w 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 800447e: 7901 ldrb r1, [r0, #4] + 8004480: f1a1 0248 sub.w r2, r1, #72 ; 0x48 + 8004484: b2d2 uxtb r2, r2 + 8004486: 2a0b cmp r2, #11 + 8004488: f63f af6b bhi.w 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 800448c: 4872 ldr r0, [pc, #456] ; (8004658 <USER_APP_AUTO_RESPONDER_Parse+0x584>) + 800448e: fa40 f202 asr.w r2, r0, r2 + 8004492: 07d2 lsls r2, r2, #31 + 8004494: f53f af65 bmi.w 8004362 <USER_APP_AUTO_RESPONDER_Parse+0x28e> + 8004498: 220a movs r2, #10 + 800449a: 294d cmp r1, #77 ; 0x4d + 800449c: fb02 5503 mla r5, r2, r3, r5 + 80044a0: d139 bne.n 8004516 <USER_APP_AUTO_RESPONDER_Parse+0x442> + 80044a2: 233c movs r3, #60 ; 0x3c + 80044a4: 435d muls r5, r3 + 80044a6: 4a6e ldr r2, [pc, #440] ; (8004660 <USER_APP_AUTO_RESPONDER_Parse+0x58c>) + 80044a8: f44f 737a mov.w r3, #1000 ; 0x3e8 + 80044ac: 436b muls r3, r5 + 80044ae: 6013 str r3, [r2, #0] + 80044b0: 6810 ldr r0, [r2, #0] + 80044b2: f7ff f81f bl 80034f4 <OnYunhornSTSHeartBeatPeriodicityChanged> + 80044b6: 4a6b ldr r2, [pc, #428] ; (8004664 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 80044b8: 7823 ldrb r3, [r4, #0] + 80044ba: 7013 strb r3, [r2, #0] + 80044bc: 7863 ldrb r3, [r4, #1] + 80044be: 7053 strb r3, [r2, #1] + 80044c0: 78a3 ldrb r3, [r4, #2] + 80044c2: 7093 strb r3, [r2, #2] + 80044c4: 78e3 ldrb r3, [r4, #3] + 80044c6: 70d3 strb r3, [r2, #3] + 80044c8: 7923 ldrb r3, [r4, #4] + 80044ca: 7113 strb r3, [r2, #4] + 80044cc: 2105 movs r1, #5 + 80044ce: 2001 movs r0, #1 + 80044d0: f7ff fae4 bl 8003a9c <STS_SENSOR_Upload_Message> + 80044d4: 4b64 ldr r3, [pc, #400] ; (8004668 <USER_APP_AUTO_RESPONDER_Parse+0x594>) + 80044d6: 2210 movs r2, #16 + 80044d8: 2600 movs r6, #0 + 80044da: 701e strb r6, [r3, #0] + 80044dc: 705a strb r2, [r3, #1] + 80044de: 2201 movs r2, #1 + 80044e0: 709a strb r2, [r3, #2] + 80044e2: 70da strb r2, [r3, #3] + 80044e4: 78a1 ldrb r1, [r4, #2] + 80044e6: 3930 subs r1, #48 ; 0x30 + 80044e8: eb01 0081 add.w r0, r1, r1, lsl #2 + 80044ec: 78e1 ldrb r1, [r4, #3] + 80044ee: 3930 subs r1, #48 ; 0x30 + 80044f0: eb01 0140 add.w r1, r1, r0, lsl #1 + 80044f4: b2c9 uxtb r1, r1 + 80044f6: 7199 strb r1, [r3, #6] + 80044f8: 7922 ldrb r2, [r4, #4] + 80044fa: 71da strb r2, [r3, #7] + 80044fc: 4a5b ldr r2, [pc, #364] ; (800466c <USER_APP_AUTO_RESPONDER_Parse+0x598>) + 80044fe: 7812 ldrb r2, [r2, #0] + 8004500: b2d2 uxtb r2, r2 + 8004502: 721a strb r2, [r3, #8] + 8004504: 4a5a ldr r2, [pc, #360] ; (8004670 <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 8004506: 7812 ldrb r2, [r2, #0] + 8004508: b2d2 uxtb r2, r2 + 800450a: 725a strb r2, [r3, #9] + 800450c: f7ff fb3c bl 8003b88 <OnStoreSTSCFGContextRequest> + 8004510: 4b59 ldr r3, [pc, #356] ; (8004678 <USER_APP_AUTO_RESPONDER_Parse+0x5a4>) + 8004512: 9500 str r5, [sp, #0] + 8004514: e79c b.n 8004450 <USER_APP_AUTO_RESPONDER_Parse+0x37c> + 8004516: 2948 cmp r1, #72 ; 0x48 + 8004518: d1c5 bne.n 80044a6 <USER_APP_AUTO_RESPONDER_Parse+0x3d2> + 800451a: f44f 6361 mov.w r3, #3600 ; 0xe10 + 800451e: e7c1 b.n 80044a4 <USER_APP_AUTO_RESPONDER_Parse+0x3d0> + 8004520: 2b50 cmp r3, #80 ; 0x50 + 8004522: d15d bne.n 80045e0 <USER_APP_AUTO_RESPONDER_Parse+0x50c> + 8004524: 2902 cmp r1, #2 + 8004526: f67f ae3e bls.w 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 800452a: 7843 ldrb r3, [r0, #1] + 800452c: 3b30 subs r3, #48 ; 0x30 + 800452e: 2b01 cmp r3, #1 + 8004530: f63f ae39 bhi.w 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 8004534: 7883 ldrb r3, [r0, #2] + 8004536: 2b31 cmp r3, #49 ; 0x31 + 8004538: f47f ae35 bne.w 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 800453c: 290b cmp r1, #11 + 800453e: d804 bhi.n 800454a <USER_APP_AUTO_RESPONDER_Parse+0x476> + 8004540: f7ff fb14 bl 8003b6c <STS_SENSOR_Upload_Config_Invalid_Message> + 8004544: 2100 movs r1, #0 + 8004546: 4a47 ldr r2, [pc, #284] ; (8004664 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 8004548: e614 b.n 8004174 <USER_APP_AUTO_RESPONDER_Parse+0xa0> + 800454a: 4d47 ldr r5, [pc, #284] ; (8004668 <USER_APP_AUTO_RESPONDER_Parse+0x594>) + 800454c: 4f4b ldr r7, [pc, #300] ; (800467c <USER_APP_AUTO_RESPONDER_Parse+0x5a8>) + 800454e: 3402 adds r4, #2 + 8004550: 2600 movs r6, #0 + 8004552: f814 2f01 ldrb.w r2, [r4, #1]! + 8004556: 19a9 adds r1, r5, r6 + 8004558: 3a30 subs r2, #48 ; 0x30 + 800455a: b2d2 uxtb r2, r2 + 800455c: 730a strb r2, [r1, #12] + 800455e: 7b0b ldrb r3, [r1, #12] + 8004560: e9cd 6302 strd r6, r3, [sp, #8] + 8004564: 7823 ldrb r3, [r4, #0] + 8004566: 2200 movs r2, #0 + 8004568: e9cd 6300 strd r6, r3, [sp] + 800456c: 4611 mov r1, r2 + 800456e: 463b mov r3, r7 + 8004570: 2001 movs r0, #1 + 8004572: 3601 adds r6, #1 + 8004574: f00f fa00 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004578: 2e0c cmp r6, #12 + 800457a: d1ea bne.n 8004552 <USER_APP_AUTO_RESPONDER_Parse+0x47e> + 800457c: f7fe ff0c bl 8003398 <STS_SENSOR_NVM_CFG_SIMPLE> + 8004580: 4b38 ldr r3, [pc, #224] ; (8004664 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 8004582: 2250 movs r2, #80 ; 0x50 + 8004584: 701a strb r2, [r3, #0] + 8004586: 2210 movs r2, #16 + 8004588: 709a strb r2, [r3, #2] + 800458a: 2400 movs r4, #0 + 800458c: 2201 movs r2, #1 + 800458e: 705c strb r4, [r3, #1] + 8004590: 70da strb r2, [r3, #3] + 8004592: f803 2f04 strb.w r2, [r3, #4]! + 8004596: 192a adds r2, r5, r4 + 8004598: 3401 adds r4, #1 + 800459a: 7b12 ldrb r2, [r2, #12] + 800459c: 2c0c cmp r4, #12 + 800459e: f102 0230 add.w r2, r2, #48 ; 0x30 + 80045a2: f803 2f01 strb.w r2, [r3, #1]! + 80045a6: d1f6 bne.n 8004596 <USER_APP_AUTO_RESPONDER_Parse+0x4c2> + 80045a8: 2200 movs r2, #0 + 80045aa: 2350 movs r3, #80 ; 0x50 + 80045ac: 4611 mov r1, r2 + 80045ae: 9300 str r3, [sp, #0] + 80045b0: 2001 movs r0, #1 + 80045b2: 4b33 ldr r3, [pc, #204] ; (8004680 <USER_APP_AUTO_RESPONDER_Parse+0x5ac>) + 80045b4: f00f f9e0 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80045b8: 2300 movs r3, #0 + 80045ba: 702b strb r3, [r5, #0] + 80045bc: 2310 movs r3, #16 + 80045be: 706b strb r3, [r5, #1] + 80045c0: 2301 movs r3, #1 + 80045c2: 70ab strb r3, [r5, #2] + 80045c4: 70eb strb r3, [r5, #3] + 80045c6: 4b29 ldr r3, [pc, #164] ; (800466c <USER_APP_AUTO_RESPONDER_Parse+0x598>) + 80045c8: 781b ldrb r3, [r3, #0] + 80045ca: b2db uxtb r3, r3 + 80045cc: 722b strb r3, [r5, #8] + 80045ce: 4b28 ldr r3, [pc, #160] ; (8004670 <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 80045d0: 781b ldrb r3, [r3, #0] + 80045d2: b2db uxtb r3, r3 + 80045d4: 726b strb r3, [r5, #9] + 80045d6: 72ec strb r4, [r5, #11] + 80045d8: f7ff fad6 bl 8003b88 <OnStoreSTSCFGContextRequest> + 80045dc: 2111 movs r1, #17 + 80045de: e7b2 b.n 8004546 <USER_APP_AUTO_RESPONDER_Parse+0x472> + 80045e0: 2b41 cmp r3, #65 ; 0x41 + 80045e2: f47f ade0 bne.w 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80045e6: 7843 ldrb r3, [r0, #1] + 80045e8: 2b43 cmp r3, #67 ; 0x43 + 80045ea: f47f addc bne.w 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80045ee: 2916 cmp r1, #22 + 80045f0: f47f add9 bne.w 80041a6 <USER_APP_AUTO_RESPONDER_Parse+0xd2> + 80045f4: 4d23 ldr r5, [pc, #140] ; (8004684 <USER_APP_AUTO_RESPONDER_Parse+0x5b0>) + 80045f6: 1c42 adds r2, r0, #1 + 80045f8: 2300 movs r3, #0 + 80045fa: f812 1f01 ldrb.w r1, [r2, #1]! + 80045fe: 54e9 strb r1, [r5, r3] + 8004600: 3301 adds r3, #1 + 8004602: 2b14 cmp r3, #20 + 8004604: d1f9 bne.n 80045fa <USER_APP_AUTO_RESPONDER_Parse+0x526> + 8004606: f7fe fdd3 bl 80031b0 <STS_YunhornAuthenticationCode_Process> + 800460a: 4b1f ldr r3, [pc, #124] ; (8004688 <USER_APP_AUTO_RESPONDER_Parse+0x5b4>) + 800460c: 7d5b ldrb r3, [r3, #21] + 800460e: 2b01 cmp r3, #1 + 8004610: d119 bne.n 8004646 <USER_APP_AUTO_RESPONDER_Parse+0x572> + 8004612: 4915 ldr r1, [pc, #84] ; (8004668 <USER_APP_AUTO_RESPONDER_Parse+0x594>) + 8004614: 2300 movs r3, #0 + 8004616: 5cea ldrb r2, [r5, r3] + 8004618: 18c8 adds r0, r1, r3 + 800461a: 3301 adds r3, #1 + 800461c: b2d2 uxtb r2, r2 + 800461e: 2b14 cmp r3, #20 + 8004620: f880 202c strb.w r2, [r0, #44] ; 0x2c + 8004624: d1f7 bne.n 8004616 <USER_APP_AUTO_RESPONDER_Parse+0x542> + 8004626: 4b12 ldr r3, [pc, #72] ; (8004670 <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 8004628: 2200 movs r2, #0 + 800462a: 701a strb r2, [r3, #0] + 800462c: 781b ldrb r3, [r3, #0] + 800462e: b2db uxtb r3, r3 + 8004630: 724b strb r3, [r1, #9] + 8004632: f7ff faa9 bl 8003b88 <OnStoreSTSCFGContextRequest> + 8004636: 4a0b ldr r2, [pc, #44] ; (8004664 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 8004638: 1e63 subs r3, r4, #1 + 800463a: 3415 adds r4, #21 + 800463c: 429c cmp r4, r3 + 800463e: d106 bne.n 800464e <USER_APP_AUTO_RESPONDER_Parse+0x57a> + 8004640: 4a08 ldr r2, [pc, #32] ; (8004664 <USER_APP_AUTO_RESPONDER_Parse+0x590>) + 8004642: 2116 movs r1, #22 + 8004644: e596 b.n 8004174 <USER_APP_AUTO_RESPONDER_Parse+0xa0> + 8004646: 4b0a ldr r3, [pc, #40] ; (8004670 <USER_APP_AUTO_RESPONDER_Parse+0x59c>) + 8004648: 2202 movs r2, #2 + 800464a: 701a strb r2, [r3, #0] + 800464c: e7f3 b.n 8004636 <USER_APP_AUTO_RESPONDER_Parse+0x562> + 800464e: f813 1f01 ldrb.w r1, [r3, #1]! + 8004652: f802 1b01 strb.w r1, [r2], #1 + 8004656: e7f1 b.n 800463c <USER_APP_AUTO_RESPONDER_Parse+0x568> + 8004658: fffff7de .word 0xfffff7de + 800465c: 20000074 .word 0x20000074 + 8004660: 2000000c .word 0x2000000c + 8004664: 20000dd1 .word 0x20000dd1 + 8004668: 20000078 .word 0x20000078 + 800466c: 20000e66 .word 0x20000e66 + 8004670: 20000c44 .word 0x20000c44 + 8004674: 08014da8 .word 0x08014da8 + 8004678: 08014ddf .word 0x08014ddf + 800467c: 08014e2a .word 0x08014e2a + 8004680: 08014e52 .word 0x08014e52 + 8004684: 20000e52 .word 0x20000e52 + 8004688: 20000ab4 .word 0x20000ab4 + +0800468c <OnRxData>: + 800468c: b570 push {r4, r5, r6, lr} + 800468e: 4605 mov r5, r0 + 8004690: b086 sub sp, #24 + 8004692: 460c mov r4, r1 + 8004694: 2900 cmp r1, #0 + 8004696: d03b beq.n 8004710 <OnRxData+0x84> + 8004698: 4828 ldr r0, [pc, #160] ; (800473c <OnRxData+0xb0>) + 800469a: f00f fce9 bl 8014070 <UTIL_TIMER_Start> + 800469e: 7826 ldrb r6, [r4, #0] + 80046a0: b1ee cbz r6, 80046de <OnRxData+0x52> + 80046a2: 2d00 cmp r5, #0 + 80046a4: d048 beq.n 8004738 <OnRxData+0xac> + 80046a6: 6868 ldr r0, [r5, #4] + 80046a8: 782e ldrb r6, [r5, #0] + 80046aa: b1c0 cbz r0, 80046de <OnRxData+0x52> + 80046ac: 2e03 cmp r6, #3 + 80046ae: d00b beq.n 80046c8 <OnRxData+0x3c> + 80046b0: 2e0a cmp r6, #10 + 80046b2: d02f beq.n 8004714 <OnRxData+0x88> + 80046b4: 2e02 cmp r6, #2 + 80046b6: d112 bne.n 80046de <OnRxData+0x52> + 80046b8: 7869 ldrb r1, [r5, #1] + 80046ba: 2901 cmp r1, #1 + 80046bc: d00f beq.n 80046de <OnRxData+0x52> + 80046be: 060b lsls r3, r1, #24 + 80046c0: d40d bmi.n 80046de <OnRxData+0x52> + 80046c2: f7ff fd07 bl 80040d4 <USER_APP_AUTO_RESPONDER_Parse> + 80046c6: e00a b.n 80046de <OnRxData+0x52> + 80046c8: 786b ldrb r3, [r5, #1] + 80046ca: 2b01 cmp r3, #1 + 80046cc: d107 bne.n 80046de <OnRxData+0x52> + 80046ce: 7800 ldrb r0, [r0, #0] + 80046d0: 2801 cmp r0, #1 + 80046d2: d002 beq.n 80046da <OnRxData+0x4e> + 80046d4: 2802 cmp r0, #2 + 80046d6: d000 beq.n 80046da <OnRxData+0x4e> + 80046d8: b908 cbnz r0, 80046de <OnRxData+0x52> + 80046da: f006 ffcd bl 800b678 <LmHandlerRequestClass> + 80046de: 7c23 ldrb r3, [r4, #16] + 80046e0: 2b05 cmp r3, #5 + 80046e2: d815 bhi.n 8004710 <OnRxData+0x84> + 80046e4: f994 200a ldrsb.w r2, [r4, #10] + 80046e8: 9205 str r2, [sp, #20] + 80046ea: f994 2009 ldrsb.w r2, [r4, #9] + 80046ee: 9204 str r2, [sp, #16] + 80046f0: 4a13 ldr r2, [pc, #76] ; (8004740 <OnRxData+0xb4>) + 80046f2: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80046f6: 9303 str r3, [sp, #12] + 80046f8: f994 3008 ldrsb.w r3, [r4, #8] + 80046fc: e9cd 6301 strd r6, r3, [sp, #4] + 8004700: 2200 movs r2, #0 + 8004702: 68e3 ldr r3, [r4, #12] + 8004704: 9300 str r3, [sp, #0] + 8004706: 4611 mov r1, r2 + 8004708: 4b0e ldr r3, [pc, #56] ; (8004744 <OnRxData+0xb8>) + 800470a: 2003 movs r0, #3 + 800470c: f00f f934 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004710: b006 add sp, #24 + 8004712: bd70 pop {r4, r5, r6, pc} + 8004714: 786b ldrb r3, [r5, #1] + 8004716: 2b01 cmp r3, #1 + 8004718: d1e1 bne.n 80046de <OnRxData+0x52> + 800471a: 7802 ldrb r2, [r0, #0] + 800471c: 4b0a ldr r3, [pc, #40] ; (8004748 <OnRxData+0xbc>) + 800471e: f002 0201 and.w r2, r2, #1 + 8004722: 701a strb r2, [r3, #0] + 8004724: b92a cbnz r2, 8004732 <OnRxData+0xa6> + 8004726: 4b09 ldr r3, [pc, #36] ; (800474c <OnRxData+0xc0>) + 8004728: 4611 mov r1, r2 + 800472a: 2003 movs r0, #3 + 800472c: f00f f924 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004730: e7d5 b.n 80046de <OnRxData+0x52> + 8004732: 4b07 ldr r3, [pc, #28] ; (8004750 <OnRxData+0xc4>) + 8004734: 2200 movs r2, #0 + 8004736: e7f7 b.n 8004728 <OnRxData+0x9c> + 8004738: 462e mov r6, r5 + 800473a: e7d0 b.n 80046de <OnRxData+0x52> + 800473c: 20000d54 .word 0x20000d54 + 8004740: 08014ed8 .word 0x08014ed8 + 8004744: 08014e80 .word 0x08014e80 + 8004748: 20000d38 .word 0x20000d38 + 800474c: 08014e6d .word 0x08014e6d + 8004750: 08014e77 .word 0x08014e77 + +08004754 <LoraInfo_Init>: + 8004754: 4b03 ldr r3, [pc, #12] ; (8004764 <LoraInfo_Init+0x10>) + 8004756: 2200 movs r2, #0 + 8004758: e9c3 2202 strd r2, r2, [r3, #8] + 800475c: 2201 movs r2, #1 + 800475e: e9c3 2200 strd r2, r2, [r3] + 8004762: 4770 bx lr + 8004764: 20000e68 .word 0x20000e68 + +08004768 <LoraInfo_GetPtr>: + 8004768: 4800 ldr r0, [pc, #0] ; (800476c <LoraInfo_GetPtr+0x4>) + 800476a: 4770 bx lr + 800476c: 20000e68 .word 0x20000e68 + +08004770 <LL_AHB2_GRP1_EnableClock>: + 8004770: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8004774: b082 sub sp, #8 + 8004776: 6cda ldr r2, [r3, #76] ; 0x4c + 8004778: 4302 orrs r2, r0 + 800477a: 64da str r2, [r3, #76] ; 0x4c + 800477c: 6cdb ldr r3, [r3, #76] ; 0x4c + 800477e: 4003 ands r3, r0 + 8004780: 9301 str r3, [sp, #4] + 8004782: 9b01 ldr r3, [sp, #4] + 8004784: b002 add sp, #8 + 8004786: 4770 bx lr + +08004788 <RBI_Init>: + 8004788: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800478c: b086 sub sp, #24 + 800478e: 2400 movs r4, #0 + 8004790: 2002 movs r0, #2 + 8004792: 4d15 ldr r5, [pc, #84] ; (80047e8 <RBI_Init+0x60>) + 8004794: 9405 str r4, [sp, #20] + 8004796: f7ff ffeb bl 8004770 <LL_AHB2_GRP1_EnableClock> + 800479a: 2004 movs r0, #4 + 800479c: f7ff ffe8 bl 8004770 <LL_AHB2_GRP1_EnableClock> + 80047a0: 4f12 ldr r7, [pc, #72] ; (80047ec <RBI_Init+0x64>) + 80047a2: 9403 str r4, [sp, #12] + 80047a4: f44f 7680 mov.w r6, #256 ; 0x100 + 80047a8: 2301 movs r3, #1 + 80047aa: eb0d 0100 add.w r1, sp, r0 + 80047ae: e9cd 6301 strd r6, r3, [sp, #4] + 80047b2: 4628 mov r0, r5 + 80047b4: 2303 movs r3, #3 + 80047b6: 9304 str r3, [sp, #16] + 80047b8: f44f 5800 mov.w r8, #8192 ; 0x2000 + 80047bc: f003 fec6 bl 800854c <HAL_GPIO_Init> + 80047c0: a901 add r1, sp, #4 + 80047c2: 4638 mov r0, r7 + 80047c4: f8cd 8004 str.w r8, [sp, #4] + 80047c8: f003 fec0 bl 800854c <HAL_GPIO_Init> + 80047cc: 4622 mov r2, r4 + 80047ce: 4641 mov r1, r8 + 80047d0: 4638 mov r0, r7 + 80047d2: f003 ffe1 bl 8008798 <HAL_GPIO_WritePin> + 80047d6: 4628 mov r0, r5 + 80047d8: 4622 mov r2, r4 + 80047da: 4631 mov r1, r6 + 80047dc: f003 ffdc bl 8008798 <HAL_GPIO_WritePin> + 80047e0: 4620 mov r0, r4 + 80047e2: b006 add sp, #24 + 80047e4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 80047e8: 48000400 .word 0x48000400 + 80047ec: 48000800 .word 0x48000800 + +080047f0 <RBI_ConfigRFSwitch>: + 80047f0: 2803 cmp r0, #3 + 80047f2: b510 push {r4, lr} + 80047f4: d80e bhi.n 8004814 <RBI_ConfigRFSwitch+0x24> + 80047f6: 2801 cmp r0, #1 + 80047f8: d810 bhi.n 800481c <RBI_ConfigRFSwitch+0x2c> + 80047fa: b968 cbnz r0, 8004818 <RBI_ConfigRFSwitch+0x28> + 80047fc: 4602 mov r2, r0 + 80047fe: 480b ldr r0, [pc, #44] ; (800482c <RBI_ConfigRFSwitch+0x3c>) + 8004800: f44f 7180 mov.w r1, #256 ; 0x100 + 8004804: f003 ffc8 bl 8008798 <HAL_GPIO_WritePin> + 8004808: 2200 movs r2, #0 + 800480a: 4809 ldr r0, [pc, #36] ; (8004830 <RBI_ConfigRFSwitch+0x40>) + 800480c: f44f 5100 mov.w r1, #8192 ; 0x2000 + 8004810: f003 ffc2 bl 8008798 <HAL_GPIO_WritePin> + 8004814: 2000 movs r0, #0 + 8004816: bd10 pop {r4, pc} + 8004818: 2201 movs r2, #1 + 800481a: e7f0 b.n 80047fe <RBI_ConfigRFSwitch+0xe> + 800481c: 2200 movs r2, #0 + 800481e: 4803 ldr r0, [pc, #12] ; (800482c <RBI_ConfigRFSwitch+0x3c>) + 8004820: f44f 7180 mov.w r1, #256 ; 0x100 + 8004824: f003 ffb8 bl 8008798 <HAL_GPIO_WritePin> + 8004828: 2201 movs r2, #1 + 800482a: e7ee b.n 800480a <RBI_ConfigRFSwitch+0x1a> + 800482c: 48000400 .word 0x48000400 + 8004830: 48000800 .word 0x48000800 + +08004834 <RBI_GetTxConfig>: + 8004834: 2002 movs r0, #2 + 8004836: 4770 bx lr + +08004838 <RBI_IsTCXO>: + 8004838: 2000 movs r0, #0 + 800483a: 4770 bx lr + +0800483c <RBI_IsDCDC>: + 800483c: 2001 movs r0, #1 + 800483e: 4770 bx lr + +08004840 <RBI_GetRFOMaxPowerConfig>: + 8004840: 2800 cmp r0, #0 + 8004842: bf0c ite eq + 8004844: 200f moveq r0, #15 + 8004846: 2016 movne r0, #22 + 8004848: 4770 bx lr + ... + +0800484c <Reset_Handler>: + 800484c: 480d ldr r0, [pc, #52] ; (8004884 <LoopForever+0x2>) + 800484e: 4685 mov sp, r0 + 8004850: f002 fe98 bl 8007584 <SystemInit> + 8004854: 480c ldr r0, [pc, #48] ; (8004888 <LoopForever+0x6>) + 8004856: 490d ldr r1, [pc, #52] ; (800488c <LoopForever+0xa>) + 8004858: 4a0d ldr r2, [pc, #52] ; (8004890 <LoopForever+0xe>) + 800485a: 2300 movs r3, #0 + 800485c: e002 b.n 8004864 <LoopCopyDataInit> + +0800485e <CopyDataInit>: + 800485e: 58d4 ldr r4, [r2, r3] + 8004860: 50c4 str r4, [r0, r3] + 8004862: 3304 adds r3, #4 + +08004864 <LoopCopyDataInit>: + 8004864: 18c4 adds r4, r0, r3 + 8004866: 428c cmp r4, r1 + 8004868: d3f9 bcc.n 800485e <CopyDataInit> + 800486a: 4a0a ldr r2, [pc, #40] ; (8004894 <LoopForever+0x12>) + 800486c: 4c0a ldr r4, [pc, #40] ; (8004898 <LoopForever+0x16>) + 800486e: 2300 movs r3, #0 + 8004870: e001 b.n 8004876 <LoopFillZerobss> + +08004872 <FillZerobss>: + 8004872: 6013 str r3, [r2, #0] + 8004874: 3204 adds r2, #4 + +08004876 <LoopFillZerobss>: + 8004876: 42a2 cmp r2, r4 + 8004878: d3fb bcc.n 8004872 <FillZerobss> + 800487a: f00f fdc5 bl 8014408 <__libc_init_array> + 800487e: f7fd ff1f bl 80026c0 <main> + +08004882 <LoopForever>: + 8004882: e7fe b.n 8004882 <LoopForever> + 8004884: 20010000 .word 0x20010000 + 8004888: 20000000 .word 0x20000000 + 800488c: 200008cc .word 0x200008cc + 8004890: 08015c38 .word 0x08015c38 + 8004894: 200008cc .word 0x200008cc + 8004898: 20002e3c .word 0x20002e3c + +0800489c <ADC_IRQHandler>: + 800489c: e7fe b.n 800489c <ADC_IRQHandler> + +0800489e <LL_AHB2_GRP1_EnableClock.constprop.0>: + 800489e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80048a2: b082 sub sp, #8 + 80048a4: 6cda ldr r2, [r3, #76] ; 0x4c + 80048a6: f042 0201 orr.w r2, r2, #1 + 80048aa: 64da str r2, [r3, #76] ; 0x4c + 80048ac: 6cdb ldr r3, [r3, #76] ; 0x4c + 80048ae: f003 0301 and.w r3, r3, #1 + 80048b2: 9301 str r3, [sp, #4] + 80048b4: 9b01 ldr r3, [sp, #4] + 80048b6: b002 add sp, #8 + 80048b8: 4770 bx lr + ... + +080048bc <XWL55_WLE5_53L0X_I2C2Configure>: + 80048bc: b530 push {r4, r5, lr} + 80048be: b087 sub sp, #28 + 80048c0: f7ff ffed bl 800489e <LL_AHB2_GRP1_EnableClock.constprop.0> + 80048c4: f44f 5180 mov.w r1, #4096 ; 0x1000 + 80048c8: 2201 movs r2, #1 + 80048ca: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80048ce: f003 ff63 bl 8008798 <HAL_GPIO_WritePin> + 80048d2: 2201 movs r2, #1 + 80048d4: f44f 6100 mov.w r1, #2048 ; 0x800 + 80048d8: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80048dc: f003 ff5c bl 8008798 <HAL_GPIO_WritePin> + 80048e0: f44f 55c0 mov.w r5, #6144 ; 0x1800 + 80048e4: 2311 movs r3, #17 + 80048e6: e9cd 5301 strd r5, r3, [sp, #4] + 80048ea: a901 add r1, sp, #4 + 80048ec: 2301 movs r3, #1 + 80048ee: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80048f2: 9303 str r3, [sp, #12] + 80048f4: f003 fe2a bl 800854c <HAL_GPIO_Init> + 80048f8: 2408 movs r4, #8 + 80048fa: 250a movs r5, #10 + 80048fc: 2200 movs r2, #0 + 80048fe: f44f 5180 mov.w r1, #4096 ; 0x1000 + 8004902: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004906: f003 ff47 bl 8008798 <HAL_GPIO_WritePin> + 800490a: 2001 movs r0, #1 + 800490c: f7fe f948 bl 8002ba0 <HAL_Delay> + 8004910: 2201 movs r2, #1 + 8004912: f44f 5180 mov.w r1, #4096 ; 0x1000 + 8004916: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 800491a: f003 ff3d bl 8008798 <HAL_GPIO_WritePin> + 800491e: 2001 movs r0, #1 + 8004920: f7fe f93e bl 8002ba0 <HAL_Delay> + 8004924: 3d01 subs r5, #1 + 8004926: d1e9 bne.n 80048fc <XWL55_WLE5_53L0X_I2C2Configure+0x40> + 8004928: f44f 6100 mov.w r1, #2048 ; 0x800 + 800492c: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004930: f003 ff2c bl 800878c <HAL_GPIO_ReadPin> + 8004934: b908 cbnz r0, 800493a <XWL55_WLE5_53L0X_I2C2Configure+0x7e> + 8004936: 3c01 subs r4, #1 + 8004938: d1df bne.n 80048fa <XWL55_WLE5_53L0X_I2C2Configure+0x3e> + 800493a: f44f 6100 mov.w r1, #2048 ; 0x800 + 800493e: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004942: f003 ff23 bl 800878c <HAL_GPIO_ReadPin> + 8004946: bb68 cbnz r0, 80049a4 <XWL55_WLE5_53L0X_I2C2Configure+0xe8> + 8004948: f7ff ffa9 bl 800489e <LL_AHB2_GRP1_EnableClock.constprop.0> + 800494c: 2404 movs r4, #4 + 800494e: 2301 movs r3, #1 + 8004950: 9003 str r0, [sp, #12] + 8004952: a901 add r1, sp, #4 + 8004954: 482a ldr r0, [pc, #168] ; (8004a00 <XWL55_WLE5_53L0X_I2C2Configure+0x144>) + 8004956: e9cd 4301 strd r4, r3, [sp, #4] + 800495a: f003 fdf7 bl 800854c <HAL_GPIO_Init> + 800495e: 4c28 ldr r4, [pc, #160] ; (8004a00 <XWL55_WLE5_53L0X_I2C2Configure+0x144>) + 8004960: 2201 movs r2, #1 + 8004962: 2104 movs r1, #4 + 8004964: 4620 mov r0, r4 + 8004966: f003 ff17 bl 8008798 <HAL_GPIO_WritePin> + 800496a: 2021 movs r0, #33 ; 0x21 + 800496c: f7fe f918 bl 8002ba0 <HAL_Delay> + 8004970: 2200 movs r2, #0 + 8004972: 2104 movs r1, #4 + 8004974: 4620 mov r0, r4 + 8004976: f003 ff0f bl 8008798 <HAL_GPIO_WritePin> + 800497a: 2021 movs r0, #33 ; 0x21 + 800497c: f7fe f910 bl 8002ba0 <HAL_Delay> + 8004980: 2201 movs r2, #1 + 8004982: 2104 movs r1, #4 + 8004984: 4620 mov r0, r4 + 8004986: f003 ff07 bl 8008798 <HAL_GPIO_WritePin> + 800498a: 2021 movs r0, #33 ; 0x21 + 800498c: f7fe f908 bl 8002ba0 <HAL_Delay> + 8004990: 4620 mov r0, r4 + 8004992: 2200 movs r2, #0 + 8004994: 2104 movs r1, #4 + 8004996: f003 feff bl 8008798 <HAL_GPIO_WritePin> + 800499a: f44f 7025 mov.w r0, #660 ; 0x294 + 800499e: f7fe f8ff bl 8002ba0 <HAL_Delay> + 80049a2: e7dd b.n 8004960 <XWL55_WLE5_53L0X_I2C2Configure+0xa4> + 80049a4: f7ff ff7b bl 800489e <LL_AHB2_GRP1_EnableClock.constprop.0> + 80049a8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80049ac: 2400 movs r4, #0 + 80049ae: 6d9a ldr r2, [r3, #88] ; 0x58 + 80049b0: f442 0280 orr.w r2, r2, #4194304 ; 0x400000 + 80049b4: 659a str r2, [r3, #88] ; 0x58 + 80049b6: 6d9b ldr r3, [r3, #88] ; 0x58 + 80049b8: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 80049bc: 9300 str r3, [sp, #0] + 80049be: f44f 52c0 mov.w r2, #6144 ; 0x1800 + 80049c2: 9b00 ldr r3, [sp, #0] + 80049c4: 2312 movs r3, #18 + 80049c6: e9cd 2301 strd r2, r3, [sp, #4] + 80049ca: 2303 movs r3, #3 + 80049cc: e9cd 4303 strd r4, r3, [sp, #12] + 80049d0: 2304 movs r3, #4 + 80049d2: eb0d 0103 add.w r1, sp, r3 + 80049d6: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 80049da: 9305 str r3, [sp, #20] + 80049dc: f003 fdb6 bl 800854c <HAL_GPIO_Init> + 80049e0: 4808 ldr r0, [pc, #32] ; (8004a04 <XWL55_WLE5_53L0X_I2C2Configure+0x148>) + 80049e2: 4909 ldr r1, [pc, #36] ; (8004a08 <XWL55_WLE5_53L0X_I2C2Configure+0x14c>) + 80049e4: 4b09 ldr r3, [pc, #36] ; (8004a0c <XWL55_WLE5_53L0X_I2C2Configure+0x150>) + 80049e6: 6084 str r4, [r0, #8] + 80049e8: e9c0 1300 strd r1, r3, [r0] + 80049ec: 2301 movs r3, #1 + 80049ee: e9c0 3403 strd r3, r4, [r0, #12] + 80049f2: e9c0 4407 strd r4, r4, [r0, #28] + 80049f6: 6144 str r4, [r0, #20] + 80049f8: f004 f842 bl 8008a80 <HAL_I2C_Init> + 80049fc: b007 add sp, #28 + 80049fe: bd30 pop {r4, r5, pc} + 8004a00: 48000400 .word 0x48000400 + 8004a04: 20000e78 .word 0x20000e78 + 8004a08: 40005800 .word 0x40005800 + 8004a0c: 2010091a .word 0x2010091a + +08004a10 <XWL55_WLE5_53L0X_Init>: + 8004a10: f7ff bf54 b.w 80048bc <XWL55_WLE5_53L0X_I2C2Configure> + +08004a14 <XWL55_WLE5_53L0X_ResetId>: + 8004a14: b110 cbz r0, 8004a1c <XWL55_WLE5_53L0X_ResetId+0x8> + 8004a16: 2801 cmp r0, #1 + 8004a18: d009 beq.n 8004a2e <XWL55_WLE5_53L0X_ResetId+0x1a> + 8004a1a: 4770 bx lr + 8004a1c: 3901 subs r1, #1 + 8004a1e: 424a negs r2, r1 + 8004a20: 414a adcs r2, r1 + 8004a22: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8004a26: f44f 7100 mov.w r1, #512 ; 0x200 + 8004a2a: f003 beb5 b.w 8008798 <HAL_GPIO_WritePin> + 8004a2e: 1e4b subs r3, r1, #1 + 8004a30: 425a negs r2, r3 + 8004a32: 4802 ldr r0, [pc, #8] ; (8004a3c <XWL55_WLE5_53L0X_ResetId+0x28>) + 8004a34: 415a adcs r2, r3 + 8004a36: 2108 movs r1, #8 + 8004a38: e7f7 b.n 8004a2a <XWL55_WLE5_53L0X_ResetId+0x16> + 8004a3a: bf00 nop + 8004a3c: 48000400 .word 0x48000400 + +08004a40 <MX_TOF_Process>: + 8004a40: b508 push {r3, lr} + 8004a42: 2001 movs r0, #1 + 8004a44: f7fe fc7c bl 8003340 <STS_SENSOR_Power_ON> + 8004a48: 2064 movs r0, #100 ; 0x64 + 8004a4a: f7fe f8a9 bl 8002ba0 <HAL_Delay> + 8004a4e: f000 f9e1 bl 8004e14 <STS_TOF_VL53L0X_Range_Process> + 8004a52: 2064 movs r0, #100 ; 0x64 + 8004a54: f7fe f8a4 bl 8002ba0 <HAL_Delay> + 8004a58: e8bd 4008 ldmia.w sp!, {r3, lr} + 8004a5c: 2001 movs r0, #1 + 8004a5e: f7fe bc74 b.w 800334a <STS_SENSOR_Power_OFF> + ... + +08004a64 <STS_R0_SENSOR_Read>: + 8004a64: 4b05 ldr r3, [pc, #20] ; (8004a7c <STS_R0_SENSOR_Read+0x18>) + 8004a66: 681a ldr r2, [r3, #0] + 8004a68: 8002 strh r2, [r0, #0] + 8004a6a: 685a ldr r2, [r3, #4] + 8004a6c: 689b ldr r3, [r3, #8] + 8004a6e: 8143 strh r3, [r0, #10] + 8004a70: 4b03 ldr r3, [pc, #12] ; (8004a80 <STS_R0_SENSOR_Read+0x1c>) + 8004a72: 8102 strh r2, [r0, #8] + 8004a74: 2201 movs r2, #1 + 8004a76: 701a strb r2, [r3, #0] + 8004a78: 4770 bx lr + 8004a7a: bf00 nop + 8004a7c: 20000ef8 .word 0x20000ef8 + 8004a80: 20000e51 .word 0x20000e51 + +08004a84 <STS_SENSOR_MEMS_Get_ID>: + 8004a84: b537 push {r0, r1, r2, r4, r5, lr} + 8004a86: 4604 mov r4, r0 + 8004a88: f000 f816 bl 8004ab8 <sts_tof_vl53l0x_DetectSensors> + 8004a8c: f010 05ff ands.w r5, r0, #255 ; 0xff + 8004a90: bf1c itt ne + 8004a92: 23ee movne r3, #238 ; 0xee + 8004a94: 7023 strbne r3, [r4, #0] + 8004a96: 23aa movs r3, #170 ; 0xaa + 8004a98: 7063 strb r3, [r4, #1] + 8004a9a: 9301 str r3, [sp, #4] + 8004a9c: 2200 movs r2, #0 + 8004a9e: 7823 ldrb r3, [r4, #0] + 8004aa0: 9300 str r3, [sp, #0] + 8004aa2: 4611 mov r1, r2 + 8004aa4: 4b03 ldr r3, [pc, #12] ; (8004ab4 <STS_SENSOR_MEMS_Get_ID+0x30>) + 8004aa6: 2001 movs r0, #1 + 8004aa8: f00e ff66 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004aac: 4628 mov r0, r5 + 8004aae: b003 add sp, #12 + 8004ab0: bd30 pop {r4, r5, pc} + 8004ab2: bf00 nop + 8004ab4: 08014ef0 .word 0x08014ef0 + +08004ab8 <sts_tof_vl53l0x_DetectSensors>: + 8004ab8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8004abc: 2400 movs r4, #0 + 8004abe: 4f41 ldr r7, [pc, #260] ; (8004bc4 <sts_tof_vl53l0x_DetectSensors+0x10c>) + 8004ac0: 4d41 ldr r5, [pc, #260] ; (8004bc8 <sts_tof_vl53l0x_DetectSensors+0x110>) + 8004ac2: 603c str r4, [r7, #0] + 8004ac4: b089 sub sp, #36 ; 0x24 + 8004ac6: 4621 mov r1, r4 + 8004ac8: 4620 mov r0, r4 + 8004aca: f7ff ffa3 bl 8004a14 <XWL55_WLE5_53L0X_ResetId> + 8004ace: 4621 mov r1, r4 + 8004ad0: 2001 movs r0, #1 + 8004ad2: f7ff ff9f bl 8004a14 <XWL55_WLE5_53L0X_ResetId> + 8004ad6: 4621 mov r1, r4 + 8004ad8: 2002 movs r0, #2 + 8004ada: f7ff ff9b bl 8004a14 <XWL55_WLE5_53L0X_ResetId> + 8004ade: f8df a0ec ldr.w sl, [pc, #236] ; 8004bcc <sts_tof_vl53l0x_DetectSensors+0x114> + 8004ae2: f8df b0ec ldr.w fp, [pc, #236] ; 8004bd0 <sts_tof_vl53l0x_DetectSensors+0x118> + 8004ae6: f8df 90ec ldr.w r9, [pc, #236] ; 8004bd4 <sts_tof_vl53l0x_DetectSensors+0x11c> + 8004aea: f895 0164 ldrb.w r0, [r5, #356] ; 0x164 + 8004aee: 2352 movs r3, #82 ; 0x52 + 8004af0: 2101 movs r1, #1 + 8004af2: 2600 movs r6, #0 + 8004af4: f885 3160 strb.w r3, [r5, #352] ; 0x160 + 8004af8: f8c5 6168 str.w r6, [r5, #360] ; 0x168 + 8004afc: f7ff ff8a bl 8004a14 <XWL55_WLE5_53L0X_ResetId> + 8004b00: 2003 movs r0, #3 + 8004b02: f7fe f84d bl 8002ba0 <HAL_Delay> + 8004b06: f10d 021e add.w r2, sp, #30 + 8004b0a: 21c0 movs r1, #192 ; 0xc0 + 8004b0c: 4628 mov r0, r5 + 8004b0e: f002 fced bl 80074ec <VL53L0X_RdWord> + 8004b12: 4602 mov r2, r0 + 8004b14: b150 cbz r0, 8004b2c <sts_tof_vl53l0x_DetectSensors+0x74> + 8004b16: 4b30 ldr r3, [pc, #192] ; (8004bd8 <sts_tof_vl53l0x_DetectSensors+0x120>) + 8004b18: 4632 mov r2, r6 + 8004b1a: 4611 mov r1, r2 + 8004b1c: 2001 movs r0, #1 + 8004b1e: f00e ff2b bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004b22: 2100 movs r1, #0 + 8004b24: b2e0 uxtb r0, r4 + 8004b26: f7ff ff75 bl 8004a14 <XWL55_WLE5_53L0X_ResetId> + 8004b2a: e037 b.n 8004b9c <sts_tof_vl53l0x_DetectSensors+0xe4> + 8004b2c: f8bd 301e ldrh.w r3, [sp, #30] + 8004b30: f64e 61aa movw r1, #61098 ; 0xeeaa + 8004b34: 428b cmp r3, r1 + 8004b36: d13d bne.n 8004bb4 <sts_tof_vl53l0x_DetectSensors+0xfc> + 8004b38: 0066 lsls r6, r4, #1 + 8004b3a: 3654 adds r6, #84 ; 0x54 + 8004b3c: b2f6 uxtb r6, r6 + 8004b3e: 9005 str r0, [sp, #20] + 8004b40: 4631 mov r1, r6 + 8004b42: 4628 mov r0, r5 + 8004b44: f000 f9ea bl 8004f1c <VL53L0X_SetDeviceAddress> + 8004b48: 4680 mov r8, r0 + 8004b4a: b110 cbz r0, 8004b52 <sts_tof_vl53l0x_DetectSensors+0x9a> + 8004b4c: 4b23 ldr r3, [pc, #140] ; (8004bdc <sts_tof_vl53l0x_DetectSensors+0x124>) + 8004b4e: 9a05 ldr r2, [sp, #20] + 8004b50: e7e3 b.n 8004b1a <sts_tof_vl53l0x_DetectSensors+0x62> + 8004b52: f10d 021e add.w r2, sp, #30 + 8004b56: 21c0 movs r1, #192 ; 0xc0 + 8004b58: 4628 mov r0, r5 + 8004b5a: f885 6160 strb.w r6, [r5, #352] ; 0x160 + 8004b5e: f002 fcc5 bl 80074ec <VL53L0X_RdWord> + 8004b62: 4628 mov r0, r5 + 8004b64: f000 fb9e bl 80052a4 <VL53L0X_DataInit> + 8004b68: 4602 mov r2, r0 + 8004b6a: bb00 cbnz r0, 8004bae <sts_tof_vl53l0x_DetectSensors+0xf6> + 8004b6c: 683b ldr r3, [r7, #0] + 8004b6e: f8d9 1000 ldr.w r1, [r9] + 8004b72: 2001 movs r0, #1 + 8004b74: 4403 add r3, r0 + 8004b76: 603b str r3, [r7, #0] + 8004b78: fa00 f304 lsl.w r3, r0, r4 + 8004b7c: 430b orrs r3, r1 + 8004b7e: f8c9 3000 str.w r3, [r9] + 8004b82: 9302 str r3, [sp, #8] + 8004b84: f895 3160 ldrb.w r3, [r5, #352] ; 0x160 + 8004b88: 9301 str r3, [sp, #4] + 8004b8a: f8d5 3164 ldr.w r3, [r5, #356] ; 0x164 + 8004b8e: 9300 str r3, [sp, #0] + 8004b90: 4611 mov r1, r2 + 8004b92: 4b13 ldr r3, [pc, #76] ; (8004be0 <sts_tof_vl53l0x_DetectSensors+0x128>) + 8004b94: f8c5 0168 str.w r0, [r5, #360] ; 0x168 + 8004b98: f00e feee bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004b9c: 3401 adds r4, #1 + 8004b9e: 2c03 cmp r4, #3 + 8004ba0: f505 75c8 add.w r5, r5, #400 ; 0x190 + 8004ba4: d1a1 bne.n 8004aea <sts_tof_vl53l0x_DetectSensors+0x32> + 8004ba6: 6838 ldr r0, [r7, #0] + 8004ba8: b009 add sp, #36 ; 0x24 + 8004baa: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8004bae: 465b mov r3, fp + 8004bb0: 4642 mov r2, r8 + 8004bb2: e7b2 b.n 8004b1a <sts_tof_vl53l0x_DetectSensors+0x62> + 8004bb4: 9300 str r3, [sp, #0] + 8004bb6: 4601 mov r1, r0 + 8004bb8: 4653 mov r3, sl + 8004bba: 2001 movs r0, #1 + 8004bbc: f00e fedc bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004bc0: e7af b.n 8004b22 <sts_tof_vl53l0x_DetectSensors+0x6a> + 8004bc2: bf00 nop + 8004bc4: 20000ef0 .word 0x20000ef0 + 8004bc8: 200000bc .word 0x200000bc + 8004bcc: 08014f9a .word 0x08014f9a + 8004bd0: 08014f80 .word 0x08014f80 + 8004bd4: 20000eec .word 0x20000eec + 8004bd8: 08014f05 .word 0x08014f05 + 8004bdc: 08014f15 .word 0x08014f15 + 8004be0: 08014f37 .word 0x08014f37 + +08004be4 <sts_tof_vl53l0x_SetupSingleShot>: + 8004be4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8004be8: f44f 4380 mov.w r3, #16384 ; 0x4000 + 8004bec: b087 sub sp, #28 + 8004bee: f44f 1290 mov.w r2, #1179648 ; 0x120000 + 8004bf2: e9cd 3202 strd r3, r2, [sp, #8] + 8004bf6: 4c68 ldr r4, [pc, #416] ; (8004d98 <sts_tof_vl53l0x_SetupSingleShot+0x1b4>) + 8004bf8: f8df a1a0 ldr.w sl, [pc, #416] ; 8004d9c <sts_tof_vl53l0x_SetupSingleShot+0x1b8> + 8004bfc: f8df b1a0 ldr.w fp, [pc, #416] ; 8004da0 <sts_tof_vl53l0x_SetupSingleShot+0x1bc> + 8004c00: 4605 mov r5, r0 + 8004c02: f04f 090a mov.w r9, #10 + 8004c06: f04f 080e mov.w r8, #14 + 8004c0a: f248 07e8 movw r7, #33000 ; 0x80e8 + 8004c0e: 2600 movs r6, #0 + 8004c10: f8d4 3168 ldr.w r3, [r4, #360] ; 0x168 + 8004c14: 2b00 cmp r3, #0 + 8004c16: f000 80ae beq.w 8004d76 <sts_tof_vl53l0x_SetupSingleShot+0x192> + 8004c1a: 2200 movs r2, #0 + 8004c1c: 4b61 ldr r3, [pc, #388] ; (8004da4 <sts_tof_vl53l0x_SetupSingleShot+0x1c0>) + 8004c1e: 9600 str r6, [sp, #0] + 8004c20: 4611 mov r1, r2 + 8004c22: 2001 movs r0, #1 + 8004c24: f00e fea8 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004c28: 4620 mov r0, r4 + 8004c2a: f000 fe2f bl 800588c <VL53L0X_StaticInit> + 8004c2e: b128 cbz r0, 8004c3c <sts_tof_vl53l0x_SetupSingleShot+0x58> + 8004c30: 2200 movs r2, #0 + 8004c32: 4b5d ldr r3, [pc, #372] ; (8004da8 <sts_tof_vl53l0x_SetupSingleShot+0x1c4>) + 8004c34: 4611 mov r1, r2 + 8004c36: 2001 movs r0, #1 + 8004c38: f00e fe9e bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004c3c: f10d 0212 add.w r2, sp, #18 + 8004c40: f10d 0111 add.w r1, sp, #17 + 8004c44: 4620 mov r0, r4 + 8004c46: f000 fbdb bl 8005400 <VL53L0X_PerformRefCalibration> + 8004c4a: b128 cbz r0, 8004c58 <sts_tof_vl53l0x_SetupSingleShot+0x74> + 8004c4c: 2200 movs r2, #0 + 8004c4e: 4653 mov r3, sl + 8004c50: 4611 mov r1, r2 + 8004c52: 2001 movs r0, #1 + 8004c54: f00e fe90 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004c58: f10d 0213 add.w r2, sp, #19 + 8004c5c: a905 add r1, sp, #20 + 8004c5e: 4620 mov r0, r4 + 8004c60: f000 ff19 bl 8005a96 <VL53L0X_PerformRefSpadManagement> + 8004c64: b128 cbz r0, 8004c72 <sts_tof_vl53l0x_SetupSingleShot+0x8e> + 8004c66: 2200 movs r2, #0 + 8004c68: 4b50 ldr r3, [pc, #320] ; (8004dac <sts_tof_vl53l0x_SetupSingleShot+0x1c8>) + 8004c6a: 4611 mov r1, r2 + 8004c6c: 2001 movs r0, #1 + 8004c6e: f00e fe83 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004c72: 2100 movs r1, #0 + 8004c74: 4620 mov r0, r4 + 8004c76: f000 f955 bl 8004f24 <VL53L0X_SetDeviceMode> + 8004c7a: b128 cbz r0, 8004c88 <sts_tof_vl53l0x_SetupSingleShot+0xa4> + 8004c7c: 2200 movs r2, #0 + 8004c7e: 4b4c ldr r3, [pc, #304] ; (8004db0 <sts_tof_vl53l0x_SetupSingleShot+0x1cc>) + 8004c80: 4611 mov r1, r2 + 8004c82: 2001 movs r0, #1 + 8004c84: f00e fe78 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004c88: 2201 movs r2, #1 + 8004c8a: 2100 movs r1, #0 + 8004c8c: 4620 mov r0, r4 + 8004c8e: f000 fa0d bl 80050ac <VL53L0X_SetLimitCheckEnable> + 8004c92: b128 cbz r0, 8004ca0 <sts_tof_vl53l0x_SetupSingleShot+0xbc> + 8004c94: 2200 movs r2, #0 + 8004c96: 4b47 ldr r3, [pc, #284] ; (8004db4 <sts_tof_vl53l0x_SetupSingleShot+0x1d0>) + 8004c98: 4611 mov r1, r2 + 8004c9a: 2001 movs r0, #1 + 8004c9c: f00e fe6c bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004ca0: 2201 movs r2, #1 + 8004ca2: 4611 mov r1, r2 + 8004ca4: 4620 mov r0, r4 + 8004ca6: f000 fa01 bl 80050ac <VL53L0X_SetLimitCheckEnable> + 8004caa: b128 cbz r0, 8004cb8 <sts_tof_vl53l0x_SetupSingleShot+0xd4> + 8004cac: 2200 movs r2, #0 + 8004cae: 4b41 ldr r3, [pc, #260] ; (8004db4 <sts_tof_vl53l0x_SetupSingleShot+0x1d0>) + 8004cb0: 4611 mov r1, r2 + 8004cb2: 2001 movs r0, #1 + 8004cb4: f00e fe60 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004cb8: 2d02 cmp r5, #2 + 8004cba: d865 bhi.n 8004d88 <sts_tof_vl53l0x_SetupSingleShot+0x1a4> + 8004cbc: 4b3e ldr r3, [pc, #248] ; (8004db8 <sts_tof_vl53l0x_SetupSingleShot+0x1d4>) + 8004cbe: f833 3015 ldrh.w r3, [r3, r5, lsl #1] + 8004cc2: 9302 str r3, [sp, #8] + 8004cc4: 4b3d ldr r3, [pc, #244] ; (8004dbc <sts_tof_vl53l0x_SetupSingleShot+0x1d8>) + 8004cc6: f853 3025 ldr.w r3, [r3, r5, lsl #2] + 8004cca: 9303 str r3, [sp, #12] + 8004ccc: 4b3c ldr r3, [pc, #240] ; (8004dc0 <sts_tof_vl53l0x_SetupSingleShot+0x1dc>) + 8004cce: f853 7025 ldr.w r7, [r3, r5, lsl #2] + 8004cd2: 4b3c ldr r3, [pc, #240] ; (8004dc4 <sts_tof_vl53l0x_SetupSingleShot+0x1e0>) + 8004cd4: f813 8005 ldrb.w r8, [r3, r5] + 8004cd8: 4b3b ldr r3, [pc, #236] ; (8004dc8 <sts_tof_vl53l0x_SetupSingleShot+0x1e4>) + 8004cda: f813 9005 ldrb.w r9, [r3, r5] + 8004cde: 9a02 ldr r2, [sp, #8] + 8004ce0: 2101 movs r1, #1 + 8004ce2: 4620 mov r0, r4 + 8004ce4: f000 fa2d bl 8005142 <VL53L0X_SetLimitCheckValue> + 8004ce8: b128 cbz r0, 8004cf6 <sts_tof_vl53l0x_SetupSingleShot+0x112> + 8004cea: 2200 movs r2, #0 + 8004cec: 4b37 ldr r3, [pc, #220] ; (8004dcc <sts_tof_vl53l0x_SetupSingleShot+0x1e8>) + 8004cee: 4611 mov r1, r2 + 8004cf0: 2001 movs r0, #1 + 8004cf2: f00e fe41 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004cf6: 9a03 ldr r2, [sp, #12] + 8004cf8: 2100 movs r1, #0 + 8004cfa: 4620 mov r0, r4 + 8004cfc: f000 fa21 bl 8005142 <VL53L0X_SetLimitCheckValue> + 8004d00: b128 cbz r0, 8004d0e <sts_tof_vl53l0x_SetupSingleShot+0x12a> + 8004d02: 2200 movs r2, #0 + 8004d04: 4b31 ldr r3, [pc, #196] ; (8004dcc <sts_tof_vl53l0x_SetupSingleShot+0x1e8>) + 8004d06: 4611 mov r1, r2 + 8004d08: 2001 movs r0, #1 + 8004d0a: f00e fe35 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004d0e: 4639 mov r1, r7 + 8004d10: 4620 mov r0, r4 + 8004d12: f000 f921 bl 8004f58 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds> + 8004d16: b128 cbz r0, 8004d24 <sts_tof_vl53l0x_SetupSingleShot+0x140> + 8004d18: 2200 movs r2, #0 + 8004d1a: 4b2d ldr r3, [pc, #180] ; (8004dd0 <sts_tof_vl53l0x_SetupSingleShot+0x1ec>) + 8004d1c: 4611 mov r1, r2 + 8004d1e: 2001 movs r0, #1 + 8004d20: f00e fe2a bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004d24: 4642 mov r2, r8 + 8004d26: 2100 movs r1, #0 + 8004d28: 4620 mov r0, r4 + 8004d2a: f000 f917 bl 8004f5c <VL53L0X_SetVcselPulsePeriod> + 8004d2e: b128 cbz r0, 8004d3c <sts_tof_vl53l0x_SetupSingleShot+0x158> + 8004d30: 2200 movs r2, #0 + 8004d32: 465b mov r3, fp + 8004d34: 4611 mov r1, r2 + 8004d36: 2001 movs r0, #1 + 8004d38: f00e fe1e bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004d3c: 464a mov r2, r9 + 8004d3e: 2101 movs r1, #1 + 8004d40: 4620 mov r0, r4 + 8004d42: f000 f90b bl 8004f5c <VL53L0X_SetVcselPulsePeriod> + 8004d46: b128 cbz r0, 8004d54 <sts_tof_vl53l0x_SetupSingleShot+0x170> + 8004d48: 2200 movs r2, #0 + 8004d4a: 465b mov r3, fp + 8004d4c: 4611 mov r1, r2 + 8004d4e: 2001 movs r0, #1 + 8004d50: f00e fe12 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004d54: f10d 0212 add.w r2, sp, #18 + 8004d58: f10d 0111 add.w r1, sp, #17 + 8004d5c: 4620 mov r0, r4 + 8004d5e: f000 fb4f bl 8005400 <VL53L0X_PerformRefCalibration> + 8004d62: b128 cbz r0, 8004d70 <sts_tof_vl53l0x_SetupSingleShot+0x18c> + 8004d64: 2200 movs r2, #0 + 8004d66: 4653 mov r3, sl + 8004d68: 4611 mov r1, r2 + 8004d6a: 2001 movs r0, #1 + 8004d6c: f00e fe04 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004d70: 2301 movs r3, #1 + 8004d72: f8c4 317c str.w r3, [r4, #380] ; 0x17c + 8004d76: 3601 adds r6, #1 + 8004d78: 2e03 cmp r6, #3 + 8004d7a: f504 74c8 add.w r4, r4, #400 ; 0x190 + 8004d7e: f47f af47 bne.w 8004c10 <sts_tof_vl53l0x_SetupSingleShot+0x2c> + 8004d82: b007 add sp, #28 + 8004d84: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8004d88: 2200 movs r2, #0 + 8004d8a: 4b12 ldr r3, [pc, #72] ; (8004dd4 <sts_tof_vl53l0x_SetupSingleShot+0x1f0>) + 8004d8c: 4611 mov r1, r2 + 8004d8e: 2001 movs r0, #1 + 8004d90: f00e fdf2 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004d94: e7a3 b.n 8004cde <sts_tof_vl53l0x_SetupSingleShot+0xfa> + 8004d96: bf00 nop + 8004d98: 200000bc .word 0x200000bc + 8004d9c: 08014ff0 .word 0x08014ff0 + 8004da0: 080150e9 .word 0x080150e9 + 8004da4: 08014fab .word 0x08014fab + 8004da8: 08014fd5 .word 0x08014fd5 + 8004dac: 08015016 .word 0x08015016 + 8004db0: 0801503f .word 0x0801503f + 8004db4: 0801505d .word 0x0801505d + 8004db8: 0801519c .word 0x0801519c + 8004dbc: 080151a4 .word 0x080151a4 + 8004dc0: 080151b0 .word 0x080151b0 + 8004dc4: 080151bc .word 0x080151bc + 8004dc8: 080151bf .word 0x080151bf + 8004dcc: 0801508f .word 0x0801508f + 8004dd0: 080150b2 .word 0x080150b2 + 8004dd4: 08015081 .word 0x08015081 + +08004dd8 <sts_tof_vl53l0x_Sensor_SetNewRange>: + 8004dd8: b510 push {r4, lr} + 8004dda: 7e0b ldrb r3, [r1, #24] + 8004ddc: b99b cbnz r3, 8004e06 <sts_tof_vl53l0x_Sensor_SetNewRange+0x2e> + 8004dde: f8d0 217c ldr.w r2, [r0, #380] ; 0x17c + 8004de2: 8909 ldrh r1, [r1, #8] + 8004de4: b112 cbz r2, 8004dec <sts_tof_vl53l0x_Sensor_SetNewRange+0x14> + 8004de6: e9c0 135e strd r1, r3, [r0, #376] ; 0x178 + 8004dea: bd10 pop {r4, pc} + 8004dec: 4b08 ldr r3, [pc, #32] ; (8004e10 <sts_tof_vl53l0x_Sensor_SetNewRange+0x38>) + 8004dee: f8d0 4178 ldr.w r4, [r0, #376] ; 0x178 + 8004df2: 681a ldr r2, [r3, #0] + 8004df4: f5c2 7380 rsb r3, r2, #256 ; 0x100 + 8004df8: 434b muls r3, r1 + 8004dfa: fb04 3302 mla r3, r4, r2, r3 + 8004dfe: 121b asrs r3, r3, #8 + 8004e00: f8c0 3178 str.w r3, [r0, #376] ; 0x178 + 8004e04: e7f1 b.n 8004dea <sts_tof_vl53l0x_Sensor_SetNewRange+0x12> + 8004e06: 2301 movs r3, #1 + 8004e08: f8c0 317c str.w r3, [r0, #380] ; 0x17c + 8004e0c: e7ed b.n 8004dea <sts_tof_vl53l0x_Sensor_SetNewRange+0x12> + 8004e0e: bf00 nop + 8004e10: 200000b8 .word 0x200000b8 + +08004e14 <STS_TOF_VL53L0X_Range_Process>: + 8004e14: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8004e18: f8df 90dc ldr.w r9, [pc, #220] ; 8004ef8 <STS_TOF_VL53L0X_Range_Process+0xe4> + 8004e1c: 4e37 ldr r6, [pc, #220] ; (8004efc <STS_TOF_VL53L0X_Range_Process+0xe8>) + 8004e1e: b087 sub sp, #28 + 8004e20: f7ff fdf6 bl 8004a10 <XWL55_WLE5_53L0X_Init> + 8004e24: f8d9 3000 ldr.w r3, [r9] + 8004e28: b10b cbz r3, 8004e2e <STS_TOF_VL53L0X_Range_Process+0x1a> + 8004e2a: 6833 ldr r3, [r6, #0] + 8004e2c: b94b cbnz r3, 8004e42 <STS_TOF_VL53L0X_Range_Process+0x2e> + 8004e2e: f7ff fe43 bl 8004ab8 <sts_tof_vl53l0x_DetectSensors> + 8004e32: 2200 movs r2, #0 + 8004e34: 6030 str r0, [r6, #0] + 8004e36: 4b32 ldr r3, [pc, #200] ; (8004f00 <STS_TOF_VL53L0X_Range_Process+0xec>) + 8004e38: 9000 str r0, [sp, #0] + 8004e3a: 4611 mov r1, r2 + 8004e3c: 2001 movs r0, #1 + 8004e3e: f00e fd9b bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004e42: 6833 ldr r3, [r6, #0] + 8004e44: 4d2f ldr r5, [pc, #188] ; (8004f04 <STS_TOF_VL53L0X_Range_Process+0xf0>) + 8004e46: 2400 movs r4, #0 + 8004e48: 42a3 cmp r3, r4 + 8004e4a: 602c str r4, [r5, #0] + 8004e4c: 606c str r4, [r5, #4] + 8004e4e: 60ac str r4, [r5, #8] + 8004e50: dd47 ble.n 8004ee2 <STS_TOF_VL53L0X_Range_Process+0xce> + 8004e52: f8df 80b4 ldr.w r8, [pc, #180] ; 8004f08 <STS_TOF_VL53L0X_Range_Process+0xf4> + 8004e56: 4f2d ldr r7, [pc, #180] ; (8004f0c <STS_TOF_VL53L0X_Range_Process+0xf8>) + 8004e58: f8df a0b4 ldr.w sl, [pc, #180] ; 8004f10 <STS_TOF_VL53L0X_Range_Process+0xfc> + 8004e5c: f8df b0b4 ldr.w fp, [pc, #180] ; 8004f14 <STS_TOF_VL53L0X_Range_Process+0x100> + 8004e60: 2002 movs r0, #2 + 8004e62: f7ff febf bl 8004be4 <sts_tof_vl53l0x_SetupSingleShot> + 8004e66: 602c str r4, [r5, #0] + 8004e68: 606c str r4, [r5, #4] + 8004e6a: 60ac str r4, [r5, #8] + 8004e6c: f888 4000 strb.w r4, [r8] + 8004e70: f8d7 6168 ldr.w r6, [r7, #360] ; 0x168 + 8004e74: 2e01 cmp r6, #1 + 8004e76: d11d bne.n 8004eb4 <STS_TOF_VL53L0X_Range_Process+0xa0> + 8004e78: 4925 ldr r1, [pc, #148] ; (8004f10 <STS_TOF_VL53L0X_Range_Process+0xfc>) + 8004e7a: 4638 mov r0, r7 + 8004e7c: f000 fc66 bl 800574c <VL53L0X_PerformSingleRangingMeasurement> + 8004e80: b9c0 cbnz r0, 8004eb4 <STS_TOF_VL53L0X_Range_Process+0xa0> + 8004e82: 9005 str r0, [sp, #20] + 8004e84: 4651 mov r1, sl + 8004e86: 4638 mov r0, r7 + 8004e88: f7ff ffa6 bl 8004dd8 <sts_tof_vl53l0x_Sensor_SetNewRange> + 8004e8c: f89a 3018 ldrb.w r3, [sl, #24] + 8004e90: 9a05 ldr r2, [sp, #20] + 8004e92: bb4b cbnz r3, 8004ee8 <STS_TOF_VL53L0X_Range_Process+0xd4> + 8004e94: f8d7 3178 ldr.w r3, [r7, #376] ; 0x178 + 8004e98: f845 3024 str.w r3, [r5, r4, lsl #2] + 8004e9c: f8d9 3000 ldr.w r3, [r9] + 8004ea0: 40a6 lsls r6, r4 + 8004ea2: 431e orrs r6, r3 + 8004ea4: f898 3000 ldrb.w r3, [r8] + 8004ea8: f8c9 6000 str.w r6, [r9] + 8004eac: f043 0301 orr.w r3, r3, #1 + 8004eb0: f888 3000 strb.w r3, [r8] + 8004eb4: 201e movs r0, #30 + 8004eb6: 3401 adds r4, #1 + 8004eb8: f7fd fe72 bl 8002ba0 <HAL_Delay> + 8004ebc: 2c03 cmp r4, #3 + 8004ebe: f507 77c8 add.w r7, r7, #400 ; 0x190 + 8004ec2: d1d5 bne.n 8004e70 <STS_TOF_VL53L0X_Range_Process+0x5c> + 8004ec4: f898 3000 ldrb.w r3, [r8] + 8004ec8: b15b cbz r3, 8004ee2 <STS_TOF_VL53L0X_Range_Process+0xce> + 8004eca: 682b ldr r3, [r5, #0] + 8004ecc: 686a ldr r2, [r5, #4] + 8004ece: 68a9 ldr r1, [r5, #8] + 8004ed0: 9300 str r3, [sp, #0] + 8004ed2: e9cd 2101 strd r2, r1, [sp, #4] + 8004ed6: 2200 movs r2, #0 + 8004ed8: 4b0f ldr r3, [pc, #60] ; (8004f18 <STS_TOF_VL53L0X_Range_Process+0x104>) + 8004eda: 4611 mov r1, r2 + 8004edc: 2001 movs r0, #1 + 8004ede: f00e fd4b bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004ee2: b007 add sp, #28 + 8004ee4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8004ee8: e9cd 4600 strd r4, r6, [sp] + 8004eec: 465b mov r3, fp + 8004eee: 4611 mov r1, r2 + 8004ef0: 4630 mov r0, r6 + 8004ef2: f00e fd41 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8004ef6: e7dd b.n 8004eb4 <STS_TOF_VL53L0X_Range_Process+0xa0> + 8004ef8: 20000eec .word 0x20000eec + 8004efc: 20000ef4 .word 0x20000ef4 + 8004f00: 0801510d .word 0x0801510d + 8004f04: 20000ef8 .word 0x20000ef8 + 8004f08: 20000e51 .word 0x20000e51 + 8004f0c: 200000bc .word 0x200000bc + 8004f10: 20000ed0 .word 0x20000ed0 + 8004f14: 0801512b .word 0x0801512b + 8004f18: 0801514c .word 0x0801514c + +08004f1c <VL53L0X_SetDeviceAddress>: + 8004f1c: 084a lsrs r2, r1, #1 + 8004f1e: 218a movs r1, #138 ; 0x8a + 8004f20: f002 ba96 b.w 8007450 <VL53L0X_WrByte> + +08004f24 <VL53L0X_SetDeviceMode>: + 8004f24: 2915 cmp r1, #21 + 8004f26: d806 bhi.n 8004f36 <VL53L0X_SetDeviceMode+0x12> + 8004f28: 4b04 ldr r3, [pc, #16] ; (8004f3c <VL53L0X_SetDeviceMode+0x18>) + 8004f2a: 40cb lsrs r3, r1 + 8004f2c: 07db lsls r3, r3, #31 + 8004f2e: d502 bpl.n 8004f36 <VL53L0X_SetDeviceMode+0x12> + 8004f30: 7401 strb r1, [r0, #16] + 8004f32: 2000 movs r0, #0 + 8004f34: 4770 bx lr + 8004f36: f06f 0007 mvn.w r0, #7 + 8004f3a: 4770 bx lr + 8004f3c: 0030000b .word 0x0030000b + +08004f40 <VL53L0X_GetFractionEnable>: + 8004f40: b510 push {r4, lr} + 8004f42: 460a mov r2, r1 + 8004f44: 460c mov r4, r1 + 8004f46: 2109 movs r1, #9 + 8004f48: f002 faa4 bl 8007494 <VL53L0X_RdByte> + 8004f4c: b918 cbnz r0, 8004f56 <VL53L0X_GetFractionEnable+0x16> + 8004f4e: 7823 ldrb r3, [r4, #0] + 8004f50: f003 0301 and.w r3, r3, #1 + 8004f54: 7023 strb r3, [r4, #0] + 8004f56: bd10 pop {r4, pc} + +08004f58 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds>: + 8004f58: f001 be6b b.w 8006c32 <VL53L0X_set_measurement_timing_budget_micro_seconds> + +08004f5c <VL53L0X_SetVcselPulsePeriod>: + 8004f5c: f001 bd53 b.w 8006a06 <VL53L0X_set_vcsel_pulse_period> + +08004f60 <VL53L0X_GetVcselPulsePeriod>: + 8004f60: f001 be4d b.w 8006bfe <VL53L0X_get_vcsel_pulse_period> + +08004f64 <VL53L0X_SetSequenceStepEnable>: + 8004f64: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8004f66: 2300 movs r3, #0 + 8004f68: 460c mov r4, r1 + 8004f6a: 4617 mov r7, r2 + 8004f6c: 2101 movs r1, #1 + 8004f6e: f10d 0207 add.w r2, sp, #7 + 8004f72: 4606 mov r6, r0 + 8004f74: f88d 3007 strb.w r3, [sp, #7] + 8004f78: f002 fa8c bl 8007494 <VL53L0X_RdByte> + 8004f7c: 4605 mov r5, r0 + 8004f7e: b9d8 cbnz r0, 8004fb8 <VL53L0X_SetSequenceStepEnable+0x54> + 8004f80: 2f01 cmp r7, #1 + 8004f82: f89d 3007 ldrb.w r3, [sp, #7] + 8004f86: d126 bne.n 8004fd6 <VL53L0X_SetSequenceStepEnable+0x72> + 8004f88: 2c04 cmp r4, #4 + 8004f8a: d83a bhi.n 8005002 <VL53L0X_SetSequenceStepEnable+0x9e> + 8004f8c: e8df f004 tbb [pc, r4] + 8004f90: 1d1a1703 .word 0x1d1a1703 + 8004f94: 20 .byte 0x20 + 8004f95: 00 .byte 0x00 + 8004f96: f043 0410 orr.w r4, r3, #16 + 8004f9a: 42a3 cmp r3, r4 + 8004f9c: d00c beq.n 8004fb8 <VL53L0X_SetSequenceStepEnable+0x54> + 8004f9e: 4622 mov r2, r4 + 8004fa0: 2101 movs r1, #1 + 8004fa2: 4630 mov r0, r6 + 8004fa4: f002 fa54 bl 8007450 <VL53L0X_WrByte> + 8004fa8: 4605 mov r5, r0 + 8004faa: b928 cbnz r0, 8004fb8 <VL53L0X_SetSequenceStepEnable+0x54> + 8004fac: 6971 ldr r1, [r6, #20] + 8004fae: f886 4130 strb.w r4, [r6, #304] ; 0x130 + 8004fb2: 4630 mov r0, r6 + 8004fb4: f7ff ffd0 bl 8004f58 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds> + 8004fb8: 4628 mov r0, r5 + 8004fba: b003 add sp, #12 + 8004fbc: bdf0 pop {r4, r5, r6, r7, pc} + 8004fbe: f043 0428 orr.w r4, r3, #40 ; 0x28 + 8004fc2: e7ea b.n 8004f9a <VL53L0X_SetSequenceStepEnable+0x36> + 8004fc4: f043 0404 orr.w r4, r3, #4 + 8004fc8: e7e7 b.n 8004f9a <VL53L0X_SetSequenceStepEnable+0x36> + 8004fca: f043 0440 orr.w r4, r3, #64 ; 0x40 + 8004fce: e7e4 b.n 8004f9a <VL53L0X_SetSequenceStepEnable+0x36> + 8004fd0: f043 0480 orr.w r4, r3, #128 ; 0x80 + 8004fd4: e7e1 b.n 8004f9a <VL53L0X_SetSequenceStepEnable+0x36> + 8004fd6: 2c04 cmp r4, #4 + 8004fd8: d813 bhi.n 8005002 <VL53L0X_SetSequenceStepEnable+0x9e> + 8004fda: e8df f004 tbb [pc, r4] + 8004fde: 0603 .short 0x0603 + 8004fe0: 0c09 .short 0x0c09 + 8004fe2: 0f .byte 0x0f + 8004fe3: 00 .byte 0x00 + 8004fe4: f003 04ef and.w r4, r3, #239 ; 0xef + 8004fe8: e7d7 b.n 8004f9a <VL53L0X_SetSequenceStepEnable+0x36> + 8004fea: f003 04d7 and.w r4, r3, #215 ; 0xd7 + 8004fee: e7d4 b.n 8004f9a <VL53L0X_SetSequenceStepEnable+0x36> + 8004ff0: f003 04fb and.w r4, r3, #251 ; 0xfb + 8004ff4: e7d1 b.n 8004f9a <VL53L0X_SetSequenceStepEnable+0x36> + 8004ff6: f003 04bf and.w r4, r3, #191 ; 0xbf + 8004ffa: e7ce b.n 8004f9a <VL53L0X_SetSequenceStepEnable+0x36> + 8004ffc: f003 047f and.w r4, r3, #127 ; 0x7f + 8005000: e7cb b.n 8004f9a <VL53L0X_SetSequenceStepEnable+0x36> + 8005002: f06f 0503 mvn.w r5, #3 + 8005006: e7d7 b.n 8004fb8 <VL53L0X_SetSequenceStepEnable+0x54> + +08005008 <VL53L0X_GetSequenceStepEnables>: + 8005008: b513 push {r0, r1, r4, lr} + 800500a: 2300 movs r3, #0 + 800500c: 460c mov r4, r1 + 800500e: f10d 0207 add.w r2, sp, #7 + 8005012: 2101 movs r1, #1 + 8005014: f88d 3007 strb.w r3, [sp, #7] + 8005018: f002 fa3c bl 8007494 <VL53L0X_RdByte> + 800501c: b978 cbnz r0, 800503e <VL53L0X_GetSequenceStepEnables+0x36> + 800501e: f89d 3007 ldrb.w r3, [sp, #7] + 8005022: f3c3 1200 ubfx r2, r3, #4, #1 + 8005026: 7022 strb r2, [r4, #0] + 8005028: f3c3 02c0 ubfx r2, r3, #3, #1 + 800502c: 70a2 strb r2, [r4, #2] + 800502e: f3c3 0280 ubfx r2, r3, #2, #1 + 8005032: 7062 strb r2, [r4, #1] + 8005034: f3c3 1280 ubfx r2, r3, #6, #1 + 8005038: 09db lsrs r3, r3, #7 + 800503a: 70e2 strb r2, [r4, #3] + 800503c: 7123 strb r3, [r4, #4] + 800503e: b002 add sp, #8 + 8005040: bd10 pop {r4, pc} + +08005042 <VL53L0X_GetInterMeasurementPeriodMilliSeconds>: + 8005042: b537 push {r0, r1, r2, r4, r5, lr} + 8005044: 460d mov r5, r1 + 8005046: f10d 0202 add.w r2, sp, #2 + 800504a: 21f8 movs r1, #248 ; 0xf8 + 800504c: 4604 mov r4, r0 + 800504e: f002 fa4d bl 80074ec <VL53L0X_RdWord> + 8005052: b970 cbnz r0, 8005072 <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x30> + 8005054: aa01 add r2, sp, #4 + 8005056: 2104 movs r1, #4 + 8005058: 4620 mov r0, r4 + 800505a: f002 fa67 bl 800752c <VL53L0X_RdDWord> + 800505e: b940 cbnz r0, 8005072 <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x30> + 8005060: f8bd 2002 ldrh.w r2, [sp, #2] + 8005064: b11a cbz r2, 800506e <VL53L0X_GetInterMeasurementPeriodMilliSeconds+0x2c> + 8005066: 9b01 ldr r3, [sp, #4] + 8005068: fbb3 f3f2 udiv r3, r3, r2 + 800506c: 602b str r3, [r5, #0] + 800506e: 682b ldr r3, [r5, #0] + 8005070: 61a3 str r3, [r4, #24] + 8005072: b003 add sp, #12 + 8005074: bd30 pop {r4, r5, pc} + +08005076 <VL53L0X_GetXTalkCompensationEnable>: + 8005076: 7f03 ldrb r3, [r0, #28] + 8005078: 700b strb r3, [r1, #0] + 800507a: 2000 movs r0, #0 + 800507c: 4770 bx lr + +0800507e <VL53L0X_GetXTalkCompensationRateMegaCps>: + 800507e: b537 push {r0, r1, r2, r4, r5, lr} + 8005080: 460d mov r5, r1 + 8005082: f10d 0206 add.w r2, sp, #6 + 8005086: 2120 movs r1, #32 + 8005088: 4604 mov r4, r0 + 800508a: f002 fa2f bl 80074ec <VL53L0X_RdWord> + 800508e: b928 cbnz r0, 800509c <VL53L0X_GetXTalkCompensationRateMegaCps+0x1e> + 8005090: f8bd 3006 ldrh.w r3, [sp, #6] + 8005094: b923 cbnz r3, 80050a0 <VL53L0X_GetXTalkCompensationRateMegaCps+0x22> + 8005096: 6a23 ldr r3, [r4, #32] + 8005098: 602b str r3, [r5, #0] + 800509a: 7720 strb r0, [r4, #28] + 800509c: b003 add sp, #12 + 800509e: bd30 pop {r4, r5, pc} + 80050a0: 00db lsls r3, r3, #3 + 80050a2: 602b str r3, [r5, #0] + 80050a4: 6223 str r3, [r4, #32] + 80050a6: 2301 movs r3, #1 + 80050a8: 7723 strb r3, [r4, #28] + 80050aa: e7f7 b.n 800509c <VL53L0X_GetXTalkCompensationRateMegaCps+0x1e> + +080050ac <VL53L0X_SetLimitCheckEnable>: + 80050ac: 2905 cmp r1, #5 + 80050ae: b5f8 push {r3, r4, r5, r6, r7, lr} + 80050b0: 4604 mov r4, r0 + 80050b2: 460e mov r6, r1 + 80050b4: 4615 mov r5, r2 + 80050b6: d835 bhi.n 8005124 <VL53L0X_SetLimitCheckEnable+0x78> + 80050b8: b162 cbz r2, 80050d4 <VL53L0X_SetLimitCheckEnable+0x28> + 80050ba: eb00 0381 add.w r3, r0, r1, lsl #2 + 80050be: 2101 movs r1, #1 + 80050c0: 6b5a ldr r2, [r3, #52] ; 0x34 + 80050c2: 2300 movs r3, #0 + 80050c4: 1e70 subs r0, r6, #1 + 80050c6: 2804 cmp r0, #4 + 80050c8: d807 bhi.n 80050da <VL53L0X_SetLimitCheckEnable+0x2e> + 80050ca: e8df f000 tbb [pc, r0] + 80050ce: 170e .short 0x170e + 80050d0: 1d1a .short 0x1d1a + 80050d2: 24 .byte 0x24 + 80050d3: 00 .byte 0x00 + 80050d4: 4611 mov r1, r2 + 80050d6: 2301 movs r3, #1 + 80050d8: e7f4 b.n 80050c4 <VL53L0X_SetLimitCheckEnable+0x18> + 80050da: f884 1028 strb.w r1, [r4, #40] ; 0x28 + 80050de: 4434 add r4, r6 + 80050e0: b9e5 cbnz r5, 800511c <VL53L0X_SetLimitCheckEnable+0x70> + 80050e2: f884 5028 strb.w r5, [r4, #40] ; 0x28 + 80050e6: 2000 movs r0, #0 + 80050e8: e007 b.n 80050fa <VL53L0X_SetLimitCheckEnable+0x4e> + 80050ea: f3c2 224f ubfx r2, r2, #9, #16 + 80050ee: 2144 movs r1, #68 ; 0x44 + 80050f0: 4620 mov r0, r4 + 80050f2: f002 f9bd bl 8007470 <VL53L0X_WrWord> + 80050f6: 2800 cmp r0, #0 + 80050f8: d0f1 beq.n 80050de <VL53L0X_SetLimitCheckEnable+0x32> + 80050fa: bdf8 pop {r3, r4, r5, r6, r7, pc} + 80050fc: f884 102a strb.w r1, [r4, #42] ; 0x2a + 8005100: e7ed b.n 80050de <VL53L0X_SetLimitCheckEnable+0x32> + 8005102: f884 102b strb.w r1, [r4, #43] ; 0x2b + 8005106: e7ea b.n 80050de <VL53L0X_SetLimitCheckEnable+0x32> + 8005108: 005b lsls r3, r3, #1 + 800510a: 22fe movs r2, #254 ; 0xfe + 800510c: 2160 movs r1, #96 ; 0x60 + 800510e: 4620 mov r0, r4 + 8005110: f002 f9d5 bl 80074be <VL53L0X_UpdateByte> + 8005114: e7ef b.n 80050f6 <VL53L0X_SetLimitCheckEnable+0x4a> + 8005116: 011b lsls r3, r3, #4 + 8005118: 22ef movs r2, #239 ; 0xef + 800511a: e7f7 b.n 800510c <VL53L0X_SetLimitCheckEnable+0x60> + 800511c: 2301 movs r3, #1 + 800511e: f884 3028 strb.w r3, [r4, #40] ; 0x28 + 8005122: e7e0 b.n 80050e6 <VL53L0X_SetLimitCheckEnable+0x3a> + 8005124: f06f 0003 mvn.w r0, #3 + 8005128: e7e7 b.n 80050fa <VL53L0X_SetLimitCheckEnable+0x4e> + +0800512a <VL53L0X_GetLimitCheckEnable>: + 800512a: 2905 cmp r1, #5 + 800512c: bf96 itet ls + 800512e: 1840 addls r0, r0, r1 + 8005130: 2300 movhi r3, #0 + 8005132: f890 3028 ldrbls.w r3, [r0, #40] ; 0x28 + 8005136: 7013 strb r3, [r2, #0] + 8005138: bf94 ite ls + 800513a: 2000 movls r0, #0 + 800513c: f06f 0003 mvnhi.w r0, #3 + 8005140: 4770 bx lr + +08005142 <VL53L0X_SetLimitCheckValue>: + 8005142: b570 push {r4, r5, r6, lr} + 8005144: 1843 adds r3, r0, r1 + 8005146: 4604 mov r4, r0 + 8005148: f893 0028 ldrb.w r0, [r3, #40] ; 0x28 + 800514c: 460e mov r6, r1 + 800514e: 4615 mov r5, r2 + 8005150: b918 cbnz r0, 800515a <VL53L0X_SetLimitCheckValue+0x18> + 8005152: eb04 0681 add.w r6, r4, r1, lsl #2 + 8005156: 6372 str r2, [r6, #52] ; 0x34 + 8005158: bd70 pop {r4, r5, r6, pc} + 800515a: 2905 cmp r1, #5 + 800515c: d81b bhi.n 8005196 <VL53L0X_SetLimitCheckValue+0x54> + 800515e: e8df f001 tbb [pc, r1] + 8005162: 0903 .short 0x0903 + 8005164: 16161412 .word 0x16161412 + 8005168: 6362 str r2, [r4, #52] ; 0x34 + 800516a: eb04 0486 add.w r4, r4, r6, lsl #2 + 800516e: 2000 movs r0, #0 + 8005170: 6365 str r5, [r4, #52] ; 0x34 + 8005172: e7f1 b.n 8005158 <VL53L0X_SetLimitCheckValue+0x16> + 8005174: f3c2 224f ubfx r2, r2, #9, #16 + 8005178: 2144 movs r1, #68 ; 0x44 + 800517a: 4620 mov r0, r4 + 800517c: f002 f978 bl 8007470 <VL53L0X_WrWord> + 8005180: 2800 cmp r0, #0 + 8005182: d1e9 bne.n 8005158 <VL53L0X_SetLimitCheckValue+0x16> + 8005184: e7f1 b.n 800516a <VL53L0X_SetLimitCheckValue+0x28> + 8005186: 63e2 str r2, [r4, #60] ; 0x3c + 8005188: e7ef b.n 800516a <VL53L0X_SetLimitCheckValue+0x28> + 800518a: 6422 str r2, [r4, #64] ; 0x40 + 800518c: e7ed b.n 800516a <VL53L0X_SetLimitCheckValue+0x28> + 800518e: f3c2 224f ubfx r2, r2, #9, #16 + 8005192: 2164 movs r1, #100 ; 0x64 + 8005194: e7f1 b.n 800517a <VL53L0X_SetLimitCheckValue+0x38> + 8005196: f06f 0003 mvn.w r0, #3 + 800519a: e7dd b.n 8005158 <VL53L0X_SetLimitCheckValue+0x16> + +0800519c <VL53L0X_GetLimitCheckValue>: + 800519c: b537 push {r0, r1, r2, r4, r5, lr} + 800519e: 4604 mov r4, r0 + 80051a0: 4615 mov r5, r2 + 80051a2: 2905 cmp r1, #5 + 80051a4: d82c bhi.n 8005200 <VL53L0X_GetLimitCheckValue+0x64> + 80051a6: e8df f001 tbb [pc, r1] + 80051aa: 0703 .short 0x0703 + 80051ac: 1b1b1917 .word 0x1b1b1917 + 80051b0: 6b43 ldr r3, [r0, #52] ; 0x34 + 80051b2: 602b str r3, [r5, #0] + 80051b4: 2000 movs r0, #0 + 80051b6: e021 b.n 80051fc <VL53L0X_GetLimitCheckValue+0x60> + 80051b8: f10d 0206 add.w r2, sp, #6 + 80051bc: 2144 movs r1, #68 ; 0x44 + 80051be: f002 f995 bl 80074ec <VL53L0X_RdWord> + 80051c2: b9d8 cbnz r0, 80051fc <VL53L0X_GetLimitCheckValue+0x60> + 80051c4: f8bd 2006 ldrh.w r2, [sp, #6] + 80051c8: 0253 lsls r3, r2, #9 + 80051ca: b19a cbz r2, 80051f4 <VL53L0X_GetLimitCheckValue+0x58> + 80051cc: 602b str r3, [r5, #0] + 80051ce: 63a3 str r3, [r4, #56] ; 0x38 + 80051d0: 2301 movs r3, #1 + 80051d2: f884 3029 strb.w r3, [r4, #41] ; 0x29 + 80051d6: e011 b.n 80051fc <VL53L0X_GetLimitCheckValue+0x60> + 80051d8: 6bc3 ldr r3, [r0, #60] ; 0x3c + 80051da: e7ea b.n 80051b2 <VL53L0X_GetLimitCheckValue+0x16> + 80051dc: 6c03 ldr r3, [r0, #64] ; 0x40 + 80051de: e7e8 b.n 80051b2 <VL53L0X_GetLimitCheckValue+0x16> + 80051e0: f10d 0206 add.w r2, sp, #6 + 80051e4: 2164 movs r1, #100 ; 0x64 + 80051e6: f002 f981 bl 80074ec <VL53L0X_RdWord> + 80051ea: b938 cbnz r0, 80051fc <VL53L0X_GetLimitCheckValue+0x60> + 80051ec: f8bd 3006 ldrh.w r3, [sp, #6] + 80051f0: 025b lsls r3, r3, #9 + 80051f2: e7de b.n 80051b2 <VL53L0X_GetLimitCheckValue+0x16> + 80051f4: 6ba3 ldr r3, [r4, #56] ; 0x38 + 80051f6: 602b str r3, [r5, #0] + 80051f8: f884 0029 strb.w r0, [r4, #41] ; 0x29 + 80051fc: b003 add sp, #12 + 80051fe: bd30 pop {r4, r5, pc} + 8005200: f06f 0003 mvn.w r0, #3 + 8005204: e7fa b.n 80051fc <VL53L0X_GetLimitCheckValue+0x60> + +08005206 <VL53L0X_GetWrapAroundCheckEnable>: + 8005206: b537 push {r0, r1, r2, r4, r5, lr} + 8005208: 460d mov r5, r1 + 800520a: f10d 0207 add.w r2, sp, #7 + 800520e: 2101 movs r1, #1 + 8005210: 4604 mov r4, r0 + 8005212: f002 f93f bl 8007494 <VL53L0X_RdByte> + 8005216: b938 cbnz r0, 8005228 <VL53L0X_GetWrapAroundCheckEnable+0x22> + 8005218: f89d 3007 ldrb.w r3, [sp, #7] + 800521c: f884 3130 strb.w r3, [r4, #304] ; 0x130 + 8005220: 09db lsrs r3, r3, #7 + 8005222: 702b strb r3, [r5, #0] + 8005224: f884 304c strb.w r3, [r4, #76] ; 0x4c + 8005228: b003 add sp, #12 + 800522a: bd30 pop {r4, r5, pc} + +0800522c <VL53L0X_GetDeviceParameters>: + 800522c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8005230: 7c03 ldrb r3, [r0, #16] + 8005232: 460c mov r4, r1 + 8005234: f801 3b08 strb.w r3, [r1], #8 + 8005238: 4605 mov r5, r0 + 800523a: f7ff ff02 bl 8005042 <VL53L0X_GetInterMeasurementPeriodMilliSeconds> + 800523e: bb40 cbnz r0, 8005292 <VL53L0X_GetDeviceParameters+0x66> + 8005240: 7320 strb r0, [r4, #12] + 8005242: f104 0110 add.w r1, r4, #16 + 8005246: 4628 mov r0, r5 + 8005248: f7ff ff19 bl 800507e <VL53L0X_GetXTalkCompensationRateMegaCps> + 800524c: bb08 cbnz r0, 8005292 <VL53L0X_GetDeviceParameters+0x66> + 800524e: f104 0114 add.w r1, r4, #20 + 8005252: 4628 mov r0, r5 + 8005254: f000 fc21 bl 8005a9a <VL53L0X_get_offset_calibration_data_micro_meter> + 8005258: b9d8 cbnz r0, 8005292 <VL53L0X_GetDeviceParameters+0x66> + 800525a: f104 0724 add.w r7, r4, #36 ; 0x24 + 800525e: f105 0927 add.w r9, r5, #39 ; 0x27 + 8005262: f104 0817 add.w r8, r4, #23 + 8005266: 4606 mov r6, r0 + 8005268: 463a mov r2, r7 + 800526a: b2b1 uxth r1, r6 + 800526c: 4628 mov r0, r5 + 800526e: f7ff ff95 bl 800519c <VL53L0X_GetLimitCheckValue> + 8005272: b970 cbnz r0, 8005292 <VL53L0X_GetDeviceParameters+0x66> + 8005274: 3601 adds r6, #1 + 8005276: f819 3f01 ldrb.w r3, [r9, #1]! + 800527a: f808 3f01 strb.w r3, [r8, #1]! + 800527e: 2e06 cmp r6, #6 + 8005280: f107 0704 add.w r7, r7, #4 + 8005284: d1f0 bne.n 8005268 <VL53L0X_GetDeviceParameters+0x3c> + 8005286: f104 013c add.w r1, r4, #60 ; 0x3c + 800528a: 4628 mov r0, r5 + 800528c: f7ff ffbb bl 8005206 <VL53L0X_GetWrapAroundCheckEnable> + 8005290: b108 cbz r0, 8005296 <VL53L0X_GetDeviceParameters+0x6a> + 8005292: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 8005296: 1d21 adds r1, r4, #4 + 8005298: 4628 mov r0, r5 + 800529a: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 800529e: f001 bd30 b.w 8006d02 <VL53L0X_get_measurement_timing_budget_micro_seconds> + ... + +080052a4 <VL53L0X_DataInit>: + 80052a4: b5f0 push {r4, r5, r6, r7, lr} + 80052a6: 2200 movs r2, #0 + 80052a8: 4605 mov r5, r0 + 80052aa: b093 sub sp, #76 ; 0x4c + 80052ac: 2188 movs r1, #136 ; 0x88 + 80052ae: f002 f8cf bl 8007450 <VL53L0X_WrByte> + 80052b2: f44f 727a mov.w r2, #1000 ; 0x3e8 + 80052b6: f8a5 2152 strh.w r2, [r5, #338] ; 0x152 + 80052ba: f44f 72c8 mov.w r2, #400 ; 0x190 + 80052be: f8a5 2154 strh.w r2, [r5, #340] ; 0x154 + 80052c2: 4a4c ldr r2, [pc, #304] ; (80053f4 <VL53L0X_DataInit+0x150>) + 80052c4: f8c5 2158 str.w r2, [r5, #344] ; 0x158 + 80052c8: 2300 movs r3, #0 + 80052ca: 4a4b ldr r2, [pc, #300] ; (80053f8 <VL53L0X_DataInit+0x154>) + 80052cc: f885 30f0 strb.w r3, [r5, #240] ; 0xf0 + 80052d0: f8c5 20d4 str.w r2, [r5, #212] ; 0xd4 + 80052d4: 622b str r3, [r5, #32] + 80052d6: a902 add r1, sp, #8 + 80052d8: 4628 mov r0, r5 + 80052da: f7ff ffa7 bl 800522c <VL53L0X_GetDeviceParameters> + 80052de: 4604 mov r4, r0 + 80052e0: b970 cbnz r0, 8005300 <VL53L0X_DataInit+0x5c> + 80052e2: f8ad 0008 strh.w r0, [sp, #8] + 80052e6: ae02 add r6, sp, #8 + 80052e8: ce0f ldmia r6!, {r0, r1, r2, r3} + 80052ea: f105 0710 add.w r7, r5, #16 + 80052ee: c70f stmia r7!, {r0, r1, r2, r3} + 80052f0: ce0f ldmia r6!, {r0, r1, r2, r3} + 80052f2: c70f stmia r7!, {r0, r1, r2, r3} + 80052f4: ce0f ldmia r6!, {r0, r1, r2, r3} + 80052f6: c70f stmia r7!, {r0, r1, r2, r3} + 80052f8: e896 000f ldmia.w r6, {r0, r1, r2, r3} + 80052fc: e887 000f stmia.w r7, {r0, r1, r2, r3} + 8005300: 4b3e ldr r3, [pc, #248] ; (80053fc <VL53L0X_DataInit+0x158>) + 8005302: f8c5 3134 str.w r3, [r5, #308] ; 0x134 + 8005306: f44f 73fa mov.w r3, #500 ; 0x1f4 + 800530a: 2601 movs r6, #1 + 800530c: f8a5 3138 strh.w r3, [r5, #312] ; 0x138 + 8005310: f44f 6320 mov.w r3, #2560 ; 0xa00 + 8005314: f8a5 313c strh.w r3, [r5, #316] ; 0x13c + 8005318: 4632 mov r2, r6 + 800531a: 2180 movs r1, #128 ; 0x80 + 800531c: f885 6150 strb.w r6, [r5, #336] ; 0x150 + 8005320: 4628 mov r0, r5 + 8005322: f002 f895 bl 8007450 <VL53L0X_WrByte> + 8005326: 4632 mov r2, r6 + 8005328: 4607 mov r7, r0 + 800532a: 21ff movs r1, #255 ; 0xff + 800532c: 4628 mov r0, r5 + 800532e: f002 f88f bl 8007450 <VL53L0X_WrByte> + 8005332: 2200 movs r2, #0 + 8005334: 4611 mov r1, r2 + 8005336: 4307 orrs r7, r0 + 8005338: 4628 mov r0, r5 + 800533a: f002 f889 bl 8007450 <VL53L0X_WrByte> + 800533e: 433c orrs r4, r7 + 8005340: b264 sxtb r4, r4 + 8005342: 4304 orrs r4, r0 + 8005344: f10d 0207 add.w r2, sp, #7 + 8005348: 2191 movs r1, #145 ; 0x91 + 800534a: 4628 mov r0, r5 + 800534c: f002 f8a2 bl 8007494 <VL53L0X_RdByte> + 8005350: b264 sxtb r4, r4 + 8005352: f89d 3007 ldrb.w r3, [sp, #7] + 8005356: f885 313a strb.w r3, [r5, #314] ; 0x13a + 800535a: 4304 orrs r4, r0 + 800535c: 4632 mov r2, r6 + 800535e: 2100 movs r1, #0 + 8005360: 4628 mov r0, r5 + 8005362: f002 f875 bl 8007450 <VL53L0X_WrByte> + 8005366: b264 sxtb r4, r4 + 8005368: 4304 orrs r4, r0 + 800536a: 2200 movs r2, #0 + 800536c: 21ff movs r1, #255 ; 0xff + 800536e: 4628 mov r0, r5 + 8005370: f002 f86e bl 8007450 <VL53L0X_WrByte> + 8005374: b264 sxtb r4, r4 + 8005376: 4304 orrs r4, r0 + 8005378: 2200 movs r2, #0 + 800537a: 2180 movs r1, #128 ; 0x80 + 800537c: 4628 mov r0, r5 + 800537e: f002 f867 bl 8007450 <VL53L0X_WrByte> + 8005382: b264 sxtb r4, r4 + 8005384: 4320 orrs r0, r4 + 8005386: b240 sxtb r0, r0 + 8005388: 2400 movs r4, #0 + 800538a: bb88 cbnz r0, 80053f0 <VL53L0X_DataInit+0x14c> + 800538c: b2a1 uxth r1, r4 + 800538e: 2201 movs r2, #1 + 8005390: 4628 mov r0, r5 + 8005392: 3401 adds r4, #1 + 8005394: f7ff fe8a bl 80050ac <VL53L0X_SetLimitCheckEnable> + 8005398: 2c06 cmp r4, #6 + 800539a: d1f6 bne.n 800538a <VL53L0X_DataInit+0xe6> + 800539c: bb40 cbnz r0, 80053f0 <VL53L0X_DataInit+0x14c> + 800539e: 4604 mov r4, r0 + 80053a0: 8568 strh r0, [r5, #42] ; 0x2a + 80053a2: 4602 mov r2, r0 + 80053a4: 2104 movs r1, #4 + 80053a6: 4628 mov r0, r5 + 80053a8: f7ff fe80 bl 80050ac <VL53L0X_SetLimitCheckEnable> + 80053ac: bb00 cbnz r0, 80053f0 <VL53L0X_DataInit+0x14c> + 80053ae: 4602 mov r2, r0 + 80053b0: 2105 movs r1, #5 + 80053b2: 4628 mov r0, r5 + 80053b4: f7ff fe7a bl 80050ac <VL53L0X_SetLimitCheckEnable> + 80053b8: b9d0 cbnz r0, 80053f0 <VL53L0X_DataInit+0x14c> + 80053ba: f44f 1390 mov.w r3, #1179648 ; 0x120000 + 80053be: 636b str r3, [r5, #52] ; 0x34 + 80053c0: f44f 4280 mov.w r2, #16384 ; 0x4000 + 80053c4: 2101 movs r1, #1 + 80053c6: 4628 mov r0, r5 + 80053c8: f7ff febb bl 8005142 <VL53L0X_SetLimitCheckValue> + 80053cc: b980 cbnz r0, 80053f0 <VL53L0X_DataInit+0x14c> + 80053ce: f44f 130c mov.w r3, #2293760 ; 0x230000 + 80053d2: 22ff movs r2, #255 ; 0xff + 80053d4: e9c5 300f strd r3, r0, [r5, #60] ; 0x3c + 80053d8: f885 2130 strb.w r2, [r5, #304] ; 0x130 + 80053dc: 2101 movs r1, #1 + 80053de: 4628 mov r0, r5 + 80053e0: f002 f836 bl 8007450 <VL53L0X_WrByte> + 80053e4: 2301 movs r3, #1 + 80053e6: f885 3132 strb.w r3, [r5, #306] ; 0x132 + 80053ea: b908 cbnz r0, 80053f0 <VL53L0X_DataInit+0x14c> + 80053ec: f885 4115 strb.w r4, [r5, #277] ; 0x115 + 80053f0: b013 add sp, #76 ; 0x4c + 80053f2: bdf0 pop {r4, r5, r6, r7, pc} + 80053f4: 00016b85 .word 0x00016b85 + 80053f8: 000970a4 .word 0x000970a4 + 80053fc: 03840064 .word 0x03840064 + +08005400 <VL53L0X_PerformRefCalibration>: + 8005400: 2301 movs r3, #1 + 8005402: f000 bd79 b.w 8005ef8 <VL53L0X_perform_ref_calibration> + +08005406 <VL53L0X_GetRangingMeasurementData>: + 8005406: e92d 42f0 stmdb sp!, {r4, r5, r6, r7, r9, lr} + 800540a: b08e sub sp, #56 ; 0x38 + 800540c: 460c mov r4, r1 + 800540e: 230c movs r3, #12 + 8005410: aa04 add r2, sp, #16 + 8005412: 2114 movs r1, #20 + 8005414: 4605 mov r5, r0 + 8005416: f002 f805 bl 8007424 <VL53L0X_ReadMulti> + 800541a: 4684 mov ip, r0 + 800541c: 2800 cmp r0, #0 + 800541e: d16c bne.n 80054fa <VL53L0X_GetRangingMeasurementData+0xf4> + 8005420: f89d 301a ldrb.w r3, [sp, #26] + 8005424: f89d 601b ldrb.w r6, [sp, #27] + 8005428: f89d 2017 ldrb.w r2, [sp, #23] + 800542c: f89d 1018 ldrb.w r1, [sp, #24] + 8005430: 75a0 strb r0, [r4, #22] + 8005432: eb06 2603 add.w r6, r6, r3, lsl #8 + 8005436: f89d 3016 ldrb.w r3, [sp, #22] + 800543a: 6020 str r0, [r4, #0] + 800543c: eb02 2203 add.w r2, r2, r3, lsl #8 + 8005440: f89d 3019 ldrb.w r3, [sp, #25] + 8005444: 6060 str r0, [r4, #4] + 8005446: eb03 2301 add.w r3, r3, r1, lsl #8 + 800544a: b29b uxth r3, r3 + 800544c: 025b lsls r3, r3, #9 + 800544e: f89d 1012 ldrb.w r1, [sp, #18] + 8005452: 6123 str r3, [r4, #16] + 8005454: f89d 3013 ldrb.w r3, [sp, #19] + 8005458: f8b5 0152 ldrh.w r0, [r5, #338] ; 0x152 + 800545c: eb03 2301 add.w r3, r3, r1, lsl #8 + 8005460: b292 uxth r2, r2 + 8005462: 0252 lsls r2, r2, #9 + 8005464: b29b uxth r3, r3 + 8005466: 60e2 str r2, [r4, #12] + 8005468: 82a3 strh r3, [r4, #20] + 800546a: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8 + 800546e: f89d 1010 ldrb.w r1, [sp, #16] + 8005472: f895 7131 ldrb.w r7, [r5, #305] ; 0x131 + 8005476: b2b6 uxth r6, r6 + 8005478: d00a beq.n 8005490 <VL53L0X_GetRangingMeasurementData+0x8a> + 800547a: 4370 muls r0, r6 + 800547c: f500 70fa add.w r0, r0, #500 ; 0x1f4 + 8005480: f44f 767a mov.w r6, #1000 ; 0x3e8 + 8005484: fbb0 f0f6 udiv r0, r0, r6 + 8005488: 7f2e ldrb r6, [r5, #28] + 800548a: 2e00 cmp r6, #0 + 800548c: d139 bne.n 8005502 <VL53L0X_GetRangingMeasurementData+0xfc> + 800548e: b286 uxth r6, r0 + 8005490: 2f00 cmp r7, #0 + 8005492: d040 beq.n 8005516 <VL53L0X_GetRangingMeasurementData+0x110> + 8005494: 01b0 lsls r0, r6, #6 + 8005496: b2c0 uxtb r0, r0 + 8005498: 08b6 lsrs r6, r6, #2 + 800549a: 75e0 strb r0, [r4, #23] + 800549c: f10d 000f add.w r0, sp, #15 + 80054a0: 8126 strh r6, [r4, #8] + 80054a2: e9cd 4000 strd r4, r0, [sp] + 80054a6: 4628 mov r0, r5 + 80054a8: f001 fe86 bl 80071b8 <VL53L0X_get_pal_range_status> + 80054ac: 4684 mov ip, r0 + 80054ae: bb20 cbnz r0, 80054fa <VL53L0X_GetRangingMeasurementData+0xf4> + 80054b0: f89d e00f ldrb.w lr, [sp, #15] + 80054b4: f884 e018 strb.w lr, [r4, #24] + 80054b8: f105 0650 add.w r6, r5, #80 ; 0x50 + 80054bc: ce0f ldmia r6!, {r0, r1, r2, r3} + 80054be: af07 add r7, sp, #28 + 80054c0: c70f stmia r7!, {r0, r1, r2, r3} + 80054c2: e896 0007 ldmia.w r6, {r0, r1, r2} + 80054c6: 7de3 ldrb r3, [r4, #23] + 80054c8: e887 0007 stmia.w r7, {r0, r1, r2} + 80054cc: e9d4 0103 ldrd r0, r1, [r4, #12] + 80054d0: 8aa2 ldrh r2, [r4, #20] + 80054d2: f8ad 2030 strh.w r2, [sp, #48] ; 0x30 + 80054d6: e9d4 4901 ldrd r4, r9, [r4, #4] + 80054da: e9cd 010a strd r0, r1, [sp, #40] ; 0x28 + 80054de: e9cd 4908 strd r4, r9, [sp, #32] + 80054e2: ac07 add r4, sp, #28 + 80054e4: f88d 3033 strb.w r3, [sp, #51] ; 0x33 + 80054e8: f88d e034 strb.w lr, [sp, #52] ; 0x34 + 80054ec: cc0f ldmia r4!, {r0, r1, r2, r3} + 80054ee: 3550 adds r5, #80 ; 0x50 + 80054f0: c50f stmia r5!, {r0, r1, r2, r3} + 80054f2: e897 0007 ldmia.w r7, {r0, r1, r2} + 80054f6: e886 0007 stmia.w r6, {r0, r1, r2} + 80054fa: 4660 mov r0, ip + 80054fc: b00e add sp, #56 ; 0x38 + 80054fe: e8bd 82f0 ldmia.w sp!, {r4, r5, r6, r7, r9, pc} + 8005502: 8c2e ldrh r6, [r5, #32] + 8005504: 435e muls r6, r3 + 8005506: ebb2 2f26 cmp.w r2, r6, asr #8 + 800550a: ea4f 2c26 mov.w ip, r6, asr #8 + 800550e: d104 bne.n 800551a <VL53L0X_GetRangingMeasurementData+0x114> + 8005510: b957 cbnz r7, 8005528 <VL53L0X_GetRangingMeasurementData+0x122> + 8005512: f648 26e0 movw r6, #35552 ; 0x8ae0 + 8005516: 2000 movs r0, #0 + 8005518: e7bf b.n 800549a <VL53L0X_GetRangingMeasurementData+0x94> + 800551a: b280 uxth r0, r0 + 800551c: 4350 muls r0, r2 + 800551e: eba2 060c sub.w r6, r2, ip + 8005522: fbb0 f0f6 udiv r0, r0, r6 + 8005526: e7b2 b.n 800548e <VL53L0X_GetRangingMeasurementData+0x88> + 8005528: f242 26b8 movw r6, #8888 ; 0x22b8 + 800552c: e7b2 b.n 8005494 <VL53L0X_GetRangingMeasurementData+0x8e> + ... + +08005530 <VL53L0X_GetInterruptThresholds>: + 8005530: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8005532: 4617 mov r7, r2 + 8005534: 210e movs r1, #14 + 8005536: f10d 0206 add.w r2, sp, #6 + 800553a: 461d mov r5, r3 + 800553c: 4c0b ldr r4, [pc, #44] ; (800556c <VL53L0X_GetInterruptThresholds+0x3c>) + 800553e: 4606 mov r6, r0 + 8005540: f001 ffd4 bl 80074ec <VL53L0X_RdWord> + 8005544: f8bd 3006 ldrh.w r3, [sp, #6] + 8005548: ea04 4343 and.w r3, r4, r3, lsl #17 + 800554c: 603b str r3, [r7, #0] + 800554e: b950 cbnz r0, 8005566 <VL53L0X_GetInterruptThresholds+0x36> + 8005550: f10d 0206 add.w r2, sp, #6 + 8005554: 210c movs r1, #12 + 8005556: 4630 mov r0, r6 + 8005558: f001 ffc8 bl 80074ec <VL53L0X_RdWord> + 800555c: f8bd 3006 ldrh.w r3, [sp, #6] + 8005560: ea04 4443 and.w r4, r4, r3, lsl #17 + 8005564: 602c str r4, [r5, #0] + 8005566: b003 add sp, #12 + 8005568: bdf0 pop {r4, r5, r6, r7, pc} + 800556a: bf00 nop + 800556c: 1ffe0000 .word 0x1ffe0000 + +08005570 <VL53L0X_CheckAndLoadInterruptSettings>: + 8005570: b573 push {r0, r1, r4, r5, r6, lr} + 8005572: f890 30da ldrb.w r3, [r0, #218] ; 0xda + 8005576: 3b01 subs r3, #1 + 8005578: 2b02 cmp r3, #2 + 800557a: 4606 mov r6, r0 + 800557c: 460c mov r4, r1 + 800557e: d834 bhi.n 80055ea <VL53L0X_CheckAndLoadInterruptSettings+0x7a> + 8005580: ab01 add r3, sp, #4 + 8005582: 466a mov r2, sp + 8005584: 2101 movs r1, #1 + 8005586: f7ff ffd3 bl 8005530 <VL53L0X_GetInterruptThresholds> + 800558a: 9b00 ldr r3, [sp, #0] + 800558c: f5b3 0f7f cmp.w r3, #16711680 ; 0xff0000 + 8005590: 4605 mov r5, r0 + 8005592: d803 bhi.n 800559c <VL53L0X_CheckAndLoadInterruptSettings+0x2c> + 8005594: 9b01 ldr r3, [sp, #4] + 8005596: f5b3 0f7f cmp.w r3, #16711680 ; 0xff0000 + 800559a: d923 bls.n 80055e4 <VL53L0X_CheckAndLoadInterruptSettings+0x74> + 800559c: bb15 cbnz r5, 80055e4 <VL53L0X_CheckAndLoadInterruptSettings+0x74> + 800559e: b134 cbz r4, 80055ae <VL53L0X_CheckAndLoadInterruptSettings+0x3e> + 80055a0: 4913 ldr r1, [pc, #76] ; (80055f0 <VL53L0X_CheckAndLoadInterruptSettings+0x80>) + 80055a2: 4630 mov r0, r6 + 80055a4: b002 add sp, #8 + 80055a6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 80055aa: f001 bc0f b.w 8006dcc <VL53L0X_load_tuning_settings> + 80055ae: 2204 movs r2, #4 + 80055b0: 21ff movs r1, #255 ; 0xff + 80055b2: 4630 mov r0, r6 + 80055b4: f001 ff4c bl 8007450 <VL53L0X_WrByte> + 80055b8: 462a mov r2, r5 + 80055ba: 4604 mov r4, r0 + 80055bc: 2170 movs r1, #112 ; 0x70 + 80055be: 4630 mov r0, r6 + 80055c0: f001 ff46 bl 8007450 <VL53L0X_WrByte> + 80055c4: 462a mov r2, r5 + 80055c6: 4304 orrs r4, r0 + 80055c8: 21ff movs r1, #255 ; 0xff + 80055ca: 4630 mov r0, r6 + 80055cc: f001 ff40 bl 8007450 <VL53L0X_WrByte> + 80055d0: b264 sxtb r4, r4 + 80055d2: 4304 orrs r4, r0 + 80055d4: 462a mov r2, r5 + 80055d6: 2180 movs r1, #128 ; 0x80 + 80055d8: 4630 mov r0, r6 + 80055da: f001 ff39 bl 8007450 <VL53L0X_WrByte> + 80055de: b264 sxtb r4, r4 + 80055e0: 4304 orrs r4, r0 + 80055e2: b265 sxtb r5, r4 + 80055e4: 4628 mov r0, r5 + 80055e6: b002 add sp, #8 + 80055e8: bd70 pop {r4, r5, r6, pc} + 80055ea: 2500 movs r5, #0 + 80055ec: e7fa b.n 80055e4 <VL53L0X_CheckAndLoadInterruptSettings+0x74> + 80055ee: bf00 nop + 80055f0: 2000065f .word 0x2000065f + +080055f4 <VL53L0X_StartMeasurement>: + 80055f4: b537 push {r0, r1, r2, r4, r5, lr} + 80055f6: 4604 mov r4, r0 + 80055f8: 2201 movs r2, #1 + 80055fa: 2180 movs r1, #128 ; 0x80 + 80055fc: 7c05 ldrb r5, [r0, #16] + 80055fe: f001 ff27 bl 8007450 <VL53L0X_WrByte> + 8005602: 2201 movs r2, #1 + 8005604: 21ff movs r1, #255 ; 0xff + 8005606: 4620 mov r0, r4 + 8005608: f001 ff22 bl 8007450 <VL53L0X_WrByte> + 800560c: 2200 movs r2, #0 + 800560e: 4611 mov r1, r2 + 8005610: 4620 mov r0, r4 + 8005612: f001 ff1d bl 8007450 <VL53L0X_WrByte> + 8005616: f894 213a ldrb.w r2, [r4, #314] ; 0x13a + 800561a: 2191 movs r1, #145 ; 0x91 + 800561c: 4620 mov r0, r4 + 800561e: f001 ff17 bl 8007450 <VL53L0X_WrByte> + 8005622: 2201 movs r2, #1 + 8005624: 2100 movs r1, #0 + 8005626: 4620 mov r0, r4 + 8005628: f001 ff12 bl 8007450 <VL53L0X_WrByte> + 800562c: 2200 movs r2, #0 + 800562e: 21ff movs r1, #255 ; 0xff + 8005630: 4620 mov r0, r4 + 8005632: f001 ff0d bl 8007450 <VL53L0X_WrByte> + 8005636: 2200 movs r2, #0 + 8005638: 2180 movs r1, #128 ; 0x80 + 800563a: 4620 mov r0, r4 + 800563c: f001 ff08 bl 8007450 <VL53L0X_WrByte> + 8005640: 2d01 cmp r5, #1 + 8005642: d029 beq.n 8005698 <VL53L0X_StartMeasurement+0xa4> + 8005644: 2d03 cmp r5, #3 + 8005646: d037 beq.n 80056b8 <VL53L0X_StartMeasurement+0xc4> + 8005648: 2d00 cmp r5, #0 + 800564a: d13c bne.n 80056c6 <VL53L0X_StartMeasurement+0xd2> + 800564c: 2201 movs r2, #1 + 800564e: 4629 mov r1, r5 + 8005650: 4620 mov r0, r4 + 8005652: f001 fefd bl 8007450 <VL53L0X_WrByte> + 8005656: 2301 movs r3, #1 + 8005658: f88d 3007 strb.w r3, [sp, #7] + 800565c: b1a0 cbz r0, 8005688 <VL53L0X_StartMeasurement+0x94> + 800565e: b003 add sp, #12 + 8005660: bd30 pop {r4, r5, pc} + 8005662: 4601 mov r1, r0 + 8005664: f10d 0207 add.w r2, sp, #7 + 8005668: 4620 mov r0, r4 + 800566a: f001 ff13 bl 8007494 <VL53L0X_RdByte> + 800566e: f89d 3007 ldrb.w r3, [sp, #7] + 8005672: 07db lsls r3, r3, #31 + 8005674: f105 0501 add.w r5, r5, #1 + 8005678: d508 bpl.n 800568c <VL53L0X_StartMeasurement+0x98> + 800567a: b938 cbnz r0, 800568c <VL53L0X_StartMeasurement+0x98> + 800567c: f5b5 6ffa cmp.w r5, #2000 ; 0x7d0 + 8005680: d1ef bne.n 8005662 <VL53L0X_StartMeasurement+0x6e> + 8005682: f06f 0006 mvn.w r0, #6 + 8005686: e7ea b.n 800565e <VL53L0X_StartMeasurement+0x6a> + 8005688: 4605 mov r5, r0 + 800568a: e7f0 b.n 800566e <VL53L0X_StartMeasurement+0x7a> + 800568c: f5b5 6ffa cmp.w r5, #2000 ; 0x7d0 + 8005690: bf08 it eq + 8005692: f06f 0006 mvneq.w r0, #6 + 8005696: e7e2 b.n 800565e <VL53L0X_StartMeasurement+0x6a> + 8005698: b918 cbnz r0, 80056a2 <VL53L0X_StartMeasurement+0xae> + 800569a: 4629 mov r1, r5 + 800569c: 4620 mov r0, r4 + 800569e: f7ff ff67 bl 8005570 <VL53L0X_CheckAndLoadInterruptSettings> + 80056a2: 2202 movs r2, #2 + 80056a4: 2100 movs r1, #0 + 80056a6: 4620 mov r0, r4 + 80056a8: f001 fed2 bl 8007450 <VL53L0X_WrByte> + 80056ac: 2800 cmp r0, #0 + 80056ae: d1d6 bne.n 800565e <VL53L0X_StartMeasurement+0x6a> + 80056b0: 2304 movs r3, #4 + 80056b2: f884 3132 strb.w r3, [r4, #306] ; 0x132 + 80056b6: e7d2 b.n 800565e <VL53L0X_StartMeasurement+0x6a> + 80056b8: b918 cbnz r0, 80056c2 <VL53L0X_StartMeasurement+0xce> + 80056ba: 2101 movs r1, #1 + 80056bc: 4620 mov r0, r4 + 80056be: f7ff ff57 bl 8005570 <VL53L0X_CheckAndLoadInterruptSettings> + 80056c2: 2204 movs r2, #4 + 80056c4: e7ee b.n 80056a4 <VL53L0X_StartMeasurement+0xb0> + 80056c6: f06f 0007 mvn.w r0, #7 + 80056ca: e7c8 b.n 800565e <VL53L0X_StartMeasurement+0x6a> + +080056cc <VL53L0X_PerformSingleMeasurement>: + 80056cc: b538 push {r3, r4, r5, lr} + 80056ce: 7c05 ldrb r5, [r0, #16] + 80056d0: 4604 mov r4, r0 + 80056d2: b125 cbz r5, 80056de <VL53L0X_PerformSingleMeasurement+0x12> + 80056d4: 4620 mov r0, r4 + 80056d6: f000 fd54 bl 8006182 <VL53L0X_measurement_poll_for_completion> + 80056da: b128 cbz r0, 80056e8 <VL53L0X_PerformSingleMeasurement+0x1c> + 80056dc: bd38 pop {r3, r4, r5, pc} + 80056de: f7ff ff89 bl 80055f4 <VL53L0X_StartMeasurement> + 80056e2: 2800 cmp r0, #0 + 80056e4: d0f6 beq.n 80056d4 <VL53L0X_PerformSingleMeasurement+0x8> + 80056e6: e7f9 b.n 80056dc <VL53L0X_PerformSingleMeasurement+0x10> + 80056e8: 2d00 cmp r5, #0 + 80056ea: d1f7 bne.n 80056dc <VL53L0X_PerformSingleMeasurement+0x10> + 80056ec: 2303 movs r3, #3 + 80056ee: f884 3132 strb.w r3, [r4, #306] ; 0x132 + 80056f2: e7f3 b.n 80056dc <VL53L0X_PerformSingleMeasurement+0x10> + +080056f4 <VL53L0X_ClearInterruptMask>: + 80056f4: b573 push {r0, r1, r4, r5, r6, lr} + 80056f6: 4606 mov r6, r0 + 80056f8: 2500 movs r5, #0 + 80056fa: 2201 movs r2, #1 + 80056fc: 210b movs r1, #11 + 80056fe: 4630 mov r0, r6 + 8005700: f001 fea6 bl 8007450 <VL53L0X_WrByte> + 8005704: 2200 movs r2, #0 + 8005706: 4604 mov r4, r0 + 8005708: 210b movs r1, #11 + 800570a: 4630 mov r0, r6 + 800570c: f001 fea0 bl 8007450 <VL53L0X_WrByte> + 8005710: f10d 0207 add.w r2, sp, #7 + 8005714: 4304 orrs r4, r0 + 8005716: 2113 movs r1, #19 + 8005718: 4630 mov r0, r6 + 800571a: f001 febb bl 8007494 <VL53L0X_RdByte> + 800571e: f89d 3007 ldrb.w r3, [sp, #7] + 8005722: b264 sxtb r4, r4 + 8005724: 4304 orrs r4, r0 + 8005726: 3501 adds r5, #1 + 8005728: 075b lsls r3, r3, #29 + 800572a: b260 sxtb r0, r4 + 800572c: b2ed uxtb r5, r5 + 800572e: d005 beq.n 800573c <VL53L0X_ClearInterruptMask+0x48> + 8005730: 2d03 cmp r5, #3 + 8005732: d008 beq.n 8005746 <VL53L0X_ClearInterruptMask+0x52> + 8005734: 2800 cmp r0, #0 + 8005736: d0e0 beq.n 80056fa <VL53L0X_ClearInterruptMask+0x6> + 8005738: b002 add sp, #8 + 800573a: bd70 pop {r4, r5, r6, pc} + 800573c: 2d03 cmp r5, #3 + 800573e: bf08 it eq + 8005740: f06f 000b mvneq.w r0, #11 + 8005744: e7f8 b.n 8005738 <VL53L0X_ClearInterruptMask+0x44> + 8005746: f06f 000b mvn.w r0, #11 + 800574a: e7f5 b.n 8005738 <VL53L0X_ClearInterruptMask+0x44> + +0800574c <VL53L0X_PerformSingleRangingMeasurement>: + 800574c: b538 push {r3, r4, r5, lr} + 800574e: 2300 movs r3, #0 + 8005750: 7403 strb r3, [r0, #16] + 8005752: 4604 mov r4, r0 + 8005754: 460d mov r5, r1 + 8005756: f7ff ffb9 bl 80056cc <VL53L0X_PerformSingleMeasurement> + 800575a: b950 cbnz r0, 8005772 <VL53L0X_PerformSingleRangingMeasurement+0x26> + 800575c: 4629 mov r1, r5 + 800575e: 4620 mov r0, r4 + 8005760: f7ff fe51 bl 8005406 <VL53L0X_GetRangingMeasurementData> + 8005764: b928 cbnz r0, 8005772 <VL53L0X_PerformSingleRangingMeasurement+0x26> + 8005766: 4601 mov r1, r0 + 8005768: 4620 mov r0, r4 + 800576a: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 800576e: f7ff bfc1 b.w 80056f4 <VL53L0X_ClearInterruptMask> + 8005772: bd38 pop {r3, r4, r5, pc} + +08005774 <VL53L0X_SetGpioConfig.part.0>: + 8005774: 2915 cmp r1, #21 + 8005776: b570 push {r4, r5, r6, lr} + 8005778: 4605 mov r5, r0 + 800577a: 4616 mov r6, r2 + 800577c: 461c mov r4, r3 + 800577e: d167 bne.n 8005850 <VL53L0X_SetGpioConfig.part.0+0xdc> + 8005780: 2201 movs r2, #1 + 8005782: 21ff movs r1, #255 ; 0xff + 8005784: f001 fe64 bl 8007450 <VL53L0X_WrByte> + 8005788: 2200 movs r2, #0 + 800578a: 4611 mov r1, r2 + 800578c: 4604 mov r4, r0 + 800578e: 4628 mov r0, r5 + 8005790: f001 fe5e bl 8007450 <VL53L0X_WrByte> + 8005794: 2200 movs r2, #0 + 8005796: 4304 orrs r4, r0 + 8005798: 21ff movs r1, #255 ; 0xff + 800579a: 4628 mov r0, r5 + 800579c: f001 fe58 bl 8007450 <VL53L0X_WrByte> + 80057a0: b264 sxtb r4, r4 + 80057a2: 4304 orrs r4, r0 + 80057a4: 2201 movs r2, #1 + 80057a6: 2180 movs r1, #128 ; 0x80 + 80057a8: 4628 mov r0, r5 + 80057aa: f001 fe51 bl 8007450 <VL53L0X_WrByte> + 80057ae: b264 sxtb r4, r4 + 80057b0: 4304 orrs r4, r0 + 80057b2: 2202 movs r2, #2 + 80057b4: 2185 movs r1, #133 ; 0x85 + 80057b6: 4628 mov r0, r5 + 80057b8: f001 fe4a bl 8007450 <VL53L0X_WrByte> + 80057bc: b264 sxtb r4, r4 + 80057be: 4304 orrs r4, r0 + 80057c0: 2204 movs r2, #4 + 80057c2: 21ff movs r1, #255 ; 0xff + 80057c4: 4628 mov r0, r5 + 80057c6: f001 fe43 bl 8007450 <VL53L0X_WrByte> + 80057ca: b264 sxtb r4, r4 + 80057cc: 4304 orrs r4, r0 + 80057ce: 2200 movs r2, #0 + 80057d0: 21cd movs r1, #205 ; 0xcd + 80057d2: 4628 mov r0, r5 + 80057d4: f001 fe3c bl 8007450 <VL53L0X_WrByte> + 80057d8: b264 sxtb r4, r4 + 80057da: 4304 orrs r4, r0 + 80057dc: 2211 movs r2, #17 + 80057de: 21cc movs r1, #204 ; 0xcc + 80057e0: 4628 mov r0, r5 + 80057e2: f001 fe35 bl 8007450 <VL53L0X_WrByte> + 80057e6: b264 sxtb r4, r4 + 80057e8: 4304 orrs r4, r0 + 80057ea: 2207 movs r2, #7 + 80057ec: 21ff movs r1, #255 ; 0xff + 80057ee: 4628 mov r0, r5 + 80057f0: f001 fe2e bl 8007450 <VL53L0X_WrByte> + 80057f4: b264 sxtb r4, r4 + 80057f6: 4304 orrs r4, r0 + 80057f8: 2200 movs r2, #0 + 80057fa: 21be movs r1, #190 ; 0xbe + 80057fc: 4628 mov r0, r5 + 80057fe: f001 fe27 bl 8007450 <VL53L0X_WrByte> + 8005802: b264 sxtb r4, r4 + 8005804: 4304 orrs r4, r0 + 8005806: 2206 movs r2, #6 + 8005808: 21ff movs r1, #255 ; 0xff + 800580a: 4628 mov r0, r5 + 800580c: f001 fe20 bl 8007450 <VL53L0X_WrByte> + 8005810: b264 sxtb r4, r4 + 8005812: 4304 orrs r4, r0 + 8005814: 2209 movs r2, #9 + 8005816: 21cc movs r1, #204 ; 0xcc + 8005818: 4628 mov r0, r5 + 800581a: f001 fe19 bl 8007450 <VL53L0X_WrByte> + 800581e: b264 sxtb r4, r4 + 8005820: 4304 orrs r4, r0 + 8005822: 2200 movs r2, #0 + 8005824: 21ff movs r1, #255 ; 0xff + 8005826: 4628 mov r0, r5 + 8005828: f001 fe12 bl 8007450 <VL53L0X_WrByte> + 800582c: b264 sxtb r4, r4 + 800582e: 4304 orrs r4, r0 + 8005830: 2201 movs r2, #1 + 8005832: 21ff movs r1, #255 ; 0xff + 8005834: 4628 mov r0, r5 + 8005836: f001 fe0b bl 8007450 <VL53L0X_WrByte> + 800583a: b264 sxtb r4, r4 + 800583c: 2200 movs r2, #0 + 800583e: 4304 orrs r4, r0 + 8005840: 4611 mov r1, r2 + 8005842: 4628 mov r0, r5 + 8005844: f001 fe04 bl 8007450 <VL53L0X_WrByte> + 8005848: b264 sxtb r4, r4 + 800584a: 4320 orrs r0, r4 + 800584c: b240 sxtb r0, r0 + 800584e: bd70 pop {r4, r5, r6, pc} + 8005850: 2a04 cmp r2, #4 + 8005852: d817 bhi.n 8005884 <VL53L0X_SetGpioConfig.part.0+0x110> + 8005854: 210a movs r1, #10 + 8005856: f001 fdfb bl 8007450 <VL53L0X_WrByte> + 800585a: 2800 cmp r0, #0 + 800585c: d1f7 bne.n 800584e <VL53L0X_SetGpioConfig.part.0+0xda> + 800585e: 1e23 subs r3, r4, #0 + 8005860: bf18 it ne + 8005862: 2301 movne r3, #1 + 8005864: 011b lsls r3, r3, #4 + 8005866: 22ef movs r2, #239 ; 0xef + 8005868: 2184 movs r1, #132 ; 0x84 + 800586a: 4628 mov r0, r5 + 800586c: f001 fe27 bl 80074be <VL53L0X_UpdateByte> + 8005870: 2800 cmp r0, #0 + 8005872: d1ec bne.n 800584e <VL53L0X_SetGpioConfig.part.0+0xda> + 8005874: f885 60da strb.w r6, [r5, #218] ; 0xda + 8005878: 4601 mov r1, r0 + 800587a: 4628 mov r0, r5 + 800587c: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8005880: f7ff bf38 b.w 80056f4 <VL53L0X_ClearInterruptMask> + 8005884: f06f 000a mvn.w r0, #10 + 8005888: e7e1 b.n 800584e <VL53L0X_SetGpioConfig.part.0+0xda> + ... + +0800588c <VL53L0X_StaticInit>: + 800588c: b570 push {r4, r5, r6, lr} + 800588e: b094 sub sp, #80 ; 0x50 + 8005890: 4605 mov r5, r0 + 8005892: 2240 movs r2, #64 ; 0x40 + 8005894: 2100 movs r1, #0 + 8005896: a804 add r0, sp, #16 + 8005898: f00e fdae bl 80143f8 <memset> + 800589c: 2300 movs r3, #0 + 800589e: 2101 movs r1, #1 + 80058a0: 4628 mov r0, r5 + 80058a2: f8ad 3006 strh.w r3, [sp, #6] + 80058a6: f88d 3003 strb.w r3, [sp, #3] + 80058aa: f88d 3004 strb.w r3, [sp, #4] + 80058ae: 9302 str r3, [sp, #8] + 80058b0: f000 fcb8 bl 8006224 <VL53L0X_get_info_from_device> + 80058b4: f895 2114 ldrb.w r2, [r5, #276] ; 0x114 + 80058b8: f895 1113 ldrb.w r1, [r5, #275] ; 0x113 + 80058bc: 2a01 cmp r2, #1 + 80058be: d804 bhi.n 80058ca <VL53L0X_StaticInit+0x3e> + 80058c0: f040 80ad bne.w 8005a1e <VL53L0X_StaticInit+0x192> + 80058c4: 2920 cmp r1, #32 + 80058c6: f240 80ac bls.w 8005a22 <VL53L0X_StaticInit+0x196> + 80058ca: aa01 add r2, sp, #4 + 80058cc: a902 add r1, sp, #8 + 80058ce: 4628 mov r0, r5 + 80058d0: f000 fb2d bl 8005f2e <VL53L0X_perform_ref_spad_management> + 80058d4: 4604 mov r4, r0 + 80058d6: 2800 cmp r0, #0 + 80058d8: f040 809e bne.w 8005a18 <VL53L0X_StaticInit+0x18c> + 80058dc: f895 3150 ldrb.w r3, [r5, #336] ; 0x150 + 80058e0: 2b00 cmp r3, #0 + 80058e2: f040 80a2 bne.w 8005a2a <VL53L0X_StaticInit+0x19e> + 80058e6: f8d5 114c ldr.w r1, [r5, #332] ; 0x14c + 80058ea: 4628 mov r0, r5 + 80058ec: f001 fa6e bl 8006dcc <VL53L0X_load_tuning_settings> + 80058f0: 4604 mov r4, r0 + 80058f2: 2800 cmp r0, #0 + 80058f4: f040 8090 bne.w 8005a18 <VL53L0X_StaticInit+0x18c> + 80058f8: 4623 mov r3, r4 + 80058fa: 4621 mov r1, r4 + 80058fc: 2204 movs r2, #4 + 80058fe: 4628 mov r0, r5 + 8005900: f7ff ff38 bl 8005774 <VL53L0X_SetGpioConfig.part.0> + 8005904: 4604 mov r4, r0 + 8005906: 2800 cmp r0, #0 + 8005908: f040 8086 bne.w 8005a18 <VL53L0X_StaticInit+0x18c> + 800590c: 2201 movs r2, #1 + 800590e: 21ff movs r1, #255 ; 0xff + 8005910: 4628 mov r0, r5 + 8005912: f001 fd9d bl 8007450 <VL53L0X_WrByte> + 8005916: f10d 0206 add.w r2, sp, #6 + 800591a: 4606 mov r6, r0 + 800591c: 2184 movs r1, #132 ; 0x84 + 800591e: 4628 mov r0, r5 + 8005920: f001 fde4 bl 80074ec <VL53L0X_RdWord> + 8005924: 4622 mov r2, r4 + 8005926: 4306 orrs r6, r0 + 8005928: 21ff movs r1, #255 ; 0xff + 800592a: 4628 mov r0, r5 + 800592c: f001 fd90 bl 8007450 <VL53L0X_WrByte> + 8005930: b276 sxtb r6, r6 + 8005932: 4306 orrs r6, r0 + 8005934: b274 sxtb r4, r6 + 8005936: 2c00 cmp r4, #0 + 8005938: d16e bne.n 8005a18 <VL53L0X_StaticInit+0x18c> + 800593a: f8bd 3006 ldrh.w r3, [sp, #6] + 800593e: 011b lsls r3, r3, #4 + 8005940: f8c5 30d4 str.w r3, [r5, #212] ; 0xd4 + 8005944: a904 add r1, sp, #16 + 8005946: 4628 mov r0, r5 + 8005948: f7ff fc70 bl 800522c <VL53L0X_GetDeviceParameters> + 800594c: 4604 mov r4, r0 + 800594e: 2800 cmp r0, #0 + 8005950: d162 bne.n 8005a18 <VL53L0X_StaticInit+0x18c> + 8005952: f10d 0103 add.w r1, sp, #3 + 8005956: 4628 mov r0, r5 + 8005958: f7ff faf2 bl 8004f40 <VL53L0X_GetFractionEnable> + 800595c: 4604 mov r4, r0 + 800595e: 2800 cmp r0, #0 + 8005960: d15a bne.n 8005a18 <VL53L0X_StaticInit+0x18c> + 8005962: f89d 3003 ldrb.w r3, [sp, #3] + 8005966: f885 3131 strb.w r3, [r5, #305] ; 0x131 + 800596a: ae04 add r6, sp, #16 + 800596c: ce0f ldmia r6!, {r0, r1, r2, r3} + 800596e: f105 0410 add.w r4, r5, #16 + 8005972: c40f stmia r4!, {r0, r1, r2, r3} + 8005974: ce0f ldmia r6!, {r0, r1, r2, r3} + 8005976: c40f stmia r4!, {r0, r1, r2, r3} + 8005978: ce0f ldmia r6!, {r0, r1, r2, r3} + 800597a: c40f stmia r4!, {r0, r1, r2, r3} + 800597c: e896 000f ldmia.w r6, {r0, r1, r2, r3} + 8005980: e884 000f stmia.w r4, {r0, r1, r2, r3} + 8005984: f10d 0203 add.w r2, sp, #3 + 8005988: 2101 movs r1, #1 + 800598a: 4628 mov r0, r5 + 800598c: f001 fd82 bl 8007494 <VL53L0X_RdByte> + 8005990: 4604 mov r4, r0 + 8005992: 2800 cmp r0, #0 + 8005994: d140 bne.n 8005a18 <VL53L0X_StaticInit+0x18c> + 8005996: f89d 3003 ldrb.w r3, [sp, #3] + 800599a: f885 3130 strb.w r3, [r5, #304] ; 0x130 + 800599e: 4602 mov r2, r0 + 80059a0: 4601 mov r1, r0 + 80059a2: 4628 mov r0, r5 + 80059a4: f7ff fade bl 8004f64 <VL53L0X_SetSequenceStepEnable> + 80059a8: 4604 mov r4, r0 + 80059aa: bba8 cbnz r0, 8005a18 <VL53L0X_StaticInit+0x18c> + 80059ac: 4602 mov r2, r0 + 80059ae: 2102 movs r1, #2 + 80059b0: 4628 mov r0, r5 + 80059b2: f7ff fad7 bl 8004f64 <VL53L0X_SetSequenceStepEnable> + 80059b6: 4604 mov r4, r0 + 80059b8: bb70 cbnz r0, 8005a18 <VL53L0X_StaticInit+0x18c> + 80059ba: 2303 movs r3, #3 + 80059bc: 4601 mov r1, r0 + 80059be: f885 3132 strb.w r3, [r5, #306] ; 0x132 + 80059c2: f10d 0205 add.w r2, sp, #5 + 80059c6: 4628 mov r0, r5 + 80059c8: f001 f919 bl 8006bfe <VL53L0X_get_vcsel_pulse_period> + 80059cc: 4604 mov r4, r0 + 80059ce: bb18 cbnz r0, 8005a18 <VL53L0X_StaticInit+0x18c> + 80059d0: f89d 3005 ldrb.w r3, [sp, #5] + 80059d4: f885 30e8 strb.w r3, [r5, #232] ; 0xe8 + 80059d8: f10d 0205 add.w r2, sp, #5 + 80059dc: 2101 movs r1, #1 + 80059de: 4628 mov r0, r5 + 80059e0: f001 f90d bl 8006bfe <VL53L0X_get_vcsel_pulse_period> + 80059e4: 4604 mov r4, r0 + 80059e6: b9b8 cbnz r0, 8005a18 <VL53L0X_StaticInit+0x18c> + 80059e8: f89d 3005 ldrb.w r3, [sp, #5] + 80059ec: f885 30e0 strb.w r3, [r5, #224] ; 0xe0 + 80059f0: aa03 add r2, sp, #12 + 80059f2: 2103 movs r1, #3 + 80059f4: 4628 mov r0, r5 + 80059f6: f000 ff01 bl 80067fc <get_sequence_step_timeout> + 80059fa: 4604 mov r4, r0 + 80059fc: b960 cbnz r0, 8005a18 <VL53L0X_StaticInit+0x18c> + 80059fe: 9b03 ldr r3, [sp, #12] + 8005a00: f8c5 30e4 str.w r3, [r5, #228] ; 0xe4 + 8005a04: aa03 add r2, sp, #12 + 8005a06: 2104 movs r1, #4 + 8005a08: 4628 mov r0, r5 + 8005a0a: f000 fef7 bl 80067fc <get_sequence_step_timeout> + 8005a0e: 4604 mov r4, r0 + 8005a10: b910 cbnz r0, 8005a18 <VL53L0X_StaticInit+0x18c> + 8005a12: 9b03 ldr r3, [sp, #12] + 8005a14: f8c5 30dc str.w r3, [r5, #220] ; 0xdc + 8005a18: 4620 mov r0, r4 + 8005a1a: b014 add sp, #80 ; 0x50 + 8005a1c: bd70 pop {r4, r5, r6, pc} + 8005a1e: 290c cmp r1, #12 + 8005a20: e751 b.n 80058c6 <VL53L0X_StaticInit+0x3a> + 8005a22: 4628 mov r0, r5 + 8005a24: f000 f910 bl 8005c48 <VL53L0X_set_reference_spads> + 8005a28: e754 b.n 80058d4 <VL53L0X_StaticInit+0x48> + 8005a2a: 4901 ldr r1, [pc, #4] ; (8005a30 <VL53L0X_StaticInit+0x1a4>) + 8005a2c: e75d b.n 80058ea <VL53L0X_StaticInit+0x5e> + 8005a2e: bf00 nop + 8005a30: 2000056c .word 0x2000056c + +08005a34 <VL53L0X_GetInterruptMaskStatus>: + 8005a34: b513 push {r0, r1, r4, lr} + 8005a36: 460c mov r4, r1 + 8005a38: f10d 0207 add.w r2, sp, #7 + 8005a3c: 2113 movs r1, #19 + 8005a3e: f001 fd29 bl 8007494 <VL53L0X_RdByte> + 8005a42: f89d 3007 ldrb.w r3, [sp, #7] + 8005a46: f013 0f18 tst.w r3, #24 + 8005a4a: f003 0207 and.w r2, r3, #7 + 8005a4e: bf18 it ne + 8005a50: f06f 0005 mvnne.w r0, #5 + 8005a54: 6022 str r2, [r4, #0] + 8005a56: b002 add sp, #8 + 8005a58: bd10 pop {r4, pc} + +08005a5a <VL53L0X_GetMeasurementDataReady>: + 8005a5a: b513 push {r0, r1, r4, lr} + 8005a5c: f890 30da ldrb.w r3, [r0, #218] ; 0xda + 8005a60: 2b04 cmp r3, #4 + 8005a62: 460c mov r4, r1 + 8005a64: d10b bne.n 8005a7e <VL53L0X_GetMeasurementDataReady+0x24> + 8005a66: a901 add r1, sp, #4 + 8005a68: f7ff ffe4 bl 8005a34 <VL53L0X_GetInterruptMaskStatus> + 8005a6c: 9b01 ldr r3, [sp, #4] + 8005a6e: 2b04 cmp r3, #4 + 8005a70: d101 bne.n 8005a76 <VL53L0X_GetMeasurementDataReady+0x1c> + 8005a72: 2301 movs r3, #1 + 8005a74: e000 b.n 8005a78 <VL53L0X_GetMeasurementDataReady+0x1e> + 8005a76: 2300 movs r3, #0 + 8005a78: 7023 strb r3, [r4, #0] + 8005a7a: b002 add sp, #8 + 8005a7c: bd10 pop {r4, pc} + 8005a7e: aa01 add r2, sp, #4 + 8005a80: 2114 movs r1, #20 + 8005a82: f001 fd07 bl 8007494 <VL53L0X_RdByte> + 8005a86: 2800 cmp r0, #0 + 8005a88: d1f7 bne.n 8005a7a <VL53L0X_GetMeasurementDataReady+0x20> + 8005a8a: f89d 3004 ldrb.w r3, [sp, #4] + 8005a8e: 07db lsls r3, r3, #31 + 8005a90: d4ef bmi.n 8005a72 <VL53L0X_GetMeasurementDataReady+0x18> + 8005a92: 7020 strb r0, [r4, #0] + 8005a94: e7f1 b.n 8005a7a <VL53L0X_GetMeasurementDataReady+0x20> + +08005a96 <VL53L0X_PerformRefSpadManagement>: + 8005a96: f000 ba4a b.w 8005f2e <VL53L0X_perform_ref_spad_management> + +08005a9a <VL53L0X_get_offset_calibration_data_micro_meter>: + 8005a9a: b513 push {r0, r1, r4, lr} + 8005a9c: 460c mov r4, r1 + 8005a9e: f10d 0206 add.w r2, sp, #6 + 8005aa2: 2128 movs r1, #40 ; 0x28 + 8005aa4: f001 fd22 bl 80074ec <VL53L0X_RdWord> + 8005aa8: b978 cbnz r0, 8005aca <VL53L0X_get_offset_calibration_data_micro_meter+0x30> + 8005aaa: f8bd 2006 ldrh.w r2, [sp, #6] + 8005aae: f3c2 030b ubfx r3, r2, #0, #12 + 8005ab2: f412 6f00 tst.w r2, #2048 ; 0x800 + 8005ab6: bf18 it ne + 8005ab8: f5a3 5380 subne.w r3, r3, #4096 ; 0x1000 + 8005abc: f04f 02fa mov.w r2, #250 ; 0xfa + 8005ac0: bf14 ite ne + 8005ac2: fb13 f302 smulbbne r3, r3, r2 + 8005ac6: 4353 muleq r3, r2 + 8005ac8: 6023 str r3, [r4, #0] + 8005aca: b002 add sp, #8 + 8005acc: bd10 pop {r4, pc} + +08005ace <get_next_good_spad>: + 8005ace: b5f0 push {r4, r5, r6, r7, lr} + 8005ad0: ea4f 0cd2 mov.w ip, r2, lsr #3 + 8005ad4: f04f 34ff mov.w r4, #4294967295 + 8005ad8: 601c str r4, [r3, #0] + 8005ada: f002 0207 and.w r2, r2, #7 + 8005ade: 4666 mov r6, ip + 8005ae0: 2700 movs r7, #0 + 8005ae2: 428e cmp r6, r1 + 8005ae4: d200 bcs.n 8005ae8 <get_next_good_spad+0x1a> + 8005ae6: b107 cbz r7, 8005aea <get_next_good_spad+0x1c> + 8005ae8: bdf0 pop {r4, r5, r6, r7, pc} + 8005aea: 5d84 ldrb r4, [r0, r6] + 8005aec: 4566 cmp r6, ip + 8005aee: bf03 ittte eq + 8005af0: 4114 asreq r4, r2 + 8005af2: b2e4 uxtbeq r4, r4 + 8005af4: 4615 moveq r5, r2 + 8005af6: 463d movne r5, r7 + 8005af8: f014 0701 ands.w r7, r4, #1 + 8005afc: d004 beq.n 8005b08 <get_next_good_spad+0x3a> + 8005afe: eb05 05c6 add.w r5, r5, r6, lsl #3 + 8005b02: 601d str r5, [r3, #0] + 8005b04: 3601 adds r6, #1 + 8005b06: e7ec b.n 8005ae2 <get_next_good_spad+0x14> + 8005b08: 3501 adds r5, #1 + 8005b0a: 2d08 cmp r5, #8 + 8005b0c: ea4f 0454 mov.w r4, r4, lsr #1 + 8005b10: d1f2 bne.n 8005af8 <get_next_good_spad+0x2a> + 8005b12: e7f7 b.n 8005b04 <get_next_good_spad+0x36> + +08005b14 <is_aperture>: + 8005b14: 4b03 ldr r3, [pc, #12] ; (8005b24 <is_aperture+0x10>) + 8005b16: 0980 lsrs r0, r0, #6 + 8005b18: f853 0020 ldr.w r0, [r3, r0, lsl #2] + 8005b1c: 3800 subs r0, #0 + 8005b1e: bf18 it ne + 8005b20: 2001 movne r0, #1 + 8005b22: 4770 bx lr + 8005b24: 20000818 .word 0x20000818 + +08005b28 <enable_spad_bit>: + 8005b28: b510 push {r4, lr} + 8005b2a: ebb1 0fd2 cmp.w r1, r2, lsr #3 + 8005b2e: ea4f 04d2 mov.w r4, r2, lsr #3 + 8005b32: f002 0307 and.w r3, r2, #7 + 8005b36: bf81 itttt hi + 8005b38: 2201 movhi r2, #1 + 8005b3a: 409a lslhi r2, r3 + 8005b3c: 5d03 ldrbhi r3, [r0, r4] + 8005b3e: 4313 orrhi r3, r2 + 8005b40: bf8a itet hi + 8005b42: 5503 strbhi r3, [r0, r4] + 8005b44: f06f 0031 mvnls.w r0, #49 ; 0x31 + 8005b48: 2000 movhi r0, #0 + 8005b4a: bd10 pop {r4, pc} + +08005b4c <set_ref_spad_map>: + 8005b4c: 460a mov r2, r1 + 8005b4e: 2306 movs r3, #6 + 8005b50: 21b0 movs r1, #176 ; 0xb0 + 8005b52: f001 bc49 b.w 80073e8 <VL53L0X_WriteMulti> + +08005b56 <get_ref_spad_map>: + 8005b56: 460a mov r2, r1 + 8005b58: 2306 movs r3, #6 + 8005b5a: 21b0 movs r1, #176 ; 0xb0 + 8005b5c: f001 bc62 b.w 8007424 <VL53L0X_ReadMulti> + +08005b60 <enable_ref_spads>: + 8005b60: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8005b64: b085 sub sp, #20 + 8005b66: 4680 mov r8, r0 + 8005b68: 9e10 ldr r6, [sp, #64] ; 0x40 + 8005b6a: 9d0e ldr r5, [sp, #56] ; 0x38 + 8005b6c: 9601 str r6, [sp, #4] + 8005b6e: 468a mov sl, r1 + 8005b70: 4693 mov fp, r2 + 8005b72: 461c mov r4, r3 + 8005b74: f04f 0900 mov.w r9, #0 + 8005b78: 9b11 ldr r3, [sp, #68] ; 0x44 + 8005b7a: 4599 cmp r9, r3 + 8005b7c: d108 bne.n 8005b90 <enable_ref_spads+0x30> + 8005b7e: 2300 movs r3, #0 + 8005b80: 9a12 ldr r2, [sp, #72] ; 0x48 + 8005b82: 6016 str r6, [r2, #0] + 8005b84: b1f3 cbz r3, 8005bc4 <enable_ref_spads+0x64> + 8005b86: f06f 0031 mvn.w r0, #49 ; 0x31 + 8005b8a: b005 add sp, #20 + 8005b8c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8005b90: ab01 add r3, sp, #4 + 8005b92: 4632 mov r2, r6 + 8005b94: 4629 mov r1, r5 + 8005b96: 4658 mov r0, fp + 8005b98: f7ff ff99 bl 8005ace <get_next_good_spad> + 8005b9c: 9f01 ldr r7, [sp, #4] + 8005b9e: 1c7b adds r3, r7, #1 + 8005ba0: d00d beq.n 8005bbe <enable_ref_spads+0x5e> + 8005ba2: 9b0f ldr r3, [sp, #60] ; 0x3c + 8005ba4: 18f8 adds r0, r7, r3 + 8005ba6: f7ff ffb5 bl 8005b14 <is_aperture> + 8005baa: 4550 cmp r0, sl + 8005bac: d107 bne.n 8005bbe <enable_ref_spads+0x5e> + 8005bae: 463a mov r2, r7 + 8005bb0: 4620 mov r0, r4 + 8005bb2: f7ff ffb9 bl 8005b28 <enable_spad_bit> + 8005bb6: 1c7e adds r6, r7, #1 + 8005bb8: f109 0901 add.w r9, r9, #1 + 8005bbc: e7dc b.n 8005b78 <enable_ref_spads+0x18> + 8005bbe: f06f 0331 mvn.w r3, #49 ; 0x31 + 8005bc2: e7dd b.n 8005b80 <enable_ref_spads+0x20> + 8005bc4: 4621 mov r1, r4 + 8005bc6: 4640 mov r0, r8 + 8005bc8: f7ff ffc0 bl 8005b4c <set_ref_spad_map> + 8005bcc: 2800 cmp r0, #0 + 8005bce: d1dc bne.n 8005b8a <enable_ref_spads+0x2a> + 8005bd0: a902 add r1, sp, #8 + 8005bd2: 4640 mov r0, r8 + 8005bd4: f7ff ffbf bl 8005b56 <get_ref_spad_map> + 8005bd8: 4425 add r5, r4 + 8005bda: 4623 mov r3, r4 + 8005bdc: aa02 add r2, sp, #8 + 8005bde: 42ab cmp r3, r5 + 8005be0: d0d3 beq.n 8005b8a <enable_ref_spads+0x2a> + 8005be2: f813 4b01 ldrb.w r4, [r3], #1 + 8005be6: f812 1b01 ldrb.w r1, [r2], #1 + 8005bea: 428c cmp r4, r1 + 8005bec: d0f7 beq.n 8005bde <enable_ref_spads+0x7e> + 8005bee: e7ca b.n 8005b86 <enable_ref_spads+0x26> + +08005bf0 <perform_ref_signal_measurement>: + 8005bf0: b570 push {r4, r5, r6, lr} + 8005bf2: 22c0 movs r2, #192 ; 0xc0 + 8005bf4: b088 sub sp, #32 + 8005bf6: 460e mov r6, r1 + 8005bf8: 2101 movs r1, #1 + 8005bfa: f890 4130 ldrb.w r4, [r0, #304] ; 0x130 + 8005bfe: 4605 mov r5, r0 + 8005c00: f001 fc26 bl 8007450 <VL53L0X_WrByte> + 8005c04: b9f0 cbnz r0, 8005c44 <perform_ref_signal_measurement+0x54> + 8005c06: a901 add r1, sp, #4 + 8005c08: 4628 mov r0, r5 + 8005c0a: f7ff fd9f bl 800574c <VL53L0X_PerformSingleRangingMeasurement> + 8005c0e: b9c8 cbnz r0, 8005c44 <perform_ref_signal_measurement+0x54> + 8005c10: 2201 movs r2, #1 + 8005c12: 21ff movs r1, #255 ; 0xff + 8005c14: 4628 mov r0, r5 + 8005c16: f001 fc1b bl 8007450 <VL53L0X_WrByte> + 8005c1a: b998 cbnz r0, 8005c44 <perform_ref_signal_measurement+0x54> + 8005c1c: 4632 mov r2, r6 + 8005c1e: 21b6 movs r1, #182 ; 0xb6 + 8005c20: 4628 mov r0, r5 + 8005c22: f001 fc63 bl 80074ec <VL53L0X_RdWord> + 8005c26: b968 cbnz r0, 8005c44 <perform_ref_signal_measurement+0x54> + 8005c28: 4602 mov r2, r0 + 8005c2a: 21ff movs r1, #255 ; 0xff + 8005c2c: 4628 mov r0, r5 + 8005c2e: f001 fc0f bl 8007450 <VL53L0X_WrByte> + 8005c32: b938 cbnz r0, 8005c44 <perform_ref_signal_measurement+0x54> + 8005c34: 4622 mov r2, r4 + 8005c36: 2101 movs r1, #1 + 8005c38: 4628 mov r0, r5 + 8005c3a: f001 fc09 bl 8007450 <VL53L0X_WrByte> + 8005c3e: b908 cbnz r0, 8005c44 <perform_ref_signal_measurement+0x54> + 8005c40: f885 4130 strb.w r4, [r5, #304] ; 0x130 + 8005c44: b008 add sp, #32 + 8005c46: bd70 pop {r4, r5, r6, pc} + +08005c48 <VL53L0X_set_reference_spads>: + 8005c48: b5f0 push {r4, r5, r6, r7, lr} + 8005c4a: 460f mov r7, r1 + 8005c4c: b089 sub sp, #36 ; 0x24 + 8005c4e: 4616 mov r6, r2 + 8005c50: 21ff movs r1, #255 ; 0xff + 8005c52: 2201 movs r2, #1 + 8005c54: 4604 mov r4, r0 + 8005c56: f001 fbfb bl 8007450 <VL53L0X_WrByte> + 8005c5a: 4602 mov r2, r0 + 8005c5c: b9a8 cbnz r0, 8005c8a <VL53L0X_set_reference_spads+0x42> + 8005c5e: 214f movs r1, #79 ; 0x4f + 8005c60: 4620 mov r0, r4 + 8005c62: f001 fbf5 bl 8007450 <VL53L0X_WrByte> + 8005c66: b980 cbnz r0, 8005c8a <VL53L0X_set_reference_spads+0x42> + 8005c68: 222c movs r2, #44 ; 0x2c + 8005c6a: 214e movs r1, #78 ; 0x4e + 8005c6c: 4620 mov r0, r4 + 8005c6e: f001 fbef bl 8007450 <VL53L0X_WrByte> + 8005c72: 4602 mov r2, r0 + 8005c74: b948 cbnz r0, 8005c8a <VL53L0X_set_reference_spads+0x42> + 8005c76: 21ff movs r1, #255 ; 0xff + 8005c78: 4620 mov r0, r4 + 8005c7a: f001 fbe9 bl 8007450 <VL53L0X_WrByte> + 8005c7e: b920 cbnz r0, 8005c8a <VL53L0X_set_reference_spads+0x42> + 8005c80: 22b4 movs r2, #180 ; 0xb4 + 8005c82: 21b6 movs r1, #182 ; 0xb6 + 8005c84: 4620 mov r0, r4 + 8005c86: f001 fbe3 bl 8007450 <VL53L0X_WrByte> + 8005c8a: 2500 movs r5, #0 + 8005c8c: f8c4 5124 str.w r5, [r4, #292] ; 0x124 + 8005c90: f8a4 5128 strh.w r5, [r4, #296] ; 0x128 + 8005c94: b9de cbnz r6, 8005cce <VL53L0X_set_reference_spads+0x86> + 8005c96: 4635 mov r5, r6 + 8005c98: ab07 add r3, sp, #28 + 8005c9a: 22b4 movs r2, #180 ; 0xb4 + 8005c9c: e9cd 7303 strd r7, r3, [sp, #12] + 8005ca0: 2306 movs r3, #6 + 8005ca2: e9cd 3200 strd r3, r2, [sp] + 8005ca6: 9502 str r5, [sp, #8] + 8005ca8: f504 7392 add.w r3, r4, #292 ; 0x124 + 8005cac: f504 7295 add.w r2, r4, #298 ; 0x12a + 8005cb0: 4631 mov r1, r6 + 8005cb2: 4620 mov r0, r4 + 8005cb4: f7ff ff54 bl 8005b60 <enable_ref_spads> + 8005cb8: b930 cbnz r0, 8005cc8 <VL53L0X_set_reference_spads+0x80> + 8005cba: 2301 movs r3, #1 + 8005cbc: f884 3115 strb.w r3, [r4, #277] ; 0x115 + 8005cc0: f884 7113 strb.w r7, [r4, #275] ; 0x113 + 8005cc4: f884 6114 strb.w r6, [r4, #276] ; 0x114 + 8005cc8: b009 add sp, #36 ; 0x24 + 8005cca: bdf0 pop {r4, r5, r6, r7, pc} + 8005ccc: 3501 adds r5, #1 + 8005cce: f105 00b4 add.w r0, r5, #180 ; 0xb4 + 8005cd2: f7ff ff1f bl 8005b14 <is_aperture> + 8005cd6: 2800 cmp r0, #0 + 8005cd8: d1de bne.n 8005c98 <VL53L0X_set_reference_spads+0x50> + 8005cda: 2d2c cmp r5, #44 ; 0x2c + 8005cdc: d1f6 bne.n 8005ccc <VL53L0X_set_reference_spads+0x84> + 8005cde: e7db b.n 8005c98 <VL53L0X_set_reference_spads+0x50> + +08005ce0 <VL53L0X_perform_single_ref_calibration>: + 8005ce0: b510 push {r4, lr} + 8005ce2: f041 0201 orr.w r2, r1, #1 + 8005ce6: 2100 movs r1, #0 + 8005ce8: 4604 mov r4, r0 + 8005cea: f001 fbb1 bl 8007450 <VL53L0X_WrByte> + 8005cee: b978 cbnz r0, 8005d10 <VL53L0X_perform_single_ref_calibration+0x30> + 8005cf0: 4620 mov r0, r4 + 8005cf2: f000 fa46 bl 8006182 <VL53L0X_measurement_poll_for_completion> + 8005cf6: b958 cbnz r0, 8005d10 <VL53L0X_perform_single_ref_calibration+0x30> + 8005cf8: 4601 mov r1, r0 + 8005cfa: 4620 mov r0, r4 + 8005cfc: f7ff fcfa bl 80056f4 <VL53L0X_ClearInterruptMask> + 8005d00: b930 cbnz r0, 8005d10 <VL53L0X_perform_single_ref_calibration+0x30> + 8005d02: 4602 mov r2, r0 + 8005d04: 4601 mov r1, r0 + 8005d06: 4620 mov r0, r4 + 8005d08: e8bd 4010 ldmia.w sp!, {r4, lr} + 8005d0c: f001 bba0 b.w 8007450 <VL53L0X_WrByte> + 8005d10: bd10 pop {r4, pc} + +08005d12 <VL53L0X_ref_calibration_io>: + 8005d12: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8005d16: f04f 0b00 mov.w fp, #0 + 8005d1a: 4688 mov r8, r1 + 8005d1c: 4617 mov r7, r2 + 8005d1e: 21ff movs r1, #255 ; 0xff + 8005d20: 2201 movs r2, #1 + 8005d22: 4605 mov r5, r0 + 8005d24: 461e mov r6, r3 + 8005d26: f89d a038 ldrb.w sl, [sp, #56] ; 0x38 + 8005d2a: f89d 903c ldrb.w r9, [sp, #60] ; 0x3c + 8005d2e: f88d b007 strb.w fp, [sp, #7] + 8005d32: f001 fb8d bl 8007450 <VL53L0X_WrByte> + 8005d36: 465a mov r2, fp + 8005d38: 4604 mov r4, r0 + 8005d3a: 4659 mov r1, fp + 8005d3c: 4628 mov r0, r5 + 8005d3e: f001 fb87 bl 8007450 <VL53L0X_WrByte> + 8005d42: 465a mov r2, fp + 8005d44: 4304 orrs r4, r0 + 8005d46: 21ff movs r1, #255 ; 0xff + 8005d48: 4628 mov r0, r5 + 8005d4a: f001 fb81 bl 8007450 <VL53L0X_WrByte> + 8005d4e: b264 sxtb r4, r4 + 8005d50: 4304 orrs r4, r0 + 8005d52: b264 sxtb r4, r4 + 8005d54: f1b8 0f00 cmp.w r8, #0 + 8005d58: d032 beq.n 8005dc0 <VL53L0X_ref_calibration_io+0xae> + 8005d5a: f1ba 0f00 cmp.w sl, #0 + 8005d5e: d006 beq.n 8005d6e <VL53L0X_ref_calibration_io+0x5c> + 8005d60: 9a0c ldr r2, [sp, #48] ; 0x30 + 8005d62: 21cb movs r1, #203 ; 0xcb + 8005d64: 4628 mov r0, r5 + 8005d66: f001 fb95 bl 8007494 <VL53L0X_RdByte> + 8005d6a: 4320 orrs r0, r4 + 8005d6c: b244 sxtb r4, r0 + 8005d6e: f1b9 0f00 cmp.w r9, #0 + 8005d72: d007 beq.n 8005d84 <VL53L0X_ref_calibration_io+0x72> + 8005d74: f10d 0207 add.w r2, sp, #7 + 8005d78: 21ee movs r1, #238 ; 0xee + 8005d7a: 4628 mov r0, r5 + 8005d7c: f001 fb8a bl 8007494 <VL53L0X_RdByte> + 8005d80: 4320 orrs r0, r4 + 8005d82: b244 sxtb r4, r0 + 8005d84: 2201 movs r2, #1 + 8005d86: 21ff movs r1, #255 ; 0xff + 8005d88: 4628 mov r0, r5 + 8005d8a: f001 fb61 bl 8007450 <VL53L0X_WrByte> + 8005d8e: 2201 movs r2, #1 + 8005d90: 4304 orrs r4, r0 + 8005d92: 2100 movs r1, #0 + 8005d94: 4628 mov r0, r5 + 8005d96: f001 fb5b bl 8007450 <VL53L0X_WrByte> + 8005d9a: b264 sxtb r4, r4 + 8005d9c: 4304 orrs r4, r0 + 8005d9e: 2200 movs r2, #0 + 8005da0: 21ff movs r1, #255 ; 0xff + 8005da2: 4628 mov r0, r5 + 8005da4: f001 fb54 bl 8007450 <VL53L0X_WrByte> + 8005da8: b264 sxtb r4, r4 + 8005daa: f89d 3007 ldrb.w r3, [sp, #7] + 8005dae: 9a0d ldr r2, [sp, #52] ; 0x34 + 8005db0: 4320 orrs r0, r4 + 8005db2: f023 0310 bic.w r3, r3, #16 + 8005db6: b240 sxtb r0, r0 + 8005db8: 7013 strb r3, [r2, #0] + 8005dba: b003 add sp, #12 + 8005dbc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8005dc0: f1ba 0f00 cmp.w sl, #0 + 8005dc4: d006 beq.n 8005dd4 <VL53L0X_ref_calibration_io+0xc2> + 8005dc6: 463a mov r2, r7 + 8005dc8: 21cb movs r1, #203 ; 0xcb + 8005dca: 4628 mov r0, r5 + 8005dcc: f001 fb40 bl 8007450 <VL53L0X_WrByte> + 8005dd0: 4320 orrs r0, r4 + 8005dd2: b244 sxtb r4, r0 + 8005dd4: f1b9 0f00 cmp.w r9, #0 + 8005dd8: d0d4 beq.n 8005d84 <VL53L0X_ref_calibration_io+0x72> + 8005dda: 4633 mov r3, r6 + 8005ddc: 2280 movs r2, #128 ; 0x80 + 8005dde: 21ee movs r1, #238 ; 0xee + 8005de0: 4628 mov r0, r5 + 8005de2: f001 fb6c bl 80074be <VL53L0X_UpdateByte> + 8005de6: e7cb b.n 8005d80 <VL53L0X_ref_calibration_io+0x6e> + +08005de8 <VL53L0X_perform_vhv_calibration>: + 8005de8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8005dec: b087 sub sp, #28 + 8005dee: 4691 mov r9, r2 + 8005df0: 2200 movs r2, #0 + 8005df2: 4605 mov r5, r0 + 8005df4: 4688 mov r8, r1 + 8005df6: f88d 2017 strb.w r2, [sp, #23] + 8005dfa: 461e mov r6, r3 + 8005dfc: b31b cbz r3, 8005e46 <VL53L0X_perform_vhv_calibration+0x5e> + 8005dfe: f890 7130 ldrb.w r7, [r0, #304] ; 0x130 + 8005e02: 2201 movs r2, #1 + 8005e04: 4611 mov r1, r2 + 8005e06: 4628 mov r0, r5 + 8005e08: f001 fb22 bl 8007450 <VL53L0X_WrByte> + 8005e0c: 4604 mov r4, r0 + 8005e0e: bb58 cbnz r0, 8005e68 <VL53L0X_perform_vhv_calibration+0x80> + 8005e10: 2140 movs r1, #64 ; 0x40 + 8005e12: 4628 mov r0, r5 + 8005e14: f7ff ff64 bl 8005ce0 <VL53L0X_perform_single_ref_calibration> + 8005e18: 4604 mov r4, r0 + 8005e1a: bb28 cbnz r0, 8005e68 <VL53L0X_perform_vhv_calibration+0x80> + 8005e1c: f1b9 0f01 cmp.w r9, #1 + 8005e20: d113 bne.n 8005e4a <VL53L0X_perform_vhv_calibration+0x62> + 8005e22: f10d 0317 add.w r3, sp, #23 + 8005e26: e9cd 9002 strd r9, r0, [sp, #8] + 8005e2a: e9cd 8300 strd r8, r3, [sp] + 8005e2e: 4602 mov r2, r0 + 8005e30: 4603 mov r3, r0 + 8005e32: 4649 mov r1, r9 + 8005e34: 4628 mov r0, r5 + 8005e36: f7ff ff6c bl 8005d12 <VL53L0X_ref_calibration_io> + 8005e3a: b140 cbz r0, 8005e4e <VL53L0X_perform_vhv_calibration+0x66> + 8005e3c: 4604 mov r4, r0 + 8005e3e: 4620 mov r0, r4 + 8005e40: b007 add sp, #28 + 8005e42: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8005e46: 461f mov r7, r3 + 8005e48: e7db b.n 8005e02 <VL53L0X_perform_vhv_calibration+0x1a> + 8005e4a: f888 0000 strb.w r0, [r8] + 8005e4e: 2e00 cmp r6, #0 + 8005e50: d0f5 beq.n 8005e3e <VL53L0X_perform_vhv_calibration+0x56> + 8005e52: 463a mov r2, r7 + 8005e54: 2101 movs r1, #1 + 8005e56: 4628 mov r0, r5 + 8005e58: f001 fafa bl 8007450 <VL53L0X_WrByte> + 8005e5c: 4604 mov r4, r0 + 8005e5e: 2800 cmp r0, #0 + 8005e60: d1ed bne.n 8005e3e <VL53L0X_perform_vhv_calibration+0x56> + 8005e62: f885 7130 strb.w r7, [r5, #304] ; 0x130 + 8005e66: e7ea b.n 8005e3e <VL53L0X_perform_vhv_calibration+0x56> + 8005e68: 2300 movs r3, #0 + 8005e6a: f888 3000 strb.w r3, [r8] + 8005e6e: 4620 mov r0, r4 + 8005e70: e7e4 b.n 8005e3c <VL53L0X_perform_vhv_calibration+0x54> + +08005e72 <VL53L0X_perform_phase_calibration>: + 8005e72: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8005e76: 4605 mov r5, r0 + 8005e78: b087 sub sp, #28 + 8005e7a: 4688 mov r8, r1 + 8005e7c: 4691 mov r9, r2 + 8005e7e: 461e mov r6, r3 + 8005e80: b323 cbz r3, 8005ecc <VL53L0X_perform_phase_calibration+0x5a> + 8005e82: f890 7130 ldrb.w r7, [r0, #304] ; 0x130 + 8005e86: 2202 movs r2, #2 + 8005e88: 2101 movs r1, #1 + 8005e8a: 4628 mov r0, r5 + 8005e8c: f001 fae0 bl 8007450 <VL53L0X_WrByte> + 8005e90: 4604 mov r4, r0 + 8005e92: bb60 cbnz r0, 8005eee <VL53L0X_perform_phase_calibration+0x7c> + 8005e94: 4601 mov r1, r0 + 8005e96: 4628 mov r0, r5 + 8005e98: f7ff ff22 bl 8005ce0 <VL53L0X_perform_single_ref_calibration> + 8005e9c: 4604 mov r4, r0 + 8005e9e: bb30 cbnz r0, 8005eee <VL53L0X_perform_phase_calibration+0x7c> + 8005ea0: f1b9 0f01 cmp.w r9, #1 + 8005ea4: d114 bne.n 8005ed0 <VL53L0X_perform_phase_calibration+0x5e> + 8005ea6: f10d 0317 add.w r3, sp, #23 + 8005eaa: e9cd 0902 strd r0, r9, [sp, #8] + 8005eae: 9300 str r3, [sp, #0] + 8005eb0: 4602 mov r2, r0 + 8005eb2: 4603 mov r3, r0 + 8005eb4: f8cd 8004 str.w r8, [sp, #4] + 8005eb8: 4649 mov r1, r9 + 8005eba: 4628 mov r0, r5 + 8005ebc: f7ff ff29 bl 8005d12 <VL53L0X_ref_calibration_io> + 8005ec0: b140 cbz r0, 8005ed4 <VL53L0X_perform_phase_calibration+0x62> + 8005ec2: 4604 mov r4, r0 + 8005ec4: 4620 mov r0, r4 + 8005ec6: b007 add sp, #28 + 8005ec8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8005ecc: 461f mov r7, r3 + 8005ece: e7da b.n 8005e86 <VL53L0X_perform_phase_calibration+0x14> + 8005ed0: f888 0000 strb.w r0, [r8] + 8005ed4: 2e00 cmp r6, #0 + 8005ed6: d0f5 beq.n 8005ec4 <VL53L0X_perform_phase_calibration+0x52> + 8005ed8: 463a mov r2, r7 + 8005eda: 2101 movs r1, #1 + 8005edc: 4628 mov r0, r5 + 8005ede: f001 fab7 bl 8007450 <VL53L0X_WrByte> + 8005ee2: 4604 mov r4, r0 + 8005ee4: 2800 cmp r0, #0 + 8005ee6: d1ed bne.n 8005ec4 <VL53L0X_perform_phase_calibration+0x52> + 8005ee8: f885 7130 strb.w r7, [r5, #304] ; 0x130 + 8005eec: e7ea b.n 8005ec4 <VL53L0X_perform_phase_calibration+0x52> + 8005eee: 2300 movs r3, #0 + 8005ef0: f888 3000 strb.w r3, [r8] + 8005ef4: 4620 mov r0, r4 + 8005ef6: e7e4 b.n 8005ec2 <VL53L0X_perform_phase_calibration+0x50> + +08005ef8 <VL53L0X_perform_ref_calibration>: + 8005ef8: b5f8 push {r3, r4, r5, r6, r7, lr} + 8005efa: 461d mov r5, r3 + 8005efc: 4616 mov r6, r2 + 8005efe: 2300 movs r3, #0 + 8005f00: 462a mov r2, r5 + 8005f02: f890 7130 ldrb.w r7, [r0, #304] ; 0x130 + 8005f06: 4604 mov r4, r0 + 8005f08: f7ff ff6e bl 8005de8 <VL53L0X_perform_vhv_calibration> + 8005f0c: b970 cbnz r0, 8005f2c <VL53L0X_perform_ref_calibration+0x34> + 8005f0e: 4603 mov r3, r0 + 8005f10: 462a mov r2, r5 + 8005f12: 4631 mov r1, r6 + 8005f14: 4620 mov r0, r4 + 8005f16: f7ff ffac bl 8005e72 <VL53L0X_perform_phase_calibration> + 8005f1a: b938 cbnz r0, 8005f2c <VL53L0X_perform_ref_calibration+0x34> + 8005f1c: 463a mov r2, r7 + 8005f1e: 2101 movs r1, #1 + 8005f20: 4620 mov r0, r4 + 8005f22: f001 fa95 bl 8007450 <VL53L0X_WrByte> + 8005f26: b908 cbnz r0, 8005f2c <VL53L0X_perform_ref_calibration+0x34> + 8005f28: f884 7130 strb.w r7, [r4, #304] ; 0x130 + 8005f2c: bdf8 pop {r3, r4, r5, r6, r7, pc} + +08005f2e <VL53L0X_perform_ref_spad_management>: + 8005f2e: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8005f32: 2300 movs r3, #0 + 8005f34: b093 sub sp, #76 ; 0x4c + 8005f36: e9cd 120a strd r1, r2, [sp, #40] ; 0x28 + 8005f3a: f8c0 3124 str.w r3, [r0, #292] ; 0x124 + 8005f3e: f8a0 3128 strh.w r3, [r0, #296] ; 0x128 + 8005f42: 2201 movs r2, #1 + 8005f44: 21ff movs r1, #255 ; 0xff + 8005f46: e9cd 330e strd r3, r3, [sp, #56] ; 0x38 + 8005f4a: f8b0 813c ldrh.w r8, [r0, #316] ; 0x13c + 8005f4e: f88d 3034 strb.w r3, [sp, #52] ; 0x34 + 8005f52: 4605 mov r5, r0 + 8005f54: f88d 3035 strb.w r3, [sp, #53] ; 0x35 + 8005f58: f001 fa7a bl 8007450 <VL53L0X_WrByte> + 8005f5c: 4604 mov r4, r0 + 8005f5e: 2800 cmp r0, #0 + 8005f60: f040 80e3 bne.w 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8005f64: 4602 mov r2, r0 + 8005f66: 214f movs r1, #79 ; 0x4f + 8005f68: 4628 mov r0, r5 + 8005f6a: f001 fa71 bl 8007450 <VL53L0X_WrByte> + 8005f6e: 4604 mov r4, r0 + 8005f70: 2800 cmp r0, #0 + 8005f72: f040 80da bne.w 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8005f76: 222c movs r2, #44 ; 0x2c + 8005f78: 214e movs r1, #78 ; 0x4e + 8005f7a: 4628 mov r0, r5 + 8005f7c: f001 fa68 bl 8007450 <VL53L0X_WrByte> + 8005f80: 4604 mov r4, r0 + 8005f82: 2800 cmp r0, #0 + 8005f84: f040 80d1 bne.w 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8005f88: 4602 mov r2, r0 + 8005f8a: 21ff movs r1, #255 ; 0xff + 8005f8c: 4628 mov r0, r5 + 8005f8e: f001 fa5f bl 8007450 <VL53L0X_WrByte> + 8005f92: 4604 mov r4, r0 + 8005f94: 2800 cmp r0, #0 + 8005f96: f040 80c8 bne.w 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8005f9a: 22b4 movs r2, #180 ; 0xb4 + 8005f9c: 21b6 movs r1, #182 ; 0xb6 + 8005f9e: 4628 mov r0, r5 + 8005fa0: f001 fa56 bl 8007450 <VL53L0X_WrByte> + 8005fa4: 4604 mov r4, r0 + 8005fa6: 2800 cmp r0, #0 + 8005fa8: f040 80bf bne.w 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8005fac: 4602 mov r2, r0 + 8005fae: 2180 movs r1, #128 ; 0x80 + 8005fb0: 4628 mov r0, r5 + 8005fb2: f001 fa4d bl 8007450 <VL53L0X_WrByte> + 8005fb6: 4604 mov r4, r0 + 8005fb8: 2800 cmp r0, #0 + 8005fba: f040 80b6 bne.w 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8005fbe: 4603 mov r3, r0 + 8005fc0: f10d 0235 add.w r2, sp, #53 ; 0x35 + 8005fc4: a90d add r1, sp, #52 ; 0x34 + 8005fc6: 4628 mov r0, r5 + 8005fc8: f7ff ff96 bl 8005ef8 <VL53L0X_perform_ref_calibration> + 8005fcc: 4604 mov r4, r0 + 8005fce: 2800 cmp r0, #0 + 8005fd0: f040 80ab bne.w 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8005fd4: 2303 movs r3, #3 + 8005fd6: e9cd 0302 strd r0, r3, [sp, #8] + 8005fda: 21b4 movs r1, #180 ; 0xb4 + 8005fdc: 2306 movs r3, #6 + 8005fde: f505 7a95 add.w sl, r5, #298 ; 0x12a + 8005fe2: f505 7992 add.w r9, r5, #292 ; 0x124 + 8005fe6: ae0e add r6, sp, #56 ; 0x38 + 8005fe8: e9cd 3100 strd r3, r1, [sp] + 8005fec: 9604 str r6, [sp, #16] + 8005fee: 4601 mov r1, r0 + 8005ff0: 464b mov r3, r9 + 8005ff2: 4652 mov r2, sl + 8005ff4: 4628 mov r0, r5 + 8005ff6: f7ff fdb3 bl 8005b60 <enable_ref_spads> + 8005ffa: 4604 mov r4, r0 + 8005ffc: 2800 cmp r0, #0 + 8005ffe: f040 8094 bne.w 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8006002: f10d 0136 add.w r1, sp, #54 ; 0x36 + 8006006: 4628 mov r0, r5 + 8006008: 9f0e ldr r7, [sp, #56] ; 0x38 + 800600a: f7ff fdf1 bl 8005bf0 <perform_ref_signal_measurement> + 800600e: 4604 mov r4, r0 + 8006010: 2800 cmp r0, #0 + 8006012: f040 808a bne.w 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8006016: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 + 800601a: 4543 cmp r3, r8 + 800601c: f240 80aa bls.w 8006174 <VL53L0X_perform_ref_spad_management+0x246> + 8006020: f8c5 0124 str.w r0, [r5, #292] ; 0x124 + 8006024: f8a5 0128 strh.w r0, [r5, #296] ; 0x128 + 8006028: f107 00b4 add.w r0, r7, #180 ; 0xb4 + 800602c: f7ff fd72 bl 8005b14 <is_aperture> + 8006030: b908 cbnz r0, 8006036 <VL53L0X_perform_ref_spad_management+0x108> + 8006032: 2f2b cmp r7, #43 ; 0x2b + 8006034: d97d bls.n 8006132 <VL53L0X_perform_ref_spad_management+0x204> + 8006036: 2306 movs r3, #6 + 8006038: 22b4 movs r2, #180 ; 0xb4 + 800603a: f04f 0b03 mov.w fp, #3 + 800603e: e9cd 3200 strd r3, r2, [sp] + 8006042: e9cd 7b02 strd r7, fp, [sp, #8] + 8006046: 9604 str r6, [sp, #16] + 8006048: 464b mov r3, r9 + 800604a: 4652 mov r2, sl + 800604c: 2101 movs r1, #1 + 800604e: 4628 mov r0, r5 + 8006050: f7ff fd86 bl 8005b60 <enable_ref_spads> + 8006054: 2800 cmp r0, #0 + 8006056: f040 808b bne.w 8006170 <VL53L0X_perform_ref_spad_management+0x242> + 800605a: f10d 0136 add.w r1, sp, #54 ; 0x36 + 800605e: 4628 mov r0, r5 + 8006060: 9f0e ldr r7, [sp, #56] ; 0x38 + 8006062: f7ff fdc5 bl 8005bf0 <perform_ref_signal_measurement> + 8006066: 4606 mov r6, r0 + 8006068: 2800 cmp r0, #0 + 800606a: d17c bne.n 8006166 <VL53L0X_perform_ref_spad_management+0x238> + 800606c: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 + 8006070: 4543 cmp r3, r8 + 8006072: f240 8082 bls.w 800617a <VL53L0X_perform_ref_spad_management+0x24c> + 8006076: 2601 movs r6, #1 + 8006078: 9606 str r6, [sp, #24] + 800607a: f8bd 3036 ldrh.w r3, [sp, #54] ; 0x36 + 800607e: 4543 cmp r3, r8 + 8006080: d260 bcs.n 8006144 <VL53L0X_perform_ref_spad_management+0x216> + 8006082: eba3 0308 sub.w r3, r3, r8 + 8006086: ea83 72e3 eor.w r2, r3, r3, asr #31 + 800608a: eba2 72e3 sub.w r2, r2, r3, asr #31 + 800608e: f89d 6018 ldrb.w r6, [sp, #24] + 8006092: 9209 str r2, [sp, #36] ; 0x24 + 8006094: f505 7392 add.w r3, r5, #292 ; 0x124 + 8006098: f04f 0b03 mov.w fp, #3 + 800609c: 9307 str r3, [sp, #28] + 800609e: 9b07 ldr r3, [sp, #28] + 80060a0: 6818 ldr r0, [r3, #0] + 80060a2: 889b ldrh r3, [r3, #4] + 80060a4: 9010 str r0, [sp, #64] ; 0x40 + 80060a6: f8ad 3044 strh.w r3, [sp, #68] ; 0x44 + 80060aa: 463a mov r2, r7 + 80060ac: ab0f add r3, sp, #60 ; 0x3c + 80060ae: 2106 movs r1, #6 + 80060b0: 4650 mov r0, sl + 80060b2: f7ff fd0c bl 8005ace <get_next_good_spad> + 80060b6: 9f0f ldr r7, [sp, #60] ; 0x3c + 80060b8: 1c7b adds r3, r7, #1 + 80060ba: d056 beq.n 800616a <VL53L0X_perform_ref_spad_management+0x23c> + 80060bc: f107 00b4 add.w r0, r7, #180 ; 0xb4 + 80060c0: f7ff fd28 bl 8005b14 <is_aperture> + 80060c4: 9b06 ldr r3, [sp, #24] + 80060c6: 4298 cmp r0, r3 + 80060c8: d13c bne.n 8006144 <VL53L0X_perform_ref_spad_management+0x216> + 80060ca: f10b 0301 add.w r3, fp, #1 + 80060ce: 463a mov r2, r7 + 80060d0: 4648 mov r0, r9 + 80060d2: 9308 str r3, [sp, #32] + 80060d4: f7ff fd28 bl 8005b28 <enable_spad_bit> + 80060d8: 2800 cmp r0, #0 + 80060da: d149 bne.n 8006170 <VL53L0X_perform_ref_spad_management+0x242> + 80060dc: 4649 mov r1, r9 + 80060de: 4628 mov r0, r5 + 80060e0: f7ff fd34 bl 8005b4c <set_ref_spad_map> + 80060e4: 2800 cmp r0, #0 + 80060e6: d143 bne.n 8006170 <VL53L0X_perform_ref_spad_management+0x242> + 80060e8: f10d 0136 add.w r1, sp, #54 ; 0x36 + 80060ec: 4628 mov r0, r5 + 80060ee: f7ff fd7f bl 8005bf0 <perform_ref_signal_measurement> + 80060f2: 2800 cmp r0, #0 + 80060f4: d13c bne.n 8006170 <VL53L0X_perform_ref_spad_management+0x242> + 80060f6: f8bd 2036 ldrh.w r2, [sp, #54] ; 0x36 + 80060fa: eba2 0308 sub.w r3, r2, r8 + 80060fe: 2b00 cmp r3, #0 + 8006100: bfb8 it lt + 8006102: 425b neglt r3, r3 + 8006104: 4542 cmp r2, r8 + 8006106: d916 bls.n 8006136 <VL53L0X_perform_ref_spad_management+0x208> + 8006108: 9a09 ldr r2, [sp, #36] ; 0x24 + 800610a: 4293 cmp r3, r2 + 800610c: d918 bls.n 8006140 <VL53L0X_perform_ref_spad_management+0x212> + 800610e: a910 add r1, sp, #64 ; 0x40 + 8006110: 4628 mov r0, r5 + 8006112: f7ff fd1b bl 8005b4c <set_ref_spad_map> + 8006116: 9a07 ldr r2, [sp, #28] + 8006118: 9907 ldr r1, [sp, #28] + 800611a: 4603 mov r3, r0 + 800611c: 9810 ldr r0, [sp, #64] ; 0x40 + 800611e: 6010 str r0, [r2, #0] + 8006120: f8bd 2044 ldrh.w r2, [sp, #68] ; 0x44 + 8006124: 808a strh r2, [r1, #4] + 8006126: b16b cbz r3, 8006144 <VL53L0X_perform_ref_spad_management+0x216> + 8006128: 461c mov r4, r3 + 800612a: 4620 mov r0, r4 + 800612c: b013 add sp, #76 ; 0x4c + 800612e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8006132: 3701 adds r7, #1 + 8006134: e778 b.n 8006028 <VL53L0X_perform_ref_spad_management+0xfa> + 8006136: f8dd b020 ldr.w fp, [sp, #32] + 800613a: 9309 str r3, [sp, #36] ; 0x24 + 800613c: 3701 adds r7, #1 + 800613e: e7ae b.n 800609e <VL53L0X_perform_ref_spad_management+0x170> + 8006140: f8dd b020 ldr.w fp, [sp, #32] + 8006144: 9b0a ldr r3, [sp, #40] ; 0x28 + 8006146: f8c3 b000 str.w fp, [r3] + 800614a: 9b0b ldr r3, [sp, #44] ; 0x2c + 800614c: 701e strb r6, [r3, #0] + 800614e: 2301 movs r3, #1 + 8006150: f885 3115 strb.w r3, [r5, #277] ; 0x115 + 8006154: 9b0a ldr r3, [sp, #40] ; 0x28 + 8006156: 681b ldr r3, [r3, #0] + 8006158: f885 3113 strb.w r3, [r5, #275] ; 0x113 + 800615c: 9b0b ldr r3, [sp, #44] ; 0x2c + 800615e: 781b ldrb r3, [r3, #0] + 8006160: f885 3114 strb.w r3, [r5, #276] ; 0x114 + 8006164: e7e1 b.n 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8006166: 4604 mov r4, r0 + 8006168: e7df b.n 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 800616a: f06f 0431 mvn.w r4, #49 ; 0x31 + 800616e: e7dc b.n 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8006170: 4604 mov r4, r0 + 8006172: e7da b.n 800612a <VL53L0X_perform_ref_spad_management+0x1fc> + 8006174: 2600 movs r6, #0 + 8006176: 46b3 mov fp, r6 + 8006178: e77e b.n 8006078 <VL53L0X_perform_ref_spad_management+0x14a> + 800617a: 2301 movs r3, #1 + 800617c: 4683 mov fp, r0 + 800617e: 9306 str r3, [sp, #24] + 8006180: e77b b.n 800607a <VL53L0X_perform_ref_spad_management+0x14c> + +08006182 <VL53L0X_measurement_poll_for_completion>: + 8006182: b537 push {r0, r1, r2, r4, r5, lr} + 8006184: 2300 movs r3, #0 + 8006186: 4604 mov r4, r0 + 8006188: f88d 3007 strb.w r3, [sp, #7] + 800618c: f44f 65fa mov.w r5, #2000 ; 0x7d0 + 8006190: f10d 0107 add.w r1, sp, #7 + 8006194: 4620 mov r0, r4 + 8006196: f7ff fc60 bl 8005a5a <VL53L0X_GetMeasurementDataReady> + 800619a: b958 cbnz r0, 80061b4 <VL53L0X_measurement_poll_for_completion+0x32> + 800619c: f89d 3007 ldrb.w r3, [sp, #7] + 80061a0: 2b01 cmp r3, #1 + 80061a2: d007 beq.n 80061b4 <VL53L0X_measurement_poll_for_completion+0x32> + 80061a4: 3d01 subs r5, #1 + 80061a6: d003 beq.n 80061b0 <VL53L0X_measurement_poll_for_completion+0x2e> + 80061a8: 4620 mov r0, r4 + 80061aa: f001 f9e5 bl 8007578 <VL53L0X_PollingDelay> + 80061ae: e7ef b.n 8006190 <VL53L0X_measurement_poll_for_completion+0xe> + 80061b0: f06f 0006 mvn.w r0, #6 + 80061b4: b003 add sp, #12 + 80061b6: bd30 pop {r4, r5, pc} + +080061b8 <VL53L0X_isqrt>: + 80061b8: 4602 mov r2, r0 + 80061ba: f04f 4380 mov.w r3, #1073741824 ; 0x40000000 + 80061be: 4293 cmp r3, r2 + 80061c0: d802 bhi.n 80061c8 <VL53L0X_isqrt+0x10> + 80061c2: 2000 movs r0, #0 + 80061c4: b913 cbnz r3, 80061cc <VL53L0X_isqrt+0x14> + 80061c6: 4770 bx lr + 80061c8: 089b lsrs r3, r3, #2 + 80061ca: e7f8 b.n 80061be <VL53L0X_isqrt+0x6> + 80061cc: 18c1 adds r1, r0, r3 + 80061ce: 4291 cmp r1, r2 + 80061d0: ea4f 0050 mov.w r0, r0, lsr #1 + 80061d4: bf9c itt ls + 80061d6: 18c0 addls r0, r0, r3 + 80061d8: 1a52 subls r2, r2, r1 + 80061da: 089b lsrs r3, r3, #2 + 80061dc: e7f2 b.n 80061c4 <VL53L0X_isqrt+0xc> + +080061de <VL53L0X_device_read_strobe>: + 80061de: b573 push {r0, r1, r4, r5, r6, lr} + 80061e0: 2200 movs r2, #0 + 80061e2: 2183 movs r1, #131 ; 0x83 + 80061e4: 4605 mov r5, r0 + 80061e6: f001 f933 bl 8007450 <VL53L0X_WrByte> + 80061ea: 4604 mov r4, r0 + 80061ec: b988 cbnz r0, 8006212 <VL53L0X_device_read_strobe+0x34> + 80061ee: f44f 66fa mov.w r6, #2000 ; 0x7d0 + 80061f2: f10d 0207 add.w r2, sp, #7 + 80061f6: 2183 movs r1, #131 ; 0x83 + 80061f8: 4628 mov r0, r5 + 80061fa: f001 f94b bl 8007494 <VL53L0X_RdByte> + 80061fe: f89d 3007 ldrb.w r3, [sp, #7] + 8006202: 4303 orrs r3, r0 + 8006204: b2db uxtb r3, r3 + 8006206: 4604 mov r4, r0 + 8006208: b91b cbnz r3, 8006212 <VL53L0X_device_read_strobe+0x34> + 800620a: 3e01 subs r6, #1 + 800620c: d1f1 bne.n 80061f2 <VL53L0X_device_read_strobe+0x14> + 800620e: f06f 0406 mvn.w r4, #6 + 8006212: 2201 movs r2, #1 + 8006214: 2183 movs r1, #131 ; 0x83 + 8006216: 4628 mov r0, r5 + 8006218: f001 f91a bl 8007450 <VL53L0X_WrByte> + 800621c: 4320 orrs r0, r4 + 800621e: b240 sxtb r0, r0 + 8006220: b002 add sp, #8 + 8006222: bd70 pop {r4, r5, r6, pc} + +08006224 <VL53L0X_get_info_from_device>: + 8006224: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8006228: f890 60f0 ldrb.w r6, [r0, #240] ; 0xf0 + 800622c: b091 sub sp, #68 ; 0x44 + 800622e: f04f 0900 mov.w r9, #0 + 8006232: 2e07 cmp r6, #7 + 8006234: e9cd 9907 strd r9, r9, [sp, #28] + 8006238: 4604 mov r4, r0 + 800623a: 460f mov r7, r1 + 800623c: f000 82a2 beq.w 8006784 <VL53L0X_get_info_from_device+0x560> + 8006240: 2201 movs r2, #1 + 8006242: 2180 movs r1, #128 ; 0x80 + 8006244: f001 f904 bl 8007450 <VL53L0X_WrByte> + 8006248: 2201 movs r2, #1 + 800624a: 4680 mov r8, r0 + 800624c: 21ff movs r1, #255 ; 0xff + 800624e: 4620 mov r0, r4 + 8006250: f001 f8fe bl 8007450 <VL53L0X_WrByte> + 8006254: 464a mov r2, r9 + 8006256: ea48 0800 orr.w r8, r8, r0 + 800625a: 4649 mov r1, r9 + 800625c: 4620 mov r0, r4 + 800625e: f001 f8f7 bl 8007450 <VL53L0X_WrByte> + 8006262: fa4f f888 sxtb.w r8, r8 + 8006266: ea48 0800 orr.w r8, r8, r0 + 800626a: 2206 movs r2, #6 + 800626c: 21ff movs r1, #255 ; 0xff + 800626e: 4620 mov r0, r4 + 8006270: f001 f8ee bl 8007450 <VL53L0X_WrByte> + 8006274: fa4f f888 sxtb.w r8, r8 + 8006278: ea48 0800 orr.w r8, r8, r0 + 800627c: f10d 0215 add.w r2, sp, #21 + 8006280: 2183 movs r1, #131 ; 0x83 + 8006282: 4620 mov r0, r4 + 8006284: f001 f906 bl 8007494 <VL53L0X_RdByte> + 8006288: f89d 2015 ldrb.w r2, [sp, #21] + 800628c: fa4f f888 sxtb.w r8, r8 + 8006290: ea48 0800 orr.w r8, r8, r0 + 8006294: f042 0204 orr.w r2, r2, #4 + 8006298: 2183 movs r1, #131 ; 0x83 + 800629a: 4620 mov r0, r4 + 800629c: f001 f8d8 bl 8007450 <VL53L0X_WrByte> + 80062a0: fa4f f888 sxtb.w r8, r8 + 80062a4: ea48 0800 orr.w r8, r8, r0 + 80062a8: 2207 movs r2, #7 + 80062aa: 21ff movs r1, #255 ; 0xff + 80062ac: 4620 mov r0, r4 + 80062ae: f001 f8cf bl 8007450 <VL53L0X_WrByte> + 80062b2: fa4f f888 sxtb.w r8, r8 + 80062b6: 2201 movs r2, #1 + 80062b8: 2181 movs r1, #129 ; 0x81 + 80062ba: ea48 0800 orr.w r8, r8, r0 + 80062be: 4620 mov r0, r4 + 80062c0: f001 f8c6 bl 8007450 <VL53L0X_WrByte> + 80062c4: fa4f f888 sxtb.w r8, r8 + 80062c8: ea48 0800 orr.w r8, r8, r0 + 80062cc: 4620 mov r0, r4 + 80062ce: f001 f953 bl 8007578 <VL53L0X_PollingDelay> + 80062d2: fa4f f888 sxtb.w r8, r8 + 80062d6: ea48 0800 orr.w r8, r8, r0 + 80062da: 2201 movs r2, #1 + 80062dc: 2180 movs r1, #128 ; 0x80 + 80062de: 4620 mov r0, r4 + 80062e0: f001 f8b6 bl 8007450 <VL53L0X_WrByte> + 80062e4: fa4f f888 sxtb.w r8, r8 + 80062e8: ea48 0500 orr.w r5, r8, r0 + 80062ec: f017 0b01 ands.w fp, r7, #1 + 80062f0: b26d sxtb r5, r5 + 80062f2: f000 821e beq.w 8006732 <VL53L0X_get_info_from_device+0x50e> + 80062f6: 07f2 lsls r2, r6, #31 + 80062f8: f100 821e bmi.w 8006738 <VL53L0X_get_info_from_device+0x514> + 80062fc: 226b movs r2, #107 ; 0x6b + 80062fe: 2194 movs r1, #148 ; 0x94 + 8006300: 4620 mov r0, r4 + 8006302: f001 f8a5 bl 8007450 <VL53L0X_WrByte> + 8006306: 4680 mov r8, r0 + 8006308: 4620 mov r0, r4 + 800630a: f7ff ff68 bl 80061de <VL53L0X_device_read_strobe> + 800630e: aa06 add r2, sp, #24 + 8006310: ea48 0800 orr.w r8, r8, r0 + 8006314: 2190 movs r1, #144 ; 0x90 + 8006316: 4620 mov r0, r4 + 8006318: f001 f908 bl 800752c <VL53L0X_RdDWord> + 800631c: ea45 0508 orr.w r5, r5, r8 + 8006320: 9b06 ldr r3, [sp, #24] + 8006322: b26d sxtb r5, r5 + 8006324: 2224 movs r2, #36 ; 0x24 + 8006326: 2194 movs r1, #148 ; 0x94 + 8006328: 4305 orrs r5, r0 + 800632a: 4620 mov r0, r4 + 800632c: f3c3 2a06 ubfx sl, r3, #8, #7 + 8006330: f3c3 39c0 ubfx r9, r3, #15, #1 + 8006334: f001 f88c bl 8007450 <VL53L0X_WrByte> + 8006338: b26d sxtb r5, r5 + 800633a: 4305 orrs r5, r0 + 800633c: 4620 mov r0, r4 + 800633e: f7ff ff4e bl 80061de <VL53L0X_device_read_strobe> + 8006342: b26d sxtb r5, r5 + 8006344: 4305 orrs r5, r0 + 8006346: aa06 add r2, sp, #24 + 8006348: 2190 movs r1, #144 ; 0x90 + 800634a: 4620 mov r0, r4 + 800634c: f001 f8ee bl 800752c <VL53L0X_RdDWord> + 8006350: 9b06 ldr r3, [sp, #24] + 8006352: b26d sxtb r5, r5 + 8006354: ba1b rev r3, r3 + 8006356: 2225 movs r2, #37 ; 0x25 + 8006358: 2194 movs r1, #148 ; 0x94 + 800635a: 4305 orrs r5, r0 + 800635c: 4620 mov r0, r4 + 800635e: 9309 str r3, [sp, #36] ; 0x24 + 8006360: f001 f876 bl 8007450 <VL53L0X_WrByte> + 8006364: b26d sxtb r5, r5 + 8006366: 4305 orrs r5, r0 + 8006368: 4620 mov r0, r4 + 800636a: f7ff ff38 bl 80061de <VL53L0X_device_read_strobe> + 800636e: b26d sxtb r5, r5 + 8006370: 4305 orrs r5, r0 + 8006372: aa06 add r2, sp, #24 + 8006374: 2190 movs r1, #144 ; 0x90 + 8006376: 4620 mov r0, r4 + 8006378: f001 f8d8 bl 800752c <VL53L0X_RdDWord> + 800637c: 9b06 ldr r3, [sp, #24] + 800637e: b26d sxtb r5, r5 + 8006380: 0e1a lsrs r2, r3, #24 + 8006382: 4305 orrs r5, r0 + 8006384: 0c1b lsrs r3, r3, #16 + 8006386: b26d sxtb r5, r5 + 8006388: f88d 2028 strb.w r2, [sp, #40] ; 0x28 + 800638c: f88d 3029 strb.w r3, [sp, #41] ; 0x29 + 8006390: f017 0302 ands.w r3, r7, #2 + 8006394: 9302 str r3, [sp, #8] + 8006396: f000 80db beq.w 8006550 <VL53L0X_get_info_from_device+0x32c> + 800639a: f016 0802 ands.w r8, r6, #2 + 800639e: f040 80d7 bne.w 8006550 <VL53L0X_get_info_from_device+0x32c> + 80063a2: 2202 movs r2, #2 + 80063a4: 2194 movs r1, #148 ; 0x94 + 80063a6: 4620 mov r0, r4 + 80063a8: f001 f852 bl 8007450 <VL53L0X_WrByte> + 80063ac: 9001 str r0, [sp, #4] + 80063ae: 4620 mov r0, r4 + 80063b0: f7ff ff15 bl 80061de <VL53L0X_device_read_strobe> + 80063b4: 9b01 ldr r3, [sp, #4] + 80063b6: f10d 0216 add.w r2, sp, #22 + 80063ba: 4303 orrs r3, r0 + 80063bc: 2190 movs r1, #144 ; 0x90 + 80063be: 4620 mov r0, r4 + 80063c0: 431d orrs r5, r3 + 80063c2: f001 f867 bl 8007494 <VL53L0X_RdByte> + 80063c6: b26d sxtb r5, r5 + 80063c8: 227b movs r2, #123 ; 0x7b + 80063ca: 2194 movs r1, #148 ; 0x94 + 80063cc: 4305 orrs r5, r0 + 80063ce: 4620 mov r0, r4 + 80063d0: f001 f83e bl 8007450 <VL53L0X_WrByte> + 80063d4: b26d sxtb r5, r5 + 80063d6: 4305 orrs r5, r0 + 80063d8: 4620 mov r0, r4 + 80063da: f7ff ff00 bl 80061de <VL53L0X_device_read_strobe> + 80063de: b26d sxtb r5, r5 + 80063e0: 4305 orrs r5, r0 + 80063e2: f10d 0217 add.w r2, sp, #23 + 80063e6: 2190 movs r1, #144 ; 0x90 + 80063e8: 4620 mov r0, r4 + 80063ea: f001 f853 bl 8007494 <VL53L0X_RdByte> + 80063ee: b26d sxtb r5, r5 + 80063f0: 2277 movs r2, #119 ; 0x77 + 80063f2: 2194 movs r1, #148 ; 0x94 + 80063f4: 4305 orrs r5, r0 + 80063f6: 4620 mov r0, r4 + 80063f8: f001 f82a bl 8007450 <VL53L0X_WrByte> + 80063fc: b26d sxtb r5, r5 + 80063fe: 4305 orrs r5, r0 + 8006400: 4620 mov r0, r4 + 8006402: f7ff feec bl 80061de <VL53L0X_device_read_strobe> + 8006406: b26d sxtb r5, r5 + 8006408: 4305 orrs r5, r0 + 800640a: aa06 add r2, sp, #24 + 800640c: 2190 movs r1, #144 ; 0x90 + 800640e: 4620 mov r0, r4 + 8006410: f001 f88c bl 800752c <VL53L0X_RdDWord> + 8006414: 9b06 ldr r3, [sp, #24] + 8006416: 0e5a lsrs r2, r3, #25 + 8006418: f88d 202c strb.w r2, [sp, #44] ; 0x2c + 800641c: f3c3 4286 ubfx r2, r3, #18, #7 + 8006420: f88d 202d strb.w r2, [sp, #45] ; 0x2d + 8006424: f3c3 22c6 ubfx r2, r3, #11, #7 + 8006428: f88d 202e strb.w r2, [sp, #46] ; 0x2e + 800642c: b26d sxtb r5, r5 + 800642e: f3c3 1206 ubfx r2, r3, #4, #7 + 8006432: 00db lsls r3, r3, #3 + 8006434: f003 0378 and.w r3, r3, #120 ; 0x78 + 8006438: 2194 movs r1, #148 ; 0x94 + 800643a: 4305 orrs r5, r0 + 800643c: f88d 202f strb.w r2, [sp, #47] ; 0x2f + 8006440: 4620 mov r0, r4 + 8006442: 2278 movs r2, #120 ; 0x78 + 8006444: f88d 3015 strb.w r3, [sp, #21] + 8006448: f001 f802 bl 8007450 <VL53L0X_WrByte> + 800644c: b26d sxtb r5, r5 + 800644e: 4305 orrs r5, r0 + 8006450: 4620 mov r0, r4 + 8006452: f7ff fec4 bl 80061de <VL53L0X_device_read_strobe> + 8006456: b26d sxtb r5, r5 + 8006458: 4305 orrs r5, r0 + 800645a: aa06 add r2, sp, #24 + 800645c: 2190 movs r1, #144 ; 0x90 + 800645e: 4620 mov r0, r4 + 8006460: f001 f864 bl 800752c <VL53L0X_RdDWord> + 8006464: 9b06 ldr r3, [sp, #24] + 8006466: f89d 2015 ldrb.w r2, [sp, #21] + 800646a: eb02 7253 add.w r2, r2, r3, lsr #29 + 800646e: f88d 2030 strb.w r2, [sp, #48] ; 0x30 + 8006472: f3c3 5286 ubfx r2, r3, #22, #7 + 8006476: f88d 2031 strb.w r2, [sp, #49] ; 0x31 + 800647a: f3c3 32c6 ubfx r2, r3, #15, #7 + 800647e: f88d 2032 strb.w r2, [sp, #50] ; 0x32 + 8006482: f3c3 2206 ubfx r2, r3, #8, #7 + 8006486: f88d 2033 strb.w r2, [sp, #51] ; 0x33 + 800648a: b26d sxtb r5, r5 + 800648c: f3c3 0246 ubfx r2, r3, #1, #7 + 8006490: 019b lsls r3, r3, #6 + 8006492: f003 0340 and.w r3, r3, #64 ; 0x40 + 8006496: 2194 movs r1, #148 ; 0x94 + 8006498: 4305 orrs r5, r0 + 800649a: f88d 2034 strb.w r2, [sp, #52] ; 0x34 + 800649e: 4620 mov r0, r4 + 80064a0: 2279 movs r2, #121 ; 0x79 + 80064a2: f88d 3015 strb.w r3, [sp, #21] + 80064a6: f000 ffd3 bl 8007450 <VL53L0X_WrByte> + 80064aa: b26d sxtb r5, r5 + 80064ac: 4305 orrs r5, r0 + 80064ae: 4620 mov r0, r4 + 80064b0: f7ff fe95 bl 80061de <VL53L0X_device_read_strobe> + 80064b4: b26d sxtb r5, r5 + 80064b6: 4305 orrs r5, r0 + 80064b8: aa06 add r2, sp, #24 + 80064ba: 2190 movs r1, #144 ; 0x90 + 80064bc: 4620 mov r0, r4 + 80064be: f001 f835 bl 800752c <VL53L0X_RdDWord> + 80064c2: 9b06 ldr r3, [sp, #24] + 80064c4: f89d 2015 ldrb.w r2, [sp, #21] + 80064c8: eb02 6293 add.w r2, r2, r3, lsr #26 + 80064cc: f88d 2035 strb.w r2, [sp, #53] ; 0x35 + 80064d0: f3c3 42c6 ubfx r2, r3, #19, #7 + 80064d4: f88d 2036 strb.w r2, [sp, #54] ; 0x36 + 80064d8: f3c3 3206 ubfx r2, r3, #12, #7 + 80064dc: f88d 2037 strb.w r2, [sp, #55] ; 0x37 + 80064e0: b26d sxtb r5, r5 + 80064e2: f3c3 1246 ubfx r2, r3, #5, #7 + 80064e6: 009b lsls r3, r3, #2 + 80064e8: f003 037c and.w r3, r3, #124 ; 0x7c + 80064ec: 2194 movs r1, #148 ; 0x94 + 80064ee: 4305 orrs r5, r0 + 80064f0: f88d 2038 strb.w r2, [sp, #56] ; 0x38 + 80064f4: 4620 mov r0, r4 + 80064f6: 227a movs r2, #122 ; 0x7a + 80064f8: f88d 3015 strb.w r3, [sp, #21] + 80064fc: f000 ffa8 bl 8007450 <VL53L0X_WrByte> + 8006500: b26d sxtb r5, r5 + 8006502: 4305 orrs r5, r0 + 8006504: 4620 mov r0, r4 + 8006506: f7ff fe6a bl 80061de <VL53L0X_device_read_strobe> + 800650a: b26d sxtb r5, r5 + 800650c: 4305 orrs r5, r0 + 800650e: aa06 add r2, sp, #24 + 8006510: 2190 movs r1, #144 ; 0x90 + 8006512: 4620 mov r0, r4 + 8006514: f001 f80a bl 800752c <VL53L0X_RdDWord> + 8006518: 9b06 ldr r3, [sp, #24] + 800651a: f89d 2015 ldrb.w r2, [sp, #21] + 800651e: f88d 803e strb.w r8, [sp, #62] ; 0x3e + 8006522: eb02 7293 add.w r2, r2, r3, lsr #30 + 8006526: f88d 2039 strb.w r2, [sp, #57] ; 0x39 + 800652a: f3c3 52c6 ubfx r2, r3, #23, #7 + 800652e: b26d sxtb r5, r5 + 8006530: f88d 203a strb.w r2, [sp, #58] ; 0x3a + 8006534: f3c3 4206 ubfx r2, r3, #16, #7 + 8006538: 4305 orrs r5, r0 + 800653a: f88d 203b strb.w r2, [sp, #59] ; 0x3b + 800653e: f3c3 2246 ubfx r2, r3, #9, #7 + 8006542: f3c3 0386 ubfx r3, r3, #2, #7 + 8006546: b26d sxtb r5, r5 + 8006548: f88d 203c strb.w r2, [sp, #60] ; 0x3c + 800654c: f88d 303d strb.w r3, [sp, #61] ; 0x3d + 8006550: f017 0304 ands.w r3, r7, #4 + 8006554: 9301 str r3, [sp, #4] + 8006556: f000 80f1 beq.w 800673c <VL53L0X_get_info_from_device+0x518> + 800655a: 0773 lsls r3, r6, #29 + 800655c: f100 80ee bmi.w 800673c <VL53L0X_get_info_from_device+0x518> + 8006560: 227b movs r2, #123 ; 0x7b + 8006562: 2194 movs r1, #148 ; 0x94 + 8006564: 4620 mov r0, r4 + 8006566: f000 ff73 bl 8007450 <VL53L0X_WrByte> + 800656a: 4680 mov r8, r0 + 800656c: 4620 mov r0, r4 + 800656e: f7ff fe36 bl 80061de <VL53L0X_device_read_strobe> + 8006572: aa07 add r2, sp, #28 + 8006574: ea48 0800 orr.w r8, r8, r0 + 8006578: 2190 movs r1, #144 ; 0x90 + 800657a: 4620 mov r0, r4 + 800657c: f000 ffd6 bl 800752c <VL53L0X_RdDWord> + 8006580: ea45 0808 orr.w r8, r5, r8 + 8006584: fa4f f888 sxtb.w r8, r8 + 8006588: ea48 0500 orr.w r5, r8, r0 + 800658c: 227c movs r2, #124 ; 0x7c + 800658e: 2194 movs r1, #148 ; 0x94 + 8006590: 4620 mov r0, r4 + 8006592: f000 ff5d bl 8007450 <VL53L0X_WrByte> + 8006596: b26d sxtb r5, r5 + 8006598: 4305 orrs r5, r0 + 800659a: 4620 mov r0, r4 + 800659c: f7ff fe1f bl 80061de <VL53L0X_device_read_strobe> + 80065a0: b26d sxtb r5, r5 + 80065a2: 4305 orrs r5, r0 + 80065a4: aa08 add r2, sp, #32 + 80065a6: 2190 movs r1, #144 ; 0x90 + 80065a8: 4620 mov r0, r4 + 80065aa: f000 ffbf bl 800752c <VL53L0X_RdDWord> + 80065ae: b26d sxtb r5, r5 + 80065b0: 2273 movs r2, #115 ; 0x73 + 80065b2: 2194 movs r1, #148 ; 0x94 + 80065b4: 4305 orrs r5, r0 + 80065b6: 4620 mov r0, r4 + 80065b8: f000 ff4a bl 8007450 <VL53L0X_WrByte> + 80065bc: b26d sxtb r5, r5 + 80065be: 4305 orrs r5, r0 + 80065c0: 4620 mov r0, r4 + 80065c2: f7ff fe0c bl 80061de <VL53L0X_device_read_strobe> + 80065c6: b26d sxtb r5, r5 + 80065c8: 4305 orrs r5, r0 + 80065ca: aa06 add r2, sp, #24 + 80065cc: 2190 movs r1, #144 ; 0x90 + 80065ce: 4620 mov r0, r4 + 80065d0: f000 ffac bl 800752c <VL53L0X_RdDWord> + 80065d4: 9b06 ldr r3, [sp, #24] + 80065d6: b26d sxtb r5, r5 + 80065d8: 021b lsls r3, r3, #8 + 80065da: 2274 movs r2, #116 ; 0x74 + 80065dc: 2194 movs r1, #148 ; 0x94 + 80065de: 4305 orrs r5, r0 + 80065e0: 4620 mov r0, r4 + 80065e2: fa1f f883 uxth.w r8, r3 + 80065e6: f000 ff33 bl 8007450 <VL53L0X_WrByte> + 80065ea: b26d sxtb r5, r5 + 80065ec: 4305 orrs r5, r0 + 80065ee: 4620 mov r0, r4 + 80065f0: f7ff fdf5 bl 80061de <VL53L0X_device_read_strobe> + 80065f4: b26d sxtb r5, r5 + 80065f6: 4305 orrs r5, r0 + 80065f8: aa06 add r2, sp, #24 + 80065fa: 2190 movs r1, #144 ; 0x90 + 80065fc: 4620 mov r0, r4 + 80065fe: f000 ff95 bl 800752c <VL53L0X_RdDWord> + 8006602: b26d sxtb r5, r5 + 8006604: f89d 301b ldrb.w r3, [sp, #27] + 8006608: 2275 movs r2, #117 ; 0x75 + 800660a: 2194 movs r1, #148 ; 0x94 + 800660c: 4305 orrs r5, r0 + 800660e: 4620 mov r0, r4 + 8006610: ea43 0808 orr.w r8, r3, r8 + 8006614: f000 ff1c bl 8007450 <VL53L0X_WrByte> + 8006618: b26d sxtb r5, r5 + 800661a: 4305 orrs r5, r0 + 800661c: 4620 mov r0, r4 + 800661e: f7ff fdde bl 80061de <VL53L0X_device_read_strobe> + 8006622: b26d sxtb r5, r5 + 8006624: 4305 orrs r5, r0 + 8006626: aa06 add r2, sp, #24 + 8006628: 2190 movs r1, #144 ; 0x90 + 800662a: 4620 mov r0, r4 + 800662c: f000 ff7e bl 800752c <VL53L0X_RdDWord> + 8006630: 9b06 ldr r3, [sp, #24] + 8006632: b26d sxtb r5, r5 + 8006634: 021b lsls r3, r3, #8 + 8006636: b29b uxth r3, r3 + 8006638: 2276 movs r2, #118 ; 0x76 + 800663a: 2194 movs r1, #148 ; 0x94 + 800663c: 4305 orrs r5, r0 + 800663e: 4620 mov r0, r4 + 8006640: 9303 str r3, [sp, #12] + 8006642: f000 ff05 bl 8007450 <VL53L0X_WrByte> + 8006646: b26d sxtb r5, r5 + 8006648: 4305 orrs r5, r0 + 800664a: 4620 mov r0, r4 + 800664c: f7ff fdc7 bl 80061de <VL53L0X_device_read_strobe> + 8006650: b26d sxtb r5, r5 + 8006652: 4305 orrs r5, r0 + 8006654: aa06 add r2, sp, #24 + 8006656: 2190 movs r1, #144 ; 0x90 + 8006658: 4620 mov r0, r4 + 800665a: f000 ff67 bl 800752c <VL53L0X_RdDWord> + 800665e: b26d sxtb r5, r5 + 8006660: f89d 201b ldrb.w r2, [sp, #27] + 8006664: 9b03 ldr r3, [sp, #12] + 8006666: 4305 orrs r5, r0 + 8006668: b26d sxtb r5, r5 + 800666a: 4313 orrs r3, r2 + 800666c: 2200 movs r2, #0 + 800666e: 2181 movs r1, #129 ; 0x81 + 8006670: 4620 mov r0, r4 + 8006672: 9303 str r3, [sp, #12] + 8006674: f000 feec bl 8007450 <VL53L0X_WrByte> + 8006678: 2206 movs r2, #6 + 800667a: 4305 orrs r5, r0 + 800667c: 21ff movs r1, #255 ; 0xff + 800667e: 4620 mov r0, r4 + 8006680: f000 fee6 bl 8007450 <VL53L0X_WrByte> + 8006684: b26d sxtb r5, r5 + 8006686: 4305 orrs r5, r0 + 8006688: f10d 0215 add.w r2, sp, #21 + 800668c: 2183 movs r1, #131 ; 0x83 + 800668e: 4620 mov r0, r4 + 8006690: f000 ff00 bl 8007494 <VL53L0X_RdByte> + 8006694: f89d 2015 ldrb.w r2, [sp, #21] + 8006698: b26d sxtb r5, r5 + 800669a: 4305 orrs r5, r0 + 800669c: f002 02fb and.w r2, r2, #251 ; 0xfb + 80066a0: 2183 movs r1, #131 ; 0x83 + 80066a2: 4620 mov r0, r4 + 80066a4: f000 fed4 bl 8007450 <VL53L0X_WrByte> + 80066a8: b26d sxtb r5, r5 + 80066aa: 4305 orrs r5, r0 + 80066ac: 2201 movs r2, #1 + 80066ae: 21ff movs r1, #255 ; 0xff + 80066b0: 4620 mov r0, r4 + 80066b2: f000 fecd bl 8007450 <VL53L0X_WrByte> + 80066b6: b26d sxtb r5, r5 + 80066b8: 4305 orrs r5, r0 + 80066ba: 2201 movs r2, #1 + 80066bc: 2100 movs r1, #0 + 80066be: 4620 mov r0, r4 + 80066c0: f000 fec6 bl 8007450 <VL53L0X_WrByte> + 80066c4: b26d sxtb r5, r5 + 80066c6: 4305 orrs r5, r0 + 80066c8: 2200 movs r2, #0 + 80066ca: 21ff movs r1, #255 ; 0xff + 80066cc: 4620 mov r0, r4 + 80066ce: f000 febf bl 8007450 <VL53L0X_WrByte> + 80066d2: b26d sxtb r5, r5 + 80066d4: 4305 orrs r5, r0 + 80066d6: 2200 movs r2, #0 + 80066d8: 2180 movs r1, #128 ; 0x80 + 80066da: 4620 mov r0, r4 + 80066dc: f000 feb8 bl 8007450 <VL53L0X_WrByte> + 80066e0: b26d sxtb r5, r5 + 80066e2: 4305 orrs r5, r0 + 80066e4: b26d sxtb r5, r5 + 80066e6: 9b03 ldr r3, [sp, #12] + 80066e8: b9fd cbnz r5, 800672a <VL53L0X_get_info_from_device+0x506> + 80066ea: f1bb 0f00 cmp.w fp, #0 + 80066ee: d129 bne.n 8006744 <VL53L0X_get_info_from_device+0x520> + 80066f0: 9a02 ldr r2, [sp, #8] + 80066f2: bbaa cbnz r2, 8006760 <VL53L0X_get_info_from_device+0x53c> + 80066f4: 9a01 ldr r2, [sp, #4] + 80066f6: b1aa cbz r2, 8006724 <VL53L0X_get_info_from_device+0x500> + 80066f8: 0772 lsls r2, r6, #29 + 80066fa: d413 bmi.n 8006724 <VL53L0X_get_info_from_device+0x500> + 80066fc: 9a07 ldr r2, [sp, #28] + 80066fe: f8c4 2118 str.w r2, [r4, #280] ; 0x118 + 8006702: 9a08 ldr r2, [sp, #32] + 8006704: f8c4 211c str.w r2, [r4, #284] ; 0x11c + 8006708: ea4f 2248 mov.w r2, r8, lsl #9 + 800670c: f8c4 2120 str.w r2, [r4, #288] ; 0x120 + 8006710: b13b cbz r3, 8006722 <VL53L0X_get_info_from_device+0x4fe> + 8006712: f5a3 53c8 sub.w r3, r3, #6400 ; 0x1900 + 8006716: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800671a: 4353 muls r3, r2 + 800671c: 091b lsrs r3, r3, #4 + 800671e: 425b negs r3, r3 + 8006720: b21b sxth r3, r3 + 8006722: 60e3 str r3, [r4, #12] + 8006724: 433e orrs r6, r7 + 8006726: f884 60f0 strb.w r6, [r4, #240] ; 0xf0 + 800672a: 4628 mov r0, r5 + 800672c: b011 add sp, #68 ; 0x44 + 800672e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8006732: 46d9 mov r9, fp + 8006734: 46da mov sl, fp + 8006736: e62b b.n 8006390 <VL53L0X_get_info_from_device+0x16c> + 8006738: 46ca mov sl, r9 + 800673a: e629 b.n 8006390 <VL53L0X_get_info_from_device+0x16c> + 800673c: f04f 0800 mov.w r8, #0 + 8006740: 4643 mov r3, r8 + 8006742: e793 b.n 800666c <VL53L0X_get_info_from_device+0x448> + 8006744: 07f0 lsls r0, r6, #31 + 8006746: d4d3 bmi.n 80066f0 <VL53L0X_get_info_from_device+0x4cc> + 8006748: 9809 ldr r0, [sp, #36] ; 0x24 + 800674a: f8bd 2028 ldrh.w r2, [sp, #40] ; 0x28 + 800674e: f884 a113 strb.w sl, [r4, #275] ; 0x113 + 8006752: f884 9114 strb.w r9, [r4, #276] ; 0x114 + 8006756: f8c4 012a str.w r0, [r4, #298] ; 0x12a + 800675a: f8a4 212e strh.w r2, [r4, #302] ; 0x12e + 800675e: e7c7 b.n 80066f0 <VL53L0X_get_info_from_device+0x4cc> + 8006760: 07b1 lsls r1, r6, #30 + 8006762: d4c7 bmi.n 80066f4 <VL53L0X_get_info_from_device+0x4d0> + 8006764: f89d 2016 ldrb.w r2, [sp, #22] + 8006768: f884 20f1 strb.w r2, [r4, #241] ; 0xf1 + 800676c: f89d 2017 ldrb.w r2, [sp, #23] + 8006770: f884 20f2 strb.w r2, [r4, #242] ; 0xf2 + 8006774: a90b add r1, sp, #44 ; 0x2c + 8006776: f104 00f3 add.w r0, r4, #243 ; 0xf3 + 800677a: 9302 str r3, [sp, #8] + 800677c: f00d fe68 bl 8014450 <strcpy> + 8006780: 9b02 ldr r3, [sp, #8] + 8006782: e7b7 b.n 80066f4 <VL53L0X_get_info_from_device+0x4d0> + 8006784: 464d mov r5, r9 + 8006786: e7d0 b.n 800672a <VL53L0X_get_info_from_device+0x506> + +08006788 <VL53L0X_encode_timeout>: + 8006788: b150 cbz r0, 80067a0 <VL53L0X_encode_timeout+0x18> + 800678a: 3801 subs r0, #1 + 800678c: 2300 movs r3, #0 + 800678e: f030 01ff bics.w r1, r0, #255 ; 0xff + 8006792: b29a uxth r2, r3 + 8006794: f103 0301 add.w r3, r3, #1 + 8006798: d103 bne.n 80067a2 <VL53L0X_encode_timeout+0x1a> + 800679a: eb00 2002 add.w r0, r0, r2, lsl #8 + 800679e: b280 uxth r0, r0 + 80067a0: 4770 bx lr + 80067a2: 0840 lsrs r0, r0, #1 + 80067a4: e7f3 b.n 800678e <VL53L0X_encode_timeout+0x6> + +080067a6 <VL53L0X_decode_timeout>: + 80067a6: b2c3 uxtb r3, r0 + 80067a8: 0a00 lsrs r0, r0, #8 + 80067aa: fa03 f000 lsl.w r0, r3, r0 + 80067ae: 3001 adds r0, #1 + 80067b0: 4770 bx lr + ... + +080067b4 <VL53L0X_calc_timeout_mclks>: + 80067b4: 4b08 ldr r3, [pc, #32] ; (80067d8 <VL53L0X_calc_timeout_mclks+0x24>) + 80067b6: 435a muls r2, r3 + 80067b8: f44f 737a mov.w r3, #1000 ; 0x3e8 + 80067bc: f502 72fa add.w r2, r2, #500 ; 0x1f4 + 80067c0: f44f 60fa mov.w r0, #2000 ; 0x7d0 + 80067c4: fbb2 f0f0 udiv r0, r2, r0 + 80067c8: fbb2 f2f3 udiv r2, r2, r3 + 80067cc: fb03 0001 mla r0, r3, r1, r0 + 80067d0: fbb0 f0f2 udiv r0, r0, r2 + 80067d4: 4770 bx lr + 80067d6: bf00 nop + 80067d8: 003a2f00 .word 0x003a2f00 + +080067dc <VL53L0X_calc_timeout_us>: + 80067dc: 4b06 ldr r3, [pc, #24] ; (80067f8 <VL53L0X_calc_timeout_us+0x1c>) + 80067de: 435a muls r2, r3 + 80067e0: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80067e4: f502 72fa add.w r2, r2, #500 ; 0x1f4 + 80067e8: fbb2 f2f0 udiv r2, r2, r0 + 80067ec: 434a muls r2, r1 + 80067ee: f502 72fa add.w r2, r2, #500 ; 0x1f4 + 80067f2: fbb2 f0f0 udiv r0, r2, r0 + 80067f6: 4770 bx lr + 80067f8: 003a2f00 .word 0x003a2f00 + +080067fc <get_sequence_step_timeout>: + 80067fc: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} + 8006800: 2902 cmp r1, #2 + 8006802: f04f 0500 mov.w r5, #0 + 8006806: 4607 mov r7, r0 + 8006808: 4616 mov r6, r2 + 800680a: f88d 5003 strb.w r5, [sp, #3] + 800680e: f8ad 5004 strh.w r5, [sp, #4] + 8006812: d81c bhi.n 800684e <get_sequence_step_timeout+0x52> + 8006814: f10d 0202 add.w r2, sp, #2 + 8006818: 4629 mov r1, r5 + 800681a: f7fe fba1 bl 8004f60 <VL53L0X_GetVcselPulsePeriod> + 800681e: 4604 mov r4, r0 + 8006820: b930 cbnz r0, 8006830 <get_sequence_step_timeout+0x34> + 8006822: f10d 0203 add.w r2, sp, #3 + 8006826: 2146 movs r1, #70 ; 0x46 + 8006828: 4638 mov r0, r7 + 800682a: f000 fe33 bl 8007494 <VL53L0X_RdByte> + 800682e: 4604 mov r4, r0 + 8006830: f89d 0003 ldrb.w r0, [sp, #3] + 8006834: f7ff ffb7 bl 80067a6 <VL53L0X_decode_timeout> + 8006838: b281 uxth r1, r0 + 800683a: f89d 2002 ldrb.w r2, [sp, #2] + 800683e: 4638 mov r0, r7 + 8006840: f7ff ffcc bl 80067dc <VL53L0X_calc_timeout_us> + 8006844: 6030 str r0, [r6, #0] + 8006846: 4620 mov r0, r4 + 8006848: b004 add sp, #16 + 800684a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800684e: 2903 cmp r1, #3 + 8006850: d118 bne.n 8006884 <get_sequence_step_timeout+0x88> + 8006852: f10d 0202 add.w r2, sp, #2 + 8006856: 4629 mov r1, r5 + 8006858: f7fe fb82 bl 8004f60 <VL53L0X_GetVcselPulsePeriod> + 800685c: 4604 mov r4, r0 + 800685e: 2800 cmp r0, #0 + 8006860: d146 bne.n 80068f0 <get_sequence_step_timeout+0xf4> + 8006862: 4601 mov r1, r0 + 8006864: f10d 0202 add.w r2, sp, #2 + 8006868: 4638 mov r0, r7 + 800686a: f7fe fb79 bl 8004f60 <VL53L0X_GetVcselPulsePeriod> + 800686e: 4604 mov r4, r0 + 8006870: b928 cbnz r0, 800687e <get_sequence_step_timeout+0x82> + 8006872: aa01 add r2, sp, #4 + 8006874: 2151 movs r1, #81 ; 0x51 + 8006876: 4638 mov r0, r7 + 8006878: f000 fe38 bl 80074ec <VL53L0X_RdWord> + 800687c: 4604 mov r4, r0 + 800687e: f8bd 0004 ldrh.w r0, [sp, #4] + 8006882: e7d7 b.n 8006834 <get_sequence_step_timeout+0x38> + 8006884: 2904 cmp r1, #4 + 8006886: d135 bne.n 80068f4 <get_sequence_step_timeout+0xf8> + 8006888: a902 add r1, sp, #8 + 800688a: f7fe fbbd bl 8005008 <VL53L0X_GetSequenceStepEnables> + 800688e: f89d 300b ldrb.w r3, [sp, #11] + 8006892: b1ab cbz r3, 80068c0 <get_sequence_step_timeout+0xc4> + 8006894: f10d 0202 add.w r2, sp, #2 + 8006898: 4629 mov r1, r5 + 800689a: 4638 mov r0, r7 + 800689c: f7fe fb60 bl 8004f60 <VL53L0X_GetVcselPulsePeriod> + 80068a0: 4604 mov r4, r0 + 80068a2: b958 cbnz r0, 80068bc <get_sequence_step_timeout+0xc0> + 80068a4: aa01 add r2, sp, #4 + 80068a6: 2151 movs r1, #81 ; 0x51 + 80068a8: 4638 mov r0, r7 + 80068aa: f000 fe1f bl 80074ec <VL53L0X_RdWord> + 80068ae: 4604 mov r4, r0 + 80068b0: f8bd 0004 ldrh.w r0, [sp, #4] + 80068b4: f7ff ff77 bl 80067a6 <VL53L0X_decode_timeout> + 80068b8: b285 uxth r5, r0 + 80068ba: b114 cbz r4, 80068c2 <get_sequence_step_timeout+0xc6> + 80068bc: 2000 movs r0, #0 + 80068be: e015 b.n 80068ec <get_sequence_step_timeout+0xf0> + 80068c0: 461d mov r5, r3 + 80068c2: f10d 0202 add.w r2, sp, #2 + 80068c6: 2101 movs r1, #1 + 80068c8: 4638 mov r0, r7 + 80068ca: f7fe fb49 bl 8004f60 <VL53L0X_GetVcselPulsePeriod> + 80068ce: 4604 mov r4, r0 + 80068d0: 2800 cmp r0, #0 + 80068d2: d1f3 bne.n 80068bc <get_sequence_step_timeout+0xc0> + 80068d4: f10d 0206 add.w r2, sp, #6 + 80068d8: 2171 movs r1, #113 ; 0x71 + 80068da: 4638 mov r0, r7 + 80068dc: f000 fe06 bl 80074ec <VL53L0X_RdWord> + 80068e0: 4604 mov r4, r0 + 80068e2: f8bd 0006 ldrh.w r0, [sp, #6] + 80068e6: f7ff ff5e bl 80067a6 <VL53L0X_decode_timeout> + 80068ea: b280 uxth r0, r0 + 80068ec: 1b40 subs r0, r0, r5 + 80068ee: e7a3 b.n 8006838 <get_sequence_step_timeout+0x3c> + 80068f0: 4628 mov r0, r5 + 80068f2: e7a7 b.n 8006844 <get_sequence_step_timeout+0x48> + 80068f4: 4628 mov r0, r5 + 80068f6: 462c mov r4, r5 + 80068f8: e7a4 b.n 8006844 <get_sequence_step_timeout+0x48> + +080068fa <set_sequence_step_timeout>: + 80068fa: b5f0 push {r4, r5, r6, r7, lr} + 80068fc: 2902 cmp r1, #2 + 80068fe: b085 sub sp, #20 + 8006900: 4605 mov r5, r0 + 8006902: 4616 mov r6, r2 + 8006904: d81e bhi.n 8006944 <set_sequence_step_timeout+0x4a> + 8006906: f10d 0205 add.w r2, sp, #5 + 800690a: 2100 movs r1, #0 + 800690c: f7fe fb28 bl 8004f60 <VL53L0X_GetVcselPulsePeriod> + 8006910: 4604 mov r4, r0 + 8006912: b9a0 cbnz r0, 800693e <set_sequence_step_timeout+0x44> + 8006914: f89d 2005 ldrb.w r2, [sp, #5] + 8006918: 4631 mov r1, r6 + 800691a: 4628 mov r0, r5 + 800691c: f7ff ff4a bl 80067b4 <VL53L0X_calc_timeout_mclks> + 8006920: b283 uxth r3, r0 + 8006922: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8006926: bf9a itte ls + 8006928: f100 32ff addls.w r2, r0, #4294967295 + 800692c: b2d2 uxtbls r2, r2 + 800692e: 22ff movhi r2, #255 ; 0xff + 8006930: f8a5 20d8 strh.w r2, [r5, #216] ; 0xd8 + 8006934: 2146 movs r1, #70 ; 0x46 + 8006936: 4628 mov r0, r5 + 8006938: f000 fd8a bl 8007450 <VL53L0X_WrByte> + 800693c: 4604 mov r4, r0 + 800693e: 4620 mov r0, r4 + 8006940: b005 add sp, #20 + 8006942: bdf0 pop {r4, r5, r6, r7, pc} + 8006944: 2903 cmp r1, #3 + 8006946: d11f bne.n 8006988 <set_sequence_step_timeout+0x8e> + 8006948: f10d 0205 add.w r2, sp, #5 + 800694c: 2100 movs r1, #0 + 800694e: f7fe fb07 bl 8004f60 <VL53L0X_GetVcselPulsePeriod> + 8006952: f89d 2005 ldrb.w r2, [sp, #5] + 8006956: 4631 mov r1, r6 + 8006958: 4604 mov r4, r0 + 800695a: 4628 mov r0, r5 + 800695c: f7ff ff2a bl 80067b4 <VL53L0X_calc_timeout_mclks> + 8006960: b280 uxth r0, r0 + 8006962: f7ff ff11 bl 8006788 <VL53L0X_encode_timeout> + 8006966: 4602 mov r2, r0 + 8006968: f8ad 0006 strh.w r0, [sp, #6] + 800696c: f8a5 00d8 strh.w r0, [r5, #216] ; 0xd8 + 8006970: 2c00 cmp r4, #0 + 8006972: d1e4 bne.n 800693e <set_sequence_step_timeout+0x44> + 8006974: 2151 movs r1, #81 ; 0x51 + 8006976: 4628 mov r0, r5 + 8006978: f000 fd7a bl 8007470 <VL53L0X_WrWord> + 800697c: 4604 mov r4, r0 + 800697e: 2800 cmp r0, #0 + 8006980: d1dd bne.n 800693e <set_sequence_step_timeout+0x44> + 8006982: f8c5 60e4 str.w r6, [r5, #228] ; 0xe4 + 8006986: e7da b.n 800693e <set_sequence_step_timeout+0x44> + 8006988: 2904 cmp r1, #4 + 800698a: d139 bne.n 8006a00 <set_sequence_step_timeout+0x106> + 800698c: a902 add r1, sp, #8 + 800698e: f7fe fb3b bl 8005008 <VL53L0X_GetSequenceStepEnables> + 8006992: f89d 700b ldrb.w r7, [sp, #11] + 8006996: b1b7 cbz r7, 80069c6 <set_sequence_step_timeout+0xcc> + 8006998: f10d 0205 add.w r2, sp, #5 + 800699c: 2100 movs r1, #0 + 800699e: 4628 mov r0, r5 + 80069a0: f7fe fade bl 8004f60 <VL53L0X_GetVcselPulsePeriod> + 80069a4: 4604 mov r4, r0 + 80069a6: 2800 cmp r0, #0 + 80069a8: d1c9 bne.n 800693e <set_sequence_step_timeout+0x44> + 80069aa: f10d 0206 add.w r2, sp, #6 + 80069ae: 2151 movs r1, #81 ; 0x51 + 80069b0: 4628 mov r0, r5 + 80069b2: f000 fd9b bl 80074ec <VL53L0X_RdWord> + 80069b6: 4604 mov r4, r0 + 80069b8: f8bd 0006 ldrh.w r0, [sp, #6] + 80069bc: f7ff fef3 bl 80067a6 <VL53L0X_decode_timeout> + 80069c0: b287 uxth r7, r0 + 80069c2: 2c00 cmp r4, #0 + 80069c4: d1bb bne.n 800693e <set_sequence_step_timeout+0x44> + 80069c6: f10d 0205 add.w r2, sp, #5 + 80069ca: 2101 movs r1, #1 + 80069cc: 4628 mov r0, r5 + 80069ce: f7fe fac7 bl 8004f60 <VL53L0X_GetVcselPulsePeriod> + 80069d2: 4604 mov r4, r0 + 80069d4: 2800 cmp r0, #0 + 80069d6: d1b2 bne.n 800693e <set_sequence_step_timeout+0x44> + 80069d8: f89d 2005 ldrb.w r2, [sp, #5] + 80069dc: 4631 mov r1, r6 + 80069de: 4628 mov r0, r5 + 80069e0: f7ff fee8 bl 80067b4 <VL53L0X_calc_timeout_mclks> + 80069e4: 4438 add r0, r7 + 80069e6: f7ff fecf bl 8006788 <VL53L0X_encode_timeout> + 80069ea: 2171 movs r1, #113 ; 0x71 + 80069ec: 4602 mov r2, r0 + 80069ee: 4628 mov r0, r5 + 80069f0: f000 fd3e bl 8007470 <VL53L0X_WrWord> + 80069f4: 4604 mov r4, r0 + 80069f6: 2800 cmp r0, #0 + 80069f8: d1a1 bne.n 800693e <set_sequence_step_timeout+0x44> + 80069fa: f8c5 60dc str.w r6, [r5, #220] ; 0xdc + 80069fe: e79e b.n 800693e <set_sequence_step_timeout+0x44> + 8006a00: f06f 0403 mvn.w r4, #3 + 8006a04: e79b b.n 800693e <set_sequence_step_timeout+0x44> + +08006a06 <VL53L0X_set_vcsel_pulse_period>: + 8006a06: b5f0 push {r4, r5, r6, r7, lr} + 8006a08: b085 sub sp, #20 + 8006a0a: 2300 movs r3, #0 + 8006a0c: f88d 3003 strb.w r3, [sp, #3] + 8006a10: 07d3 lsls r3, r2, #31 + 8006a12: 4605 mov r5, r0 + 8006a14: 460f mov r7, r1 + 8006a16: 4616 mov r6, r2 + 8006a18: d405 bmi.n 8006a26 <VL53L0X_set_vcsel_pulse_period+0x20> + 8006a1a: b939 cbnz r1, 8006a2c <VL53L0X_set_vcsel_pulse_period+0x26> + 8006a1c: f1a2 030c sub.w r3, r2, #12 + 8006a20: b2da uxtb r2, r3 + 8006a22: 2a06 cmp r2, #6 + 8006a24: d911 bls.n 8006a4a <VL53L0X_set_vcsel_pulse_period+0x44> + 8006a26: f06f 0003 mvn.w r0, #3 + 8006a2a: e0e6 b.n 8006bfa <VL53L0X_set_vcsel_pulse_period+0x1f4> + 8006a2c: 2901 cmp r1, #1 + 8006a2e: d121 bne.n 8006a74 <VL53L0X_set_vcsel_pulse_period+0x6e> + 8006a30: f1a2 0308 sub.w r3, r2, #8 + 8006a34: b2da uxtb r2, r3 + 8006a36: 2a06 cmp r2, #6 + 8006a38: d8f5 bhi.n 8006a26 <VL53L0X_set_vcsel_pulse_period+0x20> + 8006a3a: 2b06 cmp r3, #6 + 8006a3c: d81a bhi.n 8006a74 <VL53L0X_set_vcsel_pulse_period+0x6e> + 8006a3e: e8df f003 tbb [pc, r3] + 8006a42: 193b .short 0x193b + 8006a44: 198a1969 .word 0x198a1969 + 8006a48: 9d .byte 0x9d + 8006a49: 00 .byte 0x00 + 8006a4a: 2b06 cmp r3, #6 + 8006a4c: d812 bhi.n 8006a74 <VL53L0X_set_vcsel_pulse_period+0x6e> + 8006a4e: e8df f003 tbb [pc, r3] + 8006a52: 1104 .short 0x1104 + 8006a54: 112f112d .word 0x112f112d + 8006a58: 31 .byte 0x31 + 8006a59: 00 .byte 0x00 + 8006a5a: 2218 movs r2, #24 + 8006a5c: 2157 movs r1, #87 ; 0x57 + 8006a5e: 4628 mov r0, r5 + 8006a60: f000 fcf6 bl 8007450 <VL53L0X_WrByte> + 8006a64: 2208 movs r2, #8 + 8006a66: 2156 movs r1, #86 ; 0x56 + 8006a68: 4628 mov r0, r5 + 8006a6a: f000 fcf1 bl 8007450 <VL53L0X_WrByte> + 8006a6e: 2800 cmp r0, #0 + 8006a70: f040 80c3 bne.w 8006bfa <VL53L0X_set_vcsel_pulse_period+0x1f4> + 8006a74: 0874 lsrs r4, r6, #1 + 8006a76: 3c01 subs r4, #1 + 8006a78: b2e4 uxtb r4, r4 + 8006a7a: 2f00 cmp r7, #0 + 8006a7c: f000 8091 beq.w 8006ba2 <VL53L0X_set_vcsel_pulse_period+0x19c> + 8006a80: 2f01 cmp r7, #1 + 8006a82: d1d0 bne.n 8006a26 <VL53L0X_set_vcsel_pulse_period+0x20> + 8006a84: aa01 add r2, sp, #4 + 8006a86: 2104 movs r1, #4 + 8006a88: 4628 mov r0, r5 + 8006a8a: f7ff feb7 bl 80067fc <get_sequence_step_timeout> + 8006a8e: b950 cbnz r0, 8006aa6 <VL53L0X_set_vcsel_pulse_period+0xa0> + 8006a90: 4622 mov r2, r4 + 8006a92: 2170 movs r1, #112 ; 0x70 + 8006a94: 4628 mov r0, r5 + 8006a96: f000 fcdb bl 8007450 <VL53L0X_WrByte> + 8006a9a: b920 cbnz r0, 8006aa6 <VL53L0X_set_vcsel_pulse_period+0xa0> + 8006a9c: 9a01 ldr r2, [sp, #4] + 8006a9e: 2104 movs r1, #4 + 8006aa0: 4628 mov r0, r5 + 8006aa2: f7ff ff2a bl 80068fa <set_sequence_step_timeout> + 8006aa6: f885 60e0 strb.w r6, [r5, #224] ; 0xe0 + 8006aaa: e099 b.n 8006be0 <VL53L0X_set_vcsel_pulse_period+0x1da> + 8006aac: 2230 movs r2, #48 ; 0x30 + 8006aae: e7d5 b.n 8006a5c <VL53L0X_set_vcsel_pulse_period+0x56> + 8006ab0: 2240 movs r2, #64 ; 0x40 + 8006ab2: e7d3 b.n 8006a5c <VL53L0X_set_vcsel_pulse_period+0x56> + 8006ab4: 2250 movs r2, #80 ; 0x50 + 8006ab6: e7d1 b.n 8006a5c <VL53L0X_set_vcsel_pulse_period+0x56> + 8006ab8: 2210 movs r2, #16 + 8006aba: 2148 movs r1, #72 ; 0x48 + 8006abc: f000 fcc8 bl 8007450 <VL53L0X_WrByte> + 8006ac0: 2208 movs r2, #8 + 8006ac2: 2147 movs r1, #71 ; 0x47 + 8006ac4: 4628 mov r0, r5 + 8006ac6: f000 fcc3 bl 8007450 <VL53L0X_WrByte> + 8006aca: 2202 movs r2, #2 + 8006acc: 4604 mov r4, r0 + 8006ace: 2132 movs r1, #50 ; 0x32 + 8006ad0: 4628 mov r0, r5 + 8006ad2: f000 fcbd bl 8007450 <VL53L0X_WrByte> + 8006ad6: 220c movs r2, #12 + 8006ad8: 4304 orrs r4, r0 + 8006ada: 2130 movs r1, #48 ; 0x30 + 8006adc: 4628 mov r0, r5 + 8006ade: f000 fcb7 bl 8007450 <VL53L0X_WrByte> + 8006ae2: b264 sxtb r4, r4 + 8006ae4: 4304 orrs r4, r0 + 8006ae6: 2201 movs r2, #1 + 8006ae8: 21ff movs r1, #255 ; 0xff + 8006aea: 4628 mov r0, r5 + 8006aec: f000 fcb0 bl 8007450 <VL53L0X_WrByte> + 8006af0: b264 sxtb r4, r4 + 8006af2: 4304 orrs r4, r0 + 8006af4: b264 sxtb r4, r4 + 8006af6: 2230 movs r2, #48 ; 0x30 + 8006af8: 2130 movs r1, #48 ; 0x30 + 8006afa: 4628 mov r0, r5 + 8006afc: f000 fca8 bl 8007450 <VL53L0X_WrByte> + 8006b00: 2200 movs r2, #0 + 8006b02: 4304 orrs r4, r0 + 8006b04: 21ff movs r1, #255 ; 0xff + 8006b06: 4628 mov r0, r5 + 8006b08: f000 fca2 bl 8007450 <VL53L0X_WrByte> + 8006b0c: b264 sxtb r4, r4 + 8006b0e: 4320 orrs r0, r4 + 8006b10: b240 sxtb r0, r0 + 8006b12: e7ac b.n 8006a6e <VL53L0X_set_vcsel_pulse_period+0x68> + 8006b14: 2228 movs r2, #40 ; 0x28 + 8006b16: 2148 movs r1, #72 ; 0x48 + 8006b18: f000 fc9a bl 8007450 <VL53L0X_WrByte> + 8006b1c: 2208 movs r2, #8 + 8006b1e: 2147 movs r1, #71 ; 0x47 + 8006b20: 4628 mov r0, r5 + 8006b22: f000 fc95 bl 8007450 <VL53L0X_WrByte> + 8006b26: 2203 movs r2, #3 + 8006b28: 4604 mov r4, r0 + 8006b2a: 2132 movs r1, #50 ; 0x32 + 8006b2c: 4628 mov r0, r5 + 8006b2e: f000 fc8f bl 8007450 <VL53L0X_WrByte> + 8006b32: 4304 orrs r4, r0 + 8006b34: b264 sxtb r4, r4 + 8006b36: 2209 movs r2, #9 + 8006b38: 2130 movs r1, #48 ; 0x30 + 8006b3a: 4628 mov r0, r5 + 8006b3c: f000 fc88 bl 8007450 <VL53L0X_WrByte> + 8006b40: 2201 movs r2, #1 + 8006b42: 4304 orrs r4, r0 + 8006b44: 21ff movs r1, #255 ; 0xff + 8006b46: 4628 mov r0, r5 + 8006b48: f000 fc82 bl 8007450 <VL53L0X_WrByte> + 8006b4c: b264 sxtb r4, r4 + 8006b4e: 4304 orrs r4, r0 + 8006b50: b264 sxtb r4, r4 + 8006b52: 2220 movs r2, #32 + 8006b54: e7d0 b.n 8006af8 <VL53L0X_set_vcsel_pulse_period+0xf2> + 8006b56: 2238 movs r2, #56 ; 0x38 + 8006b58: 2148 movs r1, #72 ; 0x48 + 8006b5a: f000 fc79 bl 8007450 <VL53L0X_WrByte> + 8006b5e: 2208 movs r2, #8 + 8006b60: 2147 movs r1, #71 ; 0x47 + 8006b62: 4628 mov r0, r5 + 8006b64: f000 fc74 bl 8007450 <VL53L0X_WrByte> + 8006b68: 2203 movs r2, #3 + 8006b6a: 4604 mov r4, r0 + 8006b6c: 2132 movs r1, #50 ; 0x32 + 8006b6e: 4628 mov r0, r5 + 8006b70: f000 fc6e bl 8007450 <VL53L0X_WrByte> + 8006b74: 4304 orrs r4, r0 + 8006b76: b264 sxtb r4, r4 + 8006b78: 2208 movs r2, #8 + 8006b7a: e7dd b.n 8006b38 <VL53L0X_set_vcsel_pulse_period+0x132> + 8006b7c: 2248 movs r2, #72 ; 0x48 + 8006b7e: 4611 mov r1, r2 + 8006b80: f000 fc66 bl 8007450 <VL53L0X_WrByte> + 8006b84: 2208 movs r2, #8 + 8006b86: 2147 movs r1, #71 ; 0x47 + 8006b88: 4628 mov r0, r5 + 8006b8a: f000 fc61 bl 8007450 <VL53L0X_WrByte> + 8006b8e: 2203 movs r2, #3 + 8006b90: 4604 mov r4, r0 + 8006b92: 2132 movs r1, #50 ; 0x32 + 8006b94: 4628 mov r0, r5 + 8006b96: f000 fc5b bl 8007450 <VL53L0X_WrByte> + 8006b9a: 4304 orrs r4, r0 + 8006b9c: b264 sxtb r4, r4 + 8006b9e: 2207 movs r2, #7 + 8006ba0: e7ca b.n 8006b38 <VL53L0X_set_vcsel_pulse_period+0x132> + 8006ba2: aa02 add r2, sp, #8 + 8006ba4: 2103 movs r1, #3 + 8006ba6: 4628 mov r0, r5 + 8006ba8: f7ff fe28 bl 80067fc <get_sequence_step_timeout> + 8006bac: b9b0 cbnz r0, 8006bdc <VL53L0X_set_vcsel_pulse_period+0x1d6> + 8006bae: aa03 add r2, sp, #12 + 8006bb0: 2102 movs r1, #2 + 8006bb2: 4628 mov r0, r5 + 8006bb4: f7ff fe22 bl 80067fc <get_sequence_step_timeout> + 8006bb8: b980 cbnz r0, 8006bdc <VL53L0X_set_vcsel_pulse_period+0x1d6> + 8006bba: 4622 mov r2, r4 + 8006bbc: 2150 movs r1, #80 ; 0x50 + 8006bbe: 4628 mov r0, r5 + 8006bc0: f000 fc46 bl 8007450 <VL53L0X_WrByte> + 8006bc4: b950 cbnz r0, 8006bdc <VL53L0X_set_vcsel_pulse_period+0x1d6> + 8006bc6: 9a02 ldr r2, [sp, #8] + 8006bc8: 2103 movs r1, #3 + 8006bca: 4628 mov r0, r5 + 8006bcc: f7ff fe95 bl 80068fa <set_sequence_step_timeout> + 8006bd0: b920 cbnz r0, 8006bdc <VL53L0X_set_vcsel_pulse_period+0x1d6> + 8006bd2: 9a03 ldr r2, [sp, #12] + 8006bd4: 2102 movs r1, #2 + 8006bd6: 4628 mov r0, r5 + 8006bd8: f7ff fe8f bl 80068fa <set_sequence_step_timeout> + 8006bdc: f885 60e8 strb.w r6, [r5, #232] ; 0xe8 + 8006be0: b958 cbnz r0, 8006bfa <VL53L0X_set_vcsel_pulse_period+0x1f4> + 8006be2: 6969 ldr r1, [r5, #20] + 8006be4: 4628 mov r0, r5 + 8006be6: f7fe f9b7 bl 8004f58 <VL53L0X_SetMeasurementTimingBudgetMicroSeconds> + 8006bea: b930 cbnz r0, 8006bfa <VL53L0X_set_vcsel_pulse_period+0x1f4> + 8006bec: 4602 mov r2, r0 + 8006bee: 2301 movs r3, #1 + 8006bf0: f10d 0103 add.w r1, sp, #3 + 8006bf4: 4628 mov r0, r5 + 8006bf6: f7ff f93c bl 8005e72 <VL53L0X_perform_phase_calibration> + 8006bfa: b005 add sp, #20 + 8006bfc: bdf0 pop {r4, r5, r6, r7, pc} + +08006bfe <VL53L0X_get_vcsel_pulse_period>: + 8006bfe: b513 push {r0, r1, r4, lr} + 8006c00: 4614 mov r4, r2 + 8006c02: b129 cbz r1, 8006c10 <VL53L0X_get_vcsel_pulse_period+0x12> + 8006c04: 2901 cmp r1, #1 + 8006c06: d010 beq.n 8006c2a <VL53L0X_get_vcsel_pulse_period+0x2c> + 8006c08: f06f 0003 mvn.w r0, #3 + 8006c0c: b002 add sp, #8 + 8006c0e: bd10 pop {r4, pc} + 8006c10: f10d 0207 add.w r2, sp, #7 + 8006c14: 2150 movs r1, #80 ; 0x50 + 8006c16: f000 fc3d bl 8007494 <VL53L0X_RdByte> + 8006c1a: 2800 cmp r0, #0 + 8006c1c: d1f6 bne.n 8006c0c <VL53L0X_get_vcsel_pulse_period+0xe> + 8006c1e: f89d 3007 ldrb.w r3, [sp, #7] + 8006c22: 3301 adds r3, #1 + 8006c24: 005b lsls r3, r3, #1 + 8006c26: 7023 strb r3, [r4, #0] + 8006c28: e7f0 b.n 8006c0c <VL53L0X_get_vcsel_pulse_period+0xe> + 8006c2a: f10d 0207 add.w r2, sp, #7 + 8006c2e: 2170 movs r1, #112 ; 0x70 + 8006c30: e7f1 b.n 8006c16 <VL53L0X_get_vcsel_pulse_period+0x18> + +08006c32 <VL53L0X_set_measurement_timing_budget_micro_seconds>: + 8006c32: b5f0 push {r4, r5, r6, r7, lr} + 8006c34: 2300 movs r3, #0 + 8006c36: b085 sub sp, #20 + 8006c38: f44f 62fa mov.w r2, #2000 ; 0x7d0 + 8006c3c: e9cd 2300 strd r2, r3, [sp] + 8006c40: f644 631f movw r3, #19999 ; 0x4e1f + 8006c44: 4299 cmp r1, r3 + 8006c46: 4606 mov r6, r0 + 8006c48: 460f mov r7, r1 + 8006c4a: d804 bhi.n 8006c56 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x24> + 8006c4c: f06f 0503 mvn.w r5, #3 + 8006c50: 4628 mov r0, r5 + 8006c52: b005 add sp, #20 + 8006c54: bdf0 pop {r4, r5, r6, r7, pc} + 8006c56: a902 add r1, sp, #8 + 8006c58: f7fe f9d6 bl 8005008 <VL53L0X_GetSequenceStepEnables> + 8006c5c: 4605 mov r5, r0 + 8006c5e: 2800 cmp r0, #0 + 8006c60: d1f6 bne.n 8006c50 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1e> + 8006c62: f89d 2009 ldrb.w r2, [sp, #9] + 8006c66: f89d 3008 ldrb.w r3, [sp, #8] + 8006c6a: 4313 orrs r3, r2 + 8006c6c: f89d 200a ldrb.w r2, [sp, #10] + 8006c70: 4313 orrs r3, r2 + 8006c72: f6a7 3436 subw r4, r7, #2870 ; 0xb36 + 8006c76: d01b beq.n 8006cb0 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x7e> + 8006c78: 466a mov r2, sp + 8006c7a: 2102 movs r1, #2 + 8006c7c: 4630 mov r0, r6 + 8006c7e: f7ff fdbd bl 80067fc <get_sequence_step_timeout> + 8006c82: 2800 cmp r0, #0 + 8006c84: d13b bne.n 8006cfe <VL53L0X_set_measurement_timing_budget_micro_seconds+0xcc> + 8006c86: f89d 3008 ldrb.w r3, [sp, #8] + 8006c8a: b12b cbz r3, 8006c98 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x66> + 8006c8c: 9b00 ldr r3, [sp, #0] + 8006c8e: f203 234e addw r3, r3, #590 ; 0x24e + 8006c92: 429c cmp r4, r3 + 8006c94: d9da bls.n 8006c4c <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1a> + 8006c96: 1ae4 subs r4, r4, r3 + 8006c98: f89d 300a ldrb.w r3, [sp, #10] + 8006c9c: b323 cbz r3, 8006ce8 <VL53L0X_set_measurement_timing_budget_micro_seconds+0xb6> + 8006c9e: 9b00 ldr r3, [sp, #0] + 8006ca0: f203 23b2 addw r3, r3, #690 ; 0x2b2 + 8006ca4: ebb4 0f43 cmp.w r4, r3, lsl #1 + 8006ca8: ea4f 0243 mov.w r2, r3, lsl #1 + 8006cac: d9ce bls.n 8006c4c <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1a> + 8006cae: 1aa4 subs r4, r4, r2 + 8006cb0: f89d 300b ldrb.w r3, [sp, #11] + 8006cb4: b15b cbz r3, 8006cce <VL53L0X_set_measurement_timing_budget_micro_seconds+0x9c> + 8006cb6: aa01 add r2, sp, #4 + 8006cb8: 2103 movs r1, #3 + 8006cba: 4630 mov r0, r6 + 8006cbc: f7ff fd9e bl 80067fc <get_sequence_step_timeout> + 8006cc0: 9b01 ldr r3, [sp, #4] + 8006cc2: f503 7325 add.w r3, r3, #660 ; 0x294 + 8006cc6: 42a3 cmp r3, r4 + 8006cc8: d2c0 bcs.n 8006c4c <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1a> + 8006cca: b9c0 cbnz r0, 8006cfe <VL53L0X_set_measurement_timing_budget_micro_seconds+0xcc> + 8006ccc: 1ae4 subs r4, r4, r3 + 8006cce: f89d 300c ldrb.w r3, [sp, #12] + 8006cd2: 2b00 cmp r3, #0 + 8006cd4: d0bc beq.n 8006c50 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1e> + 8006cd6: f2a4 2226 subw r2, r4, #550 ; 0x226 + 8006cda: 2104 movs r1, #4 + 8006cdc: 4630 mov r0, r6 + 8006cde: f7ff fe0c bl 80068fa <set_sequence_step_timeout> + 8006ce2: 6177 str r7, [r6, #20] + 8006ce4: 4605 mov r5, r0 + 8006ce6: e7b3 b.n 8006c50 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1e> + 8006ce8: f89d 3009 ldrb.w r3, [sp, #9] + 8006cec: 2b00 cmp r3, #0 + 8006cee: d0df beq.n 8006cb0 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x7e> + 8006cf0: 9b00 ldr r3, [sp, #0] + 8006cf2: f503 7325 add.w r3, r3, #660 ; 0x294 + 8006cf6: 429c cmp r4, r3 + 8006cf8: d9a8 bls.n 8006c4c <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1a> + 8006cfa: 1ae4 subs r4, r4, r3 + 8006cfc: e7d8 b.n 8006cb0 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x7e> + 8006cfe: 4605 mov r5, r0 + 8006d00: e7a6 b.n 8006c50 <VL53L0X_set_measurement_timing_budget_micro_seconds+0x1e> + +08006d02 <VL53L0X_get_measurement_timing_budget_micro_seconds>: + 8006d02: b570 push {r4, r5, r6, lr} + 8006d04: f44f 62fa mov.w r2, #2000 ; 0x7d0 + 8006d08: b086 sub sp, #24 + 8006d0a: 2300 movs r3, #0 + 8006d0c: e9cd 2302 strd r2, r3, [sp, #8] + 8006d10: f640 3336 movw r3, #2870 ; 0xb36 + 8006d14: 600b str r3, [r1, #0] + 8006d16: 460c mov r4, r1 + 8006d18: a904 add r1, sp, #16 + 8006d1a: 4606 mov r6, r0 + 8006d1c: f7fe f974 bl 8005008 <VL53L0X_GetSequenceStepEnables> + 8006d20: 4605 mov r5, r0 + 8006d22: 2800 cmp r0, #0 + 8006d24: d136 bne.n 8006d94 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x92> + 8006d26: f89d 2011 ldrb.w r2, [sp, #17] + 8006d2a: f89d 3010 ldrb.w r3, [sp, #16] + 8006d2e: 4313 orrs r3, r2 + 8006d30: f89d 2012 ldrb.w r2, [sp, #18] + 8006d34: 4313 orrs r3, r2 + 8006d36: d019 beq.n 8006d6c <VL53L0X_get_measurement_timing_budget_micro_seconds+0x6a> + 8006d38: aa02 add r2, sp, #8 + 8006d3a: 2102 movs r1, #2 + 8006d3c: 4630 mov r0, r6 + 8006d3e: f7ff fd5d bl 80067fc <get_sequence_step_timeout> + 8006d42: 2800 cmp r0, #0 + 8006d44: d140 bne.n 8006dc8 <VL53L0X_get_measurement_timing_budget_micro_seconds+0xc6> + 8006d46: f89d 3010 ldrb.w r3, [sp, #16] + 8006d4a: b12b cbz r3, 8006d58 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x56> + 8006d4c: 9b02 ldr r3, [sp, #8] + 8006d4e: f203 224e addw r2, r3, #590 ; 0x24e + 8006d52: 6823 ldr r3, [r4, #0] + 8006d54: 4413 add r3, r2 + 8006d56: 6023 str r3, [r4, #0] + 8006d58: f89d 3012 ldrb.w r3, [sp, #18] + 8006d5c: b1eb cbz r3, 8006d9a <VL53L0X_get_measurement_timing_budget_micro_seconds+0x98> + 8006d5e: 9b02 ldr r3, [sp, #8] + 8006d60: f203 22b2 addw r2, r3, #690 ; 0x2b2 + 8006d64: 6823 ldr r3, [r4, #0] + 8006d66: eb03 0342 add.w r3, r3, r2, lsl #1 + 8006d6a: 6023 str r3, [r4, #0] + 8006d6c: f89d 3013 ldrb.w r3, [sp, #19] + 8006d70: b9eb cbnz r3, 8006dae <VL53L0X_get_measurement_timing_budget_micro_seconds+0xac> + 8006d72: f89d 3014 ldrb.w r3, [sp, #20] + 8006d76: b15b cbz r3, 8006d90 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x8e> + 8006d78: aa01 add r2, sp, #4 + 8006d7a: 2104 movs r1, #4 + 8006d7c: 4630 mov r0, r6 + 8006d7e: f7ff fd3d bl 80067fc <get_sequence_step_timeout> + 8006d82: 9b01 ldr r3, [sp, #4] + 8006d84: f203 2226 addw r2, r3, #550 ; 0x226 + 8006d88: 6823 ldr r3, [r4, #0] + 8006d8a: 4413 add r3, r2 + 8006d8c: 6023 str r3, [r4, #0] + 8006d8e: b9d8 cbnz r0, 8006dc8 <VL53L0X_get_measurement_timing_budget_micro_seconds+0xc6> + 8006d90: 6823 ldr r3, [r4, #0] + 8006d92: 6173 str r3, [r6, #20] + 8006d94: 4628 mov r0, r5 + 8006d96: b006 add sp, #24 + 8006d98: bd70 pop {r4, r5, r6, pc} + 8006d9a: f89d 3011 ldrb.w r3, [sp, #17] + 8006d9e: 2b00 cmp r3, #0 + 8006da0: d0e4 beq.n 8006d6c <VL53L0X_get_measurement_timing_budget_micro_seconds+0x6a> + 8006da2: 9b02 ldr r3, [sp, #8] + 8006da4: f503 7225 add.w r2, r3, #660 ; 0x294 + 8006da8: 6823 ldr r3, [r4, #0] + 8006daa: 4413 add r3, r2 + 8006dac: e7dd b.n 8006d6a <VL53L0X_get_measurement_timing_budget_micro_seconds+0x68> + 8006dae: aa03 add r2, sp, #12 + 8006db0: 2103 movs r1, #3 + 8006db2: 4630 mov r0, r6 + 8006db4: f7ff fd22 bl 80067fc <get_sequence_step_timeout> + 8006db8: 9b03 ldr r3, [sp, #12] + 8006dba: f503 7225 add.w r2, r3, #660 ; 0x294 + 8006dbe: 6823 ldr r3, [r4, #0] + 8006dc0: 4413 add r3, r2 + 8006dc2: 6023 str r3, [r4, #0] + 8006dc4: 2800 cmp r0, #0 + 8006dc6: d0d4 beq.n 8006d72 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x70> + 8006dc8: 4605 mov r5, r0 + 8006dca: e7e3 b.n 8006d94 <VL53L0X_get_measurement_timing_budget_micro_seconds+0x92> + +08006dcc <VL53L0X_load_tuning_settings>: + 8006dcc: e92d 43f7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} + 8006dd0: 2400 movs r4, #0 + 8006dd2: 4606 mov r6, r0 + 8006dd4: 460d mov r5, r1 + 8006dd6: 4620 mov r0, r4 + 8006dd8: f815 8004 ldrb.w r8, [r5, r4] + 8006ddc: f1b8 0f00 cmp.w r8, #0 + 8006de0: d000 beq.n 8006de4 <VL53L0X_load_tuning_settings+0x18> + 8006de2: b110 cbz r0, 8006dea <VL53L0X_load_tuning_settings+0x1e> + 8006de4: b003 add sp, #12 + 8006de6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8006dea: 1c67 adds r7, r4, #1 + 8006dec: f1b8 0fff cmp.w r8, #255 ; 0xff + 8006df0: f815 9007 ldrb.w r9, [r5, r7] + 8006df4: d129 bne.n 8006e4a <VL53L0X_load_tuning_settings+0x7e> + 8006df6: 1ca7 adds r7, r4, #2 + 8006df8: 5deb ldrb r3, [r5, r7] + 8006dfa: f1b9 0f03 cmp.w r9, #3 + 8006dfe: d836 bhi.n 8006e6e <VL53L0X_load_tuning_settings+0xa2> + 8006e00: e8df f009 tbb [pc, r9] + 8006e04: 1b130b02 .word 0x1b130b02 + 8006e08: 1d27 adds r7, r4, #4 + 8006e0a: 442c add r4, r5 + 8006e0c: 78e2 ldrb r2, [r4, #3] + 8006e0e: eb02 2303 add.w r3, r2, r3, lsl #8 + 8006e12: f8a6 3134 strh.w r3, [r6, #308] ; 0x134 + 8006e16: 463c mov r4, r7 + 8006e18: e7de b.n 8006dd8 <VL53L0X_load_tuning_settings+0xc> + 8006e1a: 1d27 adds r7, r4, #4 + 8006e1c: 442c add r4, r5 + 8006e1e: 78e2 ldrb r2, [r4, #3] + 8006e20: eb02 2303 add.w r3, r2, r3, lsl #8 + 8006e24: f8a6 3136 strh.w r3, [r6, #310] ; 0x136 + 8006e28: e7f5 b.n 8006e16 <VL53L0X_load_tuning_settings+0x4a> + 8006e2a: 1d27 adds r7, r4, #4 + 8006e2c: 442c add r4, r5 + 8006e2e: 78e2 ldrb r2, [r4, #3] + 8006e30: eb02 2303 add.w r3, r2, r3, lsl #8 + 8006e34: f8a6 3138 strh.w r3, [r6, #312] ; 0x138 + 8006e38: e7ed b.n 8006e16 <VL53L0X_load_tuning_settings+0x4a> + 8006e3a: 1d27 adds r7, r4, #4 + 8006e3c: 442c add r4, r5 + 8006e3e: 78e2 ldrb r2, [r4, #3] + 8006e40: eb02 2303 add.w r3, r2, r3, lsl #8 + 8006e44: f8a6 313c strh.w r3, [r6, #316] ; 0x13c + 8006e48: e7e5 b.n 8006e16 <VL53L0X_load_tuning_settings+0x4a> + 8006e4a: f1b8 0f04 cmp.w r8, #4 + 8006e4e: d80e bhi.n 8006e6e <VL53L0X_load_tuning_settings+0xa2> + 8006e50: 3402 adds r4, #2 + 8006e52: 4642 mov r2, r8 + 8006e54: 1929 adds r1, r5, r4 + 8006e56: a801 add r0, sp, #4 + 8006e58: f00d fb07 bl 801446a <memcpy> + 8006e5c: 4643 mov r3, r8 + 8006e5e: aa01 add r2, sp, #4 + 8006e60: 4649 mov r1, r9 + 8006e62: 4630 mov r0, r6 + 8006e64: eb04 0708 add.w r7, r4, r8 + 8006e68: f000 fabe bl 80073e8 <VL53L0X_WriteMulti> + 8006e6c: e7d3 b.n 8006e16 <VL53L0X_load_tuning_settings+0x4a> + 8006e6e: f06f 0003 mvn.w r0, #3 + 8006e72: e7d0 b.n 8006e16 <VL53L0X_load_tuning_settings+0x4a> + +08006e74 <VL53L0X_get_total_xtalk_rate>: + 8006e74: b573 push {r0, r1, r4, r5, r6, lr} + 8006e76: 2300 movs r3, #0 + 8006e78: 460e mov r6, r1 + 8006e7a: 6013 str r3, [r2, #0] + 8006e7c: f10d 0107 add.w r1, sp, #7 + 8006e80: 4605 mov r5, r0 + 8006e82: 4614 mov r4, r2 + 8006e84: f7fe f8f7 bl 8005076 <VL53L0X_GetXTalkCompensationEnable> + 8006e88: b940 cbnz r0, 8006e9c <VL53L0X_get_total_xtalk_rate+0x28> + 8006e8a: f89d 3007 ldrb.w r3, [sp, #7] + 8006e8e: b12b cbz r3, 8006e9c <VL53L0X_get_total_xtalk_rate+0x28> + 8006e90: 8ab3 ldrh r3, [r6, #20] + 8006e92: 6a2a ldr r2, [r5, #32] + 8006e94: 4353 muls r3, r2 + 8006e96: 3380 adds r3, #128 ; 0x80 + 8006e98: 0a1b lsrs r3, r3, #8 + 8006e9a: 6023 str r3, [r4, #0] + 8006e9c: b002 add sp, #8 + 8006e9e: bd70 pop {r4, r5, r6, pc} + +08006ea0 <VL53L0X_get_total_signal_rate>: + 8006ea0: b513 push {r0, r1, r4, lr} + 8006ea2: 68cb ldr r3, [r1, #12] + 8006ea4: 6013 str r3, [r2, #0] + 8006ea6: 4614 mov r4, r2 + 8006ea8: aa01 add r2, sp, #4 + 8006eaa: f7ff ffe3 bl 8006e74 <VL53L0X_get_total_xtalk_rate> + 8006eae: b918 cbnz r0, 8006eb8 <VL53L0X_get_total_signal_rate+0x18> + 8006eb0: 6823 ldr r3, [r4, #0] + 8006eb2: 9a01 ldr r2, [sp, #4] + 8006eb4: 4413 add r3, r2 + 8006eb6: 6023 str r3, [r4, #0] + 8006eb8: b002 add sp, #8 + 8006eba: bd10 pop {r4, pc} + +08006ebc <VL53L0X_calc_dmax>: + 8006ebc: b5f8 push {r3, r4, r5, r6, r7, lr} + 8006ebe: f8b0 5154 ldrh.w r5, [r0, #340] ; 0x154 + 8006ec2: f8d0 0158 ldr.w r0, [r0, #344] ; 0x158 + 8006ec6: 4368 muls r0, r5 + 8006ec8: 3080 adds r0, #128 ; 0x80 + 8006eca: 0a00 lsrs r0, r0, #8 + 8006ecc: 460e mov r6, r1 + 8006ece: 4345 muls r5, r0 + 8006ed0: e9dd 1707 ldrd r1, r7, [sp, #28] + 8006ed4: 4614 mov r4, r2 + 8006ed6: b152 cbz r2, 8006eee <VL53L0X_calc_dmax+0x32> + 8006ed8: 02b6 lsls r6, r6, #10 + 8006eda: eb06 0252 add.w r2, r6, r2, lsr #1 + 8006ede: fbb2 f2f4 udiv r2, r2, r4 + 8006ee2: eb02 0242 add.w r2, r2, r2, lsl #1 + 8006ee6: 4352 muls r2, r2 + 8006ee8: f502 4200 add.w r2, r2, #32768 ; 0x8000 + 8006eec: 0c14 lsrs r4, r2, #16 + 8006eee: 9a06 ldr r2, [sp, #24] + 8006ef0: 4353 muls r3, r2 + 8006ef2: f501 4200 add.w r2, r1, #32768 ; 0x8000 + 8006ef6: 0c12 lsrs r2, r2, #16 + 8006ef8: 2006 movs r0, #6 + 8006efa: 3203 adds r2, #3 + 8006efc: fbb2 f2f0 udiv r2, r2, r0 + 8006f00: ebc2 02c2 rsb r2, r2, r2, lsl #3 + 8006f04: f5b2 3f80 cmp.w r2, #65536 ; 0x10000 + 8006f08: bf38 it cc + 8006f0a: 3103 addcc r1, #3 + 8006f0c: f503 4300 add.w r3, r3, #32768 ; 0x8000 + 8006f10: bf3e ittt cc + 8006f12: fbb1 f1f0 udivcc r1, r1, r0 + 8006f16: ebc1 01c1 rsbcc r1, r1, r1, lsl #3 + 8006f1a: f501 4100 addcc.w r1, r1, #32768 ; 0x8000 + 8006f1e: ea4f 4313 mov.w r3, r3, lsr #16 + 8006f22: bf34 ite cc + 8006f24: 0c09 lsrcc r1, r1, #16 + 8006f26: 491b ldrcs r1, [pc, #108] ; (8006f94 <VL53L0X_calc_dmax+0xd8>) + 8006f28: fb03 f303 mul.w r3, r3, r3 + 8006f2c: bf38 it cc + 8006f2e: 4349 mulcc r1, r1 + 8006f30: eb03 0357 add.w r3, r3, r7, lsr #1 + 8006f34: 440b add r3, r1 + 8006f36: fbb3 f3f7 udiv r3, r3, r7 + 8006f3a: 039b lsls r3, r3, #14 + 8006f3c: 22fe movs r2, #254 ; 0xfe + 8006f3e: f105 0020 add.w r0, r5, #32 + 8006f42: 337f adds r3, #127 ; 0x7f + 8006f44: fbb3 f3f2 udiv r3, r3, r2 + 8006f48: 435c muls r4, r3 + 8006f4a: f44f 777a mov.w r7, #1000 ; 0x3e8 + 8006f4e: f504 74fa add.w r4, r4, #500 ; 0x1f4 + 8006f52: 0980 lsrs r0, r0, #6 + 8006f54: fbb4 f4f7 udiv r4, r4, r7 + 8006f58: 0124 lsls r4, r4, #4 + 8006f5a: f7ff f92d bl 80061b8 <VL53L0X_isqrt> + 8006f5e: f504 74fa add.w r4, r4, #500 ; 0x1f4 + 8006f62: 42bc cmp r4, r7 + 8006f64: bf28 it cs + 8006f66: f44f 63fa movcs.w r3, #2000 ; 0x7d0 + 8006f6a: 4606 mov r6, r0 + 8006f6c: bf29 itett cs + 8006f6e: fbb4 f3f3 udivcs r3, r4, r3 + 8006f72: 2000 movcc r0, #0 + 8006f74: 195b addcs r3, r3, r5 + 8006f76: fbb4 f4f7 udivcs r4, r4, r7 + 8006f7a: bf28 it cs + 8006f7c: fbb3 f0f4 udivcs r0, r3, r4 + 8006f80: f7ff f91a bl 80061b8 <VL53L0X_isqrt> + 8006f84: 9b09 ldr r3, [sp, #36] ; 0x24 + 8006f86: 4286 cmp r6, r0 + 8006f88: bf94 ite ls + 8006f8a: 601e strls r6, [r3, #0] + 8006f8c: 6018 strhi r0, [r3, #0] + 8006f8e: 2000 movs r0, #0 + 8006f90: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8006f92: bf00 nop + 8006f94: fff00000 .word 0xfff00000 + +08006f98 <VL53L0X_calc_sigma_estimate>: + 8006f98: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8006f9c: b091 sub sp, #68 ; 0x44 + 8006f9e: e9cd 2307 strd r2, r3, [sp, #28] + 8006fa2: 6a03 ldr r3, [r0, #32] + 8006fa4: 930e str r3, [sp, #56] ; 0x38 + 8006fa6: 690b ldr r3, [r1, #16] + 8006fa8: 9309 str r3, [sp, #36] ; 0x24 + 8006faa: 4605 mov r5, r0 + 8006fac: 68cb ldr r3, [r1, #12] + 8006fae: 930b str r3, [sp, #44] ; 0x2c + 8006fb0: 460f mov r7, r1 + 8006fb2: aa0f add r2, sp, #60 ; 0x3c + 8006fb4: f7ff ff74 bl 8006ea0 <VL53L0X_get_total_signal_rate> + 8006fb8: aa0e add r2, sp, #56 ; 0x38 + 8006fba: 4639 mov r1, r7 + 8006fbc: 4628 mov r0, r5 + 8006fbe: f7ff ff59 bl 8006e74 <VL53L0X_get_total_xtalk_rate> + 8006fc2: bb58 cbnz r0, 800701c <VL53L0X_calc_sigma_estimate+0x84> + 8006fc4: 9c0f ldr r4, [sp, #60] ; 0x3c + 8006fc6: f895 b0e0 ldrb.w fp, [r5, #224] ; 0xe0 + 8006fca: f8d5 30dc ldr.w r3, [r5, #220] ; 0xdc + 8006fce: 9305 str r3, [sp, #20] + 8006fd0: f44f 767a mov.w r6, #1000 ; 0x3e8 + 8006fd4: fb06 f104 mul.w r1, r6, r4 + 8006fd8: f501 4100 add.w r1, r1, #32768 ; 0x8000 + 8006fdc: 9104 str r1, [sp, #16] + 8006fde: 990e ldr r1, [sp, #56] ; 0x38 + 8006fe0: 910a str r1, [sp, #40] ; 0x28 + 8006fe2: 9904 ldr r1, [sp, #16] + 8006fe4: f8d5 30e4 ldr.w r3, [r5, #228] ; 0xe4 + 8006fe8: 9306 str r3, [sp, #24] + 8006fea: f1bb 0f08 cmp.w fp, #8 + 8006fee: f104 0480 add.w r4, r4, #128 ; 0x80 + 8006ff2: bf0c ite eq + 8006ff4: 2302 moveq r3, #2 + 8006ff6: 2303 movne r3, #3 + 8006ff8: f024 0aff bic.w sl, r4, #255 ; 0xff + 8006ffc: 0c09 lsrs r1, r1, #16 + 8006ffe: f895 20e8 ldrb.w r2, [r5, #232] ; 0xe8 + 8007002: f8df 81a0 ldr.w r8, [pc, #416] ; 80071a4 <VL53L0X_calc_sigma_estimate+0x20c> + 8007006: f8cd a03c str.w sl, [sp, #60] ; 0x3c + 800700a: 910c str r1, [sp, #48] ; 0x30 + 800700c: d109 bne.n 8007022 <VL53L0X_calc_sigma_estimate+0x8a> + 800700e: 9b07 ldr r3, [sp, #28] + 8007010: f8c3 8000 str.w r8, [r3] + 8007014: 9b08 ldr r3, [sp, #32] + 8007016: f8c5 8140 str.w r8, [r5, #320] ; 0x140 + 800701a: 6018 str r0, [r3, #0] + 800701c: b011 add sp, #68 ; 0x44 + 800701e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8007022: 9906 ldr r1, [sp, #24] + 8007024: 930d str r3, [sp, #52] ; 0x34 + 8007026: 4628 mov r0, r5 + 8007028: f7ff fbc4 bl 80067b4 <VL53L0X_calc_timeout_mclks> + 800702c: 465a mov r2, fp + 800702e: 9905 ldr r1, [sp, #20] + 8007030: 4681 mov r9, r0 + 8007032: 4628 mov r0, r5 + 8007034: f7ff fbbe bl 80067b4 <VL53L0X_calc_timeout_mclks> + 8007038: 9b0d ldr r3, [sp, #52] ; 0x34 + 800703a: 495b ldr r1, [pc, #364] ; (80071a8 <VL53L0X_calc_sigma_estimate+0x210>) + 800703c: 9a0c ldr r2, [sp, #48] ; 0x30 + 800703e: 4481 add r9, r0 + 8007040: fb03 f909 mul.w r9, r3, r9 + 8007044: ea4f 29c9 mov.w r9, r9, lsl #11 + 8007048: f240 6377 movw r3, #1655 ; 0x677 + 800704c: f509 79fa add.w r9, r9, #500 ; 0x1f4 + 8007050: 0a24 lsrs r4, r4, #8 + 8007052: fbb9 f9f6 udiv r9, r9, r6 + 8007056: fb03 f909 mul.w r9, r3, r9 + 800705a: f509 79fa add.w r9, r9, #500 ; 0x1f4 + 800705e: fbb9 f9f6 udiv r9, r9, r6 + 8007062: fb09 f404 mul.w r4, r9, r4 + 8007066: f104 0380 add.w r3, r4, #128 ; 0x80 + 800706a: 9c09 ldr r4, [sp, #36] ; 0x24 + 800706c: 4374 muls r4, r6 + 800706e: 400c ands r4, r1 + 8007070: fbb4 f4f2 udiv r4, r4, r2 + 8007074: 4a4d ldr r2, [pc, #308] ; (80071ac <VL53L0X_calc_sigma_estimate+0x214>) + 8007076: 0a1b lsrs r3, r3, #8 + 8007078: 4294 cmp r4, r2 + 800707a: bf28 it cs + 800707c: 4614 movcs r4, r2 + 800707e: 2b01 cmp r3, #1 + 8007080: bf38 it cc + 8007082: 2301 movcc r3, #1 + 8007084: 200c movs r0, #12 + 8007086: f44f 7216 mov.w r2, #600 ; 0x258 + 800708a: 4358 muls r0, r3 + 800708c: 4354 muls r4, r2 + 800708e: f7ff f893 bl 80061b8 <VL53L0X_isqrt> + 8007092: 7e3b ldrb r3, [r7, #24] + 8007094: 893a ldrh r2, [r7, #8] + 8007096: ea4f 0b40 mov.w fp, r0, lsl #1 + 800709a: 2b00 cmp r3, #0 + 800709c: d17f bne.n 800719e <VL53L0X_calc_sigma_estimate+0x206> + 800709e: 4942 ldr r1, [pc, #264] ; (80071a8 <VL53L0X_calc_sigma_estimate+0x210>) + 80070a0: 9b04 ldr r3, [sp, #16] + 80070a2: 400b ands r3, r1 + 80070a4: f503 71fa add.w r1, r3, #500 ; 0x1f4 + 80070a8: 4b41 ldr r3, [pc, #260] ; (80071b0 <VL53L0X_calc_sigma_estimate+0x218>) + 80070aa: 435a muls r2, r3 + 80070ac: f241 235c movw r3, #4700 ; 0x125c + 80070b0: fbb2 f2f3 udiv r2, r2, r3 + 80070b4: 9b0a ldr r3, [sp, #40] ; 0x28 + 80070b6: 4373 muls r3, r6 + 80070b8: f5b3 1f48 cmp.w r3, #3276800 ; 0x320000 + 80070bc: bf28 it cs + 80070be: f44f 1348 movcs.w r3, #3276800 ; 0x320000 + 80070c2: eba1 0343 sub.w r3, r1, r3, lsl #1 + 80070c6: fbb1 f1f6 udiv r1, r1, r6 + 80070ca: fbb3 f3f6 udiv r3, r3, r6 + 80070ce: 021b lsls r3, r3, #8 + 80070d0: fbb3 f6f1 udiv r6, r3, r1 + 80070d4: 0236 lsls r6, r6, #8 + 80070d6: f5c6 3680 rsb r6, r6, #65536 ; 0x10000 + 80070da: 4356 muls r6, r2 + 80070dc: f506 4600 add.w r6, r6, #32768 ; 0x8000 + 80070e0: 0c36 lsrs r6, r6, #16 + 80070e2: f506 3680 add.w r6, r6, #65536 ; 0x10000 + 80070e6: 0876 lsrs r6, r6, #1 + 80070e8: 4376 muls r6, r6 + 80070ea: 0bb6 lsrs r6, r6, #14 + 80070ec: f44f 7048 mov.w r0, #800 ; 0x320 + 80070f0: 4370 muls r0, r6 + 80070f2: f504 4300 add.w r3, r4, #32768 ; 0x8000 + 80070f6: f500 4000 add.w r0, r0, #32768 ; 0x8000 + 80070fa: 0c1b lsrs r3, r3, #16 + 80070fc: 435b muls r3, r3 + 80070fe: 0c00 lsrs r0, r0, #16 + 8007100: fb00 3000 mla r0, r0, r0, r3 + 8007104: f7ff f858 bl 80061b8 <VL53L0X_isqrt> + 8007108: 0403 lsls r3, r0, #16 + 800710a: 2264 movs r2, #100 ; 0x64 + 800710c: 3332 adds r3, #50 ; 0x32 + 800710e: f241 3788 movw r7, #5000 ; 0x1388 + 8007112: fbb3 f3f2 udiv r3, r3, r2 + 8007116: f640 32b5 movw r2, #2997 ; 0xbb5 + 800711a: fbb3 f3fb udiv r3, r3, fp + 800711e: fb02 7703 mla r7, r2, r3, r7 + 8007122: 4b24 ldr r3, [pc, #144] ; (80071b4 <VL53L0X_calc_sigma_estimate+0x21c>) + 8007124: 429f cmp r7, r3 + 8007126: bf9c itt ls + 8007128: f242 7310 movwls r3, #10000 ; 0x2710 + 800712c: fbb7 f7f3 udivls r7, r7, r3 + 8007130: e9dd 3205 ldrd r3, r2, [sp, #20] + 8007134: 4413 add r3, r2 + 8007136: f503 73fa add.w r3, r3, #500 ; 0x1f4 + 800713a: f44f 7b7a mov.w fp, #1000 ; 0x3e8 + 800713e: f44f 62fa mov.w r2, #2000 ; 0x7d0 + 8007142: fbb3 f0fb udiv r0, r3, fp + 8007146: fbb3 f2f2 udiv r2, r3, r2 + 800714a: f502 12c8 add.w r2, r2, #1638400 ; 0x190000 + 800714e: fbb2 f0f0 udiv r0, r2, r0 + 8007152: bf88 it hi + 8007154: f44f 4770 movhi.w r7, #61440 ; 0xf000 + 8007158: f7ff f82e bl 80061b8 <VL53L0X_isqrt> + 800715c: 0200 lsls r0, r0, #8 + 800715e: f500 70fa add.w r0, r0, #500 ; 0x1f4 + 8007162: fbb0 f0fb udiv r0, r0, fp + 8007166: 4340 muls r0, r0 + 8007168: fb07 0007 mla r0, r7, r7, r0 + 800716c: f7ff f824 bl 80061b8 <VL53L0X_isqrt> + 8007170: fb0b f000 mul.w r0, fp, r0 + 8007174: 9b07 ldr r3, [sp, #28] + 8007176: 9a0b ldr r2, [sp, #44] ; 0x2c + 8007178: 4540 cmp r0, r8 + 800717a: bf28 it cs + 800717c: 4640 movcs r0, r8 + 800717e: 6018 str r0, [r3, #0] + 8007180: 9b08 ldr r3, [sp, #32] + 8007182: f8c5 0140 str.w r0, [r5, #320] ; 0x140 + 8007186: e9cd 9302 strd r9, r3, [sp, #8] + 800718a: f44f 7348 mov.w r3, #800 ; 0x320 + 800718e: 9300 str r3, [sp, #0] + 8007190: 9401 str r4, [sp, #4] + 8007192: 4633 mov r3, r6 + 8007194: 4651 mov r1, sl + 8007196: 4628 mov r0, r5 + 8007198: f7ff fe90 bl 8006ebc <VL53L0X_calc_dmax> + 800719c: e73e b.n 800701c <VL53L0X_calc_sigma_estimate+0x84> + 800719e: f44f 3680 mov.w r6, #65536 ; 0x10000 + 80071a2: e7a3 b.n 80070ec <VL53L0X_calc_sigma_estimate+0x154> + 80071a4: 028f87ae .word 0x028f87ae + 80071a8: ffff0000 .word 0xffff0000 + 80071ac: 00666666 .word 0x00666666 + 80071b0: 0006999a .word 0x0006999a + 80071b4: 249f270f .word 0x249f270f + +080071b8 <VL53L0X_get_pal_range_status>: + 80071b8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80071bc: b08b sub sp, #44 ; 0x2c + 80071be: 2700 movs r7, #0 + 80071c0: f011 0f78 tst.w r1, #120 ; 0x78 + 80071c4: e9dd b814 ldrd fp, r8, [sp, #80] ; 0x50 + 80071c8: 4604 mov r4, r0 + 80071ca: 9201 str r2, [sp, #4] + 80071cc: 4699 mov r9, r3 + 80071ce: f88d 700e strb.w r7, [sp, #14] + 80071d2: f88d 700f strb.w r7, [sp, #15] + 80071d6: f88d 7010 strb.w r7, [sp, #16] + 80071da: f88d 7011 strb.w r7, [sp, #17] + 80071de: f8ad 7012 strh.w r7, [sp, #18] + 80071e2: 9709 str r7, [sp, #36] ; 0x24 + 80071e4: f3c1 0ac3 ubfx sl, r1, #3, #4 + 80071e8: f000 80af beq.w 800734a <VL53L0X_get_pal_range_status+0x192> + 80071ec: f1aa 0305 sub.w r3, sl, #5 + 80071f0: b2db uxtb r3, r3 + 80071f2: 2b0a cmp r3, #10 + 80071f4: d801 bhi.n 80071fa <VL53L0X_get_pal_range_status+0x42> + 80071f6: 4a6b ldr r2, [pc, #428] ; (80073a4 <VL53L0X_get_pal_range_status+0x1ec>) + 80071f8: 5cd7 ldrb r7, [r2, r3] + 80071fa: f10d 020e add.w r2, sp, #14 + 80071fe: 2100 movs r1, #0 + 8007200: 4620 mov r0, r4 + 8007202: f7fd ff92 bl 800512a <VL53L0X_GetLimitCheckEnable> + 8007206: f89d 500e ldrb.w r5, [sp, #14] + 800720a: 4606 mov r6, r0 + 800720c: b1d5 cbz r5, 8007244 <VL53L0X_get_pal_range_status+0x8c> + 800720e: 2800 cmp r0, #0 + 8007210: f040 809d bne.w 800734e <VL53L0X_get_pal_range_status+0x196> + 8007214: ab09 add r3, sp, #36 ; 0x24 + 8007216: aa05 add r2, sp, #20 + 8007218: 4659 mov r1, fp + 800721a: 4620 mov r0, r4 + 800721c: f7ff febc bl 8006f98 <VL53L0X_calc_sigma_estimate> + 8007220: 2800 cmp r0, #0 + 8007222: f040 8096 bne.w 8007352 <VL53L0X_get_pal_range_status+0x19a> + 8007226: 9b09 ldr r3, [sp, #36] ; 0x24 + 8007228: f8ab 300a strh.w r3, [fp, #10] + 800722c: 4601 mov r1, r0 + 800722e: aa06 add r2, sp, #24 + 8007230: 4620 mov r0, r4 + 8007232: f7fd ffb3 bl 800519c <VL53L0X_GetLimitCheckValue> + 8007236: 9d06 ldr r5, [sp, #24] + 8007238: b125 cbz r5, 8007244 <VL53L0X_get_pal_range_status+0x8c> + 800723a: 9b05 ldr r3, [sp, #20] + 800723c: 429d cmp r5, r3 + 800723e: bf2c ite cs + 8007240: 2500 movcs r5, #0 + 8007242: 2501 movcc r5, #1 + 8007244: b920 cbnz r0, 8007250 <VL53L0X_get_pal_range_status+0x98> + 8007246: aa04 add r2, sp, #16 + 8007248: 2102 movs r1, #2 + 800724a: 4620 mov r0, r4 + 800724c: f7fd ff6d bl 800512a <VL53L0X_GetLimitCheckEnable> + 8007250: f89d 6010 ldrb.w r6, [sp, #16] + 8007254: b326 cbz r6, 80072a0 <VL53L0X_get_pal_range_status+0xe8> + 8007256: 2800 cmp r0, #0 + 8007258: d17d bne.n 8007356 <VL53L0X_get_pal_range_status+0x19e> + 800725a: aa07 add r2, sp, #28 + 800725c: 2102 movs r1, #2 + 800725e: 4620 mov r0, r4 + 8007260: f7fd ff9c bl 800519c <VL53L0X_GetLimitCheckValue> + 8007264: b988 cbnz r0, 800728a <VL53L0X_get_pal_range_status+0xd2> + 8007266: 2201 movs r2, #1 + 8007268: 21ff movs r1, #255 ; 0xff + 800726a: 4620 mov r0, r4 + 800726c: f000 f8f0 bl 8007450 <VL53L0X_WrByte> + 8007270: b958 cbnz r0, 800728a <VL53L0X_get_pal_range_status+0xd2> + 8007272: f10d 0212 add.w r2, sp, #18 + 8007276: 21b6 movs r1, #182 ; 0xb6 + 8007278: 4620 mov r0, r4 + 800727a: f000 f937 bl 80074ec <VL53L0X_RdWord> + 800727e: b920 cbnz r0, 800728a <VL53L0X_get_pal_range_status+0xd2> + 8007280: 4602 mov r2, r0 + 8007282: 21ff movs r1, #255 ; 0xff + 8007284: 4620 mov r0, r4 + 8007286: f000 f8e3 bl 8007450 <VL53L0X_WrByte> + 800728a: f8bd 3012 ldrh.w r3, [sp, #18] + 800728e: 9e07 ldr r6, [sp, #28] + 8007290: 025b lsls r3, r3, #9 + 8007292: f8c4 3148 str.w r3, [r4, #328] ; 0x148 + 8007296: b11e cbz r6, 80072a0 <VL53L0X_get_pal_range_status+0xe8> + 8007298: 429e cmp r6, r3 + 800729a: bf2c ite cs + 800729c: 2600 movcs r6, #0 + 800729e: 2601 movcc r6, #1 + 80072a0: b928 cbnz r0, 80072ae <VL53L0X_get_pal_range_status+0xf6> + 80072a2: f10d 0211 add.w r2, sp, #17 + 80072a6: 2103 movs r1, #3 + 80072a8: 4620 mov r0, r4 + 80072aa: f7fd ff3e bl 800512a <VL53L0X_GetLimitCheckEnable> + 80072ae: f89d 3011 ldrb.w r3, [sp, #17] + 80072b2: b193 cbz r3, 80072da <VL53L0X_get_pal_range_status+0x122> + 80072b4: 2800 cmp r0, #0 + 80072b6: d173 bne.n 80073a0 <VL53L0X_get_pal_range_status+0x1e8> + 80072b8: f1b9 0f00 cmp.w r9, #0 + 80072bc: d003 beq.n 80072c6 <VL53L0X_get_pal_range_status+0x10e> + 80072be: 9b01 ldr r3, [sp, #4] + 80072c0: 021b lsls r3, r3, #8 + 80072c2: fbb3 f9f9 udiv r9, r3, r9 + 80072c6: aa08 add r2, sp, #32 + 80072c8: 2103 movs r1, #3 + 80072ca: 4620 mov r0, r4 + 80072cc: f7fd ff66 bl 800519c <VL53L0X_GetLimitCheckValue> + 80072d0: 9b08 ldr r3, [sp, #32] + 80072d2: 454b cmp r3, r9 + 80072d4: bf94 ite ls + 80072d6: 2300 movls r3, #0 + 80072d8: 2301 movhi r3, #1 + 80072da: b920 cbnz r0, 80072e6 <VL53L0X_get_pal_range_status+0x12e> + 80072dc: 2f01 cmp r7, #1 + 80072de: d13c bne.n 800735a <VL53L0X_get_pal_range_status+0x1a2> + 80072e0: 22ff movs r2, #255 ; 0xff + 80072e2: f888 2000 strb.w r2, [r8] + 80072e6: f898 2000 ldrb.w r2, [r8] + 80072ea: b90a cbnz r2, 80072f0 <VL53L0X_get_pal_range_status+0x138> + 80072ec: f8ab 200a strh.w r2, [fp, #10] + 80072f0: f10d 020f add.w r2, sp, #15 + 80072f4: 2101 movs r1, #1 + 80072f6: 4620 mov r0, r4 + 80072f8: 9301 str r3, [sp, #4] + 80072fa: f7fd ff16 bl 800512a <VL53L0X_GetLimitCheckEnable> + 80072fe: bb08 cbnz r0, 8007344 <VL53L0X_get_pal_range_status+0x18c> + 8007300: f89d 200e ldrb.w r2, [sp, #14] + 8007304: 9b01 ldr r3, [sp, #4] + 8007306: 2a00 cmp r2, #0 + 8007308: bf08 it eq + 800730a: 2501 moveq r5, #1 + 800730c: f1ba 0f04 cmp.w sl, #4 + 8007310: bf18 it ne + 8007312: f89d 200f ldrbne.w r2, [sp, #15] + 8007316: f884 502e strb.w r5, [r4, #46] ; 0x2e + 800731a: bf1a itte ne + 800731c: fab2 f282 clzne r2, r2 + 8007320: 0952 lsrne r2, r2, #5 + 8007322: 2201 moveq r2, #1 + 8007324: f884 202f strb.w r2, [r4, #47] ; 0x2f + 8007328: f89d 2010 ldrb.w r2, [sp, #16] + 800732c: 2a00 cmp r2, #0 + 800732e: f89d 2011 ldrb.w r2, [sp, #17] + 8007332: bf08 it eq + 8007334: 2601 moveq r6, #1 + 8007336: 2a00 cmp r2, #0 + 8007338: bf08 it eq + 800733a: 2301 moveq r3, #1 + 800733c: f884 6030 strb.w r6, [r4, #48] ; 0x30 + 8007340: f884 3031 strb.w r3, [r4, #49] ; 0x31 + 8007344: b00b add sp, #44 ; 0x2c + 8007346: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800734a: 2701 movs r7, #1 + 800734c: e755 b.n 80071fa <VL53L0X_get_pal_range_status+0x42> + 800734e: 2500 movs r5, #0 + 8007350: e77e b.n 8007250 <VL53L0X_get_pal_range_status+0x98> + 8007352: 4635 mov r5, r6 + 8007354: e77c b.n 8007250 <VL53L0X_get_pal_range_status+0x98> + 8007356: 2600 movs r6, #0 + 8007358: e7a9 b.n 80072ae <VL53L0X_get_pal_range_status+0xf6> + 800735a: f10a 32ff add.w r2, sl, #4294967295 + 800735e: 2a09 cmp r2, #9 + 8007360: d80a bhi.n 8007378 <VL53L0X_get_pal_range_status+0x1c0> + 8007362: e8df f002 tbb [pc, r2] + 8007366: 0505 .short 0x0505 + 8007368: 07090905 .word 0x07090905 + 800736c: 0b070b09 .word 0x0b070b09 + 8007370: 2205 movs r2, #5 + 8007372: e7b6 b.n 80072e2 <VL53L0X_get_pal_range_status+0x12a> + 8007374: 2204 movs r2, #4 + 8007376: e7b4 b.n 80072e2 <VL53L0X_get_pal_range_status+0x12a> + 8007378: 2e01 cmp r6, #1 + 800737a: d101 bne.n 8007380 <VL53L0X_get_pal_range_status+0x1c8> + 800737c: 2203 movs r2, #3 + 800737e: e7b0 b.n 80072e2 <VL53L0X_get_pal_range_status+0x12a> + 8007380: f1ba 0f04 cmp.w sl, #4 + 8007384: d001 beq.n 800738a <VL53L0X_get_pal_range_status+0x1d2> + 8007386: 2b01 cmp r3, #1 + 8007388: d101 bne.n 800738e <VL53L0X_get_pal_range_status+0x1d6> + 800738a: 2202 movs r2, #2 + 800738c: e7a9 b.n 80072e2 <VL53L0X_get_pal_range_status+0x12a> + 800738e: 2d01 cmp r5, #1 + 8007390: bf1b ittet ne + 8007392: 2300 movne r3, #0 + 8007394: f888 3000 strbne.w r3, [r8] + 8007398: f888 5000 strbeq.w r5, [r8] + 800739c: 462b movne r3, r5 + 800739e: e7a2 b.n 80072e6 <VL53L0X_get_pal_range_status+0x12e> + 80073a0: 2300 movs r3, #0 + 80073a2: e7a0 b.n 80072e6 <VL53L0X_get_pal_range_status+0x12e> + 80073a4: 080151c2 .word 0x080151c2 + +080073a8 <_I2CWrite>: + 80073a8: b507 push {r0, r1, r2, lr} + 80073aa: f102 030a add.w r3, r2, #10 + 80073ae: 9300 str r3, [sp, #0] + 80073b0: b293 uxth r3, r2 + 80073b2: 460a mov r2, r1 + 80073b4: f890 1160 ldrb.w r1, [r0, #352] ; 0x160 + 80073b8: f8d0 015c ldr.w r0, [r0, #348] ; 0x15c + 80073bc: f001 fbb2 bl 8008b24 <HAL_I2C_Master_Transmit> + 80073c0: b003 add sp, #12 + 80073c2: f85d fb04 ldr.w pc, [sp], #4 + +080073c6 <_I2CRead>: + 80073c6: b513 push {r0, r1, r4, lr} + 80073c8: f102 030a add.w r3, r2, #10 + 80073cc: f890 4160 ldrb.w r4, [r0, #352] ; 0x160 + 80073d0: 9300 str r3, [sp, #0] + 80073d2: f8d0 015c ldr.w r0, [r0, #348] ; 0x15c + 80073d6: b293 uxth r3, r2 + 80073d8: 460a mov r2, r1 + 80073da: f044 0101 orr.w r1, r4, #1 + 80073de: f001 fc37 bl 8008c50 <HAL_I2C_Master_Receive> + 80073e2: b002 add sp, #8 + 80073e4: bd10 pop {r4, pc} + ... + +080073e8 <VL53L0X_WriteMulti>: + 80073e8: 2b3f cmp r3, #63 ; 0x3f + 80073ea: b5f8 push {r3, r4, r5, r6, r7, lr} + 80073ec: 460e mov r6, r1 + 80073ee: 4605 mov r5, r0 + 80073f0: 4611 mov r1, r2 + 80073f2: 461c mov r4, r3 + 80073f4: d811 bhi.n 800741a <VL53L0X_WriteMulti+0x32> + 80073f6: 4f0a ldr r7, [pc, #40] ; (8007420 <VL53L0X_WriteMulti+0x38>) + 80073f8: 4638 mov r0, r7 + 80073fa: 461a mov r2, r3 + 80073fc: f800 6b01 strb.w r6, [r0], #1 + 8007400: f00d f833 bl 801446a <memcpy> + 8007404: 1c62 adds r2, r4, #1 + 8007406: 4639 mov r1, r7 + 8007408: 4628 mov r0, r5 + 800740a: f7ff ffcd bl 80073a8 <_I2CWrite> + 800740e: 2800 cmp r0, #0 + 8007410: bf0c ite eq + 8007412: 2000 moveq r0, #0 + 8007414: f06f 0013 mvnne.w r0, #19 + 8007418: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800741a: f06f 0003 mvn.w r0, #3 + 800741e: e7fb b.n 8007418 <VL53L0X_WriteMulti+0x30> + 8007420: 20000f04 .word 0x20000f04 + +08007424 <VL53L0X_ReadMulti>: + 8007424: b573 push {r0, r1, r4, r5, r6, lr} + 8007426: 4615 mov r5, r2 + 8007428: f88d 1007 strb.w r1, [sp, #7] + 800742c: 2201 movs r2, #1 + 800742e: f10d 0107 add.w r1, sp, #7 + 8007432: 4604 mov r4, r0 + 8007434: 461e mov r6, r3 + 8007436: f7ff ffb7 bl 80073a8 <_I2CWrite> + 800743a: b928 cbnz r0, 8007448 <VL53L0X_ReadMulti+0x24> + 800743c: 4632 mov r2, r6 + 800743e: 4629 mov r1, r5 + 8007440: 4620 mov r0, r4 + 8007442: f7ff ffc0 bl 80073c6 <_I2CRead> + 8007446: b108 cbz r0, 800744c <VL53L0X_ReadMulti+0x28> + 8007448: f06f 0013 mvn.w r0, #19 + 800744c: b002 add sp, #8 + 800744e: bd70 pop {r4, r5, r6, pc} + +08007450 <VL53L0X_WrByte>: + 8007450: b508 push {r3, lr} + 8007452: 4b06 ldr r3, [pc, #24] ; (800746c <VL53L0X_WrByte+0x1c>) + 8007454: 7019 strb r1, [r3, #0] + 8007456: 705a strb r2, [r3, #1] + 8007458: 4619 mov r1, r3 + 800745a: 2202 movs r2, #2 + 800745c: f7ff ffa4 bl 80073a8 <_I2CWrite> + 8007460: 2800 cmp r0, #0 + 8007462: bf14 ite ne + 8007464: f06f 0013 mvnne.w r0, #19 + 8007468: 2000 moveq r0, #0 + 800746a: bd08 pop {r3, pc} + 800746c: 20000f04 .word 0x20000f04 + +08007470 <VL53L0X_WrWord>: + 8007470: b508 push {r3, lr} + 8007472: 4b07 ldr r3, [pc, #28] ; (8007490 <VL53L0X_WrWord+0x20>) + 8007474: 7019 strb r1, [r3, #0] + 8007476: 0a11 lsrs r1, r2, #8 + 8007478: 7059 strb r1, [r3, #1] + 800747a: 709a strb r2, [r3, #2] + 800747c: 4619 mov r1, r3 + 800747e: 2203 movs r2, #3 + 8007480: f7ff ff92 bl 80073a8 <_I2CWrite> + 8007484: 2800 cmp r0, #0 + 8007486: bf14 ite ne + 8007488: f06f 0013 mvnne.w r0, #19 + 800748c: 2000 moveq r0, #0 + 800748e: bd08 pop {r3, pc} + 8007490: 20000f04 .word 0x20000f04 + +08007494 <VL53L0X_RdByte>: + 8007494: b537 push {r0, r1, r2, r4, r5, lr} + 8007496: 4615 mov r5, r2 + 8007498: f88d 1007 strb.w r1, [sp, #7] + 800749c: 2201 movs r2, #1 + 800749e: f10d 0107 add.w r1, sp, #7 + 80074a2: 4604 mov r4, r0 + 80074a4: f7ff ff80 bl 80073a8 <_I2CWrite> + 80074a8: b928 cbnz r0, 80074b6 <VL53L0X_RdByte+0x22> + 80074aa: 2201 movs r2, #1 + 80074ac: 4629 mov r1, r5 + 80074ae: 4620 mov r0, r4 + 80074b0: f7ff ff89 bl 80073c6 <_I2CRead> + 80074b4: b108 cbz r0, 80074ba <VL53L0X_RdByte+0x26> + 80074b6: f06f 0013 mvn.w r0, #19 + 80074ba: b003 add sp, #12 + 80074bc: bd30 pop {r4, r5, pc} + +080074be <VL53L0X_UpdateByte>: + 80074be: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 80074c0: 4615 mov r5, r2 + 80074c2: f10d 0207 add.w r2, sp, #7 + 80074c6: 4606 mov r6, r0 + 80074c8: 460f mov r7, r1 + 80074ca: 461c mov r4, r3 + 80074cc: f7ff ffe2 bl 8007494 <VL53L0X_RdByte> + 80074d0: b950 cbnz r0, 80074e8 <VL53L0X_UpdateByte+0x2a> + 80074d2: f89d 3007 ldrb.w r3, [sp, #7] + 80074d6: 401d ands r5, r3 + 80074d8: ea44 0205 orr.w r2, r4, r5 + 80074dc: 4639 mov r1, r7 + 80074de: 4630 mov r0, r6 + 80074e0: f88d 2007 strb.w r2, [sp, #7] + 80074e4: f7ff ffb4 bl 8007450 <VL53L0X_WrByte> + 80074e8: b003 add sp, #12 + 80074ea: bdf0 pop {r4, r5, r6, r7, pc} + +080074ec <VL53L0X_RdWord>: + 80074ec: b573 push {r0, r1, r4, r5, r6, lr} + 80074ee: 4614 mov r4, r2 + 80074f0: f88d 1007 strb.w r1, [sp, #7] + 80074f4: 2201 movs r2, #1 + 80074f6: f10d 0107 add.w r1, sp, #7 + 80074fa: 4606 mov r6, r0 + 80074fc: f7ff ff54 bl 80073a8 <_I2CWrite> + 8007500: b118 cbz r0, 800750a <VL53L0X_RdWord+0x1e> + 8007502: f06f 0013 mvn.w r0, #19 + 8007506: b002 add sp, #8 + 8007508: bd70 pop {r4, r5, r6, pc} + 800750a: 4d07 ldr r5, [pc, #28] ; (8007528 <VL53L0X_RdWord+0x3c>) + 800750c: 2202 movs r2, #2 + 800750e: 4629 mov r1, r5 + 8007510: 4630 mov r0, r6 + 8007512: f7ff ff58 bl 80073c6 <_I2CRead> + 8007516: 2800 cmp r0, #0 + 8007518: d1f3 bne.n 8007502 <VL53L0X_RdWord+0x16> + 800751a: 782a ldrb r2, [r5, #0] + 800751c: 786b ldrb r3, [r5, #1] + 800751e: eb03 2302 add.w r3, r3, r2, lsl #8 + 8007522: 8023 strh r3, [r4, #0] + 8007524: e7ef b.n 8007506 <VL53L0X_RdWord+0x1a> + 8007526: bf00 nop + 8007528: 20000f04 .word 0x20000f04 + +0800752c <VL53L0X_RdDWord>: + 800752c: b573 push {r0, r1, r4, r5, r6, lr} + 800752e: 4614 mov r4, r2 + 8007530: f88d 1007 strb.w r1, [sp, #7] + 8007534: 2201 movs r2, #1 + 8007536: f10d 0107 add.w r1, sp, #7 + 800753a: 4606 mov r6, r0 + 800753c: f7ff ff34 bl 80073a8 <_I2CWrite> + 8007540: b118 cbz r0, 800754a <VL53L0X_RdDWord+0x1e> + 8007542: f06f 0013 mvn.w r0, #19 + 8007546: b002 add sp, #8 + 8007548: bd70 pop {r4, r5, r6, pc} + 800754a: 4d0a ldr r5, [pc, #40] ; (8007574 <VL53L0X_RdDWord+0x48>) + 800754c: 2204 movs r2, #4 + 800754e: 4629 mov r1, r5 + 8007550: 4630 mov r0, r6 + 8007552: f7ff ff38 bl 80073c6 <_I2CRead> + 8007556: 2800 cmp r0, #0 + 8007558: d1f3 bne.n 8007542 <VL53L0X_RdDWord+0x16> + 800755a: 786b ldrb r3, [r5, #1] + 800755c: 782a ldrb r2, [r5, #0] + 800755e: 041b lsls r3, r3, #16 + 8007560: eb03 6302 add.w r3, r3, r2, lsl #24 + 8007564: 78ea ldrb r2, [r5, #3] + 8007566: 4413 add r3, r2 + 8007568: 78aa ldrb r2, [r5, #2] + 800756a: eb03 2302 add.w r3, r3, r2, lsl #8 + 800756e: 6023 str r3, [r4, #0] + 8007570: e7e9 b.n 8007546 <VL53L0X_RdDWord+0x1a> + 8007572: bf00 nop + 8007574: 20000f04 .word 0x20000f04 + +08007578 <VL53L0X_PollingDelay>: + 8007578: b508 push {r3, lr} + 800757a: 2002 movs r0, #2 + 800757c: f7fb fb10 bl 8002ba0 <HAL_Delay> + 8007580: 2000 movs r0, #0 + 8007582: bd08 pop {r3, pc} + +08007584 <SystemInit>: + 8007584: 4770 bx lr + ... + +08007588 <HAL_Init>: + 8007588: b510 push {r4, lr} + 800758a: 2003 movs r0, #3 + 800758c: f000 fc72 bl 8007e74 <HAL_NVIC_SetPriorityGrouping> + 8007590: f001 fdaa bl 80090e8 <HAL_RCC_GetHCLKFreq> + 8007594: 4b06 ldr r3, [pc, #24] ; (80075b0 <HAL_Init+0x28>) + 8007596: 6018 str r0, [r3, #0] + 8007598: 200f movs r0, #15 + 800759a: f7fb faf7 bl 8002b8c <HAL_InitTick> + 800759e: 4604 mov r4, r0 + 80075a0: b918 cbnz r0, 80075aa <HAL_Init+0x22> + 80075a2: f7fb f944 bl 800282e <HAL_MspInit> + 80075a6: 4620 mov r0, r4 + 80075a8: bd10 pop {r4, pc} + 80075aa: 2401 movs r4, #1 + 80075ac: e7fb b.n 80075a6 <HAL_Init+0x1e> + 80075ae: bf00 nop + 80075b0: 20000828 .word 0x20000828 + +080075b4 <HAL_SuspendTick>: + 80075b4: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 + 80075b8: 6913 ldr r3, [r2, #16] + 80075ba: f023 0302 bic.w r3, r3, #2 + 80075be: 6113 str r3, [r2, #16] + 80075c0: 4770 bx lr + +080075c2 <HAL_ResumeTick>: + 80075c2: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 + 80075c6: 6913 ldr r3, [r2, #16] + 80075c8: f043 0302 orr.w r3, r3, #2 + 80075cc: 6113 str r3, [r2, #16] + 80075ce: 4770 bx lr + +080075d0 <HAL_GetUIDw0>: + 80075d0: 4b01 ldr r3, [pc, #4] ; (80075d8 <HAL_GetUIDw0+0x8>) + 80075d2: f8d3 0590 ldr.w r0, [r3, #1424] ; 0x590 + 80075d6: 4770 bx lr + 80075d8: 1fff7000 .word 0x1fff7000 + +080075dc <HAL_GetUIDw1>: + 80075dc: 4b01 ldr r3, [pc, #4] ; (80075e4 <HAL_GetUIDw1+0x8>) + 80075de: f8d3 0594 ldr.w r0, [r3, #1428] ; 0x594 + 80075e2: 4770 bx lr + 80075e4: 1fff7000 .word 0x1fff7000 + +080075e8 <HAL_GetUIDw2>: + 80075e8: 4b01 ldr r3, [pc, #4] ; (80075f0 <HAL_GetUIDw2+0x8>) + 80075ea: f8d3 0598 ldr.w r0, [r3, #1432] ; 0x598 + 80075ee: 4770 bx lr + 80075f0: 1fff7000 .word 0x1fff7000 + +080075f4 <HAL_DBGMCU_EnableDBGSleepMode>: + 80075f4: 4a02 ldr r2, [pc, #8] ; (8007600 <HAL_DBGMCU_EnableDBGSleepMode+0xc>) + 80075f6: 6853 ldr r3, [r2, #4] + 80075f8: f043 0301 orr.w r3, r3, #1 + 80075fc: 6053 str r3, [r2, #4] + 80075fe: 4770 bx lr + 8007600: e0042000 .word 0xe0042000 + +08007604 <HAL_DBGMCU_EnableDBGStopMode>: + 8007604: 4a02 ldr r2, [pc, #8] ; (8007610 <HAL_DBGMCU_EnableDBGStopMode+0xc>) + 8007606: 6853 ldr r3, [r2, #4] + 8007608: f043 0302 orr.w r3, r3, #2 + 800760c: 6053 str r3, [r2, #4] + 800760e: 4770 bx lr + 8007610: e0042000 .word 0xe0042000 + +08007614 <HAL_DBGMCU_EnableDBGStandbyMode>: + 8007614: 4a02 ldr r2, [pc, #8] ; (8007620 <HAL_DBGMCU_EnableDBGStandbyMode+0xc>) + 8007616: 6853 ldr r3, [r2, #4] + 8007618: f043 0304 orr.w r3, r3, #4 + 800761c: 6053 str r3, [r2, #4] + 800761e: 4770 bx lr + 8007620: e0042000 .word 0xe0042000 + +08007624 <LL_ADC_REG_IsConversionOngoing>: + 8007624: 6880 ldr r0, [r0, #8] + 8007626: f3c0 0080 ubfx r0, r0, #2, #1 + 800762a: 4770 bx lr + +0800762c <HAL_ADC_Init>: + 800762c: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 800762e: 2300 movs r3, #0 + 8007630: 9301 str r3, [sp, #4] + 8007632: 4604 mov r4, r0 + 8007634: 2800 cmp r0, #0 + 8007636: f000 80e9 beq.w 800780c <HAL_ADC_Init+0x1e0> + 800763a: 6d85 ldr r5, [r0, #88] ; 0x58 + 800763c: b925 cbnz r5, 8007648 <HAL_ADC_Init+0x1c> + 800763e: f7fa fc11 bl 8001e64 <HAL_ADC_MspInit> + 8007642: 65e5 str r5, [r4, #92] ; 0x5c + 8007644: f884 5054 strb.w r5, [r4, #84] ; 0x54 + 8007648: 6823 ldr r3, [r4, #0] + 800764a: 689a ldr r2, [r3, #8] + 800764c: 00d0 lsls r0, r2, #3 + 800764e: f140 80a1 bpl.w 8007794 <HAL_ADC_Init+0x168> + 8007652: 689a ldr r2, [r3, #8] + 8007654: 00d1 lsls r1, r2, #3 + 8007656: f100 80b4 bmi.w 80077c2 <HAL_ADC_Init+0x196> + 800765a: 6da2 ldr r2, [r4, #88] ; 0x58 + 800765c: f042 0210 orr.w r2, r2, #16 + 8007660: 65a2 str r2, [r4, #88] ; 0x58 + 8007662: 6de2 ldr r2, [r4, #92] ; 0x5c + 8007664: f042 0201 orr.w r2, r2, #1 + 8007668: 65e2 str r2, [r4, #92] ; 0x5c + 800766a: 2501 movs r5, #1 + 800766c: 4618 mov r0, r3 + 800766e: f7ff ffd9 bl 8007624 <LL_ADC_REG_IsConversionOngoing> + 8007672: 6da2 ldr r2, [r4, #88] ; 0x58 + 8007674: f002 0210 and.w r2, r2, #16 + 8007678: 4302 orrs r2, r0 + 800767a: f040 80c9 bne.w 8007810 <HAL_ADC_Init+0x1e4> + 800767e: 6da2 ldr r2, [r4, #88] ; 0x58 + 8007680: 6920 ldr r0, [r4, #16] + 8007682: f422 7281 bic.w r2, r2, #258 ; 0x102 + 8007686: f042 0202 orr.w r2, r2, #2 + 800768a: 65a2 str r2, [r4, #88] ; 0x58 + 800768c: 689a ldr r2, [r3, #8] + 800768e: 07d2 lsls r2, r2, #31 + 8007690: d45d bmi.n 800774e <HAL_ADC_Init+0x122> + 8007692: 6b22 ldr r2, [r4, #48] ; 0x30 + 8007694: 7ea6 ldrb r6, [r4, #26] + 8007696: f894 c02c ldrb.w ip, [r4, #44] ; 0x2c + 800769a: 3a00 subs r2, #0 + 800769c: bf18 it ne + 800769e: 2201 movne r2, #1 + 80076a0: 0317 lsls r7, r2, #12 + 80076a2: e9d4 1202 ldrd r1, r2, [r4, #8] + 80076a6: 430a orrs r2, r1 + 80076a8: 7e21 ldrb r1, [r4, #24] + 80076aa: ea42 3281 orr.w r2, r2, r1, lsl #14 + 80076ae: 7e61 ldrb r1, [r4, #25] + 80076b0: ea42 32c1 orr.w r2, r2, r1, lsl #15 + 80076b4: ea42 3246 orr.w r2, r2, r6, lsl #13 + 80076b8: 2800 cmp r0, #0 + 80076ba: ea42 024c orr.w r2, r2, ip, lsl #1 + 80076be: bfb4 ite lt + 80076c0: f020 4100 biclt.w r1, r0, #2147483648 ; 0x80000000 + 80076c4: f44f 1100 movge.w r1, #2097152 ; 0x200000 + 80076c8: 433a orrs r2, r7 + 80076ca: 430a orrs r2, r1 + 80076cc: f894 1020 ldrb.w r1, [r4, #32] + 80076d0: 2901 cmp r1, #1 + 80076d2: d103 bne.n 80076dc <HAL_ADC_Init+0xb0> + 80076d4: 2e00 cmp r6, #0 + 80076d6: d176 bne.n 80077c6 <HAL_ADC_Init+0x19a> + 80076d8: f442 3280 orr.w r2, r2, #65536 ; 0x10000 + 80076dc: 6a61 ldr r1, [r4, #36] ; 0x24 + 80076de: b121 cbz r1, 80076ea <HAL_ADC_Init+0xbe> + 80076e0: 6aa6 ldr r6, [r4, #40] ; 0x28 + 80076e2: f401 71e0 and.w r1, r1, #448 ; 0x1c0 + 80076e6: 4331 orrs r1, r6 + 80076e8: 430a orrs r2, r1 + 80076ea: 68d9 ldr r1, [r3, #12] + 80076ec: 6ce6 ldr r6, [r4, #76] ; 0x4c + 80076ee: f421 31fe bic.w r1, r1, #130048 ; 0x1fc00 + 80076f2: f421 71ff bic.w r1, r1, #510 ; 0x1fe + 80076f6: 4311 orrs r1, r2 + 80076f8: 60d9 str r1, [r3, #12] + 80076fa: f894 203c ldrb.w r2, [r4, #60] ; 0x3c + 80076fe: 6861 ldr r1, [r4, #4] + 8007700: 2a01 cmp r2, #1 + 8007702: f001 4c40 and.w ip, r1, #3221225472 ; 0xc0000000 + 8007706: ea4c 0606 orr.w r6, ip, r6 + 800770a: d109 bne.n 8007720 <HAL_ADC_Init+0xf4> + 800770c: e9d4 2710 ldrd r2, r7, [r4, #64] ; 0x40 + 8007710: 433a orrs r2, r7 + 8007712: 4332 orrs r2, r6 + 8007714: 6ca6 ldr r6, [r4, #72] ; 0x48 + 8007716: 4332 orrs r2, r6 + 8007718: ea42 020c orr.w r2, r2, ip + 800771c: f042 0601 orr.w r6, r2, #1 + 8007720: 691f ldr r7, [r3, #16] + 8007722: 4a3e ldr r2, [pc, #248] ; (800781c <HAL_ADC_Init+0x1f0>) + 8007724: 403a ands r2, r7 + 8007726: 4332 orrs r2, r6 + 8007728: 611a str r2, [r3, #16] + 800772a: f021 4200 bic.w r2, r1, #2147483648 ; 0x80000000 + 800772e: f1b2 4f80 cmp.w r2, #1073741824 ; 0x40000000 + 8007732: d00c beq.n 800774e <HAL_ADC_Init+0x122> + 8007734: f1b1 4f00 cmp.w r1, #2147483648 ; 0x80000000 + 8007738: d009 beq.n 800774e <HAL_ADC_Init+0x122> + 800773a: 4e39 ldr r6, [pc, #228] ; (8007820 <HAL_ADC_Init+0x1f4>) + 800773c: f8d6 2708 ldr.w r2, [r6, #1800] ; 0x708 + 8007740: f401 1170 and.w r1, r1, #3932160 ; 0x3c0000 + 8007744: f422 1270 bic.w r2, r2, #3932160 ; 0x3c0000 + 8007748: 430a orrs r2, r1 + 800774a: f8c6 2708 str.w r2, [r6, #1800] ; 0x708 + 800774e: 695a ldr r2, [r3, #20] + 8007750: 6b66 ldr r6, [r4, #52] ; 0x34 + 8007752: 6ba1 ldr r1, [r4, #56] ; 0x38 + 8007754: f022 0207 bic.w r2, r2, #7 + 8007758: 4332 orrs r2, r6 + 800775a: 615a str r2, [r3, #20] + 800775c: 695a ldr r2, [r3, #20] + 800775e: f022 0270 bic.w r2, r2, #112 ; 0x70 + 8007762: ea42 1201 orr.w r2, r2, r1, lsl #4 + 8007766: 615a str r2, [r3, #20] + 8007768: 2800 cmp r0, #0 + 800776a: d135 bne.n 80077d8 <HAL_ADC_Init+0x1ac> + 800776c: 6a9a ldr r2, [r3, #40] ; 0x28 + 800776e: f062 020f orn r2, r2, #15 + 8007772: 629a str r2, [r3, #40] ; 0x28 + 8007774: 695b ldr r3, [r3, #20] + 8007776: f003 0307 and.w r3, r3, #7 + 800777a: 429e cmp r6, r3 + 800777c: d13c bne.n 80077f8 <HAL_ADC_Init+0x1cc> + 800777e: 2300 movs r3, #0 + 8007780: 65e3 str r3, [r4, #92] ; 0x5c + 8007782: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007784: f023 0303 bic.w r3, r3, #3 + 8007788: f043 0301 orr.w r3, r3, #1 + 800778c: 65a3 str r3, [r4, #88] ; 0x58 + 800778e: 4628 mov r0, r5 + 8007790: b003 add sp, #12 + 8007792: bdf0 pop {r4, r5, r6, r7, pc} + 8007794: 689a ldr r2, [r3, #8] + 8007796: 4923 ldr r1, [pc, #140] ; (8007824 <HAL_ADC_Init+0x1f8>) + 8007798: f022 4210 bic.w r2, r2, #2415919104 ; 0x90000000 + 800779c: f022 0217 bic.w r2, r2, #23 + 80077a0: f042 5280 orr.w r2, r2, #268435456 ; 0x10000000 + 80077a4: 609a str r2, [r3, #8] + 80077a6: 4a20 ldr r2, [pc, #128] ; (8007828 <HAL_ADC_Init+0x1fc>) + 80077a8: 6812 ldr r2, [r2, #0] + 80077aa: fbb2 f2f1 udiv r2, r2, r1 + 80077ae: 3201 adds r2, #1 + 80077b0: 0052 lsls r2, r2, #1 + 80077b2: 9201 str r2, [sp, #4] + 80077b4: 9a01 ldr r2, [sp, #4] + 80077b6: 2a00 cmp r2, #0 + 80077b8: f43f af4b beq.w 8007652 <HAL_ADC_Init+0x26> + 80077bc: 9a01 ldr r2, [sp, #4] + 80077be: 3a01 subs r2, #1 + 80077c0: e7f7 b.n 80077b2 <HAL_ADC_Init+0x186> + 80077c2: 2500 movs r5, #0 + 80077c4: e752 b.n 800766c <HAL_ADC_Init+0x40> + 80077c6: 6da1 ldr r1, [r4, #88] ; 0x58 + 80077c8: f041 0120 orr.w r1, r1, #32 + 80077cc: 65a1 str r1, [r4, #88] ; 0x58 + 80077ce: 6de1 ldr r1, [r4, #92] ; 0x5c + 80077d0: f041 0101 orr.w r1, r1, #1 + 80077d4: 65e1 str r1, [r4, #92] ; 0x5c + 80077d6: e781 b.n 80076dc <HAL_ADC_Init+0xb0> + 80077d8: f5b0 1f00 cmp.w r0, #2097152 ; 0x200000 + 80077dc: d1ca bne.n 8007774 <HAL_ADC_Init+0x148> + 80077de: 6a9a ldr r2, [r3, #40] ; 0x28 + 80077e0: 69e2 ldr r2, [r4, #28] + 80077e2: 3a01 subs r2, #1 + 80077e4: 0092 lsls r2, r2, #2 + 80077e6: f06f 010f mvn.w r1, #15 + 80077ea: f002 021c and.w r2, r2, #28 + 80077ee: fa01 f202 lsl.w r2, r1, r2 + 80077f2: 6e21 ldr r1, [r4, #96] ; 0x60 + 80077f4: 430a orrs r2, r1 + 80077f6: e7bc b.n 8007772 <HAL_ADC_Init+0x146> + 80077f8: 6da3 ldr r3, [r4, #88] ; 0x58 + 80077fa: f023 0312 bic.w r3, r3, #18 + 80077fe: f043 0310 orr.w r3, r3, #16 + 8007802: 65a3 str r3, [r4, #88] ; 0x58 + 8007804: 6de3 ldr r3, [r4, #92] ; 0x5c + 8007806: f043 0301 orr.w r3, r3, #1 + 800780a: 65e3 str r3, [r4, #92] ; 0x5c + 800780c: 2501 movs r5, #1 + 800780e: e7be b.n 800778e <HAL_ADC_Init+0x162> + 8007810: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007812: f043 0310 orr.w r3, r3, #16 + 8007816: 65a3 str r3, [r4, #88] ; 0x58 + 8007818: e7f8 b.n 800780c <HAL_ADC_Init+0x1e0> + 800781a: bf00 nop + 800781c: 1ffffc02 .word 0x1ffffc02 + 8007820: 40012000 .word 0x40012000 + 8007824: 00030d40 .word 0x00030d40 + 8007828: 20000828 .word 0x20000828 + +0800782c <HAL_ADC_PollForConversion>: + 800782c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800782e: 6945 ldr r5, [r0, #20] + 8007830: 2d08 cmp r5, #8 + 8007832: 4604 mov r4, r0 + 8007834: 460e mov r6, r1 + 8007836: d00a beq.n 800784e <HAL_ADC_PollForConversion+0x22> + 8007838: 6803 ldr r3, [r0, #0] + 800783a: 68db ldr r3, [r3, #12] + 800783c: 07d8 lsls r0, r3, #31 + 800783e: d505 bpl.n 800784c <HAL_ADC_PollForConversion+0x20> + 8007840: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007842: f043 0320 orr.w r3, r3, #32 + 8007846: 65a3 str r3, [r4, #88] ; 0x58 + 8007848: 2001 movs r0, #1 + 800784a: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800784c: 2504 movs r5, #4 + 800784e: f7fb f99f bl 8002b90 <HAL_GetTick> + 8007852: 4607 mov r7, r0 + 8007854: 6823 ldr r3, [r4, #0] + 8007856: 681a ldr r2, [r3, #0] + 8007858: 422a tst r2, r5 + 800785a: d021 beq.n 80078a0 <HAL_ADC_PollForConversion+0x74> + 800785c: 6da2 ldr r2, [r4, #88] ; 0x58 + 800785e: f442 7200 orr.w r2, r2, #512 ; 0x200 + 8007862: 65a2 str r2, [r4, #88] ; 0x58 + 8007864: 68da ldr r2, [r3, #12] + 8007866: f412 6f40 tst.w r2, #3072 ; 0xc00 + 800786a: d114 bne.n 8007896 <HAL_ADC_PollForConversion+0x6a> + 800786c: 7ea2 ldrb r2, [r4, #26] + 800786e: b992 cbnz r2, 8007896 <HAL_ADC_PollForConversion+0x6a> + 8007870: 681a ldr r2, [r3, #0] + 8007872: 0712 lsls r2, r2, #28 + 8007874: d50f bpl.n 8007896 <HAL_ADC_PollForConversion+0x6a> + 8007876: 4618 mov r0, r3 + 8007878: f7ff fed4 bl 8007624 <LL_ADC_REG_IsConversionOngoing> + 800787c: bb28 cbnz r0, 80078ca <HAL_ADC_PollForConversion+0x9e> + 800787e: 685a ldr r2, [r3, #4] + 8007880: f022 020c bic.w r2, r2, #12 + 8007884: 605a str r2, [r3, #4] + 8007886: 6da2 ldr r2, [r4, #88] ; 0x58 + 8007888: f422 7280 bic.w r2, r2, #256 ; 0x100 + 800788c: f022 0201 bic.w r2, r2, #1 + 8007890: f042 0201 orr.w r2, r2, #1 + 8007894: 65a2 str r2, [r4, #88] ; 0x58 + 8007896: 7e20 ldrb r0, [r4, #24] + 8007898: bb00 cbnz r0, 80078dc <HAL_ADC_PollForConversion+0xb0> + 800789a: 220c movs r2, #12 + 800789c: 601a str r2, [r3, #0] + 800789e: e7d4 b.n 800784a <HAL_ADC_PollForConversion+0x1e> + 80078a0: 1c71 adds r1, r6, #1 + 80078a2: d0d8 beq.n 8007856 <HAL_ADC_PollForConversion+0x2a> + 80078a4: f7fb f974 bl 8002b90 <HAL_GetTick> + 80078a8: 1bc0 subs r0, r0, r7 + 80078aa: 42b0 cmp r0, r6 + 80078ac: d801 bhi.n 80078b2 <HAL_ADC_PollForConversion+0x86> + 80078ae: 2e00 cmp r6, #0 + 80078b0: d1d0 bne.n 8007854 <HAL_ADC_PollForConversion+0x28> + 80078b2: 6823 ldr r3, [r4, #0] + 80078b4: 681b ldr r3, [r3, #0] + 80078b6: 402b ands r3, r5 + 80078b8: d1cc bne.n 8007854 <HAL_ADC_PollForConversion+0x28> + 80078ba: 6da2 ldr r2, [r4, #88] ; 0x58 + 80078bc: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 80078c0: f042 0204 orr.w r2, r2, #4 + 80078c4: 65a2 str r2, [r4, #88] ; 0x58 + 80078c6: 2003 movs r0, #3 + 80078c8: e7bf b.n 800784a <HAL_ADC_PollForConversion+0x1e> + 80078ca: 6da2 ldr r2, [r4, #88] ; 0x58 + 80078cc: f042 0220 orr.w r2, r2, #32 + 80078d0: 65a2 str r2, [r4, #88] ; 0x58 + 80078d2: 6de2 ldr r2, [r4, #92] ; 0x5c + 80078d4: f042 0201 orr.w r2, r2, #1 + 80078d8: 65e2 str r2, [r4, #92] ; 0x5c + 80078da: e7dc b.n 8007896 <HAL_ADC_PollForConversion+0x6a> + 80078dc: 2000 movs r0, #0 + 80078de: e7b4 b.n 800784a <HAL_ADC_PollForConversion+0x1e> + +080078e0 <HAL_ADC_GetValue>: + 80078e0: 6803 ldr r3, [r0, #0] + 80078e2: 6c18 ldr r0, [r3, #64] ; 0x40 + 80078e4: 4770 bx lr + ... + +080078e8 <HAL_ADC_ConfigChannel>: + 80078e8: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 80078ea: 2300 movs r3, #0 + 80078ec: 9301 str r3, [sp, #4] + 80078ee: f890 3054 ldrb.w r3, [r0, #84] ; 0x54 + 80078f2: 2b01 cmp r3, #1 + 80078f4: 4604 mov r4, r0 + 80078f6: f000 80c5 beq.w 8007a84 <HAL_ADC_ConfigChannel+0x19c> + 80078fa: 6805 ldr r5, [r0, #0] + 80078fc: 6906 ldr r6, [r0, #16] + 80078fe: 2301 movs r3, #1 + 8007900: f880 3054 strb.w r3, [r0, #84] ; 0x54 + 8007904: 4628 mov r0, r5 + 8007906: f7ff fe8d bl 8007624 <LL_ADC_REG_IsConversionOngoing> + 800790a: 2800 cmp r0, #0 + 800790c: f040 80b4 bne.w 8007a78 <HAL_ADC_ConfigChannel+0x190> + 8007910: e9d1 2000 ldrd r2, r0, [r1] + 8007914: 2802 cmp r0, #2 + 8007916: f026 0304 bic.w r3, r6, #4 + 800791a: f000 8082 beq.w 8007a22 <HAL_ADC_ConfigChannel+0x13a> + 800791e: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 8007922: f3c2 0e11 ubfx lr, r2, #0, #18 + 8007926: d113 bne.n 8007950 <HAL_ADC_ConfigChannel+0x68> + 8007928: 6aab ldr r3, [r5, #40] ; 0x28 + 800792a: ea43 030e orr.w r3, r3, lr + 800792e: 62ab str r3, [r5, #40] ; 0x28 + 8007930: 688b ldr r3, [r1, #8] + 8007932: 6968 ldr r0, [r5, #20] + 8007934: ea03 2302 and.w r3, r3, r2, lsl #8 + 8007938: f023 437c bic.w r3, r3, #4227858432 ; 0xfc000000 + 800793c: f023 03ff bic.w r3, r3, #255 ; 0xff + 8007940: ea20 2102 bic.w r1, r0, r2, lsl #8 + 8007944: 430b orrs r3, r1 + 8007946: 2a00 cmp r2, #0 + 8007948: 616b str r3, [r5, #20] + 800794a: db26 blt.n 800799a <HAL_ADC_ConfigChannel+0xb2> + 800794c: 2000 movs r0, #0 + 800794e: e055 b.n 80079fc <HAL_ADC_ConfigChannel+0x114> + 8007950: 6e23 ldr r3, [r4, #96] ; 0x60 + 8007952: f000 071f and.w r7, r0, #31 + 8007956: f04f 0c0f mov.w ip, #15 + 800795a: fa0c fc07 lsl.w ip, ip, r7 + 800795e: ea6f 060c mvn.w r6, ip + 8007962: ea23 0c0c bic.w ip, r3, ip + 8007966: f1be 0f00 cmp.w lr, #0 + 800796a: d111 bne.n 8007990 <HAL_ADC_ConfigChannel+0xa8> + 800796c: f3c2 6384 ubfx r3, r2, #26, #5 + 8007970: 40bb lsls r3, r7 + 8007972: ea43 030c orr.w r3, r3, ip + 8007976: 6623 str r3, [r4, #96] ; 0x60 + 8007978: 0880 lsrs r0, r0, #2 + 800797a: 69e3 ldr r3, [r4, #28] + 800797c: 3001 adds r0, #1 + 800797e: 4298 cmp r0, r3 + 8007980: d8d6 bhi.n 8007930 <HAL_ADC_ConfigChannel+0x48> + 8007982: 6aa8 ldr r0, [r5, #40] ; 0x28 + 8007984: f3c2 6383 ubfx r3, r2, #26, #4 + 8007988: 40bb lsls r3, r7 + 800798a: 4006 ands r6, r0 + 800798c: 4333 orrs r3, r6 + 800798e: e7ce b.n 800792e <HAL_ADC_ConfigChannel+0x46> + 8007990: fa92 f3a2 rbit r3, r2 + 8007994: fab3 f383 clz r3, r3 + 8007998: e7ea b.n 8007970 <HAL_ADC_ConfigChannel+0x88> + 800799a: 493b ldr r1, [pc, #236] ; (8007a88 <HAL_ADC_ConfigChannel+0x1a0>) + 800799c: 483b ldr r0, [pc, #236] ; (8007a8c <HAL_ADC_ConfigChannel+0x1a4>) + 800799e: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 80079a2: 4282 cmp r2, r0 + 80079a4: f003 75e0 and.w r5, r3, #29360128 ; 0x1c00000 + 80079a8: d119 bne.n 80079de <HAL_ADC_ConfigChannel+0xf6> + 80079aa: 021b lsls r3, r3, #8 + 80079ac: d4ce bmi.n 800794c <HAL_ADC_ConfigChannel+0x64> + 80079ae: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 80079b2: f023 73e0 bic.w r3, r3, #29360128 ; 0x1c00000 + 80079b6: 432b orrs r3, r5 + 80079b8: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 + 80079bc: f8c1 3708 str.w r3, [r1, #1800] ; 0x708 + 80079c0: 4b33 ldr r3, [pc, #204] ; (8007a90 <HAL_ADC_ConfigChannel+0x1a8>) + 80079c2: 681a ldr r2, [r3, #0] + 80079c4: 4b33 ldr r3, [pc, #204] ; (8007a94 <HAL_ADC_ConfigChannel+0x1ac>) + 80079c6: fbb2 f2f3 udiv r2, r2, r3 + 80079ca: 230c movs r3, #12 + 80079cc: fb02 3303 mla r3, r2, r3, r3 + 80079d0: 9301 str r3, [sp, #4] + 80079d2: 9b01 ldr r3, [sp, #4] + 80079d4: 2b00 cmp r3, #0 + 80079d6: d0b9 beq.n 800794c <HAL_ADC_ConfigChannel+0x64> + 80079d8: 9b01 ldr r3, [sp, #4] + 80079da: 3b01 subs r3, #1 + 80079dc: e7f8 b.n 80079d0 <HAL_ADC_ConfigChannel+0xe8> + 80079de: 482e ldr r0, [pc, #184] ; (8007a98 <HAL_ADC_ConfigChannel+0x1b0>) + 80079e0: 4282 cmp r2, r0 + 80079e2: d110 bne.n 8007a06 <HAL_ADC_ConfigChannel+0x11e> + 80079e4: f013 7080 ands.w r0, r3, #16777216 ; 0x1000000 + 80079e8: d1b0 bne.n 800794c <HAL_ADC_ConfigChannel+0x64> + 80079ea: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 80079ee: f023 73e0 bic.w r3, r3, #29360128 ; 0x1c00000 + 80079f2: 432b orrs r3, r5 + 80079f4: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 80079f8: f8c1 3708 str.w r3, [r1, #1800] ; 0x708 + 80079fc: 2300 movs r3, #0 + 80079fe: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007a02: b003 add sp, #12 + 8007a04: bdf0 pop {r4, r5, r6, r7, pc} + 8007a06: 4825 ldr r0, [pc, #148] ; (8007a9c <HAL_ADC_ConfigChannel+0x1b4>) + 8007a08: 4282 cmp r2, r0 + 8007a0a: d19f bne.n 800794c <HAL_ADC_ConfigChannel+0x64> + 8007a0c: f413 0080 ands.w r0, r3, #4194304 ; 0x400000 + 8007a10: d19c bne.n 800794c <HAL_ADC_ConfigChannel+0x64> + 8007a12: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 8007a16: f023 73e0 bic.w r3, r3, #29360128 ; 0x1c00000 + 8007a1a: 432b orrs r3, r5 + 8007a1c: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 + 8007a20: e7ea b.n 80079f8 <HAL_ADC_ConfigChannel+0x110> + 8007a22: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 8007a26: bf01 itttt eq + 8007a28: 6aab ldreq r3, [r5, #40] ; 0x28 + 8007a2a: f3c2 0111 ubfxeq r1, r2, #0, #18 + 8007a2e: 438b biceq r3, r1 + 8007a30: 62ab streq r3, [r5, #40] ; 0x28 + 8007a32: 2a00 cmp r2, #0 + 8007a34: da8a bge.n 800794c <HAL_ADC_ConfigChannel+0x64> + 8007a36: 4815 ldr r0, [pc, #84] ; (8007a8c <HAL_ADC_ConfigChannel+0x1a4>) + 8007a38: 4913 ldr r1, [pc, #76] ; (8007a88 <HAL_ADC_ConfigChannel+0x1a0>) + 8007a3a: 4282 cmp r2, r0 + 8007a3c: f8d1 3708 ldr.w r3, [r1, #1800] ; 0x708 + 8007a40: d109 bne.n 8007a56 <HAL_ADC_ConfigChannel+0x16e> + 8007a42: f8d1 2708 ldr.w r2, [r1, #1800] ; 0x708 + 8007a46: f003 73a0 and.w r3, r3, #20971520 ; 0x1400000 + 8007a4a: f022 72e0 bic.w r2, r2, #29360128 ; 0x1c00000 + 8007a4e: 4313 orrs r3, r2 + 8007a50: f8c1 3708 str.w r3, [r1, #1800] ; 0x708 + 8007a54: e77a b.n 800794c <HAL_ADC_ConfigChannel+0x64> + 8007a56: 4810 ldr r0, [pc, #64] ; (8007a98 <HAL_ADC_ConfigChannel+0x1b0>) + 8007a58: 4282 cmp r2, r0 + 8007a5a: d104 bne.n 8007a66 <HAL_ADC_ConfigChannel+0x17e> + 8007a5c: f8d1 2708 ldr.w r2, [r1, #1800] ; 0x708 + 8007a60: f403 0340 and.w r3, r3, #12582912 ; 0xc00000 + 8007a64: e7f1 b.n 8007a4a <HAL_ADC_ConfigChannel+0x162> + 8007a66: 480d ldr r0, [pc, #52] ; (8007a9c <HAL_ADC_ConfigChannel+0x1b4>) + 8007a68: 4282 cmp r2, r0 + 8007a6a: f47f af6f bne.w 800794c <HAL_ADC_ConfigChannel+0x64> + 8007a6e: f8d1 2708 ldr.w r2, [r1, #1800] ; 0x708 + 8007a72: f003 73c0 and.w r3, r3, #25165824 ; 0x1800000 + 8007a76: e7e8 b.n 8007a4a <HAL_ADC_ConfigChannel+0x162> + 8007a78: 6da2 ldr r2, [r4, #88] ; 0x58 + 8007a7a: f042 0220 orr.w r2, r2, #32 + 8007a7e: 65a2 str r2, [r4, #88] ; 0x58 + 8007a80: 4618 mov r0, r3 + 8007a82: e7bb b.n 80079fc <HAL_ADC_ConfigChannel+0x114> + 8007a84: 2002 movs r0, #2 + 8007a86: e7bc b.n 8007a02 <HAL_ADC_ConfigChannel+0x11a> + 8007a88: 40012000 .word 0x40012000 + 8007a8c: b0001000 .word 0xb0001000 + 8007a90: 20000828 .word 0x20000828 + 8007a94: 00030d40 .word 0x00030d40 + 8007a98: b8004000 .word 0xb8004000 + 8007a9c: b4002000 .word 0xb4002000 + +08007aa0 <ADC_ConversionStop>: + 8007aa0: 6802 ldr r2, [r0, #0] + 8007aa2: b538 push {r3, r4, r5, lr} + 8007aa4: 4604 mov r4, r0 + 8007aa6: 4610 mov r0, r2 + 8007aa8: f7ff fdbc bl 8007624 <LL_ADC_REG_IsConversionOngoing> + 8007aac: b908 cbnz r0, 8007ab2 <ADC_ConversionStop+0x12> + 8007aae: 2000 movs r0, #0 + 8007ab0: bd38 pop {r3, r4, r5, pc} + 8007ab2: 6893 ldr r3, [r2, #8] + 8007ab4: 0799 lsls r1, r3, #30 + 8007ab6: d407 bmi.n 8007ac8 <ADC_ConversionStop+0x28> + 8007ab8: 6893 ldr r3, [r2, #8] + 8007aba: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8007abe: f023 0317 bic.w r3, r3, #23 + 8007ac2: f043 0310 orr.w r3, r3, #16 + 8007ac6: 6093 str r3, [r2, #8] + 8007ac8: f7fb f862 bl 8002b90 <HAL_GetTick> + 8007acc: 4605 mov r5, r0 + 8007ace: 6823 ldr r3, [r4, #0] + 8007ad0: 689b ldr r3, [r3, #8] + 8007ad2: 075b lsls r3, r3, #29 + 8007ad4: d5eb bpl.n 8007aae <ADC_ConversionStop+0xe> + 8007ad6: f7fb f85b bl 8002b90 <HAL_GetTick> + 8007ada: 1b40 subs r0, r0, r5 + 8007adc: 2802 cmp r0, #2 + 8007ade: d9f6 bls.n 8007ace <ADC_ConversionStop+0x2e> + 8007ae0: 6823 ldr r3, [r4, #0] + 8007ae2: 689b ldr r3, [r3, #8] + 8007ae4: 075a lsls r2, r3, #29 + 8007ae6: d5f2 bpl.n 8007ace <ADC_ConversionStop+0x2e> + 8007ae8: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007aea: f043 0310 orr.w r3, r3, #16 + 8007aee: 65a3 str r3, [r4, #88] ; 0x58 + 8007af0: 6de3 ldr r3, [r4, #92] ; 0x5c + 8007af2: f043 0301 orr.w r3, r3, #1 + 8007af6: 65e3 str r3, [r4, #92] ; 0x5c + 8007af8: 2001 movs r0, #1 + 8007afa: e7d9 b.n 8007ab0 <ADC_ConversionStop+0x10> + +08007afc <ADC_Enable>: + 8007afc: b573 push {r0, r1, r4, r5, r6, lr} + 8007afe: 2300 movs r3, #0 + 8007b00: 6802 ldr r2, [r0, #0] + 8007b02: 9301 str r3, [sp, #4] + 8007b04: 6893 ldr r3, [r2, #8] + 8007b06: 07dd lsls r5, r3, #31 + 8007b08: 4604 mov r4, r0 + 8007b0a: d502 bpl.n 8007b12 <ADC_Enable+0x16> + 8007b0c: 2000 movs r0, #0 + 8007b0e: b002 add sp, #8 + 8007b10: bd70 pop {r4, r5, r6, pc} + 8007b12: 6891 ldr r1, [r2, #8] + 8007b14: 4b21 ldr r3, [pc, #132] ; (8007b9c <ADC_Enable+0xa0>) + 8007b16: 4219 tst r1, r3 + 8007b18: d009 beq.n 8007b2e <ADC_Enable+0x32> + 8007b1a: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007b1c: f043 0310 orr.w r3, r3, #16 + 8007b20: 65a3 str r3, [r4, #88] ; 0x58 + 8007b22: 6de3 ldr r3, [r4, #92] ; 0x5c + 8007b24: f043 0301 orr.w r3, r3, #1 + 8007b28: 65e3 str r3, [r4, #92] ; 0x5c + 8007b2a: 2001 movs r0, #1 + 8007b2c: e7ef b.n 8007b0e <ADC_Enable+0x12> + 8007b2e: 6893 ldr r3, [r2, #8] + 8007b30: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8007b34: f023 0317 bic.w r3, r3, #23 + 8007b38: f043 0301 orr.w r3, r3, #1 + 8007b3c: 6093 str r3, [r2, #8] + 8007b3e: 4b18 ldr r3, [pc, #96] ; (8007ba0 <ADC_Enable+0xa4>) + 8007b40: f8d3 3708 ldr.w r3, [r3, #1800] ; 0x708 + 8007b44: 0218 lsls r0, r3, #8 + 8007b46: d41c bmi.n 8007b82 <ADC_Enable+0x86> + 8007b48: 7e63 ldrb r3, [r4, #25] + 8007b4a: 2b01 cmp r3, #1 + 8007b4c: d0de beq.n 8007b0c <ADC_Enable+0x10> + 8007b4e: f7fb f81f bl 8002b90 <HAL_GetTick> + 8007b52: 4e14 ldr r6, [pc, #80] ; (8007ba4 <ADC_Enable+0xa8>) + 8007b54: 4605 mov r5, r0 + 8007b56: 6822 ldr r2, [r4, #0] + 8007b58: 6813 ldr r3, [r2, #0] + 8007b5a: 07db lsls r3, r3, #31 + 8007b5c: d4d6 bmi.n 8007b0c <ADC_Enable+0x10> + 8007b5e: 6893 ldr r3, [r2, #8] + 8007b60: 07d9 lsls r1, r3, #31 + 8007b62: bf5f itttt pl + 8007b64: 6893 ldrpl r3, [r2, #8] + 8007b66: 4033 andpl r3, r6 + 8007b68: f043 0301 orrpl.w r3, r3, #1 + 8007b6c: 6093 strpl r3, [r2, #8] + 8007b6e: f7fb f80f bl 8002b90 <HAL_GetTick> + 8007b72: 1b40 subs r0, r0, r5 + 8007b74: 2802 cmp r0, #2 + 8007b76: d9ee bls.n 8007b56 <ADC_Enable+0x5a> + 8007b78: 6823 ldr r3, [r4, #0] + 8007b7a: 681b ldr r3, [r3, #0] + 8007b7c: 07da lsls r2, r3, #31 + 8007b7e: d4ea bmi.n 8007b56 <ADC_Enable+0x5a> + 8007b80: e7cb b.n 8007b1a <ADC_Enable+0x1e> + 8007b82: 4b09 ldr r3, [pc, #36] ; (8007ba8 <ADC_Enable+0xac>) + 8007b84: 4a09 ldr r2, [pc, #36] ; (8007bac <ADC_Enable+0xb0>) + 8007b86: 681b ldr r3, [r3, #0] + 8007b88: fbb3 f3f2 udiv r3, r3, r2 + 8007b8c: 3301 adds r3, #1 + 8007b8e: 9301 str r3, [sp, #4] + 8007b90: 9b01 ldr r3, [sp, #4] + 8007b92: 2b00 cmp r3, #0 + 8007b94: d0d8 beq.n 8007b48 <ADC_Enable+0x4c> + 8007b96: 9b01 ldr r3, [sp, #4] + 8007b98: 3b01 subs r3, #1 + 8007b9a: e7f8 b.n 8007b8e <ADC_Enable+0x92> + 8007b9c: 80000017 .word 0x80000017 + 8007ba0: 40012000 .word 0x40012000 + 8007ba4: 7fffffe8 .word 0x7fffffe8 + 8007ba8: 20000828 .word 0x20000828 + 8007bac: 00030d40 .word 0x00030d40 + +08007bb0 <HAL_ADC_Start>: + 8007bb0: b538 push {r3, r4, r5, lr} + 8007bb2: 4604 mov r4, r0 + 8007bb4: 6800 ldr r0, [r0, #0] + 8007bb6: f7ff fd35 bl 8007624 <LL_ADC_REG_IsConversionOngoing> + 8007bba: 4605 mov r5, r0 + 8007bbc: bb20 cbnz r0, 8007c08 <HAL_ADC_Start+0x58> + 8007bbe: f894 3054 ldrb.w r3, [r4, #84] ; 0x54 + 8007bc2: 2b01 cmp r3, #1 + 8007bc4: d020 beq.n 8007c08 <HAL_ADC_Start+0x58> + 8007bc6: 2301 movs r3, #1 + 8007bc8: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007bcc: 4620 mov r0, r4 + 8007bce: f7ff ff95 bl 8007afc <ADC_Enable> + 8007bd2: b9b0 cbnz r0, 8007c02 <HAL_ADC_Start+0x52> + 8007bd4: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007bd6: 6822 ldr r2, [r4, #0] + 8007bd8: f423 6370 bic.w r3, r3, #3840 ; 0xf00 + 8007bdc: f023 0301 bic.w r3, r3, #1 + 8007be0: f443 7380 orr.w r3, r3, #256 ; 0x100 + 8007be4: 65a3 str r3, [r4, #88] ; 0x58 + 8007be6: 231c movs r3, #28 + 8007be8: 65e0 str r0, [r4, #92] ; 0x5c + 8007bea: 6013 str r3, [r2, #0] + 8007bec: f884 0054 strb.w r0, [r4, #84] ; 0x54 + 8007bf0: 6893 ldr r3, [r2, #8] + 8007bf2: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8007bf6: f023 0317 bic.w r3, r3, #23 + 8007bfa: f043 0304 orr.w r3, r3, #4 + 8007bfe: 6093 str r3, [r2, #8] + 8007c00: bd38 pop {r3, r4, r5, pc} + 8007c02: f884 5054 strb.w r5, [r4, #84] ; 0x54 + 8007c06: e7fb b.n 8007c00 <HAL_ADC_Start+0x50> + 8007c08: 2002 movs r0, #2 + 8007c0a: e7f9 b.n 8007c00 <HAL_ADC_Start+0x50> + +08007c0c <ADC_Disable>: + 8007c0c: 6802 ldr r2, [r0, #0] + 8007c0e: b538 push {r3, r4, r5, lr} + 8007c10: 6893 ldr r3, [r2, #8] + 8007c12: 6891 ldr r1, [r2, #8] + 8007c14: 4604 mov r4, r0 + 8007c16: 07c8 lsls r0, r1, #31 + 8007c18: d401 bmi.n 8007c1e <ADC_Disable+0x12> + 8007c1a: 2000 movs r0, #0 + 8007c1c: bd38 pop {r3, r4, r5, pc} + 8007c1e: 0799 lsls r1, r3, #30 + 8007c20: d4fb bmi.n 8007c1a <ADC_Disable+0xe> + 8007c22: 6893 ldr r3, [r2, #8] + 8007c24: f003 0305 and.w r3, r3, #5 + 8007c28: 2b01 cmp r3, #1 + 8007c2a: d119 bne.n 8007c60 <ADC_Disable+0x54> + 8007c2c: 6893 ldr r3, [r2, #8] + 8007c2e: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 8007c32: f023 0317 bic.w r3, r3, #23 + 8007c36: f043 0302 orr.w r3, r3, #2 + 8007c3a: 6093 str r3, [r2, #8] + 8007c3c: 2303 movs r3, #3 + 8007c3e: 6013 str r3, [r2, #0] + 8007c40: f7fa ffa6 bl 8002b90 <HAL_GetTick> + 8007c44: 4605 mov r5, r0 + 8007c46: 6823 ldr r3, [r4, #0] + 8007c48: 689b ldr r3, [r3, #8] + 8007c4a: 07db lsls r3, r3, #31 + 8007c4c: d5e5 bpl.n 8007c1a <ADC_Disable+0xe> + 8007c4e: f7fa ff9f bl 8002b90 <HAL_GetTick> + 8007c52: 1b40 subs r0, r0, r5 + 8007c54: 2802 cmp r0, #2 + 8007c56: d9f6 bls.n 8007c46 <ADC_Disable+0x3a> + 8007c58: 6823 ldr r3, [r4, #0] + 8007c5a: 689b ldr r3, [r3, #8] + 8007c5c: 07da lsls r2, r3, #31 + 8007c5e: d5f2 bpl.n 8007c46 <ADC_Disable+0x3a> + 8007c60: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007c62: f043 0310 orr.w r3, r3, #16 + 8007c66: 65a3 str r3, [r4, #88] ; 0x58 + 8007c68: 6de3 ldr r3, [r4, #92] ; 0x5c + 8007c6a: f043 0301 orr.w r3, r3, #1 + 8007c6e: 65e3 str r3, [r4, #92] ; 0x5c + 8007c70: 2001 movs r0, #1 + 8007c72: e7d3 b.n 8007c1c <ADC_Disable+0x10> + +08007c74 <HAL_ADC_DeInit>: + 8007c74: b570 push {r4, r5, r6, lr} + 8007c76: 4604 mov r4, r0 + 8007c78: 2800 cmp r0, #0 + 8007c7a: d04b beq.n 8007d14 <HAL_ADC_DeInit+0xa0> + 8007c7c: 6d83 ldr r3, [r0, #88] ; 0x58 + 8007c7e: f043 0302 orr.w r3, r3, #2 + 8007c82: 6583 str r3, [r0, #88] ; 0x58 + 8007c84: f7ff ff0c bl 8007aa0 <ADC_ConversionStop> + 8007c88: 4605 mov r5, r0 + 8007c8a: b968 cbnz r0, 8007ca8 <HAL_ADC_DeInit+0x34> + 8007c8c: 4620 mov r0, r4 + 8007c8e: f7ff ffbd bl 8007c0c <ADC_Disable> + 8007c92: 4605 mov r5, r0 + 8007c94: b908 cbnz r0, 8007c9a <HAL_ADC_DeInit+0x26> + 8007c96: 2301 movs r3, #1 + 8007c98: 65a3 str r3, [r4, #88] ; 0x58 + 8007c9a: 6822 ldr r2, [r4, #0] + 8007c9c: 6893 ldr r3, [r2, #8] + 8007c9e: f023 4310 bic.w r3, r3, #2415919104 ; 0x90000000 + 8007ca2: f023 0317 bic.w r3, r3, #23 + 8007ca6: 6093 str r3, [r2, #8] + 8007ca8: 6823 ldr r3, [r4, #0] + 8007caa: 685a ldr r2, [r3, #4] + 8007cac: f422 7267 bic.w r2, r2, #924 ; 0x39c + 8007cb0: f022 0203 bic.w r2, r2, #3 + 8007cb4: 605a str r2, [r3, #4] + 8007cb6: f240 329f movw r2, #927 ; 0x39f + 8007cba: 601a str r2, [r3, #0] + 8007cbc: 68d9 ldr r1, [r3, #12] + 8007cbe: 4a16 ldr r2, [pc, #88] ; (8007d18 <HAL_ADC_DeInit+0xa4>) + 8007cc0: 400a ands r2, r1 + 8007cc2: 60da str r2, [r3, #12] + 8007cc4: 691a ldr r2, [r3, #16] + 8007cc6: f022 4240 bic.w r2, r2, #3221225472 ; 0xc0000000 + 8007cca: 611a str r2, [r3, #16] + 8007ccc: 695a ldr r2, [r3, #20] + 8007cce: f022 0207 bic.w r2, r2, #7 + 8007cd2: 615a str r2, [r3, #20] + 8007cd4: 6a1a ldr r2, [r3, #32] + 8007cd6: f002 22f0 and.w r2, r2, #4026593280 ; 0xf000f000 + 8007cda: 621a str r2, [r3, #32] + 8007cdc: 6a5a ldr r2, [r3, #36] ; 0x24 + 8007cde: f002 22f0 and.w r2, r2, #4026593280 ; 0xf000f000 + 8007ce2: 625a str r2, [r3, #36] ; 0x24 + 8007ce4: 6ada ldr r2, [r3, #44] ; 0x2c + 8007ce6: f002 22f0 and.w r2, r2, #4026593280 ; 0xf000f000 + 8007cea: 62da str r2, [r3, #44] ; 0x2c + 8007cec: 6a9a ldr r2, [r3, #40] ; 0x28 + 8007cee: 4a0b ldr r2, [pc, #44] ; (8007d1c <HAL_ADC_DeInit+0xa8>) + 8007cf0: 2600 movs r6, #0 + 8007cf2: 629e str r6, [r3, #40] ; 0x28 + 8007cf4: f8d2 3708 ldr.w r3, [r2, #1800] ; 0x708 + 8007cf8: f023 73fe bic.w r3, r3, #33292288 ; 0x1fc0000 + 8007cfc: f8c2 3708 str.w r3, [r2, #1800] ; 0x708 + 8007d00: 4620 mov r0, r4 + 8007d02: f7fa f8c3 bl 8001e8c <HAL_ADC_MspDeInit> + 8007d06: 65e6 str r6, [r4, #92] ; 0x5c + 8007d08: 6626 str r6, [r4, #96] ; 0x60 + 8007d0a: 65a6 str r6, [r4, #88] ; 0x58 + 8007d0c: f884 6054 strb.w r6, [r4, #84] ; 0x54 + 8007d10: 4628 mov r0, r5 + 8007d12: bd70 pop {r4, r5, r6, pc} + 8007d14: 2501 movs r5, #1 + 8007d16: e7fb b.n 8007d10 <HAL_ADC_DeInit+0x9c> + 8007d18: 833e0200 .word 0x833e0200 + 8007d1c: 40012000 .word 0x40012000 + +08007d20 <HAL_ADC_Stop>: + 8007d20: b510 push {r4, lr} + 8007d22: f890 3054 ldrb.w r3, [r0, #84] ; 0x54 + 8007d26: 2b01 cmp r3, #1 + 8007d28: 4604 mov r4, r0 + 8007d2a: d015 beq.n 8007d58 <HAL_ADC_Stop+0x38> + 8007d2c: 2301 movs r3, #1 + 8007d2e: f880 3054 strb.w r3, [r0, #84] ; 0x54 + 8007d32: f7ff feb5 bl 8007aa0 <ADC_ConversionStop> + 8007d36: b958 cbnz r0, 8007d50 <HAL_ADC_Stop+0x30> + 8007d38: 4620 mov r0, r4 + 8007d3a: f7ff ff67 bl 8007c0c <ADC_Disable> + 8007d3e: b938 cbnz r0, 8007d50 <HAL_ADC_Stop+0x30> + 8007d40: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007d42: f423 7380 bic.w r3, r3, #256 ; 0x100 + 8007d46: f023 0301 bic.w r3, r3, #1 + 8007d4a: f043 0301 orr.w r3, r3, #1 + 8007d4e: 65a3 str r3, [r4, #88] ; 0x58 + 8007d50: 2300 movs r3, #0 + 8007d52: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007d56: bd10 pop {r4, pc} + 8007d58: 2002 movs r0, #2 + 8007d5a: e7fc b.n 8007d56 <HAL_ADC_Stop+0x36> + +08007d5c <HAL_ADCEx_Calibration_Start>: + 8007d5c: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8007d5e: 2300 movs r3, #0 + 8007d60: 9301 str r3, [sp, #4] + 8007d62: f890 3054 ldrb.w r3, [r0, #84] ; 0x54 + 8007d66: 2b01 cmp r3, #1 + 8007d68: 4604 mov r4, r0 + 8007d6a: d07f beq.n 8007e6c <HAL_ADCEx_Calibration_Start+0x110> + 8007d6c: 2301 movs r3, #1 + 8007d6e: f880 3054 strb.w r3, [r0, #84] ; 0x54 + 8007d72: f7ff ff4b bl 8007c0c <ADC_Disable> + 8007d76: 6823 ldr r3, [r4, #0] + 8007d78: 689a ldr r2, [r3, #8] + 8007d7a: f012 0201 ands.w r2, r2, #1 + 8007d7e: 4605 mov r5, r0 + 8007d80: d007 beq.n 8007d92 <HAL_ADCEx_Calibration_Start+0x36> + 8007d82: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007d84: f043 0310 orr.w r3, r3, #16 + 8007d88: 65a3 str r3, [r4, #88] ; 0x58 + 8007d8a: 2300 movs r3, #0 + 8007d8c: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007d90: e02d b.n 8007dee <HAL_ADCEx_Calibration_Start+0x92> + 8007d92: 6da1 ldr r1, [r4, #88] ; 0x58 + 8007d94: 4f36 ldr r7, [pc, #216] ; (8007e70 <HAL_ADCEx_Calibration_Start+0x114>) + 8007d96: f421 7181 bic.w r1, r1, #258 ; 0x102 + 8007d9a: f041 0102 orr.w r1, r1, #2 + 8007d9e: 65a1 str r1, [r4, #88] ; 0x58 + 8007da0: 68de ldr r6, [r3, #12] + 8007da2: 68d9 ldr r1, [r3, #12] + 8007da4: f426 46ff bic.w r6, r6, #32640 ; 0x7f80 + 8007da8: f026 067c bic.w r6, r6, #124 ; 0x7c + 8007dac: f421 4100 bic.w r1, r1, #32768 ; 0x8000 + 8007db0: 0436 lsls r6, r6, #16 + 8007db2: f021 0103 bic.w r1, r1, #3 + 8007db6: 0c36 lsrs r6, r6, #16 + 8007db8: 60d9 str r1, [r3, #12] + 8007dba: 2008 movs r0, #8 + 8007dbc: 6899 ldr r1, [r3, #8] + 8007dbe: 4039 ands r1, r7 + 8007dc0: f041 4100 orr.w r1, r1, #2147483648 ; 0x80000000 + 8007dc4: 6099 str r1, [r3, #8] + 8007dc6: 6899 ldr r1, [r3, #8] + 8007dc8: 2900 cmp r1, #0 + 8007dca: da13 bge.n 8007df4 <HAL_ADCEx_Calibration_Start+0x98> + 8007dcc: 9901 ldr r1, [sp, #4] + 8007dce: 3101 adds r1, #1 + 8007dd0: 9101 str r1, [sp, #4] + 8007dd2: 9901 ldr r1, [sp, #4] + 8007dd4: f5b1 3f2e cmp.w r1, #178176 ; 0x2b800 + 8007dd8: d3f5 bcc.n 8007dc6 <HAL_ADCEx_Calibration_Start+0x6a> + 8007dda: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007ddc: f023 0312 bic.w r3, r3, #18 + 8007de0: f043 0310 orr.w r3, r3, #16 + 8007de4: 65a3 str r3, [r4, #88] ; 0x58 + 8007de6: 2300 movs r3, #0 + 8007de8: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 8007dec: 2501 movs r5, #1 + 8007dee: 4628 mov r0, r5 + 8007df0: b003 add sp, #12 + 8007df2: bdf0 pop {r4, r5, r6, r7, pc} + 8007df4: f8d3 10b4 ldr.w r1, [r3, #180] ; 0xb4 + 8007df8: 3801 subs r0, #1 + 8007dfa: f001 017f and.w r1, r1, #127 ; 0x7f + 8007dfe: 440a add r2, r1 + 8007e00: d1dc bne.n 8007dbc <HAL_ADCEx_Calibration_Start+0x60> + 8007e02: 6899 ldr r1, [r3, #8] + 8007e04: 481a ldr r0, [pc, #104] ; (8007e70 <HAL_ADCEx_Calibration_Start+0x114>) + 8007e06: 4001 ands r1, r0 + 8007e08: f041 0101 orr.w r1, r1, #1 + 8007e0c: 6099 str r1, [r3, #8] + 8007e0e: f8d3 10b4 ldr.w r1, [r3, #180] ; 0xb4 + 8007e12: f021 017f bic.w r1, r1, #127 ; 0x7f + 8007e16: ea41 02d2 orr.w r2, r1, r2, lsr #3 + 8007e1a: f8c3 20b4 str.w r2, [r3, #180] ; 0xb4 + 8007e1e: 689a ldr r2, [r3, #8] + 8007e20: 4002 ands r2, r0 + 8007e22: f042 0202 orr.w r2, r2, #2 + 8007e26: 609a str r2, [r3, #8] + 8007e28: f7fa feb2 bl 8002b90 <HAL_GetTick> + 8007e2c: 4607 mov r7, r0 + 8007e2e: 6823 ldr r3, [r4, #0] + 8007e30: 689a ldr r2, [r3, #8] + 8007e32: 07d2 lsls r2, r2, #31 + 8007e34: d408 bmi.n 8007e48 <HAL_ADCEx_Calibration_Start+0xec> + 8007e36: 68da ldr r2, [r3, #12] + 8007e38: 4332 orrs r2, r6 + 8007e3a: 60da str r2, [r3, #12] + 8007e3c: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007e3e: f023 0303 bic.w r3, r3, #3 + 8007e42: f043 0301 orr.w r3, r3, #1 + 8007e46: e79f b.n 8007d88 <HAL_ADCEx_Calibration_Start+0x2c> + 8007e48: f7fa fea2 bl 8002b90 <HAL_GetTick> + 8007e4c: 1bc0 subs r0, r0, r7 + 8007e4e: 2802 cmp r0, #2 + 8007e50: d9ed bls.n 8007e2e <HAL_ADCEx_Calibration_Start+0xd2> + 8007e52: 6823 ldr r3, [r4, #0] + 8007e54: 689b ldr r3, [r3, #8] + 8007e56: 07d9 lsls r1, r3, #31 + 8007e58: d5e9 bpl.n 8007e2e <HAL_ADCEx_Calibration_Start+0xd2> + 8007e5a: 6da3 ldr r3, [r4, #88] ; 0x58 + 8007e5c: f043 0310 orr.w r3, r3, #16 + 8007e60: 65a3 str r3, [r4, #88] ; 0x58 + 8007e62: 6de3 ldr r3, [r4, #92] ; 0x5c + 8007e64: f043 0301 orr.w r3, r3, #1 + 8007e68: 65e3 str r3, [r4, #92] ; 0x5c + 8007e6a: e7bf b.n 8007dec <HAL_ADCEx_Calibration_Start+0x90> + 8007e6c: 2502 movs r5, #2 + 8007e6e: e7be b.n 8007dee <HAL_ADCEx_Calibration_Start+0x92> + 8007e70: 7fffffe8 .word 0x7fffffe8 + +08007e74 <HAL_NVIC_SetPriorityGrouping>: + 8007e74: 4907 ldr r1, [pc, #28] ; (8007e94 <HAL_NVIC_SetPriorityGrouping+0x20>) + 8007e76: 68ca ldr r2, [r1, #12] + 8007e78: f422 62e0 bic.w r2, r2, #1792 ; 0x700 + 8007e7c: 0203 lsls r3, r0, #8 + 8007e7e: 0412 lsls r2, r2, #16 + 8007e80: f403 63e0 and.w r3, r3, #1792 ; 0x700 + 8007e84: 0c12 lsrs r2, r2, #16 + 8007e86: 4313 orrs r3, r2 + 8007e88: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000 + 8007e8c: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8007e90: 60cb str r3, [r1, #12] + 8007e92: 4770 bx lr + 8007e94: e000ed00 .word 0xe000ed00 + +08007e98 <HAL_NVIC_SetPriority>: + 8007e98: 4b16 ldr r3, [pc, #88] ; (8007ef4 <HAL_NVIC_SetPriority+0x5c>) + 8007e9a: b530 push {r4, r5, lr} + 8007e9c: 68dc ldr r4, [r3, #12] + 8007e9e: f3c4 2402 ubfx r4, r4, #8, #3 + 8007ea2: f1c4 0307 rsb r3, r4, #7 + 8007ea6: 1d25 adds r5, r4, #4 + 8007ea8: 2b04 cmp r3, #4 + 8007eaa: bf28 it cs + 8007eac: 2304 movcs r3, #4 + 8007eae: 2d06 cmp r5, #6 + 8007eb0: f04f 35ff mov.w r5, #4294967295 + 8007eb4: bf8c ite hi + 8007eb6: 3c03 subhi r4, #3 + 8007eb8: 2400 movls r4, #0 + 8007eba: fa05 f303 lsl.w r3, r5, r3 + 8007ebe: ea21 0303 bic.w r3, r1, r3 + 8007ec2: 40a5 lsls r5, r4 + 8007ec4: ea22 0205 bic.w r2, r2, r5 + 8007ec8: 40a3 lsls r3, r4 + 8007eca: 2800 cmp r0, #0 + 8007ecc: ea43 0302 orr.w r3, r3, r2 + 8007ed0: bfac ite ge + 8007ed2: f100 4060 addge.w r0, r0, #3758096384 ; 0xe0000000 + 8007ed6: 4a08 ldrlt r2, [pc, #32] ; (8007ef8 <HAL_NVIC_SetPriority+0x60>) + 8007ed8: ea4f 1303 mov.w r3, r3, lsl #4 + 8007edc: bfb8 it lt + 8007ede: f000 000f andlt.w r0, r0, #15 + 8007ee2: b2db uxtb r3, r3 + 8007ee4: bfaa itet ge + 8007ee6: f500 4061 addge.w r0, r0, #57600 ; 0xe100 + 8007eea: 5413 strblt r3, [r2, r0] + 8007eec: f880 3300 strbge.w r3, [r0, #768] ; 0x300 + 8007ef0: bd30 pop {r4, r5, pc} + 8007ef2: bf00 nop + 8007ef4: e000ed00 .word 0xe000ed00 + 8007ef8: e000ed14 .word 0xe000ed14 + +08007efc <HAL_NVIC_EnableIRQ>: + 8007efc: 2800 cmp r0, #0 + 8007efe: db07 blt.n 8007f10 <HAL_NVIC_EnableIRQ+0x14> + 8007f00: 4a04 ldr r2, [pc, #16] ; (8007f14 <HAL_NVIC_EnableIRQ+0x18>) + 8007f02: 0941 lsrs r1, r0, #5 + 8007f04: 2301 movs r3, #1 + 8007f06: f000 001f and.w r0, r0, #31 + 8007f0a: 4083 lsls r3, r0 + 8007f0c: f842 3021 str.w r3, [r2, r1, lsl #2] + 8007f10: 4770 bx lr + 8007f12: bf00 nop + 8007f14: e000e100 .word 0xe000e100 + +08007f18 <HAL_NVIC_DisableIRQ>: + 8007f18: 2800 cmp r0, #0 + 8007f1a: db0c blt.n 8007f36 <HAL_NVIC_DisableIRQ+0x1e> + 8007f1c: 0943 lsrs r3, r0, #5 + 8007f1e: 4906 ldr r1, [pc, #24] ; (8007f38 <HAL_NVIC_DisableIRQ+0x20>) + 8007f20: f000 001f and.w r0, r0, #31 + 8007f24: 3320 adds r3, #32 + 8007f26: 2201 movs r2, #1 + 8007f28: 4082 lsls r2, r0 + 8007f2a: f841 2023 str.w r2, [r1, r3, lsl #2] + 8007f2e: f3bf 8f4f dsb sy + 8007f32: f3bf 8f6f isb sy + 8007f36: 4770 bx lr + 8007f38: e000e100 .word 0xe000e100 + +08007f3c <DMA_SetConfig>: + 8007f3c: b570 push {r4, r5, r6, lr} + 8007f3e: e9d0 4513 ldrd r4, r5, [r0, #76] ; 0x4c + 8007f42: 6065 str r5, [r4, #4] + 8007f44: 6d44 ldr r4, [r0, #84] ; 0x54 + 8007f46: b114 cbz r4, 8007f4e <DMA_SetConfig+0x12> + 8007f48: e9d0 4516 ldrd r4, r5, [r0, #88] ; 0x58 + 8007f4c: 6065 str r5, [r4, #4] + 8007f4e: e9d0 5410 ldrd r5, r4, [r0, #64] ; 0x40 + 8007f52: f004 061c and.w r6, r4, #28 + 8007f56: 2401 movs r4, #1 + 8007f58: 40b4 lsls r4, r6 + 8007f5a: 606c str r4, [r5, #4] + 8007f5c: 6804 ldr r4, [r0, #0] + 8007f5e: 6063 str r3, [r4, #4] + 8007f60: 6883 ldr r3, [r0, #8] + 8007f62: 2b10 cmp r3, #16 + 8007f64: bf0b itete eq + 8007f66: 60a2 streq r2, [r4, #8] + 8007f68: 60a1 strne r1, [r4, #8] + 8007f6a: 60e1 streq r1, [r4, #12] + 8007f6c: 60e2 strne r2, [r4, #12] + 8007f6e: bd70 pop {r4, r5, r6, pc} + +08007f70 <DMA_CalcDMAMUXChannelBaseAndMask>: + 8007f70: 6802 ldr r2, [r0, #0] + 8007f72: 6c41 ldr r1, [r0, #68] ; 0x44 + 8007f74: b2d3 uxtb r3, r2 + 8007f76: b510 push {r4, lr} + 8007f78: 3b08 subs r3, #8 + 8007f7a: 2414 movs r4, #20 + 8007f7c: fbb3 f3f4 udiv r3, r3, r4 + 8007f80: 4c0b ldr r4, [pc, #44] ; (8007fb0 <DMA_CalcDMAMUXChannelBaseAndMask+0x40>) + 8007f82: 42a2 cmp r2, r4 + 8007f84: bf88 it hi + 8007f86: 4a0b ldrhi r2, [pc, #44] ; (8007fb4 <DMA_CalcDMAMUXChannelBaseAndMask+0x44>) + 8007f88: f021 0103 bic.w r1, r1, #3 + 8007f8c: bf99 ittee ls + 8007f8e: f101 4280 addls.w r2, r1, #1073741824 ; 0x40000000 + 8007f92: f502 3202 addls.w r2, r2, #133120 ; 0x20800 + 8007f96: 1852 addhi r2, r2, r1 + 8007f98: 3307 addhi r3, #7 + 8007f9a: 6482 str r2, [r0, #72] ; 0x48 + 8007f9c: 4a06 ldr r2, [pc, #24] ; (8007fb8 <DMA_CalcDMAMUXChannelBaseAndMask+0x48>) + 8007f9e: 64c2 str r2, [r0, #76] ; 0x4c + 8007fa0: f003 031f and.w r3, r3, #31 + 8007fa4: 2201 movs r2, #1 + 8007fa6: fa02 f303 lsl.w r3, r2, r3 + 8007faa: 6503 str r3, [r0, #80] ; 0x50 + 8007fac: bd10 pop {r4, pc} + 8007fae: bf00 nop + 8007fb0: 40020407 .word 0x40020407 + 8007fb4: 4002081c .word 0x4002081c + 8007fb8: 40020880 .word 0x40020880 + +08007fbc <HAL_DMA_Init>: + 8007fbc: b538 push {r3, r4, r5, lr} + 8007fbe: 2800 cmp r0, #0 + 8007fc0: d05e beq.n 8008080 <HAL_DMA_Init+0xc4> + 8007fc2: 6802 ldr r2, [r0, #0] + 8007fc4: 4b2f ldr r3, [pc, #188] ; (8008084 <HAL_DMA_Init+0xc8>) + 8007fc6: 429a cmp r2, r3 + 8007fc8: f04f 0114 mov.w r1, #20 + 8007fcc: d84c bhi.n 8008068 <HAL_DMA_Init+0xac> + 8007fce: 4b2e ldr r3, [pc, #184] ; (8008088 <HAL_DMA_Init+0xcc>) + 8007fd0: 4413 add r3, r2 + 8007fd2: fbb3 f3f1 udiv r3, r3, r1 + 8007fd6: 492d ldr r1, [pc, #180] ; (800808c <HAL_DMA_Init+0xd0>) + 8007fd8: 009b lsls r3, r3, #2 + 8007fda: e9c0 1310 strd r1, r3, [r0, #64] ; 0x40 + 8007fde: 2302 movs r3, #2 + 8007fe0: f880 3025 strb.w r3, [r0, #37] ; 0x25 + 8007fe4: 6813 ldr r3, [r2, #0] + 8007fe6: 6905 ldr r5, [r0, #16] + 8007fe8: f423 43ff bic.w r3, r3, #32640 ; 0x7f80 + 8007fec: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8007ff0: 6013 str r3, [r2, #0] + 8007ff2: e9d0 4302 ldrd r4, r3, [r0, #8] + 8007ff6: 4323 orrs r3, r4 + 8007ff8: 432b orrs r3, r5 + 8007ffa: 6945 ldr r5, [r0, #20] + 8007ffc: 6811 ldr r1, [r2, #0] + 8007ffe: 432b orrs r3, r5 + 8008000: 6985 ldr r5, [r0, #24] + 8008002: 432b orrs r3, r5 + 8008004: 69c5 ldr r5, [r0, #28] + 8008006: 432b orrs r3, r5 + 8008008: 6a05 ldr r5, [r0, #32] + 800800a: 432b orrs r3, r5 + 800800c: 430b orrs r3, r1 + 800800e: 6013 str r3, [r2, #0] + 8008010: f7ff ffae bl 8007f70 <DMA_CalcDMAMUXChannelBaseAndMask> + 8008014: f5b4 4f80 cmp.w r4, #16384 ; 0x4000 + 8008018: bf04 itt eq + 800801a: 2300 moveq r3, #0 + 800801c: 6043 streq r3, [r0, #4] + 800801e: 6842 ldr r2, [r0, #4] + 8008020: 6c81 ldr r1, [r0, #72] ; 0x48 + 8008022: f002 037f and.w r3, r2, #127 ; 0x7f + 8008026: 600b str r3, [r1, #0] + 8008028: e9d0 1413 ldrd r1, r4, [r0, #76] ; 0x4c + 800802c: 3a01 subs r2, #1 + 800802e: 2a03 cmp r2, #3 + 8008030: 604c str r4, [r1, #4] + 8008032: d820 bhi.n 8008076 <HAL_DMA_Init+0xba> + 8008034: 4a16 ldr r2, [pc, #88] ; (8008090 <HAL_DMA_Init+0xd4>) + 8008036: 4917 ldr r1, [pc, #92] ; (8008094 <HAL_DMA_Init+0xd8>) + 8008038: 6581 str r1, [r0, #88] ; 0x58 + 800803a: 441a add r2, r3 + 800803c: 3b01 subs r3, #1 + 800803e: 0092 lsls r2, r2, #2 + 8008040: 2101 movs r1, #1 + 8008042: f003 0303 and.w r3, r3, #3 + 8008046: fa01 f303 lsl.w r3, r1, r3 + 800804a: 2100 movs r1, #0 + 800804c: 6542 str r2, [r0, #84] ; 0x54 + 800804e: 65c3 str r3, [r0, #92] ; 0x5c + 8008050: 6011 str r1, [r2, #0] + 8008052: 4a11 ldr r2, [pc, #68] ; (8008098 <HAL_DMA_Init+0xdc>) + 8008054: 6453 str r3, [r2, #68] ; 0x44 + 8008056: 2300 movs r3, #0 + 8008058: 2201 movs r2, #1 + 800805a: 63c3 str r3, [r0, #60] ; 0x3c + 800805c: f880 3024 strb.w r3, [r0, #36] ; 0x24 + 8008060: f880 2025 strb.w r2, [r0, #37] ; 0x25 + 8008064: 4618 mov r0, r3 + 8008066: bd38 pop {r3, r4, r5, pc} + 8008068: 4b0c ldr r3, [pc, #48] ; (800809c <HAL_DMA_Init+0xe0>) + 800806a: 4413 add r3, r2 + 800806c: fbb3 f3f1 udiv r3, r3, r1 + 8008070: 490b ldr r1, [pc, #44] ; (80080a0 <HAL_DMA_Init+0xe4>) + 8008072: 009b lsls r3, r3, #2 + 8008074: e7b1 b.n 8007fda <HAL_DMA_Init+0x1e> + 8008076: 2300 movs r3, #0 + 8008078: e9c0 3315 strd r3, r3, [r0, #84] ; 0x54 + 800807c: 65c3 str r3, [r0, #92] ; 0x5c + 800807e: e7ea b.n 8008056 <HAL_DMA_Init+0x9a> + 8008080: 2001 movs r0, #1 + 8008082: e7f0 b.n 8008066 <HAL_DMA_Init+0xaa> + 8008084: 40020407 .word 0x40020407 + 8008088: bffdfff8 .word 0xbffdfff8 + 800808c: 40020000 .word 0x40020000 + 8008090: 1000823f .word 0x1000823f + 8008094: 40020940 .word 0x40020940 + 8008098: 40020900 .word 0x40020900 + 800809c: bffdfbf8 .word 0xbffdfbf8 + 80080a0: 40020400 .word 0x40020400 + +080080a4 <HAL_DMA_DeInit>: + 80080a4: b538 push {r3, r4, r5, lr} + 80080a6: 2800 cmp r0, #0 + 80080a8: d041 beq.n 800812e <HAL_DMA_DeInit+0x8a> + 80080aa: 6802 ldr r2, [r0, #0] + 80080ac: 6813 ldr r3, [r2, #0] + 80080ae: f023 0301 bic.w r3, r3, #1 + 80080b2: 6013 str r3, [r2, #0] + 80080b4: 4b1f ldr r3, [pc, #124] ; (8008134 <HAL_DMA_DeInit+0x90>) + 80080b6: 429a cmp r2, r3 + 80080b8: f04f 0114 mov.w r1, #20 + 80080bc: d830 bhi.n 8008120 <HAL_DMA_DeInit+0x7c> + 80080be: 4b1e ldr r3, [pc, #120] ; (8008138 <HAL_DMA_DeInit+0x94>) + 80080c0: 4413 add r3, r2 + 80080c2: fbb3 f3f1 udiv r3, r3, r1 + 80080c6: 491d ldr r1, [pc, #116] ; (800813c <HAL_DMA_DeInit+0x98>) + 80080c8: 009b lsls r3, r3, #2 + 80080ca: e9c0 1310 strd r1, r3, [r0, #64] ; 0x40 + 80080ce: 2401 movs r4, #1 + 80080d0: f003 031c and.w r3, r3, #28 + 80080d4: fa04 f303 lsl.w r3, r4, r3 + 80080d8: 2500 movs r5, #0 + 80080da: 6015 str r5, [r2, #0] + 80080dc: 604b str r3, [r1, #4] + 80080de: f7ff ff47 bl 8007f70 <DMA_CalcDMAMUXChannelBaseAndMask> + 80080e2: 6c83 ldr r3, [r0, #72] ; 0x48 + 80080e4: 6841 ldr r1, [r0, #4] + 80080e6: 601d str r5, [r3, #0] + 80080e8: e9d0 3213 ldrd r3, r2, [r0, #76] ; 0x4c + 80080ec: 605a str r2, [r3, #4] + 80080ee: 1e4a subs r2, r1, #1 + 80080f0: 2a03 cmp r2, #3 + 80080f2: d806 bhi.n 8008102 <HAL_DMA_DeInit+0x5e> + 80080f4: 4b12 ldr r3, [pc, #72] ; (8008140 <HAL_DMA_DeInit+0x9c>) + 80080f6: 440b add r3, r1 + 80080f8: 009b lsls r3, r3, #2 + 80080fa: 4094 lsls r4, r2 + 80080fc: 601d str r5, [r3, #0] + 80080fe: 4b11 ldr r3, [pc, #68] ; (8008144 <HAL_DMA_DeInit+0xa0>) + 8008100: 645c str r4, [r3, #68] ; 0x44 + 8008102: 2300 movs r3, #0 + 8008104: 63c3 str r3, [r0, #60] ; 0x3c + 8008106: e9c0 3315 strd r3, r3, [r0, #84] ; 0x54 + 800810a: e9c0 330b strd r3, r3, [r0, #44] ; 0x2c + 800810e: e9c0 330d strd r3, r3, [r0, #52] ; 0x34 + 8008112: 65c3 str r3, [r0, #92] ; 0x5c + 8008114: f880 3025 strb.w r3, [r0, #37] ; 0x25 + 8008118: f880 3024 strb.w r3, [r0, #36] ; 0x24 + 800811c: 4618 mov r0, r3 + 800811e: bd38 pop {r3, r4, r5, pc} + 8008120: 4b09 ldr r3, [pc, #36] ; (8008148 <HAL_DMA_DeInit+0xa4>) + 8008122: 4413 add r3, r2 + 8008124: fbb3 f3f1 udiv r3, r3, r1 + 8008128: 4908 ldr r1, [pc, #32] ; (800814c <HAL_DMA_DeInit+0xa8>) + 800812a: 009b lsls r3, r3, #2 + 800812c: e7cd b.n 80080ca <HAL_DMA_DeInit+0x26> + 800812e: 2001 movs r0, #1 + 8008130: e7f5 b.n 800811e <HAL_DMA_DeInit+0x7a> + 8008132: bf00 nop + 8008134: 40020407 .word 0x40020407 + 8008138: bffdfff8 .word 0xbffdfff8 + 800813c: 40020000 .word 0x40020000 + 8008140: 1000823f .word 0x1000823f + 8008144: 40020900 .word 0x40020900 + 8008148: bffdfbf8 .word 0xbffdfbf8 + 800814c: 40020400 .word 0x40020400 + +08008150 <HAL_DMA_Start_IT>: + 8008150: b570 push {r4, r5, r6, lr} + 8008152: f890 5024 ldrb.w r5, [r0, #36] ; 0x24 + 8008156: 2d01 cmp r5, #1 + 8008158: 4604 mov r4, r0 + 800815a: d03b beq.n 80081d4 <HAL_DMA_Start_IT+0x84> + 800815c: f890 6025 ldrb.w r6, [r0, #37] ; 0x25 + 8008160: 2501 movs r5, #1 + 8008162: 42ae cmp r6, r5 + 8008164: f880 5024 strb.w r5, [r0, #36] ; 0x24 + 8008168: f04f 0600 mov.w r6, #0 + 800816c: d12c bne.n 80081c8 <HAL_DMA_Start_IT+0x78> + 800816e: 2502 movs r5, #2 + 8008170: f880 5025 strb.w r5, [r0, #37] ; 0x25 + 8008174: 6805 ldr r5, [r0, #0] + 8008176: 63c6 str r6, [r0, #60] ; 0x3c + 8008178: 682e ldr r6, [r5, #0] + 800817a: f026 0601 bic.w r6, r6, #1 + 800817e: 602e str r6, [r5, #0] + 8008180: f7ff fedc bl 8007f3c <DMA_SetConfig> + 8008184: 6b03 ldr r3, [r0, #48] ; 0x30 + 8008186: b1bb cbz r3, 80081b8 <HAL_DMA_Start_IT+0x68> + 8008188: 682b ldr r3, [r5, #0] + 800818a: f043 030e orr.w r3, r3, #14 + 800818e: 602b str r3, [r5, #0] + 8008190: 6ca3 ldr r3, [r4, #72] ; 0x48 + 8008192: 681a ldr r2, [r3, #0] + 8008194: 03d2 lsls r2, r2, #15 + 8008196: bf42 ittt mi + 8008198: 681a ldrmi r2, [r3, #0] + 800819a: f442 7280 orrmi.w r2, r2, #256 ; 0x100 + 800819e: 601a strmi r2, [r3, #0] + 80081a0: 6d63 ldr r3, [r4, #84] ; 0x54 + 80081a2: b11b cbz r3, 80081ac <HAL_DMA_Start_IT+0x5c> + 80081a4: 681a ldr r2, [r3, #0] + 80081a6: f442 7280 orr.w r2, r2, #256 ; 0x100 + 80081aa: 601a str r2, [r3, #0] + 80081ac: 682b ldr r3, [r5, #0] + 80081ae: f043 0301 orr.w r3, r3, #1 + 80081b2: 602b str r3, [r5, #0] + 80081b4: 2000 movs r0, #0 + 80081b6: bd70 pop {r4, r5, r6, pc} + 80081b8: 682b ldr r3, [r5, #0] + 80081ba: f023 0304 bic.w r3, r3, #4 + 80081be: 602b str r3, [r5, #0] + 80081c0: 682b ldr r3, [r5, #0] + 80081c2: f043 030a orr.w r3, r3, #10 + 80081c6: e7e2 b.n 800818e <HAL_DMA_Start_IT+0x3e> + 80081c8: 2380 movs r3, #128 ; 0x80 + 80081ca: 63c3 str r3, [r0, #60] ; 0x3c + 80081cc: f880 6024 strb.w r6, [r0, #36] ; 0x24 + 80081d0: 4628 mov r0, r5 + 80081d2: e7f0 b.n 80081b6 <HAL_DMA_Start_IT+0x66> + 80081d4: 2002 movs r0, #2 + 80081d6: e7ee b.n 80081b6 <HAL_DMA_Start_IT+0x66> + +080081d8 <HAL_DMA_Abort>: + 80081d8: 4603 mov r3, r0 + 80081da: b140 cbz r0, 80081ee <HAL_DMA_Abort+0x16> + 80081dc: f890 2025 ldrb.w r2, [r0, #37] ; 0x25 + 80081e0: 2a02 cmp r2, #2 + 80081e2: d006 beq.n 80081f2 <HAL_DMA_Abort+0x1a> + 80081e4: 2204 movs r2, #4 + 80081e6: 63c2 str r2, [r0, #60] ; 0x3c + 80081e8: 2200 movs r2, #0 + 80081ea: f880 2024 strb.w r2, [r0, #36] ; 0x24 + 80081ee: 2001 movs r0, #1 + 80081f0: 4770 bx lr + 80081f2: 6802 ldr r2, [r0, #0] + 80081f4: 6c80 ldr r0, [r0, #72] ; 0x48 + 80081f6: 6811 ldr r1, [r2, #0] + 80081f8: f021 010e bic.w r1, r1, #14 + 80081fc: 6011 str r1, [r2, #0] + 80081fe: 6801 ldr r1, [r0, #0] + 8008200: f421 7180 bic.w r1, r1, #256 ; 0x100 + 8008204: 6001 str r1, [r0, #0] + 8008206: 6811 ldr r1, [r2, #0] + 8008208: f021 0101 bic.w r1, r1, #1 + 800820c: 6011 str r1, [r2, #0] + 800820e: e9d3 0210 ldrd r0, r2, [r3, #64] ; 0x40 + 8008212: f002 011c and.w r1, r2, #28 + 8008216: 2201 movs r2, #1 + 8008218: 408a lsls r2, r1 + 800821a: 6042 str r2, [r0, #4] + 800821c: e9d3 2113 ldrd r2, r1, [r3, #76] ; 0x4c + 8008220: 6051 str r1, [r2, #4] + 8008222: 6d5a ldr r2, [r3, #84] ; 0x54 + 8008224: b132 cbz r2, 8008234 <HAL_DMA_Abort+0x5c> + 8008226: 6811 ldr r1, [r2, #0] + 8008228: f421 7180 bic.w r1, r1, #256 ; 0x100 + 800822c: 6011 str r1, [r2, #0] + 800822e: e9d3 2116 ldrd r2, r1, [r3, #88] ; 0x58 + 8008232: 6051 str r1, [r2, #4] + 8008234: 2201 movs r2, #1 + 8008236: 2000 movs r0, #0 + 8008238: f883 2025 strb.w r2, [r3, #37] ; 0x25 + 800823c: f883 0024 strb.w r0, [r3, #36] ; 0x24 + 8008240: 4770 bx lr + +08008242 <HAL_DMA_Abort_IT>: + 8008242: b510 push {r4, lr} + 8008244: f890 3025 ldrb.w r3, [r0, #37] ; 0x25 + 8008248: 2b02 cmp r3, #2 + 800824a: d003 beq.n 8008254 <HAL_DMA_Abort_IT+0x12> + 800824c: 2304 movs r3, #4 + 800824e: 63c3 str r3, [r0, #60] ; 0x3c + 8008250: 2001 movs r0, #1 + 8008252: bd10 pop {r4, pc} + 8008254: 6803 ldr r3, [r0, #0] + 8008256: 681a ldr r2, [r3, #0] + 8008258: f022 020e bic.w r2, r2, #14 + 800825c: 601a str r2, [r3, #0] + 800825e: 681a ldr r2, [r3, #0] + 8008260: f022 0201 bic.w r2, r2, #1 + 8008264: 601a str r2, [r3, #0] + 8008266: 6c82 ldr r2, [r0, #72] ; 0x48 + 8008268: 6813 ldr r3, [r2, #0] + 800826a: f423 7380 bic.w r3, r3, #256 ; 0x100 + 800826e: 6013 str r3, [r2, #0] + 8008270: e9d0 1310 ldrd r1, r3, [r0, #64] ; 0x40 + 8008274: f003 021c and.w r2, r3, #28 + 8008278: 2301 movs r3, #1 + 800827a: 4093 lsls r3, r2 + 800827c: 604b str r3, [r1, #4] + 800827e: e9d0 3213 ldrd r3, r2, [r0, #76] ; 0x4c + 8008282: 605a str r2, [r3, #4] + 8008284: 6d43 ldr r3, [r0, #84] ; 0x54 + 8008286: b133 cbz r3, 8008296 <HAL_DMA_Abort_IT+0x54> + 8008288: 681a ldr r2, [r3, #0] + 800828a: f422 7280 bic.w r2, r2, #256 ; 0x100 + 800828e: 601a str r2, [r3, #0] + 8008290: e9d0 3216 ldrd r3, r2, [r0, #88] ; 0x58 + 8008294: 605a str r2, [r3, #4] + 8008296: 2301 movs r3, #1 + 8008298: f880 3025 strb.w r3, [r0, #37] ; 0x25 + 800829c: 6b83 ldr r3, [r0, #56] ; 0x38 + 800829e: 2400 movs r4, #0 + 80082a0: f880 4024 strb.w r4, [r0, #36] ; 0x24 + 80082a4: b113 cbz r3, 80082ac <HAL_DMA_Abort_IT+0x6a> + 80082a6: 4798 blx r3 + 80082a8: 4620 mov r0, r4 + 80082aa: e7d2 b.n 8008252 <HAL_DMA_Abort_IT+0x10> + 80082ac: 4618 mov r0, r3 + 80082ae: e7d0 b.n 8008252 <HAL_DMA_Abort_IT+0x10> + +080082b0 <HAL_DMA_IRQHandler>: + 80082b0: b470 push {r4, r5, r6} + 80082b2: 6c42 ldr r2, [r0, #68] ; 0x44 + 80082b4: 6c04 ldr r4, [r0, #64] ; 0x40 + 80082b6: 6803 ldr r3, [r0, #0] + 80082b8: 6826 ldr r6, [r4, #0] + 80082ba: 681d ldr r5, [r3, #0] + 80082bc: f002 021c and.w r2, r2, #28 + 80082c0: 2104 movs r1, #4 + 80082c2: 4091 lsls r1, r2 + 80082c4: 4231 tst r1, r6 + 80082c6: d00f beq.n 80082e8 <HAL_DMA_IRQHandler+0x38> + 80082c8: f015 0f04 tst.w r5, #4 + 80082cc: d00c beq.n 80082e8 <HAL_DMA_IRQHandler+0x38> + 80082ce: 681a ldr r2, [r3, #0] + 80082d0: 0692 lsls r2, r2, #26 + 80082d2: bf5e ittt pl + 80082d4: 681a ldrpl r2, [r3, #0] + 80082d6: f022 0204 bicpl.w r2, r2, #4 + 80082da: 601a strpl r2, [r3, #0] + 80082dc: 6b03 ldr r3, [r0, #48] ; 0x30 + 80082de: 6061 str r1, [r4, #4] + 80082e0: 2b00 cmp r3, #0 + 80082e2: d033 beq.n 800834c <HAL_DMA_IRQHandler+0x9c> + 80082e4: bc70 pop {r4, r5, r6} + 80082e6: 4718 bx r3 + 80082e8: 2102 movs r1, #2 + 80082ea: 4091 lsls r1, r2 + 80082ec: 4231 tst r1, r6 + 80082ee: d017 beq.n 8008320 <HAL_DMA_IRQHandler+0x70> + 80082f0: f015 0f02 tst.w r5, #2 + 80082f4: d014 beq.n 8008320 <HAL_DMA_IRQHandler+0x70> + 80082f6: 681a ldr r2, [r3, #0] + 80082f8: 0694 lsls r4, r2, #26 + 80082fa: d406 bmi.n 800830a <HAL_DMA_IRQHandler+0x5a> + 80082fc: 681a ldr r2, [r3, #0] + 80082fe: f022 020a bic.w r2, r2, #10 + 8008302: 601a str r2, [r3, #0] + 8008304: 2201 movs r2, #1 + 8008306: f880 2025 strb.w r2, [r0, #37] ; 0x25 + 800830a: 4a11 ldr r2, [pc, #68] ; (8008350 <HAL_DMA_IRQHandler+0xa0>) + 800830c: 4293 cmp r3, r2 + 800830e: bf8c ite hi + 8008310: 4b10 ldrhi r3, [pc, #64] ; (8008354 <HAL_DMA_IRQHandler+0xa4>) + 8008312: 4b11 ldrls r3, [pc, #68] ; (8008358 <HAL_DMA_IRQHandler+0xa8>) + 8008314: 6059 str r1, [r3, #4] + 8008316: 2300 movs r3, #0 + 8008318: f880 3024 strb.w r3, [r0, #36] ; 0x24 + 800831c: 6ac3 ldr r3, [r0, #44] ; 0x2c + 800831e: e7df b.n 80082e0 <HAL_DMA_IRQHandler+0x30> + 8008320: 2108 movs r1, #8 + 8008322: 4091 lsls r1, r2 + 8008324: 4231 tst r1, r6 + 8008326: d011 beq.n 800834c <HAL_DMA_IRQHandler+0x9c> + 8008328: 0729 lsls r1, r5, #28 + 800832a: d50f bpl.n 800834c <HAL_DMA_IRQHandler+0x9c> + 800832c: 6819 ldr r1, [r3, #0] + 800832e: f021 010e bic.w r1, r1, #14 + 8008332: 6019 str r1, [r3, #0] + 8008334: 2301 movs r3, #1 + 8008336: fa03 f202 lsl.w r2, r3, r2 + 800833a: 6062 str r2, [r4, #4] + 800833c: 63c3 str r3, [r0, #60] ; 0x3c + 800833e: f880 3025 strb.w r3, [r0, #37] ; 0x25 + 8008342: 2300 movs r3, #0 + 8008344: f880 3024 strb.w r3, [r0, #36] ; 0x24 + 8008348: 6b43 ldr r3, [r0, #52] ; 0x34 + 800834a: e7c9 b.n 80082e0 <HAL_DMA_IRQHandler+0x30> + 800834c: bc70 pop {r4, r5, r6} + 800834e: 4770 bx lr + 8008350: 40020080 .word 0x40020080 + 8008354: 40020400 .word 0x40020400 + 8008358: 40020000 .word 0x40020000 + +0800835c <FLASH_Program_Fast>: + 800835c: 4a0a ldr r2, [pc, #40] ; (8008388 <FLASH_Program_Fast+0x2c>) + 800835e: 6953 ldr r3, [r2, #20] + 8008360: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 8008364: b530 push {r4, r5, lr} + 8008366: 6153 str r3, [r2, #20] + 8008368: f3ef 8410 mrs r4, PRIMASK + 800836c: b672 cpsid i + 800836e: 2300 movs r3, #0 + 8008370: 58cd ldr r5, [r1, r3] + 8008372: 50c5 str r5, [r0, r3] + 8008374: 3304 adds r3, #4 + 8008376: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 800837a: d1f9 bne.n 8008370 <FLASH_Program_Fast+0x14> + 800837c: 6913 ldr r3, [r2, #16] + 800837e: 03db lsls r3, r3, #15 + 8008380: d4fc bmi.n 800837c <FLASH_Program_Fast+0x20> + 8008382: f384 8810 msr PRIMASK, r4 + 8008386: bd30 pop {r4, r5, pc} + 8008388: 58004000 .word 0x58004000 + +0800838c <HAL_FLASH_Unlock>: + 800838c: 4b06 ldr r3, [pc, #24] ; (80083a8 <HAL_FLASH_Unlock+0x1c>) + 800838e: 695a ldr r2, [r3, #20] + 8008390: 2a00 cmp r2, #0 + 8008392: bfbf itttt lt + 8008394: 4a05 ldrlt r2, [pc, #20] ; (80083ac <HAL_FLASH_Unlock+0x20>) + 8008396: 609a strlt r2, [r3, #8] + 8008398: f102 3288 addlt.w r2, r2, #2290649224 ; 0x88888888 + 800839c: 609a strlt r2, [r3, #8] + 800839e: bfba itte lt + 80083a0: 6958 ldrlt r0, [r3, #20] + 80083a2: 0fc0 lsrlt r0, r0, #31 + 80083a4: 2000 movge r0, #0 + 80083a6: 4770 bx lr + 80083a8: 58004000 .word 0x58004000 + 80083ac: 45670123 .word 0x45670123 + +080083b0 <HAL_FLASH_Lock>: + 80083b0: 4b04 ldr r3, [pc, #16] ; (80083c4 <HAL_FLASH_Lock+0x14>) + 80083b2: 695a ldr r2, [r3, #20] + 80083b4: f042 4200 orr.w r2, r2, #2147483648 ; 0x80000000 + 80083b8: 615a str r2, [r3, #20] + 80083ba: 6958 ldr r0, [r3, #20] + 80083bc: 43c0 mvns r0, r0 + 80083be: 0fc0 lsrs r0, r0, #31 + 80083c0: 4770 bx lr + 80083c2: bf00 nop + 80083c4: 58004000 .word 0x58004000 + +080083c8 <FLASH_WaitForLastOperation>: + 80083c8: b570 push {r4, r5, r6, lr} + 80083ca: 4605 mov r5, r0 + 80083cc: f7fa fbe0 bl 8002b90 <HAL_GetTick> + 80083d0: 4e12 ldr r6, [pc, #72] ; (800841c <FLASH_WaitForLastOperation+0x54>) + 80083d2: 4604 mov r4, r0 + 80083d4: 6933 ldr r3, [r6, #16] + 80083d6: 03d9 lsls r1, r3, #15 + 80083d8: d413 bmi.n 8008402 <FLASH_WaitForLastOperation+0x3a> + 80083da: 6933 ldr r3, [r6, #16] + 80083dc: 07da lsls r2, r3, #31 + 80083de: bf44 itt mi + 80083e0: 2201 movmi r2, #1 + 80083e2: 6132 strmi r2, [r6, #16] + 80083e4: f24c 32fa movw r2, #50170 ; 0xc3fa + 80083e8: 4013 ands r3, r2 + 80083ea: d111 bne.n 8008410 <FLASH_WaitForLastOperation+0x48> + 80083ec: 4e0b ldr r6, [pc, #44] ; (800841c <FLASH_WaitForLastOperation+0x54>) + 80083ee: 6930 ldr r0, [r6, #16] + 80083f0: f410 2080 ands.w r0, r0, #262144 ; 0x40000 + 80083f4: d00b beq.n 800840e <FLASH_WaitForLastOperation+0x46> + 80083f6: f7fa fbcb bl 8002b90 <HAL_GetTick> + 80083fa: 1b00 subs r0, r0, r4 + 80083fc: 42a8 cmp r0, r5 + 80083fe: d3f6 bcc.n 80083ee <FLASH_WaitForLastOperation+0x26> + 8008400: e004 b.n 800840c <FLASH_WaitForLastOperation+0x44> + 8008402: f7fa fbc5 bl 8002b90 <HAL_GetTick> + 8008406: 1b00 subs r0, r0, r4 + 8008408: 42a8 cmp r0, r5 + 800840a: d3e3 bcc.n 80083d4 <FLASH_WaitForLastOperation+0xc> + 800840c: 2003 movs r0, #3 + 800840e: bd70 pop {r4, r5, r6, pc} + 8008410: 4a02 ldr r2, [pc, #8] ; (800841c <FLASH_WaitForLastOperation+0x54>) + 8008412: 6113 str r3, [r2, #16] + 8008414: 4a02 ldr r2, [pc, #8] ; (8008420 <FLASH_WaitForLastOperation+0x58>) + 8008416: 2001 movs r0, #1 + 8008418: 6053 str r3, [r2, #4] + 800841a: e7f8 b.n 800840e <FLASH_WaitForLastOperation+0x46> + 800841c: 58004000 .word 0x58004000 + 8008420: 20000f44 .word 0x20000f44 + +08008424 <HAL_FLASH_Program>: + 8008424: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8008428: 4d18 ldr r5, [pc, #96] ; (800848c <HAL_FLASH_Program+0x68>) + 800842a: 4698 mov r8, r3 + 800842c: 782b ldrb r3, [r5, #0] + 800842e: 2b01 cmp r3, #1 + 8008430: 4606 mov r6, r0 + 8008432: 460c mov r4, r1 + 8008434: 4617 mov r7, r2 + 8008436: d026 beq.n 8008486 <HAL_FLASH_Program+0x62> + 8008438: 2301 movs r3, #1 + 800843a: 702b strb r3, [r5, #0] + 800843c: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8008440: 2300 movs r3, #0 + 8008442: 606b str r3, [r5, #4] + 8008444: f7ff ffc0 bl 80083c8 <FLASH_WaitForLastOperation> + 8008448: b9a0 cbnz r0, 8008474 <HAL_FLASH_Program+0x50> + 800844a: 2e01 cmp r6, #1 + 800844c: d116 bne.n 800847c <HAL_FLASH_Program+0x58> + 800844e: 4a10 ldr r2, [pc, #64] ; (8008490 <HAL_FLASH_Program+0x6c>) + 8008450: 6953 ldr r3, [r2, #20] + 8008452: f043 0301 orr.w r3, r3, #1 + 8008456: 6153 str r3, [r2, #20] + 8008458: 6027 str r7, [r4, #0] + 800845a: f3bf 8f6f isb sy + 800845e: f8c4 8004 str.w r8, [r4, #4] + 8008462: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8008466: f7ff ffaf bl 80083c8 <FLASH_WaitForLastOperation> + 800846a: 4a09 ldr r2, [pc, #36] ; (8008490 <HAL_FLASH_Program+0x6c>) + 800846c: 6953 ldr r3, [r2, #20] + 800846e: ea23 0306 bic.w r3, r3, r6 + 8008472: 6153 str r3, [r2, #20] + 8008474: 2300 movs r3, #0 + 8008476: 702b strb r3, [r5, #0] + 8008478: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800847c: 4639 mov r1, r7 + 800847e: 4620 mov r0, r4 + 8008480: f7ff ff6c bl 800835c <FLASH_Program_Fast> + 8008484: e7ed b.n 8008462 <HAL_FLASH_Program+0x3e> + 8008486: 2002 movs r0, #2 + 8008488: e7f6 b.n 8008478 <HAL_FLASH_Program+0x54> + 800848a: bf00 nop + 800848c: 20000f44 .word 0x20000f44 + 8008490: 58004000 .word 0x58004000 + +08008494 <FLASH_PageErase>: + 8008494: 4a05 ldr r2, [pc, #20] ; (80084ac <FLASH_PageErase+0x18>) + 8008496: 6953 ldr r3, [r2, #20] + 8008498: f423 737e bic.w r3, r3, #1016 ; 0x3f8 + 800849c: ea43 00c0 orr.w r0, r3, r0, lsl #3 + 80084a0: f440 3080 orr.w r0, r0, #65536 ; 0x10000 + 80084a4: f040 0002 orr.w r0, r0, #2 + 80084a8: 6150 str r0, [r2, #20] + 80084aa: 4770 bx lr + 80084ac: 58004000 .word 0x58004000 + +080084b0 <HAL_FLASHEx_Erase>: + 80084b0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80084b4: 4f23 ldr r7, [pc, #140] ; (8008544 <HAL_FLASHEx_Erase+0x94>) + 80084b6: 783b ldrb r3, [r7, #0] + 80084b8: 2b01 cmp r3, #1 + 80084ba: 4605 mov r5, r0 + 80084bc: 4688 mov r8, r1 + 80084be: d03f beq.n 8008540 <HAL_FLASHEx_Erase+0x90> + 80084c0: 2301 movs r3, #1 + 80084c2: 703b strb r3, [r7, #0] + 80084c4: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80084c8: 2300 movs r3, #0 + 80084ca: 607b str r3, [r7, #4] + 80084cc: f7ff ff7c bl 80083c8 <FLASH_WaitForLastOperation> + 80084d0: 4604 mov r4, r0 + 80084d2: b988 cbnz r0, 80084f8 <HAL_FLASHEx_Erase+0x48> + 80084d4: 682b ldr r3, [r5, #0] + 80084d6: 2b04 cmp r3, #4 + 80084d8: d113 bne.n 8008502 <HAL_FLASHEx_Erase+0x52> + 80084da: 4a1b ldr r2, [pc, #108] ; (8008548 <HAL_FLASHEx_Erase+0x98>) + 80084dc: 6953 ldr r3, [r2, #20] + 80084de: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 80084e2: f043 0304 orr.w r3, r3, #4 + 80084e6: 6153 str r3, [r2, #20] + 80084e8: f44f 707a mov.w r0, #1000 ; 0x3e8 + 80084ec: f7ff ff6c bl 80083c8 <FLASH_WaitForLastOperation> + 80084f0: 4604 mov r4, r0 + 80084f2: 4b15 ldr r3, [pc, #84] ; (8008548 <HAL_FLASHEx_Erase+0x98>) + 80084f4: 681a ldr r2, [r3, #0] + 80084f6: 681b ldr r3, [r3, #0] + 80084f8: 2300 movs r3, #0 + 80084fa: 703b strb r3, [r7, #0] + 80084fc: 4620 mov r0, r4 + 80084fe: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8008502: f04f 33ff mov.w r3, #4294967295 + 8008506: f8c8 3000 str.w r3, [r8] + 800850a: 686e ldr r6, [r5, #4] + 800850c: e9d5 3201 ldrd r3, r2, [r5, #4] + 8008510: 4413 add r3, r2 + 8008512: 42b3 cmp r3, r6 + 8008514: d90a bls.n 800852c <HAL_FLASHEx_Erase+0x7c> + 8008516: 4630 mov r0, r6 + 8008518: f7ff ffbc bl 8008494 <FLASH_PageErase> + 800851c: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8008520: f7ff ff52 bl 80083c8 <FLASH_WaitForLastOperation> + 8008524: b150 cbz r0, 800853c <HAL_FLASHEx_Erase+0x8c> + 8008526: f8c8 6000 str.w r6, [r8] + 800852a: 4604 mov r4, r0 + 800852c: 4a06 ldr r2, [pc, #24] ; (8008548 <HAL_FLASHEx_Erase+0x98>) + 800852e: 6953 ldr r3, [r2, #20] + 8008530: f423 737e bic.w r3, r3, #1016 ; 0x3f8 + 8008534: f023 0302 bic.w r3, r3, #2 + 8008538: 6153 str r3, [r2, #20] + 800853a: e7da b.n 80084f2 <HAL_FLASHEx_Erase+0x42> + 800853c: 3601 adds r6, #1 + 800853e: e7e5 b.n 800850c <HAL_FLASHEx_Erase+0x5c> + 8008540: 2402 movs r4, #2 + 8008542: e7db b.n 80084fc <HAL_FLASHEx_Erase+0x4c> + 8008544: 20000f44 .word 0x20000f44 + 8008548: 58004000 .word 0x58004000 + +0800854c <HAL_GPIO_Init>: + 800854c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8008550: 4c52 ldr r4, [pc, #328] ; (800869c <HAL_GPIO_Init+0x150>) + 8008552: 2300 movs r3, #0 + 8008554: f04f 090f mov.w r9, #15 + 8008558: 680a ldr r2, [r1, #0] + 800855a: fa32 f503 lsrs.w r5, r2, r3 + 800855e: d101 bne.n 8008564 <HAL_GPIO_Init+0x18> + 8008560: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8008564: 2501 movs r5, #1 + 8008566: fa05 f803 lsl.w r8, r5, r3 + 800856a: ea18 0202 ands.w r2, r8, r2 + 800856e: f000 808e beq.w 800868e <HAL_GPIO_Init+0x142> + 8008572: 684e ldr r6, [r1, #4] + 8008574: 2703 movs r7, #3 + 8008576: f006 0503 and.w r5, r6, #3 + 800857a: ea4f 0e43 mov.w lr, r3, lsl #1 + 800857e: fa07 fc0e lsl.w ip, r7, lr + 8008582: 1e6f subs r7, r5, #1 + 8008584: 2f01 cmp r7, #1 + 8008586: ea6f 0c0c mvn.w ip, ip + 800858a: d832 bhi.n 80085f2 <HAL_GPIO_Init+0xa6> + 800858c: 6887 ldr r7, [r0, #8] + 800858e: ea07 0a0c and.w sl, r7, ip + 8008592: 68cf ldr r7, [r1, #12] + 8008594: fa07 f70e lsl.w r7, r7, lr + 8008598: ea47 070a orr.w r7, r7, sl + 800859c: 6087 str r7, [r0, #8] + 800859e: 6847 ldr r7, [r0, #4] + 80085a0: ea27 0808 bic.w r8, r7, r8 + 80085a4: f3c6 1700 ubfx r7, r6, #4, #1 + 80085a8: 409f lsls r7, r3 + 80085aa: ea47 0708 orr.w r7, r7, r8 + 80085ae: 6047 str r7, [r0, #4] + 80085b0: 68c7 ldr r7, [r0, #12] + 80085b2: ea07 080c and.w r8, r7, ip + 80085b6: 688f ldr r7, [r1, #8] + 80085b8: fa07 f70e lsl.w r7, r7, lr + 80085bc: ea47 0708 orr.w r7, r7, r8 + 80085c0: 2d02 cmp r5, #2 + 80085c2: 60c7 str r7, [r0, #12] + 80085c4: d117 bne.n 80085f6 <HAL_GPIO_Init+0xaa> + 80085c6: ea4f 08d3 mov.w r8, r3, lsr #3 + 80085ca: eb00 0888 add.w r8, r0, r8, lsl #2 + 80085ce: f003 0a07 and.w sl, r3, #7 + 80085d2: f8d8 7020 ldr.w r7, [r8, #32] + 80085d6: ea4f 0a8a mov.w sl, sl, lsl #2 + 80085da: fa09 fb0a lsl.w fp, r9, sl + 80085de: ea27 0b0b bic.w fp, r7, fp + 80085e2: 690f ldr r7, [r1, #16] + 80085e4: fa07 f70a lsl.w r7, r7, sl + 80085e8: ea47 070b orr.w r7, r7, fp + 80085ec: f8c8 7020 str.w r7, [r8, #32] + 80085f0: e001 b.n 80085f6 <HAL_GPIO_Init+0xaa> + 80085f2: 2d03 cmp r5, #3 + 80085f4: d1dc bne.n 80085b0 <HAL_GPIO_Init+0x64> + 80085f6: 6807 ldr r7, [r0, #0] + 80085f8: fa05 f50e lsl.w r5, r5, lr + 80085fc: ea07 070c and.w r7, r7, ip + 8008600: 433d orrs r5, r7 + 8008602: f416 3f40 tst.w r6, #196608 ; 0x30000 + 8008606: 6005 str r5, [r0, #0] + 8008608: d041 beq.n 800868e <HAL_GPIO_Init+0x142> + 800860a: f023 0703 bic.w r7, r3, #3 + 800860e: f107 4780 add.w r7, r7, #1073741824 ; 0x40000000 + 8008612: f507 3780 add.w r7, r7, #65536 ; 0x10000 + 8008616: f003 0c03 and.w ip, r3, #3 + 800861a: 68bd ldr r5, [r7, #8] + 800861c: ea4f 0c8c mov.w ip, ip, lsl #2 + 8008620: f04f 0e07 mov.w lr, #7 + 8008624: fa0e fe0c lsl.w lr, lr, ip + 8008628: f1b0 4f90 cmp.w r0, #1207959552 ; 0x48000000 + 800862c: ea25 0e0e bic.w lr, r5, lr + 8008630: d02f beq.n 8008692 <HAL_GPIO_Init+0x146> + 8008632: 4d1b ldr r5, [pc, #108] ; (80086a0 <HAL_GPIO_Init+0x154>) + 8008634: 42a8 cmp r0, r5 + 8008636: d02e beq.n 8008696 <HAL_GPIO_Init+0x14a> + 8008638: f505 6580 add.w r5, r5, #1024 ; 0x400 + 800863c: 42a8 cmp r0, r5 + 800863e: bf0c ite eq + 8008640: 2502 moveq r5, #2 + 8008642: 2507 movne r5, #7 + 8008644: fa05 f50c lsl.w r5, r5, ip + 8008648: ea45 050e orr.w r5, r5, lr + 800864c: 60bd str r5, [r7, #8] + 800864e: 6825 ldr r5, [r4, #0] + 8008650: 43d7 mvns r7, r2 + 8008652: f416 1f80 tst.w r6, #1048576 ; 0x100000 + 8008656: bf0c ite eq + 8008658: 403d andeq r5, r7 + 800865a: 4315 orrne r5, r2 + 800865c: 6025 str r5, [r4, #0] + 800865e: 6865 ldr r5, [r4, #4] + 8008660: f416 1f00 tst.w r6, #2097152 ; 0x200000 + 8008664: bf0c ite eq + 8008666: 403d andeq r5, r7 + 8008668: 4315 orrne r5, r2 + 800866a: 6065 str r5, [r4, #4] + 800866c: f8d4 5080 ldr.w r5, [r4, #128] ; 0x80 + 8008670: f416 3f80 tst.w r6, #65536 ; 0x10000 + 8008674: bf0c ite eq + 8008676: 403d andeq r5, r7 + 8008678: 4315 orrne r5, r2 + 800867a: f8c4 5080 str.w r5, [r4, #128] ; 0x80 + 800867e: f8d4 5084 ldr.w r5, [r4, #132] ; 0x84 + 8008682: 03b6 lsls r6, r6, #14 + 8008684: bf54 ite pl + 8008686: 403d andpl r5, r7 + 8008688: 4315 orrmi r5, r2 + 800868a: f8c4 5084 str.w r5, [r4, #132] ; 0x84 + 800868e: 3301 adds r3, #1 + 8008690: e762 b.n 8008558 <HAL_GPIO_Init+0xc> + 8008692: 2500 movs r5, #0 + 8008694: e7d6 b.n 8008644 <HAL_GPIO_Init+0xf8> + 8008696: 2501 movs r5, #1 + 8008698: e7d4 b.n 8008644 <HAL_GPIO_Init+0xf8> + 800869a: bf00 nop + 800869c: 58000800 .word 0x58000800 + 80086a0: 48000400 .word 0x48000400 + +080086a4 <HAL_GPIO_DeInit>: + 80086a4: 4a37 ldr r2, [pc, #220] ; (8008784 <HAL_GPIO_DeInit+0xe0>) + 80086a6: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80086aa: 2300 movs r3, #0 + 80086ac: f04f 0a01 mov.w sl, #1 + 80086b0: f04f 0b07 mov.w fp, #7 + 80086b4: f04f 090f mov.w r9, #15 + 80086b8: fa31 f403 lsrs.w r4, r1, r3 + 80086bc: d101 bne.n 80086c2 <HAL_GPIO_DeInit+0x1e> + 80086be: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80086c2: fa0a fc03 lsl.w ip, sl, r3 + 80086c6: ea1c 0601 ands.w r6, ip, r1 + 80086ca: d054 beq.n 8008776 <HAL_GPIO_DeInit+0xd2> + 80086cc: f023 0403 bic.w r4, r3, #3 + 80086d0: f104 4480 add.w r4, r4, #1073741824 ; 0x40000000 + 80086d4: f504 3480 add.w r4, r4, #65536 ; 0x10000 + 80086d8: f003 0703 and.w r7, r3, #3 + 80086dc: 68a5 ldr r5, [r4, #8] + 80086de: 00bf lsls r7, r7, #2 + 80086e0: fa0b f807 lsl.w r8, fp, r7 + 80086e4: f1b0 4f90 cmp.w r0, #1207959552 ; 0x48000000 + 80086e8: ea08 0e05 and.w lr, r8, r5 + 80086ec: d045 beq.n 800877a <HAL_GPIO_DeInit+0xd6> + 80086ee: 4d26 ldr r5, [pc, #152] ; (8008788 <HAL_GPIO_DeInit+0xe4>) + 80086f0: 42a8 cmp r0, r5 + 80086f2: d044 beq.n 800877e <HAL_GPIO_DeInit+0xda> + 80086f4: f505 6580 add.w r5, r5, #1024 ; 0x400 + 80086f8: 42a8 cmp r0, r5 + 80086fa: bf0c ite eq + 80086fc: 2502 moveq r5, #2 + 80086fe: 2507 movne r5, #7 + 8008700: 40bd lsls r5, r7 + 8008702: 4575 cmp r5, lr + 8008704: d117 bne.n 8008736 <HAL_GPIO_DeInit+0x92> + 8008706: f8d2 5080 ldr.w r5, [r2, #128] ; 0x80 + 800870a: ea25 0506 bic.w r5, r5, r6 + 800870e: f8c2 5080 str.w r5, [r2, #128] ; 0x80 + 8008712: f8d2 5084 ldr.w r5, [r2, #132] ; 0x84 + 8008716: ea25 0506 bic.w r5, r5, r6 + 800871a: f8c2 5084 str.w r5, [r2, #132] ; 0x84 + 800871e: 6815 ldr r5, [r2, #0] + 8008720: ea25 0506 bic.w r5, r5, r6 + 8008724: 6015 str r5, [r2, #0] + 8008726: 6855 ldr r5, [r2, #4] + 8008728: ea25 0506 bic.w r5, r5, r6 + 800872c: 6055 str r5, [r2, #4] + 800872e: 68a5 ldr r5, [r4, #8] + 8008730: ea25 0508 bic.w r5, r5, r8 + 8008734: 60a5 str r5, [r4, #8] + 8008736: 6805 ldr r5, [r0, #0] + 8008738: 2603 movs r6, #3 + 800873a: 005c lsls r4, r3, #1 + 800873c: fa06 f404 lsl.w r4, r6, r4 + 8008740: fa23 f606 lsr.w r6, r3, r6 + 8008744: 4325 orrs r5, r4 + 8008746: eb00 0686 add.w r6, r0, r6, lsl #2 + 800874a: 6005 str r5, [r0, #0] + 800874c: f003 0507 and.w r5, r3, #7 + 8008750: 6a37 ldr r7, [r6, #32] + 8008752: 00ad lsls r5, r5, #2 + 8008754: fa09 f505 lsl.w r5, r9, r5 + 8008758: ea27 0705 bic.w r7, r7, r5 + 800875c: 6237 str r7, [r6, #32] + 800875e: 6885 ldr r5, [r0, #8] + 8008760: ea25 0504 bic.w r5, r5, r4 + 8008764: 6085 str r5, [r0, #8] + 8008766: 6845 ldr r5, [r0, #4] + 8008768: ea25 050c bic.w r5, r5, ip + 800876c: 6045 str r5, [r0, #4] + 800876e: 68c5 ldr r5, [r0, #12] + 8008770: ea25 0404 bic.w r4, r5, r4 + 8008774: 60c4 str r4, [r0, #12] + 8008776: 3301 adds r3, #1 + 8008778: e79e b.n 80086b8 <HAL_GPIO_DeInit+0x14> + 800877a: 2500 movs r5, #0 + 800877c: e7c0 b.n 8008700 <HAL_GPIO_DeInit+0x5c> + 800877e: 2501 movs r5, #1 + 8008780: e7be b.n 8008700 <HAL_GPIO_DeInit+0x5c> + 8008782: bf00 nop + 8008784: 58000800 .word 0x58000800 + 8008788: 48000400 .word 0x48000400 + +0800878c <HAL_GPIO_ReadPin>: + 800878c: 6903 ldr r3, [r0, #16] + 800878e: 4219 tst r1, r3 + 8008790: bf14 ite ne + 8008792: 2001 movne r0, #1 + 8008794: 2000 moveq r0, #0 + 8008796: 4770 bx lr + +08008798 <HAL_GPIO_WritePin>: + 8008798: b10a cbz r2, 800879e <HAL_GPIO_WritePin+0x6> + 800879a: 6181 str r1, [r0, #24] + 800879c: 4770 bx lr + 800879e: 6281 str r1, [r0, #40] ; 0x28 + 80087a0: 4770 bx lr + ... + +080087a4 <HAL_GPIO_EXTI_IRQHandler>: + 80087a4: 4a04 ldr r2, [pc, #16] ; (80087b8 <HAL_GPIO_EXTI_IRQHandler+0x14>) + 80087a6: 68d1 ldr r1, [r2, #12] + 80087a8: 4201 tst r1, r0 + 80087aa: b508 push {r3, lr} + 80087ac: d002 beq.n 80087b4 <HAL_GPIO_EXTI_IRQHandler+0x10> + 80087ae: 60d0 str r0, [r2, #12] + 80087b0: f7fb f948 bl 8003a44 <HAL_GPIO_EXTI_Callback> + 80087b4: bd08 pop {r3, pc} + 80087b6: bf00 nop + 80087b8: 58000800 .word 0x58000800 + +080087bc <I2C_Flush_TXDR>: + 80087bc: 6803 ldr r3, [r0, #0] + 80087be: 699a ldr r2, [r3, #24] + 80087c0: 0791 lsls r1, r2, #30 + 80087c2: bf44 itt mi + 80087c4: 2200 movmi r2, #0 + 80087c6: 629a strmi r2, [r3, #40] ; 0x28 + 80087c8: 699a ldr r2, [r3, #24] + 80087ca: 07d2 lsls r2, r2, #31 + 80087cc: bf5e ittt pl + 80087ce: 699a ldrpl r2, [r3, #24] + 80087d0: f042 0201 orrpl.w r2, r2, #1 + 80087d4: 619a strpl r2, [r3, #24] + 80087d6: 4770 bx lr + +080087d8 <I2C_TransferConfig>: + 80087d8: b530 push {r4, r5, lr} + 80087da: 9d03 ldr r5, [sp, #12] + 80087dc: 6804 ldr r4, [r0, #0] + 80087de: 432b orrs r3, r5 + 80087e0: ea43 4302 orr.w r3, r3, r2, lsl #16 + 80087e4: 4a06 ldr r2, [pc, #24] ; (8008800 <I2C_TransferConfig+0x28>) + 80087e6: 6860 ldr r0, [r4, #4] + 80087e8: f3c1 0109 ubfx r1, r1, #0, #10 + 80087ec: 430b orrs r3, r1 + 80087ee: ea42 5255 orr.w r2, r2, r5, lsr #21 + 80087f2: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 80087f6: ea20 0002 bic.w r0, r0, r2 + 80087fa: 4303 orrs r3, r0 + 80087fc: 6063 str r3, [r4, #4] + 80087fe: bd30 pop {r4, r5, pc} + 8008800: 03ff63ff .word 0x03ff63ff + +08008804 <I2C_IsErrorOccurred>: + 8008804: 6803 ldr r3, [r0, #0] + 8008806: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800880a: 699c ldr r4, [r3, #24] + 800880c: f014 0410 ands.w r4, r4, #16 + 8008810: 4605 mov r5, r0 + 8008812: 460f mov r7, r1 + 8008814: 4616 mov r6, r2 + 8008816: d06f beq.n 80088f8 <I2C_IsErrorOccurred+0xf4> + 8008818: 2210 movs r2, #16 + 800881a: 2400 movs r4, #0 + 800881c: 61da str r2, [r3, #28] + 800881e: 46a0 mov r8, r4 + 8008820: 682b ldr r3, [r5, #0] + 8008822: 699a ldr r2, [r3, #24] + 8008824: 0690 lsls r0, r2, #26 + 8008826: d461 bmi.n 80088ec <I2C_IsErrorOccurred+0xe8> + 8008828: f1b8 0f00 cmp.w r8, #0 + 800882c: d035 beq.n 800889a <I2C_IsErrorOccurred+0x96> + 800882e: f044 0404 orr.w r4, r4, #4 + 8008832: 2001 movs r0, #1 + 8008834: 682e ldr r6, [r5, #0] + 8008836: 69b3 ldr r3, [r6, #24] + 8008838: 05d9 lsls r1, r3, #23 + 800883a: bf41 itttt mi + 800883c: f44f 7280 movmi.w r2, #256 ; 0x100 + 8008840: 61f2 strmi r2, [r6, #28] + 8008842: f044 0401 orrmi.w r4, r4, #1 + 8008846: 2001 movmi r0, #1 + 8008848: 055a lsls r2, r3, #21 + 800884a: bf41 itttt mi + 800884c: f44f 6280 movmi.w r2, #1024 ; 0x400 + 8008850: f044 0408 orrmi.w r4, r4, #8 + 8008854: 61f2 strmi r2, [r6, #28] + 8008856: 2001 movmi r0, #1 + 8008858: 059b lsls r3, r3, #22 + 800885a: d54f bpl.n 80088fc <I2C_IsErrorOccurred+0xf8> + 800885c: f44f 7300 mov.w r3, #512 ; 0x200 + 8008860: f044 0402 orr.w r4, r4, #2 + 8008864: 61f3 str r3, [r6, #28] + 8008866: 4628 mov r0, r5 + 8008868: f7ff ffa8 bl 80087bc <I2C_Flush_TXDR> + 800886c: 6873 ldr r3, [r6, #4] + 800886e: f023 73ff bic.w r3, r3, #33423360 ; 0x1fe0000 + 8008872: f423 338b bic.w r3, r3, #71168 ; 0x11600 + 8008876: f423 73ff bic.w r3, r3, #510 ; 0x1fe + 800887a: f023 0301 bic.w r3, r3, #1 + 800887e: 6073 str r3, [r6, #4] + 8008880: 6c6b ldr r3, [r5, #68] ; 0x44 + 8008882: 4323 orrs r3, r4 + 8008884: 646b str r3, [r5, #68] ; 0x44 + 8008886: 2320 movs r3, #32 + 8008888: f885 3041 strb.w r3, [r5, #65] ; 0x41 + 800888c: 2300 movs r3, #0 + 800888e: f885 3042 strb.w r3, [r5, #66] ; 0x42 + 8008892: f885 3040 strb.w r3, [r5, #64] ; 0x40 + 8008896: 2001 movs r0, #1 + 8008898: e032 b.n 8008900 <I2C_IsErrorOccurred+0xfc> + 800889a: 1c7a adds r2, r7, #1 + 800889c: d0c1 beq.n 8008822 <I2C_IsErrorOccurred+0x1e> + 800889e: f7fa f977 bl 8002b90 <HAL_GetTick> + 80088a2: 1b80 subs r0, r0, r6 + 80088a4: 42b8 cmp r0, r7 + 80088a6: d801 bhi.n 80088ac <I2C_IsErrorOccurred+0xa8> + 80088a8: 2f00 cmp r7, #0 + 80088aa: d1b9 bne.n 8008820 <I2C_IsErrorOccurred+0x1c> + 80088ac: 682b ldr r3, [r5, #0] + 80088ae: 6859 ldr r1, [r3, #4] + 80088b0: f895 2042 ldrb.w r2, [r5, #66] ; 0x42 + 80088b4: 6998 ldr r0, [r3, #24] + 80088b6: 0400 lsls r0, r0, #16 + 80088b8: b2d2 uxtb r2, r2 + 80088ba: d50a bpl.n 80088d2 <I2C_IsErrorOccurred+0xce> + 80088bc: 0449 lsls r1, r1, #17 + 80088be: d408 bmi.n 80088d2 <I2C_IsErrorOccurred+0xce> + 80088c0: 2a20 cmp r2, #32 + 80088c2: d006 beq.n 80088d2 <I2C_IsErrorOccurred+0xce> + 80088c4: 685a ldr r2, [r3, #4] + 80088c6: f442 4280 orr.w r2, r2, #16384 ; 0x4000 + 80088ca: 605a str r2, [r3, #4] + 80088cc: f7fa f960 bl 8002b90 <HAL_GetTick> + 80088d0: 4606 mov r6, r0 + 80088d2: 682b ldr r3, [r5, #0] + 80088d4: 699b ldr r3, [r3, #24] + 80088d6: 069b lsls r3, r3, #26 + 80088d8: d4a2 bmi.n 8008820 <I2C_IsErrorOccurred+0x1c> + 80088da: f7fa f959 bl 8002b90 <HAL_GetTick> + 80088de: 1b80 subs r0, r0, r6 + 80088e0: 2819 cmp r0, #25 + 80088e2: d9f6 bls.n 80088d2 <I2C_IsErrorOccurred+0xce> + 80088e4: 2420 movs r4, #32 + 80088e6: f04f 0801 mov.w r8, #1 + 80088ea: e799 b.n 8008820 <I2C_IsErrorOccurred+0x1c> + 80088ec: f1b8 0f00 cmp.w r8, #0 + 80088f0: d19d bne.n 800882e <I2C_IsErrorOccurred+0x2a> + 80088f2: 2220 movs r2, #32 + 80088f4: 61da str r2, [r3, #28] + 80088f6: e79a b.n 800882e <I2C_IsErrorOccurred+0x2a> + 80088f8: 4620 mov r0, r4 + 80088fa: e79b b.n 8008834 <I2C_IsErrorOccurred+0x30> + 80088fc: 2800 cmp r0, #0 + 80088fe: d1b2 bne.n 8008866 <I2C_IsErrorOccurred+0x62> + 8008900: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +08008904 <I2C_WaitOnTXISFlagUntilTimeout>: + 8008904: b570 push {r4, r5, r6, lr} + 8008906: 4604 mov r4, r0 + 8008908: 460d mov r5, r1 + 800890a: 4616 mov r6, r2 + 800890c: 6823 ldr r3, [r4, #0] + 800890e: 699b ldr r3, [r3, #24] + 8008910: 079b lsls r3, r3, #30 + 8008912: d501 bpl.n 8008918 <I2C_WaitOnTXISFlagUntilTimeout+0x14> + 8008914: 2000 movs r0, #0 + 8008916: bd70 pop {r4, r5, r6, pc} + 8008918: 4632 mov r2, r6 + 800891a: 4629 mov r1, r5 + 800891c: 4620 mov r0, r4 + 800891e: f7ff ff71 bl 8008804 <I2C_IsErrorOccurred> + 8008922: b9a0 cbnz r0, 800894e <I2C_WaitOnTXISFlagUntilTimeout+0x4a> + 8008924: 1c6a adds r2, r5, #1 + 8008926: d0f1 beq.n 800890c <I2C_WaitOnTXISFlagUntilTimeout+0x8> + 8008928: f7fa f932 bl 8002b90 <HAL_GetTick> + 800892c: 1b80 subs r0, r0, r6 + 800892e: 42a8 cmp r0, r5 + 8008930: d801 bhi.n 8008936 <I2C_WaitOnTXISFlagUntilTimeout+0x32> + 8008932: 2d00 cmp r5, #0 + 8008934: d1ea bne.n 800890c <I2C_WaitOnTXISFlagUntilTimeout+0x8> + 8008936: 6c63 ldr r3, [r4, #68] ; 0x44 + 8008938: f043 0320 orr.w r3, r3, #32 + 800893c: 6463 str r3, [r4, #68] ; 0x44 + 800893e: 2320 movs r3, #32 + 8008940: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 8008944: 2300 movs r3, #0 + 8008946: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 800894a: f884 3040 strb.w r3, [r4, #64] ; 0x40 + 800894e: 2001 movs r0, #1 + 8008950: e7e1 b.n 8008916 <I2C_WaitOnTXISFlagUntilTimeout+0x12> + +08008952 <I2C_WaitOnRXNEFlagUntilTimeout>: + 8008952: b570 push {r4, r5, r6, lr} + 8008954: 4604 mov r4, r0 + 8008956: 460d mov r5, r1 + 8008958: 4616 mov r6, r2 + 800895a: 6823 ldr r3, [r4, #0] + 800895c: 699b ldr r3, [r3, #24] + 800895e: 075b lsls r3, r3, #29 + 8008960: d40e bmi.n 8008980 <I2C_WaitOnRXNEFlagUntilTimeout+0x2e> + 8008962: 4632 mov r2, r6 + 8008964: 4629 mov r1, r5 + 8008966: 4620 mov r0, r4 + 8008968: f7ff ff4c bl 8008804 <I2C_IsErrorOccurred> + 800896c: bb38 cbnz r0, 80089be <I2C_WaitOnRXNEFlagUntilTimeout+0x6c> + 800896e: 6823 ldr r3, [r4, #0] + 8008970: 699a ldr r2, [r3, #24] + 8008972: 0691 lsls r1, r2, #26 + 8008974: d525 bpl.n 80089c2 <I2C_WaitOnRXNEFlagUntilTimeout+0x70> + 8008976: 699a ldr r2, [r3, #24] + 8008978: 0752 lsls r2, r2, #29 + 800897a: d503 bpl.n 8008984 <I2C_WaitOnRXNEFlagUntilTimeout+0x32> + 800897c: 8d22 ldrh r2, [r4, #40] ; 0x28 + 800897e: b10a cbz r2, 8008984 <I2C_WaitOnRXNEFlagUntilTimeout+0x32> + 8008980: 2000 movs r0, #0 + 8008982: bd70 pop {r4, r5, r6, pc} + 8008984: 699a ldr r2, [r3, #24] + 8008986: f012 0210 ands.w r2, r2, #16 + 800898a: bf1c itt ne + 800898c: 2210 movne r2, #16 + 800898e: 61da strne r2, [r3, #28] + 8008990: f04f 0120 mov.w r1, #32 + 8008994: bf18 it ne + 8008996: 2204 movne r2, #4 + 8008998: 6462 str r2, [r4, #68] ; 0x44 + 800899a: 61d9 str r1, [r3, #28] + 800899c: 685a ldr r2, [r3, #4] + 800899e: f022 72ff bic.w r2, r2, #33423360 ; 0x1fe0000 + 80089a2: f422 328b bic.w r2, r2, #71168 ; 0x11600 + 80089a6: f422 72ff bic.w r2, r2, #510 ; 0x1fe + 80089aa: f022 0201 bic.w r2, r2, #1 + 80089ae: 605a str r2, [r3, #4] + 80089b0: 2300 movs r3, #0 + 80089b2: f884 1041 strb.w r1, [r4, #65] ; 0x41 + 80089b6: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 80089ba: f884 3040 strb.w r3, [r4, #64] ; 0x40 + 80089be: 2001 movs r0, #1 + 80089c0: e7df b.n 8008982 <I2C_WaitOnRXNEFlagUntilTimeout+0x30> + 80089c2: f7fa f8e5 bl 8002b90 <HAL_GetTick> + 80089c6: 1b80 subs r0, r0, r6 + 80089c8: 42a8 cmp r0, r5 + 80089ca: d801 bhi.n 80089d0 <I2C_WaitOnRXNEFlagUntilTimeout+0x7e> + 80089cc: 2d00 cmp r5, #0 + 80089ce: d1c4 bne.n 800895a <I2C_WaitOnRXNEFlagUntilTimeout+0x8> + 80089d0: 6c63 ldr r3, [r4, #68] ; 0x44 + 80089d2: f043 0320 orr.w r3, r3, #32 + 80089d6: 6463 str r3, [r4, #68] ; 0x44 + 80089d8: 2320 movs r3, #32 + 80089da: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 80089de: 2300 movs r3, #0 + 80089e0: e7eb b.n 80089ba <I2C_WaitOnRXNEFlagUntilTimeout+0x68> + +080089e2 <I2C_WaitOnFlagUntilTimeout>: + 80089e2: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80089e6: 9f06 ldr r7, [sp, #24] + 80089e8: 4604 mov r4, r0 + 80089ea: 4688 mov r8, r1 + 80089ec: 4616 mov r6, r2 + 80089ee: 461d mov r5, r3 + 80089f0: 6822 ldr r2, [r4, #0] + 80089f2: 6993 ldr r3, [r2, #24] + 80089f4: ea38 0303 bics.w r3, r8, r3 + 80089f8: bf0c ite eq + 80089fa: 2301 moveq r3, #1 + 80089fc: 2300 movne r3, #0 + 80089fe: 42b3 cmp r3, r6 + 8008a00: d001 beq.n 8008a06 <I2C_WaitOnFlagUntilTimeout+0x24> + 8008a02: 2000 movs r0, #0 + 8008a04: e015 b.n 8008a32 <I2C_WaitOnFlagUntilTimeout+0x50> + 8008a06: 1c6b adds r3, r5, #1 + 8008a08: d0f3 beq.n 80089f2 <I2C_WaitOnFlagUntilTimeout+0x10> + 8008a0a: f7fa f8c1 bl 8002b90 <HAL_GetTick> + 8008a0e: 1bc0 subs r0, r0, r7 + 8008a10: 42a8 cmp r0, r5 + 8008a12: d801 bhi.n 8008a18 <I2C_WaitOnFlagUntilTimeout+0x36> + 8008a14: 2d00 cmp r5, #0 + 8008a16: d1eb bne.n 80089f0 <I2C_WaitOnFlagUntilTimeout+0xe> + 8008a18: 6c63 ldr r3, [r4, #68] ; 0x44 + 8008a1a: f043 0320 orr.w r3, r3, #32 + 8008a1e: 6463 str r3, [r4, #68] ; 0x44 + 8008a20: 2320 movs r3, #32 + 8008a22: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 8008a26: 2300 movs r3, #0 + 8008a28: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 8008a2c: f884 3040 strb.w r3, [r4, #64] ; 0x40 + 8008a30: 2001 movs r0, #1 + 8008a32: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +08008a36 <I2C_WaitOnSTOPFlagUntilTimeout>: + 8008a36: b570 push {r4, r5, r6, lr} + 8008a38: 4604 mov r4, r0 + 8008a3a: 460d mov r5, r1 + 8008a3c: 4616 mov r6, r2 + 8008a3e: 6823 ldr r3, [r4, #0] + 8008a40: 699b ldr r3, [r3, #24] + 8008a42: 069b lsls r3, r3, #26 + 8008a44: d501 bpl.n 8008a4a <I2C_WaitOnSTOPFlagUntilTimeout+0x14> + 8008a46: 2000 movs r0, #0 + 8008a48: bd70 pop {r4, r5, r6, pc} + 8008a4a: 4632 mov r2, r6 + 8008a4c: 4629 mov r1, r5 + 8008a4e: 4620 mov r0, r4 + 8008a50: f7ff fed8 bl 8008804 <I2C_IsErrorOccurred> + 8008a54: b990 cbnz r0, 8008a7c <I2C_WaitOnSTOPFlagUntilTimeout+0x46> + 8008a56: f7fa f89b bl 8002b90 <HAL_GetTick> + 8008a5a: 1b80 subs r0, r0, r6 + 8008a5c: 42a8 cmp r0, r5 + 8008a5e: d801 bhi.n 8008a64 <I2C_WaitOnSTOPFlagUntilTimeout+0x2e> + 8008a60: 2d00 cmp r5, #0 + 8008a62: d1ec bne.n 8008a3e <I2C_WaitOnSTOPFlagUntilTimeout+0x8> + 8008a64: 6c63 ldr r3, [r4, #68] ; 0x44 + 8008a66: f043 0320 orr.w r3, r3, #32 + 8008a6a: 6463 str r3, [r4, #68] ; 0x44 + 8008a6c: 2320 movs r3, #32 + 8008a6e: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 8008a72: 2300 movs r3, #0 + 8008a74: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 8008a78: f884 3040 strb.w r3, [r4, #64] ; 0x40 + 8008a7c: 2001 movs r0, #1 + 8008a7e: e7e3 b.n 8008a48 <I2C_WaitOnSTOPFlagUntilTimeout+0x12> + +08008a80 <HAL_I2C_Init>: + 8008a80: b510 push {r4, lr} + 8008a82: 4604 mov r4, r0 + 8008a84: 2800 cmp r0, #0 + 8008a86: d04a beq.n 8008b1e <HAL_I2C_Init+0x9e> + 8008a88: f890 3041 ldrb.w r3, [r0, #65] ; 0x41 + 8008a8c: f003 02ff and.w r2, r3, #255 ; 0xff + 8008a90: b91b cbnz r3, 8008a9a <HAL_I2C_Init+0x1a> + 8008a92: f880 2040 strb.w r2, [r0, #64] ; 0x40 + 8008a96: f7f9 fd53 bl 8002540 <HAL_I2C_MspInit> + 8008a9a: 2324 movs r3, #36 ; 0x24 + 8008a9c: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 8008aa0: 6823 ldr r3, [r4, #0] + 8008aa2: 681a ldr r2, [r3, #0] + 8008aa4: f022 0201 bic.w r2, r2, #1 + 8008aa8: 601a str r2, [r3, #0] + 8008aaa: 6862 ldr r2, [r4, #4] + 8008aac: f022 6270 bic.w r2, r2, #251658240 ; 0xf000000 + 8008ab0: 611a str r2, [r3, #16] + 8008ab2: 689a ldr r2, [r3, #8] + 8008ab4: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 8008ab8: 609a str r2, [r3, #8] + 8008aba: e9d4 2102 ldrd r2, r1, [r4, #8] + 8008abe: 2901 cmp r1, #1 + 8008ac0: d124 bne.n 8008b0c <HAL_I2C_Init+0x8c> + 8008ac2: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 8008ac6: 609a str r2, [r3, #8] + 8008ac8: 685a ldr r2, [r3, #4] + 8008aca: f042 7200 orr.w r2, r2, #33554432 ; 0x2000000 + 8008ace: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 8008ad2: 605a str r2, [r3, #4] + 8008ad4: 68da ldr r2, [r3, #12] + 8008ad6: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 8008ada: 60da str r2, [r3, #12] + 8008adc: e9d4 2104 ldrd r2, r1, [r4, #16] + 8008ae0: 430a orrs r2, r1 + 8008ae2: 69a1 ldr r1, [r4, #24] + 8008ae4: ea42 2201 orr.w r2, r2, r1, lsl #8 + 8008ae8: 60da str r2, [r3, #12] + 8008aea: e9d4 2107 ldrd r2, r1, [r4, #28] + 8008aee: 430a orrs r2, r1 + 8008af0: 601a str r2, [r3, #0] + 8008af2: 681a ldr r2, [r3, #0] + 8008af4: f042 0201 orr.w r2, r2, #1 + 8008af8: 601a str r2, [r3, #0] + 8008afa: 2000 movs r0, #0 + 8008afc: 2320 movs r3, #32 + 8008afe: 6460 str r0, [r4, #68] ; 0x44 + 8008b00: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 8008b04: 6320 str r0, [r4, #48] ; 0x30 + 8008b06: f884 0042 strb.w r0, [r4, #66] ; 0x42 + 8008b0a: bd10 pop {r4, pc} + 8008b0c: f442 4204 orr.w r2, r2, #33792 ; 0x8400 + 8008b10: 2902 cmp r1, #2 + 8008b12: 609a str r2, [r3, #8] + 8008b14: bf04 itt eq + 8008b16: f44f 6200 moveq.w r2, #2048 ; 0x800 + 8008b1a: 605a streq r2, [r3, #4] + 8008b1c: e7d4 b.n 8008ac8 <HAL_I2C_Init+0x48> + 8008b1e: 2001 movs r0, #1 + 8008b20: e7f3 b.n 8008b0a <HAL_I2C_Init+0x8a> + ... + +08008b24 <HAL_I2C_Master_Transmit>: + 8008b24: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} + 8008b28: 4698 mov r8, r3 + 8008b2a: f890 3041 ldrb.w r3, [r0, #65] ; 0x41 + 8008b2e: 9f0a ldr r7, [sp, #40] ; 0x28 + 8008b30: 2b20 cmp r3, #32 + 8008b32: 4604 mov r4, r0 + 8008b34: 460e mov r6, r1 + 8008b36: 4691 mov r9, r2 + 8008b38: f040 8086 bne.w 8008c48 <HAL_I2C_Master_Transmit+0x124> + 8008b3c: f890 3040 ldrb.w r3, [r0, #64] ; 0x40 + 8008b40: 2b01 cmp r3, #1 + 8008b42: f000 8081 beq.w 8008c48 <HAL_I2C_Master_Transmit+0x124> + 8008b46: f04f 0a01 mov.w sl, #1 + 8008b4a: f880 a040 strb.w sl, [r0, #64] ; 0x40 + 8008b4e: f7fa f81f bl 8002b90 <HAL_GetTick> + 8008b52: 2319 movs r3, #25 + 8008b54: 4605 mov r5, r0 + 8008b56: 9000 str r0, [sp, #0] + 8008b58: 4652 mov r2, sl + 8008b5a: f44f 4100 mov.w r1, #32768 ; 0x8000 + 8008b5e: 4620 mov r0, r4 + 8008b60: f7ff ff3f bl 80089e2 <I2C_WaitOnFlagUntilTimeout> + 8008b64: b118 cbz r0, 8008b6e <HAL_I2C_Master_Transmit+0x4a> + 8008b66: 2001 movs r0, #1 + 8008b68: b002 add sp, #8 + 8008b6a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8008b6e: 2321 movs r3, #33 ; 0x21 + 8008b70: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 8008b74: 2310 movs r3, #16 + 8008b76: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 8008b7a: 6460 str r0, [r4, #68] ; 0x44 + 8008b7c: f8a4 802a strh.w r8, [r4, #42] ; 0x2a + 8008b80: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008b82: f8c4 9024 str.w r9, [r4, #36] ; 0x24 + 8008b86: b29b uxth r3, r3 + 8008b88: 2bff cmp r3, #255 ; 0xff + 8008b8a: 6360 str r0, [r4, #52] ; 0x34 + 8008b8c: 4b2f ldr r3, [pc, #188] ; (8008c4c <HAL_I2C_Master_Transmit+0x128>) + 8008b8e: d926 bls.n 8008bde <HAL_I2C_Master_Transmit+0xba> + 8008b90: 22ff movs r2, #255 ; 0xff + 8008b92: 8522 strh r2, [r4, #40] ; 0x28 + 8008b94: 9300 str r3, [sp, #0] + 8008b96: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + 8008b9a: 4631 mov r1, r6 + 8008b9c: 4620 mov r0, r4 + 8008b9e: f7ff fe1b bl 80087d8 <I2C_TransferConfig> + 8008ba2: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008ba4: b29b uxth r3, r3 + 8008ba6: 462a mov r2, r5 + 8008ba8: 4639 mov r1, r7 + 8008baa: 4620 mov r0, r4 + 8008bac: b9fb cbnz r3, 8008bee <HAL_I2C_Master_Transmit+0xca> + 8008bae: f7ff ff42 bl 8008a36 <I2C_WaitOnSTOPFlagUntilTimeout> + 8008bb2: 2800 cmp r0, #0 + 8008bb4: d1d7 bne.n 8008b66 <HAL_I2C_Master_Transmit+0x42> + 8008bb6: 6823 ldr r3, [r4, #0] + 8008bb8: 2120 movs r1, #32 + 8008bba: 61d9 str r1, [r3, #28] + 8008bbc: 685a ldr r2, [r3, #4] + 8008bbe: f022 72ff bic.w r2, r2, #33423360 ; 0x1fe0000 + 8008bc2: f422 328b bic.w r2, r2, #71168 ; 0x11600 + 8008bc6: f422 72ff bic.w r2, r2, #510 ; 0x1fe + 8008bca: f022 0201 bic.w r2, r2, #1 + 8008bce: 605a str r2, [r3, #4] + 8008bd0: f884 1041 strb.w r1, [r4, #65] ; 0x41 + 8008bd4: f884 0040 strb.w r0, [r4, #64] ; 0x40 + 8008bd8: f884 0042 strb.w r0, [r4, #66] ; 0x42 + 8008bdc: e7c4 b.n 8008b68 <HAL_I2C_Master_Transmit+0x44> + 8008bde: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8008be0: 9300 str r3, [sp, #0] + 8008be2: b292 uxth r2, r2 + 8008be4: 8522 strh r2, [r4, #40] ; 0x28 + 8008be6: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + 8008bea: b2d2 uxtb r2, r2 + 8008bec: e7d5 b.n 8008b9a <HAL_I2C_Master_Transmit+0x76> + 8008bee: f7ff fe89 bl 8008904 <I2C_WaitOnTXISFlagUntilTimeout> + 8008bf2: 2800 cmp r0, #0 + 8008bf4: d1b7 bne.n 8008b66 <HAL_I2C_Master_Transmit+0x42> + 8008bf6: 6a63 ldr r3, [r4, #36] ; 0x24 + 8008bf8: 6822 ldr r2, [r4, #0] + 8008bfa: f813 1b01 ldrb.w r1, [r3], #1 + 8008bfe: 6291 str r1, [r2, #40] ; 0x28 + 8008c00: 6263 str r3, [r4, #36] ; 0x24 + 8008c02: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008c04: 8d22 ldrh r2, [r4, #40] ; 0x28 + 8008c06: 3b01 subs r3, #1 + 8008c08: b29b uxth r3, r3 + 8008c0a: 8563 strh r3, [r4, #42] ; 0x2a + 8008c0c: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008c0e: 3a01 subs r2, #1 + 8008c10: b292 uxth r2, r2 + 8008c12: b29b uxth r3, r3 + 8008c14: 8522 strh r2, [r4, #40] ; 0x28 + 8008c16: 2b00 cmp r3, #0 + 8008c18: d0c3 beq.n 8008ba2 <HAL_I2C_Master_Transmit+0x7e> + 8008c1a: 2a00 cmp r2, #0 + 8008c1c: d1c1 bne.n 8008ba2 <HAL_I2C_Master_Transmit+0x7e> + 8008c1e: 9500 str r5, [sp, #0] + 8008c20: 463b mov r3, r7 + 8008c22: 2180 movs r1, #128 ; 0x80 + 8008c24: 4620 mov r0, r4 + 8008c26: f7ff fedc bl 80089e2 <I2C_WaitOnFlagUntilTimeout> + 8008c2a: 2800 cmp r0, #0 + 8008c2c: d19b bne.n 8008b66 <HAL_I2C_Master_Transmit+0x42> + 8008c2e: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008c30: b29b uxth r3, r3 + 8008c32: 2bff cmp r3, #255 ; 0xff + 8008c34: d903 bls.n 8008c3e <HAL_I2C_Master_Transmit+0x11a> + 8008c36: 22ff movs r2, #255 ; 0xff + 8008c38: 8522 strh r2, [r4, #40] ; 0x28 + 8008c3a: 9000 str r0, [sp, #0] + 8008c3c: e7ab b.n 8008b96 <HAL_I2C_Master_Transmit+0x72> + 8008c3e: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8008c40: 9000 str r0, [sp, #0] + 8008c42: b292 uxth r2, r2 + 8008c44: 8522 strh r2, [r4, #40] ; 0x28 + 8008c46: e7ce b.n 8008be6 <HAL_I2C_Master_Transmit+0xc2> + 8008c48: 2002 movs r0, #2 + 8008c4a: e78d b.n 8008b68 <HAL_I2C_Master_Transmit+0x44> + 8008c4c: 80002000 .word 0x80002000 + +08008c50 <HAL_I2C_Master_Receive>: + 8008c50: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} + 8008c54: 4698 mov r8, r3 + 8008c56: f890 3041 ldrb.w r3, [r0, #65] ; 0x41 + 8008c5a: 9f0a ldr r7, [sp, #40] ; 0x28 + 8008c5c: 2b20 cmp r3, #32 + 8008c5e: 4604 mov r4, r0 + 8008c60: 460e mov r6, r1 + 8008c62: 4691 mov r9, r2 + 8008c64: f040 8087 bne.w 8008d76 <HAL_I2C_Master_Receive+0x126> + 8008c68: f890 3040 ldrb.w r3, [r0, #64] ; 0x40 + 8008c6c: 2b01 cmp r3, #1 + 8008c6e: f000 8082 beq.w 8008d76 <HAL_I2C_Master_Receive+0x126> + 8008c72: f04f 0a01 mov.w sl, #1 + 8008c76: f880 a040 strb.w sl, [r0, #64] ; 0x40 + 8008c7a: f7f9 ff89 bl 8002b90 <HAL_GetTick> + 8008c7e: 2319 movs r3, #25 + 8008c80: 4605 mov r5, r0 + 8008c82: 9000 str r0, [sp, #0] + 8008c84: 4652 mov r2, sl + 8008c86: f44f 4100 mov.w r1, #32768 ; 0x8000 + 8008c8a: 4620 mov r0, r4 + 8008c8c: f7ff fea9 bl 80089e2 <I2C_WaitOnFlagUntilTimeout> + 8008c90: b118 cbz r0, 8008c9a <HAL_I2C_Master_Receive+0x4a> + 8008c92: 2001 movs r0, #1 + 8008c94: b002 add sp, #8 + 8008c96: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8008c9a: 2322 movs r3, #34 ; 0x22 + 8008c9c: f884 3041 strb.w r3, [r4, #65] ; 0x41 + 8008ca0: 2310 movs r3, #16 + 8008ca2: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 8008ca6: 6460 str r0, [r4, #68] ; 0x44 + 8008ca8: f8a4 802a strh.w r8, [r4, #42] ; 0x2a + 8008cac: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008cae: f8c4 9024 str.w r9, [r4, #36] ; 0x24 + 8008cb2: b29b uxth r3, r3 + 8008cb4: 2bff cmp r3, #255 ; 0xff + 8008cb6: 6360 str r0, [r4, #52] ; 0x34 + 8008cb8: 4b30 ldr r3, [pc, #192] ; (8008d7c <HAL_I2C_Master_Receive+0x12c>) + 8008cba: d926 bls.n 8008d0a <HAL_I2C_Master_Receive+0xba> + 8008cbc: 22ff movs r2, #255 ; 0xff + 8008cbe: 8522 strh r2, [r4, #40] ; 0x28 + 8008cc0: 9300 str r3, [sp, #0] + 8008cc2: f04f 7380 mov.w r3, #16777216 ; 0x1000000 + 8008cc6: 4631 mov r1, r6 + 8008cc8: 4620 mov r0, r4 + 8008cca: f7ff fd85 bl 80087d8 <I2C_TransferConfig> + 8008cce: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008cd0: b29b uxth r3, r3 + 8008cd2: 462a mov r2, r5 + 8008cd4: 4639 mov r1, r7 + 8008cd6: 4620 mov r0, r4 + 8008cd8: b9fb cbnz r3, 8008d1a <HAL_I2C_Master_Receive+0xca> + 8008cda: f7ff feac bl 8008a36 <I2C_WaitOnSTOPFlagUntilTimeout> + 8008cde: 2800 cmp r0, #0 + 8008ce0: d1d7 bne.n 8008c92 <HAL_I2C_Master_Receive+0x42> + 8008ce2: 6823 ldr r3, [r4, #0] + 8008ce4: 2120 movs r1, #32 + 8008ce6: 61d9 str r1, [r3, #28] + 8008ce8: 685a ldr r2, [r3, #4] + 8008cea: f022 72ff bic.w r2, r2, #33423360 ; 0x1fe0000 + 8008cee: f422 328b bic.w r2, r2, #71168 ; 0x11600 + 8008cf2: f422 72ff bic.w r2, r2, #510 ; 0x1fe + 8008cf6: f022 0201 bic.w r2, r2, #1 + 8008cfa: 605a str r2, [r3, #4] + 8008cfc: f884 1041 strb.w r1, [r4, #65] ; 0x41 + 8008d00: f884 0040 strb.w r0, [r4, #64] ; 0x40 + 8008d04: f884 0042 strb.w r0, [r4, #66] ; 0x42 + 8008d08: e7c4 b.n 8008c94 <HAL_I2C_Master_Receive+0x44> + 8008d0a: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8008d0c: 9300 str r3, [sp, #0] + 8008d0e: b292 uxth r2, r2 + 8008d10: 8522 strh r2, [r4, #40] ; 0x28 + 8008d12: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + 8008d16: b2d2 uxtb r2, r2 + 8008d18: e7d5 b.n 8008cc6 <HAL_I2C_Master_Receive+0x76> + 8008d1a: f7ff fe1a bl 8008952 <I2C_WaitOnRXNEFlagUntilTimeout> + 8008d1e: 2800 cmp r0, #0 + 8008d20: d1b7 bne.n 8008c92 <HAL_I2C_Master_Receive+0x42> + 8008d22: 6823 ldr r3, [r4, #0] + 8008d24: 6a5a ldr r2, [r3, #36] ; 0x24 + 8008d26: 6a63 ldr r3, [r4, #36] ; 0x24 + 8008d28: 701a strb r2, [r3, #0] + 8008d2a: 6a63 ldr r3, [r4, #36] ; 0x24 + 8008d2c: 8d22 ldrh r2, [r4, #40] ; 0x28 + 8008d2e: 3301 adds r3, #1 + 8008d30: 6263 str r3, [r4, #36] ; 0x24 + 8008d32: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008d34: 3b01 subs r3, #1 + 8008d36: b29b uxth r3, r3 + 8008d38: 8563 strh r3, [r4, #42] ; 0x2a + 8008d3a: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008d3c: 3a01 subs r2, #1 + 8008d3e: b292 uxth r2, r2 + 8008d40: b29b uxth r3, r3 + 8008d42: 8522 strh r2, [r4, #40] ; 0x28 + 8008d44: 2b00 cmp r3, #0 + 8008d46: d0c2 beq.n 8008cce <HAL_I2C_Master_Receive+0x7e> + 8008d48: 2a00 cmp r2, #0 + 8008d4a: d1c0 bne.n 8008cce <HAL_I2C_Master_Receive+0x7e> + 8008d4c: 9500 str r5, [sp, #0] + 8008d4e: 463b mov r3, r7 + 8008d50: 2180 movs r1, #128 ; 0x80 + 8008d52: 4620 mov r0, r4 + 8008d54: f7ff fe45 bl 80089e2 <I2C_WaitOnFlagUntilTimeout> + 8008d58: 2800 cmp r0, #0 + 8008d5a: d19a bne.n 8008c92 <HAL_I2C_Master_Receive+0x42> + 8008d5c: 8d63 ldrh r3, [r4, #42] ; 0x2a + 8008d5e: b29b uxth r3, r3 + 8008d60: 2bff cmp r3, #255 ; 0xff + 8008d62: d903 bls.n 8008d6c <HAL_I2C_Master_Receive+0x11c> + 8008d64: 22ff movs r2, #255 ; 0xff + 8008d66: 8522 strh r2, [r4, #40] ; 0x28 + 8008d68: 9000 str r0, [sp, #0] + 8008d6a: e7aa b.n 8008cc2 <HAL_I2C_Master_Receive+0x72> + 8008d6c: 8d62 ldrh r2, [r4, #42] ; 0x2a + 8008d6e: 9000 str r0, [sp, #0] + 8008d70: b292 uxth r2, r2 + 8008d72: 8522 strh r2, [r4, #40] ; 0x28 + 8008d74: e7cd b.n 8008d12 <HAL_I2C_Master_Receive+0xc2> + 8008d76: 2002 movs r0, #2 + 8008d78: e78c b.n 8008c94 <HAL_I2C_Master_Receive+0x44> + 8008d7a: bf00 nop + 8008d7c: 80002400 .word 0x80002400 + +08008d80 <HAL_I2CEx_ConfigAnalogFilter>: + 8008d80: b510 push {r4, lr} + 8008d82: f890 2041 ldrb.w r2, [r0, #65] ; 0x41 + 8008d86: 2a20 cmp r2, #32 + 8008d88: 4603 mov r3, r0 + 8008d8a: b2d4 uxtb r4, r2 + 8008d8c: d11c bne.n 8008dc8 <HAL_I2CEx_ConfigAnalogFilter+0x48> + 8008d8e: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 + 8008d92: 2a01 cmp r2, #1 + 8008d94: d018 beq.n 8008dc8 <HAL_I2CEx_ConfigAnalogFilter+0x48> + 8008d96: 2224 movs r2, #36 ; 0x24 + 8008d98: f880 2041 strb.w r2, [r0, #65] ; 0x41 + 8008d9c: 6802 ldr r2, [r0, #0] + 8008d9e: 6810 ldr r0, [r2, #0] + 8008da0: f020 0001 bic.w r0, r0, #1 + 8008da4: 6010 str r0, [r2, #0] + 8008da6: 6810 ldr r0, [r2, #0] + 8008da8: f420 5080 bic.w r0, r0, #4096 ; 0x1000 + 8008dac: 6010 str r0, [r2, #0] + 8008dae: 6810 ldr r0, [r2, #0] + 8008db0: 4301 orrs r1, r0 + 8008db2: 6011 str r1, [r2, #0] + 8008db4: 6811 ldr r1, [r2, #0] + 8008db6: 2000 movs r0, #0 + 8008db8: f041 0101 orr.w r1, r1, #1 + 8008dbc: 6011 str r1, [r2, #0] + 8008dbe: f883 4041 strb.w r4, [r3, #65] ; 0x41 + 8008dc2: f883 0040 strb.w r0, [r3, #64] ; 0x40 + 8008dc6: bd10 pop {r4, pc} + 8008dc8: 2002 movs r0, #2 + 8008dca: e7fc b.n 8008dc6 <HAL_I2CEx_ConfigAnalogFilter+0x46> + +08008dcc <HAL_I2CEx_ConfigDigitalFilter>: + 8008dcc: b510 push {r4, lr} + 8008dce: f890 2041 ldrb.w r2, [r0, #65] ; 0x41 + 8008dd2: 2a20 cmp r2, #32 + 8008dd4: 4603 mov r3, r0 + 8008dd6: b2d4 uxtb r4, r2 + 8008dd8: d11b bne.n 8008e12 <HAL_I2CEx_ConfigDigitalFilter+0x46> + 8008dda: f890 2040 ldrb.w r2, [r0, #64] ; 0x40 + 8008dde: 2a01 cmp r2, #1 + 8008de0: d017 beq.n 8008e12 <HAL_I2CEx_ConfigDigitalFilter+0x46> + 8008de2: 2224 movs r2, #36 ; 0x24 + 8008de4: f880 2041 strb.w r2, [r0, #65] ; 0x41 + 8008de8: 6802 ldr r2, [r0, #0] + 8008dea: 6810 ldr r0, [r2, #0] + 8008dec: f020 0001 bic.w r0, r0, #1 + 8008df0: 6010 str r0, [r2, #0] + 8008df2: 6810 ldr r0, [r2, #0] + 8008df4: f420 6070 bic.w r0, r0, #3840 ; 0xf00 + 8008df8: ea40 2101 orr.w r1, r0, r1, lsl #8 + 8008dfc: 6011 str r1, [r2, #0] + 8008dfe: 6811 ldr r1, [r2, #0] + 8008e00: 2000 movs r0, #0 + 8008e02: f041 0101 orr.w r1, r1, #1 + 8008e06: 6011 str r1, [r2, #0] + 8008e08: f883 4041 strb.w r4, [r3, #65] ; 0x41 + 8008e0c: f883 0040 strb.w r0, [r3, #64] ; 0x40 + 8008e10: bd10 pop {r4, pc} + 8008e12: 2002 movs r0, #2 + 8008e14: e7fc b.n 8008e10 <HAL_I2CEx_ConfigDigitalFilter+0x44> + ... + +08008e18 <HAL_PWR_EnableBkUpAccess>: + 8008e18: 4a02 ldr r2, [pc, #8] ; (8008e24 <HAL_PWR_EnableBkUpAccess+0xc>) + 8008e1a: 6813 ldr r3, [r2, #0] + 8008e1c: f443 7380 orr.w r3, r3, #256 ; 0x100 + 8008e20: 6013 str r3, [r2, #0] + 8008e22: 4770 bx lr + 8008e24: 58000400 .word 0x58000400 + +08008e28 <HAL_PWR_EnterSLEEPMode>: + 8008e28: 4b0d ldr r3, [pc, #52] ; (8008e60 <HAL_PWR_EnterSLEEPMode+0x38>) + 8008e2a: b510 push {r4, lr} + 8008e2c: 695b ldr r3, [r3, #20] + 8008e2e: 460c mov r4, r1 + 8008e30: b928 cbnz r0, 8008e3e <HAL_PWR_EnterSLEEPMode+0x16> + 8008e32: 059a lsls r2, r3, #22 + 8008e34: d507 bpl.n 8008e46 <HAL_PWR_EnterSLEEPMode+0x1e> + 8008e36: f000 f827 bl 8008e88 <HAL_PWREx_DisableLowPowerRunMode> + 8008e3a: b120 cbz r0, 8008e46 <HAL_PWR_EnterSLEEPMode+0x1e> + 8008e3c: bd10 pop {r4, pc} + 8008e3e: 059b lsls r3, r3, #22 + 8008e40: d401 bmi.n 8008e46 <HAL_PWR_EnterSLEEPMode+0x1e> + 8008e42: f000 f819 bl 8008e78 <HAL_PWREx_EnableLowPowerRunMode> + 8008e46: 4a07 ldr r2, [pc, #28] ; (8008e64 <HAL_PWR_EnterSLEEPMode+0x3c>) + 8008e48: 6913 ldr r3, [r2, #16] + 8008e4a: 2c01 cmp r4, #1 + 8008e4c: f023 0304 bic.w r3, r3, #4 + 8008e50: 6113 str r3, [r2, #16] + 8008e52: d101 bne.n 8008e58 <HAL_PWR_EnterSLEEPMode+0x30> + 8008e54: bf30 wfi + 8008e56: e7f1 b.n 8008e3c <HAL_PWR_EnterSLEEPMode+0x14> + 8008e58: bf40 sev + 8008e5a: bf20 wfe + 8008e5c: bf20 wfe + 8008e5e: e7ed b.n 8008e3c <HAL_PWR_EnterSLEEPMode+0x14> + 8008e60: 58000400 .word 0x58000400 + 8008e64: e000ed00 .word 0xe000ed00 + +08008e68 <HAL_PWREx_GetVoltageRange>: + 8008e68: 4b02 ldr r3, [pc, #8] ; (8008e74 <HAL_PWREx_GetVoltageRange+0xc>) + 8008e6a: 6818 ldr r0, [r3, #0] + 8008e6c: f400 60c0 and.w r0, r0, #1536 ; 0x600 + 8008e70: 4770 bx lr + 8008e72: bf00 nop + 8008e74: 58000400 .word 0x58000400 + +08008e78 <HAL_PWREx_EnableLowPowerRunMode>: + 8008e78: 4a02 ldr r2, [pc, #8] ; (8008e84 <HAL_PWREx_EnableLowPowerRunMode+0xc>) + 8008e7a: 6813 ldr r3, [r2, #0] + 8008e7c: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 8008e80: 6013 str r3, [r2, #0] + 8008e82: 4770 bx lr + 8008e84: 58000400 .word 0x58000400 + +08008e88 <HAL_PWREx_DisableLowPowerRunMode>: + 8008e88: 4a0c ldr r2, [pc, #48] ; (8008ebc <HAL_PWREx_DisableLowPowerRunMode+0x34>) + 8008e8a: 6813 ldr r3, [r2, #0] + 8008e8c: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 8008e90: 6013 str r3, [r2, #0] + 8008e92: 4b0b ldr r3, [pc, #44] ; (8008ec0 <HAL_PWREx_DisableLowPowerRunMode+0x38>) + 8008e94: 681b ldr r3, [r3, #0] + 8008e96: 2132 movs r1, #50 ; 0x32 + 8008e98: 434b muls r3, r1 + 8008e9a: 490a ldr r1, [pc, #40] ; (8008ec4 <HAL_PWREx_DisableLowPowerRunMode+0x3c>) + 8008e9c: fbb3 f3f1 udiv r3, r3, r1 + 8008ea0: 6951 ldr r1, [r2, #20] + 8008ea2: 0589 lsls r1, r1, #22 + 8008ea4: d500 bpl.n 8008ea8 <HAL_PWREx_DisableLowPowerRunMode+0x20> + 8008ea6: b933 cbnz r3, 8008eb6 <HAL_PWREx_DisableLowPowerRunMode+0x2e> + 8008ea8: 6953 ldr r3, [r2, #20] + 8008eaa: f413 7f00 tst.w r3, #512 ; 0x200 + 8008eae: bf14 ite ne + 8008eb0: 2003 movne r0, #3 + 8008eb2: 2000 moveq r0, #0 + 8008eb4: 4770 bx lr + 8008eb6: 3b01 subs r3, #1 + 8008eb8: e7f2 b.n 8008ea0 <HAL_PWREx_DisableLowPowerRunMode+0x18> + 8008eba: bf00 nop + 8008ebc: 58000400 .word 0x58000400 + 8008ec0: 20000828 .word 0x20000828 + 8008ec4: 000f4240 .word 0x000f4240 + +08008ec8 <HAL_PWREx_EnterSTOP2Mode>: + 8008ec8: 4a0b ldr r2, [pc, #44] ; (8008ef8 <HAL_PWREx_EnterSTOP2Mode+0x30>) + 8008eca: 6813 ldr r3, [r2, #0] + 8008ecc: f023 0307 bic.w r3, r3, #7 + 8008ed0: f043 0302 orr.w r3, r3, #2 + 8008ed4: 6013 str r3, [r2, #0] + 8008ed6: 4b09 ldr r3, [pc, #36] ; (8008efc <HAL_PWREx_EnterSTOP2Mode+0x34>) + 8008ed8: 691a ldr r2, [r3, #16] + 8008eda: 2801 cmp r0, #1 + 8008edc: f042 0204 orr.w r2, r2, #4 + 8008ee0: 611a str r2, [r3, #16] + 8008ee2: d105 bne.n 8008ef0 <HAL_PWREx_EnterSTOP2Mode+0x28> + 8008ee4: bf30 wfi + 8008ee6: 691a ldr r2, [r3, #16] + 8008ee8: f022 0204 bic.w r2, r2, #4 + 8008eec: 611a str r2, [r3, #16] + 8008eee: 4770 bx lr + 8008ef0: bf40 sev + 8008ef2: bf20 wfe + 8008ef4: bf20 wfe + 8008ef6: e7f6 b.n 8008ee6 <HAL_PWREx_EnterSTOP2Mode+0x1e> + 8008ef8: 58000400 .word 0x58000400 + 8008efc: e000ed00 .word 0xe000ed00 + +08008f00 <LL_RCC_HSE_IsReady>: + 8008f00: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008f04: 6818 ldr r0, [r3, #0] + 8008f06: f3c0 4040 ubfx r0, r0, #17, #1 + 8008f0a: 4770 bx lr + +08008f0c <LL_RCC_MSI_IsReady>: + 8008f0c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008f10: 6818 ldr r0, [r3, #0] + 8008f12: f3c0 0040 ubfx r0, r0, #1, #1 + 8008f16: 4770 bx lr + +08008f18 <LL_RCC_MSI_SetCalibTrimming>: + 8008f18: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8008f1c: 6853 ldr r3, [r2, #4] + 8008f1e: f423 437f bic.w r3, r3, #65280 ; 0xff00 + 8008f22: ea43 2300 orr.w r3, r3, r0, lsl #8 + 8008f26: 6053 str r3, [r2, #4] + 8008f28: 4770 bx lr + +08008f2a <LL_RCC_PLL_IsReady>: + 8008f2a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008f2e: 6818 ldr r0, [r3, #0] + 8008f30: f3c0 6040 ubfx r0, r0, #25, #1 + 8008f34: 4770 bx lr + ... + +08008f38 <RCC_SetFlashLatencyFromMSIRange>: + 8008f38: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} + 8008f3a: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8008f3e: 4a2c ldr r2, [pc, #176] ; (8008ff0 <RCC_SetFlashLatencyFromMSIRange+0xb8>) + 8008f40: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 8008f44: f3c0 1003 ubfx r0, r0, #4, #4 + 8008f48: f003 030f and.w r3, r3, #15 + 8008f4c: f852 4020 ldr.w r4, [r2, r0, lsl #2] + 8008f50: 4a28 ldr r2, [pc, #160] ; (8008ff4 <RCC_SetFlashLatencyFromMSIRange+0xbc>) + 8008f52: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8008f56: fbb4 f4f3 udiv r4, r4, r3 + 8008f5a: f7ff ff85 bl 8008e68 <HAL_PWREx_GetVoltageRange> + 8008f5e: 4b26 ldr r3, [pc, #152] ; (8008ff8 <RCC_SetFlashLatencyFromMSIRange+0xc0>) + 8008f60: 4605 mov r5, r0 + 8008f62: e893 0007 ldmia.w r3, {r0, r1, r2} + 8008f66: f5b5 7f00 cmp.w r5, #512 ; 0x200 + 8008f6a: ab04 add r3, sp, #16 + 8008f6c: e903 0007 stmdb r3, {r0, r1, r2} + 8008f70: d010 beq.n 8008f94 <RCC_SetFlashLatencyFromMSIRange+0x5c> + 8008f72: 4b22 ldr r3, [pc, #136] ; (8008ffc <RCC_SetFlashLatencyFromMSIRange+0xc4>) + 8008f74: 429c cmp r4, r3 + 8008f76: d318 bcc.n 8008faa <RCC_SetFlashLatencyFromMSIRange+0x72> + 8008f78: f503 03b7 add.w r3, r3, #5996544 ; 0x5b8000 + 8008f7c: f603 537f addw r3, r3, #3455 ; 0xd7f + 8008f80: 429c cmp r4, r3 + 8008f82: d929 bls.n 8008fd8 <RCC_SetFlashLatencyFromMSIRange+0xa0> + 8008f84: f503 1374 add.w r3, r3, #3997696 ; 0x3d0000 + 8008f88: f503 6310 add.w r3, r3, #2304 ; 0x900 + 8008f8c: 429c cmp r4, r3 + 8008f8e: d825 bhi.n 8008fdc <RCC_SetFlashLatencyFromMSIRange+0xa4> + 8008f90: 2302 movs r3, #2 + 8008f92: e00b b.n 8008fac <RCC_SetFlashLatencyFromMSIRange+0x74> + 8008f94: 4b1a ldr r3, [pc, #104] ; (8009000 <RCC_SetFlashLatencyFromMSIRange+0xc8>) + 8008f96: 429c cmp r4, r3 + 8008f98: d907 bls.n 8008faa <RCC_SetFlashLatencyFromMSIRange+0x72> + 8008f9a: 4b1a ldr r3, [pc, #104] ; (8009004 <RCC_SetFlashLatencyFromMSIRange+0xcc>) + 8008f9c: 429c cmp r4, r3 + 8008f9e: d91b bls.n 8008fd8 <RCC_SetFlashLatencyFromMSIRange+0xa0> + 8008fa0: f503 0337 add.w r3, r3, #11993088 ; 0xb70000 + 8008fa4: f503 53d8 add.w r3, r3, #6912 ; 0x1b00 + 8008fa8: e7f0 b.n 8008f8c <RCC_SetFlashLatencyFromMSIRange+0x54> + 8008faa: 2300 movs r3, #0 + 8008fac: aa04 add r2, sp, #16 + 8008fae: eb02 0383 add.w r3, r2, r3, lsl #2 + 8008fb2: f853 4c0c ldr.w r4, [r3, #-12] + 8008fb6: 4d14 ldr r5, [pc, #80] ; (8009008 <RCC_SetFlashLatencyFromMSIRange+0xd0>) + 8008fb8: 682b ldr r3, [r5, #0] + 8008fba: f023 0307 bic.w r3, r3, #7 + 8008fbe: 4323 orrs r3, r4 + 8008fc0: 602b str r3, [r5, #0] + 8008fc2: f7f9 fde5 bl 8002b90 <HAL_GetTick> + 8008fc6: 4606 mov r6, r0 + 8008fc8: 682b ldr r3, [r5, #0] + 8008fca: f003 0307 and.w r3, r3, #7 + 8008fce: 429c cmp r4, r3 + 8008fd0: d106 bne.n 8008fe0 <RCC_SetFlashLatencyFromMSIRange+0xa8> + 8008fd2: 2000 movs r0, #0 + 8008fd4: b004 add sp, #16 + 8008fd6: bd70 pop {r4, r5, r6, pc} + 8008fd8: 2301 movs r3, #1 + 8008fda: e7e7 b.n 8008fac <RCC_SetFlashLatencyFromMSIRange+0x74> + 8008fdc: 2400 movs r4, #0 + 8008fde: e7ea b.n 8008fb6 <RCC_SetFlashLatencyFromMSIRange+0x7e> + 8008fe0: f7f9 fdd6 bl 8002b90 <HAL_GetTick> + 8008fe4: 1b80 subs r0, r0, r6 + 8008fe6: 2802 cmp r0, #2 + 8008fe8: d9ee bls.n 8008fc8 <RCC_SetFlashLatencyFromMSIRange+0x90> + 8008fea: 2003 movs r0, #3 + 8008fec: e7f2 b.n 8008fd4 <RCC_SetFlashLatencyFromMSIRange+0x9c> + 8008fee: bf00 nop + 8008ff0: 08015230 .word 0x08015230 + 8008ff4: 080151d0 .word 0x080151d0 + 8008ff8: 080145a8 .word 0x080145a8 + 8008ffc: 006acfc0 .word 0x006acfc0 + 8009000: 0121eabf .word 0x0121eabf + 8009004: 0234933f .word 0x0234933f + 8009008: 58004000 .word 0x58004000 + +0800900c <HAL_RCC_GetSysClockFreq>: + 800900c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009010: b510 push {r4, lr} + 8009012: 689a ldr r2, [r3, #8] + 8009014: 68d9 ldr r1, [r3, #12] + 8009016: f012 020c ands.w r2, r2, #12 + 800901a: d005 beq.n 8009028 <HAL_RCC_GetSysClockFreq+0x1c> + 800901c: 2a0c cmp r2, #12 + 800901e: d14a bne.n 80090b6 <HAL_RCC_GetSysClockFreq+0xaa> + 8009020: f001 0303 and.w r3, r1, #3 + 8009024: 2b01 cmp r3, #1 + 8009026: d150 bne.n 80090ca <HAL_RCC_GetSysClockFreq+0xbe> + 8009028: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800902c: 482b ldr r0, [pc, #172] ; (80090dc <HAL_RCC_GetSysClockFreq+0xd0>) + 800902e: 680b ldr r3, [r1, #0] + 8009030: f013 0308 ands.w r3, r3, #8 + 8009034: d006 beq.n 8009044 <HAL_RCC_GetSysClockFreq+0x38> + 8009036: 680b ldr r3, [r1, #0] + 8009038: f013 0308 ands.w r3, r3, #8 + 800903c: d137 bne.n 80090ae <HAL_RCC_GetSysClockFreq+0xa2> + 800903e: f8d1 1094 ldr.w r1, [r1, #148] ; 0x94 + 8009042: e007 b.n 8009054 <HAL_RCC_GetSysClockFreq+0x48> + 8009044: 680c ldr r4, [r1, #0] + 8009046: 0724 lsls r4, r4, #28 + 8009048: bf56 itet pl + 800904a: f8d1 3094 ldrpl.w r3, [r1, #148] ; 0x94 + 800904e: 6809 ldrmi r1, [r1, #0] + 8009050: f3c3 2303 ubfxpl r3, r3, #8, #4 + 8009054: f850 3023 ldr.w r3, [r0, r3, lsl #2] + 8009058: 2a00 cmp r2, #0 + 800905a: bf0c ite eq + 800905c: 4618 moveq r0, r3 + 800905e: 2000 movne r0, #0 + 8009060: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8009064: 688a ldr r2, [r1, #8] + 8009066: f002 020c and.w r2, r2, #12 + 800906a: 2a0c cmp r2, #12 + 800906c: d11e bne.n 80090ac <HAL_RCC_GetSysClockFreq+0xa0> + 800906e: 68ca ldr r2, [r1, #12] + 8009070: f002 0203 and.w r2, r2, #3 + 8009074: 2a02 cmp r2, #2 + 8009076: d02e beq.n 80090d6 <HAL_RCC_GetSysClockFreq+0xca> + 8009078: 2a03 cmp r2, #3 + 800907a: d106 bne.n 800908a <HAL_RCC_GetSysClockFreq+0x7e> + 800907c: 680b ldr r3, [r1, #0] + 800907e: 4a18 ldr r2, [pc, #96] ; (80090e0 <HAL_RCC_GetSysClockFreq+0xd4>) + 8009080: f413 1f80 tst.w r3, #1048576 ; 0x100000 + 8009084: 4b17 ldr r3, [pc, #92] ; (80090e4 <HAL_RCC_GetSysClockFreq+0xd8>) + 8009086: bf18 it ne + 8009088: 4613 movne r3, r2 + 800908a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 800908e: 68d0 ldr r0, [r2, #12] + 8009090: 68d1 ldr r1, [r2, #12] + 8009092: 68d2 ldr r2, [r2, #12] + 8009094: f3c0 2006 ubfx r0, r0, #8, #7 + 8009098: 4358 muls r0, r3 + 800909a: f3c1 1302 ubfx r3, r1, #4, #3 + 800909e: 3301 adds r3, #1 + 80090a0: fbb0 f0f3 udiv r0, r0, r3 + 80090a4: 0f53 lsrs r3, r2, #29 + 80090a6: 3301 adds r3, #1 + 80090a8: fbb0 f0f3 udiv r0, r0, r3 + 80090ac: bd10 pop {r4, pc} + 80090ae: 680b ldr r3, [r1, #0] + 80090b0: f3c3 1303 ubfx r3, r3, #4, #4 + 80090b4: e7ce b.n 8009054 <HAL_RCC_GetSysClockFreq+0x48> + 80090b6: 2a04 cmp r2, #4 + 80090b8: d00a beq.n 80090d0 <HAL_RCC_GetSysClockFreq+0xc4> + 80090ba: 2a08 cmp r2, #8 + 80090bc: d105 bne.n 80090ca <HAL_RCC_GetSysClockFreq+0xbe> + 80090be: 681b ldr r3, [r3, #0] + 80090c0: f413 1380 ands.w r3, r3, #1048576 ; 0x100000 + 80090c4: d104 bne.n 80090d0 <HAL_RCC_GetSysClockFreq+0xc4> + 80090c6: 4807 ldr r0, [pc, #28] ; (80090e4 <HAL_RCC_GetSysClockFreq+0xd8>) + 80090c8: e7ca b.n 8009060 <HAL_RCC_GetSysClockFreq+0x54> + 80090ca: 2300 movs r3, #0 + 80090cc: 4618 mov r0, r3 + 80090ce: e7c7 b.n 8009060 <HAL_RCC_GetSysClockFreq+0x54> + 80090d0: 4803 ldr r0, [pc, #12] ; (80090e0 <HAL_RCC_GetSysClockFreq+0xd4>) + 80090d2: 2300 movs r3, #0 + 80090d4: e7c4 b.n 8009060 <HAL_RCC_GetSysClockFreq+0x54> + 80090d6: 4b02 ldr r3, [pc, #8] ; (80090e0 <HAL_RCC_GetSysClockFreq+0xd4>) + 80090d8: e7d7 b.n 800908a <HAL_RCC_GetSysClockFreq+0x7e> + 80090da: bf00 nop + 80090dc: 08015230 .word 0x08015230 + 80090e0: 00f42400 .word 0x00f42400 + 80090e4: 01e84800 .word 0x01e84800 + +080090e8 <HAL_RCC_GetHCLKFreq>: + 80090e8: b508 push {r3, lr} + 80090ea: f7ff ff8f bl 800900c <HAL_RCC_GetSysClockFreq> + 80090ee: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80090f2: 4a04 ldr r2, [pc, #16] ; (8009104 <HAL_RCC_GetHCLKFreq+0x1c>) + 80090f4: 689b ldr r3, [r3, #8] + 80090f6: f3c3 1303 ubfx r3, r3, #4, #4 + 80090fa: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80090fe: fbb0 f0f3 udiv r0, r0, r3 + 8009102: bd08 pop {r3, pc} + 8009104: 080151d0 .word 0x080151d0 + +08009108 <HAL_RCC_OscConfig>: + 8009108: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800910c: 4604 mov r4, r0 + 800910e: 2800 cmp r0, #0 + 8009110: d053 beq.n 80091ba <HAL_RCC_OscConfig+0xb2> + 8009112: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009116: 689d ldr r5, [r3, #8] + 8009118: 68de ldr r6, [r3, #12] + 800911a: 6803 ldr r3, [r0, #0] + 800911c: 069b lsls r3, r3, #26 + 800911e: f005 050c and.w r5, r5, #12 + 8009122: f006 0603 and.w r6, r6, #3 + 8009126: d568 bpl.n 80091fa <HAL_RCC_OscConfig+0xf2> + 8009128: 6a02 ldr r2, [r0, #32] + 800912a: b11d cbz r5, 8009134 <HAL_RCC_OscConfig+0x2c> + 800912c: 2d0c cmp r5, #12 + 800912e: d146 bne.n 80091be <HAL_RCC_OscConfig+0xb6> + 8009130: 2e01 cmp r6, #1 + 8009132: d144 bne.n 80091be <HAL_RCC_OscConfig+0xb6> + 8009134: 2a00 cmp r2, #0 + 8009136: d040 beq.n 80091ba <HAL_RCC_OscConfig+0xb2> + 8009138: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800913c: 6aa1 ldr r1, [r4, #40] ; 0x28 + 800913e: 681a ldr r2, [r3, #0] + 8009140: 0717 lsls r7, r2, #28 + 8009142: bf56 itet pl + 8009144: f8d3 3094 ldrpl.w r3, [r3, #148] ; 0x94 + 8009148: 681b ldrmi r3, [r3, #0] + 800914a: 091b lsrpl r3, r3, #4 + 800914c: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8009150: 4299 cmp r1, r3 + 8009152: d91f bls.n 8009194 <HAL_RCC_OscConfig+0x8c> + 8009154: 4608 mov r0, r1 + 8009156: f7ff feef bl 8008f38 <RCC_SetFlashLatencyFromMSIRange> + 800915a: 2800 cmp r0, #0 + 800915c: d12d bne.n 80091ba <HAL_RCC_OscConfig+0xb2> + 800915e: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009162: 6813 ldr r3, [r2, #0] + 8009164: f043 0308 orr.w r3, r3, #8 + 8009168: 6013 str r3, [r2, #0] + 800916a: 6813 ldr r3, [r2, #0] + 800916c: 6aa1 ldr r1, [r4, #40] ; 0x28 + 800916e: f023 03f0 bic.w r3, r3, #240 ; 0xf0 + 8009172: 430b orrs r3, r1 + 8009174: 6013 str r3, [r2, #0] + 8009176: 6a60 ldr r0, [r4, #36] ; 0x24 + 8009178: f7ff fece bl 8008f18 <LL_RCC_MSI_SetCalibTrimming> + 800917c: f7ff ffb4 bl 80090e8 <HAL_RCC_GetHCLKFreq> + 8009180: 4bab ldr r3, [pc, #684] ; (8009430 <HAL_RCC_OscConfig+0x328>) + 8009182: 6018 str r0, [r3, #0] + 8009184: 4bab ldr r3, [pc, #684] ; (8009434 <HAL_RCC_OscConfig+0x32c>) + 8009186: 6818 ldr r0, [r3, #0] + 8009188: f7f9 fd00 bl 8002b8c <HAL_InitTick> + 800918c: 2800 cmp r0, #0 + 800918e: d034 beq.n 80091fa <HAL_RCC_OscConfig+0xf2> + 8009190: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8009194: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009198: 6813 ldr r3, [r2, #0] + 800919a: f043 0308 orr.w r3, r3, #8 + 800919e: 6013 str r3, [r2, #0] + 80091a0: 6813 ldr r3, [r2, #0] + 80091a2: f023 03f0 bic.w r3, r3, #240 ; 0xf0 + 80091a6: 430b orrs r3, r1 + 80091a8: 6013 str r3, [r2, #0] + 80091aa: 6a60 ldr r0, [r4, #36] ; 0x24 + 80091ac: f7ff feb4 bl 8008f18 <LL_RCC_MSI_SetCalibTrimming> + 80091b0: 4608 mov r0, r1 + 80091b2: f7ff fec1 bl 8008f38 <RCC_SetFlashLatencyFromMSIRange> + 80091b6: 2800 cmp r0, #0 + 80091b8: d0e0 beq.n 800917c <HAL_RCC_OscConfig+0x74> + 80091ba: 2001 movs r0, #1 + 80091bc: e7e8 b.n 8009190 <HAL_RCC_OscConfig+0x88> + 80091be: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80091c2: 2a00 cmp r2, #0 + 80091c4: d054 beq.n 8009270 <HAL_RCC_OscConfig+0x168> + 80091c6: 681a ldr r2, [r3, #0] + 80091c8: f042 0201 orr.w r2, r2, #1 + 80091cc: 601a str r2, [r3, #0] + 80091ce: f7f9 fcdf bl 8002b90 <HAL_GetTick> + 80091d2: 4607 mov r7, r0 + 80091d4: f7ff fe9a bl 8008f0c <LL_RCC_MSI_IsReady> + 80091d8: 2800 cmp r0, #0 + 80091da: d042 beq.n 8009262 <HAL_RCC_OscConfig+0x15a> + 80091dc: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80091e0: 6813 ldr r3, [r2, #0] + 80091e2: f043 0308 orr.w r3, r3, #8 + 80091e6: 6013 str r3, [r2, #0] + 80091e8: 6813 ldr r3, [r2, #0] + 80091ea: 6aa1 ldr r1, [r4, #40] ; 0x28 + 80091ec: f023 03f0 bic.w r3, r3, #240 ; 0xf0 + 80091f0: 430b orrs r3, r1 + 80091f2: 6013 str r3, [r2, #0] + 80091f4: 6a60 ldr r0, [r4, #36] ; 0x24 + 80091f6: f7ff fe8f bl 8008f18 <LL_RCC_MSI_SetCalibTrimming> + 80091fa: 6823 ldr r3, [r4, #0] + 80091fc: 07d8 lsls r0, r3, #31 + 80091fe: d448 bmi.n 8009292 <HAL_RCC_OscConfig+0x18a> + 8009200: 6823 ldr r3, [r4, #0] + 8009202: 0799 lsls r1, r3, #30 + 8009204: f100 808c bmi.w 8009320 <HAL_RCC_OscConfig+0x218> + 8009208: 6823 ldr r3, [r4, #0] + 800920a: 071e lsls r6, r3, #28 + 800920c: f140 80fa bpl.w 8009404 <HAL_RCC_OscConfig+0x2fc> + 8009210: 69a3 ldr r3, [r4, #24] + 8009212: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 8009216: 2b00 cmp r3, #0 + 8009218: f000 80e1 beq.w 80093de <HAL_RCC_OscConfig+0x2d6> + 800921c: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 8009220: 69e1 ldr r1, [r4, #28] + 8009222: f003 0210 and.w r2, r3, #16 + 8009226: 4291 cmp r1, r2 + 8009228: f000 80c4 beq.w 80093b4 <HAL_RCC_OscConfig+0x2ac> + 800922c: f003 0203 and.w r2, r3, #3 + 8009230: 2a02 cmp r2, #2 + 8009232: d0c2 beq.n 80091ba <HAL_RCC_OscConfig+0xb2> + 8009234: 07d8 lsls r0, r3, #31 + 8009236: f140 80b3 bpl.w 80093a0 <HAL_RCC_OscConfig+0x298> + 800923a: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 800923e: f023 0301 bic.w r3, r3, #1 + 8009242: f8c6 3094 str.w r3, [r6, #148] ; 0x94 + 8009246: f7f9 fca3 bl 8002b90 <HAL_GetTick> + 800924a: 4607 mov r7, r0 + 800924c: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 8009250: 0799 lsls r1, r3, #30 + 8009252: f140 80a5 bpl.w 80093a0 <HAL_RCC_OscConfig+0x298> + 8009256: f7f9 fc9b bl 8002b90 <HAL_GetTick> + 800925a: 1bc3 subs r3, r0, r7 + 800925c: 2b11 cmp r3, #17 + 800925e: d9f5 bls.n 800924c <HAL_RCC_OscConfig+0x144> + 8009260: e004 b.n 800926c <HAL_RCC_OscConfig+0x164> + 8009262: f7f9 fc95 bl 8002b90 <HAL_GetTick> + 8009266: 1bc0 subs r0, r0, r7 + 8009268: 2802 cmp r0, #2 + 800926a: d9b3 bls.n 80091d4 <HAL_RCC_OscConfig+0xcc> + 800926c: 2003 movs r0, #3 + 800926e: e78f b.n 8009190 <HAL_RCC_OscConfig+0x88> + 8009270: 681a ldr r2, [r3, #0] + 8009272: f022 0201 bic.w r2, r2, #1 + 8009276: 601a str r2, [r3, #0] + 8009278: f7f9 fc8a bl 8002b90 <HAL_GetTick> + 800927c: 4607 mov r7, r0 + 800927e: f7ff fe45 bl 8008f0c <LL_RCC_MSI_IsReady> + 8009282: 2800 cmp r0, #0 + 8009284: d0b9 beq.n 80091fa <HAL_RCC_OscConfig+0xf2> + 8009286: f7f9 fc83 bl 8002b90 <HAL_GetTick> + 800928a: 1bc0 subs r0, r0, r7 + 800928c: 2802 cmp r0, #2 + 800928e: d9f6 bls.n 800927e <HAL_RCC_OscConfig+0x176> + 8009290: e7ec b.n 800926c <HAL_RCC_OscConfig+0x164> + 8009292: 2d08 cmp r5, #8 + 8009294: d003 beq.n 800929e <HAL_RCC_OscConfig+0x196> + 8009296: 2d0c cmp r5, #12 + 8009298: d105 bne.n 80092a6 <HAL_RCC_OscConfig+0x19e> + 800929a: 2e03 cmp r6, #3 + 800929c: d103 bne.n 80092a6 <HAL_RCC_OscConfig+0x19e> + 800929e: 6863 ldr r3, [r4, #4] + 80092a0: 2b00 cmp r3, #0 + 80092a2: d1ad bne.n 8009200 <HAL_RCC_OscConfig+0xf8> + 80092a4: e789 b.n 80091ba <HAL_RCC_OscConfig+0xb2> + 80092a6: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80092aa: 68a1 ldr r1, [r4, #8] + 80092ac: 681a ldr r2, [r3, #0] + 80092ae: f422 1280 bic.w r2, r2, #1048576 ; 0x100000 + 80092b2: 430a orrs r2, r1 + 80092b4: 601a str r2, [r3, #0] + 80092b6: 6862 ldr r2, [r4, #4] + 80092b8: f5b2 3f80 cmp.w r2, #65536 ; 0x10000 + 80092bc: d110 bne.n 80092e0 <HAL_RCC_OscConfig+0x1d8> + 80092be: 681a ldr r2, [r3, #0] + 80092c0: f442 3280 orr.w r2, r2, #65536 ; 0x10000 + 80092c4: 601a str r2, [r3, #0] + 80092c6: f7f9 fc63 bl 8002b90 <HAL_GetTick> + 80092ca: 4607 mov r7, r0 + 80092cc: f7ff fe18 bl 8008f00 <LL_RCC_HSE_IsReady> + 80092d0: 2800 cmp r0, #0 + 80092d2: d195 bne.n 8009200 <HAL_RCC_OscConfig+0xf8> + 80092d4: f7f9 fc5c bl 8002b90 <HAL_GetTick> + 80092d8: 1bc0 subs r0, r0, r7 + 80092da: 2864 cmp r0, #100 ; 0x64 + 80092dc: d9f6 bls.n 80092cc <HAL_RCC_OscConfig+0x1c4> + 80092de: e7c5 b.n 800926c <HAL_RCC_OscConfig+0x164> + 80092e0: f5b2 1f04 cmp.w r2, #2162688 ; 0x210000 + 80092e4: d104 bne.n 80092f0 <HAL_RCC_OscConfig+0x1e8> + 80092e6: 681a ldr r2, [r3, #0] + 80092e8: f442 1200 orr.w r2, r2, #2097152 ; 0x200000 + 80092ec: 601a str r2, [r3, #0] + 80092ee: e7e6 b.n 80092be <HAL_RCC_OscConfig+0x1b6> + 80092f0: 6819 ldr r1, [r3, #0] + 80092f2: f421 3180 bic.w r1, r1, #65536 ; 0x10000 + 80092f6: 6019 str r1, [r3, #0] + 80092f8: 6819 ldr r1, [r3, #0] + 80092fa: f421 1100 bic.w r1, r1, #2097152 ; 0x200000 + 80092fe: 6019 str r1, [r3, #0] + 8009300: 2a00 cmp r2, #0 + 8009302: d1e0 bne.n 80092c6 <HAL_RCC_OscConfig+0x1be> + 8009304: f7f9 fc44 bl 8002b90 <HAL_GetTick> + 8009308: 4607 mov r7, r0 + 800930a: f7ff fdf9 bl 8008f00 <LL_RCC_HSE_IsReady> + 800930e: 2800 cmp r0, #0 + 8009310: f43f af76 beq.w 8009200 <HAL_RCC_OscConfig+0xf8> + 8009314: f7f9 fc3c bl 8002b90 <HAL_GetTick> + 8009318: 1bc0 subs r0, r0, r7 + 800931a: 2864 cmp r0, #100 ; 0x64 + 800931c: d9f5 bls.n 800930a <HAL_RCC_OscConfig+0x202> + 800931e: e7a5 b.n 800926c <HAL_RCC_OscConfig+0x164> + 8009320: 2d04 cmp r5, #4 + 8009322: 6923 ldr r3, [r4, #16] + 8009324: d003 beq.n 800932e <HAL_RCC_OscConfig+0x226> + 8009326: 2d0c cmp r5, #12 + 8009328: d10e bne.n 8009348 <HAL_RCC_OscConfig+0x240> + 800932a: 2e02 cmp r6, #2 + 800932c: d10c bne.n 8009348 <HAL_RCC_OscConfig+0x240> + 800932e: 2b00 cmp r3, #0 + 8009330: f43f af43 beq.w 80091ba <HAL_RCC_OscConfig+0xb2> + 8009334: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009338: 6961 ldr r1, [r4, #20] + 800933a: 6853 ldr r3, [r2, #4] + 800933c: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000 + 8009340: ea43 6301 orr.w r3, r3, r1, lsl #24 + 8009344: 6053 str r3, [r2, #4] + 8009346: e75f b.n 8009208 <HAL_RCC_OscConfig+0x100> + 8009348: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 800934c: b1bb cbz r3, 800937e <HAL_RCC_OscConfig+0x276> + 800934e: 6833 ldr r3, [r6, #0] + 8009350: f443 7380 orr.w r3, r3, #256 ; 0x100 + 8009354: 6033 str r3, [r6, #0] + 8009356: f7f9 fc1b bl 8002b90 <HAL_GetTick> + 800935a: 4607 mov r7, r0 + 800935c: 6833 ldr r3, [r6, #0] + 800935e: 055a lsls r2, r3, #21 + 8009360: d507 bpl.n 8009372 <HAL_RCC_OscConfig+0x26a> + 8009362: 6873 ldr r3, [r6, #4] + 8009364: 6962 ldr r2, [r4, #20] + 8009366: f023 43fe bic.w r3, r3, #2130706432 ; 0x7f000000 + 800936a: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800936e: 6073 str r3, [r6, #4] + 8009370: e74a b.n 8009208 <HAL_RCC_OscConfig+0x100> + 8009372: f7f9 fc0d bl 8002b90 <HAL_GetTick> + 8009376: 1bc3 subs r3, r0, r7 + 8009378: 2b02 cmp r3, #2 + 800937a: d9ef bls.n 800935c <HAL_RCC_OscConfig+0x254> + 800937c: e776 b.n 800926c <HAL_RCC_OscConfig+0x164> + 800937e: 6833 ldr r3, [r6, #0] + 8009380: f423 7380 bic.w r3, r3, #256 ; 0x100 + 8009384: 6033 str r3, [r6, #0] + 8009386: f7f9 fc03 bl 8002b90 <HAL_GetTick> + 800938a: 4607 mov r7, r0 + 800938c: 6833 ldr r3, [r6, #0] + 800938e: 055b lsls r3, r3, #21 + 8009390: f57f af3a bpl.w 8009208 <HAL_RCC_OscConfig+0x100> + 8009394: f7f9 fbfc bl 8002b90 <HAL_GetTick> + 8009398: 1bc3 subs r3, r0, r7 + 800939a: 2b02 cmp r3, #2 + 800939c: d9f6 bls.n 800938c <HAL_RCC_OscConfig+0x284> + 800939e: e765 b.n 800926c <HAL_RCC_OscConfig+0x164> + 80093a0: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80093a4: 69e1 ldr r1, [r4, #28] + 80093a6: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 80093aa: f023 0310 bic.w r3, r3, #16 + 80093ae: 430b orrs r3, r1 + 80093b0: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + 80093b4: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 80093b8: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 80093bc: f043 0301 orr.w r3, r3, #1 + 80093c0: f8c7 3094 str.w r3, [r7, #148] ; 0x94 + 80093c4: f7f9 fbe4 bl 8002b90 <HAL_GetTick> + 80093c8: 4606 mov r6, r0 + 80093ca: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 80093ce: 079a lsls r2, r3, #30 + 80093d0: d418 bmi.n 8009404 <HAL_RCC_OscConfig+0x2fc> + 80093d2: f7f9 fbdd bl 8002b90 <HAL_GetTick> + 80093d6: 1b83 subs r3, r0, r6 + 80093d8: 2b11 cmp r3, #17 + 80093da: d9f6 bls.n 80093ca <HAL_RCC_OscConfig+0x2c2> + 80093dc: e746 b.n 800926c <HAL_RCC_OscConfig+0x164> + 80093de: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 80093e2: f023 0301 bic.w r3, r3, #1 + 80093e6: f8c6 3094 str.w r3, [r6, #148] ; 0x94 + 80093ea: f7f9 fbd1 bl 8002b90 <HAL_GetTick> + 80093ee: 4607 mov r7, r0 + 80093f0: f8d6 3094 ldr.w r3, [r6, #148] ; 0x94 + 80093f4: 079b lsls r3, r3, #30 + 80093f6: d505 bpl.n 8009404 <HAL_RCC_OscConfig+0x2fc> + 80093f8: f7f9 fbca bl 8002b90 <HAL_GetTick> + 80093fc: 1bc3 subs r3, r0, r7 + 80093fe: 2b11 cmp r3, #17 + 8009400: d9f6 bls.n 80093f0 <HAL_RCC_OscConfig+0x2e8> + 8009402: e733 b.n 800926c <HAL_RCC_OscConfig+0x164> + 8009404: 6823 ldr r3, [r4, #0] + 8009406: 0758 lsls r0, r3, #29 + 8009408: d554 bpl.n 80094b4 <HAL_RCC_OscConfig+0x3ac> + 800940a: 4f0b ldr r7, [pc, #44] ; (8009438 <HAL_RCC_OscConfig+0x330>) + 800940c: 683b ldr r3, [r7, #0] + 800940e: 05d9 lsls r1, r3, #23 + 8009410: d414 bmi.n 800943c <HAL_RCC_OscConfig+0x334> + 8009412: f7ff fd01 bl 8008e18 <HAL_PWR_EnableBkUpAccess> + 8009416: f7f9 fbbb bl 8002b90 <HAL_GetTick> + 800941a: 4606 mov r6, r0 + 800941c: 683b ldr r3, [r7, #0] + 800941e: 05da lsls r2, r3, #23 + 8009420: d40c bmi.n 800943c <HAL_RCC_OscConfig+0x334> + 8009422: f7f9 fbb5 bl 8002b90 <HAL_GetTick> + 8009426: 1b83 subs r3, r0, r6 + 8009428: 2b02 cmp r3, #2 + 800942a: d9f7 bls.n 800941c <HAL_RCC_OscConfig+0x314> + 800942c: e71e b.n 800926c <HAL_RCC_OscConfig+0x164> + 800942e: bf00 nop + 8009430: 20000828 .word 0x20000828 + 8009434: 2000082c .word 0x2000082c + 8009438: 58000400 .word 0x58000400 + 800943c: 68e3 ldr r3, [r4, #12] + 800943e: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 8009442: 2b00 cmp r3, #0 + 8009444: d058 beq.n 80094f8 <HAL_RCC_OscConfig+0x3f0> + 8009446: f023 0380 bic.w r3, r3, #128 ; 0x80 + 800944a: 2b05 cmp r3, #5 + 800944c: bf02 ittt eq + 800944e: f8d6 3090 ldreq.w r3, [r6, #144] ; 0x90 + 8009452: f043 0304 orreq.w r3, r3, #4 + 8009456: f8c6 3090 streq.w r3, [r6, #144] ; 0x90 + 800945a: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 800945e: f7f9 fb97 bl 8002b90 <HAL_GetTick> + 8009462: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 8009466: f043 0301 orr.w r3, r3, #1 + 800946a: 4607 mov r7, r0 + 800946c: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 8009470: f241 3888 movw r8, #5000 ; 0x1388 + 8009474: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 8009478: 079b lsls r3, r3, #30 + 800947a: d405 bmi.n 8009488 <HAL_RCC_OscConfig+0x380> + 800947c: f7f9 fb88 bl 8002b90 <HAL_GetTick> + 8009480: 1bc3 subs r3, r0, r7 + 8009482: 4543 cmp r3, r8 + 8009484: d9f6 bls.n 8009474 <HAL_RCC_OscConfig+0x36c> + 8009486: e6f1 b.n 800926c <HAL_RCC_OscConfig+0x164> + 8009488: 68e3 ldr r3, [r4, #12] + 800948a: f023 0304 bic.w r3, r3, #4 + 800948e: 2b81 cmp r3, #129 ; 0x81 + 8009490: d11b bne.n 80094ca <HAL_RCC_OscConfig+0x3c2> + 8009492: f7f9 fb7d bl 8002b90 <HAL_GetTick> + 8009496: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 800949a: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800949e: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 80094a2: 4607 mov r7, r0 + 80094a4: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 80094a8: f241 3888 movw r8, #5000 ; 0x1388 + 80094ac: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 80094b0: 0518 lsls r0, r3, #20 + 80094b2: d504 bpl.n 80094be <HAL_RCC_OscConfig+0x3b6> + 80094b4: 6ae0 ldr r0, [r4, #44] ; 0x2c + 80094b6: 2800 cmp r0, #0 + 80094b8: d14a bne.n 8009550 <HAL_RCC_OscConfig+0x448> + 80094ba: 2000 movs r0, #0 + 80094bc: e668 b.n 8009190 <HAL_RCC_OscConfig+0x88> + 80094be: f7f9 fb67 bl 8002b90 <HAL_GetTick> + 80094c2: 1bc0 subs r0, r0, r7 + 80094c4: 4540 cmp r0, r8 + 80094c6: d9f1 bls.n 80094ac <HAL_RCC_OscConfig+0x3a4> + 80094c8: e6d0 b.n 800926c <HAL_RCC_OscConfig+0x164> + 80094ca: f7f9 fb61 bl 8002b90 <HAL_GetTick> + 80094ce: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 80094d2: f023 0380 bic.w r3, r3, #128 ; 0x80 + 80094d6: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 80094da: 4607 mov r7, r0 + 80094dc: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 80094e0: f241 3888 movw r8, #5000 ; 0x1388 + 80094e4: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 80094e8: 0519 lsls r1, r3, #20 + 80094ea: d5e3 bpl.n 80094b4 <HAL_RCC_OscConfig+0x3ac> + 80094ec: f7f9 fb50 bl 8002b90 <HAL_GetTick> + 80094f0: 1bc0 subs r0, r0, r7 + 80094f2: 4540 cmp r0, r8 + 80094f4: d9f6 bls.n 80094e4 <HAL_RCC_OscConfig+0x3dc> + 80094f6: e6b9 b.n 800926c <HAL_RCC_OscConfig+0x164> + 80094f8: f7f9 fb4a bl 8002b90 <HAL_GetTick> + 80094fc: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 8009500: f023 0380 bic.w r3, r3, #128 ; 0x80 + 8009504: 4607 mov r7, r0 + 8009506: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 800950a: f241 3888 movw r8, #5000 ; 0x1388 + 800950e: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 8009512: 051a lsls r2, r3, #20 + 8009514: d416 bmi.n 8009544 <HAL_RCC_OscConfig+0x43c> + 8009516: f7f9 fb3b bl 8002b90 <HAL_GetTick> + 800951a: f8d6 3090 ldr.w r3, [r6, #144] ; 0x90 + 800951e: f023 0301 bic.w r3, r3, #1 + 8009522: f8c6 3090 str.w r3, [r6, #144] ; 0x90 + 8009526: 4607 mov r7, r0 + 8009528: f04f 48b0 mov.w r8, #1476395008 ; 0x58000000 + 800952c: f241 3688 movw r6, #5000 ; 0x1388 + 8009530: f8d8 3090 ldr.w r3, [r8, #144] ; 0x90 + 8009534: 079b lsls r3, r3, #30 + 8009536: d5bd bpl.n 80094b4 <HAL_RCC_OscConfig+0x3ac> + 8009538: f7f9 fb2a bl 8002b90 <HAL_GetTick> + 800953c: 1bc3 subs r3, r0, r7 + 800953e: 42b3 cmp r3, r6 + 8009540: d9f6 bls.n 8009530 <HAL_RCC_OscConfig+0x428> + 8009542: e693 b.n 800926c <HAL_RCC_OscConfig+0x164> + 8009544: f7f9 fb24 bl 8002b90 <HAL_GetTick> + 8009548: 1bc0 subs r0, r0, r7 + 800954a: 4540 cmp r0, r8 + 800954c: d9df bls.n 800950e <HAL_RCC_OscConfig+0x406> + 800954e: e68d b.n 800926c <HAL_RCC_OscConfig+0x164> + 8009550: 2d0c cmp r5, #12 + 8009552: d04e beq.n 80095f2 <HAL_RCC_OscConfig+0x4ea> + 8009554: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009558: 2802 cmp r0, #2 + 800955a: 681a ldr r2, [r3, #0] + 800955c: f022 7280 bic.w r2, r2, #16777216 ; 0x1000000 + 8009560: 601a str r2, [r3, #0] + 8009562: d133 bne.n 80095cc <HAL_RCC_OscConfig+0x4c4> + 8009564: f7f9 fb14 bl 8002b90 <HAL_GetTick> + 8009568: 4605 mov r5, r0 + 800956a: f7ff fcde bl 8008f2a <LL_RCC_PLL_IsReady> + 800956e: bb38 cbnz r0, 80095c0 <HAL_RCC_OscConfig+0x4b8> + 8009570: e9d4 310c ldrd r3, r1, [r4, #48] ; 0x30 + 8009574: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009578: 430b orrs r3, r1 + 800957a: 68d0 ldr r0, [r2, #12] + 800957c: 492d ldr r1, [pc, #180] ; (8009634 <HAL_RCC_OscConfig+0x52c>) + 800957e: 4001 ands r1, r0 + 8009580: 430b orrs r3, r1 + 8009582: 6be1 ldr r1, [r4, #60] ; 0x3c + 8009584: 430b orrs r3, r1 + 8009586: 6c21 ldr r1, [r4, #64] ; 0x40 + 8009588: 430b orrs r3, r1 + 800958a: 6c61 ldr r1, [r4, #68] ; 0x44 + 800958c: 430b orrs r3, r1 + 800958e: 6ba1 ldr r1, [r4, #56] ; 0x38 + 8009590: ea43 2301 orr.w r3, r3, r1, lsl #8 + 8009594: 60d3 str r3, [r2, #12] + 8009596: 6813 ldr r3, [r2, #0] + 8009598: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 800959c: 6013 str r3, [r2, #0] + 800959e: 68d3 ldr r3, [r2, #12] + 80095a0: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 80095a4: 60d3 str r3, [r2, #12] + 80095a6: f7f9 faf3 bl 8002b90 <HAL_GetTick> + 80095aa: 4604 mov r4, r0 + 80095ac: f7ff fcbd bl 8008f2a <LL_RCC_PLL_IsReady> + 80095b0: 2800 cmp r0, #0 + 80095b2: d182 bne.n 80094ba <HAL_RCC_OscConfig+0x3b2> + 80095b4: f7f9 faec bl 8002b90 <HAL_GetTick> + 80095b8: 1b00 subs r0, r0, r4 + 80095ba: 280a cmp r0, #10 + 80095bc: d9f6 bls.n 80095ac <HAL_RCC_OscConfig+0x4a4> + 80095be: e655 b.n 800926c <HAL_RCC_OscConfig+0x164> + 80095c0: f7f9 fae6 bl 8002b90 <HAL_GetTick> + 80095c4: 1b40 subs r0, r0, r5 + 80095c6: 280a cmp r0, #10 + 80095c8: d9cf bls.n 800956a <HAL_RCC_OscConfig+0x462> + 80095ca: e64f b.n 800926c <HAL_RCC_OscConfig+0x164> + 80095cc: f7f9 fae0 bl 8002b90 <HAL_GetTick> + 80095d0: 4604 mov r4, r0 + 80095d2: f7ff fcaa bl 8008f2a <LL_RCC_PLL_IsReady> + 80095d6: b930 cbnz r0, 80095e6 <HAL_RCC_OscConfig+0x4de> + 80095d8: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80095dc: 4b16 ldr r3, [pc, #88] ; (8009638 <HAL_RCC_OscConfig+0x530>) + 80095de: 68d1 ldr r1, [r2, #12] + 80095e0: 400b ands r3, r1 + 80095e2: 60d3 str r3, [r2, #12] + 80095e4: e5d4 b.n 8009190 <HAL_RCC_OscConfig+0x88> + 80095e6: f7f9 fad3 bl 8002b90 <HAL_GetTick> + 80095ea: 1b00 subs r0, r0, r4 + 80095ec: 280a cmp r0, #10 + 80095ee: d9f0 bls.n 80095d2 <HAL_RCC_OscConfig+0x4ca> + 80095f0: e63c b.n 800926c <HAL_RCC_OscConfig+0x164> + 80095f2: 2801 cmp r0, #1 + 80095f4: f43f adcc beq.w 8009190 <HAL_RCC_OscConfig+0x88> + 80095f8: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80095fc: 6b22 ldr r2, [r4, #48] ; 0x30 + 80095fe: 68db ldr r3, [r3, #12] + 8009600: f003 0103 and.w r1, r3, #3 + 8009604: 4291 cmp r1, r2 + 8009606: f47f add8 bne.w 80091ba <HAL_RCC_OscConfig+0xb2> + 800960a: 6b61 ldr r1, [r4, #52] ; 0x34 + 800960c: f003 0270 and.w r2, r3, #112 ; 0x70 + 8009610: 428a cmp r2, r1 + 8009612: f47f add2 bne.w 80091ba <HAL_RCC_OscConfig+0xb2> + 8009616: 6ba1 ldr r1, [r4, #56] ; 0x38 + 8009618: f403 42fe and.w r2, r3, #32512 ; 0x7f00 + 800961c: ebb2 2f01 cmp.w r2, r1, lsl #8 + 8009620: f47f adcb bne.w 80091ba <HAL_RCC_OscConfig+0xb2> + 8009624: 6c62 ldr r2, [r4, #68] ; 0x44 + 8009626: f003 4360 and.w r3, r3, #3758096384 ; 0xe0000000 + 800962a: 4293 cmp r3, r2 + 800962c: f43f af45 beq.w 80094ba <HAL_RCC_OscConfig+0x3b2> + 8009630: e5c3 b.n 80091ba <HAL_RCC_OscConfig+0xb2> + 8009632: bf00 nop + 8009634: 11c1808c .word 0x11c1808c + 8009638: eefefffc .word 0xeefefffc + +0800963c <HAL_RCC_ClockConfig>: + 800963c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8009640: 460d mov r5, r1 + 8009642: 4604 mov r4, r0 + 8009644: b910 cbnz r0, 800964c <HAL_RCC_ClockConfig+0x10> + 8009646: 2001 movs r0, #1 + 8009648: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800964c: 4e68 ldr r6, [pc, #416] ; (80097f0 <HAL_RCC_ClockConfig+0x1b4>) + 800964e: 6833 ldr r3, [r6, #0] + 8009650: f003 0307 and.w r3, r3, #7 + 8009654: 428b cmp r3, r1 + 8009656: d316 bcc.n 8009686 <HAL_RCC_ClockConfig+0x4a> + 8009658: 6823 ldr r3, [r4, #0] + 800965a: 079a lsls r2, r3, #30 + 800965c: d527 bpl.n 80096ae <HAL_RCC_ClockConfig+0x72> + 800965e: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 8009662: 68a2 ldr r2, [r4, #8] + 8009664: 68bb ldr r3, [r7, #8] + 8009666: f023 03f0 bic.w r3, r3, #240 ; 0xf0 + 800966a: 4313 orrs r3, r2 + 800966c: 60bb str r3, [r7, #8] + 800966e: f7f9 fa8f bl 8002b90 <HAL_GetTick> + 8009672: 4606 mov r6, r0 + 8009674: 68bb ldr r3, [r7, #8] + 8009676: 03db lsls r3, r3, #15 + 8009678: d419 bmi.n 80096ae <HAL_RCC_ClockConfig+0x72> + 800967a: f7f9 fa89 bl 8002b90 <HAL_GetTick> + 800967e: 1b83 subs r3, r0, r6 + 8009680: 2b02 cmp r3, #2 + 8009682: d9f7 bls.n 8009674 <HAL_RCC_ClockConfig+0x38> + 8009684: e011 b.n 80096aa <HAL_RCC_ClockConfig+0x6e> + 8009686: 6833 ldr r3, [r6, #0] + 8009688: f023 0307 bic.w r3, r3, #7 + 800968c: 430b orrs r3, r1 + 800968e: 6033 str r3, [r6, #0] + 8009690: f7f9 fa7e bl 8002b90 <HAL_GetTick> + 8009694: 4607 mov r7, r0 + 8009696: 6833 ldr r3, [r6, #0] + 8009698: f003 0307 and.w r3, r3, #7 + 800969c: 42ab cmp r3, r5 + 800969e: d0db beq.n 8009658 <HAL_RCC_ClockConfig+0x1c> + 80096a0: f7f9 fa76 bl 8002b90 <HAL_GetTick> + 80096a4: 1bc0 subs r0, r0, r7 + 80096a6: 2802 cmp r0, #2 + 80096a8: d9f5 bls.n 8009696 <HAL_RCC_ClockConfig+0x5a> + 80096aa: 2003 movs r0, #3 + 80096ac: e7cc b.n 8009648 <HAL_RCC_ClockConfig+0xc> + 80096ae: 6823 ldr r3, [r4, #0] + 80096b0: 0658 lsls r0, r3, #25 + 80096b2: d517 bpl.n 80096e4 <HAL_RCC_ClockConfig+0xa8> + 80096b4: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 80096b8: 6962 ldr r2, [r4, #20] + 80096ba: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 + 80096be: f023 030f bic.w r3, r3, #15 + 80096c2: ea43 1312 orr.w r3, r3, r2, lsr #4 + 80096c6: f8c7 3108 str.w r3, [r7, #264] ; 0x108 + 80096ca: f7f9 fa61 bl 8002b90 <HAL_GetTick> + 80096ce: 4606 mov r6, r0 + 80096d0: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 + 80096d4: 03d9 lsls r1, r3, #15 + 80096d6: d405 bmi.n 80096e4 <HAL_RCC_ClockConfig+0xa8> + 80096d8: f7f9 fa5a bl 8002b90 <HAL_GetTick> + 80096dc: 1b83 subs r3, r0, r6 + 80096de: 2b02 cmp r3, #2 + 80096e0: d9f6 bls.n 80096d0 <HAL_RCC_ClockConfig+0x94> + 80096e2: e7e2 b.n 80096aa <HAL_RCC_ClockConfig+0x6e> + 80096e4: 6823 ldr r3, [r4, #0] + 80096e6: 075a lsls r2, r3, #29 + 80096e8: d513 bpl.n 8009712 <HAL_RCC_ClockConfig+0xd6> + 80096ea: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 80096ee: 68e2 ldr r2, [r4, #12] + 80096f0: 68bb ldr r3, [r7, #8] + 80096f2: f423 63e0 bic.w r3, r3, #1792 ; 0x700 + 80096f6: 4313 orrs r3, r2 + 80096f8: 60bb str r3, [r7, #8] + 80096fa: f7f9 fa49 bl 8002b90 <HAL_GetTick> + 80096fe: 4606 mov r6, r0 + 8009700: 68bb ldr r3, [r7, #8] + 8009702: 039b lsls r3, r3, #14 + 8009704: d405 bmi.n 8009712 <HAL_RCC_ClockConfig+0xd6> + 8009706: f7f9 fa43 bl 8002b90 <HAL_GetTick> + 800970a: 1b83 subs r3, r0, r6 + 800970c: 2b02 cmp r3, #2 + 800970e: d9f7 bls.n 8009700 <HAL_RCC_ClockConfig+0xc4> + 8009710: e7cb b.n 80096aa <HAL_RCC_ClockConfig+0x6e> + 8009712: 6823 ldr r3, [r4, #0] + 8009714: 0718 lsls r0, r3, #28 + 8009716: d514 bpl.n 8009742 <HAL_RCC_ClockConfig+0x106> + 8009718: f04f 47b0 mov.w r7, #1476395008 ; 0x58000000 + 800971c: 6922 ldr r2, [r4, #16] + 800971e: 68bb ldr r3, [r7, #8] + 8009720: f423 5360 bic.w r3, r3, #14336 ; 0x3800 + 8009724: ea43 03c2 orr.w r3, r3, r2, lsl #3 + 8009728: 60bb str r3, [r7, #8] + 800972a: f7f9 fa31 bl 8002b90 <HAL_GetTick> + 800972e: 4606 mov r6, r0 + 8009730: 68bb ldr r3, [r7, #8] + 8009732: 0359 lsls r1, r3, #13 + 8009734: d405 bmi.n 8009742 <HAL_RCC_ClockConfig+0x106> + 8009736: f7f9 fa2b bl 8002b90 <HAL_GetTick> + 800973a: 1b83 subs r3, r0, r6 + 800973c: 2b02 cmp r3, #2 + 800973e: d9f7 bls.n 8009730 <HAL_RCC_ClockConfig+0xf4> + 8009740: e7b3 b.n 80096aa <HAL_RCC_ClockConfig+0x6e> + 8009742: 6823 ldr r3, [r4, #0] + 8009744: 07da lsls r2, r3, #31 + 8009746: d40f bmi.n 8009768 <HAL_RCC_ClockConfig+0x12c> + 8009748: 4c29 ldr r4, [pc, #164] ; (80097f0 <HAL_RCC_ClockConfig+0x1b4>) + 800974a: 6823 ldr r3, [r4, #0] + 800974c: f003 0307 and.w r3, r3, #7 + 8009750: 42ab cmp r3, r5 + 8009752: d839 bhi.n 80097c8 <HAL_RCC_ClockConfig+0x18c> + 8009754: f7ff fcc8 bl 80090e8 <HAL_RCC_GetHCLKFreq> + 8009758: 4b26 ldr r3, [pc, #152] ; (80097f4 <HAL_RCC_ClockConfig+0x1b8>) + 800975a: 6018 str r0, [r3, #0] + 800975c: 4b26 ldr r3, [pc, #152] ; (80097f8 <HAL_RCC_ClockConfig+0x1bc>) + 800975e: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 8009762: 6818 ldr r0, [r3, #0] + 8009764: f7f9 ba12 b.w 8002b8c <HAL_InitTick> + 8009768: 6862 ldr r2, [r4, #4] + 800976a: 2a02 cmp r2, #2 + 800976c: d11d bne.n 80097aa <HAL_RCC_ClockConfig+0x16e> + 800976e: f7ff fbc7 bl 8008f00 <LL_RCC_HSE_IsReady> + 8009772: 2800 cmp r0, #0 + 8009774: f43f af67 beq.w 8009646 <HAL_RCC_ClockConfig+0xa> + 8009778: f04f 46b0 mov.w r6, #1476395008 ; 0x58000000 + 800977c: f241 3888 movw r8, #5000 ; 0x1388 + 8009780: 68b3 ldr r3, [r6, #8] + 8009782: f023 0303 bic.w r3, r3, #3 + 8009786: 4313 orrs r3, r2 + 8009788: 60b3 str r3, [r6, #8] + 800978a: f7f9 fa01 bl 8002b90 <HAL_GetTick> + 800978e: 4607 mov r7, r0 + 8009790: 68b3 ldr r3, [r6, #8] + 8009792: 6862 ldr r2, [r4, #4] + 8009794: f003 030c and.w r3, r3, #12 + 8009798: ebb3 0f82 cmp.w r3, r2, lsl #2 + 800979c: d0d4 beq.n 8009748 <HAL_RCC_ClockConfig+0x10c> + 800979e: f7f9 f9f7 bl 8002b90 <HAL_GetTick> + 80097a2: 1bc0 subs r0, r0, r7 + 80097a4: 4540 cmp r0, r8 + 80097a6: d9f3 bls.n 8009790 <HAL_RCC_ClockConfig+0x154> + 80097a8: e77f b.n 80096aa <HAL_RCC_ClockConfig+0x6e> + 80097aa: 2a03 cmp r2, #3 + 80097ac: d102 bne.n 80097b4 <HAL_RCC_ClockConfig+0x178> + 80097ae: f7ff fbbc bl 8008f2a <LL_RCC_PLL_IsReady> + 80097b2: e7de b.n 8009772 <HAL_RCC_ClockConfig+0x136> + 80097b4: b912 cbnz r2, 80097bc <HAL_RCC_ClockConfig+0x180> + 80097b6: f7ff fba9 bl 8008f0c <LL_RCC_MSI_IsReady> + 80097ba: e7da b.n 8009772 <HAL_RCC_ClockConfig+0x136> + 80097bc: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80097c0: 681b ldr r3, [r3, #0] + 80097c2: 055b lsls r3, r3, #21 + 80097c4: d4d8 bmi.n 8009778 <HAL_RCC_ClockConfig+0x13c> + 80097c6: e73e b.n 8009646 <HAL_RCC_ClockConfig+0xa> + 80097c8: 6823 ldr r3, [r4, #0] + 80097ca: f023 0307 bic.w r3, r3, #7 + 80097ce: 432b orrs r3, r5 + 80097d0: 6023 str r3, [r4, #0] + 80097d2: f7f9 f9dd bl 8002b90 <HAL_GetTick> + 80097d6: 4606 mov r6, r0 + 80097d8: 6823 ldr r3, [r4, #0] + 80097da: f003 0307 and.w r3, r3, #7 + 80097de: 42ab cmp r3, r5 + 80097e0: d0b8 beq.n 8009754 <HAL_RCC_ClockConfig+0x118> + 80097e2: f7f9 f9d5 bl 8002b90 <HAL_GetTick> + 80097e6: 1b80 subs r0, r0, r6 + 80097e8: 2802 cmp r0, #2 + 80097ea: d9f5 bls.n 80097d8 <HAL_RCC_ClockConfig+0x19c> + 80097ec: e75d b.n 80096aa <HAL_RCC_ClockConfig+0x6e> + 80097ee: bf00 nop + 80097f0: 58004000 .word 0x58004000 + 80097f4: 20000828 .word 0x20000828 + 80097f8: 2000082c .word 0x2000082c + +080097fc <HAL_RCC_GetPCLK1Freq>: + 80097fc: b508 push {r3, lr} + 80097fe: f7ff fc73 bl 80090e8 <HAL_RCC_GetHCLKFreq> + 8009802: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009806: 4a04 ldr r2, [pc, #16] ; (8009818 <HAL_RCC_GetPCLK1Freq+0x1c>) + 8009808: 689b ldr r3, [r3, #8] + 800980a: f3c3 2302 ubfx r3, r3, #8, #3 + 800980e: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8009812: 40d8 lsrs r0, r3 + 8009814: bd08 pop {r3, pc} + 8009816: bf00 nop + 8009818: 08015210 .word 0x08015210 + +0800981c <HAL_RCC_GetPCLK2Freq>: + 800981c: b508 push {r3, lr} + 800981e: f7ff fc63 bl 80090e8 <HAL_RCC_GetHCLKFreq> + 8009822: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009826: 4a04 ldr r2, [pc, #16] ; (8009838 <HAL_RCC_GetPCLK2Freq+0x1c>) + 8009828: 689b ldr r3, [r3, #8] + 800982a: f3c3 23c2 ubfx r3, r3, #11, #3 + 800982e: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8009832: 40d8 lsrs r0, r3 + 8009834: bd08 pop {r3, pc} + 8009836: bf00 nop + 8009838: 08015210 .word 0x08015210 + +0800983c <LL_RCC_LSE_IsReady>: + 800983c: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8009840: f8d3 0090 ldr.w r0, [r3, #144] ; 0x90 + 8009844: f3c0 0040 ubfx r0, r0, #1, #1 + 8009848: 4770 bx lr + +0800984a <LL_RCC_SetI2CClockSource>: + 800984a: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800984e: 0902 lsrs r2, r0, #4 + 8009850: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 8009854: f402 227f and.w r2, r2, #1044480 ; 0xff000 + 8009858: 0100 lsls r0, r0, #4 + 800985a: ea23 0302 bic.w r3, r3, r2 + 800985e: f400 207f and.w r0, r0, #1044480 ; 0xff000 + 8009862: 4303 orrs r3, r0 + 8009864: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + 8009868: 4770 bx lr + +0800986a <LL_RCC_SetLPTIMClockSource>: + 800986a: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800986e: 0c02 lsrs r2, r0, #16 + 8009870: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 8009874: 0412 lsls r2, r2, #16 + 8009876: ea23 0302 bic.w r3, r3, r2 + 800987a: ea43 4000 orr.w r0, r3, r0, lsl #16 + 800987e: f8c1 0088 str.w r0, [r1, #136] ; 0x88 + 8009882: 4770 bx lr + +08009884 <HAL_RCCEx_PeriphCLKConfig>: + 8009884: b570 push {r4, r5, r6, lr} + 8009886: 6806 ldr r6, [r0, #0] + 8009888: f416 3680 ands.w r6, r6, #65536 ; 0x10000 + 800988c: 4604 mov r4, r0 + 800988e: d038 beq.n 8009902 <HAL_RCCEx_PeriphCLKConfig+0x7e> + 8009890: f7ff fac2 bl 8008e18 <HAL_PWR_EnableBkUpAccess> + 8009894: f7f9 f97c bl 8002b90 <HAL_GetTick> + 8009898: 4e61 ldr r6, [pc, #388] ; (8009a20 <HAL_RCCEx_PeriphCLKConfig+0x19c>) + 800989a: 4605 mov r5, r0 + 800989c: 6833 ldr r3, [r6, #0] + 800989e: 05db lsls r3, r3, #23 + 80098a0: d529 bpl.n 80098f6 <HAL_RCCEx_PeriphCLKConfig+0x72> + 80098a2: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 80098a6: 6b61 ldr r1, [r4, #52] ; 0x34 + 80098a8: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 80098ac: f402 7240 and.w r2, r2, #768 ; 0x300 + 80098b0: 4291 cmp r1, r2 + 80098b2: d014 beq.n 80098de <HAL_RCCEx_PeriphCLKConfig+0x5a> + 80098b4: f8d3 1090 ldr.w r1, [r3, #144] ; 0x90 + 80098b8: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 80098bc: f442 3280 orr.w r2, r2, #65536 ; 0x10000 + 80098c0: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 80098c4: f8d3 2090 ldr.w r2, [r3, #144] ; 0x90 + 80098c8: f421 7040 bic.w r0, r1, #768 ; 0x300 + 80098cc: f422 3280 bic.w r2, r2, #65536 ; 0x10000 + 80098d0: 078d lsls r5, r1, #30 + 80098d2: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 80098d6: f8c3 0090 str.w r0, [r3, #144] ; 0x90 + 80098da: f100 8090 bmi.w 80099fe <HAL_RCCEx_PeriphCLKConfig+0x17a> + 80098de: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80098e2: 6b61 ldr r1, [r4, #52] ; 0x34 + 80098e4: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 80098e8: f423 7340 bic.w r3, r3, #768 ; 0x300 + 80098ec: 430b orrs r3, r1 + 80098ee: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 80098f2: 2600 movs r6, #0 + 80098f4: e005 b.n 8009902 <HAL_RCCEx_PeriphCLKConfig+0x7e> + 80098f6: f7f9 f94b bl 8002b90 <HAL_GetTick> + 80098fa: 1b40 subs r0, r0, r5 + 80098fc: 2802 cmp r0, #2 + 80098fe: d9cd bls.n 800989c <HAL_RCCEx_PeriphCLKConfig+0x18> + 8009900: 2603 movs r6, #3 + 8009902: 6825 ldr r5, [r4, #0] + 8009904: 07e8 lsls r0, r5, #31 + 8009906: d50a bpl.n 800991e <HAL_RCCEx_PeriphCLKConfig+0x9a> + 8009908: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 800990c: 6862 ldr r2, [r4, #4] + 800990e: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 8009912: ea23 4312 bic.w r3, r3, r2, lsr #16 + 8009916: b292 uxth r2, r2 + 8009918: 4313 orrs r3, r2 + 800991a: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + 800991e: 07a9 lsls r1, r5, #30 + 8009920: d50a bpl.n 8009938 <HAL_RCCEx_PeriphCLKConfig+0xb4> + 8009922: f04f 41b0 mov.w r1, #1476395008 ; 0x58000000 + 8009926: 68a2 ldr r2, [r4, #8] + 8009928: f8d1 3088 ldr.w r3, [r1, #136] ; 0x88 + 800992c: ea23 4312 bic.w r3, r3, r2, lsr #16 + 8009930: b292 uxth r2, r2 + 8009932: 4313 orrs r3, r2 + 8009934: f8c1 3088 str.w r3, [r1, #136] ; 0x88 + 8009938: 06aa lsls r2, r5, #26 + 800993a: d509 bpl.n 8009950 <HAL_RCCEx_PeriphCLKConfig+0xcc> + 800993c: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009940: 6921 ldr r1, [r4, #16] + 8009942: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88 + 8009946: f423 6340 bic.w r3, r3, #3072 ; 0xc00 + 800994a: 430b orrs r3, r1 + 800994c: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 8009950: 05ab lsls r3, r5, #22 + 8009952: d502 bpl.n 800995a <HAL_RCCEx_PeriphCLKConfig+0xd6> + 8009954: 6a20 ldr r0, [r4, #32] + 8009956: f7ff ff88 bl 800986a <LL_RCC_SetLPTIMClockSource> + 800995a: 0568 lsls r0, r5, #21 + 800995c: d502 bpl.n 8009964 <HAL_RCCEx_PeriphCLKConfig+0xe0> + 800995e: 6a60 ldr r0, [r4, #36] ; 0x24 + 8009960: f7ff ff83 bl 800986a <LL_RCC_SetLPTIMClockSource> + 8009964: 0529 lsls r1, r5, #20 + 8009966: d502 bpl.n 800996e <HAL_RCCEx_PeriphCLKConfig+0xea> + 8009968: 6aa0 ldr r0, [r4, #40] ; 0x28 + 800996a: f7ff ff7e bl 800986a <LL_RCC_SetLPTIMClockSource> + 800996e: 066a lsls r2, r5, #25 + 8009970: d502 bpl.n 8009978 <HAL_RCCEx_PeriphCLKConfig+0xf4> + 8009972: 6960 ldr r0, [r4, #20] + 8009974: f7ff ff69 bl 800984a <LL_RCC_SetI2CClockSource> + 8009978: 062b lsls r3, r5, #24 + 800997a: d502 bpl.n 8009982 <HAL_RCCEx_PeriphCLKConfig+0xfe> + 800997c: 69a0 ldr r0, [r4, #24] + 800997e: f7ff ff64 bl 800984a <LL_RCC_SetI2CClockSource> + 8009982: 05e8 lsls r0, r5, #23 + 8009984: d502 bpl.n 800998c <HAL_RCCEx_PeriphCLKConfig+0x108> + 8009986: 69e0 ldr r0, [r4, #28] + 8009988: f7ff ff5f bl 800984a <LL_RCC_SetI2CClockSource> + 800998c: 06e9 lsls r1, r5, #27 + 800998e: d510 bpl.n 80099b2 <HAL_RCCEx_PeriphCLKConfig+0x12e> + 8009990: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009994: 68e1 ldr r1, [r4, #12] + 8009996: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88 + 800999a: f423 7340 bic.w r3, r3, #768 ; 0x300 + 800999e: 430b orrs r3, r1 + 80099a0: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 80099a4: f5b1 7f80 cmp.w r1, #256 ; 0x100 + 80099a8: bf02 ittt eq + 80099aa: 68d3 ldreq r3, [r2, #12] + 80099ac: f043 7380 orreq.w r3, r3, #16777216 ; 0x1000000 + 80099b0: 60d3 streq r3, [r2, #12] + 80099b2: 042a lsls r2, r5, #16 + 80099b4: d50e bpl.n 80099d4 <HAL_RCCEx_PeriphCLKConfig+0x150> + 80099b6: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80099ba: 6b21 ldr r1, [r4, #48] ; 0x30 + 80099bc: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88 + 80099c0: f023 4340 bic.w r3, r3, #3221225472 ; 0xc0000000 + 80099c4: 430b orrs r3, r1 + 80099c6: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 80099ca: b919 cbnz r1, 80099d4 <HAL_RCCEx_PeriphCLKConfig+0x150> + 80099cc: 68d3 ldr r3, [r2, #12] + 80099ce: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 80099d2: 60d3 str r3, [r2, #12] + 80099d4: 046b lsls r3, r5, #17 + 80099d6: d510 bpl.n 80099fa <HAL_RCCEx_PeriphCLKConfig+0x176> + 80099d8: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 80099dc: 6ae1 ldr r1, [r4, #44] ; 0x2c + 80099de: f8d2 3088 ldr.w r3, [r2, #136] ; 0x88 + 80099e2: f023 5340 bic.w r3, r3, #805306368 ; 0x30000000 + 80099e6: 430b orrs r3, r1 + 80099e8: f1b1 5f00 cmp.w r1, #536870912 ; 0x20000000 + 80099ec: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 80099f0: d103 bne.n 80099fa <HAL_RCCEx_PeriphCLKConfig+0x176> + 80099f2: 68d3 ldr r3, [r2, #12] + 80099f4: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 80099f8: 60d3 str r3, [r2, #12] + 80099fa: 4630 mov r0, r6 + 80099fc: bd70 pop {r4, r5, r6, pc} + 80099fe: f7f9 f8c7 bl 8002b90 <HAL_GetTick> + 8009a02: f241 3688 movw r6, #5000 ; 0x1388 + 8009a06: 4605 mov r5, r0 + 8009a08: f7ff ff18 bl 800983c <LL_RCC_LSE_IsReady> + 8009a0c: 2801 cmp r0, #1 + 8009a0e: f43f af66 beq.w 80098de <HAL_RCCEx_PeriphCLKConfig+0x5a> + 8009a12: f7f9 f8bd bl 8002b90 <HAL_GetTick> + 8009a16: 1b40 subs r0, r0, r5 + 8009a18: 42b0 cmp r0, r6 + 8009a1a: d9f5 bls.n 8009a08 <HAL_RCCEx_PeriphCLKConfig+0x184> + 8009a1c: e770 b.n 8009900 <HAL_RCCEx_PeriphCLKConfig+0x7c> + 8009a1e: bf00 nop + 8009a20: 58000400 .word 0x58000400 + +08009a24 <HAL_RTC_DeactivateAlarm>: + 8009a24: b530 push {r4, r5, lr} + 8009a26: f890 302c ldrb.w r3, [r0, #44] ; 0x2c + 8009a2a: 2b01 cmp r3, #1 + 8009a2c: 4602 mov r2, r0 + 8009a2e: f04f 0002 mov.w r0, #2 + 8009a32: d022 beq.n 8009a7a <HAL_RTC_DeactivateAlarm+0x56> + 8009a34: 4b17 ldr r3, [pc, #92] ; (8009a94 <HAL_RTC_DeactivateAlarm+0x70>) + 8009a36: f882 002d strb.w r0, [r2, #45] ; 0x2d + 8009a3a: 24ca movs r4, #202 ; 0xca + 8009a3c: 2501 movs r5, #1 + 8009a3e: f882 502c strb.w r5, [r2, #44] ; 0x2c + 8009a42: 625c str r4, [r3, #36] ; 0x24 + 8009a44: 2453 movs r4, #83 ; 0x53 + 8009a46: 625c str r4, [r3, #36] ; 0x24 + 8009a48: f5b1 7f80 cmp.w r1, #256 ; 0x100 + 8009a4c: 6b14 ldr r4, [r2, #48] ; 0x30 + 8009a4e: 6999 ldr r1, [r3, #24] + 8009a50: d114 bne.n 8009a7c <HAL_RTC_DeactivateAlarm+0x58> + 8009a52: f421 5188 bic.w r1, r1, #4352 ; 0x1100 + 8009a56: 6199 str r1, [r3, #24] + 8009a58: 6c59 ldr r1, [r3, #68] ; 0x44 + 8009a5a: f024 0401 bic.w r4, r4, #1 + 8009a5e: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 8009a62: 6459 str r1, [r3, #68] ; 0x44 + 8009a64: 6314 str r4, [r2, #48] ; 0x30 + 8009a66: 65dd str r5, [r3, #92] ; 0x5c + 8009a68: 4b0a ldr r3, [pc, #40] ; (8009a94 <HAL_RTC_DeactivateAlarm+0x70>) + 8009a6a: 21ff movs r1, #255 ; 0xff + 8009a6c: 6259 str r1, [r3, #36] ; 0x24 + 8009a6e: 2000 movs r0, #0 + 8009a70: 2301 movs r3, #1 + 8009a72: f882 302d strb.w r3, [r2, #45] ; 0x2d + 8009a76: f882 002c strb.w r0, [r2, #44] ; 0x2c + 8009a7a: bd30 pop {r4, r5, pc} + 8009a7c: f421 5108 bic.w r1, r1, #8704 ; 0x2200 + 8009a80: 6199 str r1, [r3, #24] + 8009a82: 6cd9 ldr r1, [r3, #76] ; 0x4c + 8009a84: f024 0402 bic.w r4, r4, #2 + 8009a88: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 8009a8c: 64d9 str r1, [r3, #76] ; 0x4c + 8009a8e: 6314 str r4, [r2, #48] ; 0x30 + 8009a90: 65d8 str r0, [r3, #92] ; 0x5c + 8009a92: e7e9 b.n 8009a68 <HAL_RTC_DeactivateAlarm+0x44> + 8009a94: 40002800 .word 0x40002800 + +08009a98 <HAL_RTC_AlarmIRQHandler>: + 8009a98: b570 push {r4, r5, r6, lr} + 8009a9a: 4e0b ldr r6, [pc, #44] ; (8009ac8 <HAL_RTC_AlarmIRQHandler+0x30>) + 8009a9c: 6b03 ldr r3, [r0, #48] ; 0x30 + 8009a9e: 6d75 ldr r5, [r6, #84] ; 0x54 + 8009aa0: 401d ands r5, r3 + 8009aa2: 07ea lsls r2, r5, #31 + 8009aa4: 4604 mov r4, r0 + 8009aa6: d503 bpl.n 8009ab0 <HAL_RTC_AlarmIRQHandler+0x18> + 8009aa8: 2301 movs r3, #1 + 8009aaa: 65f3 str r3, [r6, #92] ; 0x5c + 8009aac: f7f9 f9eb bl 8002e86 <HAL_RTC_AlarmAEventCallback> + 8009ab0: 07ab lsls r3, r5, #30 + 8009ab2: d504 bpl.n 8009abe <HAL_RTC_AlarmIRQHandler+0x26> + 8009ab4: 2302 movs r3, #2 + 8009ab6: 65f3 str r3, [r6, #92] ; 0x5c + 8009ab8: 4620 mov r0, r4 + 8009aba: f000 f9cb bl 8009e54 <HAL_RTCEx_AlarmBEventCallback> + 8009abe: 2301 movs r3, #1 + 8009ac0: f884 302d strb.w r3, [r4, #45] ; 0x2d + 8009ac4: bd70 pop {r4, r5, r6, pc} + 8009ac6: bf00 nop + 8009ac8: 40002800 .word 0x40002800 + +08009acc <HAL_RTC_WaitForSynchro>: + 8009acc: b538 push {r3, r4, r5, lr} + 8009ace: 4c0a ldr r4, [pc, #40] ; (8009af8 <HAL_RTC_WaitForSynchro+0x2c>) + 8009ad0: 68e3 ldr r3, [r4, #12] + 8009ad2: f023 0320 bic.w r3, r3, #32 + 8009ad6: 60e3 str r3, [r4, #12] + 8009ad8: f7f9 f85a bl 8002b90 <HAL_GetTick> + 8009adc: 4605 mov r5, r0 + 8009ade: 68e3 ldr r3, [r4, #12] + 8009ae0: 069b lsls r3, r3, #26 + 8009ae2: d501 bpl.n 8009ae8 <HAL_RTC_WaitForSynchro+0x1c> + 8009ae4: 2000 movs r0, #0 + 8009ae6: bd38 pop {r3, r4, r5, pc} + 8009ae8: f7f9 f852 bl 8002b90 <HAL_GetTick> + 8009aec: 1b40 subs r0, r0, r5 + 8009aee: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8 + 8009af2: d9f4 bls.n 8009ade <HAL_RTC_WaitForSynchro+0x12> + 8009af4: 2003 movs r0, #3 + 8009af6: e7f6 b.n 8009ae6 <HAL_RTC_WaitForSynchro+0x1a> + 8009af8: 40002800 .word 0x40002800 + +08009afc <RTC_EnterInitMode>: + 8009afc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8009b00: 4d11 ldr r5, [pc, #68] ; (8009b48 <RTC_EnterInitMode+0x4c>) + 8009b02: 68ec ldr r4, [r5, #12] + 8009b04: f014 0440 ands.w r4, r4, #64 ; 0x40 + 8009b08: 4607 mov r7, r0 + 8009b0a: d11a bne.n 8009b42 <RTC_EnterInitMode+0x46> + 8009b0c: 68eb ldr r3, [r5, #12] + 8009b0e: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8009b12: 60eb str r3, [r5, #12] + 8009b14: f7f9 f83c bl 8002b90 <HAL_GetTick> + 8009b18: f04f 0803 mov.w r8, #3 + 8009b1c: 4606 mov r6, r0 + 8009b1e: 68eb ldr r3, [r5, #12] + 8009b20: 065b lsls r3, r3, #25 + 8009b22: d401 bmi.n 8009b28 <RTC_EnterInitMode+0x2c> + 8009b24: 2c03 cmp r4, #3 + 8009b26: d102 bne.n 8009b2e <RTC_EnterInitMode+0x32> + 8009b28: 4620 mov r0, r4 + 8009b2a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8009b2e: f7f9 f82f bl 8002b90 <HAL_GetTick> + 8009b32: 1b80 subs r0, r0, r6 + 8009b34: f5b0 7f7a cmp.w r0, #1000 ; 0x3e8 + 8009b38: bf84 itt hi + 8009b3a: f887 802d strbhi.w r8, [r7, #45] ; 0x2d + 8009b3e: 2403 movhi r4, #3 + 8009b40: e7ed b.n 8009b1e <RTC_EnterInitMode+0x22> + 8009b42: 2400 movs r4, #0 + 8009b44: e7f0 b.n 8009b28 <RTC_EnterInitMode+0x2c> + 8009b46: bf00 nop + 8009b48: 40002800 .word 0x40002800 + +08009b4c <RTC_ExitInitMode>: + 8009b4c: b538 push {r3, r4, r5, lr} + 8009b4e: 4c0f ldr r4, [pc, #60] ; (8009b8c <RTC_ExitInitMode+0x40>) + 8009b50: 68e3 ldr r3, [r4, #12] + 8009b52: f023 0380 bic.w r3, r3, #128 ; 0x80 + 8009b56: 60e3 str r3, [r4, #12] + 8009b58: 69a3 ldr r3, [r4, #24] + 8009b5a: 069b lsls r3, r3, #26 + 8009b5c: 4605 mov r5, r0 + 8009b5e: d406 bmi.n 8009b6e <RTC_ExitInitMode+0x22> + 8009b60: f7ff ffb4 bl 8009acc <HAL_RTC_WaitForSynchro> + 8009b64: b110 cbz r0, 8009b6c <RTC_ExitInitMode+0x20> + 8009b66: 2003 movs r0, #3 + 8009b68: f885 002d strb.w r0, [r5, #45] ; 0x2d + 8009b6c: bd38 pop {r3, r4, r5, pc} + 8009b6e: 69a3 ldr r3, [r4, #24] + 8009b70: f023 0320 bic.w r3, r3, #32 + 8009b74: 61a3 str r3, [r4, #24] + 8009b76: f7ff ffa9 bl 8009acc <HAL_RTC_WaitForSynchro> + 8009b7a: b110 cbz r0, 8009b82 <RTC_ExitInitMode+0x36> + 8009b7c: 2003 movs r0, #3 + 8009b7e: f885 002d strb.w r0, [r5, #45] ; 0x2d + 8009b82: 69a3 ldr r3, [r4, #24] + 8009b84: f043 0320 orr.w r3, r3, #32 + 8009b88: 61a3 str r3, [r4, #24] + 8009b8a: e7ef b.n 8009b6c <RTC_ExitInitMode+0x20> + 8009b8c: 40002800 .word 0x40002800 + +08009b90 <HAL_RTC_Init>: + 8009b90: b538 push {r3, r4, r5, lr} + 8009b92: 4604 mov r4, r0 + 8009b94: 2800 cmp r0, #0 + 8009b96: d04b beq.n 8009c30 <HAL_RTC_Init+0xa0> + 8009b98: f890 302d ldrb.w r3, [r0, #45] ; 0x2d + 8009b9c: f003 02ff and.w r2, r3, #255 ; 0xff + 8009ba0: b91b cbnz r3, 8009baa <HAL_RTC_Init+0x1a> + 8009ba2: f880 202c strb.w r2, [r0, #44] ; 0x2c + 8009ba6: f7f8 fddb bl 8002760 <HAL_RTC_MspInit> + 8009baa: 2302 movs r3, #2 + 8009bac: 4d21 ldr r5, [pc, #132] ; (8009c34 <HAL_RTC_Init+0xa4>) + 8009bae: f884 302d strb.w r3, [r4, #45] ; 0x2d + 8009bb2: 68eb ldr r3, [r5, #12] + 8009bb4: 06db lsls r3, r3, #27 + 8009bb6: d432 bmi.n 8009c1e <HAL_RTC_Init+0x8e> + 8009bb8: 23ca movs r3, #202 ; 0xca + 8009bba: 626b str r3, [r5, #36] ; 0x24 + 8009bbc: 2353 movs r3, #83 ; 0x53 + 8009bbe: 626b str r3, [r5, #36] ; 0x24 + 8009bc0: 4620 mov r0, r4 + 8009bc2: f7ff ff9b bl 8009afc <RTC_EnterInitMode> + 8009bc6: bb78 cbnz r0, 8009c28 <HAL_RTC_Init+0x98> + 8009bc8: 69ab ldr r3, [r5, #24] + 8009bca: f023 638e bic.w r3, r3, #74448896 ; 0x4700000 + 8009bce: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8009bd2: 61ab str r3, [r5, #24] + 8009bd4: 6921 ldr r1, [r4, #16] + 8009bd6: 6863 ldr r3, [r4, #4] + 8009bd8: 69aa ldr r2, [r5, #24] + 8009bda: 430b orrs r3, r1 + 8009bdc: 4313 orrs r3, r2 + 8009bde: 69a2 ldr r2, [r4, #24] + 8009be0: 4313 orrs r3, r2 + 8009be2: 61ab str r3, [r5, #24] + 8009be4: e9d4 2302 ldrd r2, r3, [r4, #8] + 8009be8: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8009bec: 612b str r3, [r5, #16] + 8009bee: e9d4 3109 ldrd r3, r1, [r4, #36] ; 0x24 + 8009bf2: 68ea ldr r2, [r5, #12] + 8009bf4: 430b orrs r3, r1 + 8009bf6: f422 52f8 bic.w r2, r2, #7936 ; 0x1f00 + 8009bfa: 4313 orrs r3, r2 + 8009bfc: 60eb str r3, [r5, #12] + 8009bfe: 4620 mov r0, r4 + 8009c00: f7ff ffa4 bl 8009b4c <RTC_ExitInitMode> + 8009c04: b980 cbnz r0, 8009c28 <HAL_RTC_Init+0x98> + 8009c06: e9d4 1307 ldrd r1, r3, [r4, #28] + 8009c0a: 69aa ldr r2, [r5, #24] + 8009c0c: 430b orrs r3, r1 + 8009c0e: f022 4260 bic.w r2, r2, #3758096384 ; 0xe0000000 + 8009c12: 4313 orrs r3, r2 + 8009c14: 6962 ldr r2, [r4, #20] + 8009c16: 4313 orrs r3, r2 + 8009c18: 61ab str r3, [r5, #24] + 8009c1a: 23ff movs r3, #255 ; 0xff + 8009c1c: 626b str r3, [r5, #36] ; 0x24 + 8009c1e: 2301 movs r3, #1 + 8009c20: f884 302d strb.w r3, [r4, #45] ; 0x2d + 8009c24: 2000 movs r0, #0 + 8009c26: e002 b.n 8009c2e <HAL_RTC_Init+0x9e> + 8009c28: 4b02 ldr r3, [pc, #8] ; (8009c34 <HAL_RTC_Init+0xa4>) + 8009c2a: 22ff movs r2, #255 ; 0xff + 8009c2c: 625a str r2, [r3, #36] ; 0x24 + 8009c2e: bd38 pop {r3, r4, r5, pc} + 8009c30: 2001 movs r0, #1 + 8009c32: e7fc b.n 8009c2e <HAL_RTC_Init+0x9e> + 8009c34: 40002800 .word 0x40002800 + +08009c38 <RTC_ByteToBcd2>: + 8009c38: 2300 movs r3, #0 + 8009c3a: 2809 cmp r0, #9 + 8009c3c: d803 bhi.n 8009c46 <RTC_ByteToBcd2+0xe> + 8009c3e: ea40 1003 orr.w r0, r0, r3, lsl #4 + 8009c42: b2c0 uxtb r0, r0 + 8009c44: 4770 bx lr + 8009c46: 380a subs r0, #10 + 8009c48: 3301 adds r3, #1 + 8009c4a: b2c0 uxtb r0, r0 + 8009c4c: e7f5 b.n 8009c3a <RTC_ByteToBcd2+0x2> + ... + +08009c50 <HAL_RTC_SetAlarm_IT>: + 8009c50: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8009c54: f890 302c ldrb.w r3, [r0, #44] ; 0x2c + 8009c58: 2b01 cmp r3, #1 + 8009c5a: 4605 mov r5, r0 + 8009c5c: f04f 0002 mov.w r0, #2 + 8009c60: d069 beq.n 8009d36 <HAL_RTC_SetAlarm_IT+0xe6> + 8009c62: 2301 movs r3, #1 + 8009c64: f885 302c strb.w r3, [r5, #44] ; 0x2c + 8009c68: 4b4e ldr r3, [pc, #312] ; (8009da4 <HAL_RTC_SetAlarm_IT+0x154>) + 8009c6a: f885 002d strb.w r0, [r5, #45] ; 0x2d + 8009c6e: 68de ldr r6, [r3, #12] + 8009c70: f406 7640 and.w r6, r6, #768 ; 0x300 + 8009c74: f5b6 7f80 cmp.w r6, #256 ; 0x100 + 8009c78: d078 beq.n 8009d6c <HAL_RTC_SetAlarm_IT+0x11c> + 8009c7a: 694c ldr r4, [r1, #20] + 8009c7c: 7808 ldrb r0, [r1, #0] + 8009c7e: f891 9001 ldrb.w r9, [r1, #1] + 8009c82: f891 a002 ldrb.w sl, [r1, #2] + 8009c86: f891 7024 ldrb.w r7, [r1, #36] ; 0x24 + 8009c8a: 2a00 cmp r2, #0 + 8009c8c: d155 bne.n 8009d3a <HAL_RTC_SetAlarm_IT+0xea> + 8009c8e: 699b ldr r3, [r3, #24] + 8009c90: f013 0340 ands.w r3, r3, #64 ; 0x40 + 8009c94: bf08 it eq + 8009c96: 70cb strbeq r3, [r1, #3] + 8009c98: f7ff ffce bl 8009c38 <RTC_ByteToBcd2> + 8009c9c: 4680 mov r8, r0 + 8009c9e: 4648 mov r0, r9 + 8009ca0: f7ff ffca bl 8009c38 <RTC_ByteToBcd2> + 8009ca4: 4602 mov r2, r0 + 8009ca6: 4650 mov r0, sl + 8009ca8: f7ff ffc6 bl 8009c38 <RTC_ByteToBcd2> + 8009cac: 4681 mov r9, r0 + 8009cae: 4638 mov r0, r7 + 8009cb0: f7ff ffc2 bl 8009c38 <RTC_ByteToBcd2> + 8009cb4: 6a0b ldr r3, [r1, #32] + 8009cb6: 78cf ldrb r7, [r1, #3] + 8009cb8: 4323 orrs r3, r4 + 8009cba: ea43 5387 orr.w r3, r3, r7, lsl #22 + 8009cbe: ea43 0309 orr.w r3, r3, r9 + 8009cc2: ea43 4308 orr.w r3, r3, r8, lsl #16 + 8009cc6: ea43 2302 orr.w r3, r3, r2, lsl #8 + 8009cca: ea43 6300 orr.w r3, r3, r0, lsl #24 + 8009cce: 4a35 ldr r2, [pc, #212] ; (8009da4 <HAL_RTC_SetAlarm_IT+0x154>) + 8009cd0: 20ca movs r0, #202 ; 0xca + 8009cd2: 6250 str r0, [r2, #36] ; 0x24 + 8009cd4: 2053 movs r0, #83 ; 0x53 + 8009cd6: 6250 str r0, [r2, #36] ; 0x24 + 8009cd8: 6a8c ldr r4, [r1, #40] ; 0x28 + 8009cda: 6988 ldr r0, [r1, #24] + 8009cdc: f5b4 7f80 cmp.w r4, #256 ; 0x100 + 8009ce0: 6994 ldr r4, [r2, #24] + 8009ce2: d145 bne.n 8009d70 <HAL_RTC_SetAlarm_IT+0x120> + 8009ce4: f424 5488 bic.w r4, r4, #4352 ; 0x1100 + 8009ce8: 6194 str r4, [r2, #24] + 8009cea: 2401 movs r4, #1 + 8009cec: 65d4 str r4, [r2, #92] ; 0x5c + 8009cee: f5b6 7f80 cmp.w r6, #256 ; 0x100 + 8009cf2: bf09 itett eq + 8009cf4: 69cb ldreq r3, [r1, #28] + 8009cf6: 6413 strne r3, [r2, #64] ; 0x40 + 8009cf8: 4303 orreq r3, r0 + 8009cfa: 6453 streq r3, [r2, #68] ; 0x44 + 8009cfc: bf18 it ne + 8009cfe: 6450 strne r0, [r2, #68] ; 0x44 + 8009d00: 4b28 ldr r3, [pc, #160] ; (8009da4 <HAL_RTC_SetAlarm_IT+0x154>) + 8009d02: 684a ldr r2, [r1, #4] + 8009d04: 671a str r2, [r3, #112] ; 0x70 + 8009d06: 6b2a ldr r2, [r5, #48] ; 0x30 + 8009d08: f042 0201 orr.w r2, r2, #1 + 8009d0c: 632a str r2, [r5, #48] ; 0x30 + 8009d0e: 699a ldr r2, [r3, #24] + 8009d10: f442 5288 orr.w r2, r2, #4352 ; 0x1100 + 8009d14: 619a str r2, [r3, #24] + 8009d16: 4a24 ldr r2, [pc, #144] ; (8009da8 <HAL_RTC_SetAlarm_IT+0x158>) + 8009d18: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 + 8009d1c: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8009d20: f8c2 3080 str.w r3, [r2, #128] ; 0x80 + 8009d24: 4b1f ldr r3, [pc, #124] ; (8009da4 <HAL_RTC_SetAlarm_IT+0x154>) + 8009d26: 22ff movs r2, #255 ; 0xff + 8009d28: 625a str r2, [r3, #36] ; 0x24 + 8009d2a: 2000 movs r0, #0 + 8009d2c: 2301 movs r3, #1 + 8009d2e: f885 302d strb.w r3, [r5, #45] ; 0x2d + 8009d32: f885 002c strb.w r0, [r5, #44] ; 0x2c + 8009d36: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8009d3a: f1b4 3f80 cmp.w r4, #2155905152 ; 0x80808080 + 8009d3e: d007 beq.n 8009d50 <HAL_RTC_SetAlarm_IT+0x100> + 8009d40: f5b4 0f00 cmp.w r4, #8388608 ; 0x800000 + 8009d44: d004 beq.n 8009d50 <HAL_RTC_SetAlarm_IT+0x100> + 8009d46: 699b ldr r3, [r3, #24] + 8009d48: f013 0340 ands.w r3, r3, #64 ; 0x40 + 8009d4c: bf08 it eq + 8009d4e: 70cb strbeq r3, [r1, #3] + 8009d50: 6a0b ldr r3, [r1, #32] + 8009d52: 78ca ldrb r2, [r1, #3] + 8009d54: 431c orrs r4, r3 + 8009d56: ea44 040a orr.w r4, r4, sl + 8009d5a: ea44 4300 orr.w r3, r4, r0, lsl #16 + 8009d5e: ea43 2309 orr.w r3, r3, r9, lsl #8 + 8009d62: ea43 5382 orr.w r3, r3, r2, lsl #22 + 8009d66: ea43 6307 orr.w r3, r3, r7, lsl #24 + 8009d6a: e7b0 b.n 8009cce <HAL_RTC_SetAlarm_IT+0x7e> + 8009d6c: 2300 movs r3, #0 + 8009d6e: e7ae b.n 8009cce <HAL_RTC_SetAlarm_IT+0x7e> + 8009d70: f424 5408 bic.w r4, r4, #8704 ; 0x2200 + 8009d74: 6194 str r4, [r2, #24] + 8009d76: 2402 movs r4, #2 + 8009d78: 65d4 str r4, [r2, #92] ; 0x5c + 8009d7a: f5b6 7f80 cmp.w r6, #256 ; 0x100 + 8009d7e: bf09 itett eq + 8009d80: 69cb ldreq r3, [r1, #28] + 8009d82: 6493 strne r3, [r2, #72] ; 0x48 + 8009d84: 4303 orreq r3, r0 + 8009d86: 64d3 streq r3, [r2, #76] ; 0x4c + 8009d88: bf18 it ne + 8009d8a: 64d0 strne r0, [r2, #76] ; 0x4c + 8009d8c: 4b05 ldr r3, [pc, #20] ; (8009da4 <HAL_RTC_SetAlarm_IT+0x154>) + 8009d8e: 684a ldr r2, [r1, #4] + 8009d90: 675a str r2, [r3, #116] ; 0x74 + 8009d92: 6b2a ldr r2, [r5, #48] ; 0x30 + 8009d94: f042 0202 orr.w r2, r2, #2 + 8009d98: 632a str r2, [r5, #48] ; 0x30 + 8009d9a: 699a ldr r2, [r3, #24] + 8009d9c: f442 5208 orr.w r2, r2, #8704 ; 0x2200 + 8009da0: e7b8 b.n 8009d14 <HAL_RTC_SetAlarm_IT+0xc4> + 8009da2: bf00 nop + 8009da4: 40002800 .word 0x40002800 + 8009da8: 58000800 .word 0x58000800 + +08009dac <HAL_RTCEx_EnableBypassShadow>: + 8009dac: f890 202c ldrb.w r2, [r0, #44] ; 0x2c + 8009db0: 2a01 cmp r2, #1 + 8009db2: 4603 mov r3, r0 + 8009db4: f04f 0002 mov.w r0, #2 + 8009db8: d012 beq.n 8009de0 <HAL_RTCEx_EnableBypassShadow+0x34> + 8009dba: 4a0a ldr r2, [pc, #40] ; (8009de4 <HAL_RTCEx_EnableBypassShadow+0x38>) + 8009dbc: f883 002d strb.w r0, [r3, #45] ; 0x2d + 8009dc0: 21ca movs r1, #202 ; 0xca + 8009dc2: 6251 str r1, [r2, #36] ; 0x24 + 8009dc4: 2153 movs r1, #83 ; 0x53 + 8009dc6: 6251 str r1, [r2, #36] ; 0x24 + 8009dc8: 6991 ldr r1, [r2, #24] + 8009dca: f041 0120 orr.w r1, r1, #32 + 8009dce: 6191 str r1, [r2, #24] + 8009dd0: 21ff movs r1, #255 ; 0xff + 8009dd2: 6251 str r1, [r2, #36] ; 0x24 + 8009dd4: 2000 movs r0, #0 + 8009dd6: 2201 movs r2, #1 + 8009dd8: f883 202d strb.w r2, [r3, #45] ; 0x2d + 8009ddc: f883 002c strb.w r0, [r3, #44] ; 0x2c + 8009de0: 4770 bx lr + 8009de2: bf00 nop + 8009de4: 40002800 .word 0x40002800 + +08009de8 <HAL_RTCEx_SetSSRU_IT>: + 8009de8: f890 202c ldrb.w r2, [r0, #44] ; 0x2c + 8009dec: 2a01 cmp r2, #1 + 8009dee: 4603 mov r3, r0 + 8009df0: f04f 0002 mov.w r0, #2 + 8009df4: d019 beq.n 8009e2a <HAL_RTCEx_SetSSRU_IT+0x42> + 8009df6: 4a0d ldr r2, [pc, #52] ; (8009e2c <HAL_RTCEx_SetSSRU_IT+0x44>) + 8009df8: f883 002d strb.w r0, [r3, #45] ; 0x2d + 8009dfc: 21ca movs r1, #202 ; 0xca + 8009dfe: 6251 str r1, [r2, #36] ; 0x24 + 8009e00: 2153 movs r1, #83 ; 0x53 + 8009e02: 6251 str r1, [r2, #36] ; 0x24 + 8009e04: 6991 ldr r1, [r2, #24] + 8009e06: 480a ldr r0, [pc, #40] ; (8009e30 <HAL_RTCEx_SetSSRU_IT+0x48>) + 8009e08: f041 0180 orr.w r1, r1, #128 ; 0x80 + 8009e0c: 6191 str r1, [r2, #24] + 8009e0e: f8d0 1080 ldr.w r1, [r0, #128] ; 0x80 + 8009e12: f441 2180 orr.w r1, r1, #262144 ; 0x40000 + 8009e16: f8c0 1080 str.w r1, [r0, #128] ; 0x80 + 8009e1a: 21ff movs r1, #255 ; 0xff + 8009e1c: 6251 str r1, [r2, #36] ; 0x24 + 8009e1e: 2000 movs r0, #0 + 8009e20: 2201 movs r2, #1 + 8009e22: f883 202d strb.w r2, [r3, #45] ; 0x2d + 8009e26: f883 002c strb.w r0, [r3, #44] ; 0x2c + 8009e2a: 4770 bx lr + 8009e2c: 40002800 .word 0x40002800 + 8009e30: 58000800 .word 0x58000800 + +08009e34 <HAL_RTCEx_SSRUIRQHandler>: + 8009e34: 4b06 ldr r3, [pc, #24] ; (8009e50 <HAL_RTCEx_SSRUIRQHandler+0x1c>) + 8009e36: 6d5a ldr r2, [r3, #84] ; 0x54 + 8009e38: 0652 lsls r2, r2, #25 + 8009e3a: b510 push {r4, lr} + 8009e3c: 4604 mov r4, r0 + 8009e3e: d503 bpl.n 8009e48 <HAL_RTCEx_SSRUIRQHandler+0x14> + 8009e40: 2240 movs r2, #64 ; 0x40 + 8009e42: 65da str r2, [r3, #92] ; 0x5c + 8009e44: f7f9 f822 bl 8002e8c <HAL_RTCEx_SSRUEventCallback> + 8009e48: 2301 movs r3, #1 + 8009e4a: f884 302d strb.w r3, [r4, #45] ; 0x2d + 8009e4e: bd10 pop {r4, pc} + 8009e50: 40002800 .word 0x40002800 + +08009e54 <HAL_RTCEx_AlarmBEventCallback>: + 8009e54: 4770 bx lr + +08009e56 <HAL_RTCEx_BKUPWrite>: + 8009e56: 0089 lsls r1, r1, #2 + 8009e58: f101 4180 add.w r1, r1, #1073741824 ; 0x40000000 + 8009e5c: f501 4131 add.w r1, r1, #45312 ; 0xb100 + 8009e60: 600a str r2, [r1, #0] + 8009e62: 4770 bx lr + +08009e64 <HAL_RTCEx_BKUPRead>: + 8009e64: 0089 lsls r1, r1, #2 + 8009e66: f101 4180 add.w r1, r1, #1073741824 ; 0x40000000 + 8009e6a: f501 4131 add.w r1, r1, #45312 ; 0xb100 + 8009e6e: 6808 ldr r0, [r1, #0] + 8009e70: 4770 bx lr + ... + +08009e74 <LL_PWR_UnselectSUBGHZSPI_NSS>: + 8009e74: 4a03 ldr r2, [pc, #12] ; (8009e84 <LL_PWR_UnselectSUBGHZSPI_NSS+0x10>) + 8009e76: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8009e7a: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8009e7e: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8009e82: 4770 bx lr + 8009e84: 58000400 .word 0x58000400 + +08009e88 <LL_PWR_SelectSUBGHZSPI_NSS>: + 8009e88: 4a03 ldr r2, [pc, #12] ; (8009e98 <LL_PWR_SelectSUBGHZSPI_NSS+0x10>) + 8009e8a: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8009e8e: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8009e92: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8009e96: 4770 bx lr + 8009e98: 58000400 .word 0x58000400 + +08009e9c <SUBGHZSPI_Init>: + 8009e9c: 4b07 ldr r3, [pc, #28] ; (8009ebc <SUBGHZSPI_Init+0x20>) + 8009e9e: 681a ldr r2, [r3, #0] + 8009ea0: f022 0240 bic.w r2, r2, #64 ; 0x40 + 8009ea4: 601a str r2, [r3, #0] + 8009ea6: f440 7041 orr.w r0, r0, #772 ; 0x304 + 8009eaa: f44f 52b8 mov.w r2, #5888 ; 0x1700 + 8009eae: 6018 str r0, [r3, #0] + 8009eb0: 605a str r2, [r3, #4] + 8009eb2: 681a ldr r2, [r3, #0] + 8009eb4: f042 0240 orr.w r2, r2, #64 ; 0x40 + 8009eb8: 601a str r2, [r3, #0] + 8009eba: 4770 bx lr + 8009ebc: 58010000 .word 0x58010000 + +08009ec0 <HAL_SUBGHZ_Init>: + 8009ec0: b537 push {r0, r1, r2, r4, r5, lr} + 8009ec2: 4605 mov r5, r0 + 8009ec4: 2800 cmp r0, #0 + 8009ec6: d04e beq.n 8009f66 <HAL_SUBGHZ_Init+0xa6> + 8009ec8: 7983 ldrb r3, [r0, #6] + 8009eca: f003 04ff and.w r4, r3, #255 ; 0xff + 8009ece: b16b cbz r3, 8009eec <HAL_SUBGHZ_Init+0x2c> + 8009ed0: 2c03 cmp r4, #3 + 8009ed2: d00b beq.n 8009eec <HAL_SUBGHZ_Init+0x2c> + 8009ed4: 4b25 ldr r3, [pc, #148] ; (8009f6c <HAL_SUBGHZ_Init+0xac>) + 8009ed6: f44f 6200 mov.w r2, #2048 ; 0x800 + 8009eda: 619a str r2, [r3, #24] + 8009edc: 6828 ldr r0, [r5, #0] + 8009ede: f7ff ffdd bl 8009e9c <SUBGHZSPI_Init> + 8009ee2: 2400 movs r4, #0 + 8009ee4: 2301 movs r3, #1 + 8009ee6: 712b strb r3, [r5, #4] + 8009ee8: 60ac str r4, [r5, #8] + 8009eea: e02f b.n 8009f4c <HAL_SUBGHZ_Init+0x8c> + 8009eec: 2300 movs r3, #0 + 8009eee: 716b strb r3, [r5, #5] + 8009ef0: 4628 mov r0, r5 + 8009ef2: f7f8 fd65 bl 80029c0 <HAL_SUBGHZ_MspInit> + 8009ef6: 4a1e ldr r2, [pc, #120] ; (8009f70 <HAL_SUBGHZ_Init+0xb0>) + 8009ef8: f8d2 3090 ldr.w r3, [r2, #144] ; 0x90 + 8009efc: f443 5380 orr.w r3, r3, #4096 ; 0x1000 + 8009f00: f8c2 3090 str.w r3, [r2, #144] ; 0x90 + 8009f04: 2c00 cmp r4, #0 + 8009f06: d1e5 bne.n 8009ed4 <HAL_SUBGHZ_Init+0x14> + 8009f08: 2302 movs r3, #2 + 8009f0a: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8009f0e: 71ab strb r3, [r5, #6] + 8009f10: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 8009f14: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8009f18: f8c2 3094 str.w r3, [r2, #148] ; 0x94 + 8009f1c: 4b15 ldr r3, [pc, #84] ; (8009f74 <HAL_SUBGHZ_Init+0xb4>) + 8009f1e: 681b ldr r3, [r3, #0] + 8009f20: 211c movs r1, #28 + 8009f22: 434b muls r3, r1 + 8009f24: 0cdb lsrs r3, r3, #19 + 8009f26: 2164 movs r1, #100 ; 0x64 + 8009f28: 434b muls r3, r1 + 8009f2a: 9301 str r3, [sp, #4] + 8009f2c: 9b01 ldr r3, [sp, #4] + 8009f2e: b993 cbnz r3, 8009f56 <HAL_SUBGHZ_Init+0x96> + 8009f30: 2401 movs r4, #1 + 8009f32: 60ac str r4, [r5, #8] + 8009f34: f7ff ff9e bl 8009e74 <LL_PWR_UnselectSUBGHZSPI_NSS> + 8009f38: 4b0c ldr r3, [pc, #48] ; (8009f6c <HAL_SUBGHZ_Init+0xac>) + 8009f3a: 689a ldr r2, [r3, #8] + 8009f3c: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 8009f40: 609a str r2, [r3, #8] + 8009f42: f44f 6200 mov.w r2, #2048 ; 0x800 + 8009f46: 619a str r2, [r3, #24] + 8009f48: 2c00 cmp r4, #0 + 8009f4a: d0c7 beq.n 8009edc <HAL_SUBGHZ_Init+0x1c> + 8009f4c: 2301 movs r3, #1 + 8009f4e: 71ab strb r3, [r5, #6] + 8009f50: 4620 mov r0, r4 + 8009f52: b003 add sp, #12 + 8009f54: bd30 pop {r4, r5, pc} + 8009f56: 9b01 ldr r3, [sp, #4] + 8009f58: 3b01 subs r3, #1 + 8009f5a: 9301 str r3, [sp, #4] + 8009f5c: f8d2 3094 ldr.w r3, [r2, #148] ; 0x94 + 8009f60: 045b lsls r3, r3, #17 + 8009f62: d4e3 bmi.n 8009f2c <HAL_SUBGHZ_Init+0x6c> + 8009f64: e7e6 b.n 8009f34 <HAL_SUBGHZ_Init+0x74> + 8009f66: 2401 movs r4, #1 + 8009f68: e7f2 b.n 8009f50 <HAL_SUBGHZ_Init+0x90> + 8009f6a: bf00 nop + 8009f6c: 58000400 .word 0x58000400 + 8009f70: 58000800 .word 0x58000800 + 8009f74: 20000828 .word 0x20000828 + +08009f78 <SUBGHZSPI_Transmit>: + 8009f78: b537 push {r0, r1, r2, r4, r5, lr} + 8009f7a: 4d17 ldr r5, [pc, #92] ; (8009fd8 <SUBGHZSPI_Transmit+0x60>) + 8009f7c: 682b ldr r3, [r5, #0] + 8009f7e: 4602 mov r2, r0 + 8009f80: 201c movs r0, #28 + 8009f82: 4343 muls r3, r0 + 8009f84: 0cdb lsrs r3, r3, #19 + 8009f86: 2064 movs r0, #100 ; 0x64 + 8009f88: 4343 muls r3, r0 + 8009f8a: 4814 ldr r0, [pc, #80] ; (8009fdc <SUBGHZSPI_Transmit+0x64>) + 8009f8c: 9301 str r3, [sp, #4] + 8009f8e: 9b01 ldr r3, [sp, #4] + 8009f90: b993 cbnz r3, 8009fb8 <SUBGHZSPI_Transmit+0x40> + 8009f92: 2001 movs r0, #1 + 8009f94: 6090 str r0, [r2, #8] + 8009f96: 4c11 ldr r4, [pc, #68] ; (8009fdc <SUBGHZSPI_Transmit+0x64>) + 8009f98: 7321 strb r1, [r4, #12] + 8009f9a: 682b ldr r3, [r5, #0] + 8009f9c: 211c movs r1, #28 + 8009f9e: 434b muls r3, r1 + 8009fa0: 0cdb lsrs r3, r3, #19 + 8009fa2: 2164 movs r1, #100 ; 0x64 + 8009fa4: 434b muls r3, r1 + 8009fa6: 9301 str r3, [sp, #4] + 8009fa8: 9b01 ldr r3, [sp, #4] + 8009faa: b96b cbnz r3, 8009fc8 <SUBGHZSPI_Transmit+0x50> + 8009fac: 2001 movs r0, #1 + 8009fae: 6090 str r0, [r2, #8] + 8009fb0: 4b0a ldr r3, [pc, #40] ; (8009fdc <SUBGHZSPI_Transmit+0x64>) + 8009fb2: 68db ldr r3, [r3, #12] + 8009fb4: b003 add sp, #12 + 8009fb6: bd30 pop {r4, r5, pc} + 8009fb8: 9b01 ldr r3, [sp, #4] + 8009fba: 3b01 subs r3, #1 + 8009fbc: 9301 str r3, [sp, #4] + 8009fbe: 6883 ldr r3, [r0, #8] + 8009fc0: 079c lsls r4, r3, #30 + 8009fc2: d5e4 bpl.n 8009f8e <SUBGHZSPI_Transmit+0x16> + 8009fc4: 2000 movs r0, #0 + 8009fc6: e7e6 b.n 8009f96 <SUBGHZSPI_Transmit+0x1e> + 8009fc8: 9b01 ldr r3, [sp, #4] + 8009fca: 3b01 subs r3, #1 + 8009fcc: 9301 str r3, [sp, #4] + 8009fce: 68a3 ldr r3, [r4, #8] + 8009fd0: 07db lsls r3, r3, #31 + 8009fd2: d5e9 bpl.n 8009fa8 <SUBGHZSPI_Transmit+0x30> + 8009fd4: e7ec b.n 8009fb0 <SUBGHZSPI_Transmit+0x38> + 8009fd6: bf00 nop + 8009fd8: 20000828 .word 0x20000828 + 8009fdc: 58010000 .word 0x58010000 + +08009fe0 <SUBGHZSPI_Receive>: + 8009fe0: b537 push {r0, r1, r2, r4, r5, lr} + 8009fe2: 4d18 ldr r5, [pc, #96] ; (800a044 <SUBGHZSPI_Receive+0x64>) + 8009fe4: 682b ldr r3, [r5, #0] + 8009fe6: 4602 mov r2, r0 + 8009fe8: 201c movs r0, #28 + 8009fea: 4343 muls r3, r0 + 8009fec: 0cdb lsrs r3, r3, #19 + 8009fee: 2064 movs r0, #100 ; 0x64 + 8009ff0: 4343 muls r3, r0 + 8009ff2: 4815 ldr r0, [pc, #84] ; (800a048 <SUBGHZSPI_Receive+0x68>) + 8009ff4: 9301 str r3, [sp, #4] + 8009ff6: 9b01 ldr r3, [sp, #4] + 8009ff8: b9a3 cbnz r3, 800a024 <SUBGHZSPI_Receive+0x44> + 8009ffa: 2001 movs r0, #1 + 8009ffc: 6090 str r0, [r2, #8] + 8009ffe: 4c12 ldr r4, [pc, #72] ; (800a048 <SUBGHZSPI_Receive+0x68>) + 800a000: 23ff movs r3, #255 ; 0xff + 800a002: 7323 strb r3, [r4, #12] + 800a004: 682b ldr r3, [r5, #0] + 800a006: 251c movs r5, #28 + 800a008: 436b muls r3, r5 + 800a00a: 0cdb lsrs r3, r3, #19 + 800a00c: 2564 movs r5, #100 ; 0x64 + 800a00e: 436b muls r3, r5 + 800a010: 9301 str r3, [sp, #4] + 800a012: 9b01 ldr r3, [sp, #4] + 800a014: b973 cbnz r3, 800a034 <SUBGHZSPI_Receive+0x54> + 800a016: 2001 movs r0, #1 + 800a018: 6090 str r0, [r2, #8] + 800a01a: 4b0b ldr r3, [pc, #44] ; (800a048 <SUBGHZSPI_Receive+0x68>) + 800a01c: 68db ldr r3, [r3, #12] + 800a01e: 700b strb r3, [r1, #0] + 800a020: b003 add sp, #12 + 800a022: bd30 pop {r4, r5, pc} + 800a024: 9b01 ldr r3, [sp, #4] + 800a026: 3b01 subs r3, #1 + 800a028: 9301 str r3, [sp, #4] + 800a02a: 6883 ldr r3, [r0, #8] + 800a02c: 079c lsls r4, r3, #30 + 800a02e: d5e2 bpl.n 8009ff6 <SUBGHZSPI_Receive+0x16> + 800a030: 2000 movs r0, #0 + 800a032: e7e4 b.n 8009ffe <SUBGHZSPI_Receive+0x1e> + 800a034: 9b01 ldr r3, [sp, #4] + 800a036: 3b01 subs r3, #1 + 800a038: 9301 str r3, [sp, #4] + 800a03a: 68a3 ldr r3, [r4, #8] + 800a03c: 07db lsls r3, r3, #31 + 800a03e: d5e8 bpl.n 800a012 <SUBGHZSPI_Receive+0x32> + 800a040: e7eb b.n 800a01a <SUBGHZSPI_Receive+0x3a> + 800a042: bf00 nop + 800a044: 20000828 .word 0x20000828 + 800a048: 58010000 .word 0x58010000 + +0800a04c <SUBGHZ_WaitOnBusy>: + 800a04c: 4b0f ldr r3, [pc, #60] ; (800a08c <SUBGHZ_WaitOnBusy+0x40>) + 800a04e: b513 push {r0, r1, r4, lr} + 800a050: 681b ldr r3, [r3, #0] + 800a052: 4c0f ldr r4, [pc, #60] ; (800a090 <SUBGHZ_WaitOnBusy+0x44>) + 800a054: 2218 movs r2, #24 + 800a056: 4353 muls r3, r2 + 800a058: 0d1b lsrs r3, r3, #20 + 800a05a: 2264 movs r2, #100 ; 0x64 + 800a05c: 4353 muls r3, r2 + 800a05e: 4601 mov r1, r0 + 800a060: 9301 str r3, [sp, #4] + 800a062: 6962 ldr r2, [r4, #20] + 800a064: 9b01 ldr r3, [sp, #4] + 800a066: f002 0204 and.w r2, r2, #4 + 800a06a: b923 cbnz r3, 800a076 <SUBGHZ_WaitOnBusy+0x2a> + 800a06c: 2302 movs r3, #2 + 800a06e: 608b str r3, [r1, #8] + 800a070: 2001 movs r0, #1 + 800a072: b002 add sp, #8 + 800a074: bd10 pop {r4, pc} + 800a076: 9b01 ldr r3, [sp, #4] + 800a078: 3b01 subs r3, #1 + 800a07a: 9301 str r3, [sp, #4] + 800a07c: 6960 ldr r0, [r4, #20] + 800a07e: f010 0002 ands.w r0, r0, #2 + 800a082: d0f6 beq.n 800a072 <SUBGHZ_WaitOnBusy+0x26> + 800a084: 2a00 cmp r2, #0 + 800a086: d1ec bne.n 800a062 <SUBGHZ_WaitOnBusy+0x16> + 800a088: 4610 mov r0, r2 + 800a08a: e7f2 b.n 800a072 <SUBGHZ_WaitOnBusy+0x26> + 800a08c: 20000828 .word 0x20000828 + 800a090: 58000400 .word 0x58000400 + +0800a094 <SUBGHZ_CheckDeviceReady>: + 800a094: b507 push {r0, r1, r2, lr} + 800a096: 7903 ldrb r3, [r0, #4] + 800a098: 2b01 cmp r3, #1 + 800a09a: d10f bne.n 800a0bc <SUBGHZ_CheckDeviceReady+0x28> + 800a09c: 4b0a ldr r3, [pc, #40] ; (800a0c8 <SUBGHZ_CheckDeviceReady+0x34>) + 800a09e: 681b ldr r3, [r3, #0] + 800a0a0: 2218 movs r2, #24 + 800a0a2: 4353 muls r3, r2 + 800a0a4: 0c1b lsrs r3, r3, #16 + 800a0a6: 9301 str r3, [sp, #4] + 800a0a8: f7ff feee bl 8009e88 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a0ac: 9b01 ldr r3, [sp, #4] + 800a0ae: 3b01 subs r3, #1 + 800a0b0: 9301 str r3, [sp, #4] + 800a0b2: 9b01 ldr r3, [sp, #4] + 800a0b4: 2b00 cmp r3, #0 + 800a0b6: d1f9 bne.n 800a0ac <SUBGHZ_CheckDeviceReady+0x18> + 800a0b8: f7ff fedc bl 8009e74 <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a0bc: b003 add sp, #12 + 800a0be: f85d eb04 ldr.w lr, [sp], #4 + 800a0c2: f7ff bfc3 b.w 800a04c <SUBGHZ_WaitOnBusy> + 800a0c6: bf00 nop + 800a0c8: 20000828 .word 0x20000828 + +0800a0cc <HAL_SUBGHZ_WriteRegisters>: + 800a0cc: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a0ce: 461e mov r6, r3 + 800a0d0: 7983 ldrb r3, [r0, #6] + 800a0d2: 2b01 cmp r3, #1 + 800a0d4: 4615 mov r5, r2 + 800a0d6: 4604 mov r4, r0 + 800a0d8: 460f mov r7, r1 + 800a0da: b2da uxtb r2, r3 + 800a0dc: d12d bne.n 800a13a <HAL_SUBGHZ_WriteRegisters+0x6e> + 800a0de: 7943 ldrb r3, [r0, #5] + 800a0e0: 2b01 cmp r3, #1 + 800a0e2: d02a beq.n 800a13a <HAL_SUBGHZ_WriteRegisters+0x6e> + 800a0e4: 2302 movs r3, #2 + 800a0e6: 7142 strb r2, [r0, #5] + 800a0e8: 7183 strb r3, [r0, #6] + 800a0ea: f7ff ffd3 bl 800a094 <SUBGHZ_CheckDeviceReady> + 800a0ee: 210d movs r1, #13 + 800a0f0: 4620 mov r0, r4 + 800a0f2: f7ff fec9 bl 8009e88 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a0f6: f7ff ff3f bl 8009f78 <SUBGHZSPI_Transmit> + 800a0fa: 0a39 lsrs r1, r7, #8 + 800a0fc: 4620 mov r0, r4 + 800a0fe: f7ff ff3b bl 8009f78 <SUBGHZSPI_Transmit> + 800a102: b2f9 uxtb r1, r7 + 800a104: 4620 mov r0, r4 + 800a106: f7ff ff37 bl 8009f78 <SUBGHZSPI_Transmit> + 800a10a: 442e add r6, r5 + 800a10c: 42b5 cmp r5, r6 + 800a10e: d10e bne.n 800a12e <HAL_SUBGHZ_WriteRegisters+0x62> + 800a110: 4620 mov r0, r4 + 800a112: f7ff feaf bl 8009e74 <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a116: f7ff ff99 bl 800a04c <SUBGHZ_WaitOnBusy> + 800a11a: 68a0 ldr r0, [r4, #8] + 800a11c: 2301 movs r3, #1 + 800a11e: 3800 subs r0, #0 + 800a120: 71a3 strb r3, [r4, #6] + 800a122: f04f 0300 mov.w r3, #0 + 800a126: bf18 it ne + 800a128: 2001 movne r0, #1 + 800a12a: 7163 strb r3, [r4, #5] + 800a12c: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a12e: f815 1b01 ldrb.w r1, [r5], #1 + 800a132: 4620 mov r0, r4 + 800a134: f7ff ff20 bl 8009f78 <SUBGHZSPI_Transmit> + 800a138: e7e8 b.n 800a10c <HAL_SUBGHZ_WriteRegisters+0x40> + 800a13a: 2002 movs r0, #2 + 800a13c: e7f6 b.n 800a12c <HAL_SUBGHZ_WriteRegisters+0x60> + +0800a13e <HAL_SUBGHZ_ReadRegisters>: + 800a13e: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a140: 461e mov r6, r3 + 800a142: 7983 ldrb r3, [r0, #6] + 800a144: 2b01 cmp r3, #1 + 800a146: 4615 mov r5, r2 + 800a148: 4604 mov r4, r0 + 800a14a: 460f mov r7, r1 + 800a14c: b2da uxtb r2, r3 + 800a14e: d12f bne.n 800a1b0 <HAL_SUBGHZ_ReadRegisters+0x72> + 800a150: 7943 ldrb r3, [r0, #5] + 800a152: 2b01 cmp r3, #1 + 800a154: d02c beq.n 800a1b0 <HAL_SUBGHZ_ReadRegisters+0x72> + 800a156: 7142 strb r2, [r0, #5] + 800a158: f7ff ff9c bl 800a094 <SUBGHZ_CheckDeviceReady> + 800a15c: 211d movs r1, #29 + 800a15e: 4620 mov r0, r4 + 800a160: f7ff fe92 bl 8009e88 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a164: f7ff ff08 bl 8009f78 <SUBGHZSPI_Transmit> + 800a168: 0a39 lsrs r1, r7, #8 + 800a16a: 4620 mov r0, r4 + 800a16c: f7ff ff04 bl 8009f78 <SUBGHZSPI_Transmit> + 800a170: b2f9 uxtb r1, r7 + 800a172: 4620 mov r0, r4 + 800a174: f7ff ff00 bl 8009f78 <SUBGHZSPI_Transmit> + 800a178: 2100 movs r1, #0 + 800a17a: 4620 mov r0, r4 + 800a17c: f7ff fefc bl 8009f78 <SUBGHZSPI_Transmit> + 800a180: 442e add r6, r5 + 800a182: 42b5 cmp r5, r6 + 800a184: d10e bne.n 800a1a4 <HAL_SUBGHZ_ReadRegisters+0x66> + 800a186: 4620 mov r0, r4 + 800a188: f7ff fe74 bl 8009e74 <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a18c: f7ff ff5e bl 800a04c <SUBGHZ_WaitOnBusy> + 800a190: 68a0 ldr r0, [r4, #8] + 800a192: 2301 movs r3, #1 + 800a194: 3800 subs r0, #0 + 800a196: 71a3 strb r3, [r4, #6] + 800a198: f04f 0300 mov.w r3, #0 + 800a19c: bf18 it ne + 800a19e: 2001 movne r0, #1 + 800a1a0: 7163 strb r3, [r4, #5] + 800a1a2: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a1a4: 4629 mov r1, r5 + 800a1a6: 4620 mov r0, r4 + 800a1a8: f7ff ff1a bl 8009fe0 <SUBGHZSPI_Receive> + 800a1ac: 3501 adds r5, #1 + 800a1ae: e7e8 b.n 800a182 <HAL_SUBGHZ_ReadRegisters+0x44> + 800a1b0: 2002 movs r0, #2 + 800a1b2: e7f6 b.n 800a1a2 <HAL_SUBGHZ_ReadRegisters+0x64> + +0800a1b4 <HAL_SUBGHZ_ExecSetCmd>: + 800a1b4: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a1b6: 461f mov r7, r3 + 800a1b8: 7983 ldrb r3, [r0, #6] + 800a1ba: 2b01 cmp r3, #1 + 800a1bc: 4615 mov r5, r2 + 800a1be: 4604 mov r4, r0 + 800a1c0: 460e mov r6, r1 + 800a1c2: b2da uxtb r2, r3 + 800a1c4: d12c bne.n 800a220 <HAL_SUBGHZ_ExecSetCmd+0x6c> + 800a1c6: 7943 ldrb r3, [r0, #5] + 800a1c8: 2b01 cmp r3, #1 + 800a1ca: d029 beq.n 800a220 <HAL_SUBGHZ_ExecSetCmd+0x6c> + 800a1cc: 7142 strb r2, [r0, #5] + 800a1ce: f7ff ff61 bl 800a094 <SUBGHZ_CheckDeviceReady> + 800a1d2: f006 03ef and.w r3, r6, #239 ; 0xef + 800a1d6: f1a3 0284 sub.w r2, r3, #132 ; 0x84 + 800a1da: 4253 negs r3, r2 + 800a1dc: 4153 adcs r3, r2 + 800a1de: 7123 strb r3, [r4, #4] + 800a1e0: 4631 mov r1, r6 + 800a1e2: 4620 mov r0, r4 + 800a1e4: f7ff fe50 bl 8009e88 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a1e8: f7ff fec6 bl 8009f78 <SUBGHZSPI_Transmit> + 800a1ec: 442f add r7, r5 + 800a1ee: 42af cmp r7, r5 + 800a1f0: d110 bne.n 800a214 <HAL_SUBGHZ_ExecSetCmd+0x60> + 800a1f2: f7ff fe3f bl 8009e74 <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a1f6: 2e84 cmp r6, #132 ; 0x84 + 800a1f8: d002 beq.n 800a200 <HAL_SUBGHZ_ExecSetCmd+0x4c> + 800a1fa: 4620 mov r0, r4 + 800a1fc: f7ff ff26 bl 800a04c <SUBGHZ_WaitOnBusy> + 800a200: 68a0 ldr r0, [r4, #8] + 800a202: 2301 movs r3, #1 + 800a204: 3800 subs r0, #0 + 800a206: 71a3 strb r3, [r4, #6] + 800a208: f04f 0300 mov.w r3, #0 + 800a20c: bf18 it ne + 800a20e: 2001 movne r0, #1 + 800a210: 7163 strb r3, [r4, #5] + 800a212: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a214: f815 1b01 ldrb.w r1, [r5], #1 + 800a218: 4620 mov r0, r4 + 800a21a: f7ff fead bl 8009f78 <SUBGHZSPI_Transmit> + 800a21e: e7e6 b.n 800a1ee <HAL_SUBGHZ_ExecSetCmd+0x3a> + 800a220: 2002 movs r0, #2 + 800a222: e7f6 b.n 800a212 <HAL_SUBGHZ_ExecSetCmd+0x5e> + +0800a224 <HAL_SUBGHZ_ExecGetCmd>: + 800a224: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a226: 461e mov r6, r3 + 800a228: 7983 ldrb r3, [r0, #6] + 800a22a: 2b01 cmp r3, #1 + 800a22c: 4615 mov r5, r2 + 800a22e: 4604 mov r4, r0 + 800a230: 460f mov r7, r1 + 800a232: b2da uxtb r2, r3 + 800a234: d127 bne.n 800a286 <HAL_SUBGHZ_ExecGetCmd+0x62> + 800a236: 7943 ldrb r3, [r0, #5] + 800a238: 2b01 cmp r3, #1 + 800a23a: d024 beq.n 800a286 <HAL_SUBGHZ_ExecGetCmd+0x62> + 800a23c: 7142 strb r2, [r0, #5] + 800a23e: f7ff ff29 bl 800a094 <SUBGHZ_CheckDeviceReady> + 800a242: 4639 mov r1, r7 + 800a244: 4620 mov r0, r4 + 800a246: f7ff fe1f bl 8009e88 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a24a: f7ff fe95 bl 8009f78 <SUBGHZSPI_Transmit> + 800a24e: 2100 movs r1, #0 + 800a250: 4620 mov r0, r4 + 800a252: f7ff fe91 bl 8009f78 <SUBGHZSPI_Transmit> + 800a256: 442e add r6, r5 + 800a258: 42b5 cmp r5, r6 + 800a25a: d10e bne.n 800a27a <HAL_SUBGHZ_ExecGetCmd+0x56> + 800a25c: 4620 mov r0, r4 + 800a25e: f7ff fe09 bl 8009e74 <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a262: f7ff fef3 bl 800a04c <SUBGHZ_WaitOnBusy> + 800a266: 68a0 ldr r0, [r4, #8] + 800a268: 2301 movs r3, #1 + 800a26a: 3800 subs r0, #0 + 800a26c: 71a3 strb r3, [r4, #6] + 800a26e: f04f 0300 mov.w r3, #0 + 800a272: bf18 it ne + 800a274: 2001 movne r0, #1 + 800a276: 7163 strb r3, [r4, #5] + 800a278: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a27a: 4629 mov r1, r5 + 800a27c: 4620 mov r0, r4 + 800a27e: f7ff feaf bl 8009fe0 <SUBGHZSPI_Receive> + 800a282: 3501 adds r5, #1 + 800a284: e7e8 b.n 800a258 <HAL_SUBGHZ_ExecGetCmd+0x34> + 800a286: 2002 movs r0, #2 + 800a288: e7f6 b.n 800a278 <HAL_SUBGHZ_ExecGetCmd+0x54> + +0800a28a <HAL_SUBGHZ_IRQHandler>: + 800a28a: b537 push {r0, r1, r2, r4, r5, lr} + 800a28c: 2300 movs r3, #0 + 800a28e: f8ad 3004 strh.w r3, [sp, #4] + 800a292: aa01 add r2, sp, #4 + 800a294: 2302 movs r3, #2 + 800a296: 2112 movs r1, #18 + 800a298: 4605 mov r5, r0 + 800a29a: f7ff ffc3 bl 800a224 <HAL_SUBGHZ_ExecGetCmd> + 800a29e: f8bd 4004 ldrh.w r4, [sp, #4] + 800a2a2: 2302 movs r3, #2 + 800a2a4: ba64 rev16 r4, r4 + 800a2a6: aa01 add r2, sp, #4 + 800a2a8: b2a4 uxth r4, r4 + 800a2aa: 4619 mov r1, r3 + 800a2ac: 4628 mov r0, r5 + 800a2ae: f7ff ff81 bl 800a1b4 <HAL_SUBGHZ_ExecSetCmd> + 800a2b2: 07e2 lsls r2, r4, #31 + 800a2b4: d502 bpl.n 800a2bc <HAL_SUBGHZ_IRQHandler+0x32> + 800a2b6: 4628 mov r0, r5 + 800a2b8: f009 f9f6 bl 80136a8 <HAL_SUBGHZ_TxCpltCallback> + 800a2bc: 07a3 lsls r3, r4, #30 + 800a2be: d502 bpl.n 800a2c6 <HAL_SUBGHZ_IRQHandler+0x3c> + 800a2c0: 4628 mov r0, r5 + 800a2c2: f009 f9f7 bl 80136b4 <HAL_SUBGHZ_RxCpltCallback> + 800a2c6: 0760 lsls r0, r4, #29 + 800a2c8: d502 bpl.n 800a2d0 <HAL_SUBGHZ_IRQHandler+0x46> + 800a2ca: 4628 mov r0, r5 + 800a2cc: f009 fa1c bl 8013708 <HAL_SUBGHZ_PreambleDetectedCallback> + 800a2d0: 0721 lsls r1, r4, #28 + 800a2d2: d502 bpl.n 800a2da <HAL_SUBGHZ_IRQHandler+0x50> + 800a2d4: 4628 mov r0, r5 + 800a2d6: f009 fa1d bl 8013714 <HAL_SUBGHZ_SyncWordValidCallback> + 800a2da: 06e2 lsls r2, r4, #27 + 800a2dc: d502 bpl.n 800a2e4 <HAL_SUBGHZ_IRQHandler+0x5a> + 800a2de: 4628 mov r0, r5 + 800a2e0: f009 fa1e bl 8013720 <HAL_SUBGHZ_HeaderValidCallback> + 800a2e4: 06a3 lsls r3, r4, #26 + 800a2e6: d502 bpl.n 800a2ee <HAL_SUBGHZ_IRQHandler+0x64> + 800a2e8: 4628 mov r0, r5 + 800a2ea: f009 fa07 bl 80136fc <HAL_SUBGHZ_HeaderErrorCallback> + 800a2ee: 0660 lsls r0, r4, #25 + 800a2f0: d502 bpl.n 800a2f8 <HAL_SUBGHZ_IRQHandler+0x6e> + 800a2f2: 4628 mov r0, r5 + 800a2f4: f009 f9e4 bl 80136c0 <HAL_SUBGHZ_CRCErrorCallback> + 800a2f8: 0621 lsls r1, r4, #24 + 800a2fa: d506 bpl.n 800a30a <HAL_SUBGHZ_IRQHandler+0x80> + 800a2fc: f414 7180 ands.w r1, r4, #256 ; 0x100 + 800a300: bf18 it ne + 800a302: 2101 movne r1, #1 + 800a304: 4628 mov r0, r5 + 800a306: f009 f9e1 bl 80136cc <HAL_SUBGHZ_CADStatusCallback> + 800a30a: 05a2 lsls r2, r4, #22 + 800a30c: d502 bpl.n 800a314 <HAL_SUBGHZ_IRQHandler+0x8a> + 800a30e: 4628 mov r0, r5 + 800a310: f009 f9ec bl 80136ec <HAL_SUBGHZ_RxTxTimeoutCallback> + 800a314: 0463 lsls r3, r4, #17 + 800a316: d502 bpl.n 800a31e <HAL_SUBGHZ_IRQHandler+0x94> + 800a318: 4628 mov r0, r5 + 800a31a: f009 fa07 bl 801372c <HAL_SUBGHZ_LrFhssHopCallback> + 800a31e: b003 add sp, #12 + 800a320: bd30 pop {r4, r5, pc} + +0800a322 <HAL_SUBGHZ_WriteBuffer>: + 800a322: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a324: 461e mov r6, r3 + 800a326: 7983 ldrb r3, [r0, #6] + 800a328: 2b01 cmp r3, #1 + 800a32a: 4615 mov r5, r2 + 800a32c: 4604 mov r4, r0 + 800a32e: 460f mov r7, r1 + 800a330: b2da uxtb r2, r3 + 800a332: d127 bne.n 800a384 <HAL_SUBGHZ_WriteBuffer+0x62> + 800a334: 7943 ldrb r3, [r0, #5] + 800a336: 2b01 cmp r3, #1 + 800a338: d024 beq.n 800a384 <HAL_SUBGHZ_WriteBuffer+0x62> + 800a33a: 7142 strb r2, [r0, #5] + 800a33c: f7ff feaa bl 800a094 <SUBGHZ_CheckDeviceReady> + 800a340: 210e movs r1, #14 + 800a342: 4620 mov r0, r4 + 800a344: f7ff fda0 bl 8009e88 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a348: f7ff fe16 bl 8009f78 <SUBGHZSPI_Transmit> + 800a34c: 4639 mov r1, r7 + 800a34e: 4620 mov r0, r4 + 800a350: f7ff fe12 bl 8009f78 <SUBGHZSPI_Transmit> + 800a354: 442e add r6, r5 + 800a356: 42b5 cmp r5, r6 + 800a358: d10e bne.n 800a378 <HAL_SUBGHZ_WriteBuffer+0x56> + 800a35a: 4620 mov r0, r4 + 800a35c: f7ff fd8a bl 8009e74 <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a360: f7ff fe74 bl 800a04c <SUBGHZ_WaitOnBusy> + 800a364: 68a0 ldr r0, [r4, #8] + 800a366: 2301 movs r3, #1 + 800a368: 3800 subs r0, #0 + 800a36a: 71a3 strb r3, [r4, #6] + 800a36c: f04f 0300 mov.w r3, #0 + 800a370: bf18 it ne + 800a372: 2001 movne r0, #1 + 800a374: 7163 strb r3, [r4, #5] + 800a376: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a378: f815 1b01 ldrb.w r1, [r5], #1 + 800a37c: 4620 mov r0, r4 + 800a37e: f7ff fdfb bl 8009f78 <SUBGHZSPI_Transmit> + 800a382: e7e8 b.n 800a356 <HAL_SUBGHZ_WriteBuffer+0x34> + 800a384: 2002 movs r0, #2 + 800a386: e7f6 b.n 800a376 <HAL_SUBGHZ_WriteBuffer+0x54> + +0800a388 <HAL_SUBGHZ_ReadBuffer>: + 800a388: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a38a: 461e mov r6, r3 + 800a38c: 7983 ldrb r3, [r0, #6] + 800a38e: 2b01 cmp r3, #1 + 800a390: 4615 mov r5, r2 + 800a392: 4604 mov r4, r0 + 800a394: 460f mov r7, r1 + 800a396: b2da uxtb r2, r3 + 800a398: d12b bne.n 800a3f2 <HAL_SUBGHZ_ReadBuffer+0x6a> + 800a39a: 7943 ldrb r3, [r0, #5] + 800a39c: 2b01 cmp r3, #1 + 800a39e: d028 beq.n 800a3f2 <HAL_SUBGHZ_ReadBuffer+0x6a> + 800a3a0: 7142 strb r2, [r0, #5] + 800a3a2: f7ff fe77 bl 800a094 <SUBGHZ_CheckDeviceReady> + 800a3a6: 211e movs r1, #30 + 800a3a8: 4620 mov r0, r4 + 800a3aa: f7ff fd6d bl 8009e88 <LL_PWR_SelectSUBGHZSPI_NSS> + 800a3ae: f7ff fde3 bl 8009f78 <SUBGHZSPI_Transmit> + 800a3b2: 4639 mov r1, r7 + 800a3b4: 4620 mov r0, r4 + 800a3b6: f7ff fddf bl 8009f78 <SUBGHZSPI_Transmit> + 800a3ba: 2100 movs r1, #0 + 800a3bc: 4620 mov r0, r4 + 800a3be: f7ff fddb bl 8009f78 <SUBGHZSPI_Transmit> + 800a3c2: 442e add r6, r5 + 800a3c4: 42b5 cmp r5, r6 + 800a3c6: d10e bne.n 800a3e6 <HAL_SUBGHZ_ReadBuffer+0x5e> + 800a3c8: 4620 mov r0, r4 + 800a3ca: f7ff fd53 bl 8009e74 <LL_PWR_UnselectSUBGHZSPI_NSS> + 800a3ce: f7ff fe3d bl 800a04c <SUBGHZ_WaitOnBusy> + 800a3d2: 68a0 ldr r0, [r4, #8] + 800a3d4: 2301 movs r3, #1 + 800a3d6: 3800 subs r0, #0 + 800a3d8: 71a3 strb r3, [r4, #6] + 800a3da: f04f 0300 mov.w r3, #0 + 800a3de: bf18 it ne + 800a3e0: 2001 movne r0, #1 + 800a3e2: 7163 strb r3, [r4, #5] + 800a3e4: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a3e6: 4629 mov r1, r5 + 800a3e8: 4620 mov r0, r4 + 800a3ea: f7ff fdf9 bl 8009fe0 <SUBGHZSPI_Receive> + 800a3ee: 3501 adds r5, #1 + 800a3f0: e7e8 b.n 800a3c4 <HAL_SUBGHZ_ReadBuffer+0x3c> + 800a3f2: 2002 movs r0, #2 + 800a3f4: e7f6 b.n 800a3e4 <HAL_SUBGHZ_ReadBuffer+0x5c> + +0800a3f6 <UART_EndTxTransfer>: + 800a3f6: 6802 ldr r2, [r0, #0] + 800a3f8: e852 3f00 ldrex r3, [r2] + 800a3fc: f023 03c0 bic.w r3, r3, #192 ; 0xc0 + 800a400: e842 3100 strex r1, r3, [r2] + 800a404: 6802 ldr r2, [r0, #0] + 800a406: 2900 cmp r1, #0 + 800a408: d1f5 bne.n 800a3f6 <UART_EndTxTransfer> + 800a40a: f102 0308 add.w r3, r2, #8 + 800a40e: e853 3f00 ldrex r3, [r3] + 800a412: f423 0300 bic.w r3, r3, #8388608 ; 0x800000 + 800a416: f102 0c08 add.w ip, r2, #8 + 800a41a: e84c 3100 strex r1, r3, [ip] + 800a41e: 2900 cmp r1, #0 + 800a420: d1f3 bne.n 800a40a <UART_EndTxTransfer+0x14> + 800a422: 2320 movs r3, #32 + 800a424: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800a428: 4770 bx lr + ... + +0800a42c <UART_EndRxTransfer>: + 800a42c: b510 push {r4, lr} + 800a42e: 6802 ldr r2, [r0, #0] + 800a430: e852 3f00 ldrex r3, [r2] + 800a434: f423 7390 bic.w r3, r3, #288 ; 0x120 + 800a438: e842 3100 strex r1, r3, [r2] + 800a43c: 6802 ldr r2, [r0, #0] + 800a43e: 2900 cmp r1, #0 + 800a440: d1f5 bne.n 800a42e <UART_EndRxTransfer+0x2> + 800a442: 4c0f ldr r4, [pc, #60] ; (800a480 <UART_EndRxTransfer+0x54>) + 800a444: f102 0308 add.w r3, r2, #8 + 800a448: e853 3f00 ldrex r3, [r3] + 800a44c: 4023 ands r3, r4 + 800a44e: f102 0c08 add.w ip, r2, #8 + 800a452: e84c 3100 strex r1, r3, [ip] + 800a456: 2900 cmp r1, #0 + 800a458: d1f4 bne.n 800a444 <UART_EndRxTransfer+0x18> + 800a45a: 6ec3 ldr r3, [r0, #108] ; 0x6c + 800a45c: 2b01 cmp r3, #1 + 800a45e: d107 bne.n 800a470 <UART_EndRxTransfer+0x44> + 800a460: e852 3f00 ldrex r3, [r2] + 800a464: f023 0310 bic.w r3, r3, #16 + 800a468: e842 3100 strex r1, r3, [r2] + 800a46c: 2900 cmp r1, #0 + 800a46e: d1f7 bne.n 800a460 <UART_EndRxTransfer+0x34> + 800a470: 2320 movs r3, #32 + 800a472: f8c0 308c str.w r3, [r0, #140] ; 0x8c + 800a476: 2300 movs r3, #0 + 800a478: 66c3 str r3, [r0, #108] ; 0x6c + 800a47a: 6743 str r3, [r0, #116] ; 0x74 + 800a47c: bd10 pop {r4, pc} + 800a47e: bf00 nop + 800a480: effffffe .word 0xeffffffe + +0800a484 <HAL_UART_Transmit_DMA>: + 800a484: b5f8 push {r3, r4, r5, r6, r7, lr} + 800a486: 4604 mov r4, r0 + 800a488: 4613 mov r3, r2 + 800a48a: f8d4 5088 ldr.w r5, [r4, #136] ; 0x88 + 800a48e: 2d20 cmp r5, #32 + 800a490: d132 bne.n 800a4f8 <HAL_UART_Transmit_DMA+0x74> + 800a492: b1f1 cbz r1, 800a4d2 <HAL_UART_Transmit_DMA+0x4e> + 800a494: b1ea cbz r2, 800a4d2 <HAL_UART_Transmit_DMA+0x4e> + 800a496: 6fe0 ldr r0, [r4, #124] ; 0x7c + 800a498: f8a4 2056 strh.w r2, [r4, #86] ; 0x56 + 800a49c: f8a4 2054 strh.w r2, [r4, #84] ; 0x54 + 800a4a0: 2600 movs r6, #0 + 800a4a2: 2221 movs r2, #33 ; 0x21 + 800a4a4: f8c4 6090 str.w r6, [r4, #144] ; 0x90 + 800a4a8: 6521 str r1, [r4, #80] ; 0x50 + 800a4aa: f8c4 2088 str.w r2, [r4, #136] ; 0x88 + 800a4ae: 6822 ldr r2, [r4, #0] + 800a4b0: b188 cbz r0, 800a4d6 <HAL_UART_Transmit_DMA+0x52> + 800a4b2: 4f12 ldr r7, [pc, #72] ; (800a4fc <HAL_UART_Transmit_DMA+0x78>) + 800a4b4: 62c7 str r7, [r0, #44] ; 0x2c + 800a4b6: 4f12 ldr r7, [pc, #72] ; (800a500 <HAL_UART_Transmit_DMA+0x7c>) + 800a4b8: 6307 str r7, [r0, #48] ; 0x30 + 800a4ba: 4f12 ldr r7, [pc, #72] ; (800a504 <HAL_UART_Transmit_DMA+0x80>) + 800a4bc: 3228 adds r2, #40 ; 0x28 + 800a4be: e9c0 760d strd r7, r6, [r0, #52] ; 0x34 + 800a4c2: f7fd fe45 bl 8008150 <HAL_DMA_Start_IT> + 800a4c6: b130 cbz r0, 800a4d6 <HAL_UART_Transmit_DMA+0x52> + 800a4c8: 2310 movs r3, #16 + 800a4ca: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800a4ce: f8c4 5088 str.w r5, [r4, #136] ; 0x88 + 800a4d2: 2001 movs r0, #1 + 800a4d4: e00f b.n 800a4f6 <HAL_UART_Transmit_DMA+0x72> + 800a4d6: 6823 ldr r3, [r4, #0] + 800a4d8: 2240 movs r2, #64 ; 0x40 + 800a4da: 621a str r2, [r3, #32] + 800a4dc: 6822 ldr r2, [r4, #0] + 800a4de: f102 0308 add.w r3, r2, #8 + 800a4e2: e853 3f00 ldrex r3, [r3] + 800a4e6: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800a4ea: f102 0108 add.w r1, r2, #8 + 800a4ee: e841 3000 strex r0, r3, [r1] + 800a4f2: 2800 cmp r0, #0 + 800a4f4: d1f3 bne.n 800a4de <HAL_UART_Transmit_DMA+0x5a> + 800a4f6: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800a4f8: 2002 movs r0, #2 + 800a4fa: e7fc b.n 800a4f6 <HAL_UART_Transmit_DMA+0x72> + 800a4fc: 0800a509 .word 0x0800a509 + 800a500: 0800a551 .word 0x0800a551 + 800a504: 0800a55d .word 0x0800a55d + +0800a508 <UART_DMATransmitCplt>: + 800a508: b508 push {r3, lr} + 800a50a: 4603 mov r3, r0 + 800a50c: 6a80 ldr r0, [r0, #40] ; 0x28 + 800a50e: 681b ldr r3, [r3, #0] + 800a510: 681b ldr r3, [r3, #0] + 800a512: f013 0320 ands.w r3, r3, #32 + 800a516: d117 bne.n 800a548 <UART_DMATransmitCplt+0x40> + 800a518: f8a0 3056 strh.w r3, [r0, #86] ; 0x56 + 800a51c: 6802 ldr r2, [r0, #0] + 800a51e: f102 0308 add.w r3, r2, #8 + 800a522: e853 3f00 ldrex r3, [r3] + 800a526: f023 0380 bic.w r3, r3, #128 ; 0x80 + 800a52a: 3208 adds r2, #8 + 800a52c: e842 3100 strex r1, r3, [r2] + 800a530: 6802 ldr r2, [r0, #0] + 800a532: 2900 cmp r1, #0 + 800a534: d1f2 bne.n 800a51c <UART_DMATransmitCplt+0x14> + 800a536: e852 3f00 ldrex r3, [r2] + 800a53a: f043 0340 orr.w r3, r3, #64 ; 0x40 + 800a53e: e842 3100 strex r1, r3, [r2] + 800a542: 2900 cmp r1, #0 + 800a544: d1f7 bne.n 800a536 <UART_DMATransmitCplt+0x2e> + 800a546: bd08 pop {r3, pc} + 800a548: f7f8 fdf6 bl 8003138 <HAL_UART_TxCpltCallback> + 800a54c: e7fb b.n 800a546 <UART_DMATransmitCplt+0x3e> + +0800a54e <HAL_UART_TxHalfCpltCallback>: + 800a54e: 4770 bx lr + +0800a550 <UART_DMATxHalfCplt>: + 800a550: b508 push {r3, lr} + 800a552: 6a80 ldr r0, [r0, #40] ; 0x28 + 800a554: f7ff fffb bl 800a54e <HAL_UART_TxHalfCpltCallback> + 800a558: bd08 pop {r3, pc} + +0800a55a <HAL_UART_ErrorCallback>: + 800a55a: 4770 bx lr + +0800a55c <UART_DMAError>: + 800a55c: 6a80 ldr r0, [r0, #40] ; 0x28 + 800a55e: b538 push {r3, r4, r5, lr} + 800a560: 6804 ldr r4, [r0, #0] + 800a562: f8d0 3088 ldr.w r3, [r0, #136] ; 0x88 + 800a566: f8d0 508c ldr.w r5, [r0, #140] ; 0x8c + 800a56a: 68a2 ldr r2, [r4, #8] + 800a56c: 0612 lsls r2, r2, #24 + 800a56e: d506 bpl.n 800a57e <UART_DMAError+0x22> + 800a570: 2b21 cmp r3, #33 ; 0x21 + 800a572: d104 bne.n 800a57e <UART_DMAError+0x22> + 800a574: 2300 movs r3, #0 + 800a576: f8a0 3056 strh.w r3, [r0, #86] ; 0x56 + 800a57a: f7ff ff3c bl 800a3f6 <UART_EndTxTransfer> + 800a57e: 68a3 ldr r3, [r4, #8] + 800a580: 065b lsls r3, r3, #25 + 800a582: d506 bpl.n 800a592 <UART_DMAError+0x36> + 800a584: 2d22 cmp r5, #34 ; 0x22 + 800a586: d104 bne.n 800a592 <UART_DMAError+0x36> + 800a588: 2300 movs r3, #0 + 800a58a: f8a0 305e strh.w r3, [r0, #94] ; 0x5e + 800a58e: f7ff ff4d bl 800a42c <UART_EndRxTransfer> + 800a592: f8d0 3090 ldr.w r3, [r0, #144] ; 0x90 + 800a596: f043 0310 orr.w r3, r3, #16 + 800a59a: f8c0 3090 str.w r3, [r0, #144] ; 0x90 + 800a59e: f7ff ffdc bl 800a55a <HAL_UART_ErrorCallback> + 800a5a2: bd38 pop {r3, r4, r5, pc} + +0800a5a4 <UART_DMAAbortOnError>: + 800a5a4: b508 push {r3, lr} + 800a5a6: 6a80 ldr r0, [r0, #40] ; 0x28 + 800a5a8: 2300 movs r3, #0 + 800a5aa: f8a0 305e strh.w r3, [r0, #94] ; 0x5e + 800a5ae: f8a0 3056 strh.w r3, [r0, #86] ; 0x56 + 800a5b2: f7ff ffd2 bl 800a55a <HAL_UART_ErrorCallback> + 800a5b6: bd08 pop {r3, pc} + +0800a5b8 <HAL_UARTEx_RxEventCallback>: + 800a5b8: 4770 bx lr + ... + +0800a5bc <HAL_UART_IRQHandler>: + 800a5bc: 6803 ldr r3, [r0, #0] + 800a5be: 69d9 ldr r1, [r3, #28] + 800a5c0: 681a ldr r2, [r3, #0] + 800a5c2: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800a5c6: f640 060f movw r6, #2063 ; 0x80f + 800a5ca: 4231 tst r1, r6 + 800a5cc: 689d ldr r5, [r3, #8] + 800a5ce: 4604 mov r4, r0 + 800a5d0: d110 bne.n 800a5f4 <HAL_UART_IRQHandler+0x38> + 800a5d2: 068e lsls r6, r1, #26 + 800a5d4: f140 8097 bpl.w 800a706 <HAL_UART_IRQHandler+0x14a> + 800a5d8: f002 0620 and.w r6, r2, #32 + 800a5dc: f005 5780 and.w r7, r5, #268435456 ; 0x10000000 + 800a5e0: 433e orrs r6, r7 + 800a5e2: f000 8090 beq.w 800a706 <HAL_UART_IRQHandler+0x14a> + 800a5e6: 6f43 ldr r3, [r0, #116] ; 0x74 + 800a5e8: 2b00 cmp r3, #0 + 800a5ea: f000 8085 beq.w 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a5ee: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800a5f2: 4718 bx r3 + 800a5f4: 4eab ldr r6, [pc, #684] ; (800a8a4 <HAL_UART_IRQHandler+0x2e8>) + 800a5f6: 48ac ldr r0, [pc, #688] ; (800a8a8 <HAL_UART_IRQHandler+0x2ec>) + 800a5f8: 402e ands r6, r5 + 800a5fa: 4010 ands r0, r2 + 800a5fc: 4330 orrs r0, r6 + 800a5fe: f000 8082 beq.w 800a706 <HAL_UART_IRQHandler+0x14a> + 800a602: 07cf lsls r7, r1, #31 + 800a604: d509 bpl.n 800a61a <HAL_UART_IRQHandler+0x5e> + 800a606: 05d0 lsls r0, r2, #23 + 800a608: d507 bpl.n 800a61a <HAL_UART_IRQHandler+0x5e> + 800a60a: 2001 movs r0, #1 + 800a60c: 6218 str r0, [r3, #32] + 800a60e: f8d4 0090 ldr.w r0, [r4, #144] ; 0x90 + 800a612: f040 0001 orr.w r0, r0, #1 + 800a616: f8c4 0090 str.w r0, [r4, #144] ; 0x90 + 800a61a: 078f lsls r7, r1, #30 + 800a61c: d509 bpl.n 800a632 <HAL_UART_IRQHandler+0x76> + 800a61e: 07e8 lsls r0, r5, #31 + 800a620: d507 bpl.n 800a632 <HAL_UART_IRQHandler+0x76> + 800a622: 2002 movs r0, #2 + 800a624: 6218 str r0, [r3, #32] + 800a626: f8d4 0090 ldr.w r0, [r4, #144] ; 0x90 + 800a62a: f040 0004 orr.w r0, r0, #4 + 800a62e: f8c4 0090 str.w r0, [r4, #144] ; 0x90 + 800a632: 074f lsls r7, r1, #29 + 800a634: d509 bpl.n 800a64a <HAL_UART_IRQHandler+0x8e> + 800a636: 07e8 lsls r0, r5, #31 + 800a638: d507 bpl.n 800a64a <HAL_UART_IRQHandler+0x8e> + 800a63a: 2004 movs r0, #4 + 800a63c: 6218 str r0, [r3, #32] + 800a63e: f8d4 0090 ldr.w r0, [r4, #144] ; 0x90 + 800a642: f040 0002 orr.w r0, r0, #2 + 800a646: f8c4 0090 str.w r0, [r4, #144] ; 0x90 + 800a64a: 070f lsls r7, r1, #28 + 800a64c: d50b bpl.n 800a666 <HAL_UART_IRQHandler+0xaa> + 800a64e: f002 0020 and.w r0, r2, #32 + 800a652: 4330 orrs r0, r6 + 800a654: d007 beq.n 800a666 <HAL_UART_IRQHandler+0xaa> + 800a656: 2008 movs r0, #8 + 800a658: 6218 str r0, [r3, #32] + 800a65a: f8d4 0090 ldr.w r0, [r4, #144] ; 0x90 + 800a65e: f040 0008 orr.w r0, r0, #8 + 800a662: f8c4 0090 str.w r0, [r4, #144] ; 0x90 + 800a666: 050e lsls r6, r1, #20 + 800a668: d50a bpl.n 800a680 <HAL_UART_IRQHandler+0xc4> + 800a66a: 0150 lsls r0, r2, #5 + 800a66c: d508 bpl.n 800a680 <HAL_UART_IRQHandler+0xc4> + 800a66e: f44f 6000 mov.w r0, #2048 ; 0x800 + 800a672: 6218 str r0, [r3, #32] + 800a674: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800a678: f043 0320 orr.w r3, r3, #32 + 800a67c: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800a680: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800a684: 2b00 cmp r3, #0 + 800a686: d037 beq.n 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a688: 068b lsls r3, r1, #26 + 800a68a: d509 bpl.n 800a6a0 <HAL_UART_IRQHandler+0xe4> + 800a68c: f002 0220 and.w r2, r2, #32 + 800a690: f005 5580 and.w r5, r5, #268435456 ; 0x10000000 + 800a694: 432a orrs r2, r5 + 800a696: d003 beq.n 800a6a0 <HAL_UART_IRQHandler+0xe4> + 800a698: 6f63 ldr r3, [r4, #116] ; 0x74 + 800a69a: b10b cbz r3, 800a6a0 <HAL_UART_IRQHandler+0xe4> + 800a69c: 4620 mov r0, r4 + 800a69e: 4798 blx r3 + 800a6a0: 6826 ldr r6, [r4, #0] + 800a6a2: f8d4 2090 ldr.w r2, [r4, #144] ; 0x90 + 800a6a6: 68b3 ldr r3, [r6, #8] + 800a6a8: f002 0228 and.w r2, r2, #40 ; 0x28 + 800a6ac: f003 0340 and.w r3, r3, #64 ; 0x40 + 800a6b0: ea53 0502 orrs.w r5, r3, r2 + 800a6b4: 4620 mov r0, r4 + 800a6b6: d021 beq.n 800a6fc <HAL_UART_IRQHandler+0x140> + 800a6b8: f7ff feb8 bl 800a42c <UART_EndRxTransfer> + 800a6bc: 68b3 ldr r3, [r6, #8] + 800a6be: 065f lsls r7, r3, #25 + 800a6c0: d517 bpl.n 800a6f2 <HAL_UART_IRQHandler+0x136> + 800a6c2: 6822 ldr r2, [r4, #0] + 800a6c4: f102 0308 add.w r3, r2, #8 + 800a6c8: e853 3f00 ldrex r3, [r3] + 800a6cc: f023 0340 bic.w r3, r3, #64 ; 0x40 + 800a6d0: 3208 adds r2, #8 + 800a6d2: e842 3100 strex r1, r3, [r2] + 800a6d6: 2900 cmp r1, #0 + 800a6d8: d1f3 bne.n 800a6c2 <HAL_UART_IRQHandler+0x106> + 800a6da: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800a6de: b140 cbz r0, 800a6f2 <HAL_UART_IRQHandler+0x136> + 800a6e0: 4b72 ldr r3, [pc, #456] ; (800a8ac <HAL_UART_IRQHandler+0x2f0>) + 800a6e2: 6383 str r3, [r0, #56] ; 0x38 + 800a6e4: f7fd fdad bl 8008242 <HAL_DMA_Abort_IT> + 800a6e8: b130 cbz r0, 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a6ea: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800a6ee: 6b83 ldr r3, [r0, #56] ; 0x38 + 800a6f0: e77d b.n 800a5ee <HAL_UART_IRQHandler+0x32> + 800a6f2: 4620 mov r0, r4 + 800a6f4: f7ff ff31 bl 800a55a <HAL_UART_ErrorCallback> + 800a6f8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800a6fc: f7ff ff2d bl 800a55a <HAL_UART_ErrorCallback> + 800a700: f8c4 5090 str.w r5, [r4, #144] ; 0x90 + 800a704: e7f8 b.n 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a706: 6ee0 ldr r0, [r4, #108] ; 0x6c + 800a708: 2801 cmp r0, #1 + 800a70a: f040 8089 bne.w 800a820 <HAL_UART_IRQHandler+0x264> + 800a70e: 06ce lsls r6, r1, #27 + 800a710: f140 8086 bpl.w 800a820 <HAL_UART_IRQHandler+0x264> + 800a714: 06d0 lsls r0, r2, #27 + 800a716: f140 8083 bpl.w 800a820 <HAL_UART_IRQHandler+0x264> + 800a71a: 2210 movs r2, #16 + 800a71c: 621a str r2, [r3, #32] + 800a71e: 689a ldr r2, [r3, #8] + 800a720: 0651 lsls r1, r2, #25 + 800a722: d54b bpl.n 800a7bc <HAL_UART_IRQHandler+0x200> + 800a724: f8d4 2080 ldr.w r2, [r4, #128] ; 0x80 + 800a728: 6811 ldr r1, [r2, #0] + 800a72a: 684a ldr r2, [r1, #4] + 800a72c: b292 uxth r2, r2 + 800a72e: 2a00 cmp r2, #0 + 800a730: d0e2 beq.n 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a732: f8b4 005c ldrh.w r0, [r4, #92] ; 0x5c + 800a736: 4290 cmp r0, r2 + 800a738: d9de bls.n 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a73a: f8a4 205e strh.w r2, [r4, #94] ; 0x5e + 800a73e: 680a ldr r2, [r1, #0] + 800a740: 0692 lsls r2, r2, #26 + 800a742: d42f bmi.n 800a7a4 <HAL_UART_IRQHandler+0x1e8> + 800a744: e853 2f00 ldrex r2, [r3] + 800a748: f422 7280 bic.w r2, r2, #256 ; 0x100 + 800a74c: e843 2100 strex r1, r2, [r3] + 800a750: 2900 cmp r1, #0 + 800a752: d1f7 bne.n 800a744 <HAL_UART_IRQHandler+0x188> + 800a754: f103 0208 add.w r2, r3, #8 + 800a758: e852 2f00 ldrex r2, [r2] + 800a75c: f022 0201 bic.w r2, r2, #1 + 800a760: f103 0008 add.w r0, r3, #8 + 800a764: e840 2100 strex r1, r2, [r0] + 800a768: 2900 cmp r1, #0 + 800a76a: d1f3 bne.n 800a754 <HAL_UART_IRQHandler+0x198> + 800a76c: f103 0208 add.w r2, r3, #8 + 800a770: e852 2f00 ldrex r2, [r2] + 800a774: f022 0240 bic.w r2, r2, #64 ; 0x40 + 800a778: f103 0008 add.w r0, r3, #8 + 800a77c: e840 2100 strex r1, r2, [r0] + 800a780: 2900 cmp r1, #0 + 800a782: d1f3 bne.n 800a76c <HAL_UART_IRQHandler+0x1b0> + 800a784: 2220 movs r2, #32 + 800a786: f8c4 208c str.w r2, [r4, #140] ; 0x8c + 800a78a: 66e1 str r1, [r4, #108] ; 0x6c + 800a78c: e853 2f00 ldrex r2, [r3] + 800a790: f022 0210 bic.w r2, r2, #16 + 800a794: e843 2100 strex r1, r2, [r3] + 800a798: 2900 cmp r1, #0 + 800a79a: d1f7 bne.n 800a78c <HAL_UART_IRQHandler+0x1d0> + 800a79c: f8d4 0080 ldr.w r0, [r4, #128] ; 0x80 + 800a7a0: f7fd fd1a bl 80081d8 <HAL_DMA_Abort> + 800a7a4: 2302 movs r3, #2 + 800a7a6: 6723 str r3, [r4, #112] ; 0x70 + 800a7a8: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800a7ac: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800a7b0: 1ac9 subs r1, r1, r3 + 800a7b2: b289 uxth r1, r1 + 800a7b4: 4620 mov r0, r4 + 800a7b6: f7ff feff bl 800a5b8 <HAL_UARTEx_RxEventCallback> + 800a7ba: e79d b.n 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a7bc: f8b4 205e ldrh.w r2, [r4, #94] ; 0x5e + 800a7c0: f8b4 005e ldrh.w r0, [r4, #94] ; 0x5e + 800a7c4: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800a7c8: b280 uxth r0, r0 + 800a7ca: b292 uxth r2, r2 + 800a7cc: 2800 cmp r0, #0 + 800a7ce: d093 beq.n 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a7d0: 1a89 subs r1, r1, r2 + 800a7d2: b289 uxth r1, r1 + 800a7d4: 2900 cmp r1, #0 + 800a7d6: d08f beq.n 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a7d8: e853 2f00 ldrex r2, [r3] + 800a7dc: f422 7290 bic.w r2, r2, #288 ; 0x120 + 800a7e0: e843 2000 strex r0, r2, [r3] + 800a7e4: 2800 cmp r0, #0 + 800a7e6: d1f7 bne.n 800a7d8 <HAL_UART_IRQHandler+0x21c> + 800a7e8: 4d31 ldr r5, [pc, #196] ; (800a8b0 <HAL_UART_IRQHandler+0x2f4>) + 800a7ea: f103 0208 add.w r2, r3, #8 + 800a7ee: e852 2f00 ldrex r2, [r2] + 800a7f2: 402a ands r2, r5 + 800a7f4: f103 0608 add.w r6, r3, #8 + 800a7f8: e846 2000 strex r0, r2, [r6] + 800a7fc: 2800 cmp r0, #0 + 800a7fe: d1f4 bne.n 800a7ea <HAL_UART_IRQHandler+0x22e> + 800a800: 2220 movs r2, #32 + 800a802: f8c4 208c str.w r2, [r4, #140] ; 0x8c + 800a806: 6760 str r0, [r4, #116] ; 0x74 + 800a808: 66e0 str r0, [r4, #108] ; 0x6c + 800a80a: e853 2f00 ldrex r2, [r3] + 800a80e: f022 0210 bic.w r2, r2, #16 + 800a812: e843 2000 strex r0, r2, [r3] + 800a816: 2800 cmp r0, #0 + 800a818: d1f7 bne.n 800a80a <HAL_UART_IRQHandler+0x24e> + 800a81a: 2302 movs r3, #2 + 800a81c: 6723 str r3, [r4, #112] ; 0x70 + 800a81e: e7c9 b.n 800a7b4 <HAL_UART_IRQHandler+0x1f8> + 800a820: 02cf lsls r7, r1, #11 + 800a822: d509 bpl.n 800a838 <HAL_UART_IRQHandler+0x27c> + 800a824: 026e lsls r6, r5, #9 + 800a826: d507 bpl.n 800a838 <HAL_UART_IRQHandler+0x27c> + 800a828: f44f 1280 mov.w r2, #1048576 ; 0x100000 + 800a82c: 4620 mov r0, r4 + 800a82e: 621a str r2, [r3, #32] + 800a830: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800a834: f000 bda0 b.w 800b378 <HAL_UARTEx_WakeupCallback> + 800a838: 0608 lsls r0, r1, #24 + 800a83a: d50b bpl.n 800a854 <HAL_UART_IRQHandler+0x298> + 800a83c: f002 0080 and.w r0, r2, #128 ; 0x80 + 800a840: f405 0500 and.w r5, r5, #8388608 ; 0x800000 + 800a844: 4328 orrs r0, r5 + 800a846: d005 beq.n 800a854 <HAL_UART_IRQHandler+0x298> + 800a848: 6fa3 ldr r3, [r4, #120] ; 0x78 + 800a84a: 2b00 cmp r3, #0 + 800a84c: f43f af54 beq.w 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a850: 4620 mov r0, r4 + 800a852: e6cc b.n 800a5ee <HAL_UART_IRQHandler+0x32> + 800a854: 064f lsls r7, r1, #25 + 800a856: d511 bpl.n 800a87c <HAL_UART_IRQHandler+0x2c0> + 800a858: 0656 lsls r6, r2, #25 + 800a85a: d50f bpl.n 800a87c <HAL_UART_IRQHandler+0x2c0> + 800a85c: e853 2f00 ldrex r2, [r3] + 800a860: f022 0240 bic.w r2, r2, #64 ; 0x40 + 800a864: e843 2100 strex r1, r2, [r3] + 800a868: 2900 cmp r1, #0 + 800a86a: d1f7 bne.n 800a85c <HAL_UART_IRQHandler+0x2a0> + 800a86c: 2320 movs r3, #32 + 800a86e: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800a872: 67a1 str r1, [r4, #120] ; 0x78 + 800a874: 4620 mov r0, r4 + 800a876: f7f8 fc5f bl 8003138 <HAL_UART_TxCpltCallback> + 800a87a: e73d b.n 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a87c: 020d lsls r5, r1, #8 + 800a87e: d506 bpl.n 800a88e <HAL_UART_IRQHandler+0x2d2> + 800a880: 0050 lsls r0, r2, #1 + 800a882: d504 bpl.n 800a88e <HAL_UART_IRQHandler+0x2d2> + 800a884: 4620 mov r0, r4 + 800a886: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800a88a: f000 bd77 b.w 800b37c <HAL_UARTEx_TxFifoEmptyCallback> + 800a88e: 01cb lsls r3, r1, #7 + 800a890: f57f af32 bpl.w 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a894: 2a00 cmp r2, #0 + 800a896: f6bf af2f bge.w 800a6f8 <HAL_UART_IRQHandler+0x13c> + 800a89a: 4620 mov r0, r4 + 800a89c: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800a8a0: f000 bd6b b.w 800b37a <HAL_UARTEx_RxFifoFullCallback> + 800a8a4: 10000001 .word 0x10000001 + 800a8a8: 04000120 .word 0x04000120 + 800a8ac: 0800a5a5 .word 0x0800a5a5 + 800a8b0: effffffe .word 0xeffffffe + +0800a8b4 <UART_RxISR_8BIT>: + 800a8b4: f8d0 208c ldr.w r2, [r0, #140] ; 0x8c + 800a8b8: f8b0 1060 ldrh.w r1, [r0, #96] ; 0x60 + 800a8bc: 2a22 cmp r2, #34 ; 0x22 + 800a8be: b508 push {r3, lr} + 800a8c0: 6803 ldr r3, [r0, #0] + 800a8c2: d155 bne.n 800a970 <UART_RxISR_8BIT+0xbc> + 800a8c4: 6a5b ldr r3, [r3, #36] ; 0x24 + 800a8c6: 6d82 ldr r2, [r0, #88] ; 0x58 + 800a8c8: 400b ands r3, r1 + 800a8ca: 7013 strb r3, [r2, #0] + 800a8cc: 6d83 ldr r3, [r0, #88] ; 0x58 + 800a8ce: 3301 adds r3, #1 + 800a8d0: 6583 str r3, [r0, #88] ; 0x58 + 800a8d2: f8b0 305e ldrh.w r3, [r0, #94] ; 0x5e + 800a8d6: 3b01 subs r3, #1 + 800a8d8: b29b uxth r3, r3 + 800a8da: f8a0 305e strh.w r3, [r0, #94] ; 0x5e + 800a8de: f8b0 305e ldrh.w r3, [r0, #94] ; 0x5e + 800a8e2: b29b uxth r3, r3 + 800a8e4: 2b00 cmp r3, #0 + 800a8e6: d142 bne.n 800a96e <UART_RxISR_8BIT+0xba> + 800a8e8: 6802 ldr r2, [r0, #0] + 800a8ea: e852 3f00 ldrex r3, [r2] + 800a8ee: f423 7390 bic.w r3, r3, #288 ; 0x120 + 800a8f2: e842 3100 strex r1, r3, [r2] + 800a8f6: 6803 ldr r3, [r0, #0] + 800a8f8: 2900 cmp r1, #0 + 800a8fa: d1f5 bne.n 800a8e8 <UART_RxISR_8BIT+0x34> + 800a8fc: f103 0208 add.w r2, r3, #8 + 800a900: e852 2f00 ldrex r2, [r2] + 800a904: f022 0201 bic.w r2, r2, #1 + 800a908: f103 0c08 add.w ip, r3, #8 + 800a90c: e84c 2100 strex r1, r2, [ip] + 800a910: 2900 cmp r1, #0 + 800a912: d1f3 bne.n 800a8fc <UART_RxISR_8BIT+0x48> + 800a914: 2220 movs r2, #32 + 800a916: f8c0 208c str.w r2, [r0, #140] ; 0x8c + 800a91a: 4a18 ldr r2, [pc, #96] ; (800a97c <UART_RxISR_8BIT+0xc8>) + 800a91c: 6741 str r1, [r0, #116] ; 0x74 + 800a91e: 4293 cmp r3, r2 + 800a920: 6701 str r1, [r0, #112] ; 0x70 + 800a922: d105 bne.n 800a930 <UART_RxISR_8BIT+0x7c> + 800a924: 6ec2 ldr r2, [r0, #108] ; 0x6c + 800a926: 2a01 cmp r2, #1 + 800a928: d00e beq.n 800a948 <UART_RxISR_8BIT+0x94> + 800a92a: f7f8 fc13 bl 8003154 <HAL_UART_RxCpltCallback> + 800a92e: e01e b.n 800a96e <UART_RxISR_8BIT+0xba> + 800a930: 685a ldr r2, [r3, #4] + 800a932: 0211 lsls r1, r2, #8 + 800a934: d5f6 bpl.n 800a924 <UART_RxISR_8BIT+0x70> + 800a936: e853 2f00 ldrex r2, [r3] + 800a93a: f022 6280 bic.w r2, r2, #67108864 ; 0x4000000 + 800a93e: e843 2100 strex r1, r2, [r3] + 800a942: 2900 cmp r1, #0 + 800a944: d1f7 bne.n 800a936 <UART_RxISR_8BIT+0x82> + 800a946: e7ed b.n 800a924 <UART_RxISR_8BIT+0x70> + 800a948: 2200 movs r2, #0 + 800a94a: 66c2 str r2, [r0, #108] ; 0x6c + 800a94c: e853 2f00 ldrex r2, [r3] + 800a950: f022 0210 bic.w r2, r2, #16 + 800a954: e843 2100 strex r1, r2, [r3] + 800a958: 2900 cmp r1, #0 + 800a95a: d1f7 bne.n 800a94c <UART_RxISR_8BIT+0x98> + 800a95c: 69da ldr r2, [r3, #28] + 800a95e: f8b0 105c ldrh.w r1, [r0, #92] ; 0x5c + 800a962: 06d2 lsls r2, r2, #27 + 800a964: bf44 itt mi + 800a966: 2210 movmi r2, #16 + 800a968: 621a strmi r2, [r3, #32] + 800a96a: f7ff fe25 bl 800a5b8 <HAL_UARTEx_RxEventCallback> + 800a96e: bd08 pop {r3, pc} + 800a970: 699a ldr r2, [r3, #24] + 800a972: f042 0208 orr.w r2, r2, #8 + 800a976: 619a str r2, [r3, #24] + 800a978: e7f9 b.n 800a96e <UART_RxISR_8BIT+0xba> + 800a97a: bf00 nop + 800a97c: 40008000 .word 0x40008000 + +0800a980 <UART_RxISR_16BIT>: + 800a980: f8d0 208c ldr.w r2, [r0, #140] ; 0x8c + 800a984: f8b0 1060 ldrh.w r1, [r0, #96] ; 0x60 + 800a988: 2a22 cmp r2, #34 ; 0x22 + 800a98a: b508 push {r3, lr} + 800a98c: 6803 ldr r3, [r0, #0] + 800a98e: d152 bne.n 800aa36 <UART_RxISR_16BIT+0xb6> + 800a990: 6a5a ldr r2, [r3, #36] ; 0x24 + 800a992: 4011 ands r1, r2 + 800a994: 6d82 ldr r2, [r0, #88] ; 0x58 + 800a996: f822 1b02 strh.w r1, [r2], #2 + 800a99a: 6582 str r2, [r0, #88] ; 0x58 + 800a99c: f8b0 205e ldrh.w r2, [r0, #94] ; 0x5e + 800a9a0: 3a01 subs r2, #1 + 800a9a2: b292 uxth r2, r2 + 800a9a4: f8a0 205e strh.w r2, [r0, #94] ; 0x5e + 800a9a8: f8b0 205e ldrh.w r2, [r0, #94] ; 0x5e + 800a9ac: b292 uxth r2, r2 + 800a9ae: 2a00 cmp r2, #0 + 800a9b0: d140 bne.n 800aa34 <UART_RxISR_16BIT+0xb4> + 800a9b2: e853 2f00 ldrex r2, [r3] + 800a9b6: f422 7290 bic.w r2, r2, #288 ; 0x120 + 800a9ba: e843 2100 strex r1, r2, [r3] + 800a9be: 2900 cmp r1, #0 + 800a9c0: d1f7 bne.n 800a9b2 <UART_RxISR_16BIT+0x32> + 800a9c2: f103 0208 add.w r2, r3, #8 + 800a9c6: e852 2f00 ldrex r2, [r2] + 800a9ca: f022 0201 bic.w r2, r2, #1 + 800a9ce: f103 0c08 add.w ip, r3, #8 + 800a9d2: e84c 2100 strex r1, r2, [ip] + 800a9d6: 2900 cmp r1, #0 + 800a9d8: d1f3 bne.n 800a9c2 <UART_RxISR_16BIT+0x42> + 800a9da: 2220 movs r2, #32 + 800a9dc: f8c0 208c str.w r2, [r0, #140] ; 0x8c + 800a9e0: 4a17 ldr r2, [pc, #92] ; (800aa40 <UART_RxISR_16BIT+0xc0>) + 800a9e2: 6741 str r1, [r0, #116] ; 0x74 + 800a9e4: 4293 cmp r3, r2 + 800a9e6: 6701 str r1, [r0, #112] ; 0x70 + 800a9e8: d105 bne.n 800a9f6 <UART_RxISR_16BIT+0x76> + 800a9ea: 6ec2 ldr r2, [r0, #108] ; 0x6c + 800a9ec: 2a01 cmp r2, #1 + 800a9ee: d00e beq.n 800aa0e <UART_RxISR_16BIT+0x8e> + 800a9f0: f7f8 fbb0 bl 8003154 <HAL_UART_RxCpltCallback> + 800a9f4: e01e b.n 800aa34 <UART_RxISR_16BIT+0xb4> + 800a9f6: 685a ldr r2, [r3, #4] + 800a9f8: 0211 lsls r1, r2, #8 + 800a9fa: d5f6 bpl.n 800a9ea <UART_RxISR_16BIT+0x6a> + 800a9fc: e853 2f00 ldrex r2, [r3] + 800aa00: f022 6280 bic.w r2, r2, #67108864 ; 0x4000000 + 800aa04: e843 2100 strex r1, r2, [r3] + 800aa08: 2900 cmp r1, #0 + 800aa0a: d1f7 bne.n 800a9fc <UART_RxISR_16BIT+0x7c> + 800aa0c: e7ed b.n 800a9ea <UART_RxISR_16BIT+0x6a> + 800aa0e: 2200 movs r2, #0 + 800aa10: 66c2 str r2, [r0, #108] ; 0x6c + 800aa12: e853 2f00 ldrex r2, [r3] + 800aa16: f022 0210 bic.w r2, r2, #16 + 800aa1a: e843 2100 strex r1, r2, [r3] + 800aa1e: 2900 cmp r1, #0 + 800aa20: d1f7 bne.n 800aa12 <UART_RxISR_16BIT+0x92> + 800aa22: 69da ldr r2, [r3, #28] + 800aa24: f8b0 105c ldrh.w r1, [r0, #92] ; 0x5c + 800aa28: 06d2 lsls r2, r2, #27 + 800aa2a: bf44 itt mi + 800aa2c: 2210 movmi r2, #16 + 800aa2e: 621a strmi r2, [r3, #32] + 800aa30: f7ff fdc2 bl 800a5b8 <HAL_UARTEx_RxEventCallback> + 800aa34: bd08 pop {r3, pc} + 800aa36: 699a ldr r2, [r3, #24] + 800aa38: f042 0208 orr.w r2, r2, #8 + 800aa3c: 619a str r2, [r3, #24] + 800aa3e: e7f9 b.n 800aa34 <UART_RxISR_16BIT+0xb4> + 800aa40: 40008000 .word 0x40008000 + +0800aa44 <UART_RxISR_8BIT_FIFOEN>: + 800aa44: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800aa48: 6803 ldr r3, [r0, #0] + 800aa4a: f8b0 8060 ldrh.w r8, [r0, #96] ; 0x60 + 800aa4e: 69df ldr r7, [r3, #28] + 800aa50: 681a ldr r2, [r3, #0] + 800aa52: 689d ldr r5, [r3, #8] + 800aa54: f8d0 108c ldr.w r1, [r0, #140] ; 0x8c + 800aa58: 9201 str r2, [sp, #4] + 800aa5a: 2922 cmp r1, #34 ; 0x22 + 800aa5c: 4604 mov r4, r0 + 800aa5e: f040 80b4 bne.w 800abca <UART_RxISR_8BIT_FIFOEN+0x186> + 800aa62: f8b0 9068 ldrh.w r9, [r0, #104] ; 0x68 + 800aa66: f8df a16c ldr.w sl, [pc, #364] ; 800abd4 <UART_RxISR_8BIT_FIFOEN+0x190> + 800aa6a: f8df b16c ldr.w fp, [pc, #364] ; 800abd8 <UART_RxISR_8BIT_FIFOEN+0x194> + 800aa6e: 2600 movs r6, #0 + 800aa70: f1b9 0f00 cmp.w r9, #0 + 800aa74: d001 beq.n 800aa7a <UART_RxISR_8BIT_FIFOEN+0x36> + 800aa76: 06bb lsls r3, r7, #26 + 800aa78: d421 bmi.n 800aabe <UART_RxISR_8BIT_FIFOEN+0x7a> + 800aa7a: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800aa7e: b29b uxth r3, r3 + 800aa80: b1d3 cbz r3, 800aab8 <UART_RxISR_8BIT_FIFOEN+0x74> + 800aa82: f8b4 2068 ldrh.w r2, [r4, #104] ; 0x68 + 800aa86: 429a cmp r2, r3 + 800aa88: d916 bls.n 800aab8 <UART_RxISR_8BIT_FIFOEN+0x74> + 800aa8a: 6822 ldr r2, [r4, #0] + 800aa8c: f102 0308 add.w r3, r2, #8 + 800aa90: e853 3f00 ldrex r3, [r3] + 800aa94: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 800aa98: 3208 adds r2, #8 + 800aa9a: e842 3100 strex r1, r3, [r2] + 800aa9e: 6822 ldr r2, [r4, #0] + 800aaa0: 2900 cmp r1, #0 + 800aaa2: d1f2 bne.n 800aa8a <UART_RxISR_8BIT_FIFOEN+0x46> + 800aaa4: 4b4d ldr r3, [pc, #308] ; (800abdc <UART_RxISR_8BIT_FIFOEN+0x198>) + 800aaa6: 6763 str r3, [r4, #116] ; 0x74 + 800aaa8: e852 3f00 ldrex r3, [r2] + 800aaac: f043 0320 orr.w r3, r3, #32 + 800aab0: e842 3100 strex r1, r3, [r2] + 800aab4: 2900 cmp r1, #0 + 800aab6: d1f7 bne.n 800aaa8 <UART_RxISR_8BIT_FIFOEN+0x64> + 800aab8: b003 add sp, #12 + 800aaba: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800aabe: 6823 ldr r3, [r4, #0] + 800aac0: 6da2 ldr r2, [r4, #88] ; 0x58 + 800aac2: 6a5b ldr r3, [r3, #36] ; 0x24 + 800aac4: ea03 0308 and.w r3, r3, r8 + 800aac8: 7013 strb r3, [r2, #0] + 800aaca: 6da3 ldr r3, [r4, #88] ; 0x58 + 800aacc: 3301 adds r3, #1 + 800aace: 65a3 str r3, [r4, #88] ; 0x58 + 800aad0: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800aad4: 3b01 subs r3, #1 + 800aad6: b29b uxth r3, r3 + 800aad8: f8a4 305e strh.w r3, [r4, #94] ; 0x5e + 800aadc: 6823 ldr r3, [r4, #0] + 800aade: 69df ldr r7, [r3, #28] + 800aae0: 0778 lsls r0, r7, #29 + 800aae2: d02c beq.n 800ab3e <UART_RxISR_8BIT_FIFOEN+0xfa> + 800aae4: 07f9 lsls r1, r7, #31 + 800aae6: d50a bpl.n 800aafe <UART_RxISR_8BIT_FIFOEN+0xba> + 800aae8: 9a01 ldr r2, [sp, #4] + 800aaea: 05d2 lsls r2, r2, #23 + 800aaec: d507 bpl.n 800aafe <UART_RxISR_8BIT_FIFOEN+0xba> + 800aaee: 2101 movs r1, #1 + 800aaf0: 6219 str r1, [r3, #32] + 800aaf2: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800aaf6: f041 0101 orr.w r1, r1, #1 + 800aafa: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + 800aafe: 07b8 lsls r0, r7, #30 + 800ab00: d509 bpl.n 800ab16 <UART_RxISR_8BIT_FIFOEN+0xd2> + 800ab02: 07e9 lsls r1, r5, #31 + 800ab04: d507 bpl.n 800ab16 <UART_RxISR_8BIT_FIFOEN+0xd2> + 800ab06: 2102 movs r1, #2 + 800ab08: 6219 str r1, [r3, #32] + 800ab0a: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800ab0e: f041 0104 orr.w r1, r1, #4 + 800ab12: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + 800ab16: 077a lsls r2, r7, #29 + 800ab18: d509 bpl.n 800ab2e <UART_RxISR_8BIT_FIFOEN+0xea> + 800ab1a: 07e8 lsls r0, r5, #31 + 800ab1c: d507 bpl.n 800ab2e <UART_RxISR_8BIT_FIFOEN+0xea> + 800ab1e: 2104 movs r1, #4 + 800ab20: 6219 str r1, [r3, #32] + 800ab22: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800ab26: f043 0302 orr.w r3, r3, #2 + 800ab2a: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800ab2e: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800ab32: b123 cbz r3, 800ab3e <UART_RxISR_8BIT_FIFOEN+0xfa> + 800ab34: 4620 mov r0, r4 + 800ab36: f7ff fd10 bl 800a55a <HAL_UART_ErrorCallback> + 800ab3a: f8c4 6090 str.w r6, [r4, #144] ; 0x90 + 800ab3e: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800ab42: b29b uxth r3, r3 + 800ab44: 2b00 cmp r3, #0 + 800ab46: d193 bne.n 800aa70 <UART_RxISR_8BIT_FIFOEN+0x2c> + 800ab48: 6821 ldr r1, [r4, #0] + 800ab4a: e851 3f00 ldrex r3, [r1] + 800ab4e: f423 7380 bic.w r3, r3, #256 ; 0x100 + 800ab52: e841 3000 strex r0, r3, [r1] + 800ab56: 6823 ldr r3, [r4, #0] + 800ab58: 2800 cmp r0, #0 + 800ab5a: d1f5 bne.n 800ab48 <UART_RxISR_8BIT_FIFOEN+0x104> + 800ab5c: f103 0208 add.w r2, r3, #8 + 800ab60: e852 1f00 ldrex r1, [r2] + 800ab64: ea01 010a and.w r1, r1, sl + 800ab68: e842 1000 strex r0, r1, [r2] + 800ab6c: 2800 cmp r0, #0 + 800ab6e: d1f5 bne.n 800ab5c <UART_RxISR_8BIT_FIFOEN+0x118> + 800ab70: 2120 movs r1, #32 + 800ab72: 455b cmp r3, fp + 800ab74: f8c4 108c str.w r1, [r4, #140] ; 0x8c + 800ab78: 6760 str r0, [r4, #116] ; 0x74 + 800ab7a: 6720 str r0, [r4, #112] ; 0x70 + 800ab7c: d00a beq.n 800ab94 <UART_RxISR_8BIT_FIFOEN+0x150> + 800ab7e: 6859 ldr r1, [r3, #4] + 800ab80: 0209 lsls r1, r1, #8 + 800ab82: d507 bpl.n 800ab94 <UART_RxISR_8BIT_FIFOEN+0x150> + 800ab84: e853 1f00 ldrex r1, [r3] + 800ab88: f021 6180 bic.w r1, r1, #67108864 ; 0x4000000 + 800ab8c: e843 1000 strex r0, r1, [r3] + 800ab90: 2800 cmp r0, #0 + 800ab92: d1f7 bne.n 800ab84 <UART_RxISR_8BIT_FIFOEN+0x140> + 800ab94: 6ee1 ldr r1, [r4, #108] ; 0x6c + 800ab96: 2901 cmp r1, #1 + 800ab98: d113 bne.n 800abc2 <UART_RxISR_8BIT_FIFOEN+0x17e> + 800ab9a: 66e6 str r6, [r4, #108] ; 0x6c + 800ab9c: e853 1f00 ldrex r1, [r3] + 800aba0: f021 0110 bic.w r1, r1, #16 + 800aba4: e843 1000 strex r0, r1, [r3] + 800aba8: 2800 cmp r0, #0 + 800abaa: d1f7 bne.n 800ab9c <UART_RxISR_8BIT_FIFOEN+0x158> + 800abac: 69d9 ldr r1, [r3, #28] + 800abae: 06ca lsls r2, r1, #27 + 800abb0: bf44 itt mi + 800abb2: 2110 movmi r1, #16 + 800abb4: 6219 strmi r1, [r3, #32] + 800abb6: 4620 mov r0, r4 + 800abb8: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800abbc: f7ff fcfc bl 800a5b8 <HAL_UARTEx_RxEventCallback> + 800abc0: e756 b.n 800aa70 <UART_RxISR_8BIT_FIFOEN+0x2c> + 800abc2: 4620 mov r0, r4 + 800abc4: f7f8 fac6 bl 8003154 <HAL_UART_RxCpltCallback> + 800abc8: e752 b.n 800aa70 <UART_RxISR_8BIT_FIFOEN+0x2c> + 800abca: 699a ldr r2, [r3, #24] + 800abcc: f042 0208 orr.w r2, r2, #8 + 800abd0: 619a str r2, [r3, #24] + 800abd2: e771 b.n 800aab8 <UART_RxISR_8BIT_FIFOEN+0x74> + 800abd4: effffffe .word 0xeffffffe + 800abd8: 40008000 .word 0x40008000 + 800abdc: 0800a8b5 .word 0x0800a8b5 + +0800abe0 <UART_RxISR_16BIT_FIFOEN>: + 800abe0: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800abe4: 6803 ldr r3, [r0, #0] + 800abe6: f8b0 8060 ldrh.w r8, [r0, #96] ; 0x60 + 800abea: 69df ldr r7, [r3, #28] + 800abec: 681a ldr r2, [r3, #0] + 800abee: 689d ldr r5, [r3, #8] + 800abf0: f8d0 108c ldr.w r1, [r0, #140] ; 0x8c + 800abf4: 9201 str r2, [sp, #4] + 800abf6: 2922 cmp r1, #34 ; 0x22 + 800abf8: 4604 mov r4, r0 + 800abfa: f040 80b2 bne.w 800ad62 <UART_RxISR_16BIT_FIFOEN+0x182> + 800abfe: f8b0 9068 ldrh.w r9, [r0, #104] ; 0x68 + 800ac02: f8df a168 ldr.w sl, [pc, #360] ; 800ad6c <UART_RxISR_16BIT_FIFOEN+0x18c> + 800ac06: f8df b168 ldr.w fp, [pc, #360] ; 800ad70 <UART_RxISR_16BIT_FIFOEN+0x190> + 800ac0a: 2600 movs r6, #0 + 800ac0c: f1b9 0f00 cmp.w r9, #0 + 800ac10: d001 beq.n 800ac16 <UART_RxISR_16BIT_FIFOEN+0x36> + 800ac12: 06bb lsls r3, r7, #26 + 800ac14: d421 bmi.n 800ac5a <UART_RxISR_16BIT_FIFOEN+0x7a> + 800ac16: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800ac1a: b29b uxth r3, r3 + 800ac1c: b1d3 cbz r3, 800ac54 <UART_RxISR_16BIT_FIFOEN+0x74> + 800ac1e: f8b4 2068 ldrh.w r2, [r4, #104] ; 0x68 + 800ac22: 429a cmp r2, r3 + 800ac24: d916 bls.n 800ac54 <UART_RxISR_16BIT_FIFOEN+0x74> + 800ac26: 6822 ldr r2, [r4, #0] + 800ac28: f102 0308 add.w r3, r2, #8 + 800ac2c: e853 3f00 ldrex r3, [r3] + 800ac30: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 800ac34: 3208 adds r2, #8 + 800ac36: e842 3100 strex r1, r3, [r2] + 800ac3a: 6822 ldr r2, [r4, #0] + 800ac3c: 2900 cmp r1, #0 + 800ac3e: d1f2 bne.n 800ac26 <UART_RxISR_16BIT_FIFOEN+0x46> + 800ac40: 4b4c ldr r3, [pc, #304] ; (800ad74 <UART_RxISR_16BIT_FIFOEN+0x194>) + 800ac42: 6763 str r3, [r4, #116] ; 0x74 + 800ac44: e852 3f00 ldrex r3, [r2] + 800ac48: f043 0320 orr.w r3, r3, #32 + 800ac4c: e842 3100 strex r1, r3, [r2] + 800ac50: 2900 cmp r1, #0 + 800ac52: d1f7 bne.n 800ac44 <UART_RxISR_16BIT_FIFOEN+0x64> + 800ac54: b003 add sp, #12 + 800ac56: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800ac5a: 6823 ldr r3, [r4, #0] + 800ac5c: 6da2 ldr r2, [r4, #88] ; 0x58 + 800ac5e: 6a59 ldr r1, [r3, #36] ; 0x24 + 800ac60: ea08 0101 and.w r1, r8, r1 + 800ac64: f822 1b02 strh.w r1, [r2], #2 + 800ac68: 65a2 str r2, [r4, #88] ; 0x58 + 800ac6a: f8b4 205e ldrh.w r2, [r4, #94] ; 0x5e + 800ac6e: 3a01 subs r2, #1 + 800ac70: b292 uxth r2, r2 + 800ac72: f8a4 205e strh.w r2, [r4, #94] ; 0x5e + 800ac76: 69df ldr r7, [r3, #28] + 800ac78: 0778 lsls r0, r7, #29 + 800ac7a: d02c beq.n 800acd6 <UART_RxISR_16BIT_FIFOEN+0xf6> + 800ac7c: 07f9 lsls r1, r7, #31 + 800ac7e: d50a bpl.n 800ac96 <UART_RxISR_16BIT_FIFOEN+0xb6> + 800ac80: 9a01 ldr r2, [sp, #4] + 800ac82: 05d2 lsls r2, r2, #23 + 800ac84: d507 bpl.n 800ac96 <UART_RxISR_16BIT_FIFOEN+0xb6> + 800ac86: 2101 movs r1, #1 + 800ac88: 6219 str r1, [r3, #32] + 800ac8a: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800ac8e: f041 0101 orr.w r1, r1, #1 + 800ac92: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + 800ac96: 07b8 lsls r0, r7, #30 + 800ac98: d509 bpl.n 800acae <UART_RxISR_16BIT_FIFOEN+0xce> + 800ac9a: 07e9 lsls r1, r5, #31 + 800ac9c: d507 bpl.n 800acae <UART_RxISR_16BIT_FIFOEN+0xce> + 800ac9e: 2102 movs r1, #2 + 800aca0: 6219 str r1, [r3, #32] + 800aca2: f8d4 1090 ldr.w r1, [r4, #144] ; 0x90 + 800aca6: f041 0104 orr.w r1, r1, #4 + 800acaa: f8c4 1090 str.w r1, [r4, #144] ; 0x90 + 800acae: 077a lsls r2, r7, #29 + 800acb0: d509 bpl.n 800acc6 <UART_RxISR_16BIT_FIFOEN+0xe6> + 800acb2: 07e8 lsls r0, r5, #31 + 800acb4: d507 bpl.n 800acc6 <UART_RxISR_16BIT_FIFOEN+0xe6> + 800acb6: 2104 movs r1, #4 + 800acb8: 6219 str r1, [r3, #32] + 800acba: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800acbe: f043 0302 orr.w r3, r3, #2 + 800acc2: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800acc6: f8d4 3090 ldr.w r3, [r4, #144] ; 0x90 + 800acca: b123 cbz r3, 800acd6 <UART_RxISR_16BIT_FIFOEN+0xf6> + 800accc: 4620 mov r0, r4 + 800acce: f7ff fc44 bl 800a55a <HAL_UART_ErrorCallback> + 800acd2: f8c4 6090 str.w r6, [r4, #144] ; 0x90 + 800acd6: f8b4 305e ldrh.w r3, [r4, #94] ; 0x5e + 800acda: b29b uxth r3, r3 + 800acdc: 2b00 cmp r3, #0 + 800acde: d195 bne.n 800ac0c <UART_RxISR_16BIT_FIFOEN+0x2c> + 800ace0: 6821 ldr r1, [r4, #0] + 800ace2: e851 3f00 ldrex r3, [r1] + 800ace6: f423 7380 bic.w r3, r3, #256 ; 0x100 + 800acea: e841 3000 strex r0, r3, [r1] + 800acee: 6823 ldr r3, [r4, #0] + 800acf0: 2800 cmp r0, #0 + 800acf2: d1f5 bne.n 800ace0 <UART_RxISR_16BIT_FIFOEN+0x100> + 800acf4: f103 0208 add.w r2, r3, #8 + 800acf8: e852 1f00 ldrex r1, [r2] + 800acfc: ea01 010a and.w r1, r1, sl + 800ad00: e842 1000 strex r0, r1, [r2] + 800ad04: 2800 cmp r0, #0 + 800ad06: d1f5 bne.n 800acf4 <UART_RxISR_16BIT_FIFOEN+0x114> + 800ad08: 2120 movs r1, #32 + 800ad0a: 455b cmp r3, fp + 800ad0c: f8c4 108c str.w r1, [r4, #140] ; 0x8c + 800ad10: 6760 str r0, [r4, #116] ; 0x74 + 800ad12: 6720 str r0, [r4, #112] ; 0x70 + 800ad14: d00a beq.n 800ad2c <UART_RxISR_16BIT_FIFOEN+0x14c> + 800ad16: 6859 ldr r1, [r3, #4] + 800ad18: 0209 lsls r1, r1, #8 + 800ad1a: d507 bpl.n 800ad2c <UART_RxISR_16BIT_FIFOEN+0x14c> + 800ad1c: e853 1f00 ldrex r1, [r3] + 800ad20: f021 6180 bic.w r1, r1, #67108864 ; 0x4000000 + 800ad24: e843 1000 strex r0, r1, [r3] + 800ad28: 2800 cmp r0, #0 + 800ad2a: d1f7 bne.n 800ad1c <UART_RxISR_16BIT_FIFOEN+0x13c> + 800ad2c: 6ee1 ldr r1, [r4, #108] ; 0x6c + 800ad2e: 2901 cmp r1, #1 + 800ad30: d113 bne.n 800ad5a <UART_RxISR_16BIT_FIFOEN+0x17a> + 800ad32: 66e6 str r6, [r4, #108] ; 0x6c + 800ad34: e853 1f00 ldrex r1, [r3] + 800ad38: f021 0110 bic.w r1, r1, #16 + 800ad3c: e843 1000 strex r0, r1, [r3] + 800ad40: 2800 cmp r0, #0 + 800ad42: d1f7 bne.n 800ad34 <UART_RxISR_16BIT_FIFOEN+0x154> + 800ad44: 69d9 ldr r1, [r3, #28] + 800ad46: 06ca lsls r2, r1, #27 + 800ad48: bf44 itt mi + 800ad4a: 2110 movmi r1, #16 + 800ad4c: 6219 strmi r1, [r3, #32] + 800ad4e: 4620 mov r0, r4 + 800ad50: f8b4 105c ldrh.w r1, [r4, #92] ; 0x5c + 800ad54: f7ff fc30 bl 800a5b8 <HAL_UARTEx_RxEventCallback> + 800ad58: e758 b.n 800ac0c <UART_RxISR_16BIT_FIFOEN+0x2c> + 800ad5a: 4620 mov r0, r4 + 800ad5c: f7f8 f9fa bl 8003154 <HAL_UART_RxCpltCallback> + 800ad60: e754 b.n 800ac0c <UART_RxISR_16BIT_FIFOEN+0x2c> + 800ad62: 699a ldr r2, [r3, #24] + 800ad64: f042 0208 orr.w r2, r2, #8 + 800ad68: 619a str r2, [r3, #24] + 800ad6a: e773 b.n 800ac54 <UART_RxISR_16BIT_FIFOEN+0x74> + 800ad6c: effffffe .word 0xeffffffe + 800ad70: 40008000 .word 0x40008000 + 800ad74: 0800a981 .word 0x0800a981 + +0800ad78 <UART_SetConfig>: + 800ad78: b538 push {r3, r4, r5, lr} + 800ad7a: 4604 mov r4, r0 + 800ad7c: 6803 ldr r3, [r0, #0] + 800ad7e: 6921 ldr r1, [r4, #16] + 800ad80: 68a2 ldr r2, [r4, #8] + 800ad82: 681d ldr r5, [r3, #0] + 800ad84: 69c0 ldr r0, [r0, #28] + 800ad86: 430a orrs r2, r1 + 800ad88: 6961 ldr r1, [r4, #20] + 800ad8a: 430a orrs r2, r1 + 800ad8c: 497d ldr r1, [pc, #500] ; (800af84 <UART_SetConfig+0x20c>) + 800ad8e: 4302 orrs r2, r0 + 800ad90: 4029 ands r1, r5 + 800ad92: 430a orrs r2, r1 + 800ad94: 601a str r2, [r3, #0] + 800ad96: 685a ldr r2, [r3, #4] + 800ad98: 68e1 ldr r1, [r4, #12] + 800ad9a: f422 5240 bic.w r2, r2, #12288 ; 0x3000 + 800ad9e: 430a orrs r2, r1 + 800ada0: 605a str r2, [r3, #4] + 800ada2: 4a79 ldr r2, [pc, #484] ; (800af88 <UART_SetConfig+0x210>) + 800ada4: 69a1 ldr r1, [r4, #24] + 800ada6: 4293 cmp r3, r2 + 800ada8: bf1c itt ne + 800adaa: 6a22 ldrne r2, [r4, #32] + 800adac: 4311 orrne r1, r2 + 800adae: 689a ldr r2, [r3, #8] + 800adb0: f022 426e bic.w r2, r2, #3992977408 ; 0xee000000 + 800adb4: f422 6230 bic.w r2, r2, #2816 ; 0xb00 + 800adb8: 430a orrs r2, r1 + 800adba: 609a str r2, [r3, #8] + 800adbc: 6ada ldr r2, [r3, #44] ; 0x2c + 800adbe: 6a61 ldr r1, [r4, #36] ; 0x24 + 800adc0: f022 020f bic.w r2, r2, #15 + 800adc4: 430a orrs r2, r1 + 800adc6: 62da str r2, [r3, #44] ; 0x2c + 800adc8: 4a70 ldr r2, [pc, #448] ; (800af8c <UART_SetConfig+0x214>) + 800adca: 4293 cmp r3, r2 + 800adcc: d11c bne.n 800ae08 <UART_SetConfig+0x90> + 800adce: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800add2: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 800add6: f003 0303 and.w r3, r3, #3 + 800adda: f443 3340 orr.w r3, r3, #196608 ; 0x30000 + 800adde: f5a3 3340 sub.w r3, r3, #196608 ; 0x30000 + 800ade2: 3b01 subs r3, #1 + 800ade4: 2b02 cmp r3, #2 + 800ade6: f200 80c7 bhi.w 800af78 <UART_SetConfig+0x200> + 800adea: 4a69 ldr r2, [pc, #420] ; (800af90 <UART_SetConfig+0x218>) + 800adec: 5c9b ldrb r3, [r3, r2] + 800adee: f5b0 4f00 cmp.w r0, #32768 ; 0x8000 + 800adf2: f040 8089 bne.w 800af08 <UART_SetConfig+0x190> + 800adf6: 2b08 cmp r3, #8 + 800adf8: d824 bhi.n 800ae44 <UART_SetConfig+0xcc> + 800adfa: e8df f003 tbb [pc, r3] + 800adfe: c061 .short 0xc061 + 800ae00: 23802383 .word 0x23802383 + 800ae04: 2323 .short 0x2323 + 800ae06: 65 .byte 0x65 + 800ae07: 00 .byte 0x00 + 800ae08: 4a62 ldr r2, [pc, #392] ; (800af94 <UART_SetConfig+0x21c>) + 800ae0a: 4293 cmp r3, r2 + 800ae0c: d109 bne.n 800ae22 <UART_SetConfig+0xaa> + 800ae0e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800ae12: 4a61 ldr r2, [pc, #388] ; (800af98 <UART_SetConfig+0x220>) + 800ae14: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 800ae18: f003 030c and.w r3, r3, #12 + 800ae1c: f443 2340 orr.w r3, r3, #786432 ; 0xc0000 + 800ae20: e7e4 b.n 800adec <UART_SetConfig+0x74> + 800ae22: 4a59 ldr r2, [pc, #356] ; (800af88 <UART_SetConfig+0x210>) + 800ae24: 4293 cmp r3, r2 + 800ae26: d10d bne.n 800ae44 <UART_SetConfig+0xcc> + 800ae28: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 800ae2c: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 800ae30: f403 6340 and.w r3, r3, #3072 ; 0xc00 + 800ae34: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 800ae38: d01a beq.n 800ae70 <UART_SetConfig+0xf8> + 800ae3a: d805 bhi.n 800ae48 <UART_SetConfig+0xd0> + 800ae3c: b153 cbz r3, 800ae54 <UART_SetConfig+0xdc> + 800ae3e: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 800ae42: d012 beq.n 800ae6a <UART_SetConfig+0xf2> + 800ae44: 2001 movs r0, #1 + 800ae46: e009 b.n 800ae5c <UART_SetConfig+0xe4> + 800ae48: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 + 800ae4c: d1fa bne.n 800ae44 <UART_SetConfig+0xcc> + 800ae4e: f44f 4000 mov.w r0, #32768 ; 0x8000 + 800ae52: e00e b.n 800ae72 <UART_SetConfig+0xfa> + 800ae54: f7fe fcd2 bl 80097fc <HAL_RCC_GetPCLK1Freq> + 800ae58: b958 cbnz r0, 800ae72 <UART_SetConfig+0xfa> + 800ae5a: 2000 movs r0, #0 + 800ae5c: f04f 1301 mov.w r3, #65537 ; 0x10001 + 800ae60: 66a3 str r3, [r4, #104] ; 0x68 + 800ae62: 2300 movs r3, #0 + 800ae64: e9c4 331d strd r3, r3, [r4, #116] ; 0x74 + 800ae68: bd38 pop {r3, r4, r5, pc} + 800ae6a: f7fe f8cf bl 800900c <HAL_RCC_GetSysClockFreq> + 800ae6e: e7f3 b.n 800ae58 <UART_SetConfig+0xe0> + 800ae70: 484a ldr r0, [pc, #296] ; (800af9c <UART_SetConfig+0x224>) + 800ae72: 6865 ldr r5, [r4, #4] + 800ae74: 4b4a ldr r3, [pc, #296] ; (800afa0 <UART_SetConfig+0x228>) + 800ae76: 6a62 ldr r2, [r4, #36] ; 0x24 + 800ae78: eb05 0145 add.w r1, r5, r5, lsl #1 + 800ae7c: f833 2012 ldrh.w r2, [r3, r2, lsl #1] + 800ae80: fbb0 f3f2 udiv r3, r0, r2 + 800ae84: 4299 cmp r1, r3 + 800ae86: d8dd bhi.n 800ae44 <UART_SetConfig+0xcc> + 800ae88: ebb3 3f05 cmp.w r3, r5, lsl #12 + 800ae8c: d8da bhi.n 800ae44 <UART_SetConfig+0xcc> + 800ae8e: 2300 movs r3, #0 + 800ae90: 4619 mov r1, r3 + 800ae92: f7f6 fe3d bl 8001b10 <__aeabi_uldivmod> + 800ae96: 0209 lsls r1, r1, #8 + 800ae98: ea41 6110 orr.w r1, r1, r0, lsr #24 + 800ae9c: 086b lsrs r3, r5, #1 + 800ae9e: 0200 lsls r0, r0, #8 + 800aea0: 18c0 adds r0, r0, r3 + 800aea2: 462a mov r2, r5 + 800aea4: f04f 0300 mov.w r3, #0 + 800aea8: f141 0100 adc.w r1, r1, #0 + 800aeac: f7f6 fe30 bl 8001b10 <__aeabi_uldivmod> + 800aeb0: 4b3c ldr r3, [pc, #240] ; (800afa4 <UART_SetConfig+0x22c>) + 800aeb2: f5a0 7240 sub.w r2, r0, #768 ; 0x300 + 800aeb6: 429a cmp r2, r3 + 800aeb8: d8c4 bhi.n 800ae44 <UART_SetConfig+0xcc> + 800aeba: 6823 ldr r3, [r4, #0] + 800aebc: 60d8 str r0, [r3, #12] + 800aebe: e7cc b.n 800ae5a <UART_SetConfig+0xe2> + 800aec0: f7fe fc9c bl 80097fc <HAL_RCC_GetPCLK1Freq> + 800aec4: 2800 cmp r0, #0 + 800aec6: d0c8 beq.n 800ae5a <UART_SetConfig+0xe2> + 800aec8: 6861 ldr r1, [r4, #4] + 800aeca: 4b35 ldr r3, [pc, #212] ; (800afa0 <UART_SetConfig+0x228>) + 800aecc: 6a62 ldr r2, [r4, #36] ; 0x24 + 800aece: f833 2012 ldrh.w r2, [r3, r2, lsl #1] + 800aed2: fbb0 f2f2 udiv r2, r0, r2 + 800aed6: 084b lsrs r3, r1, #1 + 800aed8: eb03 0342 add.w r3, r3, r2, lsl #1 + 800aedc: f64f 72ef movw r2, #65519 ; 0xffef + 800aee0: fbb3 f3f1 udiv r3, r3, r1 + 800aee4: f1a3 0110 sub.w r1, r3, #16 + 800aee8: 4291 cmp r1, r2 + 800aeea: d8ab bhi.n 800ae44 <UART_SetConfig+0xcc> + 800aeec: f023 020f bic.w r2, r3, #15 + 800aef0: 6821 ldr r1, [r4, #0] + 800aef2: b292 uxth r2, r2 + 800aef4: f3c3 0342 ubfx r3, r3, #1, #3 + 800aef8: 4313 orrs r3, r2 + 800aefa: 60cb str r3, [r1, #12] + 800aefc: e7ad b.n 800ae5a <UART_SetConfig+0xe2> + 800aefe: f7fe f885 bl 800900c <HAL_RCC_GetSysClockFreq> + 800af02: e7df b.n 800aec4 <UART_SetConfig+0x14c> + 800af04: 4825 ldr r0, [pc, #148] ; (800af9c <UART_SetConfig+0x224>) + 800af06: e7df b.n 800aec8 <UART_SetConfig+0x150> + 800af08: 2b08 cmp r3, #8 + 800af0a: d89b bhi.n 800ae44 <UART_SetConfig+0xcc> + 800af0c: a201 add r2, pc, #4 ; (adr r2, 800af14 <UART_SetConfig+0x19c>) + 800af0e: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 800af12: bf00 nop + 800af14: 0800af5d .word 0x0800af5d + 800af18: 0800af69 .word 0x0800af69 + 800af1c: 0800af75 .word 0x0800af75 + 800af20: 0800ae45 .word 0x0800ae45 + 800af24: 0800af6f .word 0x0800af6f + 800af28: 0800ae45 .word 0x0800ae45 + 800af2c: 0800ae45 .word 0x0800ae45 + 800af30: 0800ae45 .word 0x0800ae45 + 800af34: 0800af39 .word 0x0800af39 + 800af38: f44f 4000 mov.w r0, #32768 ; 0x8000 + 800af3c: 6863 ldr r3, [r4, #4] + 800af3e: 6a61 ldr r1, [r4, #36] ; 0x24 + 800af40: 4a17 ldr r2, [pc, #92] ; (800afa0 <UART_SetConfig+0x228>) + 800af42: f832 2011 ldrh.w r2, [r2, r1, lsl #1] + 800af46: fbb0 f0f2 udiv r0, r0, r2 + 800af4a: eb00 0053 add.w r0, r0, r3, lsr #1 + 800af4e: fbb0 f0f3 udiv r0, r0, r3 + 800af52: f64f 73ef movw r3, #65519 ; 0xffef + 800af56: f1a0 0210 sub.w r2, r0, #16 + 800af5a: e7ac b.n 800aeb6 <UART_SetConfig+0x13e> + 800af5c: f7fe fc4e bl 80097fc <HAL_RCC_GetPCLK1Freq> + 800af60: 2800 cmp r0, #0 + 800af62: f43f af7a beq.w 800ae5a <UART_SetConfig+0xe2> + 800af66: e7e9 b.n 800af3c <UART_SetConfig+0x1c4> + 800af68: f7fe fc58 bl 800981c <HAL_RCC_GetPCLK2Freq> + 800af6c: e7f8 b.n 800af60 <UART_SetConfig+0x1e8> + 800af6e: f7fe f84d bl 800900c <HAL_RCC_GetSysClockFreq> + 800af72: e7f5 b.n 800af60 <UART_SetConfig+0x1e8> + 800af74: 4809 ldr r0, [pc, #36] ; (800af9c <UART_SetConfig+0x224>) + 800af76: e7e1 b.n 800af3c <UART_SetConfig+0x1c4> + 800af78: f5b0 4f00 cmp.w r0, #32768 ; 0x8000 + 800af7c: d1f4 bne.n 800af68 <UART_SetConfig+0x1f0> + 800af7e: f7fe fc4d bl 800981c <HAL_RCC_GetPCLK2Freq> + 800af82: e79f b.n 800aec4 <UART_SetConfig+0x14c> + 800af84: cfff69f3 .word 0xcfff69f3 + 800af88: 40008000 .word 0x40008000 + 800af8c: 40013800 .word 0x40013800 + 800af90: 08015270 .word 0x08015270 + 800af94: 40004400 .word 0x40004400 + 800af98: 07f55273 .word 0x07f55273 + 800af9c: 00f42400 .word 0x00f42400 + 800afa0: 08015280 .word 0x08015280 + 800afa4: 000ffcff .word 0x000ffcff + +0800afa8 <UART_AdvFeatureConfig>: + 800afa8: 6a83 ldr r3, [r0, #40] ; 0x28 + 800afaa: 07da lsls r2, r3, #31 + 800afac: b510 push {r4, lr} + 800afae: d506 bpl.n 800afbe <UART_AdvFeatureConfig+0x16> + 800afb0: 6801 ldr r1, [r0, #0] + 800afb2: 6ac4 ldr r4, [r0, #44] ; 0x2c + 800afb4: 684a ldr r2, [r1, #4] + 800afb6: f422 3200 bic.w r2, r2, #131072 ; 0x20000 + 800afba: 4322 orrs r2, r4 + 800afbc: 604a str r2, [r1, #4] + 800afbe: 079c lsls r4, r3, #30 + 800afc0: d506 bpl.n 800afd0 <UART_AdvFeatureConfig+0x28> + 800afc2: 6801 ldr r1, [r0, #0] + 800afc4: 6b04 ldr r4, [r0, #48] ; 0x30 + 800afc6: 684a ldr r2, [r1, #4] + 800afc8: f422 3280 bic.w r2, r2, #65536 ; 0x10000 + 800afcc: 4322 orrs r2, r4 + 800afce: 604a str r2, [r1, #4] + 800afd0: 0759 lsls r1, r3, #29 + 800afd2: d506 bpl.n 800afe2 <UART_AdvFeatureConfig+0x3a> + 800afd4: 6801 ldr r1, [r0, #0] + 800afd6: 6b44 ldr r4, [r0, #52] ; 0x34 + 800afd8: 684a ldr r2, [r1, #4] + 800afda: f422 2280 bic.w r2, r2, #262144 ; 0x40000 + 800afde: 4322 orrs r2, r4 + 800afe0: 604a str r2, [r1, #4] + 800afe2: 071a lsls r2, r3, #28 + 800afe4: d506 bpl.n 800aff4 <UART_AdvFeatureConfig+0x4c> + 800afe6: 6801 ldr r1, [r0, #0] + 800afe8: 6b84 ldr r4, [r0, #56] ; 0x38 + 800afea: 684a ldr r2, [r1, #4] + 800afec: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 800aff0: 4322 orrs r2, r4 + 800aff2: 604a str r2, [r1, #4] + 800aff4: 06dc lsls r4, r3, #27 + 800aff6: d506 bpl.n 800b006 <UART_AdvFeatureConfig+0x5e> + 800aff8: 6801 ldr r1, [r0, #0] + 800affa: 6bc4 ldr r4, [r0, #60] ; 0x3c + 800affc: 688a ldr r2, [r1, #8] + 800affe: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 800b002: 4322 orrs r2, r4 + 800b004: 608a str r2, [r1, #8] + 800b006: 0699 lsls r1, r3, #26 + 800b008: d506 bpl.n 800b018 <UART_AdvFeatureConfig+0x70> + 800b00a: 6801 ldr r1, [r0, #0] + 800b00c: 6c04 ldr r4, [r0, #64] ; 0x40 + 800b00e: 688a ldr r2, [r1, #8] + 800b010: f422 5200 bic.w r2, r2, #8192 ; 0x2000 + 800b014: 4322 orrs r2, r4 + 800b016: 608a str r2, [r1, #8] + 800b018: 065a lsls r2, r3, #25 + 800b01a: d50f bpl.n 800b03c <UART_AdvFeatureConfig+0x94> + 800b01c: 6801 ldr r1, [r0, #0] + 800b01e: 6c44 ldr r4, [r0, #68] ; 0x44 + 800b020: 684a ldr r2, [r1, #4] + 800b022: f422 1280 bic.w r2, r2, #1048576 ; 0x100000 + 800b026: 4322 orrs r2, r4 + 800b028: f5b4 1f80 cmp.w r4, #1048576 ; 0x100000 + 800b02c: 604a str r2, [r1, #4] + 800b02e: d105 bne.n 800b03c <UART_AdvFeatureConfig+0x94> + 800b030: 684a ldr r2, [r1, #4] + 800b032: 6c84 ldr r4, [r0, #72] ; 0x48 + 800b034: f422 02c0 bic.w r2, r2, #6291456 ; 0x600000 + 800b038: 4322 orrs r2, r4 + 800b03a: 604a str r2, [r1, #4] + 800b03c: 061b lsls r3, r3, #24 + 800b03e: d506 bpl.n 800b04e <UART_AdvFeatureConfig+0xa6> + 800b040: 6802 ldr r2, [r0, #0] + 800b042: 6cc1 ldr r1, [r0, #76] ; 0x4c + 800b044: 6853 ldr r3, [r2, #4] + 800b046: f423 2300 bic.w r3, r3, #524288 ; 0x80000 + 800b04a: 430b orrs r3, r1 + 800b04c: 6053 str r3, [r2, #4] + 800b04e: bd10 pop {r4, pc} + +0800b050 <UART_WaitOnFlagUntilTimeout>: + 800b050: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800b054: f8dd 8018 ldr.w r8, [sp, #24] + 800b058: 4604 mov r4, r0 + 800b05a: 460e mov r6, r1 + 800b05c: 4615 mov r5, r2 + 800b05e: 461f mov r7, r3 + 800b060: 6822 ldr r2, [r4, #0] + 800b062: 69d3 ldr r3, [r2, #28] + 800b064: ea36 0303 bics.w r3, r6, r3 + 800b068: bf0c ite eq + 800b06a: 2301 moveq r3, #1 + 800b06c: 2300 movne r3, #0 + 800b06e: 42ab cmp r3, r5 + 800b070: d001 beq.n 800b076 <UART_WaitOnFlagUntilTimeout+0x26> + 800b072: 2000 movs r0, #0 + 800b074: e027 b.n 800b0c6 <UART_WaitOnFlagUntilTimeout+0x76> + 800b076: f1b8 3fff cmp.w r8, #4294967295 + 800b07a: d0f2 beq.n 800b062 <UART_WaitOnFlagUntilTimeout+0x12> + 800b07c: f7f7 fd88 bl 8002b90 <HAL_GetTick> + 800b080: 1bc0 subs r0, r0, r7 + 800b082: 4540 cmp r0, r8 + 800b084: 6820 ldr r0, [r4, #0] + 800b086: d802 bhi.n 800b08e <UART_WaitOnFlagUntilTimeout+0x3e> + 800b088: f1b8 0f00 cmp.w r8, #0 + 800b08c: d11d bne.n 800b0ca <UART_WaitOnFlagUntilTimeout+0x7a> + 800b08e: e850 3f00 ldrex r3, [r0] + 800b092: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + 800b096: e840 3200 strex r2, r3, [r0] + 800b09a: 2a00 cmp r2, #0 + 800b09c: d1f7 bne.n 800b08e <UART_WaitOnFlagUntilTimeout+0x3e> + 800b09e: f100 0308 add.w r3, r0, #8 + 800b0a2: e853 3f00 ldrex r3, [r3] + 800b0a6: f023 0301 bic.w r3, r3, #1 + 800b0aa: f100 0108 add.w r1, r0, #8 + 800b0ae: e841 3200 strex r2, r3, [r1] + 800b0b2: 2a00 cmp r2, #0 + 800b0b4: d1f3 bne.n 800b09e <UART_WaitOnFlagUntilTimeout+0x4e> + 800b0b6: 2320 movs r3, #32 + 800b0b8: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800b0bc: f8c4 308c str.w r3, [r4, #140] ; 0x8c + 800b0c0: f884 2084 strb.w r2, [r4, #132] ; 0x84 + 800b0c4: 2003 movs r0, #3 + 800b0c6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800b0ca: 6803 ldr r3, [r0, #0] + 800b0cc: 075a lsls r2, r3, #29 + 800b0ce: d5c7 bpl.n 800b060 <UART_WaitOnFlagUntilTimeout+0x10> + 800b0d0: 69c3 ldr r3, [r0, #28] + 800b0d2: 051b lsls r3, r3, #20 + 800b0d4: d5c4 bpl.n 800b060 <UART_WaitOnFlagUntilTimeout+0x10> + 800b0d6: f44f 6300 mov.w r3, #2048 ; 0x800 + 800b0da: 6203 str r3, [r0, #32] + 800b0dc: e850 3f00 ldrex r3, [r0] + 800b0e0: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + 800b0e4: e840 3200 strex r2, r3, [r0] + 800b0e8: 2a00 cmp r2, #0 + 800b0ea: d1f7 bne.n 800b0dc <UART_WaitOnFlagUntilTimeout+0x8c> + 800b0ec: f100 0308 add.w r3, r0, #8 + 800b0f0: e853 3f00 ldrex r3, [r3] + 800b0f4: f023 0301 bic.w r3, r3, #1 + 800b0f8: f100 0108 add.w r1, r0, #8 + 800b0fc: e841 3200 strex r2, r3, [r1] + 800b100: 2a00 cmp r2, #0 + 800b102: d1f3 bne.n 800b0ec <UART_WaitOnFlagUntilTimeout+0x9c> + 800b104: 2320 movs r3, #32 + 800b106: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800b10a: f8c4 308c str.w r3, [r4, #140] ; 0x8c + 800b10e: f8c4 3090 str.w r3, [r4, #144] ; 0x90 + 800b112: e7d5 b.n 800b0c0 <UART_WaitOnFlagUntilTimeout+0x70> + +0800b114 <UART_CheckIdleState>: + 800b114: b573 push {r0, r1, r4, r5, r6, lr} + 800b116: 4604 mov r4, r0 + 800b118: 2600 movs r6, #0 + 800b11a: f8c0 6090 str.w r6, [r0, #144] ; 0x90 + 800b11e: f7f7 fd37 bl 8002b90 <HAL_GetTick> + 800b122: 6823 ldr r3, [r4, #0] + 800b124: 681b ldr r3, [r3, #0] + 800b126: 071a lsls r2, r3, #28 + 800b128: 4605 mov r5, r0 + 800b12a: d419 bmi.n 800b160 <UART_CheckIdleState+0x4c> + 800b12c: 6823 ldr r3, [r4, #0] + 800b12e: 681b ldr r3, [r3, #0] + 800b130: 075b lsls r3, r3, #29 + 800b132: d50a bpl.n 800b14a <UART_CheckIdleState+0x36> + 800b134: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 800b138: 9300 str r3, [sp, #0] + 800b13a: 2200 movs r2, #0 + 800b13c: 462b mov r3, r5 + 800b13e: f44f 0180 mov.w r1, #4194304 ; 0x400000 + 800b142: 4620 mov r0, r4 + 800b144: f7ff ff84 bl 800b050 <UART_WaitOnFlagUntilTimeout> + 800b148: b9b0 cbnz r0, 800b178 <UART_CheckIdleState+0x64> + 800b14a: 2000 movs r0, #0 + 800b14c: 2320 movs r3, #32 + 800b14e: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800b152: f884 0084 strb.w r0, [r4, #132] ; 0x84 + 800b156: f8c4 308c str.w r3, [r4, #140] ; 0x8c + 800b15a: 66e0 str r0, [r4, #108] ; 0x6c + 800b15c: 6720 str r0, [r4, #112] ; 0x70 + 800b15e: e00c b.n 800b17a <UART_CheckIdleState+0x66> + 800b160: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 800b164: 9300 str r3, [sp, #0] + 800b166: 4632 mov r2, r6 + 800b168: 4603 mov r3, r0 + 800b16a: f44f 1100 mov.w r1, #2097152 ; 0x200000 + 800b16e: 4620 mov r0, r4 + 800b170: f7ff ff6e bl 800b050 <UART_WaitOnFlagUntilTimeout> + 800b174: 2800 cmp r0, #0 + 800b176: d0d9 beq.n 800b12c <UART_CheckIdleState+0x18> + 800b178: 2003 movs r0, #3 + 800b17a: b002 add sp, #8 + 800b17c: bd70 pop {r4, r5, r6, pc} + +0800b17e <HAL_UART_Init>: + 800b17e: b510 push {r4, lr} + 800b180: 4604 mov r4, r0 + 800b182: b350 cbz r0, 800b1da <HAL_UART_Init+0x5c> + 800b184: f8d0 3088 ldr.w r3, [r0, #136] ; 0x88 + 800b188: b91b cbnz r3, 800b192 <HAL_UART_Init+0x14> + 800b18a: f880 3084 strb.w r3, [r0, #132] ; 0x84 + 800b18e: f7f7 febf bl 8002f10 <HAL_UART_MspInit> + 800b192: 6822 ldr r2, [r4, #0] + 800b194: 2324 movs r3, #36 ; 0x24 + 800b196: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800b19a: 6813 ldr r3, [r2, #0] + 800b19c: f023 0301 bic.w r3, r3, #1 + 800b1a0: 6013 str r3, [r2, #0] + 800b1a2: 4620 mov r0, r4 + 800b1a4: f7ff fde8 bl 800ad78 <UART_SetConfig> + 800b1a8: 2801 cmp r0, #1 + 800b1aa: d016 beq.n 800b1da <HAL_UART_Init+0x5c> + 800b1ac: 6aa3 ldr r3, [r4, #40] ; 0x28 + 800b1ae: b113 cbz r3, 800b1b6 <HAL_UART_Init+0x38> + 800b1b0: 4620 mov r0, r4 + 800b1b2: f7ff fef9 bl 800afa8 <UART_AdvFeatureConfig> + 800b1b6: 6823 ldr r3, [r4, #0] + 800b1b8: 685a ldr r2, [r3, #4] + 800b1ba: f422 4290 bic.w r2, r2, #18432 ; 0x4800 + 800b1be: 605a str r2, [r3, #4] + 800b1c0: 689a ldr r2, [r3, #8] + 800b1c2: f022 022a bic.w r2, r2, #42 ; 0x2a + 800b1c6: 609a str r2, [r3, #8] + 800b1c8: 681a ldr r2, [r3, #0] + 800b1ca: f042 0201 orr.w r2, r2, #1 + 800b1ce: 4620 mov r0, r4 + 800b1d0: 601a str r2, [r3, #0] + 800b1d2: e8bd 4010 ldmia.w sp!, {r4, lr} + 800b1d6: f7ff bf9d b.w 800b114 <UART_CheckIdleState> + 800b1da: 2001 movs r0, #1 + 800b1dc: bd10 pop {r4, pc} + ... + +0800b1e0 <UART_Start_Receive_IT>: + 800b1e0: b530 push {r4, r5, lr} + 800b1e2: 6581 str r1, [r0, #88] ; 0x58 + 800b1e4: 6881 ldr r1, [r0, #8] + 800b1e6: f8a0 205c strh.w r2, [r0, #92] ; 0x5c + 800b1ea: 2300 movs r3, #0 + 800b1ec: f5b1 5f80 cmp.w r1, #4096 ; 0x1000 + 800b1f0: f8a0 205e strh.w r2, [r0, #94] ; 0x5e + 800b1f4: 6743 str r3, [r0, #116] ; 0x74 + 800b1f6: d135 bne.n 800b264 <UART_Start_Receive_IT+0x84> + 800b1f8: 6903 ldr r3, [r0, #16] + 800b1fa: 2b00 cmp r3, #0 + 800b1fc: f240 13ff movw r3, #511 ; 0x1ff + 800b200: bf18 it ne + 800b202: 23ff movne r3, #255 ; 0xff + 800b204: f8a0 3060 strh.w r3, [r0, #96] ; 0x60 + 800b208: 2300 movs r3, #0 + 800b20a: f8c0 3090 str.w r3, [r0, #144] ; 0x90 + 800b20e: 2322 movs r3, #34 ; 0x22 + 800b210: f8c0 308c str.w r3, [r0, #140] ; 0x8c + 800b214: 6801 ldr r1, [r0, #0] + 800b216: f101 0308 add.w r3, r1, #8 + 800b21a: e853 3f00 ldrex r3, [r3] + 800b21e: f043 0301 orr.w r3, r3, #1 + 800b222: 3108 adds r1, #8 + 800b224: e841 3400 strex r4, r3, [r1] + 800b228: 6803 ldr r3, [r0, #0] + 800b22a: 2c00 cmp r4, #0 + 800b22c: d1f2 bne.n 800b214 <UART_Start_Receive_IT+0x34> + 800b22e: 6e45 ldr r5, [r0, #100] ; 0x64 + 800b230: 6884 ldr r4, [r0, #8] + 800b232: 6901 ldr r1, [r0, #16] + 800b234: f1b5 5f00 cmp.w r5, #536870912 ; 0x20000000 + 800b238: d134 bne.n 800b2a4 <UART_Start_Receive_IT+0xc4> + 800b23a: f8b0 5068 ldrh.w r5, [r0, #104] ; 0x68 + 800b23e: 4295 cmp r5, r2 + 800b240: d830 bhi.n 800b2a4 <UART_Start_Receive_IT+0xc4> + 800b242: f5b4 5f80 cmp.w r4, #4096 ; 0x1000 + 800b246: d11d bne.n 800b284 <UART_Start_Receive_IT+0xa4> + 800b248: 4a25 ldr r2, [pc, #148] ; (800b2e0 <UART_Start_Receive_IT+0x100>) + 800b24a: 4c26 ldr r4, [pc, #152] ; (800b2e4 <UART_Start_Receive_IT+0x104>) + 800b24c: 2900 cmp r1, #0 + 800b24e: bf18 it ne + 800b250: 4622 movne r2, r4 + 800b252: 6742 str r2, [r0, #116] ; 0x74 + 800b254: b1c1 cbz r1, 800b288 <UART_Start_Receive_IT+0xa8> + 800b256: e853 2f00 ldrex r2, [r3] + 800b25a: f442 7280 orr.w r2, r2, #256 ; 0x100 + 800b25e: e843 2100 strex r1, r2, [r3] + 800b262: e7f7 b.n 800b254 <UART_Start_Receive_IT+0x74> + 800b264: b929 cbnz r1, 800b272 <UART_Start_Receive_IT+0x92> + 800b266: 6903 ldr r3, [r0, #16] + 800b268: 2b00 cmp r3, #0 + 800b26a: bf14 ite ne + 800b26c: 237f movne r3, #127 ; 0x7f + 800b26e: 23ff moveq r3, #255 ; 0xff + 800b270: e7c8 b.n 800b204 <UART_Start_Receive_IT+0x24> + 800b272: f1b1 5f80 cmp.w r1, #268435456 ; 0x10000000 + 800b276: d1c5 bne.n 800b204 <UART_Start_Receive_IT+0x24> + 800b278: 6903 ldr r3, [r0, #16] + 800b27a: 2b00 cmp r3, #0 + 800b27c: bf0c ite eq + 800b27e: 237f moveq r3, #127 ; 0x7f + 800b280: 233f movne r3, #63 ; 0x3f + 800b282: e7bf b.n 800b204 <UART_Start_Receive_IT+0x24> + 800b284: 4a17 ldr r2, [pc, #92] ; (800b2e4 <UART_Start_Receive_IT+0x104>) + 800b286: e7e4 b.n 800b252 <UART_Start_Receive_IT+0x72> + 800b288: f103 0208 add.w r2, r3, #8 + 800b28c: e852 2f00 ldrex r2, [r2] + 800b290: f042 5280 orr.w r2, r2, #268435456 ; 0x10000000 + 800b294: f103 0008 add.w r0, r3, #8 + 800b298: e840 2100 strex r1, r2, [r0] + 800b29c: 2900 cmp r1, #0 + 800b29e: d1f3 bne.n 800b288 <UART_Start_Receive_IT+0xa8> + 800b2a0: 2000 movs r0, #0 + 800b2a2: bd30 pop {r4, r5, pc} + 800b2a4: f5b4 5f80 cmp.w r4, #4096 ; 0x1000 + 800b2a8: d10f bne.n 800b2ca <UART_Start_Receive_IT+0xea> + 800b2aa: 4a0f ldr r2, [pc, #60] ; (800b2e8 <UART_Start_Receive_IT+0x108>) + 800b2ac: 4c0f ldr r4, [pc, #60] ; (800b2ec <UART_Start_Receive_IT+0x10c>) + 800b2ae: 2900 cmp r1, #0 + 800b2b0: bf18 it ne + 800b2b2: 4622 movne r2, r4 + 800b2b4: 6742 str r2, [r0, #116] ; 0x74 + 800b2b6: b151 cbz r1, 800b2ce <UART_Start_Receive_IT+0xee> + 800b2b8: e853 2f00 ldrex r2, [r3] + 800b2bc: f442 7290 orr.w r2, r2, #288 ; 0x120 + 800b2c0: e843 2100 strex r1, r2, [r3] + 800b2c4: 2900 cmp r1, #0 + 800b2c6: d1f7 bne.n 800b2b8 <UART_Start_Receive_IT+0xd8> + 800b2c8: e7ea b.n 800b2a0 <UART_Start_Receive_IT+0xc0> + 800b2ca: 4a08 ldr r2, [pc, #32] ; (800b2ec <UART_Start_Receive_IT+0x10c>) + 800b2cc: e7f2 b.n 800b2b4 <UART_Start_Receive_IT+0xd4> + 800b2ce: e853 2f00 ldrex r2, [r3] + 800b2d2: f042 0220 orr.w r2, r2, #32 + 800b2d6: e843 2100 strex r1, r2, [r3] + 800b2da: 2900 cmp r1, #0 + 800b2dc: d1f7 bne.n 800b2ce <UART_Start_Receive_IT+0xee> + 800b2de: e7df b.n 800b2a0 <UART_Start_Receive_IT+0xc0> + 800b2e0: 0800abe1 .word 0x0800abe1 + 800b2e4: 0800aa45 .word 0x0800aa45 + 800b2e8: 0800a981 .word 0x0800a981 + 800b2ec: 0800a8b5 .word 0x0800a8b5 + +0800b2f0 <HAL_UART_Receive_IT>: + 800b2f0: f8d0 308c ldr.w r3, [r0, #140] ; 0x8c + 800b2f4: 2b20 cmp r3, #32 + 800b2f6: b430 push {r4, r5} + 800b2f8: d115 bne.n 800b326 <HAL_UART_Receive_IT+0x36> + 800b2fa: b1b9 cbz r1, 800b32c <HAL_UART_Receive_IT+0x3c> + 800b2fc: b1b2 cbz r2, 800b32c <HAL_UART_Receive_IT+0x3c> + 800b2fe: 2300 movs r3, #0 + 800b300: 6804 ldr r4, [r0, #0] + 800b302: 66c3 str r3, [r0, #108] ; 0x6c + 800b304: 4b0a ldr r3, [pc, #40] ; (800b330 <HAL_UART_Receive_IT+0x40>) + 800b306: 429c cmp r4, r3 + 800b308: d00a beq.n 800b320 <HAL_UART_Receive_IT+0x30> + 800b30a: 6863 ldr r3, [r4, #4] + 800b30c: 021b lsls r3, r3, #8 + 800b30e: d507 bpl.n 800b320 <HAL_UART_Receive_IT+0x30> + 800b310: e854 3f00 ldrex r3, [r4] + 800b314: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 + 800b318: e844 3500 strex r5, r3, [r4] + 800b31c: 2d00 cmp r5, #0 + 800b31e: d1f7 bne.n 800b310 <HAL_UART_Receive_IT+0x20> + 800b320: bc30 pop {r4, r5} + 800b322: f7ff bf5d b.w 800b1e0 <UART_Start_Receive_IT> + 800b326: 2002 movs r0, #2 + 800b328: bc30 pop {r4, r5} + 800b32a: 4770 bx lr + 800b32c: 2001 movs r0, #1 + 800b32e: e7fb b.n 800b328 <HAL_UART_Receive_IT+0x38> + 800b330: 40008000 .word 0x40008000 + +0800b334 <UARTEx_SetNbDataToProcess>: + 800b334: 6e43 ldr r3, [r0, #100] ; 0x64 + 800b336: b530 push {r4, r5, lr} + 800b338: b92b cbnz r3, 800b346 <UARTEx_SetNbDataToProcess+0x12> + 800b33a: 2301 movs r3, #1 + 800b33c: f8a0 306a strh.w r3, [r0, #106] ; 0x6a + 800b340: f8a0 3068 strh.w r3, [r0, #104] ; 0x68 + 800b344: bd30 pop {r4, r5, pc} + 800b346: 6803 ldr r3, [r0, #0] + 800b348: 4d09 ldr r5, [pc, #36] ; (800b370 <UARTEx_SetNbDataToProcess+0x3c>) + 800b34a: 689a ldr r2, [r3, #8] + 800b34c: 6899 ldr r1, [r3, #8] + 800b34e: 4c09 ldr r4, [pc, #36] ; (800b374 <UARTEx_SetNbDataToProcess+0x40>) + 800b350: 0f49 lsrs r1, r1, #29 + 800b352: f3c2 6242 ubfx r2, r2, #25, #3 + 800b356: 5c6b ldrb r3, [r5, r1] + 800b358: 5c61 ldrb r1, [r4, r1] + 800b35a: 00db lsls r3, r3, #3 + 800b35c: fbb3 f3f1 udiv r3, r3, r1 + 800b360: f8a0 306a strh.w r3, [r0, #106] ; 0x6a + 800b364: 5cab ldrb r3, [r5, r2] + 800b366: 5ca2 ldrb r2, [r4, r2] + 800b368: 00db lsls r3, r3, #3 + 800b36a: fbb3 f3f2 udiv r3, r3, r2 + 800b36e: e7e7 b.n 800b340 <UARTEx_SetNbDataToProcess+0xc> + 800b370: 080152a0 .word 0x080152a0 + 800b374: 08015298 .word 0x08015298 + +0800b378 <HAL_UARTEx_WakeupCallback>: + 800b378: 4770 bx lr + +0800b37a <HAL_UARTEx_RxFifoFullCallback>: + 800b37a: 4770 bx lr + +0800b37c <HAL_UARTEx_TxFifoEmptyCallback>: + 800b37c: 4770 bx lr + +0800b37e <HAL_UARTEx_StopModeWakeUpSourceConfig>: + 800b37e: b51f push {r0, r1, r2, r3, r4, lr} + 800b380: ab04 add r3, sp, #16 + 800b382: e903 0006 stmdb r3, {r1, r2} + 800b386: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b38a: 2b01 cmp r3, #1 + 800b38c: 4604 mov r4, r0 + 800b38e: d03a beq.n 800b406 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x88> + 800b390: 2301 movs r3, #1 + 800b392: f880 3084 strb.w r3, [r0, #132] ; 0x84 + 800b396: 2324 movs r3, #36 ; 0x24 + 800b398: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b39c: 6803 ldr r3, [r0, #0] + 800b39e: 681a ldr r2, [r3, #0] + 800b3a0: f022 0201 bic.w r2, r2, #1 + 800b3a4: 601a str r2, [r3, #0] + 800b3a6: 689a ldr r2, [r3, #8] + 800b3a8: f422 1240 bic.w r2, r2, #3145728 ; 0x300000 + 800b3ac: 430a orrs r2, r1 + 800b3ae: 609a str r2, [r3, #8] + 800b3b0: b971 cbnz r1, 800b3d0 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x52> + 800b3b2: 685a ldr r2, [r3, #4] + 800b3b4: f8bd 000c ldrh.w r0, [sp, #12] + 800b3b8: f89d 100e ldrb.w r1, [sp, #14] + 800b3bc: f022 0210 bic.w r2, r2, #16 + 800b3c0: 4302 orrs r2, r0 + 800b3c2: 605a str r2, [r3, #4] + 800b3c4: 685a ldr r2, [r3, #4] + 800b3c6: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 + 800b3ca: ea42 6201 orr.w r2, r2, r1, lsl #24 + 800b3ce: 605a str r2, [r3, #4] + 800b3d0: 681a ldr r2, [r3, #0] + 800b3d2: f042 0201 orr.w r2, r2, #1 + 800b3d6: 601a str r2, [r3, #0] + 800b3d8: f7f7 fbda bl 8002b90 <HAL_GetTick> + 800b3dc: f06f 427e mvn.w r2, #4261412864 ; 0xfe000000 + 800b3e0: 4603 mov r3, r0 + 800b3e2: 9200 str r2, [sp, #0] + 800b3e4: f44f 0180 mov.w r1, #4194304 ; 0x400000 + 800b3e8: 2200 movs r2, #0 + 800b3ea: 4620 mov r0, r4 + 800b3ec: f7ff fe30 bl 800b050 <UART_WaitOnFlagUntilTimeout> + 800b3f0: b938 cbnz r0, 800b402 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x84> + 800b3f2: 2320 movs r3, #32 + 800b3f4: f8c4 3088 str.w r3, [r4, #136] ; 0x88 + 800b3f8: 2300 movs r3, #0 + 800b3fa: f884 3084 strb.w r3, [r4, #132] ; 0x84 + 800b3fe: b004 add sp, #16 + 800b400: bd10 pop {r4, pc} + 800b402: 2003 movs r0, #3 + 800b404: e7f8 b.n 800b3f8 <HAL_UARTEx_StopModeWakeUpSourceConfig+0x7a> + 800b406: 2002 movs r0, #2 + 800b408: e7f9 b.n 800b3fe <HAL_UARTEx_StopModeWakeUpSourceConfig+0x80> + +0800b40a <HAL_UARTEx_EnableStopMode>: + 800b40a: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b40e: 2b01 cmp r3, #1 + 800b410: d00f beq.n 800b432 <HAL_UARTEx_EnableStopMode+0x28> + 800b412: 2301 movs r3, #1 + 800b414: f880 3084 strb.w r3, [r0, #132] ; 0x84 + 800b418: 6801 ldr r1, [r0, #0] + 800b41a: e851 2f00 ldrex r2, [r1] + 800b41e: f042 0202 orr.w r2, r2, #2 + 800b422: e841 2300 strex r3, r2, [r1] + 800b426: 2b00 cmp r3, #0 + 800b428: d1f6 bne.n 800b418 <HAL_UARTEx_EnableStopMode+0xe> + 800b42a: f880 3084 strb.w r3, [r0, #132] ; 0x84 + 800b42e: 4618 mov r0, r3 + 800b430: 4770 bx lr + 800b432: 2002 movs r0, #2 + 800b434: 4770 bx lr + +0800b436 <HAL_UARTEx_EnableFifoMode>: + 800b436: b510 push {r4, lr} + 800b438: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b43c: 2b01 cmp r3, #1 + 800b43e: 4604 mov r4, r0 + 800b440: d017 beq.n 800b472 <HAL_UARTEx_EnableFifoMode+0x3c> + 800b442: 2324 movs r3, #36 ; 0x24 + 800b444: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b448: 6803 ldr r3, [r0, #0] + 800b44a: 681a ldr r2, [r3, #0] + 800b44c: 6819 ldr r1, [r3, #0] + 800b44e: f021 0101 bic.w r1, r1, #1 + 800b452: 6019 str r1, [r3, #0] + 800b454: f042 5200 orr.w r2, r2, #536870912 ; 0x20000000 + 800b458: f04f 5100 mov.w r1, #536870912 ; 0x20000000 + 800b45c: 6641 str r1, [r0, #100] ; 0x64 + 800b45e: 601a str r2, [r3, #0] + 800b460: f7ff ff68 bl 800b334 <UARTEx_SetNbDataToProcess> + 800b464: 2320 movs r3, #32 + 800b466: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b46a: 2000 movs r0, #0 + 800b46c: f884 0084 strb.w r0, [r4, #132] ; 0x84 + 800b470: bd10 pop {r4, pc} + 800b472: 2002 movs r0, #2 + 800b474: e7fc b.n 800b470 <HAL_UARTEx_EnableFifoMode+0x3a> + +0800b476 <HAL_UARTEx_SetTxFifoThreshold>: + 800b476: b570 push {r4, r5, r6, lr} + 800b478: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b47c: 2b01 cmp r3, #1 + 800b47e: 4604 mov r4, r0 + 800b480: d017 beq.n 800b4b2 <HAL_UARTEx_SetTxFifoThreshold+0x3c> + 800b482: 6805 ldr r5, [r0, #0] + 800b484: 2324 movs r3, #36 ; 0x24 + 800b486: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b48a: 682e ldr r6, [r5, #0] + 800b48c: 682b ldr r3, [r5, #0] + 800b48e: f023 0301 bic.w r3, r3, #1 + 800b492: 602b str r3, [r5, #0] + 800b494: 68ab ldr r3, [r5, #8] + 800b496: f023 4360 bic.w r3, r3, #3758096384 ; 0xe0000000 + 800b49a: 4319 orrs r1, r3 + 800b49c: 60a9 str r1, [r5, #8] + 800b49e: f7ff ff49 bl 800b334 <UARTEx_SetNbDataToProcess> + 800b4a2: 2320 movs r3, #32 + 800b4a4: 602e str r6, [r5, #0] + 800b4a6: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b4aa: 2000 movs r0, #0 + 800b4ac: f884 0084 strb.w r0, [r4, #132] ; 0x84 + 800b4b0: bd70 pop {r4, r5, r6, pc} + 800b4b2: 2002 movs r0, #2 + 800b4b4: e7fc b.n 800b4b0 <HAL_UARTEx_SetTxFifoThreshold+0x3a> + +0800b4b6 <HAL_UARTEx_SetRxFifoThreshold>: + 800b4b6: b570 push {r4, r5, r6, lr} + 800b4b8: f890 3084 ldrb.w r3, [r0, #132] ; 0x84 + 800b4bc: 2b01 cmp r3, #1 + 800b4be: 4604 mov r4, r0 + 800b4c0: d017 beq.n 800b4f2 <HAL_UARTEx_SetRxFifoThreshold+0x3c> + 800b4c2: 6805 ldr r5, [r0, #0] + 800b4c4: 2324 movs r3, #36 ; 0x24 + 800b4c6: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b4ca: 682e ldr r6, [r5, #0] + 800b4cc: 682b ldr r3, [r5, #0] + 800b4ce: f023 0301 bic.w r3, r3, #1 + 800b4d2: 602b str r3, [r5, #0] + 800b4d4: 68ab ldr r3, [r5, #8] + 800b4d6: f023 6360 bic.w r3, r3, #234881024 ; 0xe000000 + 800b4da: 4319 orrs r1, r3 + 800b4dc: 60a9 str r1, [r5, #8] + 800b4de: f7ff ff29 bl 800b334 <UARTEx_SetNbDataToProcess> + 800b4e2: 2320 movs r3, #32 + 800b4e4: 602e str r6, [r5, #0] + 800b4e6: f8c0 3088 str.w r3, [r0, #136] ; 0x88 + 800b4ea: 2000 movs r0, #0 + 800b4ec: f884 0084 strb.w r0, [r4, #132] ; 0x84 + 800b4f0: bd70 pop {r4, r5, r6, pc} + 800b4f2: 2002 movs r0, #2 + 800b4f4: e7fc b.n 800b4f0 <HAL_UARTEx_SetRxFifoThreshold+0x3a> + ... + +0800b4f8 <LmHandlerPackageIsTxPending>: + 800b4f8: b538 push {r3, r4, r5, lr} + 800b4fa: 4d09 ldr r5, [pc, #36] ; (800b520 <LmHandlerPackageIsTxPending+0x28>) + 800b4fc: 2400 movs r4, #0 + 800b4fe: f855 3b04 ldr.w r3, [r5], #4 + 800b502: b933 cbnz r3, 800b512 <LmHandlerPackageIsTxPending+0x1a> + 800b504: 3401 adds r4, #1 + 800b506: b2e3 uxtb r3, r4 + 800b508: 2b05 cmp r3, #5 + 800b50a: b264 sxtb r4, r4 + 800b50c: d1f7 bne.n 800b4fe <LmHandlerPackageIsTxPending+0x6> + 800b50e: 2000 movs r0, #0 + 800b510: bd38 pop {r3, r4, r5, pc} + 800b512: 2c00 cmp r4, #0 + 800b514: d0f6 beq.n 800b504 <LmHandlerPackageIsTxPending+0xc> + 800b516: 691b ldr r3, [r3, #16] + 800b518: 4798 blx r3 + 800b51a: 2800 cmp r0, #0 + 800b51c: d0f2 beq.n 800b504 <LmHandlerPackageIsTxPending+0xc> + 800b51e: e7f7 b.n 800b510 <LmHandlerPackageIsTxPending+0x18> + 800b520: 20001074 .word 0x20001074 + +0800b524 <LmHandlerDeviceTimeReq>: + 800b524: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} + 800b526: 230a movs r3, #10 + 800b528: a801 add r0, sp, #4 + 800b52a: f88d 3004 strb.w r3, [sp, #4] + 800b52e: f003 f8d9 bl 800e6e4 <LoRaMacMlmeRequest> + 800b532: 3800 subs r0, #0 + 800b534: 4b04 ldr r3, [pc, #16] ; (800b548 <LmHandlerDeviceTimeReq+0x24>) + 800b536: 9a05 ldr r2, [sp, #20] + 800b538: 601a str r2, [r3, #0] + 800b53a: bf18 it ne + 800b53c: 2001 movne r0, #1 + 800b53e: 4240 negs r0, r0 + 800b540: b007 add sp, #28 + 800b542: f85d fb04 ldr.w pc, [sp], #4 + 800b546: bf00 nop + 800b548: 2000106c .word 0x2000106c + +0800b54c <MlmeIndication>: + 800b54c: b570 push {r4, r5, r6, lr} + 800b54e: 4604 mov r4, r0 + 800b550: 460b mov r3, r1 + 800b552: 4914 ldr r1, [pc, #80] ; (800b5a4 <MlmeIndication+0x58>) + 800b554: 7862 ldrb r2, [r4, #1] + 800b556: 704a strb r2, [r1, #1] + 800b558: 2000 movs r0, #0 + 800b55a: 78a2 ldrb r2, [r4, #2] + 800b55c: 720a strb r2, [r1, #8] + 800b55e: 7008 strb r0, [r1, #0] + 800b560: 881a ldrh r2, [r3, #0] + 800b562: 724a strb r2, [r1, #9] + 800b564: 789a ldrb r2, [r3, #2] + 800b566: 728a strb r2, [r1, #10] + 800b568: 78db ldrb r3, [r3, #3] + 800b56a: 740b strb r3, [r1, #16] + 800b56c: 6863 ldr r3, [r4, #4] + 800b56e: 60cb str r3, [r1, #12] + 800b570: 4b0d ldr r3, [pc, #52] ; (800b5a8 <MlmeIndication+0x5c>) + 800b572: 681b ldr r3, [r3, #0] + 800b574: 6ada ldr r2, [r3, #44] ; 0x2c + 800b576: b12a cbz r2, 800b584 <MlmeIndication+0x38> + 800b578: 7823 ldrb r3, [r4, #0] + 800b57a: f003 03fb and.w r3, r3, #251 ; 0xfb + 800b57e: 2b0b cmp r3, #11 + 800b580: d000 beq.n 800b584 <MlmeIndication+0x38> + 800b582: 4790 blx r2 + 800b584: 4e09 ldr r6, [pc, #36] ; (800b5ac <MlmeIndication+0x60>) + 800b586: 2500 movs r5, #0 + 800b588: f856 3b04 ldr.w r3, [r6], #4 + 800b58c: b11b cbz r3, 800b596 <MlmeIndication+0x4a> + 800b58e: 6a9b ldr r3, [r3, #40] ; 0x28 + 800b590: b10b cbz r3, 800b596 <MlmeIndication+0x4a> + 800b592: 4620 mov r0, r4 + 800b594: 4798 blx r3 + 800b596: 3501 adds r5, #1 + 800b598: b2eb uxtb r3, r5 + 800b59a: 2b05 cmp r3, #5 + 800b59c: b26d sxtb r5, r5 + 800b59e: d1f3 bne.n 800b588 <MlmeIndication+0x3c> + 800b5a0: bd70 pop {r4, r5, r6, pc} + 800b5a2: bf00 nop + 800b5a4: 20000848 .word 0x20000848 + 800b5a8: 20001070 .word 0x20001070 + 800b5ac: 20001074 .word 0x20001074 + +0800b5b0 <McpsConfirm>: + 800b5b0: b570 push {r4, r5, r6, lr} + 800b5b2: 4604 mov r4, r0 + 800b5b4: 4811 ldr r0, [pc, #68] ; (800b5fc <McpsConfirm+0x4c>) + 800b5b6: 2301 movs r3, #1 + 800b5b8: 7003 strb r3, [r0, #0] + 800b5ba: 7863 ldrb r3, [r4, #1] + 800b5bc: 7043 strb r3, [r0, #1] + 800b5be: 78a3 ldrb r3, [r4, #2] + 800b5c0: 7283 strb r3, [r0, #10] + 800b5c2: 68e3 ldr r3, [r4, #12] + 800b5c4: 60c3 str r3, [r0, #12] + 800b5c6: 78e3 ldrb r3, [r4, #3] + 800b5c8: 7603 strb r3, [r0, #24] + 800b5ca: 6923 ldr r3, [r4, #16] + 800b5cc: 7643 strb r3, [r0, #25] + 800b5ce: 7923 ldrb r3, [r4, #4] + 800b5d0: 7243 strb r3, [r0, #9] + 800b5d2: 4b0b ldr r3, [pc, #44] ; (800b600 <McpsConfirm+0x50>) + 800b5d4: 681b ldr r3, [r3, #0] + 800b5d6: 6a9b ldr r3, [r3, #40] ; 0x28 + 800b5d8: b103 cbz r3, 800b5dc <McpsConfirm+0x2c> + 800b5da: 4798 blx r3 + 800b5dc: 4e09 ldr r6, [pc, #36] ; (800b604 <McpsConfirm+0x54>) + 800b5de: 2500 movs r5, #0 + 800b5e0: f856 3b04 ldr.w r3, [r6], #4 + 800b5e4: b11b cbz r3, 800b5ee <McpsConfirm+0x3e> + 800b5e6: 69db ldr r3, [r3, #28] + 800b5e8: b10b cbz r3, 800b5ee <McpsConfirm+0x3e> + 800b5ea: 4620 mov r0, r4 + 800b5ec: 4798 blx r3 + 800b5ee: 3501 adds r5, #1 + 800b5f0: b2eb uxtb r3, r5 + 800b5f2: 2b05 cmp r3, #5 + 800b5f4: b26d sxtb r5, r5 + 800b5f6: d1f3 bne.n 800b5e0 <McpsConfirm+0x30> + 800b5f8: bd70 pop {r4, r5, r6, pc} + 800b5fa: bf00 nop + 800b5fc: 2000085c .word 0x2000085c + 800b600: 20001070 .word 0x20001070 + 800b604: 20001074 .word 0x20001074 + +0800b608 <LmHandlerProcess>: + 800b608: b538 push {r3, r4, r5, lr} + 800b60a: f001 fe11 bl 800d230 <LoRaMacProcess> + 800b60e: 4d0c ldr r5, [pc, #48] ; (800b640 <LmHandlerProcess+0x38>) + 800b610: 2405 movs r4, #5 + 800b612: f855 3b04 ldr.w r3, [r5], #4 + 800b616: b15b cbz r3, 800b630 <LmHandlerProcess+0x28> + 800b618: 695b ldr r3, [r3, #20] + 800b61a: b14b cbz r3, 800b630 <LmHandlerProcess+0x28> + 800b61c: f855 3c04 ldr.w r3, [r5, #-4] + 800b620: 689b ldr r3, [r3, #8] + 800b622: b12b cbz r3, 800b630 <LmHandlerProcess+0x28> + 800b624: 4798 blx r3 + 800b626: b118 cbz r0, 800b630 <LmHandlerProcess+0x28> + 800b628: f855 3c04 ldr.w r3, [r5, #-4] + 800b62c: 695b ldr r3, [r3, #20] + 800b62e: 4798 blx r3 + 800b630: 3c01 subs r4, #1 + 800b632: f014 04ff ands.w r4, r4, #255 ; 0xff + 800b636: d1ec bne.n 800b612 <LmHandlerProcess+0xa> + 800b638: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 800b63c: f7ff bf5c b.w 800b4f8 <LmHandlerPackageIsTxPending> + 800b640: 20001074 .word 0x20001074 + +0800b644 <LmHandlerGetDutyCycleWaitTime>: + 800b644: 4b01 ldr r3, [pc, #4] ; (800b64c <LmHandlerGetDutyCycleWaitTime+0x8>) + 800b646: 6818 ldr r0, [r3, #0] + 800b648: 4770 bx lr + 800b64a: bf00 nop + 800b64c: 2000106c .word 0x2000106c + +0800b650 <LmHandlerJoinStatus>: + 800b650: b500 push {lr} + 800b652: b08b sub sp, #44 ; 0x2c + 800b654: 2301 movs r3, #1 + 800b656: 4668 mov r0, sp + 800b658: f88d 3000 strb.w r3, [sp] + 800b65c: f002 fcbc bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800b660: b938 cbnz r0, 800b672 <LmHandlerJoinStatus+0x22> + 800b662: f89d 0004 ldrb.w r0, [sp, #4] + 800b666: 3800 subs r0, #0 + 800b668: bf18 it ne + 800b66a: 2001 movne r0, #1 + 800b66c: b00b add sp, #44 ; 0x2c + 800b66e: f85d fb04 ldr.w pc, [sp], #4 + 800b672: 2000 movs r0, #0 + 800b674: e7fa b.n 800b66c <LmHandlerJoinStatus+0x1c> + ... + +0800b678 <LmHandlerRequestClass>: + 800b678: b530 push {r4, r5, lr} + 800b67a: b08b sub sp, #44 ; 0x2c + 800b67c: 4605 mov r5, r0 + 800b67e: f001 fdbb bl 800d1f8 <LoRaMacIsBusy> + 800b682: 4604 mov r4, r0 + 800b684: 2800 cmp r0, #0 + 800b686: d139 bne.n 800b6fc <LmHandlerRequestClass+0x84> + 800b688: f7ff ffe2 bl 800b650 <LmHandlerJoinStatus> + 800b68c: 2801 cmp r0, #1 + 800b68e: d138 bne.n 800b702 <LmHandlerRequestClass+0x8a> + 800b690: 4668 mov r0, sp + 800b692: f88d 4000 strb.w r4, [sp] + 800b696: f002 fc9f bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800b69a: b110 cbz r0, 800b6a2 <LmHandlerRequestClass+0x2a> + 800b69c: f04f 30ff mov.w r0, #4294967295 + 800b6a0: e004 b.n 800b6ac <LmHandlerRequestClass+0x34> + 800b6a2: f89d 3004 ldrb.w r3, [sp, #4] + 800b6a6: 42ab cmp r3, r5 + 800b6a8: d102 bne.n 800b6b0 <LmHandlerRequestClass+0x38> + 800b6aa: 2000 movs r0, #0 + 800b6ac: b00b add sp, #44 ; 0x2c + 800b6ae: bd30 pop {r4, r5, pc} + 800b6b0: 2d01 cmp r5, #1 + 800b6b2: d0f3 beq.n 800b69c <LmHandlerRequestClass+0x24> + 800b6b4: 2d02 cmp r5, #2 + 800b6b6: d011 beq.n 800b6dc <LmHandlerRequestClass+0x64> + 800b6b8: 2d00 cmp r5, #0 + 800b6ba: d1f7 bne.n 800b6ac <LmHandlerRequestClass+0x34> + 800b6bc: 2b00 cmp r3, #0 + 800b6be: d0f4 beq.n 800b6aa <LmHandlerRequestClass+0x32> + 800b6c0: 4668 mov r0, sp + 800b6c2: f88d 5004 strb.w r5, [sp, #4] + 800b6c6: f002 fd99 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800b6ca: 2800 cmp r0, #0 + 800b6cc: d1e6 bne.n 800b69c <LmHandlerRequestClass+0x24> + 800b6ce: 4b0e ldr r3, [pc, #56] ; (800b708 <LmHandlerRequestClass+0x90>) + 800b6d0: 681b ldr r3, [r3, #0] + 800b6d2: 6b1b ldr r3, [r3, #48] ; 0x30 + 800b6d4: 2b00 cmp r3, #0 + 800b6d6: d0e8 beq.n 800b6aa <LmHandlerRequestClass+0x32> + 800b6d8: 4798 blx r3 + 800b6da: e7e6 b.n 800b6aa <LmHandlerRequestClass+0x32> + 800b6dc: 2b00 cmp r3, #0 + 800b6de: d1dd bne.n 800b69c <LmHandlerRequestClass+0x24> + 800b6e0: 4668 mov r0, sp + 800b6e2: f88d 5004 strb.w r5, [sp, #4] + 800b6e6: f002 fd89 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800b6ea: 2800 cmp r0, #0 + 800b6ec: d1d6 bne.n 800b69c <LmHandlerRequestClass+0x24> + 800b6ee: 4b06 ldr r3, [pc, #24] ; (800b708 <LmHandlerRequestClass+0x90>) + 800b6f0: 681b ldr r3, [r3, #0] + 800b6f2: 6b1b ldr r3, [r3, #48] ; 0x30 + 800b6f4: 2b00 cmp r3, #0 + 800b6f6: d0d8 beq.n 800b6aa <LmHandlerRequestClass+0x32> + 800b6f8: 4628 mov r0, r5 + 800b6fa: e7ed b.n 800b6d8 <LmHandlerRequestClass+0x60> + 800b6fc: f06f 0001 mvn.w r0, #1 + 800b700: e7d4 b.n 800b6ac <LmHandlerRequestClass+0x34> + 800b702: f06f 0002 mvn.w r0, #2 + 800b706: e7d1 b.n 800b6ac <LmHandlerRequestClass+0x34> + 800b708: 20001070 .word 0x20001070 + +0800b70c <LmHandlerJoin>: + 800b70c: b570 push {r4, r5, r6, lr} + 800b70e: 4c32 ldr r4, [pc, #200] ; (800b7d8 <LmHandlerJoin+0xcc>) + 800b710: 4b32 ldr r3, [pc, #200] ; (800b7dc <LmHandlerJoin+0xd0>) + 800b712: f994 2004 ldrsb.w r2, [r4, #4] + 800b716: f994 5005 ldrsb.w r5, [r4, #5] + 800b71a: b090 sub sp, #64 ; 0x40 + 800b71c: 2601 movs r6, #1 + 800b71e: 2802 cmp r0, #2 + 800b720: f88d 6004 strb.w r6, [sp, #4] + 800b724: f88d 2009 strb.w r2, [sp, #9] + 800b728: f88d 500a strb.w r5, [sp, #10] + 800b72c: d10a bne.n 800b744 <LmHandlerJoin+0x38> + 800b72e: f88d 0008 strb.w r0, [sp, #8] + 800b732: 71d8 strb r0, [r3, #7] + 800b734: 7219 strb r1, [r3, #8] + 800b736: f002 fb9f bl 800de78 <LoRaMacStart> + 800b73a: a801 add r0, sp, #4 + 800b73c: f002 ffd2 bl 800e6e4 <LoRaMacMlmeRequest> + 800b740: b010 add sp, #64 ; 0x40 + 800b742: bd70 pop {r4, r5, r6, pc} + 800b744: f44f 7080 mov.w r0, #256 ; 0x100 + 800b748: 711a strb r2, [r3, #4] + 800b74a: 715d strb r5, [r3, #5] + 800b74c: 80d8 strh r0, [r3, #6] + 800b74e: 7219 strb r1, [r3, #8] + 800b750: 4b23 ldr r3, [pc, #140] ; (800b7e0 <LmHandlerJoin+0xd4>) + 800b752: f88d 6008 strb.w r6, [sp, #8] + 800b756: 781b ldrb r3, [r3, #0] + 800b758: bb53 cbnz r3, 800b7b0 <LmHandlerJoin+0xa4> + 800b75a: 231e movs r3, #30 + 800b75c: a806 add r0, sp, #24 + 800b75e: f88d 201c strb.w r2, [sp, #28] + 800b762: f88d 3018 strb.w r3, [sp, #24] + 800b766: f002 fd49 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800b76a: 231f movs r3, #31 + 800b76c: f88d 3018 strb.w r3, [sp, #24] + 800b770: a806 add r0, sp, #24 + 800b772: 7923 ldrb r3, [r4, #4] + 800b774: f88d 301c strb.w r3, [sp, #28] + 800b778: f002 fd40 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800b77c: 2321 movs r3, #33 ; 0x21 + 800b77e: f88d 3018 strb.w r3, [sp, #24] + 800b782: a806 add r0, sp, #24 + 800b784: 7963 ldrb r3, [r4, #5] + 800b786: f88d 301c strb.w r3, [sp, #28] + 800b78a: f002 fd37 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800b78e: 2320 movs r3, #32 + 800b790: f88d 3018 strb.w r3, [sp, #24] + 800b794: a806 add r0, sp, #24 + 800b796: 7963 ldrb r3, [r4, #5] + 800b798: f88d 301c strb.w r3, [sp, #28] + 800b79c: f002 fd2e bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800b7a0: 2328 movs r3, #40 ; 0x28 + 800b7a2: f88d 3018 strb.w r3, [sp, #24] + 800b7a6: a806 add r0, sp, #24 + 800b7a8: 4b0e ldr r3, [pc, #56] ; (800b7e4 <LmHandlerJoin+0xd8>) + 800b7aa: 9307 str r3, [sp, #28] + 800b7ac: f002 fd26 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800b7b0: f002 fb62 bl 800de78 <LoRaMacStart> + 800b7b4: 2301 movs r3, #1 + 800b7b6: a806 add r0, sp, #24 + 800b7b8: f88d 3018 strb.w r3, [sp, #24] + 800b7bc: f88d 301c strb.w r3, [sp, #28] + 800b7c0: f002 fd1c bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800b7c4: 4b08 ldr r3, [pc, #32] ; (800b7e8 <LmHandlerJoin+0xdc>) + 800b7c6: 681b ldr r3, [r3, #0] + 800b7c8: 6a5b ldr r3, [r3, #36] ; 0x24 + 800b7ca: b10b cbz r3, 800b7d0 <LmHandlerJoin+0xc4> + 800b7cc: 4803 ldr r0, [pc, #12] ; (800b7dc <LmHandlerJoin+0xd0>) + 800b7ce: 4798 blx r3 + 800b7d0: 7860 ldrb r0, [r4, #1] + 800b7d2: f7ff ff51 bl 800b678 <LmHandlerRequestClass> + 800b7d6: e7b3 b.n 800b740 <LmHandlerJoin+0x34> + 800b7d8: 20001088 .word 0x20001088 + 800b7dc: 20000830 .word 0x20000830 + 800b7e0: 20001068 .word 0x20001068 + 800b7e4: 01000300 .word 0x01000300 + 800b7e8: 20001070 .word 0x20001070 + +0800b7ec <LmHandlerIsBusy>: + 800b7ec: b508 push {r3, lr} + 800b7ee: f001 fd03 bl 800d1f8 <LoRaMacIsBusy> + 800b7f2: b940 cbnz r0, 800b806 <LmHandlerIsBusy+0x1a> + 800b7f4: f7ff ff2c bl 800b650 <LmHandlerJoinStatus> + 800b7f8: 2801 cmp r0, #1 + 800b7fa: d006 beq.n 800b80a <LmHandlerIsBusy+0x1e> + 800b7fc: 4b08 ldr r3, [pc, #32] ; (800b820 <LmHandlerIsBusy+0x34>) + 800b7fe: 7a19 ldrb r1, [r3, #8] + 800b800: 79d8 ldrb r0, [r3, #7] + 800b802: f7ff ff83 bl 800b70c <LmHandlerJoin> + 800b806: 2001 movs r0, #1 + 800b808: bd08 pop {r3, pc} + 800b80a: 4b06 ldr r3, [pc, #24] ; (800b824 <LmHandlerIsBusy+0x38>) + 800b80c: 681b ldr r3, [r3, #0] + 800b80e: 68db ldr r3, [r3, #12] + 800b810: 4798 blx r3 + 800b812: 2800 cmp r0, #0 + 800b814: d1f7 bne.n 800b806 <LmHandlerIsBusy+0x1a> + 800b816: e8bd 4008 ldmia.w sp!, {r3, lr} + 800b81a: f7ff be6d b.w 800b4f8 <LmHandlerPackageIsTxPending> + 800b81e: bf00 nop + 800b820: 20000830 .word 0x20000830 + 800b824: 20001074 .word 0x20001074 + +0800b828 <LmHandlerSend>: + 800b828: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800b82c: b086 sub sp, #24 + 800b82e: 4605 mov r5, r0 + 800b830: 460c mov r4, r1 + 800b832: 4616 mov r6, r2 + 800b834: f001 fce0 bl 800d1f8 <LoRaMacIsBusy> + 800b838: 2800 cmp r0, #0 + 800b83a: f040 808d bne.w 800b958 <LmHandlerSend+0x130> + 800b83e: f001 fced bl 800d21c <LoRaMacIsStopped> + 800b842: b940 cbnz r0, 800b856 <LmHandlerSend+0x2e> + 800b844: f7ff ff04 bl 800b650 <LmHandlerJoinStatus> + 800b848: 2801 cmp r0, #1 + 800b84a: d007 beq.n 800b85c <LmHandlerSend+0x34> + 800b84c: 4b44 ldr r3, [pc, #272] ; (800b960 <LmHandlerSend+0x138>) + 800b84e: 7a19 ldrb r1, [r3, #8] + 800b850: 79d8 ldrb r0, [r3, #7] + 800b852: f7ff ff5b bl 800b70c <LmHandlerJoin> + 800b856: f06f 0402 mvn.w r4, #2 + 800b85a: e06d b.n 800b938 <LmHandlerSend+0x110> + 800b85c: 4f41 ldr r7, [pc, #260] ; (800b964 <LmHandlerSend+0x13c>) + 800b85e: 683b ldr r3, [r7, #0] + 800b860: 68db ldr r3, [r3, #12] + 800b862: 4798 blx r3 + 800b864: b130 cbz r0, 800b874 <LmHandlerSend+0x4c> + 800b866: 683a ldr r2, [r7, #0] + 800b868: 782b ldrb r3, [r5, #0] + 800b86a: 7812 ldrb r2, [r2, #0] + 800b86c: 429a cmp r2, r3 + 800b86e: d001 beq.n 800b874 <LmHandlerSend+0x4c> + 800b870: 2b00 cmp r3, #0 + 800b872: d16e bne.n 800b952 <LmHandlerSend+0x12a> + 800b874: 4f3c ldr r7, [pc, #240] ; (800b968 <LmHandlerSend+0x140>) + 800b876: f8df 80f4 ldr.w r8, [pc, #244] ; 800b96c <LmHandlerSend+0x144> + 800b87a: 723c strb r4, [r7, #8] + 800b87c: 3c00 subs r4, #0 + 800b87e: bf18 it ne + 800b880: 2401 movne r4, #1 + 800b882: f898 3004 ldrb.w r3, [r8, #4] + 800b886: 7868 ldrb r0, [r5, #1] + 800b888: f88d 4004 strb.w r4, [sp, #4] + 800b88c: 4669 mov r1, sp + 800b88e: f88d 3012 strb.w r3, [sp, #18] + 800b892: f002 fb49 bl 800df28 <LoRaMacQueryTxPossible> + 800b896: 2800 cmp r0, #0 + 800b898: d040 beq.n 800b91c <LmHandlerSend+0xf4> + 800b89a: 2300 movs r3, #0 + 800b89c: f88d 3004 strb.w r3, [sp, #4] + 800b8a0: 9303 str r3, [sp, #12] + 800b8a2: f8ad 3010 strh.w r3, [sp, #16] + 800b8a6: f06f 0406 mvn.w r4, #6 + 800b8aa: e895 0003 ldmia.w r5, {r0, r1} + 800b8ae: 4b30 ldr r3, [pc, #192] ; (800b970 <LmHandlerSend+0x148>) + 800b8b0: e883 0003 stmia.w r3, {r0, r1} + 800b8b4: f898 3004 ldrb.w r3, [r8, #4] + 800b8b8: 72bb strb r3, [r7, #10] + 800b8ba: 4631 mov r1, r6 + 800b8bc: a801 add r0, sp, #4 + 800b8be: f003 f809 bl 800e8d4 <LoRaMacMcpsRequest> + 800b8c2: 4b2c ldr r3, [pc, #176] ; (800b974 <LmHandlerSend+0x14c>) + 800b8c4: 9a05 ldr r2, [sp, #20] + 800b8c6: 601a str r2, [r3, #0] + 800b8c8: 2811 cmp r0, #17 + 800b8ca: d83f bhi.n 800b94c <LmHandlerSend+0x124> + 800b8cc: a301 add r3, pc, #4 ; (adr r3, 800b8d4 <LmHandlerSend+0xac>) + 800b8ce: f853 f020 ldr.w pc, [r3, r0, lsl #2] + 800b8d2: bf00 nop + 800b8d4: 0800b933 .word 0x0800b933 + 800b8d8: 0800b959 .word 0x0800b959 + 800b8dc: 0800b94d .word 0x0800b94d + 800b8e0: 0800b94d .word 0x0800b94d + 800b8e4: 0800b94d .word 0x0800b94d + 800b8e8: 0800b94d .word 0x0800b94d + 800b8ec: 0800b94d .word 0x0800b94d + 800b8f0: 0800b857 .word 0x0800b857 + 800b8f4: 0800b94d .word 0x0800b94d + 800b8f8: 0800b94d .word 0x0800b94d + 800b8fc: 0800b94d .word 0x0800b94d + 800b900: 0800b947 .word 0x0800b947 + 800b904: 0800b94d .word 0x0800b94d + 800b908: 0800b94d .word 0x0800b94d + 800b90c: 0800b959 .word 0x0800b959 + 800b910: 0800b959 .word 0x0800b959 + 800b914: 0800b959 .word 0x0800b959 + 800b918: 0800b941 .word 0x0800b941 + 800b91c: 782b ldrb r3, [r5, #0] + 800b91e: f88d 3008 strb.w r3, [sp, #8] + 800b922: 786b ldrb r3, [r5, #1] + 800b924: f8ad 3010 strh.w r3, [sp, #16] + 800b928: 686b ldr r3, [r5, #4] + 800b92a: 9303 str r3, [sp, #12] + 800b92c: f04f 34ff mov.w r4, #4294967295 + 800b930: e7bb b.n 800b8aa <LmHandlerSend+0x82> + 800b932: 1de3 adds r3, r4, #7 + 800b934: bf18 it ne + 800b936: 2400 movne r4, #0 + 800b938: 4620 mov r0, r4 + 800b93a: b006 add sp, #24 + 800b93c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800b940: f06f 0404 mvn.w r4, #4 + 800b944: e7f8 b.n 800b938 <LmHandlerSend+0x110> + 800b946: f06f 0405 mvn.w r4, #5 + 800b94a: e7f5 b.n 800b938 <LmHandlerSend+0x110> + 800b94c: f04f 34ff mov.w r4, #4294967295 + 800b950: e7f2 b.n 800b938 <LmHandlerSend+0x110> + 800b952: f06f 0403 mvn.w r4, #3 + 800b956: e7ef b.n 800b938 <LmHandlerSend+0x110> + 800b958: f06f 0401 mvn.w r4, #1 + 800b95c: e7ec b.n 800b938 <LmHandlerSend+0x110> + 800b95e: bf00 nop + 800b960: 20000830 .word 0x20000830 + 800b964: 20001074 .word 0x20001074 + 800b968: 2000085c .word 0x2000085c + 800b96c: 20001088 .word 0x20001088 + 800b970: 2000086c .word 0x2000086c + 800b974: 2000106c .word 0x2000106c + +0800b978 <LmHandlerGetCurrentClass>: + 800b978: b510 push {r4, lr} + 800b97a: 4604 mov r4, r0 + 800b97c: b08a sub sp, #40 ; 0x28 + 800b97e: b918 cbnz r0, 800b988 <LmHandlerGetCurrentClass+0x10> + 800b980: f04f 30ff mov.w r0, #4294967295 + 800b984: b00a add sp, #40 ; 0x28 + 800b986: bd10 pop {r4, pc} + 800b988: 2300 movs r3, #0 + 800b98a: 4668 mov r0, sp + 800b98c: f88d 3000 strb.w r3, [sp] + 800b990: f002 fb22 bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800b994: 2800 cmp r0, #0 + 800b996: d1f3 bne.n 800b980 <LmHandlerGetCurrentClass+0x8> + 800b998: f89d 3004 ldrb.w r3, [sp, #4] + 800b99c: 7023 strb r3, [r4, #0] + 800b99e: e7f1 b.n 800b984 <LmHandlerGetCurrentClass+0xc> + +0800b9a0 <McpsIndication>: + 800b9a0: b5f0 push {r4, r5, r6, r7, lr} + 800b9a2: b087 sub sp, #28 + 800b9a4: 2200 movs r2, #0 + 800b9a6: 460b mov r3, r1 + 800b9a8: 492a ldr r1, [pc, #168] ; (800ba54 <McpsIndication+0xb4>) + 800b9aa: f88d 2007 strb.w r2, [sp, #7] + 800b9ae: 2201 movs r2, #1 + 800b9b0: 700a strb r2, [r1, #0] + 800b9b2: 7842 ldrb r2, [r0, #1] + 800b9b4: 704a strb r2, [r1, #1] + 800b9b6: 4604 mov r4, r0 + 800b9b8: 2a00 cmp r2, #0 + 800b9ba: d141 bne.n 800ba40 <McpsIndication+0xa0> + 800b9bc: 7902 ldrb r2, [r0, #4] + 800b9be: 720a strb r2, [r1, #8] + 800b9c0: 881a ldrh r2, [r3, #0] + 800b9c2: 724a strb r2, [r1, #9] + 800b9c4: 789a ldrb r2, [r3, #2] + 800b9c6: 728a strb r2, [r1, #10] + 800b9c8: 78db ldrb r3, [r3, #3] + 800b9ca: 740b strb r3, [r1, #16] + 800b9cc: 6903 ldr r3, [r0, #16] + 800b9ce: 60cb str r3, [r1, #12] + 800b9d0: 78c3 ldrb r3, [r0, #3] + 800b9d2: 4d21 ldr r5, [pc, #132] ; (800ba58 <McpsIndication+0xb8>) + 800b9d4: f88d 3008 strb.w r3, [sp, #8] + 800b9d8: 7b03 ldrb r3, [r0, #12] + 800b9da: f88d 3009 strb.w r3, [sp, #9] + 800b9de: 6883 ldr r3, [r0, #8] + 800b9e0: 9303 str r3, [sp, #12] + 800b9e2: 682b ldr r3, [r5, #0] + 800b9e4: 6adb ldr r3, [r3, #44] ; 0x2c + 800b9e6: b10b cbz r3, 800b9ec <McpsIndication+0x4c> + 800b9e8: a802 add r0, sp, #8 + 800b9ea: 4798 blx r3 + 800b9ec: 682b ldr r3, [r5, #0] + 800b9ee: 6b9b ldr r3, [r3, #56] ; 0x38 + 800b9f0: b113 cbz r3, 800b9f8 <McpsIndication+0x58> + 800b9f2: 7e22 ldrb r2, [r4, #24] + 800b9f4: b102 cbz r2, 800b9f8 <McpsIndication+0x58> + 800b9f6: 4798 blx r3 + 800b9f8: 4e18 ldr r6, [pc, #96] ; (800ba5c <McpsIndication+0xbc>) + 800b9fa: 2500 movs r5, #0 + 800b9fc: 4637 mov r7, r6 + 800b9fe: f856 3b04 ldr.w r3, [r6], #4 + 800ba02: b153 cbz r3, 800ba1a <McpsIndication+0x7a> + 800ba04: 6a1a ldr r2, [r3, #32] + 800ba06: b142 cbz r2, 800ba1a <McpsIndication+0x7a> + 800ba08: 781a ldrb r2, [r3, #0] + 800ba0a: 78e3 ldrb r3, [r4, #3] + 800ba0c: 429a cmp r2, r3 + 800ba0e: d119 bne.n 800ba44 <McpsIndication+0xa4> + 800ba10: f856 3c04 ldr.w r3, [r6, #-4] + 800ba14: 4620 mov r0, r4 + 800ba16: 6a1b ldr r3, [r3, #32] + 800ba18: 4798 blx r3 + 800ba1a: 3501 adds r5, #1 + 800ba1c: b2eb uxtb r3, r5 + 800ba1e: 2b05 cmp r3, #5 + 800ba20: b26d sxtb r5, r5 + 800ba22: d1ec bne.n 800b9fe <McpsIndication+0x5e> + 800ba24: f10d 0007 add.w r0, sp, #7 + 800ba28: f7ff ffa6 bl 800b978 <LmHandlerGetCurrentClass> + 800ba2c: 7963 ldrb r3, [r4, #5] + 800ba2e: b13b cbz r3, 800ba40 <McpsIndication+0xa0> + 800ba30: 2100 movs r1, #0 + 800ba32: 2201 movs r2, #1 + 800ba34: a804 add r0, sp, #16 + 800ba36: f8ad 1010 strh.w r1, [sp, #16] + 800ba3a: 9105 str r1, [sp, #20] + 800ba3c: f7ff fef4 bl 800b828 <LmHandlerSend> + 800ba40: b007 add sp, #28 + 800ba42: bdf0 pop {r4, r5, r6, r7, pc} + 800ba44: 2d00 cmp r5, #0 + 800ba46: d1e8 bne.n 800ba1a <McpsIndication+0x7a> + 800ba48: 683b ldr r3, [r7, #0] + 800ba4a: 68db ldr r3, [r3, #12] + 800ba4c: 4798 blx r3 + 800ba4e: 2800 cmp r0, #0 + 800ba50: d1de bne.n 800ba10 <McpsIndication+0x70> + 800ba52: e7e2 b.n 800ba1a <McpsIndication+0x7a> + 800ba54: 20000848 .word 0x20000848 + 800ba58: 20001070 .word 0x20001070 + 800ba5c: 20001074 .word 0x20001074 + +0800ba60 <LmHandlerGetTxDatarate>: + 800ba60: b510 push {r4, lr} + 800ba62: 4604 mov r4, r0 + 800ba64: b08a sub sp, #40 ; 0x28 + 800ba66: b918 cbnz r0, 800ba70 <LmHandlerGetTxDatarate+0x10> + 800ba68: f04f 30ff mov.w r0, #4294967295 + 800ba6c: b00a add sp, #40 ; 0x28 + 800ba6e: bd10 pop {r4, pc} + 800ba70: 231f movs r3, #31 + 800ba72: 4668 mov r0, sp + 800ba74: f88d 3000 strb.w r3, [sp] + 800ba78: f002 faae bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800ba7c: 2800 cmp r0, #0 + 800ba7e: d1f3 bne.n 800ba68 <LmHandlerGetTxDatarate+0x8> + 800ba80: 4a02 ldr r2, [pc, #8] ; (800ba8c <LmHandlerGetTxDatarate+0x2c>) + 800ba82: f99d 3004 ldrsb.w r3, [sp, #4] + 800ba86: 7023 strb r3, [r4, #0] + 800ba88: 7113 strb r3, [r2, #4] + 800ba8a: e7ef b.n 800ba6c <LmHandlerGetTxDatarate+0xc> + 800ba8c: 20001088 .word 0x20001088 + +0800ba90 <LmHandlerSetSystemMaxRxError>: + 800ba90: b500 push {lr} + 800ba92: b08b sub sp, #44 ; 0x2c + 800ba94: 2322 movs r3, #34 ; 0x22 + 800ba96: 9001 str r0, [sp, #4] + 800ba98: 4668 mov r0, sp + 800ba9a: f88d 3000 strb.w r3, [sp] + 800ba9e: f002 fbad bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800baa2: 3800 subs r0, #0 + 800baa4: bf18 it ne + 800baa6: 2001 movne r0, #1 + 800baa8: 4240 negs r0, r0 + 800baaa: b00b add sp, #44 ; 0x2c + 800baac: f85d fb04 ldr.w pc, [sp], #4 + +0800bab0 <LmHandlerConfigure>: + 800bab0: b570 push {r4, r5, r6, lr} + 800bab2: 4c63 ldr r4, [pc, #396] ; (800bc40 <LmHandlerConfigure+0x190>) + 800bab4: 4601 mov r1, r0 + 800bab6: 2218 movs r2, #24 + 800bab8: b08e sub sp, #56 ; 0x38 + 800baba: 4620 mov r0, r4 + 800babc: f005 ff66 bl 801198c <memcpy1> + 800bac0: f7f8 fe52 bl 8004768 <LoraInfo_GetPtr> + 800bac4: 7823 ldrb r3, [r4, #0] + 800bac6: 6840 ldr r0, [r0, #4] + 800bac8: 2201 movs r2, #1 + 800baca: fa02 f103 lsl.w r1, r2, r3 + 800bace: 4001 ands r1, r0 + 800bad0: d104 bne.n 800badc <LmHandlerConfigure+0x2c> + 800bad2: 4b5c ldr r3, [pc, #368] ; (800bc44 <LmHandlerConfigure+0x194>) + 800bad4: 4608 mov r0, r1 + 800bad6: f007 ff4f bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800bada: e7fe b.n 800bada <LmHandlerConfigure+0x2a> + 800badc: 495a ldr r1, [pc, #360] ; (800bc48 <LmHandlerConfigure+0x198>) + 800bade: 485b ldr r0, [pc, #364] ; (800bc4c <LmHandlerConfigure+0x19c>) + 800bae0: 461a mov r2, r3 + 800bae2: f002 f811 bl 800db08 <LoRaMacInitialization> + 800bae6: b118 cbz r0, 800baf0 <LmHandlerConfigure+0x40> + 800bae8: f04f 30ff mov.w r0, #4294967295 + 800baec: b00e add sp, #56 ; 0x38 + 800baee: bd70 pop {r4, r5, r6, pc} + 800baf0: 2326 movs r3, #38 ; 0x26 + 800baf2: a804 add r0, sp, #16 + 800baf4: f88d 3010 strb.w r3, [sp, #16] + 800baf8: f002 fb80 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800bafc: 4e54 ldr r6, [pc, #336] ; (800bc50 <LmHandlerConfigure+0x1a0>) + 800bafe: 4d55 ldr r5, [pc, #340] ; (800bc54 <LmHandlerConfigure+0x1a4>) + 800bb00: 2800 cmp r0, #0 + 800bb02: d170 bne.n 800bbe6 <LmHandlerConfigure+0x136> + 800bb04: 2301 movs r3, #1 + 800bb06: 7033 strb r3, [r6, #0] + 800bb08: 682b ldr r3, [r5, #0] + 800bb0a: 69db ldr r3, [r3, #28] + 800bb0c: b10b cbz r3, 800bb12 <LmHandlerConfigure+0x62> + 800bb0e: 2000 movs r0, #0 + 800bb10: 4798 blx r3 + 800bb12: 2326 movs r3, #38 ; 0x26 + 800bb14: a804 add r0, sp, #16 + 800bb16: f88d 3010 strb.w r3, [sp, #16] + 800bb1a: f002 fa5d bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800bb1e: 9b05 ldr r3, [sp, #20] + 800bb20: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800bb24: 7022 strb r2, [r4, #0] + 800bb26: f893 2118 ldrb.w r2, [r3, #280] ; 0x118 + 800bb2a: f893 311a ldrb.w r3, [r3, #282] ; 0x11a + 800bb2e: 7062 strb r2, [r4, #1] + 800bb30: 70a3 strb r3, [r4, #2] + 800bb32: 4b45 ldr r3, [pc, #276] ; (800bc48 <LmHandlerConfigure+0x198>) + 800bb34: e9d3 0102 ldrd r0, r1, [r3, #8] + 800bb38: f005 fe1a bl 8011770 <SecureElementInitMcuID> + 800bb3c: 4605 mov r5, r0 + 800bb3e: 2800 cmp r0, #0 + 800bb40: d1d2 bne.n 800bae8 <LmHandlerConfigure+0x38> + 800bb42: 4e45 ldr r6, [pc, #276] ; (800bc58 <LmHandlerConfigure+0x1a8>) + 800bb44: 2306 movs r3, #6 + 800bb46: a804 add r0, sp, #16 + 800bb48: f88d 3010 strb.w r3, [sp, #16] + 800bb4c: f002 fa44 bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800bb50: 9b05 ldr r3, [sp, #20] + 800bb52: 6173 str r3, [r6, #20] + 800bb54: a804 add r0, sp, #16 + 800bb56: f002 fb51 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800bb5a: 2302 movs r3, #2 + 800bb5c: a804 add r0, sp, #16 + 800bb5e: f88d 3010 strb.w r3, [sp, #16] + 800bb62: 9605 str r6, [sp, #20] + 800bb64: f002 fa38 bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800bb68: 3608 adds r6, #8 + 800bb6a: 2303 movs r3, #3 + 800bb6c: a804 add r0, sp, #16 + 800bb6e: f88d 3010 strb.w r3, [sp, #16] + 800bb72: 9605 str r6, [sp, #20] + 800bb74: f002 fa30 bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800bb78: 260f movs r6, #15 + 800bb7a: f005 febd bl 80118f8 <SecureElementPrintKeys> + 800bb7e: 2301 movs r3, #1 + 800bb80: a804 add r0, sp, #16 + 800bb82: f88d 3014 strb.w r3, [sp, #20] + 800bb86: f88d 6010 strb.w r6, [sp, #16] + 800bb8a: f002 fb37 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800bb8e: 2310 movs r3, #16 + 800bb90: eb0d 0003 add.w r0, sp, r3 + 800bb94: f88d 3010 strb.w r3, [sp, #16] + 800bb98: f88d 5014 strb.w r5, [sp, #20] + 800bb9c: f002 fb2e bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800bba0: 2304 movs r3, #4 + 800bba2: f88d 3010 strb.w r3, [sp, #16] + 800bba6: a804 add r0, sp, #16 + 800bba8: 78a3 ldrb r3, [r4, #2] + 800bbaa: f88d 3014 strb.w r3, [sp, #20] + 800bbae: f002 fb25 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800bbb2: 2339 movs r3, #57 ; 0x39 + 800bbb4: f88d 3010 strb.w r3, [sp, #16] + 800bbb8: a804 add r0, sp, #16 + 800bbba: 6963 ldr r3, [r4, #20] + 800bbbc: 9305 str r3, [sp, #20] + 800bbbe: f002 fb1d bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800bbc2: a902 add r1, sp, #8 + 800bbc4: 7820 ldrb r0, [r4, #0] + 800bbc6: f88d 6008 strb.w r6, [sp, #8] + 800bbca: f003 ff51 bl 800fa70 <RegionGetPhyParam> + 800bbce: 3800 subs r0, #0 + 800bbd0: bf18 it ne + 800bbd2: 2001 movne r0, #1 + 800bbd4: 71e0 strb r0, [r4, #7] + 800bbd6: 2014 movs r0, #20 + 800bbd8: f7ff ff5a bl 800ba90 <LmHandlerSetSystemMaxRxError> + 800bbdc: 79e0 ldrb r0, [r4, #7] + 800bbde: f003 f803 bl 800ebe8 <LoRaMacTestSetDutyCycleOn> + 800bbe2: 4628 mov r0, r5 + 800bbe4: e782 b.n 800baec <LmHandlerConfigure+0x3c> + 800bbe6: 2327 movs r3, #39 ; 0x27 + 800bbe8: f88d 3010 strb.w r3, [sp, #16] + 800bbec: 682b ldr r3, [r5, #0] + 800bbee: 691b ldr r3, [r3, #16] + 800bbf0: b143 cbz r3, 800bc04 <LmHandlerConfigure+0x154> + 800bbf2: a804 add r0, sp, #16 + 800bbf4: f002 f9f0 bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800bbf8: 682b ldr r3, [r5, #0] + 800bbfa: 9805 ldr r0, [sp, #20] + 800bbfc: 691b ldr r3, [r3, #16] + 800bbfe: f44f 61ee mov.w r1, #1904 ; 0x770 + 800bc02: 4798 blx r3 + 800bc04: 2326 movs r3, #38 ; 0x26 + 800bc06: a804 add r0, sp, #16 + 800bc08: f88d 3010 strb.w r3, [sp, #16] + 800bc0c: f002 faf6 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800bc10: b950 cbnz r0, 800bc28 <LmHandlerConfigure+0x178> + 800bc12: 2301 movs r3, #1 + 800bc14: a804 add r0, sp, #16 + 800bc16: f88d 3010 strb.w r3, [sp, #16] + 800bc1a: f002 f9dd bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800bc1e: f89d 3014 ldrb.w r3, [sp, #20] + 800bc22: 2b00 cmp r3, #0 + 800bc24: f47f af6e bne.w 800bb04 <LmHandlerConfigure+0x54> + 800bc28: 7833 ldrb r3, [r6, #0] + 800bc2a: 2b00 cmp r3, #0 + 800bc2c: f47f af6c bne.w 800bb08 <LmHandlerConfigure+0x58> + 800bc30: 2205 movs r2, #5 + 800bc32: a804 add r0, sp, #16 + 800bc34: f88d 2010 strb.w r2, [sp, #16] + 800bc38: 9305 str r3, [sp, #20] + 800bc3a: f002 fadf bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800bc3e: e778 b.n 800bb32 <LmHandlerConfigure+0x82> + 800bc40: 20001088 .word 0x20001088 + 800bc44: 080152a8 .word 0x080152a8 + 800bc48: 200010a0 .word 0x200010a0 + 800bc4c: 200010b8 .word 0x200010b8 + 800bc50: 20001068 .word 0x20001068 + 800bc54: 20001070 .word 0x20001070 + 800bc58: 20001050 .word 0x20001050 + +0800bc5c <LmHandlerPackageRegister>: + 800bc5c: b537 push {r0, r1, r2, r4, r5, lr} + 800bc5e: 2300 movs r3, #0 + 800bc60: 460d mov r5, r1 + 800bc62: 9301 str r3, [sp, #4] + 800bc64: 4604 mov r4, r0 + 800bc66: b9c0 cbnz r0, 800bc9a <LmHandlerPackageRegister+0x3e> + 800bc68: f000 fad0 bl 800c20c <LmhpCompliancePackageFactory> + 800bc6c: 9001 str r0, [sp, #4] + 800bc6e: 9b01 ldr r3, [sp, #4] + 800bc70: b1c3 cbz r3, 800bca4 <LmHandlerPackageRegister+0x48> + 800bc72: 4a0e ldr r2, [pc, #56] ; (800bcac <LmHandlerPackageRegister+0x50>) + 800bc74: 490e ldr r1, [pc, #56] ; (800bcb0 <LmHandlerPackageRegister+0x54>) + 800bc76: f842 3024 str.w r3, [r2, r4, lsl #2] + 800bc7a: 4a0e ldr r2, [pc, #56] ; (800bcb4 <LmHandlerPackageRegister+0x58>) + 800bc7c: 62da str r2, [r3, #44] ; 0x2c + 800bc7e: 4a0e ldr r2, [pc, #56] ; (800bcb8 <LmHandlerPackageRegister+0x5c>) + 800bc80: 631a str r2, [r3, #48] ; 0x30 + 800bc82: 4a0e ldr r2, [pc, #56] ; (800bcbc <LmHandlerPackageRegister+0x60>) + 800bc84: 635a str r2, [r3, #52] ; 0x34 + 800bc86: 4a0e ldr r2, [pc, #56] ; (800bcc0 <LmHandlerPackageRegister+0x64>) + 800bc88: 6812 ldr r2, [r2, #0] + 800bc8a: 6992 ldr r2, [r2, #24] + 800bc8c: 619a str r2, [r3, #24] + 800bc8e: 4628 mov r0, r5 + 800bc90: 685b ldr r3, [r3, #4] + 800bc92: 22f2 movs r2, #242 ; 0xf2 + 800bc94: 4798 blx r3 + 800bc96: 2000 movs r0, #0 + 800bc98: e006 b.n 800bca8 <LmHandlerPackageRegister+0x4c> + 800bc9a: a901 add r1, sp, #4 + 800bc9c: f000 fabc bl 800c218 <LmhpPackagesRegister> + 800bca0: 2800 cmp r0, #0 + 800bca2: d0e4 beq.n 800bc6e <LmHandlerPackageRegister+0x12> + 800bca4: f04f 30ff mov.w r0, #4294967295 + 800bca8: b003 add sp, #12 + 800bcaa: bd30 pop {r4, r5, pc} + 800bcac: 20001074 .word 0x20001074 + 800bcb0: 20000f5c .word 0x20000f5c + 800bcb4: 0800b70d .word 0x0800b70d + 800bcb8: 0800b829 .word 0x0800b829 + 800bcbc: 0800b525 .word 0x0800b525 + 800bcc0: 20001070 .word 0x20001070 + +0800bcc4 <LmHandlerInit>: + 800bcc4: 4b15 ldr r3, [pc, #84] ; (800bd1c <LmHandlerInit+0x58>) + 800bcc6: b507 push {r0, r1, r2, lr} + 800bcc8: 6018 str r0, [r3, #0] + 800bcca: 4b15 ldr r3, [pc, #84] ; (800bd20 <LmHandlerInit+0x5c>) + 800bccc: 4a15 ldr r2, [pc, #84] ; (800bd24 <LmHandlerInit+0x60>) + 800bcce: 601a str r2, [r3, #0] + 800bcd0: 4a15 ldr r2, [pc, #84] ; (800bd28 <LmHandlerInit+0x64>) + 800bcd2: 605a str r2, [r3, #4] + 800bcd4: 4a15 ldr r2, [pc, #84] ; (800bd2c <LmHandlerInit+0x68>) + 800bcd6: 609a str r2, [r3, #8] + 800bcd8: 4a15 ldr r2, [pc, #84] ; (800bd30 <LmHandlerInit+0x6c>) + 800bcda: 60da str r2, [r3, #12] + 800bcdc: 4b15 ldr r3, [pc, #84] ; (800bd34 <LmHandlerInit+0x70>) + 800bcde: 6802 ldr r2, [r0, #0] + 800bce0: 601a str r2, [r3, #0] + 800bce2: 6842 ldr r2, [r0, #4] + 800bce4: 605a str r2, [r3, #4] + 800bce6: 6882 ldr r2, [r0, #8] + 800bce8: 609a str r2, [r3, #8] + 800bcea: 68c2 ldr r2, [r0, #12] + 800bcec: 60da str r2, [r3, #12] + 800bcee: 4a12 ldr r2, [pc, #72] ; (800bd38 <LmHandlerInit+0x74>) + 800bcf0: 9101 str r1, [sp, #4] + 800bcf2: 611a str r2, [r3, #16] + 800bcf4: 4911 ldr r1, [pc, #68] ; (800bd3c <LmHandlerInit+0x78>) + 800bcf6: 6982 ldr r2, [r0, #24] + 800bcf8: 615a str r2, [r3, #20] + 800bcfa: 2000 movs r0, #0 + 800bcfc: f7ff ffae bl 800bc5c <LmHandlerPackageRegister> + 800bd00: b948 cbnz r0, 800bd16 <LmHandlerInit+0x52> + 800bd02: a801 add r0, sp, #4 + 800bd04: f000 fa86 bl 800c214 <LmhpPackagesRegistrationInit> + 800bd08: 3800 subs r0, #0 + 800bd0a: bf18 it ne + 800bd0c: 2001 movne r0, #1 + 800bd0e: 4240 negs r0, r0 + 800bd10: b003 add sp, #12 + 800bd12: f85d fb04 ldr.w pc, [sp], #4 + 800bd16: f04f 30ff mov.w r0, #4294967295 + 800bd1a: e7f9 b.n 800bd10 <LmHandlerInit+0x4c> + 800bd1c: 20001070 .word 0x20001070 + 800bd20: 200010b8 .word 0x200010b8 + 800bd24: 0800b5b1 .word 0x0800b5b1 + 800bd28: 0800b9a1 .word 0x0800b9a1 + 800bd2c: 0800bdbd .word 0x0800bdbd + 800bd30: 0800b54d .word 0x0800b54d + 800bd34: 200010a0 .word 0x200010a0 + 800bd38: 0800fa21 .word 0x0800fa21 + 800bd3c: 2000083c .word 0x2000083c + +0800bd40 <LmHandlerGetVersion>: + 800bd40: b151 cbz r1, 800bd58 <LmHandlerGetVersion+0x18> + 800bd42: b118 cbz r0, 800bd4c <LmHandlerGetVersion+0xc> + 800bd44: 2801 cmp r0, #1 + 800bd46: d004 beq.n 800bd52 <LmHandlerGetVersion+0x12> + 800bd48: 2000 movs r0, #0 + 800bd4a: 4770 bx lr + 800bd4c: 4b04 ldr r3, [pc, #16] ; (800bd60 <LmHandlerGetVersion+0x20>) + 800bd4e: 600b str r3, [r1, #0] + 800bd50: 4770 bx lr + 800bd52: 4b04 ldr r3, [pc, #16] ; (800bd64 <LmHandlerGetVersion+0x24>) + 800bd54: 600b str r3, [r1, #0] + 800bd56: e7f7 b.n 800bd48 <LmHandlerGetVersion+0x8> + 800bd58: f04f 30ff mov.w r0, #4294967295 + 800bd5c: 4770 bx lr + 800bd5e: bf00 nop + 800bd60: 01000300 .word 0x01000300 + 800bd64: 01010003 .word 0x01010003 + +0800bd68 <LmHandlerStop>: + 800bd68: b508 push {r3, lr} + 800bd6a: f002 ff59 bl 800ec20 <LoRaMacDeInitialization> + 800bd6e: 2800 cmp r0, #0 + 800bd70: bf14 ite ne + 800bd72: f06f 0001 mvnne.w r0, #1 + 800bd76: 2000 moveq r0, #0 + 800bd78: bd08 pop {r3, pc} + +0800bd7a <LmHandlerHalt>: + 800bd7a: b508 push {r3, lr} + 800bd7c: f002 f8a4 bl 800dec8 <LoRaMacHalt> + 800bd80: 2800 cmp r0, #0 + 800bd82: bf14 ite ne + 800bd84: f06f 0001 mvnne.w r0, #1 + 800bd88: 2000 moveq r0, #0 + 800bd8a: bd08 pop {r3, pc} + +0800bd8c <LmHandlerGetTxPower>: + 800bd8c: b510 push {r4, lr} + 800bd8e: 4604 mov r4, r0 + 800bd90: b08a sub sp, #40 ; 0x28 + 800bd92: b918 cbnz r0, 800bd9c <LmHandlerGetTxPower+0x10> + 800bd94: f04f 30ff mov.w r0, #4294967295 + 800bd98: b00a add sp, #40 ; 0x28 + 800bd9a: bd10 pop {r4, pc} + 800bd9c: 2320 movs r3, #32 + 800bd9e: 4668 mov r0, sp + 800bda0: f88d 3000 strb.w r3, [sp] + 800bda4: f002 f918 bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800bda8: 2800 cmp r0, #0 + 800bdaa: d1f3 bne.n 800bd94 <LmHandlerGetTxPower+0x8> + 800bdac: 4a02 ldr r2, [pc, #8] ; (800bdb8 <LmHandlerGetTxPower+0x2c>) + 800bdae: f99d 3004 ldrsb.w r3, [sp, #4] + 800bdb2: 7023 strb r3, [r4, #0] + 800bdb4: 7153 strb r3, [r2, #5] + 800bdb6: e7ef b.n 800bd98 <LmHandlerGetTxPower+0xc> + 800bdb8: 20001088 .word 0x20001088 + +0800bdbc <MlmeConfirm>: + 800bdbc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800bdc0: 4d2f ldr r5, [pc, #188] ; (800be80 <MlmeConfirm+0xc4>) + 800bdc2: 4f30 ldr r7, [pc, #192] ; (800be84 <MlmeConfirm+0xc8>) + 800bdc4: 2300 movs r3, #0 + 800bdc6: 702b strb r3, [r5, #0] + 800bdc8: 7843 ldrb r3, [r0, #1] + 800bdca: 706b strb r3, [r5, #1] + 800bdcc: 683b ldr r3, [r7, #0] + 800bdce: 6a9b ldr r3, [r3, #40] ; 0x28 + 800bdd0: b08a sub sp, #40 ; 0x28 + 800bdd2: 4604 mov r4, r0 + 800bdd4: b10b cbz r3, 800bdda <MlmeConfirm+0x1e> + 800bdd6: 4628 mov r0, r5 + 800bdd8: 4798 blx r3 + 800bdda: f8df 80ac ldr.w r8, [pc, #172] ; 800be88 <MlmeConfirm+0xcc> + 800bdde: 2600 movs r6, #0 + 800bde0: f858 3b04 ldr.w r3, [r8], #4 + 800bde4: b11b cbz r3, 800bdee <MlmeConfirm+0x32> + 800bde6: 6a5b ldr r3, [r3, #36] ; 0x24 + 800bde8: b10b cbz r3, 800bdee <MlmeConfirm+0x32> + 800bdea: 4620 mov r0, r4 + 800bdec: 4798 blx r3 + 800bdee: 3601 adds r6, #1 + 800bdf0: b2f3 uxtb r3, r6 + 800bdf2: 2b05 cmp r3, #5 + 800bdf4: b276 sxtb r6, r6 + 800bdf6: d1f3 bne.n 800bde0 <MlmeConfirm+0x24> + 800bdf8: 7823 ldrb r3, [r4, #0] + 800bdfa: 2b05 cmp r3, #5 + 800bdfc: d02f beq.n 800be5e <MlmeConfirm+0xa2> + 800bdfe: 2b0c cmp r3, #12 + 800be00: d035 beq.n 800be6e <MlmeConfirm+0xb2> + 800be02: 2b01 cmp r3, #1 + 800be04: d125 bne.n 800be52 <MlmeConfirm+0x96> + 800be06: 4c21 ldr r4, [pc, #132] ; (800be8c <MlmeConfirm+0xd0>) + 800be08: 2306 movs r3, #6 + 800be0a: 4668 mov r0, sp + 800be0c: f88d 3000 strb.w r3, [sp] + 800be10: f002 f8e2 bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800be14: 9901 ldr r1, [sp, #4] + 800be16: 79e0 ldrb r0, [r4, #7] + 800be18: f005 fcf0 bl 80117fc <SecureElementSetDevAddr> + 800be1c: b910 cbnz r0, 800be24 <MlmeConfirm+0x68> + 800be1e: 4b1c ldr r3, [pc, #112] ; (800be90 <MlmeConfirm+0xd4>) + 800be20: 9a01 ldr r2, [sp, #4] + 800be22: 615a str r2, [r3, #20] + 800be24: 481b ldr r0, [pc, #108] ; (800be94 <MlmeConfirm+0xd8>) + 800be26: f7ff fe1b bl 800ba60 <LmHandlerGetTxDatarate> + 800be2a: 481b ldr r0, [pc, #108] ; (800be98 <MlmeConfirm+0xdc>) + 800be2c: f7ff ffae bl 800bd8c <LmHandlerGetTxPower> + 800be30: 786b ldrb r3, [r5, #1] + 800be32: b98b cbnz r3, 800be58 <MlmeConfirm+0x9c> + 800be34: 71a3 strb r3, [r4, #6] + 800be36: 4b19 ldr r3, [pc, #100] ; (800be9c <MlmeConfirm+0xe0>) + 800be38: 7858 ldrb r0, [r3, #1] + 800be3a: f7ff fc1d bl 800b678 <LmHandlerRequestClass> + 800be3e: 683b ldr r3, [r7, #0] + 800be40: 6a5b ldr r3, [r3, #36] ; 0x24 + 800be42: b10b cbz r3, 800be48 <MlmeConfirm+0x8c> + 800be44: 4811 ldr r0, [pc, #68] ; (800be8c <MlmeConfirm+0xd0>) + 800be46: 4798 blx r3 + 800be48: 786b ldrb r3, [r5, #1] + 800be4a: b913 cbnz r3, 800be52 <MlmeConfirm+0x96> + 800be4c: 79e0 ldrb r0, [r4, #7] + 800be4e: f005 fd65 bl 801191c <SecureElementPrintSessionKeys> + 800be52: b00a add sp, #40 ; 0x28 + 800be54: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800be58: 23ff movs r3, #255 ; 0xff + 800be5a: 71a3 strb r3, [r4, #6] + 800be5c: e7ef b.n 800be3e <MlmeConfirm+0x82> + 800be5e: 4b10 ldr r3, [pc, #64] ; (800bea0 <MlmeConfirm+0xe4>) + 800be60: 2201 movs r2, #1 + 800be62: 745a strb r2, [r3, #17] + 800be64: 7a22 ldrb r2, [r4, #8] + 800be66: 749a strb r2, [r3, #18] + 800be68: 7a62 ldrb r2, [r4, #9] + 800be6a: 74da strb r2, [r3, #19] + 800be6c: e7f1 b.n 800be52 <MlmeConfirm+0x96> + 800be6e: 7863 ldrb r3, [r4, #1] + 800be70: 2b00 cmp r3, #0 + 800be72: d0ee beq.n 800be52 <MlmeConfirm+0x96> + 800be74: b00a add sp, #40 ; 0x28 + 800be76: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800be7a: f7ff bb53 b.w 800b524 <LmHandlerDeviceTimeReq> + 800be7e: bf00 nop + 800be80: 2000085c .word 0x2000085c + 800be84: 20001070 .word 0x20001070 + 800be88: 20001074 .word 0x20001074 + 800be8c: 20000830 .word 0x20000830 + 800be90: 20001050 .word 0x20001050 + 800be94: 20000834 .word 0x20000834 + 800be98: 20000835 .word 0x20000835 + 800be9c: 20001088 .word 0x20001088 + 800bea0: 20000848 .word 0x20000848 + +0800bea4 <LmHandlerNvmDataStore>: + 800bea4: b530 push {r4, r5, lr} + 800bea6: b08b sub sp, #44 ; 0x2c + 800bea8: f7ff ff67 bl 800bd7a <LmHandlerHalt> + 800beac: 4604 mov r4, r0 + 800beae: b9f0 cbnz r0, 800beee <LmHandlerNvmDataStore+0x4a> + 800beb0: f003 fdbe bl 800fa30 <NvmDataMgmtStoreBegin> + 800beb4: 1c83 adds r3, r0, #2 + 800beb6: d01d beq.n 800bef4 <LmHandlerNvmDataStore+0x50> + 800beb8: b9f8 cbnz r0, 800befa <LmHandlerNvmDataStore+0x56> + 800beba: 4d13 ldr r5, [pc, #76] ; (800bf08 <LmHandlerNvmDataStore+0x64>) + 800bebc: 682b ldr r3, [r5, #0] + 800bebe: 695b ldr r3, [r3, #20] + 800bec0: b1db cbz r3, 800befa <LmHandlerNvmDataStore+0x56> + 800bec2: 2326 movs r3, #38 ; 0x26 + 800bec4: 4668 mov r0, sp + 800bec6: f88d 3000 strb.w r3, [sp] + 800beca: f002 f885 bl 800dfd8 <LoRaMacMibGetRequestConfirm> + 800bece: 682b ldr r3, [r5, #0] + 800bed0: 9801 ldr r0, [sp, #4] + 800bed2: 695b ldr r3, [r3, #20] + 800bed4: f44f 61ee mov.w r1, #1904 ; 0x770 + 800bed8: 4798 blx r3 + 800beda: f003 fdbb bl 800fa54 <NvmDataMgmtStoreEnd> + 800bede: b978 cbnz r0, 800bf00 <LmHandlerNvmDataStore+0x5c> + 800bee0: b92c cbnz r4, 800beee <LmHandlerNvmDataStore+0x4a> + 800bee2: 4b09 ldr r3, [pc, #36] ; (800bf08 <LmHandlerNvmDataStore+0x64>) + 800bee4: 681b ldr r3, [r3, #0] + 800bee6: 69db ldr r3, [r3, #28] + 800bee8: b10b cbz r3, 800beee <LmHandlerNvmDataStore+0x4a> + 800beea: 2001 movs r0, #1 + 800beec: 4798 blx r3 + 800beee: 4620 mov r0, r4 + 800bef0: b00b add sp, #44 ; 0x2c + 800bef2: bd30 pop {r4, r5, pc} + 800bef4: f06f 0407 mvn.w r4, #7 + 800bef8: e7ef b.n 800beda <LmHandlerNvmDataStore+0x36> + 800befa: f04f 34ff mov.w r4, #4294967295 + 800befe: e7ec b.n 800beda <LmHandlerNvmDataStore+0x36> + 800bf00: f04f 34ff mov.w r4, #4294967295 + 800bf04: e7f3 b.n 800beee <LmHandlerNvmDataStore+0x4a> + 800bf06: bf00 nop + 800bf08: 20001070 .word 0x20001070 + +0800bf0c <LmhpComplianceInit>: + 800bf0c: b530 push {r4, r5, lr} + 800bf0e: 4d06 ldr r5, [pc, #24] ; (800bf28 <LmhpComplianceInit+0x1c>) + 800bf10: 4c06 ldr r4, [pc, #24] ; (800bf2c <LmhpComplianceInit+0x20>) + 800bf12: b130 cbz r0, 800bf22 <LmhpComplianceInit+0x16> + 800bf14: b129 cbz r1, 800bf22 <LmhpComplianceInit+0x16> + 800bf16: 6028 str r0, [r5, #0] + 800bf18: 60a1 str r1, [r4, #8] + 800bf1a: 7162 strb r2, [r4, #5] + 800bf1c: 2301 movs r3, #1 + 800bf1e: 7023 strb r3, [r4, #0] + 800bf20: bd30 pop {r4, r5, pc} + 800bf22: 2300 movs r3, #0 + 800bf24: 602b str r3, [r5, #0] + 800bf26: e7fa b.n 800bf1e <LmhpComplianceInit+0x12> + 800bf28: 200010f4 .word 0x200010f4 + 800bf2c: 200010c8 .word 0x200010c8 + +0800bf30 <LmhpComplianceIsInitialized>: + 800bf30: 4b01 ldr r3, [pc, #4] ; (800bf38 <LmhpComplianceIsInitialized+0x8>) + 800bf32: 7818 ldrb r0, [r3, #0] + 800bf34: 4770 bx lr + 800bf36: bf00 nop + 800bf38: 200010c8 .word 0x200010c8 + +0800bf3c <LmhpComplianceIsRunning>: + 800bf3c: 4b02 ldr r3, [pc, #8] ; (800bf48 <LmhpComplianceIsRunning+0xc>) + 800bf3e: 7818 ldrb r0, [r3, #0] + 800bf40: b100 cbz r0, 800bf44 <LmhpComplianceIsRunning+0x8> + 800bf42: 7858 ldrb r0, [r3, #1] + 800bf44: 4770 bx lr + 800bf46: bf00 nop + 800bf48: 200010c8 .word 0x200010c8 + +0800bf4c <LmhpComplianceProcess>: + 800bf4c: 4770 bx lr + ... + +0800bf50 <LmhpComplianceOnMcpsConfirm>: + 800bf50: 4b06 ldr r3, [pc, #24] ; (800bf6c <LmhpComplianceOnMcpsConfirm+0x1c>) + 800bf52: 781a ldrb r2, [r3, #0] + 800bf54: b14a cbz r2, 800bf6a <LmhpComplianceOnMcpsConfirm+0x1a> + 800bf56: 785a ldrb r2, [r3, #1] + 800bf58: b13a cbz r2, 800bf6a <LmhpComplianceOnMcpsConfirm+0x1a> + 800bf5a: 7802 ldrb r2, [r0, #0] + 800bf5c: 2a01 cmp r2, #1 + 800bf5e: d104 bne.n 800bf6a <LmhpComplianceOnMcpsConfirm+0x1a> + 800bf60: 7902 ldrb r2, [r0, #4] + 800bf62: b112 cbz r2, 800bf6a <LmhpComplianceOnMcpsConfirm+0x1a> + 800bf64: 899a ldrh r2, [r3, #12] + 800bf66: 3201 adds r2, #1 + 800bf68: 819a strh r2, [r3, #12] + 800bf6a: 4770 bx lr + 800bf6c: 200010c8 .word 0x200010c8 + +0800bf70 <LmhpComplianceOnMlmeConfirm>: + 800bf70: 4b07 ldr r3, [pc, #28] ; (800bf90 <LmhpComplianceOnMlmeConfirm+0x20>) + 800bf72: 781a ldrb r2, [r3, #0] + 800bf74: b152 cbz r2, 800bf8c <LmhpComplianceOnMlmeConfirm+0x1c> + 800bf76: 785a ldrb r2, [r3, #1] + 800bf78: b142 cbz r2, 800bf8c <LmhpComplianceOnMlmeConfirm+0x1c> + 800bf7a: 7802 ldrb r2, [r0, #0] + 800bf7c: 2a05 cmp r2, #5 + 800bf7e: d105 bne.n 800bf8c <LmhpComplianceOnMlmeConfirm+0x1c> + 800bf80: 7a01 ldrb r1, [r0, #8] + 800bf82: 7a42 ldrb r2, [r0, #9] + 800bf84: 73d9 strb r1, [r3, #15] + 800bf86: 2001 movs r0, #1 + 800bf88: 7398 strb r0, [r3, #14] + 800bf8a: 741a strb r2, [r3, #16] + 800bf8c: 4770 bx lr + 800bf8e: bf00 nop + 800bf90: 200010c8 .word 0x200010c8 + +0800bf94 <LmhpComplianceTxProcess.isra.0>: + 800bf94: b513 push {r0, r1, r4, lr} + 800bf96: 4c1a ldr r4, [pc, #104] ; (800c000 <LmhpComplianceTxProcess.isra.0+0x6c>) + 800bf98: 7823 ldrb r3, [r4, #0] + 800bf9a: b33b cbz r3, 800bfec <LmhpComplianceTxProcess.isra.0+0x58> + 800bf9c: 7863 ldrb r3, [r4, #1] + 800bf9e: b32b cbz r3, 800bfec <LmhpComplianceTxProcess.isra.0+0x58> + 800bfa0: 7ba2 ldrb r2, [r4, #14] + 800bfa2: 68a3 ldr r3, [r4, #8] + 800bfa4: b162 cbz r2, 800bfc0 <LmhpComplianceTxProcess.isra.0+0x2c> + 800bfa6: 2200 movs r2, #0 + 800bfa8: 73a2 strb r2, [r4, #14] + 800bfaa: 2203 movs r2, #3 + 800bfac: 71a2 strb r2, [r4, #6] + 800bfae: 2205 movs r2, #5 + 800bfb0: 701a strb r2, [r3, #0] + 800bfb2: 7be2 ldrb r2, [r4, #15] + 800bfb4: 705a strb r2, [r3, #1] + 800bfb6: 7c22 ldrb r2, [r4, #16] + 800bfb8: 709a strb r2, [r3, #2] + 800bfba: 2201 movs r2, #1 + 800bfbc: 70a2 strb r2, [r4, #2] + 800bfbe: e004 b.n 800bfca <LmhpComplianceTxProcess.isra.0+0x36> + 800bfc0: 78a2 ldrb r2, [r4, #2] + 800bfc2: 2a01 cmp r2, #1 + 800bfc4: d014 beq.n 800bff0 <LmhpComplianceTxProcess.isra.0+0x5c> + 800bfc6: 2a04 cmp r2, #4 + 800bfc8: d0f7 beq.n 800bfba <LmhpComplianceTxProcess.isra.0+0x26> + 800bfca: 22e0 movs r2, #224 ; 0xe0 + 800bfcc: f88d 2000 strb.w r2, [sp] + 800bfd0: 480c ldr r0, [pc, #48] ; (800c004 <LmhpComplianceTxProcess.isra.0+0x70>) + 800bfd2: 79a2 ldrb r2, [r4, #6] + 800bfd4: 9301 str r3, [sp, #4] + 800bfd6: f88d 2001 strb.w r2, [sp, #1] + 800bfda: f008 f849 bl 8014070 <UTIL_TIMER_Start> + 800bfde: 4b0a ldr r3, [pc, #40] ; (800c008 <LmhpComplianceTxProcess.isra.0+0x74>) + 800bfe0: 6b1b ldr r3, [r3, #48] ; 0x30 + 800bfe2: b11b cbz r3, 800bfec <LmhpComplianceTxProcess.isra.0+0x58> + 800bfe4: 78e1 ldrb r1, [r4, #3] + 800bfe6: 2201 movs r2, #1 + 800bfe8: 4668 mov r0, sp + 800bfea: 4798 blx r3 + 800bfec: b002 add sp, #8 + 800bfee: bd10 pop {r4, pc} + 800bff0: 2202 movs r2, #2 + 800bff2: 71a2 strb r2, [r4, #6] + 800bff4: 89a2 ldrh r2, [r4, #12] + 800bff6: 705a strb r2, [r3, #1] + 800bff8: 0a11 lsrs r1, r2, #8 + 800bffa: 7019 strb r1, [r3, #0] + 800bffc: e7e5 b.n 800bfca <LmhpComplianceTxProcess.isra.0+0x36> + 800bffe: bf00 nop + 800c000: 200010c8 .word 0x200010c8 + 800c004: 200010dc .word 0x200010dc + 800c008: 20000878 .word 0x20000878 + +0800c00c <OnComplianceTxNextPacketTimerEvent>: + 800c00c: f7ff bfc2 b.w 800bf94 <LmhpComplianceTxProcess.isra.0> + +0800c010 <LmhpComplianceOnMcpsIndication>: + 800c010: b530 push {r4, r5, lr} + 800c012: 4c79 ldr r4, [pc, #484] ; (800c1f8 <LmhpComplianceOnMcpsIndication+0x1e8>) + 800c014: 7823 ldrb r3, [r4, #0] + 800c016: b08d sub sp, #52 ; 0x34 + 800c018: 2b00 cmp r3, #0 + 800c01a: d043 beq.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c01c: 7b43 ldrb r3, [r0, #13] + 800c01e: 2b00 cmp r3, #0 + 800c020: d040 beq.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c022: 7865 ldrb r5, [r4, #1] + 800c024: b125 cbz r5, 800c030 <LmhpComplianceOnMcpsIndication+0x20> + 800c026: 7b83 ldrb r3, [r0, #14] + 800c028: b913 cbnz r3, 800c030 <LmhpComplianceOnMcpsIndication+0x20> + 800c02a: 89a3 ldrh r3, [r4, #12] + 800c02c: 3301 adds r3, #1 + 800c02e: 81a3 strh r3, [r4, #12] + 800c030: 78c1 ldrb r1, [r0, #3] + 800c032: 29e0 cmp r1, #224 ; 0xe0 + 800c034: d136 bne.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c036: 2d00 cmp r5, #0 + 800c038: d136 bne.n 800c0a8 <LmhpComplianceOnMcpsIndication+0x98> + 800c03a: 7b02 ldrb r2, [r0, #12] + 800c03c: 2a04 cmp r2, #4 + 800c03e: d131 bne.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c040: 6883 ldr r3, [r0, #8] + 800c042: 7818 ldrb r0, [r3, #0] + 800c044: 2801 cmp r0, #1 + 800c046: d12d bne.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c048: 7858 ldrb r0, [r3, #1] + 800c04a: 2801 cmp r0, #1 + 800c04c: d12a bne.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c04e: 7898 ldrb r0, [r3, #2] + 800c050: 2801 cmp r0, #1 + 800c052: d127 bne.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c054: 78db ldrb r3, [r3, #3] + 800c056: 2b01 cmp r3, #1 + 800c058: d124 bne.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c05a: 2002 movs r0, #2 + 800c05c: 8063 strh r3, [r4, #2] + 800c05e: 71a0 strb r0, [r4, #6] + 800c060: 60e5 str r5, [r4, #12] + 800c062: a802 add r0, sp, #8 + 800c064: 7063 strb r3, [r4, #1] + 800c066: f88d 300c strb.w r3, [sp, #12] + 800c06a: 7121 strb r1, [r4, #4] + 800c06c: f88d 2008 strb.w r2, [sp, #8] + 800c070: 7425 strb r5, [r4, #16] + 800c072: f002 f8c3 bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800c076: 4628 mov r0, r5 + 800c078: f002 fdb6 bl 800ebe8 <LoRaMacTestSetDutyCycleOn> + 800c07c: 4b5f ldr r3, [pc, #380] ; (800c1fc <LmhpComplianceOnMcpsIndication+0x1ec>) + 800c07e: 681b ldr r3, [r3, #0] + 800c080: 685b ldr r3, [r3, #4] + 800c082: b103 cbz r3, 800c086 <LmhpComplianceOnMcpsIndication+0x76> + 800c084: 4798 blx r3 + 800c086: 2200 movs r2, #0 + 800c088: 4b5d ldr r3, [pc, #372] ; (800c200 <LmhpComplianceOnMcpsIndication+0x1f0>) + 800c08a: 9200 str r2, [sp, #0] + 800c08c: f04f 31ff mov.w r1, #4294967295 + 800c090: 485c ldr r0, [pc, #368] ; (800c204 <LmhpComplianceOnMcpsIndication+0x1f4>) + 800c092: f007 ff41 bl 8013f18 <UTIL_TIMER_Create> + 800c096: f241 3188 movw r1, #5000 ; 0x1388 + 800c09a: 485a ldr r0, [pc, #360] ; (800c204 <LmhpComplianceOnMcpsIndication+0x1f4>) + 800c09c: f008 f822 bl 80140e4 <UTIL_TIMER_SetPeriod> + 800c0a0: f7ff ff78 bl 800bf94 <LmhpComplianceTxProcess.isra.0> + 800c0a4: b00d add sp, #52 ; 0x34 + 800c0a6: bd30 pop {r4, r5, pc} + 800c0a8: 6883 ldr r3, [r0, #8] + 800c0aa: 781a ldrb r2, [r3, #0] + 800c0ac: 70a2 strb r2, [r4, #2] + 800c0ae: 2a0a cmp r2, #10 + 800c0b0: d8f8 bhi.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c0b2: e8df f002 tbb [pc, r2] + 800c0b6: 2106 .short 0x2106 + 800c0b8: 3d2a2824 .word 0x3d2a2824 + 800c0bc: 8f8d6544 .word 0x8f8d6544 + 800c0c0: 99 .byte 0x99 + 800c0c1: 00 .byte 0x00 + 800c0c2: 4850 ldr r0, [pc, #320] ; (800c204 <LmhpComplianceOnMcpsIndication+0x1f4>) + 800c0c4: f007 ff86 bl 8013fd4 <UTIL_TIMER_Stop> + 800c0c8: 2300 movs r3, #0 + 800c0ca: 7063 strb r3, [r4, #1] + 800c0cc: 81a3 strh r3, [r4, #12] + 800c0ce: 4c4b ldr r4, [pc, #300] ; (800c1fc <LmhpComplianceOnMcpsIndication+0x1ec>) + 800c0d0: 2304 movs r3, #4 + 800c0d2: f88d 3008 strb.w r3, [sp, #8] + 800c0d6: 6823 ldr r3, [r4, #0] + 800c0d8: a802 add r0, sp, #8 + 800c0da: 781b ldrb r3, [r3, #0] + 800c0dc: f88d 300c strb.w r3, [sp, #12] + 800c0e0: f002 f88c bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800c0e4: 6823 ldr r3, [r4, #0] + 800c0e6: 7858 ldrb r0, [r3, #1] + 800c0e8: f002 fd7e bl 800ebe8 <LoRaMacTestSetDutyCycleOn> + 800c0ec: 6823 ldr r3, [r4, #0] + 800c0ee: 689b ldr r3, [r3, #8] + 800c0f0: 2b00 cmp r3, #0 + 800c0f2: d0d7 beq.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c0f4: 4798 blx r3 + 800c0f6: e7d5 b.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c0f8: 2302 movs r3, #2 + 800c0fa: 71a3 strb r3, [r4, #6] + 800c0fc: e7d2 b.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c0fe: f240 1301 movw r3, #257 ; 0x101 + 800c102: 8063 strh r3, [r4, #2] + 800c104: e7ce b.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c106: 2301 movs r3, #1 + 800c108: e7fb b.n 800c102 <LmhpComplianceOnMcpsIndication+0xf2> + 800c10a: 68a5 ldr r5, [r4, #8] + 800c10c: 7b03 ldrb r3, [r0, #12] + 800c10e: 71a3 strb r3, [r4, #6] + 800c110: 2204 movs r2, #4 + 800c112: 702a strb r2, [r5, #0] + 800c114: 7962 ldrb r2, [r4, #5] + 800c116: 429a cmp r2, r3 + 800c118: bf28 it cs + 800c11a: 461a movcs r2, r3 + 800c11c: 2300 movs r3, #0 + 800c11e: 3301 adds r3, #1 + 800c120: b2d9 uxtb r1, r3 + 800c122: 428a cmp r2, r1 + 800c124: d9be bls.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c126: 6881 ldr r1, [r0, #8] + 800c128: 5cc9 ldrb r1, [r1, r3] + 800c12a: 3101 adds r1, #1 + 800c12c: 54e9 strb r1, [r5, r3] + 800c12e: e7f6 b.n 800c11e <LmhpComplianceOnMcpsIndication+0x10e> + 800c130: 2305 movs r3, #5 + 800c132: f88d 3008 strb.w r3, [sp, #8] + 800c136: a802 add r0, sp, #8 + 800c138: f002 fad4 bl 800e6e4 <LoRaMacMlmeRequest> + 800c13c: e7b2 b.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c13e: 4831 ldr r0, [pc, #196] ; (800c204 <LmhpComplianceOnMcpsIndication+0x1f4>) + 800c140: f007 ff48 bl 8013fd4 <UTIL_TIMER_Stop> + 800c144: 2300 movs r3, #0 + 800c146: 7063 strb r3, [r4, #1] + 800c148: 81a3 strh r3, [r4, #12] + 800c14a: 4c2c ldr r4, [pc, #176] ; (800c1fc <LmhpComplianceOnMcpsIndication+0x1ec>) + 800c14c: 2304 movs r3, #4 + 800c14e: f88d 3008 strb.w r3, [sp, #8] + 800c152: 6823 ldr r3, [r4, #0] + 800c154: a802 add r0, sp, #8 + 800c156: 781b ldrb r3, [r3, #0] + 800c158: f88d 300c strb.w r3, [sp, #12] + 800c15c: f002 f84e bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800c160: 6823 ldr r3, [r4, #0] + 800c162: 7858 ldrb r0, [r3, #1] + 800c164: f002 fd40 bl 800ebe8 <LoRaMacTestSetDutyCycleOn> + 800c168: 6823 ldr r3, [r4, #0] + 800c16a: 689b ldr r3, [r3, #8] + 800c16c: b103 cbz r3, 800c170 <LmhpComplianceOnMcpsIndication+0x160> + 800c16e: 4798 blx r3 + 800c170: 4b25 ldr r3, [pc, #148] ; (800c208 <LmhpComplianceOnMcpsIndication+0x1f8>) + 800c172: 6adb ldr r3, [r3, #44] ; 0x2c + 800c174: 2b00 cmp r3, #0 + 800c176: d095 beq.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c178: 2101 movs r1, #1 + 800c17a: 2002 movs r0, #2 + 800c17c: 4798 blx r3 + 800c17e: e791 b.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c180: 7b02 ldrb r2, [r0, #12] + 800c182: 2a03 cmp r2, #3 + 800c184: d10d bne.n 800c1a2 <LmhpComplianceOnMcpsIndication+0x192> + 800c186: 2206 movs r2, #6 + 800c188: f88d 2008 strb.w r2, [sp, #8] + 800c18c: f8b3 3001 ldrh.w r3, [r3, #1] + 800c190: ba5b rev16 r3, r3 + 800c192: f8ad 300c strh.w r3, [sp, #12] + 800c196: a802 add r0, sp, #8 + 800c198: f002 faa4 bl 800e6e4 <LoRaMacMlmeRequest> + 800c19c: 2301 movs r3, #1 + 800c19e: 70a3 strb r3, [r4, #2] + 800c1a0: e780 b.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c1a2: 2a07 cmp r2, #7 + 800c1a4: d1f7 bne.n 800c196 <LmhpComplianceOnMcpsIndication+0x186> + 800c1a6: f88d 2008 strb.w r2, [sp, #8] + 800c1aa: f8b3 2001 ldrh.w r2, [r3, #1] + 800c1ae: ba52 rev16 r2, r2 + 800c1b0: f8ad 200c strh.w r2, [sp, #12] + 800c1b4: 791a ldrb r2, [r3, #4] + 800c1b6: 78d9 ldrb r1, [r3, #3] + 800c1b8: 0212 lsls r2, r2, #8 + 800c1ba: ea42 4201 orr.w r2, r2, r1, lsl #16 + 800c1be: 7959 ldrb r1, [r3, #5] + 800c1c0: 430a orrs r2, r1 + 800c1c2: 2164 movs r1, #100 ; 0x64 + 800c1c4: 434a muls r2, r1 + 800c1c6: 9204 str r2, [sp, #16] + 800c1c8: 799b ldrb r3, [r3, #6] + 800c1ca: f88d 3014 strb.w r3, [sp, #20] + 800c1ce: e7e2 b.n 800c196 <LmhpComplianceOnMcpsIndication+0x186> + 800c1d0: 230a movs r3, #10 + 800c1d2: e7ae b.n 800c132 <LmhpComplianceOnMcpsIndication+0x122> + 800c1d4: 2200 movs r2, #0 + 800c1d6: f88d 2008 strb.w r2, [sp, #8] + 800c1da: 785b ldrb r3, [r3, #1] + 800c1dc: f88d 300c strb.w r3, [sp, #12] + 800c1e0: a802 add r0, sp, #8 + 800c1e2: f002 f80b bl 800e1fc <LoRaMacMibSetRequestConfirm> + 800c1e6: e75d b.n 800c0a4 <LmhpComplianceOnMcpsIndication+0x94> + 800c1e8: 220d movs r2, #13 + 800c1ea: f88d 2008 strb.w r2, [sp, #8] + 800c1ee: 785b ldrb r3, [r3, #1] + 800c1f0: f88d 300c strb.w r3, [sp, #12] + 800c1f4: e79f b.n 800c136 <LmhpComplianceOnMcpsIndication+0x126> + 800c1f6: bf00 nop + 800c1f8: 200010c8 .word 0x200010c8 + 800c1fc: 200010f4 .word 0x200010f4 + 800c200: 0800c00d .word 0x0800c00d + 800c204: 200010dc .word 0x200010dc + 800c208: 20000878 .word 0x20000878 + +0800c20c <LmhpCompliancePackageFactory>: + 800c20c: 4800 ldr r0, [pc, #0] ; (800c210 <LmhpCompliancePackageFactory+0x4>) + 800c20e: 4770 bx lr + 800c210: 20000878 .word 0x20000878 + +0800c214 <LmhpPackagesRegistrationInit>: + 800c214: 2000 movs r0, #0 + 800c216: 4770 bx lr + +0800c218 <LmhpPackagesRegister>: + 800c218: f04f 30ff mov.w r0, #4294967295 + 800c21c: 4770 bx lr + ... + +0800c220 <UpdateRxSlotIdleState>: + 800c220: 4b04 ldr r3, [pc, #16] ; (800c234 <UpdateRxSlotIdleState+0x14>) + 800c222: 4a05 ldr r2, [pc, #20] ; (800c238 <UpdateRxSlotIdleState+0x18>) + 800c224: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800c228: 2b02 cmp r3, #2 + 800c22a: bf18 it ne + 800c22c: 2306 movne r3, #6 + 800c22e: f882 3480 strb.w r3, [r2, #1152] ; 0x480 + 800c232: 4770 bx lr + 800c234: 20001868 .word 0x20001868 + 800c238: 20001fdc .word 0x20001fdc + +0800c23c <OnMacProcessNotify>: + 800c23c: 4b03 ldr r3, [pc, #12] ; (800c24c <OnMacProcessNotify+0x10>) + 800c23e: f8d3 3348 ldr.w r3, [r3, #840] ; 0x348 + 800c242: b113 cbz r3, 800c24a <OnMacProcessNotify+0xe> + 800c244: 695b ldr r3, [r3, #20] + 800c246: b103 cbz r3, 800c24a <OnMacProcessNotify+0xe> + 800c248: 4718 bx r3 + 800c24a: 4770 bx lr + 800c24c: 20001fdc .word 0x20001fdc + +0800c250 <OnRadioRxError>: + 800c250: 4a03 ldr r2, [pc, #12] ; (800c260 <OnRadioRxError+0x10>) + 800c252: 7813 ldrb r3, [r2, #0] + 800c254: f043 0302 orr.w r3, r3, #2 + 800c258: 7013 strb r3, [r2, #0] + 800c25a: f7ff bfef b.w 800c23c <OnMacProcessNotify> + 800c25e: bf00 nop + 800c260: 20001fd8 .word 0x20001fd8 + +0800c264 <GetMaxAppPayloadWithoutFOptsLength>: + 800c264: b51f push {r0, r1, r2, r3, r4, lr} + 800c266: 4b0a ldr r3, [pc, #40] ; (800c290 <GetMaxAppPayloadWithoutFOptsLength+0x2c>) + 800c268: f88d 0009 strb.w r0, [sp, #9] + 800c26c: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800c270: f88d 200a strb.w r2, [sp, #10] + 800c274: f893 208c ldrb.w r2, [r3, #140] ; 0x8c + 800c278: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800c27c: 320d adds r2, #13 + 800c27e: a902 add r1, sp, #8 + 800c280: f88d 2008 strb.w r2, [sp, #8] + 800c284: f003 fbf4 bl 800fa70 <RegionGetPhyParam> + 800c288: b2c0 uxtb r0, r0 + 800c28a: b005 add sp, #20 + 800c28c: f85d fb04 ldr.w pc, [sp], #4 + 800c290: 20001868 .word 0x20001868 + +0800c294 <OnAckTimeoutTimerEvent>: + 800c294: b510 push {r4, lr} + 800c296: 4c0d ldr r4, [pc, #52] ; (800c2cc <OnAckTimeoutTimerEvent+0x38>) + 800c298: f504 707d add.w r0, r4, #1012 ; 0x3f4 + 800c29c: f007 fe9a bl 8013fd4 <UTIL_TIMER_Stop> + 800c2a0: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800c2a4: b113 cbz r3, 800c2ac <OnAckTimeoutTimerEvent+0x18> + 800c2a6: 2301 movs r3, #1 + 800c2a8: f884 340f strb.w r3, [r4, #1039] ; 0x40f + 800c2ac: 4b08 ldr r3, [pc, #32] ; (800c2d0 <OnAckTimeoutTimerEvent+0x3c>) + 800c2ae: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800c2b2: 2b02 cmp r3, #2 + 800c2b4: bf02 ittt eq + 800c2b6: f894 3481 ldrbeq.w r3, [r4, #1153] ; 0x481 + 800c2ba: f043 0310 orreq.w r3, r3, #16 + 800c2be: f884 3481 strbeq.w r3, [r4, #1153] ; 0x481 + 800c2c2: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c2c6: f7ff bfb9 b.w 800c23c <OnMacProcessNotify> + 800c2ca: bf00 nop + 800c2cc: 20001fdc .word 0x20001fdc + 800c2d0: 20001868 .word 0x20001868 + +0800c2d4 <PrepareRxDoneAbort>: + 800c2d4: b510 push {r4, lr} + 800c2d6: 4c0c ldr r4, [pc, #48] ; (800c308 <PrepareRxDoneAbort+0x34>) + 800c2d8: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800c2dc: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800c2e0: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800c2e4: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800c2e8: b113 cbz r3, 800c2f0 <PrepareRxDoneAbort+0x1c> + 800c2ea: 2000 movs r0, #0 + 800c2ec: f7ff ffd2 bl 800c294 <OnAckTimeoutTimerEvent> + 800c2f0: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800c2f4: f023 0312 bic.w r3, r3, #18 + 800c2f8: f043 0312 orr.w r3, r3, #18 + 800c2fc: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800c300: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c304: f7ff bf8c b.w 800c220 <UpdateRxSlotIdleState> + 800c308: 20001fdc .word 0x20001fdc + +0800c30c <HandleRadioRxErrorTimeout>: + 800c30c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800c310: 4d2c ldr r5, [pc, #176] ; (800c3c4 <HandleRadioRxErrorTimeout+0xb8>) + 800c312: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c316: 2b02 cmp r3, #2 + 800c318: 4607 mov r7, r0 + 800c31a: 460e mov r6, r1 + 800c31c: d002 beq.n 800c324 <HandleRadioRxErrorTimeout+0x18> + 800c31e: 4b2a ldr r3, [pc, #168] ; (800c3c8 <HandleRadioRxErrorTimeout+0xbc>) + 800c320: 6adb ldr r3, [r3, #44] ; 0x2c + 800c322: 4798 blx r3 + 800c324: f002 fd1b bl 800ed5e <LoRaMacClassBIsBeaconExpected> + 800c328: 4604 mov r4, r0 + 800c32a: b128 cbz r0, 800c338 <HandleRadioRxErrorTimeout+0x2c> + 800c32c: 2002 movs r0, #2 + 800c32e: f002 fd0c bl 800ed4a <LoRaMacClassBSetBeaconState> + 800c332: 2000 movs r0, #0 + 800c334: f002 fd0e bl 800ed54 <LoRaMacClassBBeaconTimerEvent> + 800c338: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c33c: 2b01 cmp r3, #1 + 800c33e: d117 bne.n 800c370 <HandleRadioRxErrorTimeout+0x64> + 800c340: f002 fd0f bl 800ed62 <LoRaMacClassBIsPingExpected> + 800c344: 4680 mov r8, r0 + 800c346: b130 cbz r0, 800c356 <HandleRadioRxErrorTimeout+0x4a> + 800c348: 2000 movs r0, #0 + 800c34a: f002 fcff bl 800ed4c <LoRaMacClassBSetPingSlotState> + 800c34e: 2000 movs r0, #0 + 800c350: f002 fd01 bl 800ed56 <LoRaMacClassBPingSlotTimerEvent> + 800c354: 4644 mov r4, r8 + 800c356: f002 fd06 bl 800ed66 <LoRaMacClassBIsMulticastExpected> + 800c35a: b148 cbz r0, 800c370 <HandleRadioRxErrorTimeout+0x64> + 800c35c: 2000 movs r0, #0 + 800c35e: f002 fcf6 bl 800ed4e <LoRaMacClassBSetMulticastSlotState> + 800c362: 2000 movs r0, #0 + 800c364: f002 fcf8 bl 800ed58 <LoRaMacClassBMulticastSlotTimerEvent> + 800c368: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800c36c: f7ff bf58 b.w 800c220 <UpdateRxSlotIdleState> + 800c370: 2c00 cmp r4, #0 + 800c372: d1f9 bne.n 800c368 <HandleRadioRxErrorTimeout+0x5c> + 800c374: 4c15 ldr r4, [pc, #84] ; (800c3cc <HandleRadioRxErrorTimeout+0xc0>) + 800c376: f894 2480 ldrb.w r2, [r4, #1152] ; 0x480 + 800c37a: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800c37e: b9b2 cbnz r2, 800c3ae <HandleRadioRxErrorTimeout+0xa2> + 800c380: b10b cbz r3, 800c386 <HandleRadioRxErrorTimeout+0x7a> + 800c382: f884 7435 strb.w r7, [r4, #1077] ; 0x435 + 800c386: 4638 mov r0, r7 + 800c388: f002 fe90 bl 800f0ac <LoRaMacConfirmQueueSetStatusCmn> + 800c38c: 6ae8 ldr r0, [r5, #44] ; 0x2c + 800c38e: f007 fde7 bl 8013f60 <UTIL_TIMER_GetElapsedTime> + 800c392: f8d4 33b4 ldr.w r3, [r4, #948] ; 0x3b4 + 800c396: 4298 cmp r0, r3 + 800c398: d3e6 bcc.n 800c368 <HandleRadioRxErrorTimeout+0x5c> + 800c39a: 480d ldr r0, [pc, #52] ; (800c3d0 <HandleRadioRxErrorTimeout+0xc4>) + 800c39c: f007 fe1a bl 8013fd4 <UTIL_TIMER_Stop> + 800c3a0: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800c3a4: f043 0310 orr.w r3, r3, #16 + 800c3a8: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800c3ac: e7dc b.n 800c368 <HandleRadioRxErrorTimeout+0x5c> + 800c3ae: b10b cbz r3, 800c3b4 <HandleRadioRxErrorTimeout+0xa8> + 800c3b0: f884 6435 strb.w r6, [r4, #1077] ; 0x435 + 800c3b4: 4630 mov r0, r6 + 800c3b6: f002 fe79 bl 800f0ac <LoRaMacConfirmQueueSetStatusCmn> + 800c3ba: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c3be: 2b02 cmp r3, #2 + 800c3c0: d1ee bne.n 800c3a0 <HandleRadioRxErrorTimeout+0x94> + 800c3c2: e7d1 b.n 800c368 <HandleRadioRxErrorTimeout+0x5c> + 800c3c4: 20001868 .word 0x20001868 + 800c3c8: 080159b0 .word 0x080159b0 + 800c3cc: 20001fdc .word 0x20001fdc + 800c3d0: 20002374 .word 0x20002374 + +0800c3d4 <OnRadioRxTimeout>: + 800c3d4: 4a07 ldr r2, [pc, #28] ; (800c3f4 <OnRadioRxTimeout+0x20>) + 800c3d6: b510 push {r4, lr} + 800c3d8: 7813 ldrb r3, [r2, #0] + 800c3da: f043 0301 orr.w r3, r3, #1 + 800c3de: 7013 strb r3, [r2, #0] + 800c3e0: f7ff ff2c bl 800c23c <OnMacProcessNotify> + 800c3e4: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c3e8: 4b03 ldr r3, [pc, #12] ; (800c3f8 <OnRadioRxTimeout+0x24>) + 800c3ea: 2201 movs r2, #1 + 800c3ec: 2100 movs r1, #0 + 800c3ee: 2002 movs r0, #2 + 800c3f0: f007 bac2 b.w 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800c3f4: 20001fd8 .word 0x20001fd8 + 800c3f8: 080152f1 .word 0x080152f1 + +0800c3fc <OnRadioTxTimeout>: + 800c3fc: 4a07 ldr r2, [pc, #28] ; (800c41c <OnRadioTxTimeout+0x20>) + 800c3fe: b510 push {r4, lr} + 800c400: 7813 ldrb r3, [r2, #0] + 800c402: f043 0304 orr.w r3, r3, #4 + 800c406: 7013 strb r3, [r2, #0] + 800c408: f7ff ff18 bl 800c23c <OnMacProcessNotify> + 800c40c: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c410: 4b03 ldr r3, [pc, #12] ; (800c420 <OnRadioTxTimeout+0x24>) + 800c412: 2201 movs r2, #1 + 800c414: 2100 movs r1, #0 + 800c416: 2002 movs r0, #2 + 800c418: f007 baae b.w 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800c41c: 20001fd8 .word 0x20001fd8 + 800c420: 08015301 .word 0x08015301 + +0800c424 <OnRadioRxDone>: + 800c424: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800c428: 460f mov r7, r1 + 800c42a: 4616 mov r6, r2 + 800c42c: 461d mov r5, r3 + 800c42e: 4680 mov r8, r0 + 800c430: f007 fd8c bl 8013f4c <UTIL_TIMER_GetCurrentTime> + 800c434: 4a0a ldr r2, [pc, #40] ; (800c460 <OnRadioRxDone+0x3c>) + 800c436: 4c0b ldr r4, [pc, #44] ; (800c464 <OnRadioRxDone+0x40>) + 800c438: 7813 ldrb r3, [r2, #0] + 800c43a: 8127 strh r7, [r4, #8] + 800c43c: f043 0308 orr.w r3, r3, #8 + 800c440: e9c4 0800 strd r0, r8, [r4] + 800c444: 7013 strb r3, [r2, #0] + 800c446: 8166 strh r6, [r4, #10] + 800c448: 7325 strb r5, [r4, #12] + 800c44a: f7ff fef7 bl 800c23c <OnMacProcessNotify> + 800c44e: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800c452: 4b05 ldr r3, [pc, #20] ; (800c468 <OnRadioRxDone+0x44>) + 800c454: 2201 movs r2, #1 + 800c456: 2100 movs r1, #0 + 800c458: 2002 movs r0, #2 + 800c45a: f007 ba8d b.w 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800c45e: bf00 nop + 800c460: 20001fd8 .word 0x20001fd8 + 800c464: 200024e4 .word 0x200024e4 + 800c468: 08015311 .word 0x08015311 + +0800c46c <OnRadioTxDone>: + 800c46c: b513 push {r0, r1, r4, lr} + 800c46e: f007 fd6d bl 8013f4c <UTIL_TIMER_GetCurrentTime> + 800c472: 4b0d ldr r3, [pc, #52] ; (800c4a8 <OnRadioTxDone+0x3c>) + 800c474: 466c mov r4, sp + 800c476: 6018 str r0, [r3, #0] + 800c478: 4620 mov r0, r4 + 800c47a: f007 fcbb bl 8013df4 <SysTimeGet> + 800c47e: e894 0003 ldmia.w r4, {r0, r1} + 800c482: 4a0a ldr r2, [pc, #40] ; (800c4ac <OnRadioTxDone+0x40>) + 800c484: 4b0a ldr r3, [pc, #40] ; (800c4b0 <OnRadioTxDone+0x44>) + 800c486: e883 0003 stmia.w r3, {r0, r1} + 800c48a: 7813 ldrb r3, [r2, #0] + 800c48c: f043 0310 orr.w r3, r3, #16 + 800c490: 7013 strb r3, [r2, #0] + 800c492: f7ff fed3 bl 800c23c <OnMacProcessNotify> + 800c496: 4b07 ldr r3, [pc, #28] ; (800c4b4 <OnRadioTxDone+0x48>) + 800c498: 2201 movs r2, #1 + 800c49a: 2100 movs r1, #0 + 800c49c: 2002 movs r0, #2 + 800c49e: b002 add sp, #8 + 800c4a0: e8bd 4010 ldmia.w sp!, {r4, lr} + 800c4a4: f007 ba68 b.w 8013978 <UTIL_ADV_TRACE_COND_FSend> + 800c4a8: 200024f4 .word 0x200024f4 + 800c4ac: 20001fd8 .word 0x20001fd8 + 800c4b0: 20002314 .word 0x20002314 + 800c4b4: 0801531e .word 0x0801531e + +0800c4b8 <ScheduleTx>: + 800c4b8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800c4bc: b092 sub sp, #72 ; 0x48 + 800c4be: 4606 mov r6, r0 + 800c4c0: f002 fc4d bl 800ed5e <LoRaMacClassBIsBeaconExpected> + 800c4c4: 2800 cmp r0, #0 + 800c4c6: f040 8156 bne.w 800c776 <ScheduleTx+0x2be> + 800c4ca: 4dac ldr r5, [pc, #688] ; (800c77c <ScheduleTx+0x2c4>) + 800c4cc: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c4d0: 2b01 cmp r3, #1 + 800c4d2: d009 beq.n 800c4e8 <ScheduleTx+0x30> + 800c4d4: 6b2b ldr r3, [r5, #48] ; 0x30 + 800c4d6: 4caa ldr r4, [pc, #680] ; (800c780 <ScheduleTx+0x2c8>) + 800c4d8: b193 cbz r3, 800c500 <ScheduleTx+0x48> + 800c4da: f894 3104 ldrb.w r3, [r4, #260] ; 0x104 + 800c4de: b1bb cbz r3, 800c510 <ScheduleTx+0x58> + 800c4e0: 2b04 cmp r3, #4 + 800c4e2: d06f beq.n 800c5c4 <ScheduleTx+0x10c> + 800c4e4: 2003 movs r0, #3 + 800c4e6: e003 b.n 800c4f0 <ScheduleTx+0x38> + 800c4e8: f002 fc3b bl 800ed62 <LoRaMacClassBIsPingExpected> + 800c4ec: b118 cbz r0, 800c4f6 <ScheduleTx+0x3e> + 800c4ee: 200f movs r0, #15 + 800c4f0: b012 add sp, #72 ; 0x48 + 800c4f2: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800c4f6: f002 fc36 bl 800ed66 <LoRaMacClassBIsMulticastExpected> + 800c4fa: 2800 cmp r0, #0 + 800c4fc: d0ea beq.n 800c4d4 <ScheduleTx+0x1c> + 800c4fe: e7f6 b.n 800c4ee <ScheduleTx+0x36> + 800c500: f8b5 311e ldrh.w r3, [r5, #286] ; 0x11e + 800c504: f8d4 2414 ldr.w r2, [r4, #1044] ; 0x414 + 800c508: 3b01 subs r3, #1 + 800c50a: 4353 muls r3, r2 + 800c50c: 632b str r3, [r5, #48] ; 0x30 + 800c50e: e7e4 b.n 800c4da <ScheduleTx+0x22> + 800c510: 489c ldr r0, [pc, #624] ; (800c784 <ScheduleTx+0x2cc>) + 800c512: f003 f9e4 bl 800f8de <LoRaMacSerializerJoinRequest> + 800c516: 2800 cmp r0, #0 + 800c518: f040 8129 bne.w 800c76e <ScheduleTx+0x2b6> + 800c51c: f894 310c ldrb.w r3, [r4, #268] ; 0x10c + 800c520: 8023 strh r3, [r4, #0] + 800c522: 6b2b ldr r3, [r5, #48] ; 0x30 + 800c524: 930c str r3, [sp, #48] ; 0x30 + 800c526: f10d 0818 add.w r8, sp, #24 + 800c52a: f895 3039 ldrb.w r3, [r5, #57] ; 0x39 + 800c52e: f88d 3038 strb.w r3, [sp, #56] ; 0x38 + 800c532: 4640 mov r0, r8 + 800c534: f895 311c ldrb.w r3, [r5, #284] ; 0x11c + 800c538: f88d 303a strb.w r3, [sp, #58] ; 0x3a + 800c53c: f007 fc80 bl 8013e40 <SysTimeGetMcuTime> + 800c540: f8d5 3124 ldr.w r3, [r5, #292] ; 0x124 + 800c544: 9300 str r3, [sp, #0] + 800c546: af02 add r7, sp, #8 + 800c548: e898 0006 ldmia.w r8, {r1, r2} + 800c54c: f8d5 3120 ldr.w r3, [r5, #288] ; 0x120 + 800c550: 4638 mov r0, r7 + 800c552: f007 fc0c bl 8013d6e <SysTimeSub> + 800c556: e897 0003 ldmia.w r7, {r0, r1} + 800c55a: ab0f add r3, sp, #60 ; 0x3c + 800c55c: e883 0003 stmia.w r3, {r0, r1} + 800c560: 6aeb ldr r3, [r5, #44] ; 0x2c + 800c562: 930d str r3, [sp, #52] ; 0x34 + 800c564: 2300 movs r3, #0 + 800c566: f88d 3044 strb.w r3, [sp, #68] ; 0x44 + 800c56a: 8823 ldrh r3, [r4, #0] + 800c56c: f8ad 3046 strh.w r3, [sp, #70] ; 0x46 + 800c570: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800c574: 2201 movs r2, #1 + 800c576: f88d 2039 strb.w r2, [sp, #57] ; 0x39 + 800c57a: b91b cbnz r3, 800c584 <ScheduleTx+0xcc> + 800c57c: f88d 2044 strb.w r2, [sp, #68] ; 0x44 + 800c580: f88d 3039 strb.w r3, [sp, #57] ; 0x39 + 800c584: 4b80 ldr r3, [pc, #512] ; (800c788 <ScheduleTx+0x2d0>) + 800c586: 9300 str r3, [sp, #0] + 800c588: 4b80 ldr r3, [pc, #512] ; (800c78c <ScheduleTx+0x2d4>) + 800c58a: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c58e: f1a3 0273 sub.w r2, r3, #115 ; 0x73 + 800c592: a90c add r1, sp, #48 ; 0x30 + 800c594: f003 fae1 bl 800fb5a <RegionNextChannel> + 800c598: b1c0 cbz r0, 800c5cc <ScheduleTx+0x114> + 800c59a: 280b cmp r0, #11 + 800c59c: d1a8 bne.n 800c4f0 <ScheduleTx+0x38> + 800c59e: f8d4 1484 ldr.w r1, [r4, #1156] ; 0x484 + 800c5a2: b199 cbz r1, 800c5cc <ScheduleTx+0x114> + 800c5a4: 2e00 cmp r6, #0 + 800c5a6: d0a3 beq.n 800c4f0 <ScheduleTx+0x38> + 800c5a8: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800c5ac: 4878 ldr r0, [pc, #480] ; (800c790 <ScheduleTx+0x2d8>) + 800c5ae: f043 0320 orr.w r3, r3, #32 + 800c5b2: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800c5b6: f007 fd95 bl 80140e4 <UTIL_TIMER_SetPeriod> + 800c5ba: 4875 ldr r0, [pc, #468] ; (800c790 <ScheduleTx+0x2d8>) + 800c5bc: f007 fd58 bl 8014070 <UTIL_TIMER_Start> + 800c5c0: 2000 movs r0, #0 + 800c5c2: e795 b.n 800c4f0 <ScheduleTx+0x38> + 800c5c4: 486f ldr r0, [pc, #444] ; (800c784 <ScheduleTx+0x2cc>) + 800c5c6: f003 f9be bl 800f946 <LoRaMacSerializerData> + 800c5ca: e7a4 b.n 800c516 <ScheduleTx+0x5e> + 800c5cc: f895 7048 ldrb.w r7, [r5, #72] ; 0x48 + 800c5d0: f995 3069 ldrsb.w r3, [r5, #105] ; 0x69 + 800c5d4: f995 2039 ldrsb.w r2, [r5, #57] ; 0x39 + 800c5d8: f895 107d ldrb.w r1, [r5, #125] ; 0x7d + 800c5dc: 4e6d ldr r6, [pc, #436] ; (800c794 <ScheduleTx+0x2dc>) + 800c5de: 4638 mov r0, r7 + 800c5e0: f003 facd bl 800fb7e <RegionApplyDrOffset> + 800c5e4: 9600 str r6, [sp, #0] + 800c5e6: b241 sxtb r1, r0 + 800c5e8: 6ceb ldr r3, [r5, #76] ; 0x4c + 800c5ea: f895 2050 ldrb.w r2, [r5, #80] ; 0x50 + 800c5ee: 4638 mov r0, r7 + 800c5f0: 3614 adds r6, #20 + 800c5f2: f003 fa63 bl 800fabc <RegionComputeRxWindowParameters> + 800c5f6: 9600 str r6, [sp, #0] + 800c5f8: 6ceb ldr r3, [r5, #76] ; 0x4c + 800c5fa: f895 2050 ldrb.w r2, [r5, #80] ; 0x50 + 800c5fe: f995 1070 ldrsb.w r1, [r5, #112] ; 0x70 + 800c602: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c606: f003 fa59 bl 800fabc <RegionComputeRxWindowParameters> + 800c60a: f8d4 13c4 ldr.w r1, [r4, #964] ; 0x3c4 + 800c60e: 6dab ldr r3, [r5, #88] ; 0x58 + 800c610: f8d4 23d8 ldr.w r2, [r4, #984] ; 0x3d8 + 800c614: 440b add r3, r1 + 800c616: f8c4 33b0 str.w r3, [r4, #944] ; 0x3b0 + 800c61a: 6deb ldr r3, [r5, #92] ; 0x5c + 800c61c: 4413 add r3, r2 + 800c61e: f8c4 33b4 str.w r3, [r4, #948] ; 0x3b4 + 800c622: f894 3104 ldrb.w r3, [r4, #260] ; 0x104 + 800c626: 2b04 cmp r3, #4 + 800c628: d007 beq.n 800c63a <ScheduleTx+0x182> + 800c62a: 6e2b ldr r3, [r5, #96] ; 0x60 + 800c62c: 440b add r3, r1 + 800c62e: f8c4 33b0 str.w r3, [r4, #944] ; 0x3b0 + 800c632: 6e6b ldr r3, [r5, #100] ; 0x64 + 800c634: 4413 add r3, r2 + 800c636: f8c4 33b4 str.w r3, [r4, #948] ; 0x3b4 + 800c63a: 2300 movs r3, #0 + 800c63c: 9308 str r3, [sp, #32] + 800c63e: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800c642: b183 cbz r3, 800c666 <ScheduleTx+0x1ae> + 800c644: a808 add r0, sp, #32 + 800c646: f002 fc61 bl 800ef0c <LoRaMacCommandsGetSizeSerializedCmds> + 800c64a: 2800 cmp r0, #0 + 800c64c: d14a bne.n 800c6e4 <ScheduleTx+0x22c> + 800c64e: f995 0039 ldrsb.w r0, [r5, #57] ; 0x39 + 800c652: f894 6237 ldrb.w r6, [r4, #567] ; 0x237 + 800c656: f89d 7020 ldrb.w r7, [sp, #32] + 800c65a: f7ff fe03 bl 800c264 <GetMaxAppPayloadWithoutFOptsLength> + 800c65e: 443e add r6, r7 + 800c660: b280 uxth r0, r0 + 800c662: 42b0 cmp r0, r6 + 800c664: d33c bcc.n 800c6e0 <ScheduleTx+0x228> + 800c666: 2300 movs r3, #0 + 800c668: f88d 3013 strb.w r3, [sp, #19] + 800c66c: f895 3039 ldrb.w r3, [r5, #57] ; 0x39 + 800c670: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 800c674: f895 3038 ldrb.w r3, [r5, #56] ; 0x38 + 800c678: f88d 3022 strb.w r3, [sp, #34] ; 0x22 + 800c67c: f8d5 3080 ldr.w r3, [r5, #128] ; 0x80 + 800c680: 9309 str r3, [sp, #36] ; 0x24 + 800c682: f8d5 3084 ldr.w r3, [r5, #132] ; 0x84 + 800c686: 930a str r3, [sp, #40] ; 0x28 + 800c688: 8823 ldrh r3, [r4, #0] + 800c68a: f894 6411 ldrb.w r6, [r4, #1041] ; 0x411 + 800c68e: f8ad 302c strh.w r3, [sp, #44] ; 0x2c + 800c692: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c696: 4b40 ldr r3, [pc, #256] ; (800c798 <ScheduleTx+0x2e0>) + 800c698: f88d 6020 strb.w r6, [sp, #32] + 800c69c: f10d 0213 add.w r2, sp, #19 + 800c6a0: a908 add r1, sp, #32 + 800c6a2: f003 fa1f bl 800fae4 <RegionTxConfig> + 800c6a6: 2301 movs r3, #1 + 800c6a8: f884 3435 strb.w r3, [r4, #1077] ; 0x435 + 800c6ac: f895 3039 ldrb.w r3, [r5, #57] ; 0x39 + 800c6b0: f884 3436 strb.w r3, [r4, #1078] ; 0x436 + 800c6b4: f89d 3013 ldrb.w r3, [sp, #19] + 800c6b8: f884 3437 strb.w r3, [r4, #1079] ; 0x437 + 800c6bc: f8d4 3414 ldr.w r3, [r4, #1044] ; 0x414 + 800c6c0: f8c4 6444 str.w r6, [r4, #1092] ; 0x444 + 800c6c4: f8c4 343c str.w r3, [r4, #1084] ; 0x43c + 800c6c8: f8c4 344c str.w r3, [r4, #1100] ; 0x44c + 800c6cc: f002 fb4d bl 800ed6a <LoRaMacClassBIsBeaconModeActive> + 800c6d0: b150 cbz r0, 800c6e8 <ScheduleTx+0x230> + 800c6d2: f8d4 0414 ldr.w r0, [r4, #1044] ; 0x414 + 800c6d6: f002 fb5a bl 800ed8e <LoRaMacClassBIsUplinkCollision> + 800c6da: b128 cbz r0, 800c6e8 <ScheduleTx+0x230> + 800c6dc: 2010 movs r0, #16 + 800c6de: e707 b.n 800c4f0 <ScheduleTx+0x38> + 800c6e0: 2008 movs r0, #8 + 800c6e2: e705 b.n 800c4f0 <ScheduleTx+0x38> + 800c6e4: 2013 movs r0, #19 + 800c6e6: e703 b.n 800c4f0 <ScheduleTx+0x38> + 800c6e8: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800c6ec: 2b01 cmp r3, #1 + 800c6ee: d101 bne.n 800c6f4 <ScheduleTx+0x23c> + 800c6f0: f002 fb4f bl 800ed92 <LoRaMacClassBStopRxSlots> + 800c6f4: f002 fb3c bl 800ed70 <LoRaMacClassBHaltBeaconing> + 800c6f8: 2300 movs r3, #0 + 800c6fa: 9305 str r3, [sp, #20] + 800c6fc: f894 3104 ldrb.w r3, [r4, #260] ; 0x104 + 800c700: f995 5039 ldrsb.w r5, [r5, #57] ; 0x39 + 800c704: f894 6411 ldrb.w r6, [r4, #1041] ; 0x411 + 800c708: b1bb cbz r3, 800c73a <ScheduleTx+0x282> + 800c70a: 2b04 cmp r3, #4 + 800c70c: f47f aeea bne.w 800c4e4 <ScheduleTx+0x2c> + 800c710: a805 add r0, sp, #20 + 800c712: f002 fe37 bl 800f384 <LoRaMacCryptoGetFCntUp> + 800c716: bb60 cbnz r0, 800c772 <ScheduleTx+0x2ba> + 800c718: f894 340c ldrb.w r3, [r4, #1036] ; 0x40c + 800c71c: b91b cbnz r3, 800c726 <ScheduleTx+0x26e> + 800c71e: f894 340e ldrb.w r3, [r4, #1038] ; 0x40e + 800c722: 2b01 cmp r3, #1 + 800c724: d902 bls.n 800c72c <ScheduleTx+0x274> + 800c726: 9b05 ldr r3, [sp, #20] + 800c728: 3b01 subs r3, #1 + 800c72a: 9305 str r3, [sp, #20] + 800c72c: 4b15 ldr r3, [pc, #84] ; (800c784 <ScheduleTx+0x2cc>) + 800c72e: 9805 ldr r0, [sp, #20] + 800c730: 4632 mov r2, r6 + 800c732: b2e9 uxtb r1, r5 + 800c734: f002 fe98 bl 800f468 <LoRaMacCryptoSecureMessage> + 800c738: e002 b.n 800c740 <ScheduleTx+0x288> + 800c73a: 4812 ldr r0, [pc, #72] ; (800c784 <ScheduleTx+0x2cc>) + 800c73c: f002 fe6c bl 800f418 <LoRaMacCryptoPrepareJoinRequest> + 800c740: b9a8 cbnz r0, 800c76e <ScheduleTx+0x2b6> + 800c742: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800c746: f894 110c ldrb.w r1, [r4, #268] ; 0x10c + 800c74a: 8021 strh r1, [r4, #0] + 800c74c: f043 0302 orr.w r3, r3, #2 + 800c750: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800c754: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800c758: b923 cbnz r3, 800c764 <ScheduleTx+0x2ac> + 800c75a: f894 340c ldrb.w r3, [r4, #1036] ; 0x40c + 800c75e: 3301 adds r3, #1 + 800c760: f884 340c strb.w r3, [r4, #1036] ; 0x40c + 800c764: 4b0d ldr r3, [pc, #52] ; (800c79c <ScheduleTx+0x2e4>) + 800c766: 480e ldr r0, [pc, #56] ; (800c7a0 <ScheduleTx+0x2e8>) + 800c768: 6a9b ldr r3, [r3, #40] ; 0x28 + 800c76a: 4798 blx r3 + 800c76c: e728 b.n 800c5c0 <ScheduleTx+0x108> + 800c76e: 2011 movs r0, #17 + 800c770: e6be b.n 800c4f0 <ScheduleTx+0x38> + 800c772: 2012 movs r0, #18 + 800c774: e6bc b.n 800c4f0 <ScheduleTx+0x38> + 800c776: 200e movs r0, #14 + 800c778: e6ba b.n 800c4f0 <ScheduleTx+0x38> + 800c77a: bf00 nop + 800c77c: 20001868 .word 0x20001868 + 800c780: 20001fdc .word 0x20001fdc + 800c784: 200020e4 .word 0x200020e4 + 800c788: 20001898 .word 0x20001898 + 800c78c: 20002460 .word 0x20002460 + 800c790: 20002344 .word 0x20002344 + 800c794: 20002394 .word 0x20002394 + 800c798: 200023f0 .word 0x200023f0 + 800c79c: 080159b0 .word 0x080159b0 + 800c7a0: 20001fde .word 0x20001fde + +0800c7a4 <OpenContinuousRxCWindow>: + 800c7a4: b573 push {r0, r1, r4, r5, r6, lr} + 800c7a6: 4c14 ldr r4, [pc, #80] ; (800c7f8 <OpenContinuousRxCWindow+0x54>) + 800c7a8: 4d14 ldr r5, [pc, #80] ; (800c7fc <OpenContinuousRxCWindow+0x58>) + 800c7aa: f504 7678 add.w r6, r4, #992 ; 0x3e0 + 800c7ae: 6ceb ldr r3, [r5, #76] ; 0x4c + 800c7b0: f895 2050 ldrb.w r2, [r5, #80] ; 0x50 + 800c7b4: f995 1078 ldrsb.w r1, [r5, #120] ; 0x78 + 800c7b8: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c7bc: 9600 str r6, [sp, #0] + 800c7be: f003 f97d bl 800fabc <RegionComputeRxWindowParameters> + 800c7c2: f240 2301 movw r3, #513 ; 0x201 + 800c7c6: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800c7ca: f8a4 33f2 strh.w r3, [r4, #1010] ; 0x3f2 + 800c7ce: f204 421c addw r2, r4, #1052 ; 0x41c + 800c7d2: 4631 mov r1, r6 + 800c7d4: f003 f97e bl 800fad4 <RegionRxConfig> + 800c7d8: b158 cbz r0, 800c7f2 <OpenContinuousRxCWindow+0x4e> + 800c7da: f894 341c ldrb.w r3, [r4, #1052] ; 0x41c + 800c7de: f884 345e strb.w r3, [r4, #1118] ; 0x45e + 800c7e2: 4b07 ldr r3, [pc, #28] ; (800c800 <OpenContinuousRxCWindow+0x5c>) + 800c7e4: 2000 movs r0, #0 + 800c7e6: 6b5b ldr r3, [r3, #52] ; 0x34 + 800c7e8: 4798 blx r3 + 800c7ea: f894 33f3 ldrb.w r3, [r4, #1011] ; 0x3f3 + 800c7ee: f884 3480 strb.w r3, [r4, #1152] ; 0x480 + 800c7f2: b002 add sp, #8 + 800c7f4: bd70 pop {r4, r5, r6, pc} + 800c7f6: bf00 nop + 800c7f8: 20001fdc .word 0x20001fdc + 800c7fc: 20001868 .word 0x20001868 + 800c800: 080159b0 .word 0x080159b0 + +0800c804 <SwitchClass>: + 800c804: b5f8 push {r3, r4, r5, r6, r7, lr} + 800c806: 4d33 ldr r5, [pc, #204] ; (800c8d4 <SwitchClass+0xd0>) + 800c808: f895 4118 ldrb.w r4, [r5, #280] ; 0x118 + 800c80c: 2c01 cmp r4, #1 + 800c80e: 4606 mov r6, r0 + 800c810: d04b beq.n 800c8aa <SwitchClass+0xa6> + 800c812: 2c02 cmp r4, #2 + 800c814: d051 beq.n 800c8ba <SwitchClass+0xb6> + 800c816: b964 cbnz r4, 800c832 <SwitchClass+0x2e> + 800c818: b938 cbnz r0, 800c82a <SwitchClass+0x26> + 800c81a: e9d5 011b ldrd r0, r1, [r5, #108] ; 0x6c + 800c81e: f105 0374 add.w r3, r5, #116 ; 0x74 + 800c822: e883 0003 stmia.w r3, {r0, r1} + 800c826: 4620 mov r0, r4 + 800c828: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800c82a: 2801 cmp r0, #1 + 800c82c: d03d beq.n 800c8aa <SwitchClass+0xa6> + 800c82e: 2802 cmp r0, #2 + 800c830: d001 beq.n 800c836 <SwitchClass+0x32> + 800c832: 2403 movs r4, #3 + 800c834: e7f7 b.n 800c826 <SwitchClass+0x22> + 800c836: 4f28 ldr r7, [pc, #160] ; (800c8d8 <SwitchClass+0xd4>) + 800c838: f885 0118 strb.w r0, [r5, #280] ; 0x118 + 800c83c: f507 7e73 add.w lr, r7, #972 ; 0x3cc + 800c840: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 800c844: f507 7c78 add.w ip, r7, #992 ; 0x3e0 + 800c848: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 800c84c: f8de 3000 ldr.w r3, [lr] + 800c850: f8cc 3000 str.w r3, [ip] + 800c854: f895 30e9 ldrb.w r3, [r5, #233] ; 0xe9 + 800c858: f887 63f3 strb.w r6, [r7, #1011] ; 0x3f3 + 800c85c: b1e3 cbz r3, 800c898 <SwitchClass+0x94> + 800c85e: f895 3100 ldrb.w r3, [r5, #256] ; 0x100 + 800c862: 2b02 cmp r3, #2 + 800c864: d118 bne.n 800c898 <SwitchClass+0x94> + 800c866: f8d5 3104 ldr.w r3, [r5, #260] ; 0x104 + 800c86a: 676b str r3, [r5, #116] ; 0x74 + 800c86c: f8c7 33e4 str.w r3, [r7, #996] ; 0x3e4 + 800c870: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800c874: f895 2108 ldrb.w r2, [r5, #264] ; 0x108 + 800c878: f887 33f0 strb.w r3, [r7, #1008] ; 0x3f0 + 800c87c: f895 308c ldrb.w r3, [r5, #140] ; 0x8c + 800c880: f885 2078 strb.w r2, [r5, #120] ; 0x78 + 800c884: f887 33f1 strb.w r3, [r7, #1009] ; 0x3f1 + 800c888: f897 2411 ldrb.w r2, [r7, #1041] ; 0x411 + 800c88c: f887 23e0 strb.w r2, [r7, #992] ; 0x3e0 + 800c890: f240 3301 movw r3, #769 ; 0x301 + 800c894: f8a7 33f2 strh.w r3, [r7, #1010] ; 0x3f2 + 800c898: 2300 movs r3, #0 + 800c89a: f887 3410 strb.w r3, [r7, #1040] ; 0x410 + 800c89e: 4b0f ldr r3, [pc, #60] ; (800c8dc <SwitchClass+0xd8>) + 800c8a0: 6adb ldr r3, [r3, #44] ; 0x2c + 800c8a2: 4798 blx r3 + 800c8a4: f7ff ff7e bl 800c7a4 <OpenContinuousRxCWindow> + 800c8a8: e7bd b.n 800c826 <SwitchClass+0x22> + 800c8aa: f002 fa63 bl 800ed74 <LoRaMacClassBSwitchClass> + 800c8ae: 4604 mov r4, r0 + 800c8b0: 2800 cmp r0, #0 + 800c8b2: d1b8 bne.n 800c826 <SwitchClass+0x22> + 800c8b4: f885 6118 strb.w r6, [r5, #280] ; 0x118 + 800c8b8: e7b5 b.n 800c826 <SwitchClass+0x22> + 800c8ba: 2800 cmp r0, #0 + 800c8bc: d1b9 bne.n 800c832 <SwitchClass+0x2e> + 800c8be: 4b06 ldr r3, [pc, #24] ; (800c8d8 <SwitchClass+0xd4>) + 800c8c0: f885 0118 strb.w r0, [r5, #280] ; 0x118 + 800c8c4: 2206 movs r2, #6 + 800c8c6: f883 2480 strb.w r2, [r3, #1152] ; 0x480 + 800c8ca: 4b04 ldr r3, [pc, #16] ; (800c8dc <SwitchClass+0xd8>) + 800c8cc: 6adb ldr r3, [r3, #44] ; 0x2c + 800c8ce: 4798 blx r3 + 800c8d0: 4634 mov r4, r6 + 800c8d2: e7a8 b.n 800c826 <SwitchClass+0x22> + 800c8d4: 20001868 .word 0x20001868 + 800c8d8: 20001fdc .word 0x20001fdc + 800c8dc: 080159b0 .word 0x080159b0 + +0800c8e0 <ResetMacParameters.constprop.0>: + 800c8e0: b5f0 push {r4, r5, r6, r7, lr} + 800c8e2: 4c48 ldr r4, [pc, #288] ; (800ca04 <ResetMacParameters.constprop.0+0x124>) + 800c8e4: 4e48 ldr r6, [pc, #288] ; (800ca08 <ResetMacParameters.constprop.0+0x128>) + 800c8e6: f8b4 20dc ldrh.w r2, [r4, #220] ; 0xdc + 800c8ea: 8722 strh r2, [r4, #56] ; 0x38 + 800c8ec: e9d4 012d ldrd r0, r1, [r4, #180] ; 0xb4 + 800c8f0: f894 20b1 ldrb.w r2, [r4, #177] ; 0xb1 + 800c8f4: f884 2069 strb.w r2, [r4, #105] ; 0x69 + 800c8f8: f104 026c add.w r2, r4, #108 ; 0x6c + 800c8fc: e882 0003 stmia.w r2, {r0, r1} + 800c900: e9d4 012f ldrd r0, r1, [r4, #188] ; 0xbc + 800c904: f104 0274 add.w r2, r4, #116 ; 0x74 + 800c908: e882 0003 stmia.w r2, {r0, r1} + 800c90c: f8b4 20c4 ldrh.w r2, [r4, #196] ; 0xc4 + 800c910: f8a4 207c strh.w r2, [r4, #124] ; 0x7c + 800c914: f8d4 20cc ldr.w r2, [r4, #204] ; 0xcc + 800c918: f8c4 2084 str.w r2, [r4, #132] ; 0x84 + 800c91c: b08f sub sp, #60 ; 0x3c + 800c91e: f8d4 20d0 ldr.w r2, [r4, #208] ; 0xd0 + 800c922: f8d4 10c8 ldr.w r1, [r4, #200] ; 0xc8 + 800c926: f8c4 2088 str.w r2, [r4, #136] ; 0x88 + 800c92a: 2500 movs r5, #0 + 800c92c: 4a37 ldr r2, [pc, #220] ; (800ca0c <ResetMacParameters.constprop.0+0x12c>) + 800c92e: f8c4 1080 str.w r1, [r4, #128] ; 0x80 + 800c932: 2301 movs r3, #1 + 800c934: f8a4 311e strh.w r3, [r4, #286] ; 0x11e + 800c938: f8c6 240c str.w r2, [r6, #1036] ; 0x40c + 800c93c: e9c4 554e strd r5, r5, [r4, #312] ; 0x138 + 800c940: f884 512c strb.w r5, [r4, #300] ; 0x12c + 800c944: 62a5 str r5, [r4, #40] ; 0x28 + 800c946: f884 511b strb.w r5, [r4, #283] ; 0x11b + 800c94a: f884 503a strb.w r5, [r4, #58] ; 0x3a + 800c94e: f8c4 5130 str.w r5, [r4, #304] ; 0x130 + 800c952: f8a4 5134 strh.w r5, [r4, #308] ; 0x134 + 800c956: f886 5410 strb.w r5, [r6, #1040] ; 0x410 + 800c95a: f884 5141 strb.w r5, [r4, #321] ; 0x141 + 800c95e: f88d 3014 strb.w r3, [sp, #20] + 800c962: f504 7308 add.w r3, r4, #544 ; 0x220 + 800c966: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800c96a: f8a4 5142 strh.w r5, [r4, #322] ; 0x142 + 800c96e: 9303 str r3, [sp, #12] + 800c970: a903 add r1, sp, #12 + 800c972: f504 732d add.w r3, r4, #692 ; 0x2b4 + 800c976: 9304 str r3, [sp, #16] + 800c978: f003 f888 bl 800fa8c <RegionInitDefaults> + 800c97c: 6ee3 ldr r3, [r4, #108] ; 0x6c + 800c97e: f8c6 33d0 str.w r3, [r6, #976] ; 0x3d0 + 800c982: f894 307d ldrb.w r3, [r4, #125] ; 0x7d + 800c986: f886 33dc strb.w r3, [r6, #988] ; 0x3dc + 800c98a: f894 308c ldrb.w r3, [r4, #140] ; 0x8c + 800c98e: f886 33dd strb.w r3, [r6, #989] ; 0x3dd + 800c992: f44f 7380 mov.w r3, #256 ; 0x100 + 800c996: f8a6 33de strh.w r3, [r6, #990] ; 0x3de + 800c99a: f886 53cc strb.w r5, [r6, #972] ; 0x3cc + 800c99e: f506 7773 add.w r7, r6, #972 ; 0x3cc + 800c9a2: cf0f ldmia r7!, {r0, r1, r2, r3} + 800c9a4: f506 7478 add.w r4, r6, #992 ; 0x3e0 + 800c9a8: c40f stmia r4!, {r0, r1, r2, r3} + 800c9aa: 683b ldr r3, [r7, #0] + 800c9ac: 6023 str r3, [r4, #0] + 800c9ae: f240 2301 movw r3, #513 ; 0x201 + 800c9b2: f8a6 33f2 strh.w r3, [r6, #1010] ; 0x3f2 + 800c9b6: f8d6 3348 ldr.w r3, [r6, #840] ; 0x348 + 800c9ba: f886 5411 strb.w r5, [r6, #1041] ; 0x411 + 800c9be: e9cd 5501 strd r5, r5, [sp, #4] + 800c9c2: b11b cbz r3, 800c9cc <ResetMacParameters.constprop.0+0xec> + 800c9c4: 685a ldr r2, [r3, #4] + 800c9c6: 695b ldr r3, [r3, #20] + 800c9c8: 9201 str r2, [sp, #4] + 800c9ca: 9302 str r3, [sp, #8] + 800c9cc: 4b10 ldr r3, [pc, #64] ; (800ca10 <ResetMacParameters.constprop.0+0x130>) + 800c9ce: 9306 str r3, [sp, #24] + 800c9d0: f1a3 0244 sub.w r2, r3, #68 ; 0x44 + 800c9d4: 9207 str r2, [sp, #28] + 800c9d6: f1a3 0214 sub.w r2, r3, #20 + 800c9da: 9208 str r2, [sp, #32] + 800c9dc: 4a0d ldr r2, [pc, #52] ; (800ca14 <ResetMacParameters.constprop.0+0x134>) + 800c9de: 920a str r2, [sp, #40] ; 0x28 + 800c9e0: 3325 adds r3, #37 ; 0x25 + 800c9e2: 9309 str r3, [sp, #36] ; 0x24 + 800c9e4: f1a2 039c sub.w r3, r2, #156 ; 0x9c + 800c9e8: 930b str r3, [sp, #44] ; 0x2c + 800c9ea: f1a2 0398 sub.w r3, r2, #152 ; 0x98 + 800c9ee: 930c str r3, [sp, #48] ; 0x30 + 800c9f0: a901 add r1, sp, #4 + 800c9f2: 1d13 adds r3, r2, #4 + 800c9f4: a806 add r0, sp, #24 + 800c9f6: f202 6274 addw r2, r2, #1652 ; 0x674 + 800c9fa: 930d str r3, [sp, #52] ; 0x34 + 800c9fc: f002 f9a4 bl 800ed48 <LoRaMacClassBInit> + 800ca00: b00f add sp, #60 ; 0x3c + 800ca02: bdf0 pop {r4, r5, r6, r7, pc} + 800ca04: 20001868 .word 0x20001868 + 800ca08: 20001fdc .word 0x20001fdc + 800ca0c: 00010100 .word 0x00010100 + 800ca10: 20002438 .word 0x20002438 + 800ca14: 2000194c .word 0x2000194c + +0800ca18 <RxWindowSetup.constprop.0>: + 800ca18: b5f8 push {r3, r4, r5, r6, r7, lr} + 800ca1a: 4f0d ldr r7, [pc, #52] ; (800ca50 <RxWindowSetup.constprop.0+0x38>) + 800ca1c: 4c0d ldr r4, [pc, #52] ; (800ca54 <RxWindowSetup.constprop.0+0x3c>) + 800ca1e: 4e0e ldr r6, [pc, #56] ; (800ca58 <RxWindowSetup.constprop.0+0x40>) + 800ca20: 460d mov r5, r1 + 800ca22: f007 fad7 bl 8013fd4 <UTIL_TIMER_Stop> + 800ca26: 6b3b ldr r3, [r7, #48] ; 0x30 + 800ca28: 4798 blx r3 + 800ca2a: f896 0048 ldrb.w r0, [r6, #72] ; 0x48 + 800ca2e: f204 421c addw r2, r4, #1052 ; 0x41c + 800ca32: 4629 mov r1, r5 + 800ca34: f003 f84e bl 800fad4 <RegionRxConfig> + 800ca38: b148 cbz r0, 800ca4e <RxWindowSetup.constprop.0+0x36> + 800ca3a: f894 341c ldrb.w r3, [r4, #1052] ; 0x41c + 800ca3e: f884 345e strb.w r3, [r4, #1118] ; 0x45e + 800ca42: 6d70 ldr r0, [r6, #84] ; 0x54 + 800ca44: 6b7b ldr r3, [r7, #52] ; 0x34 + 800ca46: 4798 blx r3 + 800ca48: 7ceb ldrb r3, [r5, #19] + 800ca4a: f884 3480 strb.w r3, [r4, #1152] ; 0x480 + 800ca4e: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800ca50: 080159b0 .word 0x080159b0 + 800ca54: 20001fdc .word 0x20001fdc + 800ca58: 20001868 .word 0x20001868 + +0800ca5c <OnRxWindow1TimerEvent>: + 800ca5c: 480d ldr r0, [pc, #52] ; (800ca94 <OnRxWindow1TimerEvent+0x38>) + 800ca5e: f890 3411 ldrb.w r3, [r0, #1041] ; 0x411 + 800ca62: f880 33b8 strb.w r3, [r0, #952] ; 0x3b8 + 800ca66: 4b0c ldr r3, [pc, #48] ; (800ca98 <OnRxWindow1TimerEvent+0x3c>) + 800ca68: f893 2069 ldrb.w r2, [r3, #105] ; 0x69 + 800ca6c: f880 23bb strb.w r2, [r0, #955] ; 0x3bb + 800ca70: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 800ca74: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800ca78: f880 33c9 strb.w r3, [r0, #969] ; 0x3c9 + 800ca7c: 2300 movs r3, #0 + 800ca7e: f880 23c8 strb.w r2, [r0, #968] ; 0x3c8 + 800ca82: f8a0 33ca strh.w r3, [r0, #970] ; 0x3ca + 800ca86: f500 716e add.w r1, r0, #952 ; 0x3b8 + 800ca8a: f500 7060 add.w r0, r0, #896 ; 0x380 + 800ca8e: f7ff bfc3 b.w 800ca18 <RxWindowSetup.constprop.0> + 800ca92: bf00 nop + 800ca94: 20001fdc .word 0x20001fdc + 800ca98: 20001868 .word 0x20001868 + +0800ca9c <OnRxWindow2TimerEvent>: + 800ca9c: 480f ldr r0, [pc, #60] ; (800cadc <OnRxWindow2TimerEvent+0x40>) + 800ca9e: f890 3480 ldrb.w r3, [r0, #1152] ; 0x480 + 800caa2: b1cb cbz r3, 800cad8 <OnRxWindow2TimerEvent+0x3c> + 800caa4: f890 3411 ldrb.w r3, [r0, #1041] ; 0x411 + 800caa8: f880 33cc strb.w r3, [r0, #972] ; 0x3cc + 800caac: 4b0c ldr r3, [pc, #48] ; (800cae0 <OnRxWindow2TimerEvent+0x44>) + 800caae: 6eda ldr r2, [r3, #108] ; 0x6c + 800cab0: f8c0 23d0 str.w r2, [r0, #976] ; 0x3d0 + 800cab4: f893 207d ldrb.w r2, [r3, #125] ; 0x7d + 800cab8: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800cabc: f880 33dd strb.w r3, [r0, #989] ; 0x3dd + 800cac0: f44f 7380 mov.w r3, #256 ; 0x100 + 800cac4: f880 23dc strb.w r2, [r0, #988] ; 0x3dc + 800cac8: f8a0 33de strh.w r3, [r0, #990] ; 0x3de + 800cacc: f500 7173 add.w r1, r0, #972 ; 0x3cc + 800cad0: f500 7066 add.w r0, r0, #920 ; 0x398 + 800cad4: f7ff bfa0 b.w 800ca18 <RxWindowSetup.constprop.0> + 800cad8: 4770 bx lr + 800cada: bf00 nop + 800cadc: 20001fdc .word 0x20001fdc + 800cae0: 20001868 .word 0x20001868 + +0800cae4 <LoRaMacHandleNvm.part.0.constprop.0>: + 800cae4: b570 push {r4, r5, r6, lr} + 800cae6: 4c34 ldr r4, [pc, #208] ; (800cbb8 <LoRaMacHandleNvm.part.0.constprop.0+0xd4>) + 800cae8: 2124 movs r1, #36 ; 0x24 + 800caea: 4620 mov r0, r4 + 800caec: f004 ff64 bl 80119b8 <Crc32> + 800caf0: 6a63 ldr r3, [r4, #36] ; 0x24 + 800caf2: 4298 cmp r0, r3 + 800caf4: bf18 it ne + 800caf6: 6260 strne r0, [r4, #36] ; 0x24 + 800caf8: f04f 011c mov.w r1, #28 + 800cafc: 482f ldr r0, [pc, #188] ; (800cbbc <LoRaMacHandleNvm.part.0.constprop.0+0xd8>) + 800cafe: bf14 ite ne + 800cb00: 2501 movne r5, #1 + 800cb02: 2500 moveq r5, #0 + 800cb04: f004 ff58 bl 80119b8 <Crc32> + 800cb08: 6c63 ldr r3, [r4, #68] ; 0x44 + 800cb0a: 4298 cmp r0, r3 + 800cb0c: bf18 it ne + 800cb0e: 6460 strne r0, [r4, #68] ; 0x44 + 800cb10: f04f 01fc mov.w r1, #252 ; 0xfc + 800cb14: 482a ldr r0, [pc, #168] ; (800cbc0 <LoRaMacHandleNvm.part.0.constprop.0+0xdc>) + 800cb16: bf18 it ne + 800cb18: f045 0502 orrne.w r5, r5, #2 + 800cb1c: f004 ff4c bl 80119b8 <Crc32> + 800cb20: f8d4 3144 ldr.w r3, [r4, #324] ; 0x144 + 800cb24: 4298 cmp r0, r3 + 800cb26: bf18 it ne + 800cb28: f8c4 0144 strne.w r0, [r4, #324] ; 0x144 + 800cb2c: f04f 01d4 mov.w r1, #212 ; 0xd4 + 800cb30: 4824 ldr r0, [pc, #144] ; (800cbc4 <LoRaMacHandleNvm.part.0.constprop.0+0xe0>) + 800cb32: bf18 it ne + 800cb34: f045 0504 orrne.w r5, r5, #4 + 800cb38: f004 ff3e bl 80119b8 <Crc32> + 800cb3c: f8d4 321c ldr.w r3, [r4, #540] ; 0x21c + 800cb40: 4298 cmp r0, r3 + 800cb42: bf18 it ne + 800cb44: f8c4 021c strne.w r0, [r4, #540] ; 0x21c + 800cb48: f04f 0190 mov.w r1, #144 ; 0x90 + 800cb4c: 481e ldr r0, [pc, #120] ; (800cbc8 <LoRaMacHandleNvm.part.0.constprop.0+0xe4>) + 800cb4e: bf18 it ne + 800cb50: f045 0508 orrne.w r5, r5, #8 + 800cb54: f004 ff30 bl 80119b8 <Crc32> + 800cb58: f8d4 32b0 ldr.w r3, [r4, #688] ; 0x2b0 + 800cb5c: 4298 cmp r0, r3 + 800cb5e: bf18 it ne + 800cb60: f8c4 02b0 strne.w r0, [r4, #688] ; 0x2b0 + 800cb64: f44f 6194 mov.w r1, #1184 ; 0x4a0 + 800cb68: 4818 ldr r0, [pc, #96] ; (800cbcc <LoRaMacHandleNvm.part.0.constprop.0+0xe8>) + 800cb6a: bf18 it ne + 800cb6c: f045 0510 orrne.w r5, r5, #16 + 800cb70: f004 ff22 bl 80119b8 <Crc32> + 800cb74: f8d4 3754 ldr.w r3, [r4, #1876] ; 0x754 + 800cb78: 4298 cmp r0, r3 + 800cb7a: bf18 it ne + 800cb7c: f8c4 0754 strne.w r0, [r4, #1876] ; 0x754 + 800cb80: f04f 0114 mov.w r1, #20 + 800cb84: 4812 ldr r0, [pc, #72] ; (800cbd0 <LoRaMacHandleNvm.part.0.constprop.0+0xec>) + 800cb86: bf18 it ne + 800cb88: f045 0520 orrne.w r5, r5, #32 + 800cb8c: f004 ff14 bl 80119b8 <Crc32> + 800cb90: f8d4 376c ldr.w r3, [r4, #1900] ; 0x76c + 800cb94: 4298 cmp r0, r3 + 800cb96: 4b0f ldr r3, [pc, #60] ; (800cbd4 <LoRaMacHandleNvm.part.0.constprop.0+0xf0>) + 800cb98: bf18 it ne + 800cb9a: f8c4 076c strne.w r0, [r4, #1900] ; 0x76c + 800cb9e: f8d3 3348 ldr.w r3, [r3, #840] ; 0x348 + 800cba2: bf18 it ne + 800cba4: f045 0540 orrne.w r5, r5, #64 ; 0x40 + 800cba8: b12b cbz r3, 800cbb6 <LoRaMacHandleNvm.part.0.constprop.0+0xd2> + 800cbaa: 691b ldr r3, [r3, #16] + 800cbac: b11b cbz r3, 800cbb6 <LoRaMacHandleNvm.part.0.constprop.0+0xd2> + 800cbae: 4628 mov r0, r5 + 800cbb0: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 800cbb4: 4718 bx r3 + 800cbb6: bd70 pop {r4, r5, r6, pc} + 800cbb8: 20001868 .word 0x20001868 + 800cbbc: 20001890 .word 0x20001890 + 800cbc0: 200018b0 .word 0x200018b0 + 800cbc4: 200019b0 .word 0x200019b0 + 800cbc8: 20001a88 .word 0x20001a88 + 800cbcc: 20001b1c .word 0x20001b1c + 800cbd0: 20001fc0 .word 0x20001fc0 + 800cbd4: 20001fdc .word 0x20001fdc + +0800cbd8 <ProcessMacCommands.constprop.0>: + 800cbd8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800cbdc: b091 sub sp, #68 ; 0x44 + 800cbde: 2600 movs r6, #0 + 800cbe0: 4fbd ldr r7, [pc, #756] ; (800ced8 <ProcessMacCommands.constprop.0+0x300>) + 800cbe2: f88d 6015 strb.w r6, [sp, #21] + 800cbe6: 4605 mov r5, r0 + 800cbe8: 4688 mov r8, r1 + 800cbea: 4693 mov fp, r2 + 800cbec: f8ad 6018 strh.w r6, [sp, #24] + 800cbf0: 46b1 mov r9, r6 + 800cbf2: 45c1 cmp r9, r8 + 800cbf4: d302 bcc.n 800cbfc <ProcessMacCommands.constprop.0+0x24> + 800cbf6: b011 add sp, #68 ; 0x44 + 800cbf8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800cbfc: f815 0009 ldrb.w r0, [r5, r9] + 800cc00: f002 f9c2 bl 800ef88 <LoRaMacCommandsGetCmdSize> + 800cc04: 4448 add r0, r9 + 800cc06: 4540 cmp r0, r8 + 800cc08: dcf5 bgt.n 800cbf6 <ProcessMacCommands.constprop.0+0x1e> + 800cc0a: f815 3009 ldrb.w r3, [r5, r9] + 800cc0e: f109 0401 add.w r4, r9, #1 + 800cc12: 3b02 subs r3, #2 + 800cc14: b2e4 uxtb r4, r4 + 800cc16: 2b11 cmp r3, #17 + 800cc18: d8ed bhi.n 800cbf6 <ProcessMacCommands.constprop.0+0x1e> + 800cc1a: a201 add r2, pc, #4 ; (adr r2, 800cc20 <ProcessMacCommands.constprop.0+0x48>) + 800cc1c: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 800cc20: 0800cc69 .word 0x0800cc69 + 800cc24: 0800cc99 .word 0x0800cc99 + 800cc28: 0800cd59 .word 0x0800cd59 + 800cc2c: 0800cd85 .word 0x0800cd85 + 800cc30: 0800ce15 .word 0x0800ce15 + 800cc34: 0800ce39 .word 0x0800ce39 + 800cc38: 0800cead .word 0x0800cead + 800cc3c: 0800cee1 .word 0x0800cee1 + 800cc40: 0800cf5f .word 0x0800cf5f + 800cc44: 0800cbf7 .word 0x0800cbf7 + 800cc48: 0800cbf7 .word 0x0800cbf7 + 800cc4c: 0800cfbf .word 0x0800cfbf + 800cc50: 0800cbf7 .word 0x0800cbf7 + 800cc54: 0800cbf7 .word 0x0800cbf7 + 800cc58: 0800d075 .word 0x0800d075 + 800cc5c: 0800d09b .word 0x0800d09b + 800cc60: 0800d0df .word 0x0800d0df + 800cc64: 0800d11d .word 0x0800d11d + 800cc68: 2005 movs r0, #5 + 800cc6a: f002 fa39 bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800cc6e: b188 cbz r0, 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800cc70: 2105 movs r1, #5 + 800cc72: 2000 movs r0, #0 + 800cc74: f002 f9f8 bl 800f068 <LoRaMacConfirmQueueSetStatus> + 800cc78: 5d2b ldrb r3, [r5, r4] + 800cc7a: f887 3450 strb.w r3, [r7, #1104] ; 0x450 + 800cc7e: f109 0403 add.w r4, r9, #3 + 800cc82: f109 0902 add.w r9, r9, #2 + 800cc86: fa5f f989 uxtb.w r9, r9 + 800cc8a: b2e4 uxtb r4, r4 + 800cc8c: f815 3009 ldrb.w r3, [r5, r9] + 800cc90: f887 3451 strb.w r3, [r7, #1105] ; 0x451 + 800cc94: 46a1 mov r9, r4 + 800cc96: e7ac b.n 800cbf2 <ProcessMacCommands.constprop.0+0x1a> + 800cc98: 2300 movs r3, #0 + 800cc9a: f88d 3016 strb.w r3, [sp, #22] + 800cc9e: f88d 3017 strb.w r3, [sp, #23] + 800cca2: f88d 301c strb.w r3, [sp, #28] + 800cca6: f88d 3020 strb.w r3, [sp, #32] + 800ccaa: 2e00 cmp r6, #0 + 800ccac: d152 bne.n 800cd54 <ProcessMacCommands.constprop.0+0x17c> + 800ccae: 4e8b ldr r6, [pc, #556] ; (800cedc <ProcessMacCommands.constprop.0+0x304>) + 800ccb0: 1e63 subs r3, r4, #1 + 800ccb2: 442b add r3, r5 + 800ccb4: 930d str r3, [sp, #52] ; 0x34 + 800ccb6: f896 311a ldrb.w r3, [r6, #282] ; 0x11a + 800ccba: f88d 303a strb.w r3, [sp, #58] ; 0x3a + 800ccbe: f896 307c ldrb.w r3, [r6, #124] ; 0x7c + 800ccc2: f88d 3039 strb.w r3, [sp, #57] ; 0x39 + 800ccc6: f896 3039 ldrb.w r3, [r6, #57] ; 0x39 + 800ccca: f88d 303b strb.w r3, [sp, #59] ; 0x3b + 800ccce: f896 3038 ldrb.w r3, [r6, #56] ; 0x38 + 800ccd2: f88d 303c strb.w r3, [sp, #60] ; 0x3c + 800ccd6: f896 3068 ldrb.w r3, [r6, #104] ; 0x68 + 800ccda: f88d 303d strb.w r3, [sp, #61] ; 0x3d + 800ccde: f8d6 3128 ldr.w r3, [r6, #296] ; 0x128 + 800cce2: 930c str r3, [sp, #48] ; 0x30 + 800cce4: ab08 add r3, sp, #32 + 800cce6: 9301 str r3, [sp, #4] + 800cce8: ab07 add r3, sp, #28 + 800ccea: 9300 str r3, [sp, #0] + 800ccec: f896 0048 ldrb.w r0, [r6, #72] ; 0x48 + 800ccf0: eba8 0909 sub.w r9, r8, r9 + 800ccf4: f10d 0317 add.w r3, sp, #23 + 800ccf8: f10d 0216 add.w r2, sp, #22 + 800ccfc: a90c add r1, sp, #48 ; 0x30 + 800ccfe: f88d 9038 strb.w r9, [sp, #56] ; 0x38 + 800cd02: f002 fefb bl 800fafc <RegionLinkAdrReq> + 800cd06: f88d 0015 strb.w r0, [sp, #21] + 800cd0a: f000 0007 and.w r0, r0, #7 + 800cd0e: 2807 cmp r0, #7 + 800cd10: d10b bne.n 800cd2a <ProcessMacCommands.constprop.0+0x152> + 800cd12: f89d 3016 ldrb.w r3, [sp, #22] + 800cd16: f886 3039 strb.w r3, [r6, #57] ; 0x39 + 800cd1a: f89d 3017 ldrb.w r3, [sp, #23] + 800cd1e: f886 3038 strb.w r3, [r6, #56] ; 0x38 + 800cd22: f89d 301c ldrb.w r3, [sp, #28] + 800cd26: f886 3068 strb.w r3, [r6, #104] ; 0x68 + 800cd2a: 2600 movs r6, #0 + 800cd2c: f04f 0905 mov.w r9, #5 + 800cd30: e006 b.n 800cd40 <ProcessMacCommands.constprop.0+0x168> + 800cd32: 2201 movs r2, #1 + 800cd34: f10d 0115 add.w r1, sp, #21 + 800cd38: 2003 movs r0, #3 + 800cd3a: f002 f83b bl 800edb4 <LoRaMacCommandsAddCmd> + 800cd3e: 3601 adds r6, #1 + 800cd40: b2f2 uxtb r2, r6 + 800cd42: f89d 3020 ldrb.w r3, [sp, #32] + 800cd46: fbb3 f1f9 udiv r1, r3, r9 + 800cd4a: 4291 cmp r1, r2 + 800cd4c: d8f1 bhi.n 800cd32 <ProcessMacCommands.constprop.0+0x15a> + 800cd4e: 3b01 subs r3, #1 + 800cd50: 4423 add r3, r4 + 800cd52: b2dc uxtb r4, r3 + 800cd54: 2601 movs r6, #1 + 800cd56: e79d b.n 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800cd58: 5d2b ldrb r3, [r5, r4] + 800cd5a: 4960 ldr r1, [pc, #384] ; (800cedc <ProcessMacCommands.constprop.0+0x304>) + 800cd5c: f003 030f and.w r3, r3, #15 + 800cd60: 2201 movs r2, #1 + 800cd62: f881 311b strb.w r3, [r1, #283] ; 0x11b + 800cd66: f109 0902 add.w r9, r9, #2 + 800cd6a: fa02 f303 lsl.w r3, r2, r3 + 800cd6e: f8a1 311e strh.w r3, [r1, #286] ; 0x11e + 800cd72: fa5f f989 uxtb.w r9, r9 + 800cd76: 2200 movs r2, #0 + 800cd78: a906 add r1, sp, #24 + 800cd7a: 2004 movs r0, #4 + 800cd7c: f002 f81a bl 800edb4 <LoRaMacCommandsAddCmd> + 800cd80: 464c mov r4, r9 + 800cd82: e787 b.n 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800cd84: 2307 movs r3, #7 + 800cd86: f88d 3015 strb.w r3, [sp, #21] + 800cd8a: 5d2b ldrb r3, [r5, r4] + 800cd8c: f3c3 1202 ubfx r2, r3, #4, #3 + 800cd90: f003 030f and.w r3, r3, #15 + 800cd94: f88d 3030 strb.w r3, [sp, #48] ; 0x30 + 800cd98: f109 0303 add.w r3, r9, #3 + 800cd9c: b2db uxtb r3, r3 + 800cd9e: f88d 2031 strb.w r2, [sp, #49] ; 0x31 + 800cda2: 5cea ldrb r2, [r5, r3] + 800cda4: f109 0304 add.w r3, r9, #4 + 800cda8: b2db uxtb r3, r3 + 800cdaa: f109 0405 add.w r4, r9, #5 + 800cdae: 5ceb ldrb r3, [r5, r3] + 800cdb0: f109 0902 add.w r9, r9, #2 + 800cdb4: fa5f f989 uxtb.w r9, r9 + 800cdb8: 041b lsls r3, r3, #16 + 800cdba: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800cdbe: f815 2009 ldrb.w r2, [r5, r9] + 800cdc2: f8df 9118 ldr.w r9, [pc, #280] ; 800cedc <ProcessMacCommands.constprop.0+0x304> + 800cdc6: 4313 orrs r3, r2 + 800cdc8: 2264 movs r2, #100 ; 0x64 + 800cdca: 4353 muls r3, r2 + 800cdcc: f899 0048 ldrb.w r0, [r9, #72] ; 0x48 + 800cdd0: 930d str r3, [sp, #52] ; 0x34 + 800cdd2: a90c add r1, sp, #48 ; 0x30 + 800cdd4: f002 fea1 bl 800fb1a <RegionRxParamSetupReq> + 800cdd8: f000 0307 and.w r3, r0, #7 + 800cddc: 2b07 cmp r3, #7 + 800cdde: b2e4 uxtb r4, r4 + 800cde0: f88d 0015 strb.w r0, [sp, #21] + 800cde4: d10e bne.n 800ce04 <ProcessMacCommands.constprop.0+0x22c> + 800cde6: f89d 3030 ldrb.w r3, [sp, #48] ; 0x30 + 800cdea: f889 3070 strb.w r3, [r9, #112] ; 0x70 + 800cdee: f889 3078 strb.w r3, [r9, #120] ; 0x78 + 800cdf2: 9b0d ldr r3, [sp, #52] ; 0x34 + 800cdf4: f8c9 306c str.w r3, [r9, #108] ; 0x6c + 800cdf8: f8c9 3074 str.w r3, [r9, #116] ; 0x74 + 800cdfc: f89d 3031 ldrb.w r3, [sp, #49] ; 0x31 + 800ce00: f889 3069 strb.w r3, [r9, #105] ; 0x69 + 800ce04: f88d 0018 strb.w r0, [sp, #24] + 800ce08: 2201 movs r2, #1 + 800ce0a: a906 add r1, sp, #24 + 800ce0c: 2005 movs r0, #5 + 800ce0e: f001 ffd1 bl 800edb4 <LoRaMacCommandsAddCmd> + 800ce12: e73f b.n 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800ce14: f8d7 3348 ldr.w r3, [r7, #840] ; 0x348 + 800ce18: b163 cbz r3, 800ce34 <ProcessMacCommands.constprop.0+0x25c> + 800ce1a: 681b ldr r3, [r3, #0] + 800ce1c: b153 cbz r3, 800ce34 <ProcessMacCommands.constprop.0+0x25c> + 800ce1e: 4798 blx r3 + 800ce20: f00b 033f and.w r3, fp, #63 ; 0x3f + 800ce24: f88d 0018 strb.w r0, [sp, #24] + 800ce28: f88d 3019 strb.w r3, [sp, #25] + 800ce2c: 2202 movs r2, #2 + 800ce2e: a906 add r1, sp, #24 + 800ce30: 2006 movs r0, #6 + 800ce32: e7ec b.n 800ce0e <ProcessMacCommands.constprop.0+0x236> + 800ce34: 20ff movs r0, #255 ; 0xff + 800ce36: e7f3 b.n 800ce20 <ProcessMacCommands.constprop.0+0x248> + 800ce38: 2303 movs r3, #3 + 800ce3a: f88d 3015 strb.w r3, [sp, #21] + 800ce3e: 5d2b ldrb r3, [r5, r4] + 800ce40: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + 800ce44: ab0c add r3, sp, #48 ; 0x30 + 800ce46: 9308 str r3, [sp, #32] + 800ce48: f109 0303 add.w r3, r9, #3 + 800ce4c: b2db uxtb r3, r3 + 800ce4e: f109 0406 add.w r4, r9, #6 + 800ce52: 5cea ldrb r2, [r5, r3] + 800ce54: f109 0304 add.w r3, r9, #4 + 800ce58: b2db uxtb r3, r3 + 800ce5a: a908 add r1, sp, #32 + 800ce5c: 5ceb ldrb r3, [r5, r3] + 800ce5e: 041b lsls r3, r3, #16 + 800ce60: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800ce64: f109 0202 add.w r2, r9, #2 + 800ce68: b2d2 uxtb r2, r2 + 800ce6a: f109 0905 add.w r9, r9, #5 + 800ce6e: 5caa ldrb r2, [r5, r2] + 800ce70: 4313 orrs r3, r2 + 800ce72: 2264 movs r2, #100 ; 0x64 + 800ce74: 4353 muls r3, r2 + 800ce76: fa5f f989 uxtb.w r9, r9 + 800ce7a: 930c str r3, [sp, #48] ; 0x30 + 800ce7c: 2300 movs r3, #0 + 800ce7e: 930d str r3, [sp, #52] ; 0x34 + 800ce80: f815 3009 ldrb.w r3, [r5, r9] + 800ce84: f88d 3038 strb.w r3, [sp, #56] ; 0x38 + 800ce88: 4b14 ldr r3, [pc, #80] ; (800cedc <ProcessMacCommands.constprop.0+0x304>) + 800ce8a: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800ce8e: f002 fe4a bl 800fb26 <RegionNewChannelReq> + 800ce92: b2c3 uxtb r3, r0 + 800ce94: 2800 cmp r0, #0 + 800ce96: b2e4 uxtb r4, r4 + 800ce98: f88d 3015 strb.w r3, [sp, #21] + 800ce9c: f6ff aefa blt.w 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800cea0: f88d 3018 strb.w r3, [sp, #24] + 800cea4: 2201 movs r2, #1 + 800cea6: a906 add r1, sp, #24 + 800cea8: 2007 movs r0, #7 + 800ceaa: e7b0 b.n 800ce0e <ProcessMacCommands.constprop.0+0x236> + 800ceac: 5d2b ldrb r3, [r5, r4] + 800ceae: f003 030f and.w r3, r3, #15 + 800ceb2: 2b01 cmp r3, #1 + 800ceb4: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800ceb8: bf38 it cc + 800ceba: 2301 movcc r3, #1 + 800cebc: 4353 muls r3, r2 + 800cebe: 4a07 ldr r2, [pc, #28] ; (800cedc <ProcessMacCommands.constprop.0+0x304>) + 800cec0: f109 0902 add.w r9, r9, #2 + 800cec4: 6593 str r3, [r2, #88] ; 0x58 + 800cec6: f503 737a add.w r3, r3, #1000 ; 0x3e8 + 800ceca: 65d3 str r3, [r2, #92] ; 0x5c + 800cecc: fa5f f989 uxtb.w r9, r9 + 800ced0: 2200 movs r2, #0 + 800ced2: a906 add r1, sp, #24 + 800ced4: 2008 movs r0, #8 + 800ced6: e751 b.n 800cd7c <ProcessMacCommands.constprop.0+0x1a4> + 800ced8: 20001fdc .word 0x20001fdc + 800cedc: 20001868 .word 0x20001868 + 800cee0: 5d2b ldrb r3, [r5, r4] + 800cee2: 4c9c ldr r4, [pc, #624] ; (800d154 <ProcessMacCommands.constprop.0+0x57c>) + 800cee4: f3c3 1240 ubfx r2, r3, #5, #1 + 800cee8: f88d 201d strb.w r2, [sp, #29] + 800ceec: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800cef0: f3c3 1200 ubfx r2, r3, #4, #1 + 800cef4: a907 add r1, sp, #28 + 800cef6: f003 030f and.w r3, r3, #15 + 800cefa: f88d 201c strb.w r2, [sp, #28] + 800cefe: f88d 301e strb.w r3, [sp, #30] + 800cf02: f002 fe16 bl 800fb32 <RegionTxParamSetupReq> + 800cf06: f109 0902 add.w r9, r9, #2 + 800cf0a: 3001 adds r0, #1 + 800cf0c: fa5f f989 uxtb.w r9, r9 + 800cf10: f43f af36 beq.w 800cd80 <ProcessMacCommands.constprop.0+0x1a8> + 800cf14: f8bd 301c ldrh.w r3, [sp, #28] + 800cf18: 4a8f ldr r2, [pc, #572] ; (800d158 <ProcessMacCommands.constprop.0+0x580>) + 800cf1a: f8a4 307c strh.w r3, [r4, #124] ; 0x7c + 800cf1e: f89d 301e ldrb.w r3, [sp, #30] + 800cf22: f89d a01c ldrb.w sl, [sp, #28] + 800cf26: 5cd0 ldrb r0, [r2, r3] + 800cf28: f7f4 fd74 bl 8001a14 <__aeabi_ui2f> + 800cf2c: 2302 movs r3, #2 + 800cf2e: f8c4 0080 str.w r0, [r4, #128] ; 0x80 + 800cf32: a90c add r1, sp, #48 ; 0x30 + 800cf34: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800cf38: f88d 3030 strb.w r3, [sp, #48] ; 0x30 + 800cf3c: f88d a032 strb.w sl, [sp, #50] ; 0x32 + 800cf40: f002 fd96 bl 800fa70 <RegionGetPhyParam> + 800cf44: f994 3039 ldrsb.w r3, [r4, #57] ; 0x39 + 800cf48: 9008 str r0, [sp, #32] + 800cf4a: b240 sxtb r0, r0 + 800cf4c: 4298 cmp r0, r3 + 800cf4e: bfb8 it lt + 800cf50: 4618 movlt r0, r3 + 800cf52: f884 0039 strb.w r0, [r4, #57] ; 0x39 + 800cf56: 2200 movs r2, #0 + 800cf58: a906 add r1, sp, #24 + 800cf5a: 2009 movs r0, #9 + 800cf5c: e70e b.n 800cd7c <ProcessMacCommands.constprop.0+0x1a4> + 800cf5e: 2303 movs r3, #3 + 800cf60: f88d 3015 strb.w r3, [sp, #21] + 800cf64: 5d2b ldrb r3, [r5, r4] + 800cf66: f88d 3030 strb.w r3, [sp, #48] ; 0x30 + 800cf6a: f109 0303 add.w r3, r9, #3 + 800cf6e: b2db uxtb r3, r3 + 800cf70: f109 0405 add.w r4, r9, #5 + 800cf74: 5cea ldrb r2, [r5, r3] + 800cf76: f109 0304 add.w r3, r9, #4 + 800cf7a: b2db uxtb r3, r3 + 800cf7c: f109 0902 add.w r9, r9, #2 + 800cf80: 5ceb ldrb r3, [r5, r3] + 800cf82: fa5f f989 uxtb.w r9, r9 + 800cf86: 041b lsls r3, r3, #16 + 800cf88: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800cf8c: f815 2009 ldrb.w r2, [r5, r9] + 800cf90: 4313 orrs r3, r2 + 800cf92: 2264 movs r2, #100 ; 0x64 + 800cf94: 4353 muls r3, r2 + 800cf96: 930d str r3, [sp, #52] ; 0x34 + 800cf98: 4b6e ldr r3, [pc, #440] ; (800d154 <ProcessMacCommands.constprop.0+0x57c>) + 800cf9a: a90c add r1, sp, #48 ; 0x30 + 800cf9c: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800cfa0: f002 fdcd bl 800fb3e <RegionDlChannelReq> + 800cfa4: b2c3 uxtb r3, r0 + 800cfa6: 2800 cmp r0, #0 + 800cfa8: b2e4 uxtb r4, r4 + 800cfaa: f88d 3015 strb.w r3, [sp, #21] + 800cfae: f6ff ae71 blt.w 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800cfb2: f88d 3018 strb.w r3, [sp, #24] + 800cfb6: 2201 movs r2, #1 + 800cfb8: a906 add r1, sp, #24 + 800cfba: 200a movs r0, #10 + 800cfbc: e727 b.n 800ce0e <ProcessMacCommands.constprop.0+0x236> + 800cfbe: 200a movs r0, #10 + 800cfc0: f002 f88e bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800cfc4: 2800 cmp r0, #0 + 800cfc6: f43f ae65 beq.w 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800cfca: 210a movs r1, #10 + 800cfcc: 2000 movs r0, #0 + 800cfce: f002 f84b bl 800f068 <LoRaMacConfirmQueueSetStatus> + 800cfd2: 2300 movs r3, #0 + 800cfd4: f8ad 3026 strh.w r3, [sp, #38] ; 0x26 + 800cfd8: f109 0302 add.w r3, r9, #2 + 800cfdc: b2db uxtb r3, r3 + 800cfde: f44f 717a mov.w r1, #1000 ; 0x3e8 + 800cfe2: 5cea ldrb r2, [r5, r3] + 800cfe4: f109 0303 add.w r3, r9, #3 + 800cfe8: b2db uxtb r3, r3 + 800cfea: f10d 0a30 add.w sl, sp, #48 ; 0x30 + 800cfee: 5ceb ldrb r3, [r5, r3] + 800cff0: 041b lsls r3, r3, #16 + 800cff2: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800cff6: 5d2a ldrb r2, [r5, r4] + 800cff8: 4313 orrs r3, r2 + 800cffa: f109 0204 add.w r2, r9, #4 + 800cffe: b2d2 uxtb r2, r2 + 800d000: f109 0406 add.w r4, r9, #6 + 800d004: f109 0905 add.w r9, r9, #5 + 800d008: 5caa ldrb r2, [r5, r2] + 800d00a: fa5f f989 uxtb.w r9, r9 + 800d00e: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800d012: f815 2009 ldrb.w r2, [r5, r9] + 800d016: 9303 str r3, [sp, #12] + 800d018: 434a muls r2, r1 + 800d01a: 1212 asrs r2, r2, #8 + 800d01c: 4650 mov r0, sl + 800d01e: f8ad 2024 strh.w r2, [sp, #36] ; 0x24 + 800d022: f006 fee7 bl 8013df4 <SysTimeGet> + 800d026: 9b03 ldr r3, [sp, #12] + 800d028: f103 5396 add.w r3, r3, #314572800 ; 0x12c00000 + 800d02c: f503 13a9 add.w r3, r3, #1384448 ; 0x152000 + 800d030: f503 53ec add.w r3, r3, #7552 ; 0x1d80 + 800d034: 9308 str r3, [sp, #32] + 800d036: f8d7 333c ldr.w r3, [r7, #828] ; 0x33c + 800d03a: 9300 str r3, [sp, #0] + 800d03c: f10d 0920 add.w r9, sp, #32 + 800d040: e899 0006 ldmia.w r9, {r1, r2} + 800d044: f8d7 3338 ldr.w r3, [r7, #824] ; 0x338 + 800d048: a80a add r0, sp, #40 ; 0x28 + 800d04a: f006 fe90 bl 8013d6e <SysTimeSub> + 800d04e: 9b0b ldr r3, [sp, #44] ; 0x2c + 800d050: 9300 str r3, [sp, #0] + 800d052: e89a 0006 ldmia.w sl, {r1, r2} + 800d056: 9b0a ldr r3, [sp, #40] ; 0x28 + 800d058: 4648 mov r0, r9 + 800d05a: f006 fe6d bl 8013d38 <SysTimeAdd> + 800d05e: e899 0003 ldmia.w r9, {r0, r1} + 800d062: f006 fe9f bl 8013da4 <SysTimeSet> + 800d066: f001 fe8f bl 800ed88 <LoRaMacClassBDeviceTimeAns> + 800d06a: 2301 movs r3, #1 + 800d06c: b2e4 uxtb r4, r4 + 800d06e: f887 3430 strb.w r3, [r7, #1072] ; 0x430 + 800d072: e60f b.n 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800d074: 200d movs r0, #13 + 800d076: f002 f833 bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800d07a: 2800 cmp r0, #0 + 800d07c: f43f ae0a beq.w 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800d080: 210d movs r1, #13 + 800d082: 2000 movs r0, #0 + 800d084: f001 fff0 bl 800f068 <LoRaMacConfirmQueueSetStatus> + 800d088: f897 3480 ldrb.w r3, [r7, #1152] ; 0x480 + 800d08c: 3b04 subs r3, #4 + 800d08e: 2b01 cmp r3, #1 + 800d090: f67f ae00 bls.w 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800d094: f001 fe74 bl 800ed80 <LoRaMacClassBPingSlotInfoAns> + 800d098: e5fc b.n 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800d09a: f109 0302 add.w r3, r9, #2 + 800d09e: b2db uxtb r3, r3 + 800d0a0: 5d2a ldrb r2, [r5, r4] + 800d0a2: 5ce9 ldrb r1, [r5, r3] + 800d0a4: f109 0303 add.w r3, r9, #3 + 800d0a8: b2db uxtb r3, r3 + 800d0aa: f109 0405 add.w r4, r9, #5 + 800d0ae: 5ceb ldrb r3, [r5, r3] + 800d0b0: f109 0904 add.w r9, r9, #4 + 800d0b4: fa5f f989 uxtb.w r9, r9 + 800d0b8: 041b lsls r3, r3, #16 + 800d0ba: f815 0009 ldrb.w r0, [r5, r9] + 800d0be: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800d0c2: 4313 orrs r3, r2 + 800d0c4: 2164 movs r1, #100 ; 0x64 + 800d0c6: 4359 muls r1, r3 + 800d0c8: f000 000f and.w r0, r0, #15 + 800d0cc: f001 fe59 bl 800ed82 <LoRaMacClassBPingSlotChannelReq> + 800d0d0: b2e4 uxtb r4, r4 + 800d0d2: f88d 0018 strb.w r0, [sp, #24] + 800d0d6: 2201 movs r2, #1 + 800d0d8: a906 add r1, sp, #24 + 800d0da: 2011 movs r0, #17 + 800d0dc: e697 b.n 800ce0e <ProcessMacCommands.constprop.0+0x236> + 800d0de: 200e movs r0, #14 + 800d0e0: f001 fffe bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800d0e4: 2800 cmp r0, #0 + 800d0e6: f43f add5 beq.w 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800d0ea: 210e movs r1, #14 + 800d0ec: 2000 movs r0, #0 + 800d0ee: f001 ffbb bl 800f068 <LoRaMacConfirmQueueSetStatus> + 800d0f2: f109 0302 add.w r3, r9, #2 + 800d0f6: b2db uxtb r3, r3 + 800d0f8: 4a18 ldr r2, [pc, #96] ; (800d15c <ProcessMacCommands.constprop.0+0x584>) + 800d0fa: 5ce8 ldrb r0, [r5, r3] + 800d0fc: 5d2b ldrb r3, [r5, r4] + 800d0fe: 6812 ldr r2, [r2, #0] + 800d100: f109 0404 add.w r4, r9, #4 + 800d104: f109 0903 add.w r9, r9, #3 + 800d108: fa5f f989 uxtb.w r9, r9 + 800d10c: ea43 2000 orr.w r0, r3, r0, lsl #8 + 800d110: f815 1009 ldrb.w r1, [r5, r9] + 800d114: b2e4 uxtb r4, r4 + 800d116: f001 fe36 bl 800ed86 <LoRaMacClassBBeaconTimingAns> + 800d11a: e5bb b.n 800cc94 <ProcessMacCommands.constprop.0+0xbc> + 800d11c: 5d2a ldrb r2, [r5, r4] + 800d11e: f109 0302 add.w r3, r9, #2 + 800d122: f109 0404 add.w r4, r9, #4 + 800d126: f109 0903 add.w r9, r9, #3 + 800d12a: b2db uxtb r3, r3 + 800d12c: fa5f f989 uxtb.w r9, r9 + 800d130: 5ce9 ldrb r1, [r5, r3] + 800d132: f815 3009 ldrb.w r3, [r5, r9] + 800d136: 041b lsls r3, r3, #16 + 800d138: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800d13c: 4313 orrs r3, r2 + 800d13e: 2064 movs r0, #100 ; 0x64 + 800d140: 4358 muls r0, r3 + 800d142: f001 fe22 bl 800ed8a <LoRaMacClassBBeaconFreqReq> + 800d146: b2e4 uxtb r4, r4 + 800d148: f88d 0018 strb.w r0, [sp, #24] + 800d14c: 2201 movs r2, #1 + 800d14e: a906 add r1, sp, #24 + 800d150: 2013 movs r0, #19 + 800d152: e65c b.n 800ce0e <ProcessMacCommands.constprop.0+0x236> + 800d154: 20001868 .word 0x20001868 + 800d158: 0801532b .word 0x0801532b + 800d15c: 200024e4 .word 0x200024e4 + +0800d160 <StopRetransmission.isra.0>: + 800d160: 4b0e ldr r3, [pc, #56] ; (800d19c <StopRetransmission.isra.0+0x3c>) + 800d162: f893 2481 ldrb.w r2, [r3, #1153] ; 0x481 + 800d166: 0792 lsls r2, r2, #30 + 800d168: d503 bpl.n 800d172 <StopRetransmission.isra.0+0x12> + 800d16a: f893 247f ldrb.w r2, [r3, #1151] ; 0x47f + 800d16e: 2a01 cmp r2, #1 + 800d170: d906 bls.n 800d180 <StopRetransmission.isra.0+0x20> + 800d172: 4a0b ldr r2, [pc, #44] ; (800d1a0 <StopRetransmission.isra.0+0x40>) + 800d174: f892 111a ldrb.w r1, [r2, #282] ; 0x11a + 800d178: b111 cbz r1, 800d180 <StopRetransmission.isra.0+0x20> + 800d17a: 6a91 ldr r1, [r2, #40] ; 0x28 + 800d17c: 3101 adds r1, #1 + 800d17e: 6291 str r1, [r2, #40] ; 0x28 + 800d180: 2200 movs r2, #0 + 800d182: f883 240c strb.w r2, [r3, #1036] ; 0x40c + 800d186: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + 800d18a: f883 240f strb.w r2, [r3, #1039] ; 0x40f + 800d18e: f8d3 2340 ldr.w r2, [r3, #832] ; 0x340 + 800d192: f022 0202 bic.w r2, r2, #2 + 800d196: f8c3 2340 str.w r2, [r3, #832] ; 0x340 + 800d19a: 4770 bx lr + 800d19c: 20001fdc .word 0x20001fdc + 800d1a0: 20001868 .word 0x20001868 + +0800d1a4 <OnTxDelayedTimerEvent>: + 800d1a4: b510 push {r4, lr} + 800d1a6: 4c12 ldr r4, [pc, #72] ; (800d1f0 <OnTxDelayedTimerEvent+0x4c>) + 800d1a8: f504 705a add.w r0, r4, #872 ; 0x368 + 800d1ac: f006 ff12 bl 8013fd4 <UTIL_TIMER_Stop> + 800d1b0: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d1b4: 2001 movs r0, #1 + 800d1b6: f023 0320 bic.w r3, r3, #32 + 800d1ba: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800d1be: f7ff f97b bl 800c4b8 <ScheduleTx> + 800d1c2: b198 cbz r0, 800d1ec <OnTxDelayedTimerEvent+0x48> + 800d1c4: 280b cmp r0, #11 + 800d1c6: d011 beq.n 800d1ec <OnTxDelayedTimerEvent+0x48> + 800d1c8: 4b0a ldr r3, [pc, #40] ; (800d1f4 <OnTxDelayedTimerEvent+0x50>) + 800d1ca: f893 3039 ldrb.w r3, [r3, #57] ; 0x39 + 800d1ce: f884 3436 strb.w r3, [r4, #1078] ; 0x436 + 800d1d2: 2009 movs r0, #9 + 800d1d4: f894 340e ldrb.w r3, [r4, #1038] ; 0x40e + 800d1d8: f884 3439 strb.w r3, [r4, #1081] ; 0x439 + 800d1dc: f884 0435 strb.w r0, [r4, #1077] ; 0x435 + 800d1e0: f001 ff64 bl 800f0ac <LoRaMacConfirmQueueSetStatusCmn> + 800d1e4: e8bd 4010 ldmia.w sp!, {r4, lr} + 800d1e8: f7ff bfba b.w 800d160 <StopRetransmission.isra.0> + 800d1ec: bd10 pop {r4, pc} + 800d1ee: bf00 nop + 800d1f0: 20001fdc .word 0x20001fdc + 800d1f4: 20001868 .word 0x20001868 + +0800d1f8 <LoRaMacIsBusy>: + 800d1f8: 4b07 ldr r3, [pc, #28] ; (800d218 <LoRaMacIsBusy+0x20>) + 800d1fa: f8d3 2340 ldr.w r2, [r3, #832] ; 0x340 + 800d1fe: 2a01 cmp r2, #1 + 800d200: d006 beq.n 800d210 <LoRaMacIsBusy+0x18> + 800d202: b93a cbnz r2, 800d214 <LoRaMacIsBusy+0x1c> + 800d204: f893 0482 ldrb.w r0, [r3, #1154] ; 0x482 + 800d208: 3801 subs r0, #1 + 800d20a: bf18 it ne + 800d20c: 2001 movne r0, #1 + 800d20e: 4770 bx lr + 800d210: 2000 movs r0, #0 + 800d212: 4770 bx lr + 800d214: 2001 movs r0, #1 + 800d216: 4770 bx lr + 800d218: 20001fdc .word 0x20001fdc + +0800d21c <LoRaMacIsStopped>: + 800d21c: 4b03 ldr r3, [pc, #12] ; (800d22c <LoRaMacIsStopped+0x10>) + 800d21e: f8d3 0340 ldr.w r0, [r3, #832] ; 0x340 + 800d222: 1e43 subs r3, r0, #1 + 800d224: 4258 negs r0, r3 + 800d226: 4158 adcs r0, r3 + 800d228: 4770 bx lr + 800d22a: bf00 nop + 800d22c: 20001fdc .word 0x20001fdc + +0800d230 <LoRaMacProcess>: + 800d230: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800d234: b0a5 sub sp, #148 ; 0x94 + 800d236: f3ef 8110 mrs r1, PRIMASK + 800d23a: b672 cpsid i + 800d23c: 4ac0 ldr r2, [pc, #768] ; (800d540 <LoRaMacProcess+0x310>) + 800d23e: 2000 movs r0, #0 + 800d240: 6813 ldr r3, [r2, #0] + 800d242: 6010 str r0, [r2, #0] + 800d244: f381 8810 msr PRIMASK, r1 + 800d248: 4cbe ldr r4, [pc, #760] ; (800d544 <LoRaMacProcess+0x314>) + 800d24a: 2b00 cmp r3, #0 + 800d24c: f000 80da beq.w 800d404 <LoRaMacProcess+0x1d4> + 800d250: 06d9 lsls r1, r3, #27 + 800d252: fa5f fb83 uxtb.w fp, r3 + 800d256: d56b bpl.n 800d330 <LoRaMacProcess+0x100> + 800d258: 4dbb ldr r5, [pc, #748] ; (800d548 <LoRaMacProcess+0x318>) + 800d25a: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800d25e: 2b02 cmp r3, #2 + 800d260: d002 beq.n 800d268 <LoRaMacProcess+0x38> + 800d262: 4bba ldr r3, [pc, #744] ; (800d54c <LoRaMacProcess+0x31c>) + 800d264: 6adb ldr r3, [r3, #44] ; 0x2c + 800d266: 4798 blx r3 + 800d268: f3ef 8810 mrs r8, PRIMASK + 800d26c: b672 cpsid i + 800d26e: 4fb8 ldr r7, [pc, #736] ; (800d550 <LoRaMacProcess+0x320>) + 800d270: f006 fe6c bl 8013f4c <UTIL_TIMER_GetCurrentTime> + 800d274: 683e ldr r6, [r7, #0] + 800d276: f8d4 13b0 ldr.w r1, [r4, #944] ; 0x3b0 + 800d27a: 1a36 subs r6, r6, r0 + 800d27c: 4431 add r1, r6 + 800d27e: 48b5 ldr r0, [pc, #724] ; (800d554 <LoRaMacProcess+0x324>) + 800d280: f006 ff30 bl 80140e4 <UTIL_TIMER_SetPeriod> + 800d284: 48b3 ldr r0, [pc, #716] ; (800d554 <LoRaMacProcess+0x324>) + 800d286: f006 fef3 bl 8014070 <UTIL_TIMER_Start> + 800d28a: f8d4 13b4 ldr.w r1, [r4, #948] ; 0x3b4 + 800d28e: 48b2 ldr r0, [pc, #712] ; (800d558 <LoRaMacProcess+0x328>) + 800d290: 4431 add r1, r6 + 800d292: f006 ff27 bl 80140e4 <UTIL_TIMER_SetPeriod> + 800d296: 48b0 ldr r0, [pc, #704] ; (800d558 <LoRaMacProcess+0x328>) + 800d298: f006 feea bl 8014070 <UTIL_TIMER_Start> + 800d29c: f388 8810 msr PRIMASK, r8 + 800d2a0: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800d2a4: 2b02 cmp r3, #2 + 800d2a6: d002 beq.n 800d2ae <LoRaMacProcess+0x7e> + 800d2a8: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800d2ac: b18b cbz r3, 800d2d2 <LoRaMacProcess+0xa2> + 800d2ae: 2316 movs r3, #22 + 800d2b0: a90e add r1, sp, #56 ; 0x38 + 800d2b2: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d2b6: f88d 3038 strb.w r3, [sp, #56] ; 0x38 + 800d2ba: f002 fbd9 bl 800fa70 <RegionGetPhyParam> + 800d2be: f8d4 13b4 ldr.w r1, [r4, #948] ; 0x3b4 + 800d2c2: 900c str r0, [sp, #48] ; 0x30 + 800d2c4: 4401 add r1, r0 + 800d2c6: 48a5 ldr r0, [pc, #660] ; (800d55c <LoRaMacProcess+0x32c>) + 800d2c8: f006 ff0c bl 80140e4 <UTIL_TIMER_SetPeriod> + 800d2cc: 48a3 ldr r0, [pc, #652] ; (800d55c <LoRaMacProcess+0x32c>) + 800d2ce: f006 fecf bl 8014070 <UTIL_TIMER_Start> + 800d2d2: 683b ldr r3, [r7, #0] + 800d2d4: f894 2411 ldrb.w r2, [r4, #1041] ; 0x411 + 800d2d8: 62eb str r3, [r5, #44] ; 0x2c + 800d2da: af0a add r7, sp, #40 ; 0x28 + 800d2dc: 4638 mov r0, r7 + 800d2de: f88d 2060 strb.w r2, [sp, #96] ; 0x60 + 800d2e2: 9319 str r3, [sp, #100] ; 0x64 + 800d2e4: f006 fdac bl 8013e40 <SysTimeGetMcuTime> + 800d2e8: f8d5 3124 ldr.w r3, [r5, #292] ; 0x124 + 800d2ec: 9300 str r3, [sp, #0] + 800d2ee: ae04 add r6, sp, #16 + 800d2f0: e897 0006 ldmia.w r7, {r1, r2} + 800d2f4: f8d5 3120 ldr.w r3, [r5, #288] ; 0x120 + 800d2f8: 4630 mov r0, r6 + 800d2fa: f006 fd38 bl 8013d6e <SysTimeSub> + 800d2fe: e896 0003 ldmia.w r6, {r0, r1} + 800d302: ab1b add r3, sp, #108 ; 0x6c + 800d304: e883 0003 stmia.w r3, {r0, r1} + 800d308: f8d4 3414 ldr.w r3, [r4, #1044] ; 0x414 + 800d30c: 931a str r3, [sp, #104] ; 0x68 + 800d30e: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800d312: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d316: 3b00 subs r3, #0 + 800d318: bf18 it ne + 800d31a: 2301 movne r3, #1 + 800d31c: a918 add r1, sp, #96 ; 0x60 + 800d31e: f88d 3061 strb.w r3, [sp, #97] ; 0x61 + 800d322: f002 fbae bl 800fa82 <RegionSetBandTxDone> + 800d326: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800d32a: b90b cbnz r3, 800d330 <LoRaMacProcess+0x100> + 800d32c: f884 3435 strb.w r3, [r4, #1077] ; 0x435 + 800d330: f01b 0f08 tst.w fp, #8 + 800d334: d03a beq.n 800d3ac <LoRaMacProcess+0x17c> + 800d336: 4b8a ldr r3, [pc, #552] ; (800d560 <LoRaMacProcess+0x330>) + 800d338: 4d83 ldr r5, [pc, #524] ; (800d548 <LoRaMacProcess+0x318>) + 800d33a: 685f ldr r7, [r3, #4] + 800d33c: 891e ldrh r6, [r3, #8] + 800d33e: f9b3 800a ldrsh.w r8, [r3, #10] + 800d342: f993 900c ldrsb.w r9, [r3, #12] + 800d346: f8d5 20e4 ldr.w r2, [r5, #228] ; 0xe4 + 800d34a: 9203 str r2, [sp, #12] + 800d34c: 2300 movs r3, #0 + 800d34e: 9307 str r3, [sp, #28] + 800d350: f884 3438 strb.w r3, [r4, #1080] ; 0x438 + 800d354: f8a4 341a strh.w r3, [r4, #1050] ; 0x41a + 800d358: f884 341d strb.w r3, [r4, #1053] ; 0x41d + 800d35c: f8c4 3420 str.w r3, [r4, #1056] ; 0x420 + 800d360: f8a4 3424 strh.w r3, [r4, #1060] ; 0x424 + 800d364: f884 3426 strb.w r3, [r4, #1062] ; 0x426 + 800d368: f8c4 3428 str.w r3, [r4, #1064] ; 0x428 + 800d36c: f884 3418 strb.w r3, [r4, #1048] ; 0x418 + 800d370: f8c4 342c str.w r3, [r4, #1068] ; 0x42c + 800d374: f884 3430 strb.w r3, [r4, #1072] ; 0x430 + 800d378: 4b74 ldr r3, [pc, #464] ; (800d54c <LoRaMacProcess+0x31c>) + 800d37a: f894 2480 ldrb.w r2, [r4, #1152] ; 0x480 + 800d37e: 6adb ldr r3, [r3, #44] ; 0x2c + 800d380: f884 247f strb.w r2, [r4, #1151] ; 0x47f + 800d384: f8a4 847c strh.w r8, [r4, #1148] ; 0x47c + 800d388: f884 947e strb.w r9, [r4, #1150] ; 0x47e + 800d38c: 4798 blx r3 + 800d38e: 4872 ldr r0, [pc, #456] ; (800d558 <LoRaMacProcess+0x328>) + 800d390: f006 fe20 bl 8013fd4 <UTIL_TIMER_Stop> + 800d394: 4631 mov r1, r6 + 800d396: 4638 mov r0, r7 + 800d398: f001 fcdf bl 800ed5a <LoRaMacClassBRxBeacon> + 800d39c: 4682 mov sl, r0 + 800d39e: 2800 cmp r0, #0 + 800d3a0: f000 80e6 beq.w 800d570 <LoRaMacProcess+0x340> + 800d3a4: f8a4 8472 strh.w r8, [r4, #1138] ; 0x472 + 800d3a8: f884 9474 strb.w r9, [r4, #1140] ; 0x474 + 800d3ac: f01b 0f04 tst.w fp, #4 + 800d3b0: d01a beq.n 800d3e8 <LoRaMacProcess+0x1b8> + 800d3b2: 4b65 ldr r3, [pc, #404] ; (800d548 <LoRaMacProcess+0x318>) + 800d3b4: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800d3b8: 2b02 cmp r3, #2 + 800d3ba: d002 beq.n 800d3c2 <LoRaMacProcess+0x192> + 800d3bc: 4b63 ldr r3, [pc, #396] ; (800d54c <LoRaMacProcess+0x31c>) + 800d3be: 6adb ldr r3, [r3, #44] ; 0x2c + 800d3c0: 4798 blx r3 + 800d3c2: 2002 movs r0, #2 + 800d3c4: f7fe ff2c bl 800c220 <UpdateRxSlotIdleState> + 800d3c8: f884 0435 strb.w r0, [r4, #1077] ; 0x435 + 800d3cc: f001 fe6e bl 800f0ac <LoRaMacConfirmQueueSetStatusCmn> + 800d3d0: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800d3d4: b113 cbz r3, 800d3dc <LoRaMacProcess+0x1ac> + 800d3d6: 2301 movs r3, #1 + 800d3d8: f884 340f strb.w r3, [r4, #1039] ; 0x40f + 800d3dc: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d3e0: f043 0310 orr.w r3, r3, #16 + 800d3e4: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d3e8: f01b 0f02 tst.w fp, #2 + 800d3ec: d003 beq.n 800d3f6 <LoRaMacProcess+0x1c6> + 800d3ee: 2106 movs r1, #6 + 800d3f0: 2005 movs r0, #5 + 800d3f2: f7fe ff8b bl 800c30c <HandleRadioRxErrorTimeout> + 800d3f6: f01b 0f01 tst.w fp, #1 + 800d3fa: d003 beq.n 800d404 <LoRaMacProcess+0x1d4> + 800d3fc: 2104 movs r1, #4 + 800d3fe: 2003 movs r0, #3 + 800d400: f7fe ff84 bl 800c30c <HandleRadioRxErrorTimeout> + 800d404: f001 fcc6 bl 800ed94 <LoRaMacClassBProcess> + 800d408: f894 2481 ldrb.w r2, [r4, #1153] ; 0x481 + 800d40c: 06d0 lsls r0, r2, #27 + 800d40e: d55f bpl.n 800d4d0 <LoRaMacProcess+0x2a0> + 800d410: 2300 movs r3, #0 + 800d412: f884 3482 strb.w r3, [r4, #1154] ; 0x482 + 800d416: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d41a: 0619 lsls r1, r3, #24 + 800d41c: bf44 itt mi + 800d41e: f023 0382 bicmi.w r3, r3, #130 ; 0x82 + 800d422: f8c4 3340 strmi.w r3, [r4, #832] ; 0x340 + 800d426: f012 0f05 tst.w r2, #5 + 800d42a: f000 82c5 beq.w 800d9b8 <LoRaMacProcess+0x788> + 800d42e: 200c movs r0, #12 + 800d430: f001 fe56 bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800d434: 2800 cmp r0, #0 + 800d436: f000 82bf beq.w 800d9b8 <LoRaMacProcess+0x788> + 800d43a: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d43e: 07df lsls r7, r3, #31 + 800d440: f100 82ba bmi.w 800d9b8 <LoRaMacProcess+0x788> + 800d444: 075e lsls r6, r3, #29 + 800d446: f140 82cb bpl.w 800d9e0 <LoRaMacProcess+0x7b0> + 800d44a: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d44e: f023 0302 bic.w r3, r3, #2 + 800d452: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800d456: f8d4 2340 ldr.w r2, [r4, #832] ; 0x340 + 800d45a: bb82 cbnz r2, 800d4be <LoRaMacProcess+0x28e> + 800d45c: f894 5481 ldrb.w r5, [r4, #1153] ; 0x481 + 800d460: f015 0101 ands.w r1, r5, #1 + 800d464: bf1e ittt ne + 800d466: 462b movne r3, r5 + 800d468: f362 0300 bfine r3, r2, #0, #1 + 800d46c: f884 3481 strbne.w r3, [r4, #1153] ; 0x481 + 800d470: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d474: 075e lsls r6, r3, #29 + 800d476: bf44 itt mi + 800d478: f36f 0382 bfcmi r3, #2, #1 + 800d47c: f884 3481 strbmi.w r3, [r4, #1153] ; 0x481 + 800d480: 2301 movs r3, #1 + 800d482: f884 3482 strb.w r3, [r4, #1154] ; 0x482 + 800d486: b121 cbz r1, 800d492 <LoRaMacProcess+0x262> + 800d488: f8d4 3344 ldr.w r3, [r4, #836] ; 0x344 + 800d48c: 4835 ldr r0, [pc, #212] ; (800d564 <LoRaMacProcess+0x334>) + 800d48e: 681b ldr r3, [r3, #0] + 800d490: 4798 blx r3 + 800d492: 076d lsls r5, r5, #29 + 800d494: d50b bpl.n 800d4ae <LoRaMacProcess+0x27e> + 800d496: 4834 ldr r0, [pc, #208] ; (800d568 <LoRaMacProcess+0x338>) + 800d498: f001 fe2e bl 800f0f8 <LoRaMacConfirmQueueHandleCb> + 800d49c: f001 fe5c bl 800f158 <LoRaMacConfirmQueueGetCnt> + 800d4a0: b128 cbz r0, 800d4ae <LoRaMacProcess+0x27e> + 800d4a2: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d4a6: f043 0304 orr.w r3, r3, #4 + 800d4aa: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d4ae: f001 fc60 bl 800ed72 <LoRaMacClassBResumeBeaconing> + 800d4b2: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d4b6: f36f 1304 bfc r3, #4, #1 + 800d4ba: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d4be: 2301 movs r3, #1 + 800d4c0: f884 3482 strb.w r3, [r4, #1154] ; 0x482 + 800d4c4: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d4c8: f043 0320 orr.w r3, r3, #32 + 800d4cc: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d4d0: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d4d4: 0718 lsls r0, r3, #28 + 800d4d6: d50a bpl.n 800d4ee <LoRaMacProcess+0x2be> + 800d4d8: f36f 03c3 bfc r3, #3, #1 + 800d4dc: 4923 ldr r1, [pc, #140] ; (800d56c <LoRaMacProcess+0x33c>) + 800d4de: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d4e2: f8d4 3344 ldr.w r3, [r4, #836] ; 0x344 + 800d4e6: f1a1 0020 sub.w r0, r1, #32 + 800d4ea: 68db ldr r3, [r3, #12] + 800d4ec: 4798 blx r3 + 800d4ee: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d4f2: 0799 lsls r1, r3, #30 + 800d4f4: d50a bpl.n 800d50c <LoRaMacProcess+0x2dc> + 800d4f6: f36f 0341 bfc r3, #1, #1 + 800d4fa: 491c ldr r1, [pc, #112] ; (800d56c <LoRaMacProcess+0x33c>) + 800d4fc: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d500: f8d4 3344 ldr.w r3, [r4, #836] ; 0x344 + 800d504: f1a1 0064 sub.w r0, r1, #100 ; 0x64 + 800d508: 685b ldr r3, [r3, #4] + 800d50a: 4798 blx r3 + 800d50c: f894 3480 ldrb.w r3, [r4, #1152] ; 0x480 + 800d510: 2b02 cmp r3, #2 + 800d512: d101 bne.n 800d518 <LoRaMacProcess+0x2e8> + 800d514: f7ff f946 bl 800c7a4 <OpenContinuousRxCWindow> + 800d518: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d51c: 069a lsls r2, r3, #26 + 800d51e: f140 82ec bpl.w 800dafa <LoRaMacProcess+0x8ca> + 800d522: f36f 1345 bfc r3, #5, #1 + 800d526: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d52a: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d52e: 2b00 cmp r3, #0 + 800d530: f040 82e3 bne.w 800dafa <LoRaMacProcess+0x8ca> + 800d534: b025 add sp, #148 ; 0x94 + 800d536: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800d53a: f7ff bad3 b.w 800cae4 <LoRaMacHandleNvm.part.0.constprop.0> + 800d53e: bf00 nop + 800d540: 20001fd8 .word 0x20001fd8 + 800d544: 20001fdc .word 0x20001fdc + 800d548: 20001868 .word 0x20001868 + 800d54c: 080159b0 .word 0x080159b0 + 800d550: 200024f4 .word 0x200024f4 + 800d554: 2000235c .word 0x2000235c + 800d558: 20002374 .word 0x20002374 + 800d55c: 200023d0 .word 0x200023d0 + 800d560: 200024e4 .word 0x200024e4 + 800d564: 20002410 .word 0x20002410 + 800d568: 20002424 .word 0x20002424 + 800d56c: 20002458 .word 0x20002458 + 800d570: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800d574: 2b01 cmp r3, #1 + 800d576: d10c bne.n 800d592 <LoRaMacProcess+0x362> + 800d578: f001 fbf3 bl 800ed62 <LoRaMacClassBIsPingExpected> + 800d57c: 4680 mov r8, r0 + 800d57e: b168 cbz r0, 800d59c <LoRaMacProcess+0x36c> + 800d580: 4650 mov r0, sl + 800d582: f001 fbe3 bl 800ed4c <LoRaMacClassBSetPingSlotState> + 800d586: 4650 mov r0, sl + 800d588: f001 fbe5 bl 800ed56 <LoRaMacClassBPingSlotTimerEvent> + 800d58c: 2304 movs r3, #4 + 800d58e: f884 347f strb.w r3, [r4, #1151] ; 0x47f + 800d592: b97e cbnz r6, 800d5b4 <LoRaMacProcess+0x384> + 800d594: 2301 movs r3, #1 + 800d596: f884 3419 strb.w r3, [r4, #1049] ; 0x419 + 800d59a: e14a b.n 800d832 <LoRaMacProcess+0x602> + 800d59c: f001 fbe3 bl 800ed66 <LoRaMacClassBIsMulticastExpected> + 800d5a0: 2800 cmp r0, #0 + 800d5a2: d0f6 beq.n 800d592 <LoRaMacProcess+0x362> + 800d5a4: 4640 mov r0, r8 + 800d5a6: f001 fbd2 bl 800ed4e <LoRaMacClassBSetMulticastSlotState> + 800d5aa: 4640 mov r0, r8 + 800d5ac: f001 fbd4 bl 800ed58 <LoRaMacClassBMulticastSlotTimerEvent> + 800d5b0: 2305 movs r3, #5 + 800d5b2: e7ec b.n 800d58e <LoRaMacProcess+0x35e> + 800d5b4: 783b ldrb r3, [r7, #0] + 800d5b6: 9302 str r3, [sp, #8] + 800d5b8: 095b lsrs r3, r3, #5 + 800d5ba: 3b01 subs r3, #1 + 800d5bc: 2b06 cmp r3, #6 + 800d5be: f200 81ed bhi.w 800d99c <LoRaMacProcess+0x76c> + 800d5c2: e8df f013 tbh [pc, r3, lsl #1] + 800d5c6: 0007 .short 0x0007 + 800d5c8: 009201eb .word 0x009201eb + 800d5cc: 008f01eb .word 0x008f01eb + 800d5d0: 01db01eb .word 0x01db01eb + 800d5d4: 2e10 cmp r6, #16 + 800d5d6: d9dd bls.n 800d594 <LoRaMacProcess+0x364> + 800d5d8: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800d5dc: 970e str r7, [sp, #56] ; 0x38 + 800d5de: b2f6 uxtb r6, r6 + 800d5e0: f88d 603c strb.w r6, [sp, #60] ; 0x3c + 800d5e4: 2b00 cmp r3, #0 + 800d5e6: d1d5 bne.n 800d594 <LoRaMacProcess+0x364> + 800d5e8: a818 add r0, sp, #96 ; 0x60 + 800d5ea: f004 f8f9 bl 80117e0 <SecureElementGetJoinEui> + 800d5ee: aa0e add r2, sp, #56 ; 0x38 + 800d5f0: a918 add r1, sp, #96 ; 0x60 + 800d5f2: 20ff movs r0, #255 ; 0xff + 800d5f4: f002 f84c bl 800f690 <LoRaMacCryptoHandleJoinAccept> + 800d5f8: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 + 800d5fc: f3c3 0303 ubfx r3, r3, #0, #4 + 800d600: 4607 mov r7, r0 + 800d602: f88d 3020 strb.w r3, [sp, #32] + 800d606: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d60a: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800d60e: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 800d612: 2207 movs r2, #7 + 800d614: a908 add r1, sp, #32 + 800d616: f002 fa3e bl 800fa96 <RegionVerify> + 800d61a: 2f00 cmp r7, #0 + 800d61c: d15a bne.n 800d6d4 <LoRaMacProcess+0x4a4> + 800d61e: 2800 cmp r0, #0 + 800d620: d058 beq.n 800d6d4 <LoRaMacProcess+0x4a4> + 800d622: f89d 3043 ldrb.w r3, [sp, #67] ; 0x43 + 800d626: f89d 2042 ldrb.w r2, [sp, #66] ; 0x42 + 800d62a: 9911 ldr r1, [sp, #68] ; 0x44 + 800d62c: f8c5 10e4 str.w r1, [r5, #228] ; 0xe4 + 800d630: 041b lsls r3, r3, #16 + 800d632: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800d636: f89d 2041 ldrb.w r2, [sp, #65] ; 0x41 + 800d63a: 2002 movs r0, #2 + 800d63c: 4313 orrs r3, r2 + 800d63e: f8c5 30e0 str.w r3, [r5, #224] ; 0xe0 + 800d642: f004 f8db bl 80117fc <SecureElementSetDevAddr> + 800d646: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 + 800d64a: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d64e: f885 712a strb.w r7, [r5, #298] ; 0x12a + 800d652: f3c3 1202 ubfx r2, r3, #4, #3 + 800d656: f3c3 0303 ubfx r3, r3, #0, #4 + 800d65a: f885 3070 strb.w r3, [r5, #112] ; 0x70 + 800d65e: f885 3078 strb.w r3, [r5, #120] ; 0x78 + 800d662: f89d 3049 ldrb.w r3, [sp, #73] ; 0x49 + 800d666: f885 2069 strb.w r2, [r5, #105] ; 0x69 + 800d66a: 2b01 cmp r3, #1 + 800d66c: bf38 it cc + 800d66e: 2301 movcc r3, #1 + 800d670: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800d674: 4353 muls r3, r2 + 800d676: 65ab str r3, [r5, #88] ; 0x58 + 800d678: 4413 add r3, r2 + 800d67a: 65eb str r3, [r5, #92] ; 0x5c + 800d67c: f04f 0801 mov.w r8, #1 + 800d680: f10d 034a add.w r3, sp, #74 ; 0x4a + 800d684: 3e11 subs r6, #17 + 800d686: a90c add r1, sp, #48 ; 0x30 + 800d688: 930c str r3, [sp, #48] ; 0x30 + 800d68a: f885 8068 strb.w r8, [r5, #104] ; 0x68 + 800d68e: f88d 6034 strb.w r6, [sp, #52] ; 0x34 + 800d692: f002 fa08 bl 800faa6 <RegionApplyCFList> + 800d696: 2302 movs r3, #2 + 800d698: 4640 mov r0, r8 + 800d69a: f885 312c strb.w r3, [r5, #300] ; 0x12c + 800d69e: f001 fd1f bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800d6a2: b118 cbz r0, 800d6ac <LoRaMacProcess+0x47c> + 800d6a4: 4641 mov r1, r8 + 800d6a6: 4638 mov r0, r7 + 800d6a8: f001 fcde bl 800f068 <LoRaMacConfirmQueueSetStatus> + 800d6ac: f894 3410 ldrb.w r3, [r4, #1040] ; 0x410 + 800d6b0: 2b00 cmp r3, #0 + 800d6b2: f000 8179 beq.w 800d9a8 <LoRaMacProcess+0x778> + 800d6b6: f894 3438 ldrb.w r3, [r4, #1080] ; 0x438 + 800d6ba: b113 cbz r3, 800d6c2 <LoRaMacProcess+0x492> + 800d6bc: 2000 movs r0, #0 + 800d6be: f7fe fde9 bl 800c294 <OnAckTimeoutTimerEvent> + 800d6c2: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d6c6: f043 0310 orr.w r3, r3, #16 + 800d6ca: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d6ce: f7fe fda7 bl 800c220 <UpdateRxSlotIdleState> + 800d6d2: e66b b.n 800d3ac <LoRaMacProcess+0x17c> + 800d6d4: 2001 movs r0, #1 + 800d6d6: f001 fd03 bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800d6da: 2800 cmp r0, #0 + 800d6dc: d0e6 beq.n 800d6ac <LoRaMacProcess+0x47c> + 800d6de: 2101 movs r1, #1 + 800d6e0: 2007 movs r0, #7 + 800d6e2: e7e1 b.n 800d6a8 <LoRaMacProcess+0x478> + 800d6e4: 2301 movs r3, #1 + 800d6e6: f884 3418 strb.w r3, [r4, #1048] ; 0x418 + 800d6ea: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800d6ee: f88d 3022 strb.w r3, [sp, #34] ; 0x22 + 800d6f2: f894 341c ldrb.w r3, [r4, #1052] ; 0x41c + 800d6f6: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 800d6fa: f895 308c ldrb.w r3, [r5, #140] ; 0x8c + 800d6fe: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d702: 330d adds r3, #13 + 800d704: a908 add r1, sp, #32 + 800d706: f88d 3020 strb.w r3, [sp, #32] + 800d70a: f002 f9b1 bl 800fa70 <RegionGetPhyParam> + 800d70e: f1a6 030d sub.w r3, r6, #13 + 800d712: b21b sxth r3, r3 + 800d714: 9006 str r0, [sp, #24] + 800d716: ea23 73e3 bic.w r3, r3, r3, asr #31 + 800d71a: b200 sxth r0, r0 + 800d71c: 4283 cmp r3, r0 + 800d71e: f73f af39 bgt.w 800d594 <LoRaMacProcess+0x364> + 800d722: 2e0b cmp r6, #11 + 800d724: f67f af36 bls.w 800d594 <LoRaMacProcess+0x364> + 800d728: 4ba2 ldr r3, [pc, #648] ; (800d9b4 <LoRaMacProcess+0x784>) + 800d72a: 9321 str r3, [sp, #132] ; 0x84 + 800d72c: a818 add r0, sp, #96 ; 0x60 + 800d72e: 23ff movs r3, #255 ; 0xff + 800d730: 9718 str r7, [sp, #96] ; 0x60 + 800d732: f88d 6064 strb.w r6, [sp, #100] ; 0x64 + 800d736: f88d 3088 strb.w r3, [sp, #136] ; 0x88 + 800d73a: f002 f875 bl 800f828 <LoRaMacParserData> + 800d73e: 4680 mov r8, r0 + 800d740: 2800 cmp r0, #0 + 800d742: f47f af27 bne.w 800d594 <LoRaMacProcess+0x364> + 800d746: f89d 306c ldrb.w r3, [sp, #108] ; 0x6c + 800d74a: 991a ldr r1, [sp, #104] ; 0x68 + 800d74c: f8c4 142c str.w r1, [r4, #1068] ; 0x42c + 800d750: f013 020f ands.w r2, r3, #15 + 800d754: d003 beq.n 800d75e <LoRaMacProcess+0x52e> + 800d756: f89d 0080 ldrb.w r0, [sp, #128] ; 0x80 + 800d75a: 2800 cmp r0, #0 + 800d75c: d16c bne.n 800d838 <LoRaMacProcess+0x608> + 800d75e: f89d 0088 ldrb.w r0, [sp, #136] ; 0x88 + 800d762: 2800 cmp r0, #0 + 800d764: d06a beq.n 800d83c <LoRaMacProcess+0x60c> + 800d766: 2a00 cmp r2, #0 + 800d768: f47f af14 bne.w 800d594 <LoRaMacProcess+0x364> + 800d76c: f89d 2080 ldrb.w r2, [sp, #128] ; 0x80 + 800d770: 2a00 cmp r2, #0 + 800d772: bf0c ite eq + 800d774: 2702 moveq r7, #2 + 800d776: 2703 movne r7, #3 + 800d778: 2200 movs r2, #0 + 800d77a: 9207 str r2, [sp, #28] + 800d77c: f8d5 20ec ldr.w r2, [r5, #236] ; 0xec + 800d780: 4291 cmp r1, r2 + 800d782: d15d bne.n 800d840 <LoRaMacProcess+0x610> + 800d784: f895 10e9 ldrb.w r1, [r5, #233] ; 0xe9 + 800d788: 2900 cmp r1, #0 + 800d78a: d059 beq.n 800d840 <LoRaMacProcess+0x610> + 800d78c: f8d5 110c ldr.w r1, [r5, #268] ; 0x10c + 800d790: f895 a0ea ldrb.w sl, [r5, #234] ; 0xea + 800d794: 6809 ldr r1, [r1, #0] + 800d796: 9107 str r1, [sp, #28] + 800d798: f895 1118 ldrb.w r1, [r5, #280] ; 0x118 + 800d79c: 2902 cmp r1, #2 + 800d79e: d102 bne.n 800d7a6 <LoRaMacProcess+0x576> + 800d7a0: 2103 movs r1, #3 + 800d7a2: f884 147f strb.w r1, [r4, #1151] ; 0x47f + 800d7a6: 2f03 cmp r7, #3 + 800d7a8: f47f aef4 bne.w 800d594 <LoRaMacProcess+0x364> + 800d7ac: f013 0f60 tst.w r3, #96 ; 0x60 + 800d7b0: f47f aef0 bne.w 800d594 <LoRaMacProcess+0x364> + 800d7b4: 9203 str r2, [sp, #12] + 800d7b6: f04f 0801 mov.w r8, #1 + 800d7ba: 2315 movs r3, #21 + 800d7bc: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800d7c0: f88d 3020 strb.w r3, [sp, #32] + 800d7c4: a908 add r1, sp, #32 + 800d7c6: f002 f953 bl 800fa70 <RegionGetPhyParam> + 800d7ca: f895 312a ldrb.w r3, [r5, #298] ; 0x12a + 800d7ce: 9006 str r0, [sp, #24] + 800d7d0: f1ba 0f00 cmp.w sl, #0 + 800d7d4: d037 beq.n 800d846 <LoRaMacProcess+0x616> + 800d7d6: f1ba 0f01 cmp.w sl, #1 + 800d7da: d13e bne.n 800d85a <LoRaMacProcess+0x62a> + 800d7dc: 2b01 cmp r3, #1 + 800d7de: d134 bne.n 800d84a <LoRaMacProcess+0x61a> + 800d7e0: f06f 0609 mvn.w r6, #9 + 800d7e4: 413e asrs r6, r7 + 800d7e6: f006 0601 and.w r6, r6, #1 + 800d7ea: f1c6 0602 rsb r6, r6, #2 + 800d7ee: b2f6 uxtb r6, r6 + 800d7f0: b281 uxth r1, r0 + 800d7f2: f8bd 206e ldrh.w r2, [sp, #110] ; 0x6e + 800d7f6: ab07 add r3, sp, #28 + 800d7f8: 4630 mov r0, r6 + 800d7fa: f001 fdcf bl 800f39c <LoRaMacCryptoGetFCntDown> + 800d7fe: b370 cbz r0, 800d85e <LoRaMacProcess+0x62e> + 800d800: 2807 cmp r0, #7 + 800d802: d124 bne.n 800d84e <LoRaMacProcess+0x61e> + 800d804: 2308 movs r3, #8 + 800d806: f884 3419 strb.w r3, [r4, #1049] ; 0x419 + 800d80a: f895 312a ldrb.w r3, [r5, #298] ; 0x12a + 800d80e: b95b cbnz r3, 800d828 <LoRaMacProcess+0x5f8> + 800d810: 9b02 ldr r3, [sp, #8] + 800d812: f003 03e0 and.w r3, r3, #224 ; 0xe0 + 800d816: 2ba0 cmp r3, #160 ; 0xa0 + 800d818: d106 bne.n 800d828 <LoRaMacProcess+0x5f8> + 800d81a: 6b6a ldr r2, [r5, #52] ; 0x34 + 800d81c: 9b23 ldr r3, [sp, #140] ; 0x8c + 800d81e: 429a cmp r2, r3 + 800d820: d102 bne.n 800d828 <LoRaMacProcess+0x5f8> + 800d822: 2301 movs r3, #1 + 800d824: f885 303a strb.w r3, [r5, #58] ; 0x3a + 800d828: 9b07 ldr r3, [sp, #28] + 800d82a: f8c4 3428 str.w r3, [r4, #1064] ; 0x428 + 800d82e: f8c4 3460 str.w r3, [r4, #1120] ; 0x460 + 800d832: f7fe fd4f bl 800c2d4 <PrepareRxDoneAbort> + 800d836: e5b9 b.n 800d3ac <LoRaMacProcess+0x17c> + 800d838: 4647 mov r7, r8 + 800d83a: e79d b.n 800d778 <LoRaMacProcess+0x548> + 800d83c: 2701 movs r7, #1 + 800d83e: e79b b.n 800d778 <LoRaMacProcess+0x548> + 800d840: f04f 0a01 mov.w sl, #1 + 800d844: e7b9 b.n 800d7ba <LoRaMacProcess+0x58a> + 800d846: 2604 movs r6, #4 + 800d848: e7d2 b.n 800d7f0 <LoRaMacProcess+0x5c0> + 800d84a: 2603 movs r6, #3 + 800d84c: e7d0 b.n 800d7f0 <LoRaMacProcess+0x5c0> + 800d84e: 2808 cmp r0, #8 + 800d850: d103 bne.n 800d85a <LoRaMacProcess+0x62a> + 800d852: 230a movs r3, #10 + 800d854: f884 3419 strb.w r3, [r4, #1049] ; 0x419 + 800d858: e7e6 b.n 800d828 <LoRaMacProcess+0x5f8> + 800d85a: 2301 movs r3, #1 + 800d85c: e7fa b.n 800d854 <LoRaMacProcess+0x624> + 800d85e: ab18 add r3, sp, #96 ; 0x60 + 800d860: 9300 str r3, [sp, #0] + 800d862: 9903 ldr r1, [sp, #12] + 800d864: 9b07 ldr r3, [sp, #28] + 800d866: 4632 mov r2, r6 + 800d868: 4650 mov r0, sl + 800d86a: f001 fe63 bl 800f534 <LoRaMacCryptoUnsecureMessage> + 800d86e: b120 cbz r0, 800d87a <LoRaMacProcess+0x64a> + 800d870: 2802 cmp r0, #2 + 800d872: bf0c ite eq + 800d874: 230b moveq r3, #11 + 800d876: 230c movne r3, #12 + 800d878: e68d b.n 800d596 <LoRaMacProcess+0x366> + 800d87a: 9b07 ldr r3, [sp, #28] + 800d87c: f8c4 3428 str.w r3, [r4, #1064] ; 0x428 + 800d880: f8c4 3460 str.w r3, [r4, #1120] ; 0x460 + 800d884: f89d 306c ldrb.w r3, [sp, #108] ; 0x6c + 800d888: f884 0419 strb.w r0, [r4, #1049] ; 0x419 + 800d88c: f3c3 1340 ubfx r3, r3, #5, #1 + 800d890: f884 3426 strb.w r3, [r4, #1062] ; 0x426 + 800d894: f884 3438 strb.w r3, [r4, #1080] ; 0x438 + 800d898: f894 347f ldrb.w r3, [r4, #1151] ; 0x47f + 800d89c: f884 841a strb.w r8, [r4, #1050] ; 0x41a + 800d8a0: 2b01 cmp r3, #1 + 800d8a2: bf98 it ls + 800d8a4: 62a8 strls r0, [r5, #40] ; 0x28 + 800d8a6: f1b8 0f01 cmp.w r8, #1 + 800d8aa: f8c4 0420 str.w r0, [r4, #1056] ; 0x420 + 800d8ae: f884 0424 strb.w r0, [r4, #1060] ; 0x424 + 800d8b2: f884 0435 strb.w r0, [r4, #1077] ; 0x435 + 800d8b6: d133 bne.n 800d920 <LoRaMacProcess+0x6f0> + 800d8b8: 2202 movs r2, #2 + 800d8ba: f884 2418 strb.w r2, [r4, #1048] ; 0x418 + 800d8be: f895 203a ldrb.w r2, [r5, #58] ; 0x3a + 800d8c2: 2a00 cmp r2, #0 + 800d8c4: d13b bne.n 800d93e <LoRaMacProcess+0x70e> + 800d8c6: f89d 206c ldrb.w r2, [sp, #108] ; 0x6c + 800d8ca: 06d2 lsls r2, r2, #27 + 800d8cc: d437 bmi.n 800d93e <LoRaMacProcess+0x70e> + 800d8ce: 2b01 cmp r3, #1 + 800d8d0: f894 1434 ldrb.w r1, [r4, #1076] ; 0x434 + 800d8d4: f89d 206c ldrb.w r2, [sp, #108] ; 0x6c + 800d8d8: d805 bhi.n 800d8e6 <LoRaMacProcess+0x6b6> + 800d8da: 2901 cmp r1, #1 + 800d8dc: d101 bne.n 800d8e2 <LoRaMacProcess+0x6b2> + 800d8de: 0696 lsls r6, r2, #26 + 800d8e0: d501 bpl.n 800d8e6 <LoRaMacProcess+0x6b6> + 800d8e2: f001 fb01 bl 800eee8 <LoRaMacCommandsRemoveStickyAnsCmds> + 800d8e6: 2f02 cmp r7, #2 + 800d8e8: d037 beq.n 800d95a <LoRaMacProcess+0x72a> + 800d8ea: 2f03 cmp r7, #3 + 800d8ec: d009 beq.n 800d902 <LoRaMacProcess+0x6d2> + 800d8ee: f89d 106c ldrb.w r1, [sp, #108] ; 0x6c + 800d8f2: 2f01 cmp r7, #1 + 800d8f4: 464a mov r2, r9 + 800d8f6: f001 010f and.w r1, r1, #15 + 800d8fa: a81c add r0, sp, #112 ; 0x70 + 800d8fc: d031 beq.n 800d962 <LoRaMacProcess+0x732> + 800d8fe: f7ff f96b bl 800cbd8 <ProcessMacCommands.constprop.0> + 800d902: f89d 3080 ldrb.w r3, [sp, #128] ; 0x80 + 800d906: f884 341b strb.w r3, [r4, #1051] ; 0x41b + 800d90a: 9b21 ldr r3, [sp, #132] ; 0x84 + 800d90c: f8c4 3420 str.w r3, [r4, #1056] ; 0x420 + 800d910: f89d 3088 ldrb.w r3, [sp, #136] ; 0x88 + 800d914: f884 3424 strb.w r3, [r4, #1060] ; 0x424 + 800d918: 2301 movs r3, #1 + 800d91a: f884 3425 strb.w r3, [r4, #1061] ; 0x425 + 800d91e: e026 b.n 800d96e <LoRaMacProcess+0x73e> + 800d920: 9a02 ldr r2, [sp, #8] + 800d922: f002 02e0 and.w r2, r2, #224 ; 0xe0 + 800d926: 2aa0 cmp r2, #160 ; 0xa0 + 800d928: d111 bne.n 800d94e <LoRaMacProcess+0x71e> + 800d92a: f895 112a ldrb.w r1, [r5, #298] ; 0x12a + 800d92e: 2201 movs r2, #1 + 800d930: f885 203a strb.w r2, [r5, #58] ; 0x3a + 800d934: b909 cbnz r1, 800d93a <LoRaMacProcess+0x70a> + 800d936: 9923 ldr r1, [sp, #140] ; 0x8c + 800d938: 6369 str r1, [r5, #52] ; 0x34 + 800d93a: f884 2418 strb.w r2, [r4, #1048] ; 0x418 + 800d93e: f895 2118 ldrb.w r2, [r5, #280] ; 0x118 + 800d942: 2a00 cmp r2, #0 + 800d944: d1c3 bne.n 800d8ce <LoRaMacProcess+0x69e> + 800d946: 2201 movs r2, #1 + 800d948: f884 241d strb.w r2, [r4, #1053] ; 0x41d + 800d94c: e7bf b.n 800d8ce <LoRaMacProcess+0x69e> + 800d94e: 2200 movs r2, #0 + 800d950: f885 203a strb.w r2, [r5, #58] ; 0x3a + 800d954: f884 2418 strb.w r2, [r4, #1048] ; 0x418 + 800d958: e7b5 b.n 800d8c6 <LoRaMacProcess+0x696> + 800d95a: f89d 1088 ldrb.w r1, [sp, #136] ; 0x88 + 800d95e: 9821 ldr r0, [sp, #132] ; 0x84 + 800d960: 464a mov r2, r9 + 800d962: f7ff f939 bl 800cbd8 <ProcessMacCommands.constprop.0> + 800d966: f89d 3080 ldrb.w r3, [sp, #128] ; 0x80 + 800d96a: f884 341b strb.w r3, [r4, #1051] ; 0x41b + 800d96e: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d972: f043 0302 orr.w r3, r3, #2 + 800d976: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800d97a: e697 b.n 800d6ac <LoRaMacProcess+0x47c> + 800d97c: f8df 8034 ldr.w r8, [pc, #52] ; 800d9b4 <LoRaMacProcess+0x784> + 800d980: 3e01 subs r6, #1 + 800d982: b2b2 uxth r2, r6 + 800d984: 1c79 adds r1, r7, #1 + 800d986: 4640 mov r0, r8 + 800d988: f004 f800 bl 801198c <memcpy1> + 800d98c: 2303 movs r3, #3 + 800d98e: f8a4 3418 strh.w r3, [r4, #1048] ; 0x418 + 800d992: f8c4 8420 str.w r8, [r4, #1056] ; 0x420 + 800d996: f884 6424 strb.w r6, [r4, #1060] ; 0x424 + 800d99a: e7e8 b.n 800d96e <LoRaMacProcess+0x73e> + 800d99c: 2301 movs r3, #1 + 800d99e: f884 3419 strb.w r3, [r4, #1049] ; 0x419 + 800d9a2: f7fe fc97 bl 800c2d4 <PrepareRxDoneAbort> + 800d9a6: e681 b.n 800d6ac <LoRaMacProcess+0x47c> + 800d9a8: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800d9ac: 2b02 cmp r3, #2 + 800d9ae: f47f ae88 bne.w 800d6c2 <LoRaMacProcess+0x492> + 800d9b2: e683 b.n 800d6bc <LoRaMacProcess+0x48c> + 800d9b4: 20002214 .word 0x20002214 + 800d9b8: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800d9bc: 075d lsls r5, r3, #29 + 800d9be: d50f bpl.n 800d9e0 <LoRaMacProcess+0x7b0> + 800d9c0: 2001 movs r0, #1 + 800d9c2: f001 fb8d bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800d9c6: b388 cbz r0, 800da2c <LoRaMacProcess+0x7fc> + 800d9c8: 2001 movs r0, #1 + 800d9ca: f001 fb5f bl 800f08c <LoRaMacConfirmQueueGetStatus> + 800d9ce: b908 cbnz r0, 800d9d4 <LoRaMacProcess+0x7a4> + 800d9d0: f884 040c strb.w r0, [r4, #1036] ; 0x40c + 800d9d4: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800d9d8: f023 0302 bic.w r3, r3, #2 + 800d9dc: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800d9e0: f894 1481 ldrb.w r1, [r4, #1153] ; 0x481 + 800d9e4: 07c8 lsls r0, r1, #31 + 800d9e6: f57f ad36 bpl.w 800d456 <LoRaMacProcess+0x226> + 800d9ea: f894 3434 ldrb.w r3, [r4, #1076] ; 0x434 + 800d9ee: b10b cbz r3, 800d9f4 <LoRaMacProcess+0x7c4> + 800d9f0: 2b03 cmp r3, #3 + 800d9f2: d126 bne.n 800da42 <LoRaMacProcess+0x812> + 800d9f4: 4b42 ldr r3, [pc, #264] ; (800db00 <LoRaMacProcess+0x8d0>) + 800d9f6: f894 040c ldrb.w r0, [r4, #1036] ; 0x40c + 800d9fa: f893 2068 ldrb.w r2, [r3, #104] ; 0x68 + 800d9fe: 4290 cmp r0, r2 + 800da00: d208 bcs.n 800da14 <LoRaMacProcess+0x7e4> + 800da02: 078a lsls r2, r1, #30 + 800da04: d550 bpl.n 800daa8 <LoRaMacProcess+0x878> + 800da06: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800da0a: b11b cbz r3, 800da14 <LoRaMacProcess+0x7e4> + 800da0c: f894 347f ldrb.w r3, [r4, #1151] ; 0x47f + 800da10: 2b00 cmp r3, #0 + 800da12: d149 bne.n 800daa8 <LoRaMacProcess+0x878> + 800da14: 483b ldr r0, [pc, #236] ; (800db04 <LoRaMacProcess+0x8d4>) + 800da16: f006 fadd bl 8013fd4 <UTIL_TIMER_Stop> + 800da1a: f8d4 3340 ldr.w r3, [r4, #832] ; 0x340 + 800da1e: f023 0320 bic.w r3, r3, #32 + 800da22: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800da26: f7ff fb9b bl 800d160 <StopRetransmission.isra.0> + 800da2a: e514 b.n 800d456 <LoRaMacProcess+0x226> + 800da2c: 2006 movs r0, #6 + 800da2e: f001 fb57 bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800da32: 2800 cmp r0, #0 + 800da34: d1ce bne.n 800d9d4 <LoRaMacProcess+0x7a4> + 800da36: 2007 movs r0, #7 + 800da38: f001 fb52 bl 800f0e0 <LoRaMacConfirmQueueIsCmdActive> + 800da3c: 2800 cmp r0, #0 + 800da3e: d1c9 bne.n 800d9d4 <LoRaMacProcess+0x7a4> + 800da40: e7ce b.n 800d9e0 <LoRaMacProcess+0x7b0> + 800da42: 2b01 cmp r3, #1 + 800da44: d130 bne.n 800daa8 <LoRaMacProcess+0x878> + 800da46: f894 240f ldrb.w r2, [r4, #1039] ; 0x40f + 800da4a: 2a00 cmp r2, #0 + 800da4c: f43f ad03 beq.w 800d456 <LoRaMacProcess+0x226> + 800da50: f894 340e ldrb.w r3, [r4, #1038] ; 0x40e + 800da54: f894 040d ldrb.w r0, [r4, #1037] ; 0x40d + 800da58: 4283 cmp r3, r0 + 800da5a: d204 bcs.n 800da66 <LoRaMacProcess+0x836> + 800da5c: f011 0202 ands.w r2, r1, #2 + 800da60: bf18 it ne + 800da62: f894 2438 ldrbne.w r2, [r4, #1080] ; 0x438 + 800da66: 4d26 ldr r5, [pc, #152] ; (800db00 <LoRaMacProcess+0x8d0>) + 800da68: f895 112a ldrb.w r1, [r5, #298] ; 0x12a + 800da6c: 2900 cmp r1, #0 + 800da6e: d141 bne.n 800daf4 <LoRaMacProcess+0x8c4> + 800da70: bb32 cbnz r2, 800dac0 <LoRaMacProcess+0x890> + 800da72: 4283 cmp r3, r0 + 800da74: d218 bcs.n 800daa8 <LoRaMacProcess+0x878> + 800da76: 3301 adds r3, #1 + 800da78: b2db uxtb r3, r3 + 800da7a: 07df lsls r7, r3, #31 + 800da7c: f884 340e strb.w r3, [r4, #1038] ; 0x40e + 800da80: d512 bpl.n 800daa8 <LoRaMacProcess+0x878> + 800da82: 2322 movs r3, #34 ; 0x22 + 800da84: f88d 3060 strb.w r3, [sp, #96] ; 0x60 + 800da88: f895 307c ldrb.w r3, [r5, #124] ; 0x7c + 800da8c: f88d 3062 strb.w r3, [sp, #98] ; 0x62 + 800da90: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800da94: f895 3039 ldrb.w r3, [r5, #57] ; 0x39 + 800da98: f88d 3061 strb.w r3, [sp, #97] ; 0x61 + 800da9c: a918 add r1, sp, #96 ; 0x60 + 800da9e: f001 ffe7 bl 800fa70 <RegionGetPhyParam> + 800daa2: 900e str r0, [sp, #56] ; 0x38 + 800daa4: f885 0039 strb.w r0, [r5, #57] ; 0x39 + 800daa8: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800daac: 2000 movs r0, #0 + 800daae: f36f 1304 bfc r3, #4, #1 + 800dab2: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800dab6: f884 040f strb.w r0, [r4, #1039] ; 0x40f + 800daba: f7ff fb73 bl 800d1a4 <OnTxDelayedTimerEvent> + 800dabe: e4ca b.n 800d456 <LoRaMacProcess+0x226> + 800dac0: f894 6438 ldrb.w r6, [r4, #1080] ; 0x438 + 800dac4: b98e cbnz r6, 800daea <LoRaMacProcess+0x8ba> + 800dac6: 2302 movs r3, #2 + 800dac8: f88d 3068 strb.w r3, [sp, #104] ; 0x68 + 800dacc: f505 7308 add.w r3, r5, #544 ; 0x220 + 800dad0: 9318 str r3, [sp, #96] ; 0x60 + 800dad2: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800dad6: f505 732d add.w r3, r5, #692 ; 0x2b4 + 800dada: a918 add r1, sp, #96 ; 0x60 + 800dadc: 9319 str r3, [sp, #100] ; 0x64 + 800dade: f001 ffd5 bl 800fa8c <RegionInitDefaults> + 800dae2: f884 6410 strb.w r6, [r4, #1040] ; 0x410 + 800dae6: f884 6438 strb.w r6, [r4, #1080] ; 0x438 + 800daea: f894 340e ldrb.w r3, [r4, #1038] ; 0x40e + 800daee: f884 3439 strb.w r3, [r4, #1081] ; 0x439 + 800daf2: e78f b.n 800da14 <LoRaMacProcess+0x7e4> + 800daf4: 2a00 cmp r2, #0 + 800daf6: d0d7 beq.n 800daa8 <LoRaMacProcess+0x878> + 800daf8: e78c b.n 800da14 <LoRaMacProcess+0x7e4> + 800dafa: b025 add sp, #148 ; 0x94 + 800dafc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800db00: 20001868 .word 0x20001868 + 800db04: 20002344 .word 0x20002344 + +0800db08 <LoRaMacInitialization>: + 800db08: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800db0c: 468a mov sl, r1 + 800db0e: b08b sub sp, #44 ; 0x2c + 800db10: 4691 mov r9, r2 + 800db12: 4607 mov r7, r0 + 800db14: 2800 cmp r0, #0 + 800db16: f000 818d beq.w 800de34 <LoRaMacInitialization+0x32c> + 800db1a: 2900 cmp r1, #0 + 800db1c: f000 818a beq.w 800de34 <LoRaMacInitialization+0x32c> + 800db20: 6803 ldr r3, [r0, #0] + 800db22: 2b00 cmp r3, #0 + 800db24: f000 8186 beq.w 800de34 <LoRaMacInitialization+0x32c> + 800db28: 6843 ldr r3, [r0, #4] + 800db2a: 2b00 cmp r3, #0 + 800db2c: f000 8182 beq.w 800de34 <LoRaMacInitialization+0x32c> + 800db30: 6883 ldr r3, [r0, #8] + 800db32: 2b00 cmp r3, #0 + 800db34: f000 817e beq.w 800de34 <LoRaMacInitialization+0x32c> + 800db38: 68c3 ldr r3, [r0, #12] + 800db3a: 2b00 cmp r3, #0 + 800db3c: f000 817a beq.w 800de34 <LoRaMacInitialization+0x32c> + 800db40: 4610 mov r0, r2 + 800db42: f001 ff91 bl 800fa68 <RegionIsActive> + 800db46: 2800 cmp r0, #0 + 800db48: f000 8176 beq.w 800de38 <LoRaMacInitialization+0x330> + 800db4c: 4cbc ldr r4, [pc, #752] ; (800de40 <LoRaMacInitialization+0x338>) + 800db4e: 4dbd ldr r5, [pc, #756] ; (800de44 <LoRaMacInitialization+0x33c>) + 800db50: 4638 mov r0, r7 + 800db52: f001 fa3f bl 800efd4 <LoRaMacConfirmQueueInit> + 800db56: f44f 62ee mov.w r2, #1904 ; 0x770 + 800db5a: 2100 movs r1, #0 + 800db5c: 4620 mov r0, r4 + 800db5e: f003 ff29 bl 80119b4 <memset1> + 800db62: f44f 62a1 mov.w r2, #1288 ; 0x508 + 800db66: 2100 movs r1, #0 + 800db68: 4628 mov r0, r5 + 800db6a: f003 ff23 bl 80119b4 <memset1> + 800db6e: 4bb6 ldr r3, [pc, #728] ; (800de48 <LoRaMacInitialization+0x340>) + 800db70: f8c4 3128 str.w r3, [r4, #296] ; 0x128 + 800db74: 2600 movs r6, #0 + 800db76: f04f 0801 mov.w r8, #1 + 800db7a: 230f movs r3, #15 + 800db7c: a905 add r1, sp, #20 + 800db7e: 4648 mov r0, r9 + 800db80: f88d 3014 strb.w r3, [sp, #20] + 800db84: f884 9048 strb.w r9, [r4, #72] ; 0x48 + 800db88: f884 6118 strb.w r6, [r4, #280] ; 0x118 + 800db8c: f884 608c strb.w r6, [r4, #140] ; 0x8c + 800db90: f885 840e strb.w r8, [r5, #1038] ; 0x40e + 800db94: f885 840d strb.w r8, [r5, #1037] ; 0x40d + 800db98: f001 ff6a bl 800fa70 <RegionGetPhyParam> + 800db9c: 1b80 subs r0, r0, r6 + 800db9e: bf18 it ne + 800dba0: 2001 movne r0, #1 + 800dba2: f04f 0b0a mov.w fp, #10 + 800dba6: f884 011c strb.w r0, [r4, #284] ; 0x11c + 800dbaa: a905 add r1, sp, #20 + 800dbac: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dbb0: f88d b014 strb.w fp, [sp, #20] + 800dbb4: f001 ff5c bl 800fa70 <RegionGetPhyParam> + 800dbb8: f04f 0906 mov.w r9, #6 + 800dbbc: f884 00dc strb.w r0, [r4, #220] ; 0xdc + 800dbc0: a905 add r1, sp, #20 + 800dbc2: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dbc6: f88d 9014 strb.w r9, [sp, #20] + 800dbca: f001 ff51 bl 800fa70 <RegionGetPhyParam> + 800dbce: 2310 movs r3, #16 + 800dbd0: f884 00dd strb.w r0, [r4, #221] ; 0xdd + 800dbd4: a905 add r1, sp, #20 + 800dbd6: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dbda: f88d 3014 strb.w r3, [sp, #20] + 800dbde: f001 ff47 bl 800fa70 <RegionGetPhyParam> + 800dbe2: 2311 movs r3, #17 + 800dbe4: f8c4 009c str.w r0, [r4, #156] ; 0x9c + 800dbe8: a905 add r1, sp, #20 + 800dbea: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dbee: f88d 3014 strb.w r3, [sp, #20] + 800dbf2: f001 ff3d bl 800fa70 <RegionGetPhyParam> + 800dbf6: 2312 movs r3, #18 + 800dbf8: f8c4 00a0 str.w r0, [r4, #160] ; 0xa0 + 800dbfc: a905 add r1, sp, #20 + 800dbfe: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dc02: f88d 3014 strb.w r3, [sp, #20] + 800dc06: f001 ff33 bl 800fa70 <RegionGetPhyParam> + 800dc0a: 2313 movs r3, #19 + 800dc0c: f8c4 00a4 str.w r0, [r4, #164] ; 0xa4 + 800dc10: a905 add r1, sp, #20 + 800dc12: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dc16: f88d 3014 strb.w r3, [sp, #20] + 800dc1a: f001 ff29 bl 800fa70 <RegionGetPhyParam> + 800dc1e: 2314 movs r3, #20 + 800dc20: eb0d 0103 add.w r1, sp, r3 + 800dc24: f8c4 00a8 str.w r0, [r4, #168] ; 0xa8 + 800dc28: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dc2c: f88d 3014 strb.w r3, [sp, #20] + 800dc30: f001 ff1e bl 800fa70 <RegionGetPhyParam> + 800dc34: 2317 movs r3, #23 + 800dc36: f8c4 00ac str.w r0, [r4, #172] ; 0xac + 800dc3a: a905 add r1, sp, #20 + 800dc3c: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dc40: f88d 3014 strb.w r3, [sp, #20] + 800dc44: f001 ff14 bl 800fa70 <RegionGetPhyParam> + 800dc48: 2318 movs r3, #24 + 800dc4a: f884 00b1 strb.w r0, [r4, #177] ; 0xb1 + 800dc4e: a905 add r1, sp, #20 + 800dc50: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dc54: f88d 3014 strb.w r3, [sp, #20] + 800dc58: f001 ff0a bl 800fa70 <RegionGetPhyParam> + 800dc5c: 2319 movs r3, #25 + 800dc5e: f8c4 00b4 str.w r0, [r4, #180] ; 0xb4 + 800dc62: f8c4 00bc str.w r0, [r4, #188] ; 0xbc + 800dc66: a905 add r1, sp, #20 + 800dc68: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dc6c: f88d 3014 strb.w r3, [sp, #20] + 800dc70: f001 fefe bl 800fa70 <RegionGetPhyParam> + 800dc74: b2c0 uxtb r0, r0 + 800dc76: 231e movs r3, #30 + 800dc78: f884 00b8 strb.w r0, [r4, #184] ; 0xb8 + 800dc7c: f884 00c0 strb.w r0, [r4, #192] ; 0xc0 + 800dc80: a905 add r1, sp, #20 + 800dc82: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dc86: f88d 3014 strb.w r3, [sp, #20] + 800dc8a: f001 fef1 bl 800fa70 <RegionGetPhyParam> + 800dc8e: 231f movs r3, #31 + 800dc90: f884 00c4 strb.w r0, [r4, #196] ; 0xc4 + 800dc94: a905 add r1, sp, #20 + 800dc96: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dc9a: f88d 3014 strb.w r3, [sp, #20] + 800dc9e: f001 fee7 bl 800fa70 <RegionGetPhyParam> + 800dca2: 2320 movs r3, #32 + 800dca4: f884 00c5 strb.w r0, [r4, #197] ; 0xc5 + 800dca8: a905 add r1, sp, #20 + 800dcaa: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dcae: f88d 3014 strb.w r3, [sp, #20] + 800dcb2: f001 fedd bl 800fa70 <RegionGetPhyParam> + 800dcb6: 2321 movs r3, #33 ; 0x21 + 800dcb8: f8c4 00c8 str.w r0, [r4, #200] ; 0xc8 + 800dcbc: a905 add r1, sp, #20 + 800dcbe: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dcc2: f88d 3014 strb.w r3, [sp, #20] + 800dcc6: f001 fed3 bl 800fa70 <RegionGetPhyParam> + 800dcca: 230b movs r3, #11 + 800dccc: f8c4 00cc str.w r0, [r4, #204] ; 0xcc + 800dcd0: a905 add r1, sp, #20 + 800dcd2: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dcd6: f88d 3014 strb.w r3, [sp, #20] + 800dcda: f001 fec9 bl 800fa70 <RegionGetPhyParam> + 800dcde: 230c movs r3, #12 + 800dce0: f8a4 00d0 strh.w r0, [r4, #208] ; 0xd0 + 800dce4: a905 add r1, sp, #20 + 800dce6: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dcea: f88d 3014 strb.w r3, [sp, #20] + 800dcee: f001 febf bl 800fa70 <RegionGetPhyParam> + 800dcf2: f8d4 309c ldr.w r3, [r4, #156] ; 0x9c + 800dcf6: 6563 str r3, [r4, #84] ; 0x54 + 800dcf8: f8d4 30a0 ldr.w r3, [r4, #160] ; 0xa0 + 800dcfc: 65a3 str r3, [r4, #88] ; 0x58 + 800dcfe: f8d4 30a4 ldr.w r3, [r4, #164] ; 0xa4 + 800dd02: 65e3 str r3, [r4, #92] ; 0x5c + 800dd04: f8d4 30a8 ldr.w r3, [r4, #168] ; 0xa8 + 800dd08: 6623 str r3, [r4, #96] ; 0x60 + 800dd0a: f8d4 30ac ldr.w r3, [r4, #172] ; 0xac + 800dd0e: 6663 str r3, [r4, #100] ; 0x64 + 800dd10: f504 7308 add.w r3, r4, #544 ; 0x220 + 800dd14: a907 add r1, sp, #28 + 800dd16: 9004 str r0, [sp, #16] + 800dd18: f8a4 00d2 strh.w r0, [r4, #210] ; 0xd2 + 800dd1c: 9307 str r3, [sp, #28] + 800dd1e: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800dd22: f88d 6024 strb.w r6, [sp, #36] ; 0x24 + 800dd26: f504 732d add.w r3, r4, #692 ; 0x2b4 + 800dd2a: 9308 str r3, [sp, #32] + 800dd2c: f884 80b0 strb.w r8, [r4, #176] ; 0xb0 + 800dd30: f8c4 b094 str.w fp, [r4, #148] ; 0x94 + 800dd34: f884 9098 strb.w r9, [r4, #152] ; 0x98 + 800dd38: f8c4 b04c str.w fp, [r4, #76] ; 0x4c + 800dd3c: f884 9050 strb.w r9, [r4, #80] ; 0x50 + 800dd40: f884 8068 strb.w r8, [r4, #104] ; 0x68 + 800dd44: f001 fea2 bl 800fa8c <RegionInitDefaults> + 800dd48: f8c5 a348 str.w sl, [r5, #840] ; 0x348 + 800dd4c: f7fe fdc8 bl 800c8e0 <ResetMacParameters.constprop.0> + 800dd50: 4632 mov r2, r6 + 800dd52: 4b3e ldr r3, [pc, #248] ; (800de4c <LoRaMacInitialization+0x344>) + 800dd54: 9600 str r6, [sp, #0] + 800dd56: f04f 31ff mov.w r1, #4294967295 + 800dd5a: f505 705a add.w r0, r5, #872 ; 0x368 + 800dd5e: e9c4 660b strd r6, r6, [r4, #44] ; 0x2c + 800dd62: f8c5 7344 str.w r7, [r5, #836] ; 0x344 + 800dd66: f885 6481 strb.w r6, [r5, #1153] ; 0x481 + 800dd6a: f884 8119 strb.w r8, [r4, #281] ; 0x119 + 800dd6e: f8c5 8340 str.w r8, [r5, #832] ; 0x340 + 800dd72: f006 f8d1 bl 8013f18 <UTIL_TIMER_Create> + 800dd76: 4632 mov r2, r6 + 800dd78: 4b35 ldr r3, [pc, #212] ; (800de50 <LoRaMacInitialization+0x348>) + 800dd7a: 9600 str r6, [sp, #0] + 800dd7c: f04f 31ff mov.w r1, #4294967295 + 800dd80: f505 7060 add.w r0, r5, #896 ; 0x380 + 800dd84: f006 f8c8 bl 8013f18 <UTIL_TIMER_Create> + 800dd88: 4632 mov r2, r6 + 800dd8a: 4b32 ldr r3, [pc, #200] ; (800de54 <LoRaMacInitialization+0x34c>) + 800dd8c: 9600 str r6, [sp, #0] + 800dd8e: f04f 31ff mov.w r1, #4294967295 + 800dd92: f505 7066 add.w r0, r5, #920 ; 0x398 + 800dd96: f006 f8bf bl 8013f18 <UTIL_TIMER_Create> + 800dd9a: 4632 mov r2, r6 + 800dd9c: 4b2e ldr r3, [pc, #184] ; (800de58 <LoRaMacInitialization+0x350>) + 800dd9e: 9600 str r6, [sp, #0] + 800dda0: f04f 31ff mov.w r1, #4294967295 + 800dda4: ae02 add r6, sp, #8 + 800dda6: f505 707d add.w r0, r5, #1012 ; 0x3f4 + 800ddaa: f006 f8b5 bl 8013f18 <UTIL_TIMER_Create> + 800ddae: 4630 mov r0, r6 + 800ddb0: f006 f846 bl 8013e40 <SysTimeGetMcuTime> + 800ddb4: e896 0003 ldmia.w r6, {r0, r1} + 800ddb8: f504 7390 add.w r3, r4, #288 ; 0x120 + 800ddbc: e883 0003 stmia.w r3, {r0, r1} + 800ddc0: 4b26 ldr r3, [pc, #152] ; (800de5c <LoRaMacInitialization+0x354>) + 800ddc2: f8c5 334c str.w r3, [r5, #844] ; 0x34c + 800ddc6: 4b26 ldr r3, [pc, #152] ; (800de60 <LoRaMacInitialization+0x358>) + 800ddc8: f8c5 3354 str.w r3, [r5, #852] ; 0x354 + 800ddcc: 4b25 ldr r3, [pc, #148] ; (800de64 <LoRaMacInitialization+0x35c>) + 800ddce: f8c5 335c str.w r3, [r5, #860] ; 0x35c + 800ddd2: 4f25 ldr r7, [pc, #148] ; (800de68 <LoRaMacInitialization+0x360>) + 800ddd4: 4b25 ldr r3, [pc, #148] ; (800de6c <LoRaMacInitialization+0x364>) + 800ddd6: f8c5 3350 str.w r3, [r5, #848] ; 0x350 + 800ddda: 4b25 ldr r3, [pc, #148] ; (800de70 <LoRaMacInitialization+0x368>) + 800dddc: f8c5 3358 str.w r3, [r5, #856] ; 0x358 + 800dde0: f505 7053 add.w r0, r5, #844 ; 0x34c + 800dde4: 683b ldr r3, [r7, #0] + 800dde6: 4798 blx r3 + 800dde8: f504 70a4 add.w r0, r4, #328 ; 0x148 + 800ddec: f003 fb16 bl 801141c <SecureElementInit> + 800ddf0: b120 cbz r0, 800ddfc <LoRaMacInitialization+0x2f4> + 800ddf2: 2611 movs r6, #17 + 800ddf4: 4630 mov r0, r6 + 800ddf6: b00b add sp, #44 ; 0x2c + 800ddf8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800ddfc: 4620 mov r0, r4 + 800ddfe: f001 fa9d bl 800f33c <LoRaMacCryptoInit> + 800de02: 2800 cmp r0, #0 + 800de04: d1f5 bne.n 800ddf2 <LoRaMacInitialization+0x2ea> + 800de06: f000 ffc7 bl 800ed98 <LoRaMacCommandsInit> + 800de0a: b9b8 cbnz r0, 800de3c <LoRaMacInitialization+0x334> + 800de0c: 4819 ldr r0, [pc, #100] ; (800de74 <LoRaMacInitialization+0x36c>) + 800de0e: f001 faf7 bl 800f400 <LoRaMacCryptoSetMulticastReference> + 800de12: 4606 mov r6, r0 + 800de14: 2800 cmp r0, #0 + 800de16: d1ec bne.n 800ddf2 <LoRaMacInitialization+0x2ea> + 800de18: 697b ldr r3, [r7, #20] + 800de1a: 4798 blx r3 + 800de1c: f003 fd94 bl 8011948 <srand1> + 800de20: 6dbb ldr r3, [r7, #88] ; 0x58 + 800de22: f894 0119 ldrb.w r0, [r4, #281] ; 0x119 + 800de26: 4798 blx r3 + 800de28: 6afb ldr r3, [r7, #44] ; 0x2c + 800de2a: 4798 blx r3 + 800de2c: 2301 movs r3, #1 + 800de2e: f885 3482 strb.w r3, [r5, #1154] ; 0x482 + 800de32: e7df b.n 800ddf4 <LoRaMacInitialization+0x2ec> + 800de34: 2603 movs r6, #3 + 800de36: e7dd b.n 800ddf4 <LoRaMacInitialization+0x2ec> + 800de38: 2609 movs r6, #9 + 800de3a: e7db b.n 800ddf4 <LoRaMacInitialization+0x2ec> + 800de3c: 2613 movs r6, #19 + 800de3e: e7d9 b.n 800ddf4 <LoRaMacInitialization+0x2ec> + 800de40: 20001868 .word 0x20001868 + 800de44: 20001fdc .word 0x20001fdc + 800de48: 01000300 .word 0x01000300 + 800de4c: 0800d1a5 .word 0x0800d1a5 + 800de50: 0800ca5d .word 0x0800ca5d + 800de54: 0800ca9d .word 0x0800ca9d + 800de58: 0800c295 .word 0x0800c295 + 800de5c: 0800c46d .word 0x0800c46d + 800de60: 0800c425 .word 0x0800c425 + 800de64: 0800c251 .word 0x0800c251 + 800de68: 080159b0 .word 0x080159b0 + 800de6c: 0800c3fd .word 0x0800c3fd + 800de70: 0800c3d5 .word 0x0800c3d5 + 800de74: 20001950 .word 0x20001950 + +0800de78 <LoRaMacStart>: + 800de78: b508 push {r3, lr} + 800de7a: 4b03 ldr r3, [pc, #12] ; (800de88 <LoRaMacStart+0x10>) + 800de7c: 2000 movs r0, #0 + 800de7e: f8c3 0340 str.w r0, [r3, #832] ; 0x340 + 800de82: f7fe f9cd bl 800c220 <UpdateRxSlotIdleState> + 800de86: bd08 pop {r3, pc} + 800de88: 20001fdc .word 0x20001fdc + +0800de8c <LoRaMacStop>: + 800de8c: b510 push {r4, lr} + 800de8e: f7ff f9b3 bl 800d1f8 <LoRaMacIsBusy> + 800de92: 4c0a ldr r4, [pc, #40] ; (800debc <LoRaMacStop+0x30>) + 800de94: b960 cbnz r0, 800deb0 <LoRaMacStop+0x24> + 800de96: 4b0a ldr r3, [pc, #40] ; (800dec0 <LoRaMacStop+0x34>) + 800de98: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800de9c: 2b02 cmp r3, #2 + 800de9e: d102 bne.n 800dea6 <LoRaMacStop+0x1a> + 800dea0: 4b08 ldr r3, [pc, #32] ; (800dec4 <LoRaMacStop+0x38>) + 800dea2: 6adb ldr r3, [r3, #44] ; 0x2c + 800dea4: 4798 blx r3 + 800dea6: 2301 movs r3, #1 + 800dea8: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800deac: 2000 movs r0, #0 + 800deae: bd10 pop {r4, pc} + 800deb0: f8d4 0340 ldr.w r0, [r4, #832] ; 0x340 + 800deb4: 3801 subs r0, #1 + 800deb6: bf18 it ne + 800deb8: 2001 movne r0, #1 + 800deba: e7f8 b.n 800deae <LoRaMacStop+0x22> + 800debc: 20001fdc .word 0x20001fdc + 800dec0: 20001868 .word 0x20001868 + 800dec4: 080159b0 .word 0x080159b0 + +0800dec8 <LoRaMacHalt>: + 800dec8: b538 push {r3, r4, r5, lr} + 800deca: 4c13 ldr r4, [pc, #76] ; (800df18 <LoRaMacHalt+0x50>) + 800decc: f504 705a add.w r0, r4, #872 ; 0x368 + 800ded0: f006 f880 bl 8013fd4 <UTIL_TIMER_Stop> + 800ded4: f504 7060 add.w r0, r4, #896 ; 0x380 + 800ded8: f006 f87c bl 8013fd4 <UTIL_TIMER_Stop> + 800dedc: f504 7066 add.w r0, r4, #920 ; 0x398 + 800dee0: f006 f878 bl 8013fd4 <UTIL_TIMER_Stop> + 800dee4: f504 707d add.w r0, r4, #1012 ; 0x3f4 + 800dee8: f006 f874 bl 8013fd4 <UTIL_TIMER_Stop> + 800deec: f000 ff40 bl 800ed70 <LoRaMacClassBHaltBeaconing> + 800def0: 4b0a ldr r3, [pc, #40] ; (800df1c <LoRaMacHalt+0x54>) + 800def2: 2500 movs r5, #0 + 800def4: 6adb ldr r3, [r3, #44] ; 0x2c + 800def6: 4798 blx r3 + 800def8: f8c4 5340 str.w r5, [r4, #832] ; 0x340 + 800defc: f7fe fdf2 bl 800cae4 <LoRaMacHandleNvm.part.0.constprop.0> + 800df00: 4907 ldr r1, [pc, #28] ; (800df20 <LoRaMacHalt+0x58>) + 800df02: 4808 ldr r0, [pc, #32] ; (800df24 <LoRaMacHalt+0x5c>) + 800df04: f44f 62ee mov.w r2, #1904 ; 0x770 + 800df08: f003 fd40 bl 801198c <memcpy1> + 800df0c: 2301 movs r3, #1 + 800df0e: f8c4 3340 str.w r3, [r4, #832] ; 0x340 + 800df12: 4628 mov r0, r5 + 800df14: bd38 pop {r3, r4, r5, pc} + 800df16: bf00 nop + 800df18: 20001fdc .word 0x20001fdc + 800df1c: 080159b0 .word 0x080159b0 + 800df20: 20001868 .word 0x20001868 + 800df24: 200010f8 .word 0x200010f8 + +0800df28 <LoRaMacQueryTxPossible>: + 800df28: b530 push {r4, r5, lr} + 800df2a: 4b2a ldr r3, [pc, #168] ; (800dfd4 <LoRaMacQueryTxPossible+0xac>) + 800df2c: b089 sub sp, #36 ; 0x24 + 800df2e: 4605 mov r5, r0 + 800df30: f893 00dd ldrb.w r0, [r3, #221] ; 0xdd + 800df34: f88d 0002 strb.w r0, [sp, #2] + 800df38: f893 00dc ldrb.w r0, [r3, #220] ; 0xdc + 800df3c: 6a9a ldr r2, [r3, #40] ; 0x28 + 800df3e: f88d 0003 strb.w r0, [sp, #3] + 800df42: 2000 movs r0, #0 + 800df44: 9201 str r2, [sp, #4] + 800df46: 9002 str r0, [sp, #8] + 800df48: 460c mov r4, r1 + 800df4a: 2900 cmp r1, #0 + 800df4c: d03e beq.n 800dfcc <LoRaMacQueryTxPossible+0xa4> + 800df4e: 9205 str r2, [sp, #20] + 800df50: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 + 800df54: 9206 str r2, [sp, #24] + 800df56: 8f1a ldrh r2, [r3, #56] ; 0x38 + 800df58: f8d3 1128 ldr.w r1, [r3, #296] ; 0x128 + 800df5c: 9103 str r1, [sp, #12] + 800df5e: ba52 rev16 r2, r2 + 800df60: f893 111a ldrb.w r1, [r3, #282] ; 0x11a + 800df64: f8ad 201c strh.w r2, [sp, #28] + 800df68: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800df6c: f893 3048 ldrb.w r3, [r3, #72] ; 0x48 + 800df70: f88d 0010 strb.w r0, [sp, #16] + 800df74: f88d 1011 strb.w r1, [sp, #17] + 800df78: f88d 201e strb.w r2, [sp, #30] + 800df7c: f88d 301f strb.w r3, [sp, #31] + 800df80: f10d 0203 add.w r2, sp, #3 + 800df84: ab01 add r3, sp, #4 + 800df86: f10d 0102 add.w r1, sp, #2 + 800df8a: a803 add r0, sp, #12 + 800df8c: f000 fe6e bl 800ec6c <LoRaMacAdrCalcNext> + 800df90: f99d 0002 ldrsb.w r0, [sp, #2] + 800df94: f7fe f966 bl 800c264 <GetMaxAppPayloadWithoutFOptsLength> + 800df98: 7060 strb r0, [r4, #1] + 800df9a: a802 add r0, sp, #8 + 800df9c: f000 ffb6 bl 800ef0c <LoRaMacCommandsGetSizeSerializedCmds> + 800dfa0: b9b0 cbnz r0, 800dfd0 <LoRaMacQueryTxPossible+0xa8> + 800dfa2: 9a02 ldr r2, [sp, #8] + 800dfa4: 2a0f cmp r2, #15 + 800dfa6: d80d bhi.n 800dfc4 <LoRaMacQueryTxPossible+0x9c> + 800dfa8: 7863 ldrb r3, [r4, #1] + 800dfaa: 429a cmp r2, r3 + 800dfac: d80a bhi.n 800dfc4 <LoRaMacQueryTxPossible+0x9c> + 800dfae: 4415 add r5, r2 + 800dfb0: 42ab cmp r3, r5 + 800dfb2: eba3 0102 sub.w r1, r3, r2 + 800dfb6: bf2c ite cs + 800dfb8: 2000 movcs r0, #0 + 800dfba: 2001 movcc r0, #1 + 800dfbc: 7021 strb r1, [r4, #0] + 800dfbe: 00c0 lsls r0, r0, #3 + 800dfc0: b009 add sp, #36 ; 0x24 + 800dfc2: bd30 pop {r4, r5, pc} + 800dfc4: 2300 movs r3, #0 + 800dfc6: 7023 strb r3, [r4, #0] + 800dfc8: 2008 movs r0, #8 + 800dfca: e7f9 b.n 800dfc0 <LoRaMacQueryTxPossible+0x98> + 800dfcc: 2003 movs r0, #3 + 800dfce: e7f7 b.n 800dfc0 <LoRaMacQueryTxPossible+0x98> + 800dfd0: 2013 movs r0, #19 + 800dfd2: e7f5 b.n 800dfc0 <LoRaMacQueryTxPossible+0x98> + 800dfd4: 20001868 .word 0x20001868 + +0800dfd8 <LoRaMacMibGetRequestConfirm>: + 800dfd8: b51f push {r0, r1, r2, r3, r4, lr} + 800dfda: 4604 mov r4, r0 + 800dfdc: 2800 cmp r0, #0 + 800dfde: f000 80fd beq.w 800e1dc <LoRaMacMibGetRequestConfirm+0x204> + 800dfe2: 7800 ldrb r0, [r0, #0] + 800dfe4: 283f cmp r0, #63 ; 0x3f + 800dfe6: f200 80f3 bhi.w 800e1d0 <LoRaMacMibGetRequestConfirm+0x1f8> + 800dfea: e8df f010 tbh [pc, r0, lsl #1] + 800dfee: 0040 .short 0x0040 + 800dff0: 004b0046 .word 0x004b0046 + 800dff4: 00540050 .word 0x00540050 + 800dff8: 005d0058 .word 0x005d0058 + 800dffc: 00f100f1 .word 0x00f100f1 + 800e000: 00f100f1 .word 0x00f100f1 + 800e004: 00f100f1 .word 0x00f100f1 + 800e008: 00f100f1 .word 0x00f100f1 + 800e00c: 00680064 .word 0x00680064 + 800e010: 0077006c .word 0x0077006c + 800e014: 0081007e .word 0x0081007e + 800e018: 00890084 .word 0x00890084 + 800e01c: 008b0087 .word 0x008b0087 + 800e020: 0092008f .word 0x0092008f + 800e024: 00980095 .word 0x00980095 + 800e028: 009e009b .word 0x009e009b + 800e02c: 00aa00a2 .word 0x00aa00a2 + 800e030: 00ae00a6 .word 0x00ae00a6 + 800e034: 00b500b1 .word 0x00b500b1 + 800e038: 00ba00be .word 0x00ba00be + 800e03c: 00f100bc .word 0x00f100bc + 800e040: 00f100c2 .word 0x00f100c2 + 800e044: 00f100f1 .word 0x00f100f1 + 800e048: 00f100f1 .word 0x00f100f1 + 800e04c: 00f100f1 .word 0x00f100f1 + 800e050: 00f100f1 .word 0x00f100f1 + 800e054: 00f100f1 .word 0x00f100f1 + 800e058: 00f100f1 .word 0x00f100f1 + 800e05c: 00f100f1 .word 0x00f100f1 + 800e060: 00ce00ca .word 0x00ce00ca + 800e064: 00d700d3 .word 0x00d700d3 + 800e068: 00df00db .word 0x00df00db + 800e06c: 00e8 .short 0x00e8 + 800e06e: 4b5d ldr r3, [pc, #372] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e070: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800e074: 7123 strb r3, [r4, #4] + 800e076: b004 add sp, #16 + 800e078: bd10 pop {r4, pc} + 800e07a: 4b5a ldr r3, [pc, #360] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e07c: f893 312c ldrb.w r3, [r3, #300] ; 0x12c + 800e080: 7123 strb r3, [r4, #4] + 800e082: e002 b.n 800e08a <LoRaMacMibGetRequestConfirm+0xb2> + 800e084: 6860 ldr r0, [r4, #4] + 800e086: f003 fb65 bl 8011754 <SecureElementGetDevEui> + 800e08a: 2000 movs r0, #0 + 800e08c: e7f3 b.n 800e076 <LoRaMacMibGetRequestConfirm+0x9e> + 800e08e: 6860 ldr r0, [r4, #4] + 800e090: f003 fba6 bl 80117e0 <SecureElementGetJoinEui> + 800e094: e7f9 b.n 800e08a <LoRaMacMibGetRequestConfirm+0xb2> + 800e096: 4b53 ldr r3, [pc, #332] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e098: f893 311a ldrb.w r3, [r3, #282] ; 0x11a + 800e09c: e7f0 b.n 800e080 <LoRaMacMibGetRequestConfirm+0xa8> + 800e09e: 4b51 ldr r3, [pc, #324] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e0a0: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 800e0a4: 6063 str r3, [r4, #4] + 800e0a6: e7f0 b.n 800e08a <LoRaMacMibGetRequestConfirm+0xb2> + 800e0a8: 4b4e ldr r3, [pc, #312] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e0aa: 1d21 adds r1, r4, #4 + 800e0ac: f893 012c ldrb.w r0, [r3, #300] ; 0x12c + 800e0b0: f003 fbae bl 8011810 <SecureElementGetDevAddr> + 800e0b4: e7e9 b.n 800e08a <LoRaMacMibGetRequestConfirm+0xb2> + 800e0b6: 4b4b ldr r3, [pc, #300] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e0b8: f893 3119 ldrb.w r3, [r3, #281] ; 0x119 + 800e0bc: e7e0 b.n 800e080 <LoRaMacMibGetRequestConfirm+0xa8> + 800e0be: 4b49 ldr r3, [pc, #292] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e0c0: f893 308c ldrb.w r3, [r3, #140] ; 0x8c + 800e0c4: e7dc b.n 800e080 <LoRaMacMibGetRequestConfirm+0xa8> + 800e0c6: 231d movs r3, #29 + 800e0c8: f88d 3008 strb.w r3, [sp, #8] + 800e0cc: 4b45 ldr r3, [pc, #276] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e0ce: a902 add r1, sp, #8 + 800e0d0: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e0d4: f001 fccc bl 800fa70 <RegionGetPhyParam> + 800e0d8: 6060 str r0, [r4, #4] + 800e0da: e7d6 b.n 800e08a <LoRaMacMibGetRequestConfirm+0xb2> + 800e0dc: 4b42 ldr r3, [pc, #264] ; (800e1e8 <LoRaMacMibGetRequestConfirm+0x210>) + 800e0de: 3404 adds r4, #4 + 800e0e0: e893 0003 ldmia.w r3, {r0, r1} + 800e0e4: e884 0003 stmia.w r4, {r0, r1} + 800e0e8: e7cf b.n 800e08a <LoRaMacMibGetRequestConfirm+0xb2> + 800e0ea: 4b40 ldr r3, [pc, #256] ; (800e1ec <LoRaMacMibGetRequestConfirm+0x214>) + 800e0ec: 3404 adds r4, #4 + 800e0ee: e7f7 b.n 800e0e0 <LoRaMacMibGetRequestConfirm+0x108> + 800e0f0: 4b3f ldr r3, [pc, #252] ; (800e1f0 <LoRaMacMibGetRequestConfirm+0x218>) + 800e0f2: 3404 adds r4, #4 + 800e0f4: e7f4 b.n 800e0e0 <LoRaMacMibGetRequestConfirm+0x108> + 800e0f6: 4b3f ldr r3, [pc, #252] ; (800e1f4 <LoRaMacMibGetRequestConfirm+0x21c>) + 800e0f8: 3404 adds r4, #4 + 800e0fa: e7f1 b.n 800e0e0 <LoRaMacMibGetRequestConfirm+0x108> + 800e0fc: 231b movs r3, #27 + 800e0fe: e7e3 b.n 800e0c8 <LoRaMacMibGetRequestConfirm+0xf0> + 800e100: 231a movs r3, #26 + 800e102: e7e1 b.n 800e0c8 <LoRaMacMibGetRequestConfirm+0xf0> + 800e104: 4b37 ldr r3, [pc, #220] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e106: f893 3068 ldrb.w r3, [r3, #104] ; 0x68 + 800e10a: e7b9 b.n 800e080 <LoRaMacMibGetRequestConfirm+0xa8> + 800e10c: 4b35 ldr r3, [pc, #212] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e10e: 6d5b ldr r3, [r3, #84] ; 0x54 + 800e110: e7c8 b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e112: 4b34 ldr r3, [pc, #208] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e114: 6d9b ldr r3, [r3, #88] ; 0x58 + 800e116: e7c5 b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e118: 4b32 ldr r3, [pc, #200] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e11a: 6ddb ldr r3, [r3, #92] ; 0x5c + 800e11c: e7c2 b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e11e: 4b31 ldr r3, [pc, #196] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e120: 6e1b ldr r3, [r3, #96] ; 0x60 + 800e122: e7bf b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e124: 4b2f ldr r3, [pc, #188] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e126: 6e5b ldr r3, [r3, #100] ; 0x64 + 800e128: e7bc b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e12a: 4b2e ldr r3, [pc, #184] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e12c: f893 30dd ldrb.w r3, [r3, #221] ; 0xdd + 800e130: e7a6 b.n 800e080 <LoRaMacMibGetRequestConfirm+0xa8> + 800e132: 4b2c ldr r3, [pc, #176] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e134: f893 3039 ldrb.w r3, [r3, #57] ; 0x39 + 800e138: e7a2 b.n 800e080 <LoRaMacMibGetRequestConfirm+0xa8> + 800e13a: 4b2a ldr r3, [pc, #168] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e13c: f893 30dc ldrb.w r3, [r3, #220] ; 0xdc + 800e140: e79e b.n 800e080 <LoRaMacMibGetRequestConfirm+0xa8> + 800e142: 4b28 ldr r3, [pc, #160] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e144: f893 3038 ldrb.w r3, [r3, #56] ; 0x38 + 800e148: e79a b.n 800e080 <LoRaMacMibGetRequestConfirm+0xa8> + 800e14a: 4b26 ldr r3, [pc, #152] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e14c: 6cdb ldr r3, [r3, #76] ; 0x4c + 800e14e: e7a9 b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e150: 4b24 ldr r3, [pc, #144] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e152: f893 3050 ldrb.w r3, [r3, #80] ; 0x50 + 800e156: e793 b.n 800e080 <LoRaMacMibGetRequestConfirm+0xa8> + 800e158: 4b22 ldr r3, [pc, #136] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e15a: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 800e15e: 6063 str r3, [r4, #4] + 800e160: e793 b.n 800e08a <LoRaMacMibGetRequestConfirm+0xb2> + 800e162: 4b20 ldr r3, [pc, #128] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e164: e79e b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e166: 4b24 ldr r3, [pc, #144] ; (800e1f8 <LoRaMacMibGetRequestConfirm+0x220>) + 800e168: e79c b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e16a: 4b1e ldr r3, [pc, #120] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e16c: f8d3 30cc ldr.w r3, [r3, #204] ; 0xcc + 800e170: e7f5 b.n 800e15e <LoRaMacMibGetRequestConfirm+0x186> + 800e172: 4b1c ldr r3, [pc, #112] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e174: f8d3 3128 ldr.w r3, [r3, #296] ; 0x128 + 800e178: 6063 str r3, [r4, #4] + 800e17a: f001 fd0d bl 800fb98 <RegionGetVersion> + 800e17e: 60a0 str r0, [r4, #8] + 800e180: e783 b.n 800e08a <LoRaMacMibGetRequestConfirm+0xb2> + 800e182: 4b18 ldr r3, [pc, #96] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e184: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 800e188: e78c b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e18a: 4b16 ldr r3, [pc, #88] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e18c: f8b3 3088 ldrh.w r3, [r3, #136] ; 0x88 + 800e190: 80a3 strh r3, [r4, #4] + 800e192: e77a b.n 800e08a <LoRaMacMibGetRequestConfirm+0xb2> + 800e194: 4b13 ldr r3, [pc, #76] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e196: f8b3 308a ldrh.w r3, [r3, #138] ; 0x8a + 800e19a: e7f9 b.n 800e190 <LoRaMacMibGetRequestConfirm+0x1b8> + 800e19c: 4b11 ldr r3, [pc, #68] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e19e: f8b3 30d0 ldrh.w r3, [r3, #208] ; 0xd0 + 800e1a2: e7f5 b.n 800e190 <LoRaMacMibGetRequestConfirm+0x1b8> + 800e1a4: 4b0f ldr r3, [pc, #60] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e1a6: f8b3 30d2 ldrh.w r3, [r3, #210] ; 0xd2 + 800e1aa: e7f1 b.n 800e190 <LoRaMacMibGetRequestConfirm+0x1b8> + 800e1ac: 4b0d ldr r3, [pc, #52] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e1ae: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e1b2: b10a cbz r2, 800e1b8 <LoRaMacMibGetRequestConfirm+0x1e0> + 800e1b4: 2a06 cmp r2, #6 + 800e1b6: d113 bne.n 800e1e0 <LoRaMacMibGetRequestConfirm+0x208> + 800e1b8: f8b3 374c ldrh.w r3, [r3, #1868] ; 0x74c + 800e1bc: e7e8 b.n 800e190 <LoRaMacMibGetRequestConfirm+0x1b8> + 800e1be: 4b09 ldr r3, [pc, #36] ; (800e1e4 <LoRaMacMibGetRequestConfirm+0x20c>) + 800e1c0: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e1c4: b10a cbz r2, 800e1ca <LoRaMacMibGetRequestConfirm+0x1f2> + 800e1c6: 2a06 cmp r2, #6 + 800e1c8: d10a bne.n 800e1e0 <LoRaMacMibGetRequestConfirm+0x208> + 800e1ca: f8d3 3750 ldr.w r3, [r3, #1872] ; 0x750 + 800e1ce: e769 b.n 800e0a4 <LoRaMacMibGetRequestConfirm+0xcc> + 800e1d0: 4620 mov r0, r4 + 800e1d2: b004 add sp, #16 + 800e1d4: e8bd 4010 ldmia.w sp!, {r4, lr} + 800e1d8: f000 bdce b.w 800ed78 <LoRaMacClassBMibGetRequestConfirm> + 800e1dc: 2003 movs r0, #3 + 800e1de: e74a b.n 800e076 <LoRaMacMibGetRequestConfirm+0x9e> + 800e1e0: 2018 movs r0, #24 + 800e1e2: e748 b.n 800e076 <LoRaMacMibGetRequestConfirm+0x9e> + 800e1e4: 20001868 .word 0x20001868 + 800e1e8: 200018d4 .word 0x200018d4 + 800e1ec: 2000191c .word 0x2000191c + 800e1f0: 200018dc .word 0x200018dc + 800e1f4: 20001924 .word 0x20001924 + 800e1f8: 200010f8 .word 0x200010f8 + +0800e1fc <LoRaMacMibSetRequestConfirm>: + 800e1fc: b573 push {r0, r1, r4, r5, r6, lr} + 800e1fe: 4604 mov r4, r0 + 800e200: 2800 cmp r0, #0 + 800e202: d05e beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e204: 4da0 ldr r5, [pc, #640] ; (800e488 <LoRaMacMibSetRequestConfirm+0x28c>) + 800e206: f8d5 3340 ldr.w r3, [r5, #832] ; 0x340 + 800e20a: 079a lsls r2, r3, #30 + 800e20c: f100 825f bmi.w 800e6ce <LoRaMacMibSetRequestConfirm+0x4d2> + 800e210: 7802 ldrb r2, [r0, #0] + 800e212: 2a3f cmp r2, #63 ; 0x3f + 800e214: f200 8256 bhi.w 800e6c4 <LoRaMacMibSetRequestConfirm+0x4c8> + 800e218: e8df f012 tbh [pc, r2, lsl #1] + 800e21c: 00460040 .word 0x00460040 + 800e220: 0056004e .word 0x0056004e + 800e224: 005f005a .word 0x005f005a + 800e228: 00700064 .word 0x00700064 + 800e22c: 007f007a .word 0x007f007a + 800e230: 00890084 .word 0x00890084 + 800e234: 0093008e .word 0x0093008e + 800e238: 009d0098 .word 0x009d0098 + 800e23c: 025400a7 .word 0x025400a7 + 800e240: 00cc00ac .word 0x00cc00ac + 800e244: 010600df .word 0x010600df + 800e248: 01190128 .word 0x01190128 + 800e24c: 013c012c .word 0x013c012c + 800e250: 01440140 .word 0x01440140 + 800e254: 014c0148 .word 0x014c0148 + 800e258: 01620150 .word 0x01620150 + 800e25c: 0178018a .word 0x0178018a + 800e260: 01a2019c .word 0x01a2019c + 800e264: 01ae01a9 .word 0x01ae01a9 + 800e268: 025401b3 .word 0x025401b3 + 800e26c: 02540218 .word 0x02540218 + 800e270: 02540254 .word 0x02540254 + 800e274: 02540254 .word 0x02540254 + 800e278: 02540254 .word 0x02540254 + 800e27c: 02540254 .word 0x02540254 + 800e280: 02540254 .word 0x02540254 + 800e284: 02540254 .word 0x02540254 + 800e288: 02540254 .word 0x02540254 + 800e28c: 02270254 .word 0x02270254 + 800e290: 0231022c .word 0x0231022c + 800e294: 023b0236 .word 0x023b0236 + 800e298: 024a0240 .word 0x024a0240 + 800e29c: 7900 ldrb r0, [r0, #4] + 800e29e: b002 add sp, #8 + 800e2a0: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 800e2a4: f7fe baae b.w 800c804 <SwitchClass> + 800e2a8: 7903 ldrb r3, [r0, #4] + 800e2aa: 2b02 cmp r3, #2 + 800e2ac: d009 beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e2ae: 4a77 ldr r2, [pc, #476] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e2b0: f882 312c strb.w r3, [r2, #300] ; 0x12c + 800e2b4: 2000 movs r0, #0 + 800e2b6: e005 b.n 800e2c4 <LoRaMacMibSetRequestConfirm+0xc8> + 800e2b8: 6840 ldr r0, [r0, #4] + 800e2ba: f003 fa3d bl 8011738 <SecureElementSetDevEui> + 800e2be: 2800 cmp r0, #0 + 800e2c0: d0f8 beq.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e2c2: 2003 movs r0, #3 + 800e2c4: b002 add sp, #8 + 800e2c6: bd70 pop {r4, r5, r6, pc} + 800e2c8: 6840 ldr r0, [r0, #4] + 800e2ca: f003 fa79 bl 80117c0 <SecureElementSetJoinEui> + 800e2ce: e7f6 b.n 800e2be <LoRaMacMibSetRequestConfirm+0xc2> + 800e2d0: 4b6e ldr r3, [pc, #440] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e2d2: 7902 ldrb r2, [r0, #4] + 800e2d4: f883 211a strb.w r2, [r3, #282] ; 0x11a + 800e2d8: e7ec b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e2da: 4b6c ldr r3, [pc, #432] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e2dc: 6842 ldr r2, [r0, #4] + 800e2de: f8c3 20e0 str.w r2, [r3, #224] ; 0xe0 + 800e2e2: e7e7 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e2e4: 4d69 ldr r5, [pc, #420] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e2e6: 6841 ldr r1, [r0, #4] + 800e2e8: f895 012c ldrb.w r0, [r5, #300] ; 0x12c + 800e2ec: f003 fa86 bl 80117fc <SecureElementSetDevAddr> + 800e2f0: 2800 cmp r0, #0 + 800e2f2: d1e6 bne.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e2f4: 6863 ldr r3, [r4, #4] + 800e2f6: f8c5 30e4 str.w r3, [r5, #228] ; 0xe4 + 800e2fa: e7e3 b.n 800e2c4 <LoRaMacMibSetRequestConfirm+0xc8> + 800e2fc: 6841 ldr r1, [r0, #4] + 800e2fe: 2900 cmp r1, #0 + 800e300: d0df beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e302: 2000 movs r0, #0 + 800e304: f001 f9a8 bl 800f658 <LoRaMacCryptoSetKey> + 800e308: 2800 cmp r0, #0 + 800e30a: d0d3 beq.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e30c: 2011 movs r0, #17 + 800e30e: e7d9 b.n 800e2c4 <LoRaMacMibSetRequestConfirm+0xc8> + 800e310: 6841 ldr r1, [r0, #4] + 800e312: 2900 cmp r1, #0 + 800e314: d0d5 beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e316: 2001 movs r0, #1 + 800e318: e7f4 b.n 800e304 <LoRaMacMibSetRequestConfirm+0x108> + 800e31a: 6841 ldr r1, [r0, #4] + 800e31c: 2900 cmp r1, #0 + 800e31e: d0d0 beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e320: 2008 movs r0, #8 + 800e322: e7ef b.n 800e304 <LoRaMacMibSetRequestConfirm+0x108> + 800e324: 6841 ldr r1, [r0, #4] + 800e326: 2900 cmp r1, #0 + 800e328: d0cb beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e32a: 2009 movs r0, #9 + 800e32c: e7ea b.n 800e304 <LoRaMacMibSetRequestConfirm+0x108> + 800e32e: 6841 ldr r1, [r0, #4] + 800e330: 2900 cmp r1, #0 + 800e332: d0c6 beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e334: 200c movs r0, #12 + 800e336: e7e5 b.n 800e304 <LoRaMacMibSetRequestConfirm+0x108> + 800e338: 6841 ldr r1, [r0, #4] + 800e33a: 2900 cmp r1, #0 + 800e33c: d0c1 beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e33e: 200d movs r0, #13 + 800e340: e7e0 b.n 800e304 <LoRaMacMibSetRequestConfirm+0x108> + 800e342: 6841 ldr r1, [r0, #4] + 800e344: 2900 cmp r1, #0 + 800e346: d0bc beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e348: 200e movs r0, #14 + 800e34a: e7db b.n 800e304 <LoRaMacMibSetRequestConfirm+0x108> + 800e34c: 6841 ldr r1, [r0, #4] + 800e34e: 2900 cmp r1, #0 + 800e350: d0b7 beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e352: 200f movs r0, #15 + 800e354: e7d6 b.n 800e304 <LoRaMacMibSetRequestConfirm+0x108> + 800e356: 4c4e ldr r4, [pc, #312] ; (800e490 <LoRaMacMibSetRequestConfirm+0x294>) + 800e358: 4b4c ldr r3, [pc, #304] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e35a: 7900 ldrb r0, [r0, #4] + 800e35c: f883 0119 strb.w r0, [r3, #281] ; 0x119 + 800e360: 6da3 ldr r3, [r4, #88] ; 0x58 + 800e362: 4798 blx r3 + 800e364: 6ae3 ldr r3, [r4, #44] ; 0x2c + 800e366: 4798 blx r3 + 800e368: e7a4 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e36a: 4b48 ldr r3, [pc, #288] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e36c: 7902 ldrb r2, [r0, #4] + 800e36e: f883 208c strb.w r2, [r3, #140] ; 0x8c + 800e372: e79f b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e374: 4d45 ldr r5, [pc, #276] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e376: 7a03 ldrb r3, [r0, #8] + 800e378: f88d 3000 strb.w r3, [sp] + 800e37c: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e380: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800e384: f88d 3001 strb.w r3, [sp, #1] + 800e388: 2207 movs r2, #7 + 800e38a: 4669 mov r1, sp + 800e38c: f001 fb83 bl 800fa96 <RegionVerify> + 800e390: 2800 cmp r0, #0 + 800e392: d096 beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e394: 6863 ldr r3, [r4, #4] + 800e396: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e39a: 9300 str r3, [sp, #0] + 800e39c: 2200 movs r2, #0 + 800e39e: 4669 mov r1, sp + 800e3a0: f001 fb79 bl 800fa96 <RegionVerify> + 800e3a4: 2800 cmp r0, #0 + 800e3a6: d08c beq.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e3a8: 356c adds r5, #108 ; 0x6c + 800e3aa: e9d4 0101 ldrd r0, r1, [r4, #4] + 800e3ae: e885 0003 stmia.w r5, {r0, r1} + 800e3b2: e77f b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e3b4: 4d35 ldr r5, [pc, #212] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e3b6: 7a03 ldrb r3, [r0, #8] + 800e3b8: f88d 3000 strb.w r3, [sp] + 800e3bc: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e3c0: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800e3c4: f88d 3001 strb.w r3, [sp, #1] + 800e3c8: 2207 movs r2, #7 + 800e3ca: 4669 mov r1, sp + 800e3cc: f001 fb63 bl 800fa96 <RegionVerify> + 800e3d0: 2800 cmp r0, #0 + 800e3d2: f43f af76 beq.w 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e3d6: 35b4 adds r5, #180 ; 0xb4 + 800e3d8: e7e7 b.n 800e3aa <LoRaMacMibSetRequestConfirm+0x1ae> + 800e3da: 4d2c ldr r5, [pc, #176] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e3dc: 7a03 ldrb r3, [r0, #8] + 800e3de: f88d 3000 strb.w r3, [sp] + 800e3e2: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e3e6: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800e3ea: f88d 3001 strb.w r3, [sp, #1] + 800e3ee: 2207 movs r2, #7 + 800e3f0: 4669 mov r1, sp + 800e3f2: f001 fb50 bl 800fa96 <RegionVerify> + 800e3f6: 2800 cmp r0, #0 + 800e3f8: f43f af63 beq.w 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e3fc: e9d4 0101 ldrd r0, r1, [r4, #4] + 800e400: f105 0374 add.w r3, r5, #116 ; 0x74 + 800e404: e883 0003 stmia.w r3, {r0, r1} + 800e408: f895 3118 ldrb.w r3, [r5, #280] ; 0x118 + 800e40c: 2b02 cmp r3, #2 + 800e40e: f47f af51 bne.w 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e412: f895 312c ldrb.w r3, [r5, #300] ; 0x12c + 800e416: 2b00 cmp r3, #0 + 800e418: f43f af4c beq.w 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e41c: 4b1c ldr r3, [pc, #112] ; (800e490 <LoRaMacMibSetRequestConfirm+0x294>) + 800e41e: 6adb ldr r3, [r3, #44] ; 0x2c + 800e420: 4798 blx r3 + 800e422: f7fe f9bf bl 800c7a4 <OpenContinuousRxCWindow> + 800e426: e745 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e428: 4d18 ldr r5, [pc, #96] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e42a: 7a03 ldrb r3, [r0, #8] + 800e42c: f88d 3000 strb.w r3, [sp] + 800e430: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800e434: f895 307d ldrb.w r3, [r5, #125] ; 0x7d + 800e438: f88d 3001 strb.w r3, [sp, #1] + 800e43c: 2207 movs r2, #7 + 800e43e: 4669 mov r1, sp + 800e440: f001 fb29 bl 800fa96 <RegionVerify> + 800e444: 2800 cmp r0, #0 + 800e446: f43f af3c beq.w 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e44a: 35bc adds r5, #188 ; 0xbc + 800e44c: e7ad b.n 800e3aa <LoRaMacMibSetRequestConfirm+0x1ae> + 800e44e: 6843 ldr r3, [r0, #4] + 800e450: 9300 str r3, [sp, #0] + 800e452: 2301 movs r3, #1 + 800e454: f88d 3004 strb.w r3, [sp, #4] + 800e458: 4b0c ldr r3, [pc, #48] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e45a: 4669 mov r1, sp + 800e45c: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e460: f001 fb26 bl 800fab0 <RegionChanMaskSet> + 800e464: 2800 cmp r0, #0 + 800e466: f47f af25 bne.w 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e46a: e72a b.n 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e46c: 6843 ldr r3, [r0, #4] + 800e46e: 9300 str r3, [sp, #0] + 800e470: 2300 movs r3, #0 + 800e472: e7ef b.n 800e454 <LoRaMacMibSetRequestConfirm+0x258> + 800e474: 7903 ldrb r3, [r0, #4] + 800e476: 1e5a subs r2, r3, #1 + 800e478: 2a0e cmp r2, #14 + 800e47a: f63f af22 bhi.w 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e47e: 4a03 ldr r2, [pc, #12] ; (800e48c <LoRaMacMibSetRequestConfirm+0x290>) + 800e480: f882 3068 strb.w r3, [r2, #104] ; 0x68 + 800e484: e716 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e486: bf00 nop + 800e488: 20001fdc .word 0x20001fdc + 800e48c: 20001868 .word 0x20001868 + 800e490: 080159b0 .word 0x080159b0 + 800e494: 4b90 ldr r3, [pc, #576] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e496: 6842 ldr r2, [r0, #4] + 800e498: 655a str r2, [r3, #84] ; 0x54 + 800e49a: e70b b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e49c: 4b8e ldr r3, [pc, #568] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e49e: 6842 ldr r2, [r0, #4] + 800e4a0: 659a str r2, [r3, #88] ; 0x58 + 800e4a2: e707 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e4a4: 4b8c ldr r3, [pc, #560] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4a6: 6842 ldr r2, [r0, #4] + 800e4a8: 65da str r2, [r3, #92] ; 0x5c + 800e4aa: e703 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e4ac: 4b8a ldr r3, [pc, #552] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4ae: 6842 ldr r2, [r0, #4] + 800e4b0: 661a str r2, [r3, #96] ; 0x60 + 800e4b2: e6ff b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e4b4: 4b88 ldr r3, [pc, #544] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4b6: 6842 ldr r2, [r0, #4] + 800e4b8: 665a str r2, [r3, #100] ; 0x64 + 800e4ba: e6fb b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e4bc: 4c86 ldr r4, [pc, #536] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4be: 7903 ldrb r3, [r0, #4] + 800e4c0: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800e4c4: f88d 3000 strb.w r3, [sp] + 800e4c8: 2206 movs r2, #6 + 800e4ca: 4669 mov r1, sp + 800e4cc: f001 fae3 bl 800fa96 <RegionVerify> + 800e4d0: 2800 cmp r0, #0 + 800e4d2: f43f aef6 beq.w 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e4d6: f89d 3000 ldrb.w r3, [sp] + 800e4da: f884 30dd strb.w r3, [r4, #221] ; 0xdd + 800e4de: e6e9 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e4e0: 4c7d ldr r4, [pc, #500] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e4e2: 7903 ldrb r3, [r0, #4] + 800e4e4: f88d 3000 strb.w r3, [sp] + 800e4e8: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800e4ec: f894 307c ldrb.w r3, [r4, #124] ; 0x7c + 800e4f0: f88d 3002 strb.w r3, [sp, #2] + 800e4f4: 2205 movs r2, #5 + 800e4f6: 4669 mov r1, sp + 800e4f8: f001 facd bl 800fa96 <RegionVerify> + 800e4fc: 2800 cmp r0, #0 + 800e4fe: f43f aee0 beq.w 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e502: f89d 3000 ldrb.w r3, [sp] + 800e506: f884 3039 strb.w r3, [r4, #57] ; 0x39 + 800e50a: e6d3 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e50c: 4c72 ldr r4, [pc, #456] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e50e: 7903 ldrb r3, [r0, #4] + 800e510: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800e514: f88d 3000 strb.w r3, [sp] + 800e518: 220a movs r2, #10 + 800e51a: 4669 mov r1, sp + 800e51c: f001 fabb bl 800fa96 <RegionVerify> + 800e520: 2800 cmp r0, #0 + 800e522: f43f aece beq.w 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e526: f89d 3000 ldrb.w r3, [sp] + 800e52a: f884 30dc strb.w r3, [r4, #220] ; 0xdc + 800e52e: e6c1 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e530: 4c69 ldr r4, [pc, #420] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e532: 7903 ldrb r3, [r0, #4] + 800e534: f894 0048 ldrb.w r0, [r4, #72] ; 0x48 + 800e538: f88d 3000 strb.w r3, [sp] + 800e53c: 2209 movs r2, #9 + 800e53e: 4669 mov r1, sp + 800e540: f001 faa9 bl 800fa96 <RegionVerify> + 800e544: 2800 cmp r0, #0 + 800e546: f43f aebc beq.w 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e54a: f89d 3000 ldrb.w r3, [sp] + 800e54e: f884 3038 strb.w r3, [r4, #56] ; 0x38 + 800e552: e6af b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e554: 4b60 ldr r3, [pc, #384] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e556: 6842 ldr r2, [r0, #4] + 800e558: f8c3 2094 str.w r2, [r3, #148] ; 0x94 + 800e55c: 64da str r2, [r3, #76] ; 0x4c + 800e55e: e6a9 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e560: 4b5d ldr r3, [pc, #372] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e562: 7902 ldrb r2, [r0, #4] + 800e564: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 800e568: f883 2050 strb.w r2, [r3, #80] ; 0x50 + 800e56c: e6a2 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e56e: 4b5a ldr r3, [pc, #360] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e570: 6842 ldr r2, [r0, #4] + 800e572: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 800e576: e69d b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e578: 4b57 ldr r3, [pc, #348] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e57a: 6842 ldr r2, [r0, #4] + 800e57c: f8c3 20cc str.w r2, [r3, #204] ; 0xcc + 800e580: e698 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e582: 2b01 cmp r3, #1 + 800e584: f040 80a3 bne.w 800e6ce <LoRaMacMibSetRequestConfirm+0x4d2> + 800e588: 4c54 ldr r4, [pc, #336] ; (800e6dc <LoRaMacMibSetRequestConfirm+0x4e0>) + 800e58a: 2124 movs r1, #36 ; 0x24 + 800e58c: 4620 mov r0, r4 + 800e58e: f003 fa13 bl 80119b8 <Crc32> + 800e592: 6a63 ldr r3, [r4, #36] ; 0x24 + 800e594: 4298 cmp r0, r3 + 800e596: d001 beq.n 800e59c <LoRaMacMibSetRequestConfirm+0x3a0> + 800e598: 2017 movs r0, #23 + 800e59a: e693 b.n 800e2c4 <LoRaMacMibSetRequestConfirm+0xc8> + 800e59c: 211c movs r1, #28 + 800e59e: f104 0028 add.w r0, r4, #40 ; 0x28 + 800e5a2: f003 fa09 bl 80119b8 <Crc32> + 800e5a6: 6c63 ldr r3, [r4, #68] ; 0x44 + 800e5a8: 4298 cmp r0, r3 + 800e5aa: d1f5 bne.n 800e598 <LoRaMacMibSetRequestConfirm+0x39c> + 800e5ac: 21fc movs r1, #252 ; 0xfc + 800e5ae: f104 0048 add.w r0, r4, #72 ; 0x48 + 800e5b2: f003 fa01 bl 80119b8 <Crc32> + 800e5b6: f8d4 3144 ldr.w r3, [r4, #324] ; 0x144 + 800e5ba: 4298 cmp r0, r3 + 800e5bc: d1ec bne.n 800e598 <LoRaMacMibSetRequestConfirm+0x39c> + 800e5be: 21d4 movs r1, #212 ; 0xd4 + 800e5c0: f504 70a4 add.w r0, r4, #328 ; 0x148 + 800e5c4: f003 f9f8 bl 80119b8 <Crc32> + 800e5c8: f8d4 321c ldr.w r3, [r4, #540] ; 0x21c + 800e5cc: 4298 cmp r0, r3 + 800e5ce: d1e3 bne.n 800e598 <LoRaMacMibSetRequestConfirm+0x39c> + 800e5d0: 2190 movs r1, #144 ; 0x90 + 800e5d2: f504 7008 add.w r0, r4, #544 ; 0x220 + 800e5d6: f003 f9ef bl 80119b8 <Crc32> + 800e5da: f8d4 32b0 ldr.w r3, [r4, #688] ; 0x2b0 + 800e5de: 4298 cmp r0, r3 + 800e5e0: d1da bne.n 800e598 <LoRaMacMibSetRequestConfirm+0x39c> + 800e5e2: f44f 6194 mov.w r1, #1184 ; 0x4a0 + 800e5e6: f504 702d add.w r0, r4, #692 ; 0x2b4 + 800e5ea: f003 f9e5 bl 80119b8 <Crc32> + 800e5ee: f8d4 3754 ldr.w r3, [r4, #1876] ; 0x754 + 800e5f2: 4298 cmp r0, r3 + 800e5f4: d1d0 bne.n 800e598 <LoRaMacMibSetRequestConfirm+0x39c> + 800e5f6: 2114 movs r1, #20 + 800e5f8: f504 60eb add.w r0, r4, #1880 ; 0x758 + 800e5fc: f003 f9dc bl 80119b8 <Crc32> + 800e600: f8d4 376c ldr.w r3, [r4, #1900] ; 0x76c + 800e604: 4298 cmp r0, r3 + 800e606: d1c7 bne.n 800e598 <LoRaMacMibSetRequestConfirm+0x39c> + 800e608: 4e33 ldr r6, [pc, #204] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e60a: 4621 mov r1, r4 + 800e60c: 4630 mov r0, r6 + 800e60e: f44f 62ee mov.w r2, #1904 ; 0x770 + 800e612: f003 f9bb bl 801198c <memcpy1> + 800e616: 4620 mov r0, r4 + 800e618: f44f 62ee mov.w r2, #1904 ; 0x770 + 800e61c: 2100 movs r1, #0 + 800e61e: f003 f9c9 bl 80119b4 <memset1> + 800e622: f895 3411 ldrb.w r3, [r5, #1041] ; 0x411 + 800e626: f885 33e0 strb.w r3, [r5, #992] ; 0x3e0 + 800e62a: 6f73 ldr r3, [r6, #116] ; 0x74 + 800e62c: f8c5 33e4 str.w r3, [r5, #996] ; 0x3e4 + 800e630: f896 307d ldrb.w r3, [r6, #125] ; 0x7d + 800e634: f885 33f0 strb.w r3, [r5, #1008] ; 0x3f0 + 800e638: f240 2301 movw r3, #513 ; 0x201 + 800e63c: f8a5 33f2 strh.w r3, [r5, #1010] ; 0x3f2 + 800e640: 4b27 ldr r3, [pc, #156] ; (800e6e0 <LoRaMacMibSetRequestConfirm+0x4e4>) + 800e642: f896 0119 ldrb.w r0, [r6, #281] ; 0x119 + 800e646: 6d9b ldr r3, [r3, #88] ; 0x58 + 800e648: 4798 blx r3 + 800e64a: e633 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e64c: 7983 ldrb r3, [r0, #6] + 800e64e: 2b01 cmp r3, #1 + 800e650: f63f ae37 bhi.w 800e2c2 <LoRaMacMibSetRequestConfirm+0xc6> + 800e654: 4b20 ldr r3, [pc, #128] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e656: 6842 ldr r2, [r0, #4] + 800e658: 6840 ldr r0, [r0, #4] + 800e65a: f8c3 2128 str.w r2, [r3, #296] ; 0x128 + 800e65e: f000 fe89 bl 800f374 <LoRaMacCryptoSetLrWanVersion> + 800e662: 2800 cmp r0, #0 + 800e664: f43f ae2e beq.w 800e2c4 <LoRaMacMibSetRequestConfirm+0xc8> + 800e668: e650 b.n 800e30c <LoRaMacMibSetRequestConfirm+0x110> + 800e66a: 4b1b ldr r3, [pc, #108] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e66c: 6842 ldr r2, [r0, #4] + 800e66e: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 800e672: e61f b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e674: 4b18 ldr r3, [pc, #96] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e676: 8882 ldrh r2, [r0, #4] + 800e678: f8a3 2088 strh.w r2, [r3, #136] ; 0x88 + 800e67c: e61a b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e67e: 4b16 ldr r3, [pc, #88] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e680: 8882 ldrh r2, [r0, #4] + 800e682: f8a3 208a strh.w r2, [r3, #138] ; 0x8a + 800e686: e615 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e688: 4b13 ldr r3, [pc, #76] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e68a: 8882 ldrh r2, [r0, #4] + 800e68c: f8a3 20d0 strh.w r2, [r3, #208] ; 0xd0 + 800e690: e610 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e692: 4b11 ldr r3, [pc, #68] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e694: 8882 ldrh r2, [r0, #4] + 800e696: f8a3 20d2 strh.w r2, [r3, #210] ; 0xd2 + 800e69a: e60b b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e69c: 4b0e ldr r3, [pc, #56] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e69e: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e6a2: b10a cbz r2, 800e6a8 <LoRaMacMibSetRequestConfirm+0x4ac> + 800e6a4: 2a06 cmp r2, #6 + 800e6a6: d114 bne.n 800e6d2 <LoRaMacMibSetRequestConfirm+0x4d6> + 800e6a8: 88a2 ldrh r2, [r4, #4] + 800e6aa: f8a3 274c strh.w r2, [r3, #1868] ; 0x74c + 800e6ae: e601 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e6b0: 4b09 ldr r3, [pc, #36] ; (800e6d8 <LoRaMacMibSetRequestConfirm+0x4dc>) + 800e6b2: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e6b6: b10a cbz r2, 800e6bc <LoRaMacMibSetRequestConfirm+0x4c0> + 800e6b8: 2a06 cmp r2, #6 + 800e6ba: d10a bne.n 800e6d2 <LoRaMacMibSetRequestConfirm+0x4d6> + 800e6bc: 6862 ldr r2, [r4, #4] + 800e6be: f8c3 2750 str.w r2, [r3, #1872] ; 0x750 + 800e6c2: e5f7 b.n 800e2b4 <LoRaMacMibSetRequestConfirm+0xb8> + 800e6c4: b002 add sp, #8 + 800e6c6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 800e6ca: f000 bb57 b.w 800ed7c <LoRaMacMibClassBSetRequestConfirm> + 800e6ce: 2001 movs r0, #1 + 800e6d0: e5f8 b.n 800e2c4 <LoRaMacMibSetRequestConfirm+0xc8> + 800e6d2: 2018 movs r0, #24 + 800e6d4: e5f6 b.n 800e2c4 <LoRaMacMibSetRequestConfirm+0xc8> + 800e6d6: bf00 nop + 800e6d8: 20001868 .word 0x20001868 + 800e6dc: 200010f8 .word 0x200010f8 + 800e6e0: 080159b0 .word 0x080159b0 + +0800e6e4 <LoRaMacMlmeRequest>: + 800e6e4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800e6e8: b086 sub sp, #24 + 800e6ea: 2300 movs r3, #0 + 800e6ec: f8ad 3000 strh.w r3, [sp] + 800e6f0: 4606 mov r6, r0 + 800e6f2: 2800 cmp r0, #0 + 800e6f4: f000 80e2 beq.w 800e8bc <LoRaMacMlmeRequest+0x1d8> + 800e6f8: f7fe fd7e bl 800d1f8 <LoRaMacIsBusy> + 800e6fc: b120 cbz r0, 800e708 <LoRaMacMlmeRequest+0x24> + 800e6fe: 2401 movs r4, #1 + 800e700: 4620 mov r0, r4 + 800e702: b006 add sp, #24 + 800e704: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800e708: f000 fd2c bl 800f164 <LoRaMacConfirmQueueIsFull> + 800e70c: 2800 cmp r0, #0 + 800e70e: d1f6 bne.n 800e6fe <LoRaMacMlmeRequest+0x1a> + 800e710: f000 fd22 bl 800f158 <LoRaMacConfirmQueueGetCnt> + 800e714: 4601 mov r1, r0 + 800e716: b918 cbnz r0, 800e720 <LoRaMacMlmeRequest+0x3c> + 800e718: 4869 ldr r0, [pc, #420] ; (800e8c0 <LoRaMacMlmeRequest+0x1dc>) + 800e71a: 2214 movs r2, #20 + 800e71c: f003 f94a bl 80119b4 <memset1> + 800e720: 4d68 ldr r5, [pc, #416] ; (800e8c4 <LoRaMacMlmeRequest+0x1e0>) + 800e722: f895 3481 ldrb.w r3, [r5, #1153] ; 0x481 + 800e726: 2201 movs r2, #1 + 800e728: f043 0304 orr.w r3, r3, #4 + 800e72c: f885 2449 strb.w r2, [r5, #1097] ; 0x449 + 800e730: f885 3481 strb.w r3, [r5, #1153] ; 0x481 + 800e734: 7833 ldrb r3, [r6, #0] + 800e736: f88d 3004 strb.w r3, [sp, #4] + 800e73a: 2100 movs r1, #0 + 800e73c: 3b01 subs r3, #1 + 800e73e: f88d 2005 strb.w r2, [sp, #5] + 800e742: f88d 1007 strb.w r1, [sp, #7] + 800e746: 2b0d cmp r3, #13 + 800e748: f200 80b0 bhi.w 800e8ac <LoRaMacMlmeRequest+0x1c8> + 800e74c: e8df f003 tbb [pc, r3] + 800e750: aeaeae07 .word 0xaeaeae07 + 800e754: ae7d5a52 .word 0xae7d5a52 + 800e758: a2ae85ae .word 0xa2ae85ae + 800e75c: 9e8f .short 0x9e8f + 800e75e: f8d5 4340 ldr.w r4, [r5, #832] ; 0x340 + 800e762: f014 0420 ands.w r4, r4, #32 + 800e766: d1ca bne.n 800e6fe <LoRaMacMlmeRequest+0x1a> + 800e768: f8df 815c ldr.w r8, [pc, #348] ; 800e8c8 <LoRaMacMlmeRequest+0x1e4> + 800e76c: 4f57 ldr r7, [pc, #348] ; (800e8cc <LoRaMacMlmeRequest+0x1e8>) + 800e76e: f7fe f8b7 bl 800c8e0 <ResetMacParameters.constprop.0> + 800e772: 4622 mov r2, r4 + 800e774: f996 1005 ldrsb.w r1, [r6, #5] + 800e778: f898 0048 ldrb.w r0, [r8, #72] ; 0x48 + 800e77c: f001 f9e5 bl 800fb4a <RegionAlternateDr> + 800e780: f888 0039 strb.w r0, [r8, #57] ; 0x39 + 800e784: 79b3 ldrb r3, [r6, #6] + 800e786: f888 3038 strb.w r3, [r8, #56] ; 0x38 + 800e78a: 4620 mov r0, r4 + 800e78c: 2307 movs r3, #7 + 800e78e: f88d 3005 strb.w r3, [sp, #5] + 800e792: f7fe f837 bl 800c804 <SwitchClass> + 800e796: 23ff movs r3, #255 ; 0xff + 800e798: f507 7086 add.w r0, r7, #268 ; 0x10c + 800e79c: f8a5 310c strh.w r3, [r5, #268] ; 0x10c + 800e7a0: f885 4104 strb.w r4, [r5, #260] ; 0x104 + 800e7a4: f8c5 7108 str.w r7, [r5, #264] ; 0x108 + 800e7a8: f003 f81a bl 80117e0 <SecureElementGetJoinEui> + 800e7ac: f507 708a add.w r0, r7, #276 ; 0x114 + 800e7b0: f002 ffd0 bl 8011754 <SecureElementGetDevEui> + 800e7b4: 4620 mov r0, r4 + 800e7b6: f7fd fe7f bl 800c4b8 <ScheduleTx> + 800e7ba: 4604 mov r4, r0 + 800e7bc: b140 cbz r0, 800e7d0 <LoRaMacMlmeRequest+0xec> + 800e7be: f996 1005 ldrsb.w r1, [r6, #5] + 800e7c2: f898 0048 ldrb.w r0, [r8, #72] ; 0x48 + 800e7c6: 2201 movs r2, #1 + 800e7c8: f001 f9bf bl 800fb4a <RegionAlternateDr> + 800e7cc: f888 0039 strb.w r0, [r8, #57] ; 0x39 + 800e7d0: f8d5 3484 ldr.w r3, [r5, #1156] ; 0x484 + 800e7d4: 6133 str r3, [r6, #16] + 800e7d6: 2c00 cmp r4, #0 + 800e7d8: d06c beq.n 800e8b4 <LoRaMacMlmeRequest+0x1d0> + 800e7da: f000 fcbd bl 800f158 <LoRaMacConfirmQueueGetCnt> + 800e7de: 2800 cmp r0, #0 + 800e7e0: d18e bne.n 800e700 <LoRaMacMlmeRequest+0x1c> + 800e7e2: f895 3481 ldrb.w r3, [r5, #1153] ; 0x481 + 800e7e6: f885 0410 strb.w r0, [r5, #1040] ; 0x410 + 800e7ea: f360 0382 bfi r3, r0, #2, #1 + 800e7ee: f885 3481 strb.w r3, [r5, #1153] ; 0x481 + 800e7f2: e785 b.n 800e700 <LoRaMacMlmeRequest+0x1c> + 800e7f4: 2200 movs r2, #0 + 800e7f6: 4669 mov r1, sp + 800e7f8: 2002 movs r0, #2 + 800e7fa: f000 fadb bl 800edb4 <LoRaMacCommandsAddCmd> + 800e7fe: b310 cbz r0, 800e846 <LoRaMacMlmeRequest+0x162> + 800e800: 2413 movs r4, #19 + 800e802: e7e5 b.n 800e7d0 <LoRaMacMlmeRequest+0xec> + 800e804: f895 3411 ldrb.w r3, [r5, #1041] ; 0x411 + 800e808: f88d 3008 strb.w r3, [sp, #8] + 800e80c: 4b2e ldr r3, [pc, #184] ; (800e8c8 <LoRaMacMlmeRequest+0x1e4>) + 800e80e: 88b2 ldrh r2, [r6, #4] + 800e810: f893 1039 ldrb.w r1, [r3, #57] ; 0x39 + 800e814: f88d 1009 strb.w r1, [sp, #9] + 800e818: f893 1038 ldrb.w r1, [r3, #56] ; 0x38 + 800e81c: f88d 100a strb.w r1, [sp, #10] + 800e820: f8d3 1080 ldr.w r1, [r3, #128] ; 0x80 + 800e824: 9103 str r1, [sp, #12] + 800e826: f8d3 1084 ldr.w r1, [r3, #132] ; 0x84 + 800e82a: 9104 str r1, [sp, #16] + 800e82c: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e830: f8ad 2014 strh.w r2, [sp, #20] + 800e834: a902 add r1, sp, #8 + 800e836: f001 f99d bl 800fb74 <RegionSetContinuousWave> + 800e83a: f8d5 3340 ldr.w r3, [r5, #832] ; 0x340 + 800e83e: f043 0302 orr.w r3, r3, #2 + 800e842: f8c5 3340 str.w r3, [r5, #832] ; 0x340 + 800e846: 2400 movs r4, #0 + 800e848: e7c2 b.n 800e7d0 <LoRaMacMlmeRequest+0xec> + 800e84a: 4b21 ldr r3, [pc, #132] ; (800e8d0 <LoRaMacMlmeRequest+0x1ec>) + 800e84c: 88b2 ldrh r2, [r6, #4] + 800e84e: f996 100c ldrsb.w r1, [r6, #12] + 800e852: 68b0 ldr r0, [r6, #8] + 800e854: 6bdb ldr r3, [r3, #60] ; 0x3c + 800e856: 4798 blx r3 + 800e858: e7ef b.n 800e83a <LoRaMacMlmeRequest+0x156> + 800e85a: a902 add r1, sp, #8 + 800e85c: 200d movs r0, #13 + 800e85e: f000 fb27 bl 800eeb0 <LoRaMacCommandsGetCmd> + 800e862: 2800 cmp r0, #0 + 800e864: d0ef beq.n 800e846 <LoRaMacMlmeRequest+0x162> + 800e866: 2200 movs r2, #0 + 800e868: 4669 mov r1, sp + 800e86a: 200d movs r0, #13 + 800e86c: e7c5 b.n 800e7fa <LoRaMacMlmeRequest+0x116> + 800e86e: 4b16 ldr r3, [pc, #88] ; (800e8c8 <LoRaMacMlmeRequest+0x1e4>) + 800e870: f893 3118 ldrb.w r3, [r3, #280] ; 0x118 + 800e874: b9d3 cbnz r3, 800e8ac <LoRaMacMlmeRequest+0x1c8> + 800e876: 7934 ldrb r4, [r6, #4] + 800e878: f004 0007 and.w r0, r4, #7 + 800e87c: f000 fa77 bl 800ed6e <LoRaMacClassBSetPingSlotInfo> + 800e880: f88d 4000 strb.w r4, [sp] + 800e884: 2201 movs r2, #1 + 800e886: 4669 mov r1, sp + 800e888: 2010 movs r0, #16 + 800e88a: e7b6 b.n 800e7fa <LoRaMacMlmeRequest+0x116> + 800e88c: 2200 movs r2, #0 + 800e88e: 4669 mov r1, sp + 800e890: 2012 movs r0, #18 + 800e892: e7b2 b.n 800e7fa <LoRaMacMlmeRequest+0x116> + 800e894: f88d 2007 strb.w r2, [sp, #7] + 800e898: f000 fa5a bl 800ed50 <LoRaMacClassBIsAcquisitionInProgress> + 800e89c: 4604 mov r4, r0 + 800e89e: b938 cbnz r0, 800e8b0 <LoRaMacMlmeRequest+0x1cc> + 800e8a0: f000 fa53 bl 800ed4a <LoRaMacClassBSetBeaconState> + 800e8a4: 4620 mov r0, r4 + 800e8a6: f000 fa55 bl 800ed54 <LoRaMacClassBBeaconTimerEvent> + 800e8aa: e791 b.n 800e7d0 <LoRaMacMlmeRequest+0xec> + 800e8ac: 2402 movs r4, #2 + 800e8ae: e78f b.n 800e7d0 <LoRaMacMlmeRequest+0xec> + 800e8b0: 2401 movs r4, #1 + 800e8b2: e78d b.n 800e7d0 <LoRaMacMlmeRequest+0xec> + 800e8b4: a801 add r0, sp, #4 + 800e8b6: f000 fba1 bl 800effc <LoRaMacConfirmQueueAdd> + 800e8ba: e721 b.n 800e700 <LoRaMacMlmeRequest+0x1c> + 800e8bc: 2403 movs r4, #3 + 800e8be: e71f b.n 800e700 <LoRaMacMlmeRequest+0x1c> + 800e8c0: 20002424 .word 0x20002424 + 800e8c4: 20001fdc .word 0x20001fdc + 800e8c8: 20001868 .word 0x20001868 + 800e8cc: 20001fde .word 0x20001fde + 800e8d0: 080159b0 .word 0x080159b0 + +0800e8d4 <LoRaMacMcpsRequest>: + 800e8d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800e8d8: b091 sub sp, #68 ; 0x44 + 800e8da: 2600 movs r6, #0 + 800e8dc: 9103 str r1, [sp, #12] + 800e8de: 4605 mov r5, r0 + 800e8e0: b918 cbnz r0, 800e8ea <LoRaMacMcpsRequest+0x16> + 800e8e2: 2003 movs r0, #3 + 800e8e4: b011 add sp, #68 ; 0x44 + 800e8e6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800e8ea: f7fe fc85 bl 800d1f8 <LoRaMacIsBusy> + 800e8ee: 4682 mov sl, r0 + 800e8f0: 2800 cmp r0, #0 + 800e8f2: f040 8164 bne.w 800ebbe <LoRaMacMcpsRequest+0x2ea> + 800e8f6: 4cb8 ldr r4, [pc, #736] ; (800ebd8 <LoRaMacMcpsRequest+0x304>) + 800e8f8: 2214 movs r2, #20 + 800e8fa: 4601 mov r1, r0 + 800e8fc: 4607 mov r7, r0 + 800e8fe: f204 4034 addw r0, r4, #1076 ; 0x434 + 800e902: f003 f857 bl 80119b4 <memset1> + 800e906: 2301 movs r3, #1 + 800e908: f884 3435 strb.w r3, [r4, #1077] ; 0x435 + 800e90c: f884 340e strb.w r3, [r4, #1038] ; 0x40e + 800e910: 782a ldrb r2, [r5, #0] + 800e912: 429a cmp r2, r3 + 800e914: f000 80b0 beq.w 800ea78 <LoRaMacMcpsRequest+0x1a4> + 800e918: 2a03 cmp r2, #3 + 800e91a: f000 80bf beq.w 800ea9c <LoRaMacMcpsRequest+0x1c8> + 800e91e: 2a00 cmp r2, #0 + 800e920: f040 80c9 bne.w 800eab6 <LoRaMacMcpsRequest+0x1e2> + 800e924: f884 340d strb.w r3, [r4, #1037] ; 0x40d + 800e928: 2202 movs r2, #2 + 800e92a: f895 9004 ldrb.w r9, [r5, #4] + 800e92e: f8d5 8008 ldr.w r8, [r5, #8] + 800e932: 89ae ldrh r6, [r5, #12] + 800e934: f995 b00e ldrsb.w fp, [r5, #14] + 800e938: f362 1747 bfi r7, r2, #5, #3 + 800e93c: 469a mov sl, r3 + 800e93e: 4ba7 ldr r3, [pc, #668] ; (800ebdc <LoRaMacMcpsRequest+0x308>) + 800e940: 2402 movs r4, #2 + 800e942: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800e946: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e94a: f88d 4024 strb.w r4, [sp, #36] ; 0x24 + 800e94e: a909 add r1, sp, #36 ; 0x24 + 800e950: f88d 2026 strb.w r2, [sp, #38] ; 0x26 + 800e954: f001 f88c bl 800fa70 <RegionGetPhyParam> + 800e958: f1ba 0f00 cmp.w sl, #0 + 800e95c: f000 812d beq.w 800ebba <LoRaMacMcpsRequest+0x2e6> + 800e960: 4b9e ldr r3, [pc, #632] ; (800ebdc <LoRaMacMcpsRequest+0x308>) + 800e962: f893 211a ldrb.w r2, [r3, #282] ; 0x11a + 800e966: b9b2 cbnz r2, 800e996 <LoRaMacMcpsRequest+0xc2> + 800e968: b240 sxtb r0, r0 + 800e96a: 4558 cmp r0, fp + 800e96c: bfb8 it lt + 800e96e: 4658 movlt r0, fp + 800e970: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800e974: f88d 0014 strb.w r0, [sp, #20] + 800e978: f88d 2016 strb.w r2, [sp, #22] + 800e97c: f893 0048 ldrb.w r0, [r3, #72] ; 0x48 + 800e980: 2205 movs r2, #5 + 800e982: a905 add r1, sp, #20 + 800e984: f001 f887 bl 800fa96 <RegionVerify> + 800e988: 2800 cmp r0, #0 + 800e98a: d0aa beq.n 800e8e2 <LoRaMacMcpsRequest+0xe> + 800e98c: 4b93 ldr r3, [pc, #588] ; (800ebdc <LoRaMacMcpsRequest+0x308>) + 800e98e: f89d 2014 ldrb.w r2, [sp, #20] + 800e992: f883 2039 strb.w r2, [r3, #57] ; 0x39 + 800e996: 8f19 ldrh r1, [r3, #56] ; 0x38 + 800e998: 8f1a ldrh r2, [r3, #56] ; 0x38 + 800e99a: f893 012c ldrb.w r0, [r3, #300] ; 0x12c + 800e99e: 9102 str r1, [sp, #8] + 800e9a0: 6a99 ldr r1, [r3, #40] ; 0x28 + 800e9a2: 9106 str r1, [sp, #24] + 800e9a4: ba52 rev16 r2, r2 + 800e9a6: 2800 cmp r0, #0 + 800e9a8: f000 8105 beq.w 800ebb6 <LoRaMacMcpsRequest+0x2e2> + 800e9ac: f893 011b ldrb.w r0, [r3, #283] ; 0x11b + 800e9b0: b900 cbnz r0, 800e9b4 <LoRaMacMcpsRequest+0xe0> + 800e9b2: 6318 str r0, [r3, #48] ; 0x30 + 800e9b4: f893 0118 ldrb.w r0, [r3, #280] ; 0x118 + 800e9b8: f8ad 203c strh.w r2, [sp, #60] ; 0x3c + 800e9bc: 3801 subs r0, #1 + 800e9be: f893 207c ldrb.w r2, [r3, #124] ; 0x7c + 800e9c2: f88d 203e strb.w r2, [sp, #62] ; 0x3e + 800e9c6: f1d0 0b00 rsbs fp, r0, #0 + 800e9ca: f893 2048 ldrb.w r2, [r3, #72] ; 0x48 + 800e9ce: f88d 203f strb.w r2, [sp, #63] ; 0x3f + 800e9d2: eb4b 0b00 adc.w fp, fp, r0 + 800e9d6: 4a82 ldr r2, [pc, #520] ; (800ebe0 <LoRaMacMcpsRequest+0x30c>) + 800e9d8: f893 003a ldrb.w r0, [r3, #58] ; 0x3a + 800e9dc: f893 411a ldrb.w r4, [r3, #282] ; 0x11a + 800e9e0: 9001 str r0, [sp, #4] + 800e9e2: 910d str r1, [sp, #52] ; 0x34 + 800e9e4: f04f 0001 mov.w r0, #1 + 800e9e8: f8d3 1088 ldr.w r1, [r3, #136] ; 0x88 + 800e9ec: f8d3 3128 ldr.w r3, [r3, #296] ; 0x128 + 800e9f0: f88d 0030 strb.w r0, [sp, #48] ; 0x30 + 800e9f4: 910e str r1, [sp, #56] ; 0x38 + 800e9f6: 930b str r3, [sp, #44] ; 0x2c + 800e9f8: 1c51 adds r1, r2, #1 + 800e9fa: ab06 add r3, sp, #24 + 800e9fc: a80b add r0, sp, #44 ; 0x2c + 800e9fe: f88d 4031 strb.w r4, [sp, #49] ; 0x31 + 800ea02: f000 f933 bl 800ec6c <LoRaMacAdrCalcNext> + 800ea06: 9b01 ldr r3, [sp, #4] + 800ea08: ea4f 1b0b mov.w fp, fp, lsl #4 + 800ea0c: ea4b 1b43 orr.w fp, fp, r3, lsl #5 + 800ea10: f04f 0a00 mov.w sl, #0 + 800ea14: ea4b 1b80 orr.w fp, fp, r0, lsl #6 + 800ea18: ea4b 13c4 orr.w r3, fp, r4, lsl #7 + 800ea1c: 45d0 cmp r8, sl + 800ea1e: 4c6e ldr r4, [pc, #440] ; (800ebd8 <LoRaMacMcpsRequest+0x304>) + 800ea20: 9301 str r3, [sp, #4] + 800ea22: bf08 it eq + 800ea24: 4656 moveq r6, sl + 800ea26: 4632 mov r2, r6 + 800ea28: 4641 mov r1, r8 + 800ea2a: f504 709c add.w r0, r4, #312 ; 0x138 + 800ea2e: 469b mov fp, r3 + 800ea30: e9cd aa07 strd sl, sl, [sp, #28] + 800ea34: f8a4 a000 strh.w sl, [r4] + 800ea38: f884 a410 strb.w sl, [r4, #1040] ; 0x410 + 800ea3c: f002 ffa6 bl 801198c <memcpy1> + 800ea40: b2f9 uxtb r1, r7 + 800ea42: 70a7 strb r7, [r4, #2] + 800ea44: f3c7 1742 ubfx r7, r7, #5, #3 + 800ea48: b2f2 uxtb r2, r6 + 800ea4a: 2f04 cmp r7, #4 + 800ea4c: 4e63 ldr r6, [pc, #396] ; (800ebdc <LoRaMacMcpsRequest+0x308>) + 800ea4e: 9b01 ldr r3, [sp, #4] + 800ea50: f884 2237 strb.w r2, [r4, #567] ; 0x237 + 800ea54: d033 beq.n 800eabe <LoRaMacMcpsRequest+0x1ea> + 800ea56: 2f07 cmp r7, #7 + 800ea58: f000 809d beq.w 800eb96 <LoRaMacMcpsRequest+0x2c2> + 800ea5c: 2f02 cmp r7, #2 + 800ea5e: d032 beq.n 800eac6 <LoRaMacMcpsRequest+0x1f2> + 800ea60: 2002 movs r0, #2 + 800ea62: 9b02 ldr r3, [sp, #8] + 800ea64: 8733 strh r3, [r6, #56] ; 0x38 + 800ea66: 4b5c ldr r3, [pc, #368] ; (800ebd8 <LoRaMacMcpsRequest+0x304>) + 800ea68: 2200 movs r2, #0 + 800ea6a: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + 800ea6e: 4b5a ldr r3, [pc, #360] ; (800ebd8 <LoRaMacMcpsRequest+0x304>) + 800ea70: f8d3 3484 ldr.w r3, [r3, #1156] ; 0x484 + 800ea74: 612b str r3, [r5, #16] + 800ea76: e735 b.n 800e8e4 <LoRaMacMcpsRequest+0x10> + 800ea78: 7beb ldrb r3, [r5, #15] + 800ea7a: 2b08 cmp r3, #8 + 800ea7c: bf28 it cs + 800ea7e: 2308 movcs r3, #8 + 800ea80: f884 340d strb.w r3, [r4, #1037] ; 0x40d + 800ea84: 2304 movs r3, #4 + 800ea86: f895 9004 ldrb.w r9, [r5, #4] + 800ea8a: f8d5 8008 ldr.w r8, [r5, #8] + 800ea8e: 89ae ldrh r6, [r5, #12] + 800ea90: f995 b00e ldrsb.w fp, [r5, #14] + 800ea94: f363 1747 bfi r7, r3, #5, #3 + 800ea98: 4692 mov sl, r2 + 800ea9a: e750 b.n 800e93e <LoRaMacMcpsRequest+0x6a> + 800ea9c: f884 340d strb.w r3, [r4, #1037] ; 0x40d + 800eaa0: f8d5 8004 ldr.w r8, [r5, #4] + 800eaa4: 892e ldrh r6, [r5, #8] + 800eaa6: f995 b00a ldrsb.w fp, [r5, #10] + 800eaaa: f067 071f orn r7, r7, #31 + 800eaae: 469a mov sl, r3 + 800eab0: f04f 0900 mov.w r9, #0 + 800eab4: e743 b.n 800e93e <LoRaMacMcpsRequest+0x6a> + 800eab6: 46d3 mov fp, sl + 800eab8: 46d0 mov r8, sl + 800eaba: 46d1 mov r9, sl + 800eabc: e73f b.n 800e93e <LoRaMacMcpsRequest+0x6a> + 800eabe: f04f 0001 mov.w r0, #1 + 800eac2: f884 0410 strb.w r0, [r4, #1040] ; 0x410 + 800eac6: 4f47 ldr r7, [pc, #284] ; (800ebe4 <LoRaMacMcpsRequest+0x310>) + 800eac8: f884 110d strb.w r1, [r4, #269] ; 0x10d + 800eacc: 2004 movs r0, #4 + 800eace: f884 0104 strb.w r0, [r4, #260] ; 0x104 + 800ead2: 20ff movs r0, #255 ; 0xff + 800ead4: f8d6 10e4 ldr.w r1, [r6, #228] ; 0xe4 + 800ead8: f884 010c strb.w r0, [r4, #268] ; 0x10c + 800eadc: f884 3114 strb.w r3, [r4, #276] ; 0x114 + 800eae0: a807 add r0, sp, #28 + 800eae2: f507 739b add.w r3, r7, #310 ; 0x136 + 800eae6: f8c4 7108 str.w r7, [r4, #264] ; 0x108 + 800eaea: f884 9128 strb.w r9, [r4, #296] ; 0x128 + 800eaee: f8c4 1110 str.w r1, [r4, #272] ; 0x110 + 800eaf2: f884 2130 strb.w r2, [r4, #304] ; 0x130 + 800eaf6: f8c4 312c str.w r3, [r4, #300] ; 0x12c + 800eafa: f000 fc43 bl 800f384 <LoRaMacCryptoGetFCntUp> + 800eafe: 2800 cmp r0, #0 + 800eb00: d157 bne.n 800ebb2 <LoRaMacMcpsRequest+0x2de> + 800eb02: 9b07 ldr r3, [sp, #28] + 800eb04: f8a4 0438 strh.w r0, [r4, #1080] ; 0x438 + 800eb08: a808 add r0, sp, #32 + 800eb0a: f8a4 3116 strh.w r3, [r4, #278] ; 0x116 + 800eb0e: f8c4 3440 str.w r3, [r4, #1088] ; 0x440 + 800eb12: f000 f9fb bl 800ef0c <LoRaMacCommandsGetSizeSerializedCmds> + 800eb16: bb60 cbnz r0, 800eb72 <LoRaMacMcpsRequest+0x29e> + 800eb18: 9b08 ldr r3, [sp, #32] + 800eb1a: b1ab cbz r3, 800eb48 <LoRaMacMcpsRequest+0x274> + 800eb1c: f996 0039 ldrsb.w r0, [r6, #57] ; 0x39 + 800eb20: f7fd fba0 bl 800c264 <GetMaxAppPayloadWithoutFOptsLength> + 800eb24: f894 3237 ldrb.w r3, [r4, #567] ; 0x237 + 800eb28: b32b cbz r3, 800eb76 <LoRaMacMcpsRequest+0x2a2> + 800eb2a: 9b08 ldr r3, [sp, #32] + 800eb2c: 2b0f cmp r3, #15 + 800eb2e: d819 bhi.n 800eb64 <LoRaMacMcpsRequest+0x290> + 800eb30: f507 728b add.w r2, r7, #278 ; 0x116 + 800eb34: a908 add r1, sp, #32 + 800eb36: 200f movs r0, #15 + 800eb38: f000 f9f4 bl 800ef24 <LoRaMacCommandsSerializeCmds> + 800eb3c: b9c8 cbnz r0, 800eb72 <LoRaMacMcpsRequest+0x29e> + 800eb3e: 9b08 ldr r3, [sp, #32] + 800eb40: f363 0b03 bfi fp, r3, #0, #4 + 800eb44: f884 b114 strb.w fp, [r4, #276] ; 0x114 + 800eb48: 9803 ldr r0, [sp, #12] + 800eb4a: f7fd fcb5 bl 800c4b8 <ScheduleTx> + 800eb4e: 2800 cmp r0, #0 + 800eb50: d187 bne.n 800ea62 <LoRaMacMcpsRequest+0x18e> + 800eb52: 9b06 ldr r3, [sp, #24] + 800eb54: f886 003a strb.w r0, [r6, #58] ; 0x3a + 800eb58: 62b3 str r3, [r6, #40] ; 0x28 + 800eb5a: f000 f9b7 bl 800eecc <LoRaMacCommandsRemoveNoneStickyCmds> + 800eb5e: b380 cbz r0, 800ebc2 <LoRaMacMcpsRequest+0x2ee> + 800eb60: 2013 movs r0, #19 + 800eb62: e780 b.n 800ea66 <LoRaMacMcpsRequest+0x192> + 800eb64: f207 4286 addw r2, r7, #1158 ; 0x486 + 800eb68: a908 add r1, sp, #32 + 800eb6a: f000 f9db bl 800ef24 <LoRaMacCommandsSerializeCmds> + 800eb6e: 2800 cmp r0, #0 + 800eb70: d0ea beq.n 800eb48 <LoRaMacMcpsRequest+0x274> + 800eb72: 2013 movs r0, #19 + 800eb74: e775 b.n 800ea62 <LoRaMacMcpsRequest+0x18e> + 800eb76: f207 4786 addw r7, r7, #1158 ; 0x486 + 800eb7a: 463a mov r2, r7 + 800eb7c: a908 add r1, sp, #32 + 800eb7e: f000 f9d1 bl 800ef24 <LoRaMacCommandsSerializeCmds> + 800eb82: 2800 cmp r0, #0 + 800eb84: d1f5 bne.n 800eb72 <LoRaMacMcpsRequest+0x29e> + 800eb86: 9b08 ldr r3, [sp, #32] + 800eb88: f884 0128 strb.w r0, [r4, #296] ; 0x128 + 800eb8c: f8c4 712c str.w r7, [r4, #300] ; 0x12c + 800eb90: f884 3130 strb.w r3, [r4, #304] ; 0x130 + 800eb94: e7d8 b.n 800eb48 <LoRaMacMcpsRequest+0x274> + 800eb96: f1b8 0f00 cmp.w r8, #0 + 800eb9a: d0d5 beq.n 800eb48 <LoRaMacMcpsRequest+0x274> + 800eb9c: 2a00 cmp r2, #0 + 800eb9e: d0d3 beq.n 800eb48 <LoRaMacMcpsRequest+0x274> + 800eba0: 4641 mov r1, r8 + 800eba2: 1ce0 adds r0, r4, #3 + 800eba4: f002 fef2 bl 801198c <memcpy1> + 800eba8: f894 3237 ldrb.w r3, [r4, #567] ; 0x237 + 800ebac: 3301 adds r3, #1 + 800ebae: 8023 strh r3, [r4, #0] + 800ebb0: e7ca b.n 800eb48 <LoRaMacMcpsRequest+0x274> + 800ebb2: 2012 movs r0, #18 + 800ebb4: e755 b.n 800ea62 <LoRaMacMcpsRequest+0x18e> + 800ebb6: 2007 movs r0, #7 + 800ebb8: e755 b.n 800ea66 <LoRaMacMcpsRequest+0x192> + 800ebba: 4620 mov r0, r4 + 800ebbc: e757 b.n 800ea6e <LoRaMacMcpsRequest+0x19a> + 800ebbe: 2001 movs r0, #1 + 800ebc0: e690 b.n 800e8e4 <LoRaMacMcpsRequest+0x10> + 800ebc2: 782b ldrb r3, [r5, #0] + 800ebc4: f884 3434 strb.w r3, [r4, #1076] ; 0x434 + 800ebc8: f894 3481 ldrb.w r3, [r4, #1153] ; 0x481 + 800ebcc: f043 0301 orr.w r3, r3, #1 + 800ebd0: f884 3481 strb.w r3, [r4, #1153] ; 0x481 + 800ebd4: e74b b.n 800ea6e <LoRaMacMcpsRequest+0x19a> + 800ebd6: bf00 nop + 800ebd8: 20001fdc .word 0x20001fdc + 800ebdc: 20001868 .word 0x20001868 + 800ebe0: 200018a0 .word 0x200018a0 + 800ebe4: 20001fde .word 0x20001fde + +0800ebe8 <LoRaMacTestSetDutyCycleOn>: + 800ebe8: b537 push {r0, r1, r2, r4, r5, lr} + 800ebea: 4d0b ldr r5, [pc, #44] ; (800ec18 <LoRaMacTestSetDutyCycleOn+0x30>) + 800ebec: f88d 0004 strb.w r0, [sp, #4] + 800ebf0: 4604 mov r4, r0 + 800ebf2: 220f movs r2, #15 + 800ebf4: f895 0048 ldrb.w r0, [r5, #72] ; 0x48 + 800ebf8: a901 add r1, sp, #4 + 800ebfa: f000 ff4c bl 800fa96 <RegionVerify> + 800ebfe: b140 cbz r0, 800ec12 <LoRaMacTestSetDutyCycleOn+0x2a> + 800ec00: 4a06 ldr r2, [pc, #24] ; (800ec1c <LoRaMacTestSetDutyCycleOn+0x34>) + 800ec02: f885 411c strb.w r4, [r5, #284] ; 0x11c + 800ec06: f892 3481 ldrb.w r3, [r2, #1153] ; 0x481 + 800ec0a: f043 0320 orr.w r3, r3, #32 + 800ec0e: f882 3481 strb.w r3, [r2, #1153] ; 0x481 + 800ec12: b003 add sp, #12 + 800ec14: bd30 pop {r4, r5, pc} + 800ec16: bf00 nop + 800ec18: 20001868 .word 0x20001868 + 800ec1c: 20001fdc .word 0x20001fdc + +0800ec20 <LoRaMacDeInitialization>: + 800ec20: b510 push {r4, lr} + 800ec22: f7ff f933 bl 800de8c <LoRaMacStop> + 800ec26: 4604 mov r4, r0 + 800ec28: b9a0 cbnz r0, 800ec54 <LoRaMacDeInitialization+0x34> + 800ec2a: 480b ldr r0, [pc, #44] ; (800ec58 <LoRaMacDeInitialization+0x38>) + 800ec2c: f005 f9d2 bl 8013fd4 <UTIL_TIMER_Stop> + 800ec30: 480a ldr r0, [pc, #40] ; (800ec5c <LoRaMacDeInitialization+0x3c>) + 800ec32: f005 f9cf bl 8013fd4 <UTIL_TIMER_Stop> + 800ec36: 480a ldr r0, [pc, #40] ; (800ec60 <LoRaMacDeInitialization+0x40>) + 800ec38: f005 f9cc bl 8013fd4 <UTIL_TIMER_Stop> + 800ec3c: 4809 ldr r0, [pc, #36] ; (800ec64 <LoRaMacDeInitialization+0x44>) + 800ec3e: f005 f9c9 bl 8013fd4 <UTIL_TIMER_Stop> + 800ec42: f000 f895 bl 800ed70 <LoRaMacClassBHaltBeaconing> + 800ec46: f7fd fe4b bl 800c8e0 <ResetMacParameters.constprop.0> + 800ec4a: 4b07 ldr r3, [pc, #28] ; (800ec68 <LoRaMacDeInitialization+0x48>) + 800ec4c: 6adb ldr r3, [r3, #44] ; 0x2c + 800ec4e: 4798 blx r3 + 800ec50: 4620 mov r0, r4 + 800ec52: bd10 pop {r4, pc} + 800ec54: 2401 movs r4, #1 + 800ec56: e7fb b.n 800ec50 <LoRaMacDeInitialization+0x30> + 800ec58: 20002344 .word 0x20002344 + 800ec5c: 2000235c .word 0x2000235c + 800ec60: 20002374 .word 0x20002374 + 800ec64: 200023d0 .word 0x200023d0 + 800ec68: 080159b0 .word 0x080159b0 + +0800ec6c <LoRaMacAdrCalcNext>: + 800ec6c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800ec70: f890 9002 ldrb.w r9, [r0, #2] + 800ec74: b08b sub sp, #44 ; 0x2c + 800ec76: 4604 mov r4, r0 + 800ec78: 468a mov sl, r1 + 800ec7a: 9201 str r2, [sp, #4] + 800ec7c: f1b9 0f00 cmp.w r9, #0 + 800ec80: d160 bne.n 800ed44 <LoRaMacAdrCalcNext+0xd8> + 800ec82: 7945 ldrb r5, [r0, #5] + 800ec84: 6881 ldr r1, [r0, #8] + 800ec86: f990 2010 ldrsb.w r2, [r0, #16] + 800ec8a: f990 8011 ldrsb.w r8, [r0, #17] + 800ec8e: 6019 str r1, [r3, #0] + 800ec90: 2d00 cmp r5, #0 + 800ec92: d055 beq.n 800ed40 <LoRaMacAdrCalcNext+0xd4> + 800ec94: 7c81 ldrb r1, [r0, #18] + 800ec96: f88d 1016 strb.w r1, [sp, #22] + 800ec9a: 7cc0 ldrb r0, [r0, #19] + 800ec9c: f04f 0b02 mov.w fp, #2 + 800eca0: a905 add r1, sp, #20 + 800eca2: e9cd 2302 strd r2, r3, [sp, #8] + 800eca6: f88d b014 strb.w fp, [sp, #20] + 800ecaa: f000 fee1 bl 800fa70 <RegionGetPhyParam> + 800ecae: 9a02 ldr r2, [sp, #8] + 800ecb0: b247 sxtb r7, r0 + 800ecb2: 42ba cmp r2, r7 + 800ecb4: 4616 mov r6, r2 + 800ecb6: bfb8 it lt + 800ecb8: 463e movlt r6, r7 + 800ecba: 42ba cmp r2, r7 + 800ecbc: dc0c bgt.n 800ecd8 <LoRaMacAdrCalcNext+0x6c> + 800ecbe: 9b03 ldr r3, [sp, #12] + 800ecc0: f8c3 9000 str.w r9, [r3] + 800ecc4: 464d mov r5, r9 + 800ecc6: 9b01 ldr r3, [sp, #4] + 800ecc8: f88a 6000 strb.w r6, [sl] + 800eccc: f883 8000 strb.w r8, [r3] + 800ecd0: 4628 mov r0, r5 + 800ecd2: b00b add sp, #44 ; 0x2c + 800ecd4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800ecd8: 68a2 ldr r2, [r4, #8] + 800ecda: 89a1 ldrh r1, [r4, #12] + 800ecdc: 89e3 ldrh r3, [r4, #14] + 800ecde: 428a cmp r2, r1 + 800ece0: 440b add r3, r1 + 800ece2: bf34 ite cc + 800ece4: 2500 movcc r5, #0 + 800ece6: 2501 movcs r5, #1 + 800ece8: 429a cmp r2, r3 + 800ecea: d3ec bcc.n 800ecc6 <LoRaMacAdrCalcNext+0x5a> + 800ecec: 2308 movs r3, #8 + 800ecee: a905 add r1, sp, #20 + 800ecf0: 7ce0 ldrb r0, [r4, #19] + 800ecf2: f88d 3014 strb.w r3, [sp, #20] + 800ecf6: f000 febb bl 800fa70 <RegionGetPhyParam> + 800ecfa: 89e2 ldrh r2, [r4, #14] + 800ecfc: 68a3 ldr r3, [r4, #8] + 800ecfe: fbb3 f1f2 udiv r1, r3, r2 + 800ed02: fb02 3311 mls r3, r2, r1, r3 + 800ed06: 2b01 cmp r3, #1 + 800ed08: fa4f f880 sxtb.w r8, r0 + 800ed0c: d1db bne.n 800ecc6 <LoRaMacAdrCalcNext+0x5a> + 800ed0e: 2322 movs r3, #34 ; 0x22 + 800ed10: f88d 3014 strb.w r3, [sp, #20] + 800ed14: 7ce0 ldrb r0, [r4, #19] + 800ed16: 7ca3 ldrb r3, [r4, #18] + 800ed18: f88d 6015 strb.w r6, [sp, #21] + 800ed1c: a905 add r1, sp, #20 + 800ed1e: f88d 3016 strb.w r3, [sp, #22] + 800ed22: f000 fea5 bl 800fa70 <RegionGetPhyParam> + 800ed26: b246 sxtb r6, r0 + 800ed28: 42b7 cmp r7, r6 + 800ed2a: d1cc bne.n 800ecc6 <LoRaMacAdrCalcNext+0x5a> + 800ed2c: 7925 ldrb r5, [r4, #4] + 800ed2e: 2d00 cmp r5, #0 + 800ed30: d0c9 beq.n 800ecc6 <LoRaMacAdrCalcNext+0x5a> + 800ed32: 7ce0 ldrb r0, [r4, #19] + 800ed34: f88d b024 strb.w fp, [sp, #36] ; 0x24 + 800ed38: a907 add r1, sp, #28 + 800ed3a: f000 fea7 bl 800fa8c <RegionInitDefaults> + 800ed3e: e7c1 b.n 800ecc4 <LoRaMacAdrCalcNext+0x58> + 800ed40: 4616 mov r6, r2 + 800ed42: e7c0 b.n 800ecc6 <LoRaMacAdrCalcNext+0x5a> + 800ed44: 2500 movs r5, #0 + 800ed46: e7c3 b.n 800ecd0 <LoRaMacAdrCalcNext+0x64> + +0800ed48 <LoRaMacClassBInit>: + 800ed48: 4770 bx lr + +0800ed4a <LoRaMacClassBSetBeaconState>: + 800ed4a: 4770 bx lr + +0800ed4c <LoRaMacClassBSetPingSlotState>: + 800ed4c: 4770 bx lr + +0800ed4e <LoRaMacClassBSetMulticastSlotState>: + 800ed4e: 4770 bx lr + +0800ed50 <LoRaMacClassBIsAcquisitionInProgress>: + 800ed50: 2000 movs r0, #0 + 800ed52: 4770 bx lr + +0800ed54 <LoRaMacClassBBeaconTimerEvent>: + 800ed54: 4770 bx lr + +0800ed56 <LoRaMacClassBPingSlotTimerEvent>: + 800ed56: 4770 bx lr + +0800ed58 <LoRaMacClassBMulticastSlotTimerEvent>: + 800ed58: 4770 bx lr + +0800ed5a <LoRaMacClassBRxBeacon>: + 800ed5a: 2000 movs r0, #0 + 800ed5c: 4770 bx lr + +0800ed5e <LoRaMacClassBIsBeaconExpected>: + 800ed5e: 2000 movs r0, #0 + 800ed60: 4770 bx lr + +0800ed62 <LoRaMacClassBIsPingExpected>: + 800ed62: 2000 movs r0, #0 + 800ed64: 4770 bx lr + +0800ed66 <LoRaMacClassBIsMulticastExpected>: + 800ed66: 2000 movs r0, #0 + 800ed68: 4770 bx lr + +0800ed6a <LoRaMacClassBIsBeaconModeActive>: + 800ed6a: 2000 movs r0, #0 + 800ed6c: 4770 bx lr + +0800ed6e <LoRaMacClassBSetPingSlotInfo>: + 800ed6e: 4770 bx lr + +0800ed70 <LoRaMacClassBHaltBeaconing>: + 800ed70: 4770 bx lr + +0800ed72 <LoRaMacClassBResumeBeaconing>: + 800ed72: 4770 bx lr + +0800ed74 <LoRaMacClassBSwitchClass>: + 800ed74: 2002 movs r0, #2 + 800ed76: 4770 bx lr + +0800ed78 <LoRaMacClassBMibGetRequestConfirm>: + 800ed78: 2002 movs r0, #2 + 800ed7a: 4770 bx lr + +0800ed7c <LoRaMacMibClassBSetRequestConfirm>: + 800ed7c: 2002 movs r0, #2 + 800ed7e: 4770 bx lr + +0800ed80 <LoRaMacClassBPingSlotInfoAns>: + 800ed80: 4770 bx lr + +0800ed82 <LoRaMacClassBPingSlotChannelReq>: + 800ed82: 2000 movs r0, #0 + 800ed84: 4770 bx lr + +0800ed86 <LoRaMacClassBBeaconTimingAns>: + 800ed86: 4770 bx lr + +0800ed88 <LoRaMacClassBDeviceTimeAns>: + 800ed88: 4770 bx lr + +0800ed8a <LoRaMacClassBBeaconFreqReq>: + 800ed8a: 2000 movs r0, #0 + 800ed8c: 4770 bx lr + +0800ed8e <LoRaMacClassBIsUplinkCollision>: + 800ed8e: 2000 movs r0, #0 + 800ed90: 4770 bx lr + +0800ed92 <LoRaMacClassBStopRxSlots>: + 800ed92: 4770 bx lr + +0800ed94 <LoRaMacClassBProcess>: + 800ed94: 4770 bx lr + ... + +0800ed98 <LoRaMacCommandsInit>: + 800ed98: b510 push {r4, lr} + 800ed9a: 4c05 ldr r4, [pc, #20] ; (800edb0 <LoRaMacCommandsInit+0x18>) + 800ed9c: 22fc movs r2, #252 ; 0xfc + 800ed9e: 4620 mov r0, r4 + 800eda0: 2100 movs r1, #0 + 800eda2: f002 fe07 bl 80119b4 <memset1> + 800eda6: 2000 movs r0, #0 + 800eda8: e9c4 0000 strd r0, r0, [r4] + 800edac: bd10 pop {r4, pc} + 800edae: bf00 nop + 800edb0: 200024f8 .word 0x200024f8 + +0800edb4 <LoRaMacCommandsAddCmd>: + 800edb4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800edb8: 4680 mov r8, r0 + 800edba: 4615 mov r5, r2 + 800edbc: 2900 cmp r1, #0 + 800edbe: d042 beq.n 800ee46 <LoRaMacCommandsAddCmd+0x92> + 800edc0: 4b24 ldr r3, [pc, #144] ; (800ee54 <LoRaMacCommandsAddCmd+0xa0>) + 800edc2: 2400 movs r4, #0 + 800edc4: f103 0c01 add.w ip, r3, #1 + 800edc8: 461a mov r2, r3 + 800edca: 0120 lsls r0, r4, #4 + 800edcc: 3310 adds r3, #16 + 800edce: f812 6f01 ldrb.w r6, [r2, #1]! + 800edd2: 2e00 cmp r6, #0 + 800edd4: d139 bne.n 800ee4a <LoRaMacCommandsAddCmd+0x96> + 800edd6: 429a cmp r2, r3 + 800edd8: d1f9 bne.n 800edce <LoRaMacCommandsAddCmd+0x1a> + 800edda: 4f1f ldr r7, [pc, #124] ; (800ee58 <LoRaMacCommandsAddCmd+0xa4>) + 800eddc: 683b ldr r3, [r7, #0] + 800edde: b90b cbnz r3, 800ede4 <LoRaMacCommandsAddCmd+0x30> + 800ede0: f8c7 c000 str.w ip, [r7] + 800ede4: 687b ldr r3, [r7, #4] + 800ede6: b10b cbz r3, 800edec <LoRaMacCommandsAddCmd+0x38> + 800ede8: f8c3 c000 str.w ip, [r3] + 800edec: 183b adds r3, r7, r0 + 800edee: 2200 movs r2, #0 + 800edf0: 3401 adds r4, #1 + 800edf2: 609a str r2, [r3, #8] + 800edf4: f883 800c strb.w r8, [r3, #12] + 800edf8: 300d adds r0, #13 + 800edfa: 0123 lsls r3, r4, #4 + 800edfc: b2aa uxth r2, r5 + 800edfe: 4438 add r0, r7 + 800ee00: 50fd str r5, [r7, r3] + 800ee02: f8c7 c004 str.w ip, [r7, #4] + 800ee06: f002 fdc1 bl 801198c <memcpy1> + 800ee0a: f1b8 0f05 cmp.w r8, #5 + 800ee0e: d017 beq.n 800ee40 <LoRaMacCommandsAddCmd+0x8c> + 800ee10: f1a8 0808 sub.w r8, r8, #8 + 800ee14: f1b8 0f02 cmp.w r8, #2 + 800ee18: bf8c ite hi + 800ee1a: f04f 0800 movhi.w r8, #0 + 800ee1e: f04f 0801 movls.w r8, #1 + 800ee22: eb07 1404 add.w r4, r7, r4, lsl #4 + 800ee26: 2300 movs r3, #0 + 800ee28: 7163 strb r3, [r4, #5] + 800ee2a: f8d7 30f8 ldr.w r3, [r7, #248] ; 0xf8 + 800ee2e: f884 8004 strb.w r8, [r4, #4] + 800ee32: 3301 adds r3, #1 + 800ee34: 442b add r3, r5 + 800ee36: f8c7 30f8 str.w r3, [r7, #248] ; 0xf8 + 800ee3a: 4630 mov r0, r6 + 800ee3c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800ee40: f04f 0801 mov.w r8, #1 + 800ee44: e7ed b.n 800ee22 <LoRaMacCommandsAddCmd+0x6e> + 800ee46: 2601 movs r6, #1 + 800ee48: e7f7 b.n 800ee3a <LoRaMacCommandsAddCmd+0x86> + 800ee4a: 3401 adds r4, #1 + 800ee4c: 2c0f cmp r4, #15 + 800ee4e: d1b9 bne.n 800edc4 <LoRaMacCommandsAddCmd+0x10> + 800ee50: 2602 movs r6, #2 + 800ee52: e7f2 b.n 800ee3a <LoRaMacCommandsAddCmd+0x86> + 800ee54: 200024ff .word 0x200024ff + 800ee58: 200024f8 .word 0x200024f8 + +0800ee5c <LoRaMacCommandsRemoveCmd>: + 800ee5c: b510 push {r4, lr} + 800ee5e: b310 cbz r0, 800eea6 <LoRaMacCommandsRemoveCmd+0x4a> + 800ee60: 4a12 ldr r2, [pc, #72] ; (800eeac <LoRaMacCommandsRemoveCmd+0x50>) + 800ee62: 6813 ldr r3, [r2, #0] + 800ee64: 4298 cmp r0, r3 + 800ee66: d104 bne.n 800ee72 <LoRaMacCommandsRemoveCmd+0x16> + 800ee68: 6803 ldr r3, [r0, #0] + 800ee6a: 6013 str r3, [r2, #0] + 800ee6c: 2300 movs r3, #0 + 800ee6e: e004 b.n 800ee7a <LoRaMacCommandsRemoveCmd+0x1e> + 800ee70: 460b mov r3, r1 + 800ee72: b113 cbz r3, 800ee7a <LoRaMacCommandsRemoveCmd+0x1e> + 800ee74: 6819 ldr r1, [r3, #0] + 800ee76: 4288 cmp r0, r1 + 800ee78: d1fa bne.n 800ee70 <LoRaMacCommandsRemoveCmd+0x14> + 800ee7a: 6851 ldr r1, [r2, #4] + 800ee7c: 4288 cmp r0, r1 + 800ee7e: bf08 it eq + 800ee80: 6053 streq r3, [r2, #4] + 800ee82: b10b cbz r3, 800ee88 <LoRaMacCommandsRemoveCmd+0x2c> + 800ee84: 6801 ldr r1, [r0, #0] + 800ee86: 6019 str r1, [r3, #0] + 800ee88: f8d2 30f8 ldr.w r3, [r2, #248] ; 0xf8 + 800ee8c: 6881 ldr r1, [r0, #8] + 800ee8e: 3b01 subs r3, #1 + 800ee90: 2400 movs r4, #0 + 800ee92: 1a5b subs r3, r3, r1 + 800ee94: 6004 str r4, [r0, #0] + 800ee96: 4621 mov r1, r4 + 800ee98: f8c2 30f8 str.w r3, [r2, #248] ; 0xf8 + 800ee9c: 2210 movs r2, #16 + 800ee9e: f002 fd89 bl 80119b4 <memset1> + 800eea2: 4620 mov r0, r4 + 800eea4: bd10 pop {r4, pc} + 800eea6: 2001 movs r0, #1 + 800eea8: e7fc b.n 800eea4 <LoRaMacCommandsRemoveCmd+0x48> + 800eeaa: bf00 nop + 800eeac: 200024f8 .word 0x200024f8 + +0800eeb0 <LoRaMacCommandsGetCmd>: + 800eeb0: 4b05 ldr r3, [pc, #20] ; (800eec8 <LoRaMacCommandsGetCmd+0x18>) + 800eeb2: 681b ldr r3, [r3, #0] + 800eeb4: b113 cbz r3, 800eebc <LoRaMacCommandsGetCmd+0xc> + 800eeb6: 791a ldrb r2, [r3, #4] + 800eeb8: 4282 cmp r2, r0 + 800eeba: d1fa bne.n 800eeb2 <LoRaMacCommandsGetCmd+0x2> + 800eebc: 2b00 cmp r3, #0 + 800eebe: 600b str r3, [r1, #0] + 800eec0: bf0c ite eq + 800eec2: 2003 moveq r0, #3 + 800eec4: 2000 movne r0, #0 + 800eec6: 4770 bx lr + 800eec8: 200024f8 .word 0x200024f8 + +0800eecc <LoRaMacCommandsRemoveNoneStickyCmds>: + 800eecc: b510 push {r4, lr} + 800eece: 4b05 ldr r3, [pc, #20] ; (800eee4 <LoRaMacCommandsRemoveNoneStickyCmds+0x18>) + 800eed0: 6818 ldr r0, [r3, #0] + 800eed2: b900 cbnz r0, 800eed6 <LoRaMacCommandsRemoveNoneStickyCmds+0xa> + 800eed4: bd10 pop {r4, pc} + 800eed6: 7b03 ldrb r3, [r0, #12] + 800eed8: 6804 ldr r4, [r0, #0] + 800eeda: b90b cbnz r3, 800eee0 <LoRaMacCommandsRemoveNoneStickyCmds+0x14> + 800eedc: f7ff ffbe bl 800ee5c <LoRaMacCommandsRemoveCmd> + 800eee0: 4620 mov r0, r4 + 800eee2: e7f6 b.n 800eed2 <LoRaMacCommandsRemoveNoneStickyCmds+0x6> + 800eee4: 200024f8 .word 0x200024f8 + +0800eee8 <LoRaMacCommandsRemoveStickyAnsCmds>: + 800eee8: b510 push {r4, lr} + 800eeea: 4b07 ldr r3, [pc, #28] ; (800ef08 <LoRaMacCommandsRemoveStickyAnsCmds+0x20>) + 800eeec: 6818 ldr r0, [r3, #0] + 800eeee: b900 cbnz r0, 800eef2 <LoRaMacCommandsRemoveStickyAnsCmds+0xa> + 800eef0: bd10 pop {r4, pc} + 800eef2: 7903 ldrb r3, [r0, #4] + 800eef4: 6804 ldr r4, [r0, #0] + 800eef6: 2b05 cmp r3, #5 + 800eef8: d002 beq.n 800ef00 <LoRaMacCommandsRemoveStickyAnsCmds+0x18> + 800eefa: 3b08 subs r3, #8 + 800eefc: 2b02 cmp r3, #2 + 800eefe: d801 bhi.n 800ef04 <LoRaMacCommandsRemoveStickyAnsCmds+0x1c> + 800ef00: f7ff ffac bl 800ee5c <LoRaMacCommandsRemoveCmd> + 800ef04: 4620 mov r0, r4 + 800ef06: e7f2 b.n 800eeee <LoRaMacCommandsRemoveStickyAnsCmds+0x6> + 800ef08: 200024f8 .word 0x200024f8 + +0800ef0c <LoRaMacCommandsGetSizeSerializedCmds>: + 800ef0c: b128 cbz r0, 800ef1a <LoRaMacCommandsGetSizeSerializedCmds+0xe> + 800ef0e: 4b04 ldr r3, [pc, #16] ; (800ef20 <LoRaMacCommandsGetSizeSerializedCmds+0x14>) + 800ef10: f8d3 30f8 ldr.w r3, [r3, #248] ; 0xf8 + 800ef14: 6003 str r3, [r0, #0] + 800ef16: 2000 movs r0, #0 + 800ef18: 4770 bx lr + 800ef1a: 2001 movs r0, #1 + 800ef1c: 4770 bx lr + 800ef1e: bf00 nop + 800ef20: 200024f8 .word 0x200024f8 + +0800ef24 <LoRaMacCommandsSerializeCmds>: + 800ef24: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800ef28: 4607 mov r7, r0 + 800ef2a: 460e mov r6, r1 + 800ef2c: 4615 mov r5, r2 + 800ef2e: b33a cbz r2, 800ef80 <LoRaMacCommandsSerializeCmds+0x5c> + 800ef30: b331 cbz r1, 800ef80 <LoRaMacCommandsSerializeCmds+0x5c> + 800ef32: 4b14 ldr r3, [pc, #80] ; (800ef84 <LoRaMacCommandsSerializeCmds+0x60>) + 800ef34: 681c ldr r4, [r3, #0] + 800ef36: 2300 movs r3, #0 + 800ef38: b92c cbnz r4, 800ef46 <LoRaMacCommandsSerializeCmds+0x22> + 800ef3a: 4630 mov r0, r6 + 800ef3c: f7ff ffe6 bl 800ef0c <LoRaMacCommandsGetSizeSerializedCmds> + 800ef40: 2000 movs r0, #0 + 800ef42: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800ef46: 68a2 ldr r2, [r4, #8] + 800ef48: 1af9 subs r1, r7, r3 + 800ef4a: 3201 adds r2, #1 + 800ef4c: 4291 cmp r1, r2 + 800ef4e: d310 bcc.n 800ef72 <LoRaMacCommandsSerializeCmds+0x4e> + 800ef50: 7922 ldrb r2, [r4, #4] + 800ef52: 54ea strb r2, [r5, r3] + 800ef54: 1c58 adds r0, r3, #1 + 800ef56: 8922 ldrh r2, [r4, #8] + 800ef58: fa5f f880 uxtb.w r8, r0 + 800ef5c: 1d61 adds r1, r4, #5 + 800ef5e: fa55 f080 uxtab r0, r5, r0 + 800ef62: f002 fd13 bl 801198c <memcpy1> + 800ef66: 68a3 ldr r3, [r4, #8] + 800ef68: 6824 ldr r4, [r4, #0] + 800ef6a: 4498 add r8, r3 + 800ef6c: fa5f f388 uxtb.w r3, r8 + 800ef70: e7e2 b.n 800ef38 <LoRaMacCommandsSerializeCmds+0x14> + 800ef72: 4620 mov r0, r4 + 800ef74: 6824 ldr r4, [r4, #0] + 800ef76: f7ff ff71 bl 800ee5c <LoRaMacCommandsRemoveCmd> + 800ef7a: 2c00 cmp r4, #0 + 800ef7c: d1f9 bne.n 800ef72 <LoRaMacCommandsSerializeCmds+0x4e> + 800ef7e: e7dc b.n 800ef3a <LoRaMacCommandsSerializeCmds+0x16> + 800ef80: 2001 movs r0, #1 + 800ef82: e7de b.n 800ef42 <LoRaMacCommandsSerializeCmds+0x1e> + 800ef84: 200024f8 .word 0x200024f8 + +0800ef88 <LoRaMacCommandsGetCmdSize>: + 800ef88: 3802 subs r0, #2 + 800ef8a: b2c0 uxtb r0, r0 + 800ef8c: 2811 cmp r0, #17 + 800ef8e: bf9a itte ls + 800ef90: 4b01 ldrls r3, [pc, #4] ; (800ef98 <LoRaMacCommandsGetCmdSize+0x10>) + 800ef92: 5c18 ldrbls r0, [r3, r0] + 800ef94: 2000 movhi r0, #0 + 800ef96: 4770 bx lr + 800ef98: 0801533b .word 0x0801533b + +0800ef9c <GetElement.constprop.0>: + 800ef9c: b530 push {r4, r5, lr} + 800ef9e: 4b0b ldr r3, [pc, #44] ; (800efcc <GetElement.constprop.0+0x30>) + 800efa0: f893 2020 ldrb.w r2, [r3, #32] + 800efa4: 4604 mov r4, r0 + 800efa6: 4608 mov r0, r1 + 800efa8: b172 cbz r2, 800efc8 <GetElement.constprop.0+0x2c> + 800efaa: 2100 movs r1, #0 + 800efac: 331c adds r3, #28 + 800efae: 7805 ldrb r5, [r0, #0] + 800efb0: 42a5 cmp r5, r4 + 800efb2: d008 beq.n 800efc6 <GetElement.constprop.0+0x2a> + 800efb4: 3101 adds r1, #1 + 800efb6: 4298 cmp r0, r3 + 800efb8: b2cd uxtb r5, r1 + 800efba: bf0c ite eq + 800efbc: 4804 ldreq r0, [pc, #16] ; (800efd0 <GetElement.constprop.0+0x34>) + 800efbe: 3004 addne r0, #4 + 800efc0: 42aa cmp r2, r5 + 800efc2: d8f4 bhi.n 800efae <GetElement.constprop.0+0x12> + 800efc4: 2000 movs r0, #0 + 800efc6: bd30 pop {r4, r5, pc} + 800efc8: 4610 mov r0, r2 + 800efca: e7fc b.n 800efc6 <GetElement.constprop.0+0x2a> + 800efcc: 200025f4 .word 0x200025f4 + 800efd0: 20002600 .word 0x20002600 + +0800efd4 <LoRaMacConfirmQueueInit>: + 800efd4: b510 push {r4, lr} + 800efd6: 4c08 ldr r4, [pc, #32] ; (800eff8 <LoRaMacConfirmQueueInit+0x24>) + 800efd8: 2300 movs r3, #0 + 800efda: 6020 str r0, [r4, #0] + 800efdc: 2214 movs r2, #20 + 800efde: f104 000c add.w r0, r4, #12 + 800efe2: 21ff movs r1, #255 ; 0xff + 800efe4: f884 3020 strb.w r3, [r4, #32] + 800efe8: e9c4 0001 strd r0, r0, [r4, #4] + 800efec: f002 fce2 bl 80119b4 <memset1> + 800eff0: 2301 movs r3, #1 + 800eff2: f884 3021 strb.w r3, [r4, #33] ; 0x21 + 800eff6: bd10 pop {r4, pc} + 800eff8: 200025f4 .word 0x200025f4 + +0800effc <LoRaMacConfirmQueueAdd>: + 800effc: b510 push {r4, lr} + 800effe: 4a0e ldr r2, [pc, #56] ; (800f038 <LoRaMacConfirmQueueAdd+0x3c>) + 800f000: f892 1020 ldrb.w r1, [r2, #32] + 800f004: 2904 cmp r1, #4 + 800f006: d815 bhi.n 800f034 <LoRaMacConfirmQueueAdd+0x38> + 800f008: 6893 ldr r3, [r2, #8] + 800f00a: 7804 ldrb r4, [r0, #0] + 800f00c: 701c strb r4, [r3, #0] + 800f00e: 7844 ldrb r4, [r0, #1] + 800f010: 705c strb r4, [r3, #1] + 800f012: 78c0 ldrb r0, [r0, #3] + 800f014: 70d8 strb r0, [r3, #3] + 800f016: 3101 adds r1, #1 + 800f018: 2000 movs r0, #0 + 800f01a: 7098 strb r0, [r3, #2] + 800f01c: f882 1020 strb.w r1, [r2, #32] + 800f020: f102 011c add.w r1, r2, #28 + 800f024: 428b cmp r3, r1 + 800f026: bf14 ite ne + 800f028: 3304 addne r3, #4 + 800f02a: f102 030c addeq.w r3, r2, #12 + 800f02e: 6093 str r3, [r2, #8] + 800f030: 2001 movs r0, #1 + 800f032: bd10 pop {r4, pc} + 800f034: 2000 movs r0, #0 + 800f036: e7fc b.n 800f032 <LoRaMacConfirmQueueAdd+0x36> + 800f038: 200025f4 .word 0x200025f4 + +0800f03c <LoRaMacConfirmQueueRemoveFirst>: + 800f03c: 4b09 ldr r3, [pc, #36] ; (800f064 <LoRaMacConfirmQueueRemoveFirst+0x28>) + 800f03e: f893 0020 ldrb.w r0, [r3, #32] + 800f042: b168 cbz r0, 800f060 <LoRaMacConfirmQueueRemoveFirst+0x24> + 800f044: 685a ldr r2, [r3, #4] + 800f046: f103 011c add.w r1, r3, #28 + 800f04a: 428a cmp r2, r1 + 800f04c: f100 30ff add.w r0, r0, #4294967295 + 800f050: bf14 ite ne + 800f052: 3204 addne r2, #4 + 800f054: f103 020c addeq.w r2, r3, #12 + 800f058: f883 0020 strb.w r0, [r3, #32] + 800f05c: 605a str r2, [r3, #4] + 800f05e: 2001 movs r0, #1 + 800f060: 4770 bx lr + 800f062: bf00 nop + 800f064: 200025f4 .word 0x200025f4 + +0800f068 <LoRaMacConfirmQueueSetStatus>: + 800f068: b510 push {r4, lr} + 800f06a: 4b07 ldr r3, [pc, #28] ; (800f088 <LoRaMacConfirmQueueSetStatus+0x20>) + 800f06c: f893 2020 ldrb.w r2, [r3, #32] + 800f070: 4604 mov r4, r0 + 800f072: 4608 mov r0, r1 + 800f074: b132 cbz r2, 800f084 <LoRaMacConfirmQueueSetStatus+0x1c> + 800f076: 6859 ldr r1, [r3, #4] + 800f078: f7ff ff90 bl 800ef9c <GetElement.constprop.0> + 800f07c: b110 cbz r0, 800f084 <LoRaMacConfirmQueueSetStatus+0x1c> + 800f07e: 2301 movs r3, #1 + 800f080: 7044 strb r4, [r0, #1] + 800f082: 7083 strb r3, [r0, #2] + 800f084: bd10 pop {r4, pc} + 800f086: bf00 nop + 800f088: 200025f4 .word 0x200025f4 + +0800f08c <LoRaMacConfirmQueueGetStatus>: + 800f08c: b508 push {r3, lr} + 800f08e: 4b06 ldr r3, [pc, #24] ; (800f0a8 <LoRaMacConfirmQueueGetStatus+0x1c>) + 800f090: f893 2020 ldrb.w r2, [r3, #32] + 800f094: b12a cbz r2, 800f0a2 <LoRaMacConfirmQueueGetStatus+0x16> + 800f096: 6859 ldr r1, [r3, #4] + 800f098: f7ff ff80 bl 800ef9c <GetElement.constprop.0> + 800f09c: b108 cbz r0, 800f0a2 <LoRaMacConfirmQueueGetStatus+0x16> + 800f09e: 7840 ldrb r0, [r0, #1] + 800f0a0: bd08 pop {r3, pc} + 800f0a2: 2001 movs r0, #1 + 800f0a4: e7fc b.n 800f0a0 <LoRaMacConfirmQueueGetStatus+0x14> + 800f0a6: bf00 nop + 800f0a8: 200025f4 .word 0x200025f4 + +0800f0ac <LoRaMacConfirmQueueSetStatusCmn>: + 800f0ac: b530 push {r4, r5, lr} + 800f0ae: 4a0a ldr r2, [pc, #40] ; (800f0d8 <LoRaMacConfirmQueueSetStatusCmn+0x2c>) + 800f0b0: f892 1020 ldrb.w r1, [r2, #32] + 800f0b4: 6853 ldr r3, [r2, #4] + 800f0b6: f882 0021 strb.w r0, [r2, #33] ; 0x21 + 800f0ba: b161 cbz r1, 800f0d6 <LoRaMacConfirmQueueSetStatusCmn+0x2a> + 800f0bc: 6891 ldr r1, [r2, #8] + 800f0be: 2401 movs r4, #1 + 800f0c0: 321c adds r2, #28 + 800f0c2: 78dd ldrb r5, [r3, #3] + 800f0c4: 7058 strb r0, [r3, #1] + 800f0c6: b905 cbnz r5, 800f0ca <LoRaMacConfirmQueueSetStatusCmn+0x1e> + 800f0c8: 709c strb r4, [r3, #2] + 800f0ca: 4293 cmp r3, r2 + 800f0cc: bf0c ite eq + 800f0ce: 4b03 ldreq r3, [pc, #12] ; (800f0dc <LoRaMacConfirmQueueSetStatusCmn+0x30>) + 800f0d0: 3304 addne r3, #4 + 800f0d2: 4299 cmp r1, r3 + 800f0d4: d1f5 bne.n 800f0c2 <LoRaMacConfirmQueueSetStatusCmn+0x16> + 800f0d6: bd30 pop {r4, r5, pc} + 800f0d8: 200025f4 .word 0x200025f4 + 800f0dc: 20002600 .word 0x20002600 + +0800f0e0 <LoRaMacConfirmQueueIsCmdActive>: + 800f0e0: b508 push {r3, lr} + 800f0e2: 4b04 ldr r3, [pc, #16] ; (800f0f4 <LoRaMacConfirmQueueIsCmdActive+0x14>) + 800f0e4: 6859 ldr r1, [r3, #4] + 800f0e6: f7ff ff59 bl 800ef9c <GetElement.constprop.0> + 800f0ea: 3800 subs r0, #0 + 800f0ec: bf18 it ne + 800f0ee: 2001 movne r0, #1 + 800f0f0: bd08 pop {r3, pc} + 800f0f2: bf00 nop + 800f0f4: 200025f4 .word 0x200025f4 + +0800f0f8 <LoRaMacConfirmQueueHandleCb>: + 800f0f8: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} + 800f0fc: 2204 movs r2, #4 + 800f0fe: 4e15 ldr r6, [pc, #84] ; (800f154 <LoRaMacConfirmQueueHandleCb+0x5c>) + 800f100: 4604 mov r4, r0 + 800f102: 2100 movs r1, #0 + 800f104: eb0d 0002 add.w r0, sp, r2 + 800f108: f896 8020 ldrb.w r8, [r6, #32] + 800f10c: f002 fc52 bl 80119b4 <memset1> + 800f110: 2500 movs r5, #0 + 800f112: b2eb uxtb r3, r5 + 800f114: 4598 cmp r8, r3 + 800f116: d802 bhi.n 800f11e <LoRaMacConfirmQueueHandleCb+0x26> + 800f118: b002 add sp, #8 + 800f11a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800f11e: 6873 ldr r3, [r6, #4] + 800f120: 7819 ldrb r1, [r3, #0] + 800f122: 7021 strb r1, [r4, #0] + 800f124: 785a ldrb r2, [r3, #1] + 800f126: 7062 strb r2, [r4, #1] + 800f128: 789f ldrb r7, [r3, #2] + 800f12a: b15f cbz r7, 800f144 <LoRaMacConfirmQueueHandleCb+0x4c> + 800f12c: 6833 ldr r3, [r6, #0] + 800f12e: 4620 mov r0, r4 + 800f130: 689b ldr r3, [r3, #8] + 800f132: 4798 blx r3 + 800f134: f7ff ff82 bl 800f03c <LoRaMacConfirmQueueRemoveFirst> + 800f138: b917 cbnz r7, 800f140 <LoRaMacConfirmQueueHandleCb+0x48> + 800f13a: a801 add r0, sp, #4 + 800f13c: f7ff ff5e bl 800effc <LoRaMacConfirmQueueAdd> + 800f140: 3501 adds r5, #1 + 800f142: e7e6 b.n 800f112 <LoRaMacConfirmQueueHandleCb+0x1a> + 800f144: 78db ldrb r3, [r3, #3] + 800f146: f88d 1004 strb.w r1, [sp, #4] + 800f14a: f88d 2005 strb.w r2, [sp, #5] + 800f14e: f88d 3007 strb.w r3, [sp, #7] + 800f152: e7ef b.n 800f134 <LoRaMacConfirmQueueHandleCb+0x3c> + 800f154: 200025f4 .word 0x200025f4 + +0800f158 <LoRaMacConfirmQueueGetCnt>: + 800f158: 4b01 ldr r3, [pc, #4] ; (800f160 <LoRaMacConfirmQueueGetCnt+0x8>) + 800f15a: f893 0020 ldrb.w r0, [r3, #32] + 800f15e: 4770 bx lr + 800f160: 200025f4 .word 0x200025f4 + +0800f164 <LoRaMacConfirmQueueIsFull>: + 800f164: 4b03 ldr r3, [pc, #12] ; (800f174 <LoRaMacConfirmQueueIsFull+0x10>) + 800f166: f893 0020 ldrb.w r0, [r3, #32] + 800f16a: 2804 cmp r0, #4 + 800f16c: bf94 ite ls + 800f16e: 2000 movls r0, #0 + 800f170: 2001 movhi r0, #1 + 800f172: 4770 bx lr + 800f174: 200025f4 .word 0x200025f4 + +0800f178 <DeriveSessionKey10x>: + 800f178: b51f push {r0, r1, r2, r3, r4, lr} + 800f17a: 2400 movs r4, #0 + 800f17c: e9cd 4402 strd r4, r4, [sp, #8] + 800f180: 1fc4 subs r4, r0, #7 + 800f182: f88d 4000 strb.w r4, [sp] + 800f186: f88d 1001 strb.w r1, [sp, #1] + 800f18a: 0a0c lsrs r4, r1, #8 + 800f18c: f8ad 2004 strh.w r2, [sp, #4] + 800f190: 0c09 lsrs r1, r1, #16 + 800f192: 0c12 lsrs r2, r2, #16 + 800f194: f88d 1003 strb.w r1, [sp, #3] + 800f198: f88d 2006 strb.w r2, [sp, #6] + 800f19c: f88d 3007 strb.w r3, [sp, #7] + 800f1a0: 4602 mov r2, r0 + 800f1a2: 0a1b lsrs r3, r3, #8 + 800f1a4: 2101 movs r1, #1 + 800f1a6: 4668 mov r0, sp + 800f1a8: f88d 4002 strb.w r4, [sp, #2] + 800f1ac: f88d 3008 strb.w r3, [sp, #8] + 800f1b0: f002 fa5d bl 801166e <SecureElementDeriveAndStoreKey> + 800f1b4: 2800 cmp r0, #0 + 800f1b6: bf18 it ne + 800f1b8: 200f movne r0, #15 + 800f1ba: b004 add sp, #16 + 800f1bc: bd10 pop {r4, pc} + +0800f1be <PayloadEncrypt>: + 800f1be: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800f1c2: b088 sub sp, #32 + 800f1c4: 4617 mov r7, r2 + 800f1c6: 460d mov r5, r1 + 800f1c8: 9a0f ldr r2, [sp, #60] ; 0x3c + 800f1ca: 4606 mov r6, r0 + 800f1cc: 2800 cmp r0, #0 + 800f1ce: d04d beq.n 800f26c <PayloadEncrypt+0xae> + 800f1d0: 2400 movs r4, #0 + 800f1d2: 2101 movs r1, #1 + 800f1d4: e9cd 4404 strd r4, r4, [sp, #16] + 800f1d8: f88d 1010 strb.w r1, [sp, #16] + 800f1dc: f89d 1038 ldrb.w r1, [sp, #56] ; 0x38 + 800f1e0: f88d 1015 strb.w r1, [sp, #21] + 800f1e4: f8ad 3016 strh.w r3, [sp, #22] + 800f1e8: 0c19 lsrs r1, r3, #16 + 800f1ea: e9cd 4400 strd r4, r4, [sp] + 800f1ee: 0e1b lsrs r3, r3, #24 + 800f1f0: e9cd 4402 strd r4, r4, [sp, #8] + 800f1f4: f88d 3019 strb.w r3, [sp, #25] + 800f1f8: f8ad 201a strh.w r2, [sp, #26] + 800f1fc: 0c13 lsrs r3, r2, #16 + 800f1fe: 0e12 lsrs r2, r2, #24 + 800f200: 9407 str r4, [sp, #28] + 800f202: f88d 1018 strb.w r1, [sp, #24] + 800f206: f88d 301c strb.w r3, [sp, #28] + 800f20a: f88d 201d strb.w r2, [sp, #29] + 800f20e: b2e3 uxtb r3, r4 + 800f210: ea4f 1803 mov.w r8, r3, lsl #4 + 800f214: 2d00 cmp r5, #0 + 800f216: fa5f f888 uxtb.w r8, r8 + 800f21a: dc03 bgt.n 800f224 <PayloadEncrypt+0x66> + 800f21c: 2000 movs r0, #0 + 800f21e: b008 add sp, #32 + 800f220: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800f224: 3301 adds r3, #1 + 800f226: 2110 movs r1, #16 + 800f228: f88d 301f strb.w r3, [sp, #31] + 800f22c: 463a mov r2, r7 + 800f22e: 466b mov r3, sp + 800f230: eb0d 0001 add.w r0, sp, r1 + 800f234: f002 f9b1 bl 801159a <SecureElementAesEncrypt> + 800f238: 4603 mov r3, r0 + 800f23a: b9c8 cbnz r0, 800f270 <PayloadEncrypt+0xb2> + 800f23c: 2d10 cmp r5, #16 + 800f23e: 46ac mov ip, r5 + 800f240: bfa8 it ge + 800f242: f04f 0c10 movge.w ip, #16 + 800f246: b2da uxtb r2, r3 + 800f248: 4562 cmp r2, ip + 800f24a: f103 0301 add.w r3, r3, #1 + 800f24e: db03 blt.n 800f258 <PayloadEncrypt+0x9a> + 800f250: 3d10 subs r5, #16 + 800f252: b22d sxth r5, r5 + 800f254: 3401 adds r4, #1 + 800f256: e7da b.n 800f20e <PayloadEncrypt+0x50> + 800f258: eb08 0002 add.w r0, r8, r2 + 800f25c: 3220 adds r2, #32 + 800f25e: 446a add r2, sp + 800f260: 5c31 ldrb r1, [r6, r0] + 800f262: f812 2c20 ldrb.w r2, [r2, #-32] + 800f266: 404a eors r2, r1 + 800f268: 5432 strb r2, [r6, r0] + 800f26a: e7ec b.n 800f246 <PayloadEncrypt+0x88> + 800f26c: 200a movs r0, #10 + 800f26e: e7d6 b.n 800f21e <PayloadEncrypt+0x60> + 800f270: 200f movs r0, #15 + 800f272: e7d4 b.n 800f21e <PayloadEncrypt+0x60> + +0800f274 <GetLastFcntDown.constprop.0>: + 800f274: 3801 subs r0, #1 + 800f276: 2803 cmp r0, #3 + 800f278: d815 bhi.n 800f2a6 <GetLastFcntDown.constprop.0+0x32> + 800f27a: e8df f000 tbb [pc, r0] + 800f27e: 0802 .short 0x0802 + 800f280: 100c .short 0x100c + 800f282: 4b0a ldr r3, [pc, #40] ; (800f2ac <GetLastFcntDown.constprop.0+0x38>) + 800f284: 681b ldr r3, [r3, #0] + 800f286: 691b ldr r3, [r3, #16] + 800f288: 600b str r3, [r1, #0] + 800f28a: 2000 movs r0, #0 + 800f28c: 4770 bx lr + 800f28e: 4b07 ldr r3, [pc, #28] ; (800f2ac <GetLastFcntDown.constprop.0+0x38>) + 800f290: 681b ldr r3, [r3, #0] + 800f292: 695b ldr r3, [r3, #20] + 800f294: e7f8 b.n 800f288 <GetLastFcntDown.constprop.0+0x14> + 800f296: 4b05 ldr r3, [pc, #20] ; (800f2ac <GetLastFcntDown.constprop.0+0x38>) + 800f298: 681b ldr r3, [r3, #0] + 800f29a: 699b ldr r3, [r3, #24] + 800f29c: e7f4 b.n 800f288 <GetLastFcntDown.constprop.0+0x14> + 800f29e: 4b03 ldr r3, [pc, #12] ; (800f2ac <GetLastFcntDown.constprop.0+0x38>) + 800f2a0: 681b ldr r3, [r3, #0] + 800f2a2: 69db ldr r3, [r3, #28] + 800f2a4: e7f0 b.n 800f288 <GetLastFcntDown.constprop.0+0x14> + 800f2a6: 2005 movs r0, #5 + 800f2a8: 4770 bx lr + 800f2aa: bf00 nop + 800f2ac: 20002618 .word 0x20002618 + +0800f2b0 <VerifyCmacB0.constprop.0.isra.0>: + 800f2b0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800f2b4: b0c4 sub sp, #272 ; 0x110 + 800f2b6: 460c mov r4, r1 + 800f2b8: 9e4a ldr r6, [sp, #296] ; 0x128 + 800f2ba: 4617 mov r7, r2 + 800f2bc: 461d mov r5, r3 + 800f2be: 4680 mov r8, r0 + 800f2c0: b3b8 cbz r0, 800f332 <VerifyCmacB0.constprop.0.isra.0+0x82> + 800f2c2: f5b1 7f80 cmp.w r1, #256 ; 0x100 + 800f2c6: d836 bhi.n 800f336 <VerifyCmacB0.constprop.0.isra.0+0x86> + 800f2c8: f44f 7288 mov.w r2, #272 ; 0x110 + 800f2cc: 2100 movs r1, #0 + 800f2ce: 4668 mov r0, sp + 800f2d0: f002 fb70 bl 80119b4 <memset1> + 800f2d4: 2349 movs r3, #73 ; 0x49 + 800f2d6: 9300 str r3, [sp, #0] + 800f2d8: f44f 7380 mov.w r3, #256 ; 0x100 + 800f2dc: f8ad 3004 strh.w r3, [sp, #4] + 800f2e0: 0c2b lsrs r3, r5, #16 + 800f2e2: f88d 3008 strb.w r3, [sp, #8] + 800f2e6: 0c33 lsrs r3, r6, #16 + 800f2e8: f8ad 5006 strh.w r5, [sp, #6] + 800f2ec: f8ad 600a strh.w r6, [sp, #10] + 800f2f0: f88d 300c strb.w r3, [sp, #12] + 800f2f4: 4622 mov r2, r4 + 800f2f6: 2300 movs r3, #0 + 800f2f8: 4641 mov r1, r8 + 800f2fa: a804 add r0, sp, #16 + 800f2fc: 0e2d lsrs r5, r5, #24 + 800f2fe: 0e36 lsrs r6, r6, #24 + 800f300: f88d 300e strb.w r3, [sp, #14] + 800f304: f88d 5009 strb.w r5, [sp, #9] + 800f308: f88d 600d strb.w r6, [sp, #13] + 800f30c: f88d 400f strb.w r4, [sp, #15] + 800f310: f002 fb3c bl 801198c <memcpy1> + 800f314: f104 0110 add.w r1, r4, #16 + 800f318: 9a4b ldr r2, [sp, #300] ; 0x12c + 800f31a: 463b mov r3, r7 + 800f31c: b289 uxth r1, r1 + 800f31e: 4668 mov r0, sp + 800f320: f002 f925 bl 801156e <SecureElementVerifyAesCmac> + 800f324: b110 cbz r0, 800f32c <VerifyCmacB0.constprop.0.isra.0+0x7c> + 800f326: 2801 cmp r0, #1 + 800f328: bf18 it ne + 800f32a: 200f movne r0, #15 + 800f32c: b044 add sp, #272 ; 0x110 + 800f32e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800f332: 200a movs r0, #10 + 800f334: e7fa b.n 800f32c <VerifyCmacB0.constprop.0.isra.0+0x7c> + 800f336: 200e movs r0, #14 + 800f338: e7f8 b.n 800f32c <VerifyCmacB0.constprop.0.isra.0+0x7c> + ... + +0800f33c <LoRaMacCryptoInit>: + 800f33c: b510 push {r4, lr} + 800f33e: b190 cbz r0, 800f366 <LoRaMacCryptoInit+0x2a> + 800f340: 4c0a ldr r4, [pc, #40] ; (800f36c <LoRaMacCryptoInit+0x30>) + 800f342: 2228 movs r2, #40 ; 0x28 + 800f344: 2100 movs r1, #0 + 800f346: 6020 str r0, [r4, #0] + 800f348: f002 fb34 bl 80119b4 <memset1> + 800f34c: 6823 ldr r3, [r4, #0] + 800f34e: 4a08 ldr r2, [pc, #32] ; (800f370 <LoRaMacCryptoInit+0x34>) + 800f350: 601a str r2, [r3, #0] + 800f352: 2000 movs r0, #0 + 800f354: f04f 32ff mov.w r2, #4294967295 + 800f358: e9c3 0203 strd r0, r2, [r3, #12] + 800f35c: e9c3 2205 strd r2, r2, [r3, #20] + 800f360: e9c3 2207 strd r2, r2, [r3, #28] + 800f364: bd10 pop {r4, pc} + 800f366: 2009 movs r0, #9 + 800f368: e7fc b.n 800f364 <LoRaMacCryptoInit+0x28> + 800f36a: bf00 nop + 800f36c: 20002618 .word 0x20002618 + 800f370: 01010100 .word 0x01010100 + +0800f374 <LoRaMacCryptoSetLrWanVersion>: + 800f374: 4b02 ldr r3, [pc, #8] ; (800f380 <LoRaMacCryptoSetLrWanVersion+0xc>) + 800f376: 681b ldr r3, [r3, #0] + 800f378: 6018 str r0, [r3, #0] + 800f37a: 2000 movs r0, #0 + 800f37c: 4770 bx lr + 800f37e: bf00 nop + 800f380: 20002618 .word 0x20002618 + +0800f384 <LoRaMacCryptoGetFCntUp>: + 800f384: b130 cbz r0, 800f394 <LoRaMacCryptoGetFCntUp+0x10> + 800f386: 4b04 ldr r3, [pc, #16] ; (800f398 <LoRaMacCryptoGetFCntUp+0x14>) + 800f388: 681b ldr r3, [r3, #0] + 800f38a: 68db ldr r3, [r3, #12] + 800f38c: 3301 adds r3, #1 + 800f38e: 6003 str r3, [r0, #0] + 800f390: 2000 movs r0, #0 + 800f392: 4770 bx lr + 800f394: 200a movs r0, #10 + 800f396: 4770 bx lr + 800f398: 20002618 .word 0x20002618 + +0800f39c <LoRaMacCryptoGetFCntDown>: + 800f39c: b573 push {r0, r1, r4, r5, r6, lr} + 800f39e: 460e mov r6, r1 + 800f3a0: 2100 movs r1, #0 + 800f3a2: 9101 str r1, [sp, #4] + 800f3a4: 461d mov r5, r3 + 800f3a6: b333 cbz r3, 800f3f6 <LoRaMacCryptoGetFCntDown+0x5a> + 800f3a8: a901 add r1, sp, #4 + 800f3aa: f7ff ff63 bl 800f274 <GetLastFcntDown.constprop.0> + 800f3ae: b9d0 cbnz r0, 800f3e6 <LoRaMacCryptoGetFCntDown+0x4a> + 800f3b0: 9c01 ldr r4, [sp, #4] + 800f3b2: 1c63 adds r3, r4, #1 + 800f3b4: d004 beq.n 800f3c0 <LoRaMacCryptoGetFCntDown+0x24> + 800f3b6: b2a3 uxth r3, r4 + 800f3b8: 1ad3 subs r3, r2, r3 + 800f3ba: 2b00 cmp r3, #0 + 800f3bc: dd10 ble.n 800f3e0 <LoRaMacCryptoGetFCntDown+0x44> + 800f3be: 18e2 adds r2, r4, r3 + 800f3c0: 4b0e ldr r3, [pc, #56] ; (800f3fc <LoRaMacCryptoGetFCntDown+0x60>) + 800f3c2: 602a str r2, [r5, #0] + 800f3c4: 681b ldr r3, [r3, #0] + 800f3c6: 789b ldrb r3, [r3, #2] + 800f3c8: b96b cbnz r3, 800f3e6 <LoRaMacCryptoGetFCntDown+0x4a> + 800f3ca: 1b12 subs r2, r2, r4 + 800f3cc: eb63 0303 sbc.w r3, r3, r3 + 800f3d0: 42b2 cmp r2, r6 + 800f3d2: f173 0300 sbcs.w r3, r3, #0 + 800f3d6: bfac ite ge + 800f3d8: 2001 movge r0, #1 + 800f3da: 2000 movlt r0, #0 + 800f3dc: 00c0 lsls r0, r0, #3 + 800f3de: e002 b.n 800f3e6 <LoRaMacCryptoGetFCntDown+0x4a> + 800f3e0: d103 bne.n 800f3ea <LoRaMacCryptoGetFCntDown+0x4e> + 800f3e2: 602c str r4, [r5, #0] + 800f3e4: 2007 movs r0, #7 + 800f3e6: b002 add sp, #8 + 800f3e8: bd70 pop {r4, r5, r6, pc} + 800f3ea: 0c23 lsrs r3, r4, #16 + 800f3ec: 041b lsls r3, r3, #16 + 800f3ee: f503 3380 add.w r3, r3, #65536 ; 0x10000 + 800f3f2: 441a add r2, r3 + 800f3f4: e7e4 b.n 800f3c0 <LoRaMacCryptoGetFCntDown+0x24> + 800f3f6: 200a movs r0, #10 + 800f3f8: e7f5 b.n 800f3e6 <LoRaMacCryptoGetFCntDown+0x4a> + 800f3fa: bf00 nop + 800f3fc: 20002618 .word 0x20002618 + +0800f400 <LoRaMacCryptoSetMulticastReference>: + 800f400: b128 cbz r0, 800f40e <LoRaMacCryptoSetMulticastReference+0xe> + 800f402: 4b04 ldr r3, [pc, #16] ; (800f414 <LoRaMacCryptoSetMulticastReference+0x14>) + 800f404: 681b ldr r3, [r3, #0] + 800f406: 331c adds r3, #28 + 800f408: 6243 str r3, [r0, #36] ; 0x24 + 800f40a: 2000 movs r0, #0 + 800f40c: 4770 bx lr + 800f40e: 200a movs r0, #10 + 800f410: 4770 bx lr + 800f412: bf00 nop + 800f414: 20002618 .word 0x20002618 + +0800f418 <LoRaMacCryptoPrepareJoinRequest>: + 800f418: b51f push {r0, r1, r2, r3, r4, lr} + 800f41a: 4604 mov r4, r0 + 800f41c: b1f0 cbz r0, 800f45c <LoRaMacCryptoPrepareJoinRequest+0x44> + 800f41e: 2300 movs r3, #0 + 800f420: a803 add r0, sp, #12 + 800f422: 9303 str r3, [sp, #12] + 800f424: f002 f97a bl 801171c <SecureElementRandomNumber> + 800f428: 4a0e ldr r2, [pc, #56] ; (800f464 <LoRaMacCryptoPrepareJoinRequest+0x4c>) + 800f42a: f8bd 300c ldrh.w r3, [sp, #12] + 800f42e: 6812 ldr r2, [r2, #0] + 800f430: 4620 mov r0, r4 + 800f432: 8093 strh r3, [r2, #4] + 800f434: 82e3 strh r3, [r4, #22] + 800f436: f000 fa52 bl 800f8de <LoRaMacSerializerJoinRequest> + 800f43a: b960 cbnz r0, 800f456 <LoRaMacCryptoPrepareJoinRequest+0x3e> + 800f43c: f104 0318 add.w r3, r4, #24 + 800f440: 9300 str r3, [sp, #0] + 800f442: 6821 ldr r1, [r4, #0] + 800f444: 2301 movs r3, #1 + 800f446: 2213 movs r2, #19 + 800f448: f002 f888 bl 801155c <SecureElementComputeAesCmac> + 800f44c: b940 cbnz r0, 800f460 <LoRaMacCryptoPrepareJoinRequest+0x48> + 800f44e: 4620 mov r0, r4 + 800f450: f000 fa45 bl 800f8de <LoRaMacSerializerJoinRequest> + 800f454: b100 cbz r0, 800f458 <LoRaMacCryptoPrepareJoinRequest+0x40> + 800f456: 2011 movs r0, #17 + 800f458: b004 add sp, #16 + 800f45a: bd10 pop {r4, pc} + 800f45c: 200a movs r0, #10 + 800f45e: e7fb b.n 800f458 <LoRaMacCryptoPrepareJoinRequest+0x40> + 800f460: 200f movs r0, #15 + 800f462: e7f9 b.n 800f458 <LoRaMacCryptoPrepareJoinRequest+0x40> + 800f464: 20002618 .word 0x20002618 + +0800f468 <LoRaMacCryptoSecureMessage>: + 800f468: b5f0 push {r4, r5, r6, r7, lr} + 800f46a: 4605 mov r5, r0 + 800f46c: b087 sub sp, #28 + 800f46e: 461c mov r4, r3 + 800f470: b33b cbz r3, 800f4c2 <LoRaMacCryptoSecureMessage+0x5a> + 800f472: 4e2f ldr r6, [pc, #188] ; (800f530 <LoRaMacCryptoSecureMessage+0xc8>) + 800f474: 6833 ldr r3, [r6, #0] + 800f476: 68db ldr r3, [r3, #12] + 800f478: 4283 cmp r3, r0 + 800f47a: d857 bhi.n 800f52c <LoRaMacCryptoSecureMessage+0xc4> + 800f47c: f894 2020 ldrb.w r2, [r4, #32] + 800f480: 2a00 cmp r2, #0 + 800f482: bf14 ite ne + 800f484: 2209 movne r2, #9 + 800f486: 2208 moveq r2, #8 + 800f488: 4283 cmp r3, r0 + 800f48a: d305 bcc.n 800f498 <LoRaMacCryptoSecureMessage+0x30> + 800f48c: 4620 mov r0, r4 + 800f48e: f000 fa5a bl 800f946 <LoRaMacSerializerData> + 800f492: b170 cbz r0, 800f4b2 <LoRaMacCryptoSecureMessage+0x4a> + 800f494: 2011 movs r0, #17 + 800f496: e00a b.n 800f4ae <LoRaMacCryptoSecureMessage+0x46> + 800f498: 2300 movs r3, #0 + 800f49a: 9001 str r0, [sp, #4] + 800f49c: 9300 str r3, [sp, #0] + 800f49e: 68a3 ldr r3, [r4, #8] + 800f4a0: f894 1028 ldrb.w r1, [r4, #40] ; 0x28 + 800f4a4: 6a60 ldr r0, [r4, #36] ; 0x24 + 800f4a6: f7ff fe8a bl 800f1be <PayloadEncrypt> + 800f4aa: 2800 cmp r0, #0 + 800f4ac: d0ee beq.n 800f48c <LoRaMacCryptoSecureMessage+0x24> + 800f4ae: b007 add sp, #28 + 800f4b0: bdf0 pop {r4, r5, r6, r7, pc} + 800f4b2: 7923 ldrb r3, [r4, #4] + 800f4b4: 6821 ldr r1, [r4, #0] + 800f4b6: f8b4 c008 ldrh.w ip, [r4, #8] + 800f4ba: 68a7 ldr r7, [r4, #8] + 800f4bc: 3b04 subs r3, #4 + 800f4be: b29a uxth r2, r3 + 800f4c0: b909 cbnz r1, 800f4c6 <LoRaMacCryptoSecureMessage+0x5e> + 800f4c2: 200a movs r0, #10 + 800f4c4: e7f3 b.n 800f4ae <LoRaMacCryptoSecureMessage+0x46> + 800f4c6: f5b2 7f80 cmp.w r2, #256 ; 0x100 + 800f4ca: d82d bhi.n 800f528 <LoRaMacCryptoSecureMessage+0xc0> + 800f4cc: f8ad c00e strh.w ip, [sp, #14] + 800f4d0: f88d 3017 strb.w r3, [sp, #23] + 800f4d4: ea4f 4c17 mov.w ip, r7, lsr #16 + 800f4d8: f104 032c add.w r3, r4, #44 ; 0x2c + 800f4dc: 0e3f lsrs r7, r7, #24 + 800f4de: f88d 7011 strb.w r7, [sp, #17] + 800f4e2: 9300 str r3, [sp, #0] + 800f4e4: 0c2f lsrs r7, r5, #16 + 800f4e6: 2308 movs r3, #8 + 800f4e8: f04f 0e49 mov.w lr, #73 ; 0x49 + 800f4ec: f8ad 000c strh.w r0, [sp, #12] + 800f4f0: f88d 7014 strb.w r7, [sp, #20] + 800f4f4: f88d 0016 strb.w r0, [sp, #22] + 800f4f8: 0e2f lsrs r7, r5, #24 + 800f4fa: eb0d 0003 add.w r0, sp, r3 + 800f4fe: f8cd e008 str.w lr, [sp, #8] + 800f502: f88d c010 strb.w ip, [sp, #16] + 800f506: f8ad 5012 strh.w r5, [sp, #18] + 800f50a: f88d 7015 strb.w r7, [sp, #21] + 800f50e: f002 f825 bl 801155c <SecureElementComputeAesCmac> + 800f512: b108 cbz r0, 800f518 <LoRaMacCryptoSecureMessage+0xb0> + 800f514: 200f movs r0, #15 + 800f516: e7ca b.n 800f4ae <LoRaMacCryptoSecureMessage+0x46> + 800f518: 4620 mov r0, r4 + 800f51a: f000 fa14 bl 800f946 <LoRaMacSerializerData> + 800f51e: 2800 cmp r0, #0 + 800f520: d1b8 bne.n 800f494 <LoRaMacCryptoSecureMessage+0x2c> + 800f522: 6833 ldr r3, [r6, #0] + 800f524: 60dd str r5, [r3, #12] + 800f526: e7c2 b.n 800f4ae <LoRaMacCryptoSecureMessage+0x46> + 800f528: 200e movs r0, #14 + 800f52a: e7c0 b.n 800f4ae <LoRaMacCryptoSecureMessage+0x46> + 800f52c: 2006 movs r0, #6 + 800f52e: e7be b.n 800f4ae <LoRaMacCryptoSecureMessage+0x46> + 800f530: 20002618 .word 0x20002618 + +0800f534 <LoRaMacCryptoUnsecureMessage>: + 800f534: e92d 41ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} + 800f538: 9d0a ldr r5, [sp, #40] ; 0x28 + 800f53a: 4680 mov r8, r0 + 800f53c: 460f mov r7, r1 + 800f53e: 4616 mov r6, r2 + 800f540: 461c mov r4, r3 + 800f542: 2d00 cmp r5, #0 + 800f544: d05a beq.n 800f5fc <LoRaMacCryptoUnsecureMessage+0xc8> + 800f546: 2300 movs r3, #0 + 800f548: a903 add r1, sp, #12 + 800f54a: 4610 mov r0, r2 + 800f54c: 9303 str r3, [sp, #12] + 800f54e: f7ff fe91 bl 800f274 <GetLastFcntDown.constprop.0> + 800f552: b118 cbz r0, 800f55c <LoRaMacCryptoUnsecureMessage+0x28> + 800f554: 2006 movs r0, #6 + 800f556: b004 add sp, #16 + 800f558: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800f55c: 9b03 ldr r3, [sp, #12] + 800f55e: 429c cmp r4, r3 + 800f560: d801 bhi.n 800f566 <LoRaMacCryptoUnsecureMessage+0x32> + 800f562: 3301 adds r3, #1 + 800f564: d1f6 bne.n 800f554 <LoRaMacCryptoUnsecureMessage+0x20> + 800f566: 4628 mov r0, r5 + 800f568: f000 f95e bl 800f828 <LoRaMacParserData> + 800f56c: 2800 cmp r0, #0 + 800f56e: d147 bne.n 800f600 <LoRaMacCryptoUnsecureMessage+0xcc> + 800f570: 4b26 ldr r3, [pc, #152] ; (800f60c <LoRaMacCryptoUnsecureMessage+0xd8>) + 800f572: 781a ldrb r2, [r3, #0] + 800f574: 4542 cmp r2, r8 + 800f576: d003 beq.n 800f580 <LoRaMacCryptoUnsecureMessage+0x4c> + 800f578: 791a ldrb r2, [r3, #4] + 800f57a: 4542 cmp r2, r8 + 800f57c: d142 bne.n 800f604 <LoRaMacCryptoUnsecureMessage+0xd0> + 800f57e: 2001 movs r0, #1 + 800f580: 68aa ldr r2, [r5, #8] + 800f582: 42ba cmp r2, r7 + 800f584: d140 bne.n 800f608 <LoRaMacCryptoUnsecureMessage+0xd4> + 800f586: eb03 0280 add.w r2, r3, r0, lsl #2 + 800f58a: 6aeb ldr r3, [r5, #44] ; 0x2c + 800f58c: f892 8001 ldrb.w r8, [r2, #1] + 800f590: 7929 ldrb r1, [r5, #4] + 800f592: e9cd 4300 strd r4, r3, [sp] + 800f596: 3904 subs r1, #4 + 800f598: 7892 ldrb r2, [r2, #2] + 800f59a: 6828 ldr r0, [r5, #0] + 800f59c: 463b mov r3, r7 + 800f59e: b289 uxth r1, r1 + 800f5a0: f7ff fe86 bl 800f2b0 <VerifyCmacB0.constprop.0.isra.0> + 800f5a4: 2800 cmp r0, #0 + 800f5a6: d1d6 bne.n 800f556 <LoRaMacCryptoUnsecureMessage+0x22> + 800f5a8: f895 3020 ldrb.w r3, [r5, #32] + 800f5ac: 9401 str r4, [sp, #4] + 800f5ae: 2b00 cmp r3, #0 + 800f5b0: f04f 0301 mov.w r3, #1 + 800f5b4: 9300 str r3, [sp, #0] + 800f5b6: bf14 ite ne + 800f5b8: 4642 movne r2, r8 + 800f5ba: 2208 moveq r2, #8 + 800f5bc: f895 1028 ldrb.w r1, [r5, #40] ; 0x28 + 800f5c0: 6a68 ldr r0, [r5, #36] ; 0x24 + 800f5c2: 463b mov r3, r7 + 800f5c4: f7ff fdfb bl 800f1be <PayloadEncrypt> + 800f5c8: 2800 cmp r0, #0 + 800f5ca: d1c4 bne.n 800f556 <LoRaMacCryptoUnsecureMessage+0x22> + 800f5cc: 3e01 subs r6, #1 + 800f5ce: 2e03 cmp r6, #3 + 800f5d0: d8c1 bhi.n 800f556 <LoRaMacCryptoUnsecureMessage+0x22> + 800f5d2: e8df f006 tbb [pc, r6] + 800f5d6: 0702 .short 0x0702 + 800f5d8: 0f0b .short 0x0f0b + 800f5da: 4b0d ldr r3, [pc, #52] ; (800f610 <LoRaMacCryptoUnsecureMessage+0xdc>) + 800f5dc: 681b ldr r3, [r3, #0] + 800f5de: 611c str r4, [r3, #16] + 800f5e0: 621c str r4, [r3, #32] + 800f5e2: e7b8 b.n 800f556 <LoRaMacCryptoUnsecureMessage+0x22> + 800f5e4: 4b0a ldr r3, [pc, #40] ; (800f610 <LoRaMacCryptoUnsecureMessage+0xdc>) + 800f5e6: 681b ldr r3, [r3, #0] + 800f5e8: 615c str r4, [r3, #20] + 800f5ea: e7f9 b.n 800f5e0 <LoRaMacCryptoUnsecureMessage+0xac> + 800f5ec: 4b08 ldr r3, [pc, #32] ; (800f610 <LoRaMacCryptoUnsecureMessage+0xdc>) + 800f5ee: 681b ldr r3, [r3, #0] + 800f5f0: 619c str r4, [r3, #24] + 800f5f2: e7f5 b.n 800f5e0 <LoRaMacCryptoUnsecureMessage+0xac> + 800f5f4: 4b06 ldr r3, [pc, #24] ; (800f610 <LoRaMacCryptoUnsecureMessage+0xdc>) + 800f5f6: 681b ldr r3, [r3, #0] + 800f5f8: 61dc str r4, [r3, #28] + 800f5fa: e7ac b.n 800f556 <LoRaMacCryptoUnsecureMessage+0x22> + 800f5fc: 200a movs r0, #10 + 800f5fe: e7aa b.n 800f556 <LoRaMacCryptoUnsecureMessage+0x22> + 800f600: 2010 movs r0, #16 + 800f602: e7a8 b.n 800f556 <LoRaMacCryptoUnsecureMessage+0x22> + 800f604: 200c movs r0, #12 + 800f606: e7a6 b.n 800f556 <LoRaMacCryptoUnsecureMessage+0x22> + 800f608: 2002 movs r0, #2 + 800f60a: e7a4 b.n 800f556 <LoRaMacCryptoUnsecureMessage+0x22> + 800f60c: 200008b4 .word 0x200008b4 + 800f610: 20002618 .word 0x20002618 + +0800f614 <LoRaMacCryptoDeriveLifeTimeKey>: + 800f614: b51f push {r0, r1, r2, r3, r4, lr} + 800f616: 460a mov r2, r1 + 800f618: 2a0b cmp r2, #11 + 800f61a: f04f 0100 mov.w r1, #0 + 800f61e: e9cd 1100 strd r1, r1, [sp] + 800f622: e9cd 1102 strd r1, r1, [sp, #8] + 800f626: d007 beq.n 800f638 <LoRaMacCryptoDeriveLifeTimeKey+0x24> + 800f628: 2a0c cmp r2, #12 + 800f62a: d013 beq.n 800f654 <LoRaMacCryptoDeriveLifeTimeKey+0x40> + 800f62c: 2a0a cmp r2, #10 + 800f62e: d00f beq.n 800f650 <LoRaMacCryptoDeriveLifeTimeKey+0x3c> + 800f630: 200b movs r0, #11 + 800f632: b005 add sp, #20 + 800f634: f85d fb04 ldr.w pc, [sp], #4 + 800f638: 2801 cmp r0, #1 + 800f63a: d102 bne.n 800f642 <LoRaMacCryptoDeriveLifeTimeKey+0x2e> + 800f63c: 2320 movs r3, #32 + 800f63e: f88d 3000 strb.w r3, [sp] + 800f642: 4668 mov r0, sp + 800f644: f002 f813 bl 801166e <SecureElementDeriveAndStoreKey> + 800f648: 2800 cmp r0, #0 + 800f64a: bf18 it ne + 800f64c: 200f movne r0, #15 + 800f64e: e7f0 b.n 800f632 <LoRaMacCryptoDeriveLifeTimeKey+0x1e> + 800f650: 2330 movs r3, #48 ; 0x30 + 800f652: e7f4 b.n 800f63e <LoRaMacCryptoDeriveLifeTimeKey+0x2a> + 800f654: 210b movs r1, #11 + 800f656: e7f4 b.n 800f642 <LoRaMacCryptoDeriveLifeTimeKey+0x2e> + +0800f658 <LoRaMacCryptoSetKey>: + 800f658: b538 push {r3, r4, r5, lr} + 800f65a: 4605 mov r5, r0 + 800f65c: f002 f802 bl 8011664 <SecureElementSetKey> + 800f660: 4604 mov r4, r0 + 800f662: b978 cbnz r0, 800f684 <LoRaMacCryptoSetKey+0x2c> + 800f664: b97d cbnz r5, 800f686 <LoRaMacCryptoSetKey+0x2e> + 800f666: 4b09 ldr r3, [pc, #36] ; (800f68c <LoRaMacCryptoSetKey+0x34>) + 800f668: 681b ldr r3, [r3, #0] + 800f66a: 210b movs r1, #11 + 800f66c: 7898 ldrb r0, [r3, #2] + 800f66e: f7ff ffd1 bl 800f614 <LoRaMacCryptoDeriveLifeTimeKey> + 800f672: b938 cbnz r0, 800f684 <LoRaMacCryptoSetKey+0x2c> + 800f674: 210c movs r1, #12 + 800f676: f7ff ffcd bl 800f614 <LoRaMacCryptoDeriveLifeTimeKey> + 800f67a: b918 cbnz r0, 800f684 <LoRaMacCryptoSetKey+0x2c> + 800f67c: 210a movs r1, #10 + 800f67e: f7ff ffc9 bl 800f614 <LoRaMacCryptoDeriveLifeTimeKey> + 800f682: b100 cbz r0, 800f686 <LoRaMacCryptoSetKey+0x2e> + 800f684: 240f movs r4, #15 + 800f686: 4620 mov r0, r4 + 800f688: bd38 pop {r3, r4, r5, pc} + 800f68a: bf00 nop + 800f68c: 20002618 .word 0x20002618 + +0800f690 <LoRaMacCryptoHandleJoinAccept>: + 800f690: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 800f694: 4680 mov r8, r0 + 800f696: b08f sub sp, #60 ; 0x3c + 800f698: 460c mov r4, r1 + 800f69a: 4617 mov r7, r2 + 800f69c: 2a00 cmp r2, #0 + 800f69e: d06b beq.n 800f778 <LoRaMacCryptoHandleJoinAccept+0xe8> + 800f6a0: 2900 cmp r1, #0 + 800f6a2: d069 beq.n 800f778 <LoRaMacCryptoHandleJoinAccept+0xe8> + 800f6a4: 2500 movs r5, #0 + 800f6a6: 4629 mov r1, r5 + 800f6a8: 221d movs r2, #29 + 800f6aa: a806 add r0, sp, #24 + 800f6ac: 9505 str r5, [sp, #20] + 800f6ae: f004 fea3 bl 80143f8 <memset> + 800f6b2: f88d 5013 strb.w r5, [sp, #19] + 800f6b6: 4d34 ldr r5, [pc, #208] ; (800f788 <LoRaMacCryptoHandleJoinAccept+0xf8>) + 800f6b8: 682b ldr r3, [r5, #0] + 800f6ba: f10d 0914 add.w r9, sp, #20 + 800f6be: 889e ldrh r6, [r3, #4] + 800f6c0: f8cd 9004 str.w r9, [sp, #4] + 800f6c4: f10d 0313 add.w r3, sp, #19 + 800f6c8: 9302 str r3, [sp, #8] + 800f6ca: 793b ldrb r3, [r7, #4] + 800f6cc: 9300 str r3, [sp, #0] + 800f6ce: 683b ldr r3, [r7, #0] + 800f6d0: 4632 mov r2, r6 + 800f6d2: 4621 mov r1, r4 + 800f6d4: 4640 mov r0, r8 + 800f6d6: f001 ffe6 bl 80116a6 <SecureElementProcessJoinAccept> + 800f6da: 2800 cmp r0, #0 + 800f6dc: d14e bne.n 800f77c <LoRaMacCryptoHandleJoinAccept+0xec> + 800f6de: 6838 ldr r0, [r7, #0] + 800f6e0: 793a ldrb r2, [r7, #4] + 800f6e2: 4649 mov r1, r9 + 800f6e4: f002 f952 bl 801198c <memcpy1> + 800f6e8: 4638 mov r0, r7 + 800f6ea: f000 f84f bl 800f78c <LoRaMacParserJoinAccept> + 800f6ee: 2800 cmp r0, #0 + 800f6f0: d146 bne.n 800f780 <LoRaMacCryptoHandleJoinAccept+0xf0> + 800f6f2: 7a3c ldrb r4, [r7, #8] + 800f6f4: 79fa ldrb r2, [r7, #7] + 800f6f6: 79bb ldrb r3, [r7, #6] + 800f6f8: 0424 lsls r4, r4, #16 + 800f6fa: ea44 2402 orr.w r4, r4, r2, lsl #8 + 800f6fe: 431c orrs r4, r3 + 800f700: 682b ldr r3, [r5, #0] + 800f702: 689a ldr r2, [r3, #8] + 800f704: 4294 cmp r4, r2 + 800f706: d93d bls.n 800f784 <LoRaMacCryptoHandleJoinAccept+0xf4> + 800f708: 609c str r4, [r3, #8] + 800f70a: f89d 0013 ldrb.w r0, [sp, #19] + 800f70e: 210b movs r1, #11 + 800f710: f7ff ff80 bl 800f614 <LoRaMacCryptoDeriveLifeTimeKey> + 800f714: 4603 mov r3, r0 + 800f716: bb58 cbnz r0, 800f770 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f718: 210c movs r1, #12 + 800f71a: f7ff ff7b bl 800f614 <LoRaMacCryptoDeriveLifeTimeKey> + 800f71e: 4603 mov r3, r0 + 800f720: bb30 cbnz r0, 800f770 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f722: 210a movs r1, #10 + 800f724: f7ff ff76 bl 800f614 <LoRaMacCryptoDeriveLifeTimeKey> + 800f728: 4603 mov r3, r0 + 800f72a: bb08 cbnz r0, 800f770 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f72c: 7a7b ldrb r3, [r7, #9] + 800f72e: 7aba ldrb r2, [r7, #10] + 800f730: 7aff ldrb r7, [r7, #11] + 800f732: 043f lsls r7, r7, #16 + 800f734: ea47 2702 orr.w r7, r7, r2, lsl #8 + 800f738: 431f orrs r7, r3 + 800f73a: 463a mov r2, r7 + 800f73c: 4633 mov r3, r6 + 800f73e: 4621 mov r1, r4 + 800f740: 2009 movs r0, #9 + 800f742: f7ff fd19 bl 800f178 <DeriveSessionKey10x> + 800f746: 4603 mov r3, r0 + 800f748: b990 cbnz r0, 800f770 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f74a: 4633 mov r3, r6 + 800f74c: 463a mov r2, r7 + 800f74e: 4621 mov r1, r4 + 800f750: 2008 movs r0, #8 + 800f752: f7ff fd11 bl 800f178 <DeriveSessionKey10x> + 800f756: 4603 mov r3, r0 + 800f758: b950 cbnz r0, 800f770 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f75a: 682a ldr r2, [r5, #0] + 800f75c: f89d 1013 ldrb.w r1, [sp, #19] + 800f760: 7091 strb r1, [r2, #2] + 800f762: 2100 movs r1, #0 + 800f764: 60d1 str r1, [r2, #12] + 800f766: f04f 31ff mov.w r1, #4294967295 + 800f76a: e9c2 1104 strd r1, r1, [r2, #16] + 800f76e: 6191 str r1, [r2, #24] + 800f770: 4618 mov r0, r3 + 800f772: b00f add sp, #60 ; 0x3c + 800f774: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 800f778: 230a movs r3, #10 + 800f77a: e7f9 b.n 800f770 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f77c: 230f movs r3, #15 + 800f77e: e7f7 b.n 800f770 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f780: 2310 movs r3, #16 + 800f782: e7f5 b.n 800f770 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f784: 2303 movs r3, #3 + 800f786: e7f3 b.n 800f770 <LoRaMacCryptoHandleJoinAccept+0xe0> + 800f788: 20002618 .word 0x20002618 + +0800f78c <LoRaMacParserJoinAccept>: + 800f78c: b510 push {r4, lr} + 800f78e: 4604 mov r4, r0 + 800f790: 2800 cmp r0, #0 + 800f792: d045 beq.n 800f820 <LoRaMacParserJoinAccept+0x94> + 800f794: 6801 ldr r1, [r0, #0] + 800f796: 2900 cmp r1, #0 + 800f798: d042 beq.n 800f820 <LoRaMacParserJoinAccept+0x94> + 800f79a: f811 3b01 ldrb.w r3, [r1], #1 + 800f79e: 7143 strb r3, [r0, #5] + 800f7a0: 2203 movs r2, #3 + 800f7a2: 3006 adds r0, #6 + 800f7a4: f002 f8f2 bl 801198c <memcpy1> + 800f7a8: 4620 mov r0, r4 + 800f7aa: 2203 movs r2, #3 + 800f7ac: f850 1b09 ldr.w r1, [r0], #9 + 800f7b0: 3104 adds r1, #4 + 800f7b2: f002 f8eb bl 801198c <memcpy1> + 800f7b6: 6821 ldr r1, [r4, #0] + 800f7b8: 79cb ldrb r3, [r1, #7] + 800f7ba: 60e3 str r3, [r4, #12] + 800f7bc: 7a0a ldrb r2, [r1, #8] + 800f7be: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800f7c2: 60e3 str r3, [r4, #12] + 800f7c4: 7a4a ldrb r2, [r1, #9] + 800f7c6: ea43 4302 orr.w r3, r3, r2, lsl #16 + 800f7ca: 60e3 str r3, [r4, #12] + 800f7cc: 7a8a ldrb r2, [r1, #10] + 800f7ce: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800f7d2: 60e3 str r3, [r4, #12] + 800f7d4: 7acb ldrb r3, [r1, #11] + 800f7d6: 7423 strb r3, [r4, #16] + 800f7d8: 7b0b ldrb r3, [r1, #12] + 800f7da: 7463 strb r3, [r4, #17] + 800f7dc: 7923 ldrb r3, [r4, #4] + 800f7de: 2b21 cmp r3, #33 ; 0x21 + 800f7e0: d11a bne.n 800f818 <LoRaMacParserJoinAccept+0x8c> + 800f7e2: 2210 movs r2, #16 + 800f7e4: 310d adds r1, #13 + 800f7e6: f104 0012 add.w r0, r4, #18 + 800f7ea: f002 f8cf bl 801198c <memcpy1> + 800f7ee: 221d movs r2, #29 + 800f7f0: 6821 ldr r1, [r4, #0] + 800f7f2: 1c50 adds r0, r2, #1 + 800f7f4: 5c8b ldrb r3, [r1, r2] + 800f7f6: 6263 str r3, [r4, #36] ; 0x24 + 800f7f8: 5c08 ldrb r0, [r1, r0] + 800f7fa: ea43 2300 orr.w r3, r3, r0, lsl #8 + 800f7fe: 1c90 adds r0, r2, #2 + 800f800: 6263 str r3, [r4, #36] ; 0x24 + 800f802: 5c08 ldrb r0, [r1, r0] + 800f804: 3203 adds r2, #3 + 800f806: ea43 4300 orr.w r3, r3, r0, lsl #16 + 800f80a: 6263 str r3, [r4, #36] ; 0x24 + 800f80c: 5c8a ldrb r2, [r1, r2] + 800f80e: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800f812: 6263 str r3, [r4, #36] ; 0x24 + 800f814: 2000 movs r0, #0 + 800f816: bd10 pop {r4, pc} + 800f818: 2b11 cmp r3, #17 + 800f81a: dc03 bgt.n 800f824 <LoRaMacParserJoinAccept+0x98> + 800f81c: 220d movs r2, #13 + 800f81e: e7e7 b.n 800f7f0 <LoRaMacParserJoinAccept+0x64> + 800f820: 2002 movs r0, #2 + 800f822: e7f8 b.n 800f816 <LoRaMacParserJoinAccept+0x8a> + 800f824: 2001 movs r0, #1 + 800f826: e7f6 b.n 800f816 <LoRaMacParserJoinAccept+0x8a> + +0800f828 <LoRaMacParserData>: + 800f828: b510 push {r4, lr} + 800f82a: 4604 mov r4, r0 + 800f82c: 2800 cmp r0, #0 + 800f82e: d054 beq.n 800f8da <LoRaMacParserData+0xb2> + 800f830: 6801 ldr r1, [r0, #0] + 800f832: 2900 cmp r1, #0 + 800f834: d051 beq.n 800f8da <LoRaMacParserData+0xb2> + 800f836: 780b ldrb r3, [r1, #0] + 800f838: 7143 strb r3, [r0, #5] + 800f83a: 784b ldrb r3, [r1, #1] + 800f83c: 6083 str r3, [r0, #8] + 800f83e: 788a ldrb r2, [r1, #2] + 800f840: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800f844: 6083 str r3, [r0, #8] + 800f846: 78ca ldrb r2, [r1, #3] + 800f848: ea43 4302 orr.w r3, r3, r2, lsl #16 + 800f84c: 6083 str r3, [r0, #8] + 800f84e: 790a ldrb r2, [r1, #4] + 800f850: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800f854: 6083 str r3, [r0, #8] + 800f856: 794b ldrb r3, [r1, #5] + 800f858: 7303 strb r3, [r0, #12] + 800f85a: 798b ldrb r3, [r1, #6] + 800f85c: 81c3 strh r3, [r0, #14] + 800f85e: 79ca ldrb r2, [r1, #7] + 800f860: ea43 2302 orr.w r3, r3, r2, lsl #8 + 800f864: 7b02 ldrb r2, [r0, #12] + 800f866: 81c3 strh r3, [r0, #14] + 800f868: f002 020f and.w r2, r2, #15 + 800f86c: 3108 adds r1, #8 + 800f86e: 3010 adds r0, #16 + 800f870: f002 f88c bl 801198c <memcpy1> + 800f874: 7b23 ldrb r3, [r4, #12] + 800f876: 2200 movs r2, #0 + 800f878: f003 030f and.w r3, r3, #15 + 800f87c: f884 2020 strb.w r2, [r4, #32] + 800f880: f884 2028 strb.w r2, [r4, #40] ; 0x28 + 800f884: 7922 ldrb r2, [r4, #4] + 800f886: f103 0008 add.w r0, r3, #8 + 800f88a: 1a11 subs r1, r2, r0 + 800f88c: 2904 cmp r1, #4 + 800f88e: dd0d ble.n 800f8ac <LoRaMacParserData+0x84> + 800f890: 6821 ldr r1, [r4, #0] + 800f892: 3309 adds r3, #9 + 800f894: 3a04 subs r2, #4 + 800f896: 1ad2 subs r2, r2, r3 + 800f898: 5c08 ldrb r0, [r1, r0] + 800f89a: f884 0020 strb.w r0, [r4, #32] + 800f89e: b2d2 uxtb r2, r2 + 800f8a0: 6a60 ldr r0, [r4, #36] ; 0x24 + 800f8a2: f884 2028 strb.w r2, [r4, #40] ; 0x28 + 800f8a6: 4419 add r1, r3 + 800f8a8: f002 f870 bl 801198c <memcpy1> + 800f8ac: 7923 ldrb r3, [r4, #4] + 800f8ae: 6822 ldr r2, [r4, #0] + 800f8b0: 441a add r2, r3 + 800f8b2: 2000 movs r0, #0 + 800f8b4: f812 3c04 ldrb.w r3, [r2, #-4] + 800f8b8: 62e3 str r3, [r4, #44] ; 0x2c + 800f8ba: f812 1c03 ldrb.w r1, [r2, #-3] + 800f8be: ea43 2301 orr.w r3, r3, r1, lsl #8 + 800f8c2: 62e3 str r3, [r4, #44] ; 0x2c + 800f8c4: f812 1c02 ldrb.w r1, [r2, #-2] + 800f8c8: ea43 4301 orr.w r3, r3, r1, lsl #16 + 800f8cc: 62e3 str r3, [r4, #44] ; 0x2c + 800f8ce: f812 2c01 ldrb.w r2, [r2, #-1] + 800f8d2: ea43 6302 orr.w r3, r3, r2, lsl #24 + 800f8d6: 62e3 str r3, [r4, #44] ; 0x2c + 800f8d8: bd10 pop {r4, pc} + 800f8da: 2002 movs r0, #2 + 800f8dc: e7fc b.n 800f8d8 <LoRaMacParserData+0xb0> + +0800f8de <LoRaMacSerializerJoinRequest>: + 800f8de: b510 push {r4, lr} + 800f8e0: 4604 mov r4, r0 + 800f8e2: b360 cbz r0, 800f93e <LoRaMacSerializerJoinRequest+0x60> + 800f8e4: 6803 ldr r3, [r0, #0] + 800f8e6: b353 cbz r3, 800f93e <LoRaMacSerializerJoinRequest+0x60> + 800f8e8: 7902 ldrb r2, [r0, #4] + 800f8ea: 2a16 cmp r2, #22 + 800f8ec: d929 bls.n 800f942 <LoRaMacSerializerJoinRequest+0x64> + 800f8ee: 7942 ldrb r2, [r0, #5] + 800f8f0: 701a strb r2, [r3, #0] + 800f8f2: 4601 mov r1, r0 + 800f8f4: 2208 movs r2, #8 + 800f8f6: f851 0b06 ldr.w r0, [r1], #6 + 800f8fa: 3001 adds r0, #1 + 800f8fc: f002 f850 bl 80119a0 <memcpyr> + 800f900: 4621 mov r1, r4 + 800f902: 2208 movs r2, #8 + 800f904: f851 0b0e ldr.w r0, [r1], #14 + 800f908: 3009 adds r0, #9 + 800f90a: f002 f849 bl 80119a0 <memcpyr> + 800f90e: 6823 ldr r3, [r4, #0] + 800f910: 8ae2 ldrh r2, [r4, #22] + 800f912: 745a strb r2, [r3, #17] + 800f914: 8ae3 ldrh r3, [r4, #22] + 800f916: 6822 ldr r2, [r4, #0] + 800f918: 0a1b lsrs r3, r3, #8 + 800f91a: 7493 strb r3, [r2, #18] + 800f91c: 6823 ldr r3, [r4, #0] + 800f91e: 69a2 ldr r2, [r4, #24] + 800f920: 74da strb r2, [r3, #19] + 800f922: 69a3 ldr r3, [r4, #24] + 800f924: 6822 ldr r2, [r4, #0] + 800f926: 0a1b lsrs r3, r3, #8 + 800f928: 7513 strb r3, [r2, #20] + 800f92a: 6823 ldr r3, [r4, #0] + 800f92c: 8b62 ldrh r2, [r4, #26] + 800f92e: 755a strb r2, [r3, #21] + 800f930: 6823 ldr r3, [r4, #0] + 800f932: 7ee2 ldrb r2, [r4, #27] + 800f934: 759a strb r2, [r3, #22] + 800f936: 2317 movs r3, #23 + 800f938: 7123 strb r3, [r4, #4] + 800f93a: 2000 movs r0, #0 + 800f93c: bd10 pop {r4, pc} + 800f93e: 2001 movs r0, #1 + 800f940: e7fc b.n 800f93c <LoRaMacSerializerJoinRequest+0x5e> + 800f942: 2002 movs r0, #2 + 800f944: e7fa b.n 800f93c <LoRaMacSerializerJoinRequest+0x5e> + +0800f946 <LoRaMacSerializerData>: + 800f946: b538 push {r3, r4, r5, lr} + 800f948: 4604 mov r4, r0 + 800f94a: 2800 cmp r0, #0 + 800f94c: d063 beq.n 800fa16 <LoRaMacSerializerData+0xd0> + 800f94e: 6801 ldr r1, [r0, #0] + 800f950: 2900 cmp r1, #0 + 800f952: d060 beq.n 800fa16 <LoRaMacSerializerData+0xd0> + 800f954: 7b03 ldrb r3, [r0, #12] + 800f956: f890 2028 ldrb.w r2, [r0, #40] ; 0x28 + 800f95a: f003 030f and.w r3, r3, #15 + 800f95e: 2a00 cmp r2, #0 + 800f960: d157 bne.n 800fa12 <LoRaMacSerializerData+0xcc> + 800f962: 3308 adds r3, #8 + 800f964: 7920 ldrb r0, [r4, #4] + 800f966: 3204 adds r2, #4 + 800f968: 4413 add r3, r2 + 800f96a: 4298 cmp r0, r3 + 800f96c: d355 bcc.n 800fa1a <LoRaMacSerializerData+0xd4> + 800f96e: 7963 ldrb r3, [r4, #5] + 800f970: 700b strb r3, [r1, #0] + 800f972: 6823 ldr r3, [r4, #0] + 800f974: 68a2 ldr r2, [r4, #8] + 800f976: 705a strb r2, [r3, #1] + 800f978: 68a3 ldr r3, [r4, #8] + 800f97a: 6822 ldr r2, [r4, #0] + 800f97c: 0a1b lsrs r3, r3, #8 + 800f97e: 7093 strb r3, [r2, #2] + 800f980: 6823 ldr r3, [r4, #0] + 800f982: 8962 ldrh r2, [r4, #10] + 800f984: 70da strb r2, [r3, #3] + 800f986: 6823 ldr r3, [r4, #0] + 800f988: 7ae2 ldrb r2, [r4, #11] + 800f98a: 711a strb r2, [r3, #4] + 800f98c: 6823 ldr r3, [r4, #0] + 800f98e: 7b22 ldrb r2, [r4, #12] + 800f990: 715a strb r2, [r3, #5] + 800f992: 6823 ldr r3, [r4, #0] + 800f994: 89e2 ldrh r2, [r4, #14] + 800f996: 719a strb r2, [r3, #6] + 800f998: 89e3 ldrh r3, [r4, #14] + 800f99a: 6822 ldr r2, [r4, #0] + 800f99c: 0a1b lsrs r3, r3, #8 + 800f99e: 4621 mov r1, r4 + 800f9a0: 71d3 strb r3, [r2, #7] + 800f9a2: 7b22 ldrb r2, [r4, #12] + 800f9a4: f851 0b10 ldr.w r0, [r1], #16 + 800f9a8: f002 020f and.w r2, r2, #15 + 800f9ac: 3008 adds r0, #8 + 800f9ae: f001 ffed bl 801198c <memcpy1> + 800f9b2: 7b23 ldrb r3, [r4, #12] + 800f9b4: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 + 800f9b8: f003 030f and.w r3, r3, #15 + 800f9bc: f103 0508 add.w r5, r3, #8 + 800f9c0: b12a cbz r2, 800f9ce <LoRaMacSerializerData+0x88> + 800f9c2: 6822 ldr r2, [r4, #0] + 800f9c4: f894 1020 ldrb.w r1, [r4, #32] + 800f9c8: 5551 strb r1, [r2, r5] + 800f9ca: f103 0509 add.w r5, r3, #9 + 800f9ce: 6820 ldr r0, [r4, #0] + 800f9d0: f894 2028 ldrb.w r2, [r4, #40] ; 0x28 + 800f9d4: 6a61 ldr r1, [r4, #36] ; 0x24 + 800f9d6: 4428 add r0, r5 + 800f9d8: f001 ffd8 bl 801198c <memcpy1> + 800f9dc: f894 3028 ldrb.w r3, [r4, #40] ; 0x28 + 800f9e0: 6822 ldr r2, [r4, #0] + 800f9e2: 6ae1 ldr r1, [r4, #44] ; 0x2c + 800f9e4: 442b add r3, r5 + 800f9e6: 54d1 strb r1, [r2, r3] + 800f9e8: 1c5a adds r2, r3, #1 + 800f9ea: 6ae1 ldr r1, [r4, #44] ; 0x2c + 800f9ec: 6820 ldr r0, [r4, #0] + 800f9ee: b292 uxth r2, r2 + 800f9f0: 0a09 lsrs r1, r1, #8 + 800f9f2: 5481 strb r1, [r0, r2] + 800f9f4: 1c9a adds r2, r3, #2 + 800f9f6: 6821 ldr r1, [r4, #0] + 800f9f8: 8de0 ldrh r0, [r4, #46] ; 0x2e + 800f9fa: b292 uxth r2, r2 + 800f9fc: 5488 strb r0, [r1, r2] + 800f9fe: 1cda adds r2, r3, #3 + 800fa00: 6821 ldr r1, [r4, #0] + 800fa02: f894 002f ldrb.w r0, [r4, #47] ; 0x2f + 800fa06: b292 uxth r2, r2 + 800fa08: 3304 adds r3, #4 + 800fa0a: 5488 strb r0, [r1, r2] + 800fa0c: 7123 strb r3, [r4, #4] + 800fa0e: 2000 movs r0, #0 + 800fa10: bd38 pop {r3, r4, r5, pc} + 800fa12: 3309 adds r3, #9 + 800fa14: e7a6 b.n 800f964 <LoRaMacSerializerData+0x1e> + 800fa16: 2001 movs r0, #1 + 800fa18: e7fa b.n 800fa10 <LoRaMacSerializerData+0xca> + 800fa1a: 2002 movs r0, #2 + 800fa1c: e7f8 b.n 800fa10 <LoRaMacSerializerData+0xca> + ... + +0800fa20 <NvmDataMgmtEvent>: + 800fa20: 4b02 ldr r3, [pc, #8] ; (800fa2c <NvmDataMgmtEvent+0xc>) + 800fa22: 881a ldrh r2, [r3, #0] + 800fa24: 4310 orrs r0, r2 + 800fa26: 8018 strh r0, [r3, #0] + 800fa28: 4770 bx lr + 800fa2a: bf00 nop + 800fa2c: 2000261c .word 0x2000261c + +0800fa30 <NvmDataMgmtStoreBegin>: + 800fa30: b508 push {r3, lr} + 800fa32: 4b07 ldr r3, [pc, #28] ; (800fa50 <NvmDataMgmtStoreBegin+0x20>) + 800fa34: 881b ldrh r3, [r3, #0] + 800fa36: b13b cbz r3, 800fa48 <NvmDataMgmtStoreBegin+0x18> + 800fa38: f7fe fa28 bl 800de8c <LoRaMacStop> + 800fa3c: 2800 cmp r0, #0 + 800fa3e: bf0c ite eq + 800fa40: 2000 moveq r0, #0 + 800fa42: f06f 0002 mvnne.w r0, #2 + 800fa46: bd08 pop {r3, pc} + 800fa48: f06f 0001 mvn.w r0, #1 + 800fa4c: e7fb b.n 800fa46 <NvmDataMgmtStoreBegin+0x16> + 800fa4e: bf00 nop + 800fa50: 2000261c .word 0x2000261c + +0800fa54 <NvmDataMgmtStoreEnd>: + 800fa54: b510 push {r4, lr} + 800fa56: 4b03 ldr r3, [pc, #12] ; (800fa64 <NvmDataMgmtStoreEnd+0x10>) + 800fa58: 2400 movs r4, #0 + 800fa5a: 801c strh r4, [r3, #0] + 800fa5c: f7fe fa0c bl 800de78 <LoRaMacStart> + 800fa60: 4620 mov r0, r4 + 800fa62: bd10 pop {r4, pc} + 800fa64: 2000261c .word 0x2000261c + +0800fa68 <RegionIsActive>: + 800fa68: fab0 f080 clz r0, r0 + 800fa6c: 0940 lsrs r0, r0, #5 + 800fa6e: 4770 bx lr + +0800fa70 <RegionGetPhyParam>: + 800fa70: b082 sub sp, #8 + 800fa72: b918 cbnz r0, 800fa7c <RegionGetPhyParam+0xc> + 800fa74: 4608 mov r0, r1 + 800fa76: b002 add sp, #8 + 800fa78: f000 b8d0 b.w 800fc1c <RegionAS923GetPhyParam> + 800fa7c: 2000 movs r0, #0 + 800fa7e: b002 add sp, #8 + 800fa80: 4770 bx lr + +0800fa82 <RegionSetBandTxDone>: + 800fa82: b910 cbnz r0, 800fa8a <RegionSetBandTxDone+0x8> + 800fa84: 4608 mov r0, r1 + 800fa86: f000 b983 b.w 800fd90 <RegionAS923SetBandTxDone> + 800fa8a: 4770 bx lr + +0800fa8c <RegionInitDefaults>: + 800fa8c: b910 cbnz r0, 800fa94 <RegionInitDefaults+0x8> + 800fa8e: 4608 mov r0, r1 + 800fa90: f000 b99a b.w 800fdc8 <RegionAS923InitDefaults> + 800fa94: 4770 bx lr + +0800fa96 <RegionVerify>: + 800fa96: 4603 mov r3, r0 + 800fa98: 4608 mov r0, r1 + 800fa9a: 4611 mov r1, r2 + 800fa9c: b90b cbnz r3, 800faa2 <RegionVerify+0xc> + 800fa9e: f000 b9e7 b.w 800fe70 <RegionAS923Verify> + 800faa2: 2000 movs r0, #0 + 800faa4: 4770 bx lr + +0800faa6 <RegionApplyCFList>: + 800faa6: b910 cbnz r0, 800faae <RegionApplyCFList+0x8> + 800faa8: 4608 mov r0, r1 + 800faaa: f000 bd45 b.w 8010538 <RegionAS923ApplyCFList> + 800faae: 4770 bx lr + +0800fab0 <RegionChanMaskSet>: + 800fab0: b910 cbnz r0, 800fab8 <RegionChanMaskSet+0x8> + 800fab2: 4608 mov r0, r1 + 800fab4: f000 ba08 b.w 800fec8 <RegionAS923ChanMaskSet> + 800fab8: 2000 movs r0, #0 + 800faba: 4770 bx lr + +0800fabc <RegionComputeRxWindowParameters>: + 800fabc: b410 push {r4} + 800fabe: 4604 mov r4, r0 + 800fac0: 4608 mov r0, r1 + 800fac2: 4611 mov r1, r2 + 800fac4: 461a mov r2, r3 + 800fac6: 9b01 ldr r3, [sp, #4] + 800fac8: b914 cbnz r4, 800fad0 <RegionComputeRxWindowParameters+0x14> + 800faca: bc10 pop {r4} + 800facc: f000 ba1a b.w 800ff04 <RegionAS923ComputeRxWindowParameters> + 800fad0: bc10 pop {r4} + 800fad2: 4770 bx lr + +0800fad4 <RegionRxConfig>: + 800fad4: 4603 mov r3, r0 + 800fad6: 4608 mov r0, r1 + 800fad8: 4611 mov r1, r2 + 800fada: b90b cbnz r3, 800fae0 <RegionRxConfig+0xc> + 800fadc: f000 ba44 b.w 800ff68 <RegionAS923RxConfig> + 800fae0: 2000 movs r0, #0 + 800fae2: 4770 bx lr + +0800fae4 <RegionTxConfig>: + 800fae4: b410 push {r4} + 800fae6: 4604 mov r4, r0 + 800fae8: 4608 mov r0, r1 + 800faea: 4611 mov r1, r2 + 800faec: 461a mov r2, r3 + 800faee: b914 cbnz r4, 800faf6 <RegionTxConfig+0x12> + 800faf0: bc10 pop {r4} + 800faf2: f000 bab1 b.w 8010058 <RegionAS923TxConfig> + 800faf6: 2000 movs r0, #0 + 800faf8: bc10 pop {r4} + 800fafa: 4770 bx lr + +0800fafc <RegionLinkAdrReq>: + 800fafc: b430 push {r4, r5} + 800fafe: 4605 mov r5, r0 + 800fb00: 4608 mov r0, r1 + 800fb02: 4611 mov r1, r2 + 800fb04: 461a mov r2, r3 + 800fb06: e9dd 3402 ldrd r3, r4, [sp, #8] + 800fb0a: b91d cbnz r5, 800fb14 <RegionLinkAdrReq+0x18> + 800fb0c: 9402 str r4, [sp, #8] + 800fb0e: bc30 pop {r4, r5} + 800fb10: f000 bb2e b.w 8010170 <RegionAS923LinkAdrReq> + 800fb14: 2000 movs r0, #0 + 800fb16: bc30 pop {r4, r5} + 800fb18: 4770 bx lr + +0800fb1a <RegionRxParamSetupReq>: + 800fb1a: b910 cbnz r0, 800fb22 <RegionRxParamSetupReq+0x8> + 800fb1c: 4608 mov r0, r1 + 800fb1e: f000 bbdf b.w 80102e0 <RegionAS923RxParamSetupReq> + 800fb22: 2000 movs r0, #0 + 800fb24: 4770 bx lr + +0800fb26 <RegionNewChannelReq>: + 800fb26: b910 cbnz r0, 800fb2e <RegionNewChannelReq+0x8> + 800fb28: 4608 mov r0, r1 + 800fb2a: f000 bd43 b.w 80105b4 <RegionAS923NewChannelReq> + 800fb2e: 2000 movs r0, #0 + 800fb30: 4770 bx lr + +0800fb32 <RegionTxParamSetupReq>: + 800fb32: b910 cbnz r0, 800fb3a <RegionTxParamSetupReq+0x8> + 800fb34: 4608 mov r0, r1 + 800fb36: f000 bbee b.w 8010316 <RegionAS923TxParamSetupReq> + 800fb3a: 2000 movs r0, #0 + 800fb3c: 4770 bx lr + +0800fb3e <RegionDlChannelReq>: + 800fb3e: b910 cbnz r0, 800fb46 <RegionDlChannelReq+0x8> + 800fb40: 4608 mov r0, r1 + 800fb42: f000 bbeb b.w 801031c <RegionAS923DlChannelReq> + 800fb46: 2000 movs r0, #0 + 800fb48: 4770 bx lr + +0800fb4a <RegionAlternateDr>: + 800fb4a: 4603 mov r3, r0 + 800fb4c: 4608 mov r0, r1 + 800fb4e: 4611 mov r1, r2 + 800fb50: b90b cbnz r3, 800fb56 <RegionAlternateDr+0xc> + 800fb52: f000 bc05 b.w 8010360 <RegionAS923AlternateDr> + 800fb56: 2000 movs r0, #0 + 800fb58: 4770 bx lr + +0800fb5a <RegionNextChannel>: + 800fb5a: b410 push {r4} + 800fb5c: 4604 mov r4, r0 + 800fb5e: 4608 mov r0, r1 + 800fb60: 4611 mov r1, r2 + 800fb62: 461a mov r2, r3 + 800fb64: 9b01 ldr r3, [sp, #4] + 800fb66: b914 cbnz r4, 800fb6e <RegionNextChannel+0x14> + 800fb68: bc10 pop {r4} + 800fb6a: f000 bbfb b.w 8010364 <RegionAS923NextChannel> + 800fb6e: 2009 movs r0, #9 + 800fb70: bc10 pop {r4} + 800fb72: 4770 bx lr + +0800fb74 <RegionSetContinuousWave>: + 800fb74: b910 cbnz r0, 800fb7c <RegionSetContinuousWave+0x8> + 800fb76: 4608 mov r0, r1 + 800fb78: f000 bd3c b.w 80105f4 <RegionAS923SetContinuousWave> + 800fb7c: 4770 bx lr + +0800fb7e <RegionApplyDrOffset>: + 800fb7e: b410 push {r4} + 800fb80: 4604 mov r4, r0 + 800fb82: 4608 mov r0, r1 + 800fb84: 4611 mov r1, r2 + 800fb86: 461a mov r2, r3 + 800fb88: b914 cbnz r4, 800fb90 <RegionApplyDrOffset+0x12> + 800fb8a: bc10 pop {r4} + 800fb8c: f000 bd5c b.w 8010648 <RegionAS923ApplyDrOffset> + 800fb90: b2c8 uxtb r0, r1 + 800fb92: bc10 pop {r4} + 800fb94: 4770 bx lr + ... + +0800fb98 <RegionGetVersion>: + 800fb98: 4800 ldr r0, [pc, #0] ; (800fb9c <RegionGetVersion+0x4>) + 800fb9a: 4770 bx lr + 800fb9c: 01010003 .word 0x01010003 + +0800fba0 <VerifyRfFreq>: + 800fba0: 4b06 ldr r3, [pc, #24] ; (800fbbc <VerifyRfFreq+0x1c>) + 800fba2: b510 push {r4, lr} + 800fba4: 6a1b ldr r3, [r3, #32] + 800fba6: 4604 mov r4, r0 + 800fba8: 4798 blx r3 + 800fbaa: b130 cbz r0, 800fbba <VerifyRfFreq+0x1a> + 800fbac: 4804 ldr r0, [pc, #16] ; (800fbc0 <VerifyRfFreq+0x20>) + 800fbae: 4b05 ldr r3, [pc, #20] ; (800fbc4 <VerifyRfFreq+0x24>) + 800fbb0: 4420 add r0, r4 + 800fbb2: 4298 cmp r0, r3 + 800fbb4: bf8c ite hi + 800fbb6: 2000 movhi r0, #0 + 800fbb8: 2001 movls r0, #1 + 800fbba: bd10 pop {r4, pc} + 800fbbc: 080159b0 .word 0x080159b0 + 800fbc0: c9763540 .word 0xc9763540 + 800fbc4: 00c65d40 .word 0x00c65d40 + +0800fbc8 <GetTimeOnAir>: + 800fbc8: b5f0 push {r4, r5, r6, r7, lr} + 800fbca: 4b11 ldr r3, [pc, #68] ; (800fc10 <GetTimeOnAir+0x48>) + 800fbcc: b085 sub sp, #20 + 800fbce: 460c mov r4, r1 + 800fbd0: 4910 ldr r1, [pc, #64] ; (800fc14 <GetTimeOnAir+0x4c>) + 800fbd2: 561f ldrsb r7, [r3, r0] + 800fbd4: 4605 mov r5, r0 + 800fbd6: f001 f845 bl 8010c64 <RegionCommonGetBandwidth> + 800fbda: 4b0f ldr r3, [pc, #60] ; (800fc18 <GetTimeOnAir+0x50>) + 800fbdc: b2e4 uxtb r4, r4 + 800fbde: 6a5e ldr r6, [r3, #36] ; 0x24 + 800fbe0: 2d07 cmp r5, #7 + 800fbe2: f04f 0301 mov.w r3, #1 + 800fbe6: e9cd 4302 strd r4, r3, [sp, #8] + 800fbea: 4601 mov r1, r0 + 800fbec: d10a bne.n 800fc04 <GetTimeOnAir+0x3c> + 800fbee: 2205 movs r2, #5 + 800fbf0: 2300 movs r3, #0 + 800fbf2: e9cd 2300 strd r2, r3, [sp] + 800fbf6: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800fbfa: 437a muls r2, r7 + 800fbfc: 4618 mov r0, r3 + 800fbfe: 47b0 blx r6 + 800fc00: b005 add sp, #20 + 800fc02: bdf0 pop {r4, r5, r6, r7, pc} + 800fc04: 2208 movs r2, #8 + 800fc06: 2000 movs r0, #0 + 800fc08: e9cd 2000 strd r2, r0, [sp] + 800fc0c: 463a mov r2, r7 + 800fc0e: e7f5 b.n 800fbfc <GetTimeOnAir+0x34> + 800fc10: 08015377 .word 0x08015377 + 800fc14: 08015350 .word 0x08015350 + 800fc18: 080159b0 .word 0x080159b0 + +0800fc1c <RegionAS923GetPhyParam>: + 800fc1c: b51f push {r0, r1, r2, r3, r4, lr} + 800fc1e: 2300 movs r3, #0 + 800fc20: 9300 str r3, [sp, #0] + 800fc22: 7803 ldrb r3, [r0, #0] + 800fc24: 3b01 subs r3, #1 + 800fc26: 2b38 cmp r3, #56 ; 0x38 + 800fc28: f200 8085 bhi.w 800fd36 <RegionAS923GetPhyParam+0x11a> + 800fc2c: e8df f003 tbb [pc, r3] + 800fc30: 8383231d .word 0x8383231d + 800fc34: 83832083 .word 0x83832083 + 800fc38: 42408383 .word 0x42408383 + 800fc3c: 53834b44 .word 0x53834b44 + 800fc40: 5f5c5956 .word 0x5f5c5956 + 800fc44: 6d836562 .word 0x6d836562 + 800fc48: 79746f20 .word 0x79746f20 + 800fc4c: 807e7e7b .word 0x807e7e7b + 800fc50: 83832587 .word 0x83832587 + 800fc54: 83838383 .word 0x83838383 + 800fc58: 83838383 .word 0x83838383 + 800fc5c: 89838383 .word 0x89838383 + 800fc60: 8383908b .word 0x8383908b + 800fc64: 92839089 .word 0x92839089 + 800fc68: 96 .byte 0x96 + 800fc69: 00 .byte 0x00 + 800fc6a: 78c3 ldrb r3, [r0, #3] + 800fc6c: 2b00 cmp r3, #0 + 800fc6e: d062 beq.n 800fd36 <RegionAS923GetPhyParam+0x11a> + 800fc70: 2302 movs r3, #2 + 800fc72: 9300 str r3, [sp, #0] + 800fc74: e05f b.n 800fd36 <RegionAS923GetPhyParam+0x11a> + 800fc76: 7883 ldrb r3, [r0, #2] + 800fc78: e7f8 b.n 800fc6c <RegionAS923GetPhyParam+0x50> + 800fc7a: 7843 ldrb r3, [r0, #1] + 800fc7c: f88d 3004 strb.w r3, [sp, #4] + 800fc80: 2307 movs r3, #7 + 800fc82: f88d 3005 strb.w r3, [sp, #5] + 800fc86: 7883 ldrb r3, [r0, #2] + 800fc88: 3b00 subs r3, #0 + 800fc8a: bf18 it ne + 800fc8c: 2301 movne r3, #1 + 800fc8e: 005b lsls r3, r3, #1 + 800fc90: f88d 3006 strb.w r3, [sp, #6] + 800fc94: 2310 movs r3, #16 + 800fc96: f88d 3007 strb.w r3, [sp, #7] + 800fc9a: 4b33 ldr r3, [pc, #204] ; (800fd68 <RegionAS923GetPhyParam+0x14c>) + 800fc9c: 681b ldr r3, [r3, #0] + 800fc9e: a801 add r0, sp, #4 + 800fca0: f503 6290 add.w r2, r3, #1152 ; 0x480 + 800fca4: e9cd 2302 strd r2, r3, [sp, #8] + 800fca8: f000 ffbc bl 8010c24 <RegionCommonGetNextLowerTxDr> + 800fcac: 9000 str r0, [sp, #0] + 800fcae: e042 b.n 800fd36 <RegionAS923GetPhyParam+0x11a> + 800fcb0: 2340 movs r3, #64 ; 0x40 + 800fcb2: e7de b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fcb4: 2320 movs r3, #32 + 800fcb6: e7dc b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fcb8: 7882 ldrb r2, [r0, #2] + 800fcba: f990 3001 ldrsb.w r3, [r0, #1] + 800fcbe: b942 cbnz r2, 800fcd2 <RegionAS923GetPhyParam+0xb6> + 800fcc0: 4a2a ldr r2, [pc, #168] ; (800fd6c <RegionAS923GetPhyParam+0x150>) + 800fcc2: 5cd3 ldrb r3, [r2, r3] + 800fcc4: e7d5 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fcc6: 7882 ldrb r2, [r0, #2] + 800fcc8: f990 3001 ldrsb.w r3, [r0, #1] + 800fccc: b90a cbnz r2, 800fcd2 <RegionAS923GetPhyParam+0xb6> + 800fcce: 4a28 ldr r2, [pc, #160] ; (800fd70 <RegionAS923GetPhyParam+0x154>) + 800fcd0: e7f7 b.n 800fcc2 <RegionAS923GetPhyParam+0xa6> + 800fcd2: 4a28 ldr r2, [pc, #160] ; (800fd74 <RegionAS923GetPhyParam+0x158>) + 800fcd4: e7f5 b.n 800fcc2 <RegionAS923GetPhyParam+0xa6> + 800fcd6: f640 33b8 movw r3, #3000 ; 0xbb8 + 800fcda: e7ca b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fcdc: f44f 737a mov.w r3, #1000 ; 0x3e8 + 800fce0: e7c7 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fce2: f44f 63fa mov.w r3, #2000 ; 0x7d0 + 800fce6: e7c4 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fce8: f241 3388 movw r3, #5000 ; 0x1388 + 800fcec: e7c1 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fcee: f241 7370 movw r3, #6000 ; 0x1770 + 800fcf2: e7be b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fcf4: f44f 4380 mov.w r3, #16384 ; 0x4000 + 800fcf8: e7bb b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fcfa: 481f ldr r0, [pc, #124] ; (800fd78 <RegionAS923GetPhyParam+0x15c>) + 800fcfc: f44f 717a mov.w r1, #1000 ; 0x3e8 + 800fd00: f001 fe28 bl 8011954 <randr> + 800fd04: f500 60fa add.w r0, r0, #2000 ; 0x7d0 + 800fd08: e7d0 b.n 800fcac <RegionAS923GetPhyParam+0x90> + 800fd0a: 4b1c ldr r3, [pc, #112] ; (800fd7c <RegionAS923GetPhyParam+0x160>) + 800fd0c: e7b1 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fd0e: 4b16 ldr r3, [pc, #88] ; (800fd68 <RegionAS923GetPhyParam+0x14c>) + 800fd10: 681b ldr r3, [r3, #0] + 800fd12: f503 6390 add.w r3, r3, #1152 ; 0x480 + 800fd16: e7ac b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fd18: 4b13 ldr r3, [pc, #76] ; (800fd68 <RegionAS923GetPhyParam+0x14c>) + 800fd1a: 681b ldr r3, [r3, #0] + 800fd1c: f203 438c addw r3, r3, #1164 ; 0x48c + 800fd20: e7a7 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fd22: 2310 movs r3, #16 + 800fd24: e7a5 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fd26: 4b10 ldr r3, [pc, #64] ; (800fd68 <RegionAS923GetPhyParam+0x14c>) + 800fd28: 681b ldr r3, [r3, #0] + 800fd2a: e7a2 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fd2c: 2301 movs r3, #1 + 800fd2e: e7a0 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fd30: f04f 4383 mov.w r3, #1098907648 ; 0x41800000 + 800fd34: 9300 str r3, [sp, #0] + 800fd36: 9800 ldr r0, [sp, #0] + 800fd38: b005 add sp, #20 + 800fd3a: f85d fb04 ldr.w pc, [sp], #4 + 800fd3e: 4b10 ldr r3, [pc, #64] ; (800fd80 <RegionAS923GetPhyParam+0x164>) + 800fd40: e7f8 b.n 800fd34 <RegionAS923GetPhyParam+0x118> + 800fd42: 4b10 ldr r3, [pc, #64] ; (800fd84 <RegionAS923GetPhyParam+0x168>) + 800fd44: e795 b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fd46: f240 2311 movw r3, #529 ; 0x211 + 800fd4a: f8ad 3000 strh.w r3, [sp] + 800fd4e: e7f2 b.n 800fd36 <RegionAS923GetPhyParam+0x11a> + 800fd50: 2303 movs r3, #3 + 800fd52: e78e b.n 800fc72 <RegionAS923GetPhyParam+0x56> + 800fd54: f990 3001 ldrsb.w r3, [r0, #1] + 800fd58: 4a0b ldr r2, [pc, #44] ; (800fd88 <RegionAS923GetPhyParam+0x16c>) + 800fd5a: e7b2 b.n 800fcc2 <RegionAS923GetPhyParam+0xa6> + 800fd5c: 490b ldr r1, [pc, #44] ; (800fd8c <RegionAS923GetPhyParam+0x170>) + 800fd5e: f990 0001 ldrsb.w r0, [r0, #1] + 800fd62: f000 ff7f bl 8010c64 <RegionCommonGetBandwidth> + 800fd66: e7a1 b.n 800fcac <RegionAS923GetPhyParam+0x90> + 800fd68: 20002624 .word 0x20002624 + 800fd6c: 08015387 .word 0x08015387 + 800fd70: 08015397 .word 0x08015397 + 800fd74: 0801538f .word 0x0801538f + 800fd78: fffffc18 .word 0xfffffc18 + 800fd7c: 3706ea00 .word 0x3706ea00 + 800fd80: 4009999a .word 0x4009999a + 800fd84: 3709f740 .word 0x3709f740 + 800fd88: 08015377 .word 0x08015377 + 800fd8c: 08015350 .word 0x08015350 + +0800fd90 <RegionAS923SetBandTxDone>: + 800fd90: b537 push {r0, r1, r2, r4, r5, lr} + 800fd92: 4b0b ldr r3, [pc, #44] ; (800fdc0 <RegionAS923SetBandTxDone+0x30>) + 800fd94: 7802 ldrb r2, [r0, #0] + 800fd96: 681b ldr r3, [r3, #0] + 800fd98: 210c movs r1, #12 + 800fd9a: fb01 3302 mla r3, r1, r2, r3 + 800fd9e: 7a5b ldrb r3, [r3, #9] + 800fda0: eb03 0443 add.w r4, r3, r3, lsl #1 + 800fda4: 4b07 ldr r3, [pc, #28] ; (800fdc4 <RegionAS923SetBandTxDone+0x34>) + 800fda6: 681d ldr r5, [r3, #0] + 800fda8: 6903 ldr r3, [r0, #16] + 800fdaa: 9300 str r3, [sp, #0] + 800fdac: 68c3 ldr r3, [r0, #12] + 800fdae: 7842 ldrb r2, [r0, #1] + 800fdb0: 6881 ldr r1, [r0, #8] + 800fdb2: eb05 00c4 add.w r0, r5, r4, lsl #3 + 800fdb6: f000 fcd5 bl 8010764 <RegionCommonSetBandTxDone> + 800fdba: b003 add sp, #12 + 800fdbc: bd30 pop {r4, r5, pc} + 800fdbe: bf00 nop + 800fdc0: 20002624 .word 0x20002624 + 800fdc4: 20002620 .word 0x20002620 + +0800fdc8 <RegionAS923InitDefaults>: + 800fdc8: b530 push {r4, r5, lr} + 800fdca: b087 sub sp, #28 + 800fdcc: 7a02 ldrb r2, [r0, #8] + 800fdce: 2364 movs r3, #100 ; 0x64 + 800fdd0: f8ad 3000 strh.w r3, [sp] + 800fdd4: 2a01 cmp r2, #1 + 800fdd6: f04f 0300 mov.w r3, #0 + 800fdda: e9cd 3301 strd r3, r3, [sp, #4] + 800fdde: e9cd 3303 strd r3, r3, [sp, #12] + 800fde2: 4601 mov r1, r0 + 800fde4: f88d 3002 strb.w r3, [sp, #2] + 800fde8: f88d 3014 strb.w r3, [sp, #20] + 800fdec: d027 beq.n 800fe3e <RegionAS923InitDefaults+0x76> + 800fdee: 2a02 cmp r2, #2 + 800fdf0: d02e beq.n 800fe50 <RegionAS923InitDefaults+0x88> + 800fdf2: bb12 cbnz r2, 800fe3a <RegionAS923InitDefaults+0x72> + 800fdf4: 6800 ldr r0, [r0, #0] + 800fdf6: b300 cbz r0, 800fe3a <RegionAS923InitDefaults+0x72> + 800fdf8: 684b ldr r3, [r1, #4] + 800fdfa: b1f3 cbz r3, 800fe3a <RegionAS923InitDefaults+0x72> + 800fdfc: 4a19 ldr r2, [pc, #100] ; (800fe64 <RegionAS923InitDefaults+0x9c>) + 800fdfe: 4c1a ldr r4, [pc, #104] ; (800fe68 <RegionAS923InitDefaults+0xa0>) + 800fe00: 6010 str r0, [r2, #0] + 800fe02: 4669 mov r1, sp + 800fe04: 2218 movs r2, #24 + 800fe06: 6023 str r3, [r4, #0] + 800fe08: f001 fdc0 bl 801198c <memcpy1> + 800fe0c: 4b17 ldr r3, [pc, #92] ; (800fe6c <RegionAS923InitDefaults+0xa4>) + 800fe0e: 6824 ldr r4, [r4, #0] + 800fe10: e893 0007 ldmia.w r3, {r0, r1, r2} + 800fe14: 330c adds r3, #12 + 800fe16: e884 0007 stmia.w r4, {r0, r1, r2} + 800fe1a: e893 0007 ldmia.w r3, {r0, r1, r2} + 800fe1e: f104 050c add.w r5, r4, #12 + 800fe22: 2303 movs r3, #3 + 800fe24: e885 0007 stmia.w r5, {r0, r1, r2} + 800fe28: f8a4 348c strh.w r3, [r4, #1164] ; 0x48c + 800fe2c: 2201 movs r2, #1 + 800fe2e: f204 418c addw r1, r4, #1164 ; 0x48c + 800fe32: f504 6090 add.w r0, r4, #1152 ; 0x480 + 800fe36: f000 fc86 bl 8010746 <RegionCommonChanMaskCopy> + 800fe3a: b007 add sp, #28 + 800fe3c: bd30 pop {r4, r5, pc} + 800fe3e: 490a ldr r1, [pc, #40] ; (800fe68 <RegionAS923InitDefaults+0xa0>) + 800fe40: 6808 ldr r0, [r1, #0] + 800fe42: 6043 str r3, [r0, #4] + 800fe44: 6103 str r3, [r0, #16] + 800fe46: f200 418c addw r1, r0, #1164 ; 0x48c + 800fe4a: f500 6090 add.w r0, r0, #1152 ; 0x480 + 800fe4e: e7f2 b.n 800fe36 <RegionAS923InitDefaults+0x6e> + 800fe50: 4b05 ldr r3, [pc, #20] ; (800fe68 <RegionAS923InitDefaults+0xa0>) + 800fe52: 681b ldr r3, [r3, #0] + 800fe54: f8b3 2480 ldrh.w r2, [r3, #1152] ; 0x480 + 800fe58: f8b3 148c ldrh.w r1, [r3, #1164] ; 0x48c + 800fe5c: 430a orrs r2, r1 + 800fe5e: f8a3 2480 strh.w r2, [r3, #1152] ; 0x480 + 800fe62: e7ea b.n 800fe3a <RegionAS923InitDefaults+0x72> + 800fe64: 20002620 .word 0x20002620 + 800fe68: 20002624 .word 0x20002624 + 800fe6c: 080145b4 .word 0x080145b4 + +0800fe70 <RegionAS923Verify>: + 800fe70: b508 push {r3, lr} + 800fe72: 4603 mov r3, r0 + 800fe74: 290a cmp r1, #10 + 800fe76: d824 bhi.n 800fec2 <RegionAS923Verify+0x52> + 800fe78: e8df f001 tbb [pc, r1] + 800fe7c: 23232306 .word 0x23232306 + 800fe80: 1b160b23 .word 0x1b160b23 + 800fe84: 2123 .short 0x2123 + 800fe86: 21 .byte 0x21 + 800fe87: 00 .byte 0x00 + 800fe88: e8bd 4008 ldmia.w sp!, {r3, lr} + 800fe8c: 6800 ldr r0, [r0, #0] + 800fe8e: f7ff be87 b.w 800fba0 <VerifyRfFreq> + 800fe92: f990 0000 ldrsb.w r0, [r0] + 800fe96: 7899 ldrb r1, [r3, #2] + 800fe98: 2207 movs r2, #7 + 800fe9a: b971 cbnz r1, 800feba <RegionAS923Verify+0x4a> + 800fe9c: f000 fc13 bl 80106c6 <RegionCommonValueInRange> + 800fea0: 3800 subs r0, #0 + 800fea2: bf18 it ne + 800fea4: 2001 movne r0, #1 + 800fea6: bd08 pop {r3, pc} + 800fea8: 2205 movs r2, #5 + 800feaa: f993 0000 ldrsb.w r0, [r3] + 800feae: 2100 movs r1, #0 + 800feb0: e7f4 b.n 800fe9c <RegionAS923Verify+0x2c> + 800feb2: f990 0000 ldrsb.w r0, [r0] + 800feb6: 7859 ldrb r1, [r3, #1] + 800feb8: e7ee b.n 800fe98 <RegionAS923Verify+0x28> + 800feba: 2102 movs r1, #2 + 800febc: e7ee b.n 800fe9c <RegionAS923Verify+0x2c> + 800febe: 2207 movs r2, #7 + 800fec0: e7f3 b.n 800feaa <RegionAS923Verify+0x3a> + 800fec2: 2000 movs r0, #0 + 800fec4: e7ef b.n 800fea6 <RegionAS923Verify+0x36> + ... + +0800fec8 <RegionAS923ChanMaskSet>: + 800fec8: b510 push {r4, lr} + 800feca: 7904 ldrb r4, [r0, #4] + 800fecc: b11c cbz r4, 800fed6 <RegionAS923ChanMaskSet+0xe> + 800fece: 2c01 cmp r4, #1 + 800fed0: d00b beq.n 800feea <RegionAS923ChanMaskSet+0x22> + 800fed2: 2000 movs r0, #0 + 800fed4: bd10 pop {r4, pc} + 800fed6: 4b0a ldr r3, [pc, #40] ; (800ff00 <RegionAS923ChanMaskSet+0x38>) + 800fed8: 6801 ldr r1, [r0, #0] + 800feda: 681b ldr r3, [r3, #0] + 800fedc: 2201 movs r2, #1 + 800fede: f503 6090 add.w r0, r3, #1152 ; 0x480 + 800fee2: f000 fc30 bl 8010746 <RegionCommonChanMaskCopy> + 800fee6: 2001 movs r0, #1 + 800fee8: e7f4 b.n 800fed4 <RegionAS923ChanMaskSet+0xc> + 800feea: 4b05 ldr r3, [pc, #20] ; (800ff00 <RegionAS923ChanMaskSet+0x38>) + 800feec: 6801 ldr r1, [r0, #0] + 800feee: 681b ldr r3, [r3, #0] + 800fef0: 4622 mov r2, r4 + 800fef2: f203 408c addw r0, r3, #1164 ; 0x48c + 800fef6: f000 fc26 bl 8010746 <RegionCommonChanMaskCopy> + 800fefa: 4620 mov r0, r4 + 800fefc: e7ea b.n 800fed4 <RegionAS923ChanMaskSet+0xc> + 800fefe: bf00 nop + 800ff00: 20002624 .word 0x20002624 + +0800ff04 <RegionAS923ComputeRxWindowParameters>: + 800ff04: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 800ff06: 2807 cmp r0, #7 + 800ff08: 4d14 ldr r5, [pc, #80] ; (800ff5c <RegionAS923ComputeRxWindowParameters+0x58>) + 800ff0a: 461c mov r4, r3 + 800ff0c: bfa8 it ge + 800ff0e: 2007 movge r0, #7 + 800ff10: 7058 strb r0, [r3, #1] + 800ff12: 460e mov r6, r1 + 800ff14: 4629 mov r1, r5 + 800ff16: 4617 mov r7, r2 + 800ff18: f000 fea4 bl 8010c64 <RegionCommonGetBandwidth> + 800ff1c: f994 3001 ldrsb.w r3, [r4, #1] + 800ff20: 70a0 strb r0, [r4, #2] + 800ff22: 2b07 cmp r3, #7 + 800ff24: d113 bne.n 800ff4e <RegionAS923ComputeRxWindowParameters+0x4a> + 800ff26: 2032 movs r0, #50 ; 0x32 + 800ff28: f000 fd9c bl 8010a64 <RegionCommonComputeSymbolTimeFsk> + 800ff2c: 4b0c ldr r3, [pc, #48] ; (800ff60 <RegionAS923ComputeRxWindowParameters+0x5c>) + 800ff2e: 6ddb ldr r3, [r3, #92] ; 0x5c + 800ff30: 4605 mov r5, r0 + 800ff32: 4798 blx r3 + 800ff34: f104 020c add.w r2, r4, #12 + 800ff38: 3408 adds r4, #8 + 800ff3a: 4603 mov r3, r0 + 800ff3c: 9201 str r2, [sp, #4] + 800ff3e: 9400 str r4, [sp, #0] + 800ff40: 463a mov r2, r7 + 800ff42: 4631 mov r1, r6 + 800ff44: 4628 mov r0, r5 + 800ff46: f000 fd92 bl 8010a6e <RegionCommonComputeRxWindowParameters> + 800ff4a: b003 add sp, #12 + 800ff4c: bdf0 pop {r4, r5, r6, r7, pc} + 800ff4e: 4a05 ldr r2, [pc, #20] ; (800ff64 <RegionAS923ComputeRxWindowParameters+0x60>) + 800ff50: f855 1023 ldr.w r1, [r5, r3, lsl #2] + 800ff54: 5cd0 ldrb r0, [r2, r3] + 800ff56: f000 fd7d bl 8010a54 <RegionCommonComputeSymbolTimeLoRa> + 800ff5a: e7e7 b.n 800ff2c <RegionAS923ComputeRxWindowParameters+0x28> + 800ff5c: 08015350 .word 0x08015350 + 800ff60: 080159b0 .word 0x080159b0 + 800ff64: 08015377 .word 0x08015377 + +0800ff68 <RegionAS923RxConfig>: + 800ff68: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800ff6c: 4f34 ldr r7, [pc, #208] ; (8010040 <RegionAS923RxConfig+0xd8>) + 800ff6e: f990 6001 ldrsb.w r6, [r0, #1] + 800ff72: 687b ldr r3, [r7, #4] + 800ff74: f8d0 9004 ldr.w r9, [r0, #4] + 800ff78: b08b sub sp, #44 ; 0x2c + 800ff7a: 4604 mov r4, r0 + 800ff7c: 4688 mov r8, r1 + 800ff7e: 4798 blx r3 + 800ff80: 4605 mov r5, r0 + 800ff82: 2800 cmp r0, #0 + 800ff84: d159 bne.n 801003a <RegionAS923RxConfig+0xd2> + 800ff86: 7ce3 ldrb r3, [r4, #19] + 800ff88: b973 cbnz r3, 800ffa8 <RegionAS923RxConfig+0x40> + 800ff8a: 4a2e ldr r2, [pc, #184] ; (8010044 <RegionAS923RxConfig+0xdc>) + 800ff8c: 7823 ldrb r3, [r4, #0] + 800ff8e: 6812 ldr r2, [r2, #0] + 800ff90: eb03 0343 add.w r3, r3, r3, lsl #1 + 800ff94: 0099 lsls r1, r3, #2 + 800ff96: eb02 0383 add.w r3, r2, r3, lsl #2 + 800ff9a: f8d3 9004 ldr.w r9, [r3, #4] + 800ff9e: f1b9 0f00 cmp.w r9, #0 + 800ffa2: d101 bne.n 800ffa8 <RegionAS923RxConfig+0x40> + 800ffa4: f852 9001 ldr.w r9, [r2, r1] + 800ffa8: 4b27 ldr r3, [pc, #156] ; (8010048 <RegionAS923RxConfig+0xe0>) + 800ffaa: 4648 mov r0, r9 + 800ffac: f913 b006 ldrsb.w fp, [r3, r6] + 800ffb0: 68fb ldr r3, [r7, #12] + 800ffb2: 4798 blx r3 + 800ffb4: 7ca3 ldrb r3, [r4, #18] + 800ffb6: f8d7 a018 ldr.w sl, [r7, #24] + 800ffba: 8922 ldrh r2, [r4, #8] + 800ffbc: 9309 str r3, [sp, #36] ; 0x24 + 800ffbe: 2e07 cmp r6, #7 + 800ffc0: d128 bne.n 8010014 <RegionAS923RxConfig+0xac> + 800ffc2: 2300 movs r3, #0 + 800ffc4: 2101 movs r1, #1 + 800ffc6: e9cd 2302 strd r2, r3, [sp, #8] + 800ffca: 4a20 ldr r2, [pc, #128] ; (801004c <RegionAS923RxConfig+0xe4>) + 800ffcc: 9306 str r3, [sp, #24] + 800ffce: e9cd 3104 strd r3, r1, [sp, #16] + 800ffd2: e9cd 3307 strd r3, r3, [sp, #28] + 800ffd6: 2105 movs r1, #5 + 800ffd8: e9cd 2100 strd r2, r1, [sp] + 800ffdc: f44f 727a mov.w r2, #1000 ; 0x3e8 + 800ffe0: fb02 f20b mul.w r2, r2, fp + 800ffe4: f24c 3150 movw r1, #50000 ; 0xc350 + 800ffe8: 4618 mov r0, r3 + 800ffea: 47d0 blx sl + 800ffec: 7c63 ldrb r3, [r4, #17] + 800ffee: b313 cbz r3, 8010036 <RegionAS923RxConfig+0xce> + 800fff0: 4b17 ldr r3, [pc, #92] ; (8010050 <RegionAS923RxConfig+0xe8>) + 800fff2: 5d99 ldrb r1, [r3, r6] + 800fff4: 6d7b ldr r3, [r7, #84] ; 0x54 + 800fff6: 310d adds r1, #13 + 800fff8: b2c9 uxtb r1, r1 + 800fffa: 4628 mov r0, r5 + 800fffc: 4798 blx r3 + 800fffe: 7ce0 ldrb r0, [r4, #19] + 8010000: 4632 mov r2, r6 + 8010002: 4649 mov r1, r9 + 8010004: f000 fe40 bl 8010c88 <RegionCommonRxConfigPrint> + 8010008: f888 6000 strb.w r6, [r8] + 801000c: 2001 movs r0, #1 + 801000e: b00b add sp, #44 ; 0x2c + 8010010: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8010014: 2100 movs r1, #0 + 8010016: 2501 movs r5, #1 + 8010018: 2308 movs r3, #8 + 801001a: e9cd 1300 strd r1, r3, [sp] + 801001e: e9cd 1507 strd r1, r5, [sp, #28] + 8010022: e9cd 1105 strd r1, r1, [sp, #20] + 8010026: e9cd 1103 strd r1, r1, [sp, #12] + 801002a: 9202 str r2, [sp, #8] + 801002c: 78a1 ldrb r1, [r4, #2] + 801002e: 462b mov r3, r5 + 8010030: 465a mov r2, fp + 8010032: 4628 mov r0, r5 + 8010034: e7d9 b.n 800ffea <RegionAS923RxConfig+0x82> + 8010036: 4b07 ldr r3, [pc, #28] ; (8010054 <RegionAS923RxConfig+0xec>) + 8010038: e7db b.n 800fff2 <RegionAS923RxConfig+0x8a> + 801003a: 2000 movs r0, #0 + 801003c: e7e7 b.n 801000e <RegionAS923RxConfig+0xa6> + 801003e: bf00 nop + 8010040: 080159b0 .word 0x080159b0 + 8010044: 20002624 .word 0x20002624 + 8010048: 08015377 .word 0x08015377 + 801004c: 00014585 .word 0x00014585 + 8010050: 08015397 .word 0x08015397 + 8010054: 08015387 .word 0x08015387 + +08010058 <RegionAS923TxConfig>: + 8010058: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 801005c: b08d sub sp, #52 ; 0x34 + 801005e: f990 3001 ldrsb.w r3, [r0, #1] + 8010062: f8df a0f8 ldr.w sl, [pc, #248] ; 801015c <RegionAS923TxConfig+0x104> + 8010066: f8df 90f8 ldr.w r9, [pc, #248] ; 8010160 <RegionAS923TxConfig+0x108> + 801006a: e9cd 120a strd r1, r2, [sp, #40] ; 0x28 + 801006e: 4a3d ldr r2, [pc, #244] ; (8010164 <RegionAS923TxConfig+0x10c>) + 8010070: 7801 ldrb r1, [r0, #0] + 8010072: f912 b003 ldrsb.w fp, [r2, r3] + 8010076: f8da 2000 ldr.w r2, [sl] + 801007a: 4b3b ldr r3, [pc, #236] ; (8010168 <RegionAS923TxConfig+0x110>) + 801007c: 250c movs r5, #12 + 801007e: fb05 2201 mla r2, r5, r1, r2 + 8010082: 681b ldr r3, [r3, #0] + 8010084: 7a52 ldrb r2, [r2, #9] + 8010086: 2118 movs r1, #24 + 8010088: fb01 3302 mla r3, r1, r2, r3 + 801008c: 4604 mov r4, r0 + 801008e: f993 1002 ldrsb.w r1, [r3, #2] + 8010092: f990 0002 ldrsb.w r0, [r0, #2] + 8010096: f000 fde0 bl 8010c5a <RegionCommonLimitTxPower> + 801009a: 4934 ldr r1, [pc, #208] ; (801016c <RegionAS923TxConfig+0x114>) + 801009c: 4606 mov r6, r0 + 801009e: f994 0001 ldrsb.w r0, [r4, #1] + 80100a2: f000 fddf bl 8010c64 <RegionCommonGetBandwidth> + 80100a6: 68a2 ldr r2, [r4, #8] + 80100a8: 6861 ldr r1, [r4, #4] + 80100aa: 4680 mov r8, r0 + 80100ac: 4630 mov r0, r6 + 80100ae: f000 fd06 bl 8010abe <RegionCommonComputeTxPower> + 80100b2: 7821 ldrb r1, [r4, #0] + 80100b4: f8da 2000 ldr.w r2, [sl] + 80100b8: f8d9 300c ldr.w r3, [r9, #12] + 80100bc: 4369 muls r1, r5 + 80100be: 4607 mov r7, r0 + 80100c0: 5850 ldr r0, [r2, r1] + 80100c2: 4798 blx r3 + 80100c4: f8d9 301c ldr.w r3, [r9, #28] + 80100c8: 469c mov ip, r3 + 80100ca: f994 3001 ldrsb.w r3, [r4, #1] + 80100ce: 2500 movs r5, #0 + 80100d0: 2b07 cmp r3, #7 + 80100d2: f44f 637a mov.w r3, #4000 ; 0xfa0 + 80100d6: e9cd 5307 strd r5, r3, [sp, #28] + 80100da: e9cd 5505 strd r5, r5, [sp, #20] + 80100de: d12d bne.n 801013c <RegionAS923TxConfig+0xe4> + 80100e0: 2301 movs r3, #1 + 80100e2: e9cd 5303 strd r5, r3, [sp, #12] + 80100e6: 2305 movs r3, #5 + 80100e8: e9cd 5301 strd r5, r3, [sp, #4] + 80100ec: f44f 737a mov.w r3, #1000 ; 0x3e8 + 80100f0: fb03 f30b mul.w r3, r3, fp + 80100f4: 9300 str r3, [sp, #0] + 80100f6: 4639 mov r1, r7 + 80100f8: 4643 mov r3, r8 + 80100fa: f246 12a8 movw r2, #25000 ; 0x61a8 + 80100fe: 4628 mov r0, r5 + 8010100: 4667 mov r7, ip + 8010102: 47b8 blx r7 + 8010104: 7823 ldrb r3, [r4, #0] + 8010106: f8da 2000 ldr.w r2, [sl] + 801010a: 210c movs r1, #12 + 801010c: 434b muls r3, r1 + 801010e: f994 1001 ldrsb.w r1, [r4, #1] + 8010112: 58d0 ldr r0, [r2, r3] + 8010114: f000 fdda bl 8010ccc <RegionCommonTxConfigPrint> + 8010118: 89a1 ldrh r1, [r4, #12] + 801011a: f994 0001 ldrsb.w r0, [r4, #1] + 801011e: f7ff fd53 bl 800fbc8 <GetTimeOnAir> + 8010122: 9b0b ldr r3, [sp, #44] ; 0x2c + 8010124: 7b21 ldrb r1, [r4, #12] + 8010126: 6018 str r0, [r3, #0] + 8010128: f8d9 3054 ldr.w r3, [r9, #84] ; 0x54 + 801012c: 4628 mov r0, r5 + 801012e: 4798 blx r3 + 8010130: 9b0a ldr r3, [sp, #40] ; 0x28 + 8010132: 2001 movs r0, #1 + 8010134: 701e strb r6, [r3, #0] + 8010136: b00d add sp, #52 ; 0x34 + 8010138: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 801013c: 2001 movs r0, #1 + 801013e: 2308 movs r3, #8 + 8010140: e9cd 5003 strd r5, r0, [sp, #12] + 8010144: e9cd 0301 strd r0, r3, [sp, #4] + 8010148: 462a mov r2, r5 + 801014a: f8cd b000 str.w fp, [sp] + 801014e: 4665 mov r5, ip + 8010150: 4643 mov r3, r8 + 8010152: 4639 mov r1, r7 + 8010154: 47a8 blx r5 + 8010156: 2001 movs r0, #1 + 8010158: 4605 mov r5, r0 + 801015a: e7d3 b.n 8010104 <RegionAS923TxConfig+0xac> + 801015c: 20002624 .word 0x20002624 + 8010160: 080159b0 .word 0x080159b0 + 8010164: 08015377 .word 0x08015377 + 8010168: 20002620 .word 0x20002620 + 801016c: 08015350 .word 0x08015350 + +08010170 <RegionAS923LinkAdrReq>: + 8010170: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8010174: b08f sub sp, #60 ; 0x3c + 8010176: 2400 movs r4, #0 + 8010178: 4605 mov r5, r0 + 801017a: 468a mov sl, r1 + 801017c: 4691 mov r9, r2 + 801017e: 4698 mov r8, r3 + 8010180: 9404 str r4, [sp, #16] + 8010182: f8ad 4014 strh.w r4, [sp, #20] + 8010186: f8ad 4002 strh.w r4, [sp, #2] + 801018a: 2607 movs r6, #7 + 801018c: f04f 0b01 mov.w fp, #1 + 8010190: 7a2b ldrb r3, [r5, #8] + 8010192: 42a3 cmp r3, r4 + 8010194: d906 bls.n 80101a4 <RegionAS923LinkAdrReq+0x34> + 8010196: 6868 ldr r0, [r5, #4] + 8010198: a904 add r1, sp, #16 + 801019a: 4420 add r0, r4 + 801019c: f000 fbf4 bl 8010988 <RegionCommonParseLinkAdrReq> + 80101a0: 2800 cmp r0, #0 + 80101a2: d15d bne.n 8010260 <RegionAS923LinkAdrReq+0xf0> + 80101a4: 2302 movs r3, #2 + 80101a6: f88d 3008 strb.w r3, [sp, #8] + 80101aa: a802 add r0, sp, #8 + 80101ac: 7a6b ldrb r3, [r5, #9] + 80101ae: f88d 300a strb.w r3, [sp, #10] + 80101b2: f7ff fd33 bl 800fc1c <RegionAS923GetPhyParam> + 80101b6: 7aab ldrb r3, [r5, #10] + 80101b8: f88d 301d strb.w r3, [sp, #29] + 80101bc: f89d 3011 ldrb.w r3, [sp, #17] + 80101c0: f88d 301e strb.w r3, [sp, #30] + 80101c4: f89d 3012 ldrb.w r3, [sp, #18] + 80101c8: f88d 301f strb.w r3, [sp, #31] + 80101cc: f89d 3010 ldrb.w r3, [sp, #16] + 80101d0: f88d 3020 strb.w r3, [sp, #32] + 80101d4: 7aeb ldrb r3, [r5, #11] + 80101d6: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 80101da: 7b2b ldrb r3, [r5, #12] + 80101dc: f88d 3022 strb.w r3, [sp, #34] ; 0x22 + 80101e0: 7b6b ldrb r3, [r5, #13] + 80101e2: f88d 3023 strb.w r3, [sp, #35] ; 0x23 + 80101e6: 2310 movs r3, #16 + 80101e8: f88d 601c strb.w r6, [sp, #28] + 80101ec: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + 80101f0: 4e3a ldr r6, [pc, #232] ; (80102dc <RegionAS923LinkAdrReq+0x16c>) + 80101f2: f88d 002c strb.w r0, [sp, #44] ; 0x2c + 80101f6: f10d 0302 add.w r3, sp, #2 + 80101fa: 930a str r3, [sp, #40] ; 0x28 + 80101fc: 2307 movs r3, #7 + 80101fe: 6832 ldr r2, [r6, #0] + 8010200: f88d 302d strb.w r3, [sp, #45] ; 0x2d + 8010204: f8ad 3034 strh.w r3, [sp, #52] ; 0x34 + 8010208: 682b ldr r3, [r5, #0] + 801020a: 920c str r2, [sp, #48] ; 0x30 + 801020c: 9306 str r3, [sp, #24] + 801020e: f10d 0212 add.w r2, sp, #18 + 8010212: ab04 add r3, sp, #16 + 8010214: f10d 0111 add.w r1, sp, #17 + 8010218: a806 add r0, sp, #24 + 801021a: f000 fbcf bl 80109bc <RegionCommonLinkAdrReqVerifyParams> + 801021e: 2807 cmp r0, #7 + 8010220: 4605 mov r5, r0 + 8010222: d10b bne.n 801023c <RegionAS923LinkAdrReq+0xcc> + 8010224: 6830 ldr r0, [r6, #0] + 8010226: 220c movs r2, #12 + 8010228: 2100 movs r1, #0 + 801022a: f500 6090 add.w r0, r0, #1152 ; 0x480 + 801022e: f001 fbc1 bl 80119b4 <memset1> + 8010232: 6833 ldr r3, [r6, #0] + 8010234: f8bd 2002 ldrh.w r2, [sp, #2] + 8010238: f8a3 2480 strh.w r2, [r3, #1152] ; 0x480 + 801023c: f89d 3011 ldrb.w r3, [sp, #17] + 8010240: f88a 3000 strb.w r3, [sl] + 8010244: f89d 3012 ldrb.w r3, [sp, #18] + 8010248: f889 3000 strb.w r3, [r9] + 801024c: f89d 3010 ldrb.w r3, [sp, #16] + 8010250: f888 3000 strb.w r3, [r8] + 8010254: 9b18 ldr r3, [sp, #96] ; 0x60 + 8010256: 4628 mov r0, r5 + 8010258: 701c strb r4, [r3, #0] + 801025a: b00f add sp, #60 ; 0x3c + 801025c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8010260: f89d 3013 ldrb.w r3, [sp, #19] + 8010264: f8bd 7014 ldrh.w r7, [sp, #20] + 8010268: f8ad 7002 strh.w r7, [sp, #2] + 801026c: 4420 add r0, r4 + 801026e: b2c4 uxtb r4, r0 + 8010270: b9f3 cbnz r3, 80102b0 <RegionAS923LinkAdrReq+0x140> + 8010272: b317 cbz r7, 80102ba <RegionAS923LinkAdrReq+0x14a> + 8010274: 4a19 ldr r2, [pc, #100] ; (80102dc <RegionAS923LinkAdrReq+0x16c>) + 8010276: 2000 movs r0, #0 + 8010278: 6811 ldr r1, [r2, #0] + 801027a: 2607 movs r6, #7 + 801027c: 4602 mov r2, r0 + 801027e: f04f 0c0c mov.w ip, #12 + 8010282: 2b06 cmp r3, #6 + 8010284: d11b bne.n 80102be <RegionAS923LinkAdrReq+0x14e> + 8010286: fb0c fe00 mul.w lr, ip, r0 + 801028a: f851 e00e ldr.w lr, [r1, lr] + 801028e: f1be 0f00 cmp.w lr, #0 + 8010292: d004 beq.n 801029e <RegionAS923LinkAdrReq+0x12e> + 8010294: fa0b f200 lsl.w r2, fp, r0 + 8010298: 433a orrs r2, r7 + 801029a: b297 uxth r7, r2 + 801029c: 2201 movs r2, #1 + 801029e: 3001 adds r0, #1 + 80102a0: 2810 cmp r0, #16 + 80102a2: d1ee bne.n 8010282 <RegionAS923LinkAdrReq+0x112> + 80102a4: 2a00 cmp r2, #0 + 80102a6: f43f af73 beq.w 8010190 <RegionAS923LinkAdrReq+0x20> + 80102aa: f8ad 7002 strh.w r7, [sp, #2] + 80102ae: e76f b.n 8010190 <RegionAS923LinkAdrReq+0x20> + 80102b0: 1e5a subs r2, r3, #1 + 80102b2: 2a04 cmp r2, #4 + 80102b4: d901 bls.n 80102ba <RegionAS923LinkAdrReq+0x14a> + 80102b6: 2b06 cmp r3, #6 + 80102b8: d0dc beq.n 8010274 <RegionAS923LinkAdrReq+0x104> + 80102ba: 2606 movs r6, #6 + 80102bc: e768 b.n 8010190 <RegionAS923LinkAdrReq+0x20> + 80102be: fa47 fe00 asr.w lr, r7, r0 + 80102c2: f01e 0f01 tst.w lr, #1 + 80102c6: d0ea beq.n 801029e <RegionAS923LinkAdrReq+0x12e> + 80102c8: fb0c fe00 mul.w lr, ip, r0 + 80102cc: f851 e00e ldr.w lr, [r1, lr] + 80102d0: f1be 0f00 cmp.w lr, #0 + 80102d4: bf08 it eq + 80102d6: 2606 moveq r6, #6 + 80102d8: e7e1 b.n 801029e <RegionAS923LinkAdrReq+0x12e> + 80102da: bf00 nop + 80102dc: 20002624 .word 0x20002624 + +080102e0 <RegionAS923RxParamSetupReq>: + 80102e0: b538 push {r3, r4, r5, lr} + 80102e2: 4605 mov r5, r0 + 80102e4: 6840 ldr r0, [r0, #4] + 80102e6: f7ff fc5b bl 800fba0 <VerifyRfFreq> + 80102ea: 2207 movs r2, #7 + 80102ec: 1d84 adds r4, r0, #6 + 80102ee: 2100 movs r1, #0 + 80102f0: f995 0000 ldrsb.w r0, [r5] + 80102f4: b2e4 uxtb r4, r4 + 80102f6: f000 f9e6 bl 80106c6 <RegionCommonValueInRange> + 80102fa: b908 cbnz r0, 8010300 <RegionAS923RxParamSetupReq+0x20> + 80102fc: f004 04fd and.w r4, r4, #253 ; 0xfd + 8010300: f995 0001 ldrsb.w r0, [r5, #1] + 8010304: 2207 movs r2, #7 + 8010306: 2100 movs r1, #0 + 8010308: f000 f9dd bl 80106c6 <RegionCommonValueInRange> + 801030c: b908 cbnz r0, 8010312 <RegionAS923RxParamSetupReq+0x32> + 801030e: f004 04fb and.w r4, r4, #251 ; 0xfb + 8010312: 4620 mov r0, r4 + 8010314: bd38 pop {r3, r4, r5, pc} + +08010316 <RegionAS923TxParamSetupReq>: + 8010316: 2000 movs r0, #0 + 8010318: 4770 bx lr + ... + +0801031c <RegionAS923DlChannelReq>: + 801031c: b510 push {r4, lr} + 801031e: 7803 ldrb r3, [r0, #0] + 8010320: 2b0f cmp r3, #15 + 8010322: 4604 mov r4, r0 + 8010324: d818 bhi.n 8010358 <RegionAS923DlChannelReq+0x3c> + 8010326: 6840 ldr r0, [r0, #4] + 8010328: f7ff fc3a bl 800fba0 <VerifyRfFreq> + 801032c: 7822 ldrb r2, [r4, #0] + 801032e: 490b ldr r1, [pc, #44] ; (801035c <RegionAS923DlChannelReq+0x40>) + 8010330: eb02 0242 add.w r2, r2, r2, lsl #1 + 8010334: 6809 ldr r1, [r1, #0] + 8010336: 1c83 adds r3, r0, #2 + 8010338: eb01 0082 add.w r0, r1, r2, lsl #2 + 801033c: f851 2022 ldr.w r2, [r1, r2, lsl #2] + 8010340: b2db uxtb r3, r3 + 8010342: b91a cbnz r2, 801034c <RegionAS923DlChannelReq+0x30> + 8010344: f003 03fd and.w r3, r3, #253 ; 0xfd + 8010348: b258 sxtb r0, r3 + 801034a: bd10 pop {r4, pc} + 801034c: 2b03 cmp r3, #3 + 801034e: bf06 itte eq + 8010350: 6862 ldreq r2, [r4, #4] + 8010352: 6042 streq r2, [r0, #4] + 8010354: 2302 movne r3, #2 + 8010356: e7f7 b.n 8010348 <RegionAS923DlChannelReq+0x2c> + 8010358: 2000 movs r0, #0 + 801035a: e7f6 b.n 801034a <RegionAS923DlChannelReq+0x2e> + 801035c: 20002624 .word 0x20002624 + +08010360 <RegionAS923AlternateDr>: + 8010360: 2002 movs r0, #2 + 8010362: 4770 bx lr + +08010364 <RegionAS923NextChannel>: + 8010364: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8010368: 4d3a ldr r5, [pc, #232] ; (8010454 <RegionAS923NextChannel+0xf0>) + 801036a: 4604 mov r4, r0 + 801036c: 6828 ldr r0, [r5, #0] + 801036e: b096 sub sp, #88 ; 0x58 + 8010370: 460e mov r6, r1 + 8010372: 4690 mov r8, r2 + 8010374: 2100 movs r1, #0 + 8010376: 461f mov r7, r3 + 8010378: 2201 movs r2, #1 + 801037a: 2303 movs r3, #3 + 801037c: f500 6090 add.w r0, r0, #1152 ; 0x480 + 8010380: e9cd 1104 strd r1, r1, [sp, #16] + 8010384: e9cd 1106 strd r1, r1, [sp, #24] + 8010388: f88d 100c strb.w r1, [sp, #12] + 801038c: f88d 100d strb.w r1, [sp, #13] + 8010390: f8ad 300e strh.w r3, [sp, #14] + 8010394: f000 f9b9 bl 801070a <RegionCommonCountChannels> + 8010398: b930 cbnz r0, 80103a8 <RegionAS923NextChannel+0x44> + 801039a: 682a ldr r2, [r5, #0] + 801039c: f8b2 3480 ldrh.w r3, [r2, #1152] ; 0x480 + 80103a0: f043 0303 orr.w r3, r3, #3 + 80103a4: f8a2 3480 strh.w r3, [r2, #1152] ; 0x480 + 80103a8: 682a ldr r2, [r5, #0] + 80103aa: 7a63 ldrb r3, [r4, #9] + 80103ac: f88d 3020 strb.w r3, [sp, #32] + 80103b0: f502 6190 add.w r1, r2, #1152 ; 0x480 + 80103b4: e9cd 1209 strd r1, r2, [sp, #36] ; 0x24 + 80103b8: 4a27 ldr r2, [pc, #156] ; (8010458 <RegionAS923NextChannel+0xf4>) + 80103ba: f994 3008 ldrsb.w r3, [r4, #8] + 80103be: 6812 ldr r2, [r2, #0] + 80103c0: 920b str r2, [sp, #44] ; 0x2c + 80103c2: 2210 movs r2, #16 + 80103c4: f8ad 2030 strh.w r2, [sp, #48] ; 0x30 + 80103c8: f10d 020e add.w r2, sp, #14 + 80103cc: 920d str r2, [sp, #52] ; 0x34 + 80103ce: 6822 ldr r2, [r4, #0] + 80103d0: 920e str r2, [sp, #56] ; 0x38 + 80103d2: 6862 ldr r2, [r4, #4] + 80103d4: 920f str r2, [sp, #60] ; 0x3c + 80103d6: e9d4 0103 ldrd r0, r1, [r4, #12] + 80103da: 7aa2 ldrb r2, [r4, #10] + 80103dc: f88d 2040 strb.w r2, [sp, #64] ; 0x40 + 80103e0: 2201 movs r2, #1 + 80103e2: f88d 2041 strb.w r2, [sp, #65] ; 0x41 + 80103e6: aa11 add r2, sp, #68 ; 0x44 + 80103e8: e882 0003 stmia.w r2, {r0, r1} + 80103ec: 7d22 ldrb r2, [r4, #20] + 80103ee: 8ae1 ldrh r1, [r4, #22] + 80103f0: f88d 3021 strb.w r3, [sp, #33] ; 0x21 + 80103f4: 4618 mov r0, r3 + 80103f6: f88d 204c strb.w r2, [sp, #76] ; 0x4c + 80103fa: f7ff fbe5 bl 800fbc8 <GetTimeOnAir> + 80103fe: ab08 add r3, sp, #32 + 8010400: 9315 str r3, [sp, #84] ; 0x54 + 8010402: f10d 030d add.w r3, sp, #13 + 8010406: 9014 str r0, [sp, #80] ; 0x50 + 8010408: 9300 str r3, [sp, #0] + 801040a: f8cd 8004 str.w r8, [sp, #4] + 801040e: ab03 add r3, sp, #12 + 8010410: aa04 add r2, sp, #16 + 8010412: 4639 mov r1, r7 + 8010414: a80e add r0, sp, #56 ; 0x38 + 8010416: f000 fbc1 bl 8010b9c <RegionCommonIdentifyChannels> + 801041a: 4604 mov r4, r0 + 801041c: b978 cbnz r0, 801043e <RegionAS923NextChannel+0xda> + 801041e: f89d 100c ldrb.w r1, [sp, #12] + 8010422: 3901 subs r1, #1 + 8010424: f001 fa96 bl 8011954 <randr> + 8010428: f100 0358 add.w r3, r0, #88 ; 0x58 + 801042c: eb0d 0003 add.w r0, sp, r3 + 8010430: f810 3c48 ldrb.w r3, [r0, #-72] + 8010434: 7033 strb r3, [r6, #0] + 8010436: 4620 mov r0, r4 + 8010438: b016 add sp, #88 ; 0x58 + 801043a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 801043e: 280c cmp r0, #12 + 8010440: bf01 itttt eq + 8010442: 682a ldreq r2, [r5, #0] + 8010444: f8b2 3480 ldrheq.w r3, [r2, #1152] ; 0x480 + 8010448: f043 0303 orreq.w r3, r3, #3 + 801044c: f8a2 3480 strheq.w r3, [r2, #1152] ; 0x480 + 8010450: e7f1 b.n 8010436 <RegionAS923NextChannel+0xd2> + 8010452: bf00 nop + 8010454: 20002624 .word 0x20002624 + 8010458: 20002620 .word 0x20002620 + +0801045c <RegionAS923ChannelAdd>: + 801045c: b5f8 push {r3, r4, r5, r6, r7, lr} + 801045e: 7906 ldrb r6, [r0, #4] + 8010460: 2e01 cmp r6, #1 + 8010462: 4605 mov r5, r0 + 8010464: d801 bhi.n 801046a <RegionAS923ChannelAdd+0xe> + 8010466: 2006 movs r0, #6 + 8010468: bdf8 pop {r3, r4, r5, r6, r7, pc} + 801046a: 2e0f cmp r6, #15 + 801046c: d82b bhi.n 80104c6 <RegionAS923ChannelAdd+0x6a> + 801046e: 6803 ldr r3, [r0, #0] + 8010470: 7a18 ldrb r0, [r3, #8] + 8010472: f340 0003 sbfx r0, r0, #0, #4 + 8010476: 2207 movs r2, #7 + 8010478: 2100 movs r1, #0 + 801047a: b240 sxtb r0, r0 + 801047c: f000 f923 bl 80106c6 <RegionCommonValueInRange> + 8010480: 682b ldr r3, [r5, #0] + 8010482: 4604 mov r4, r0 + 8010484: 7a18 ldrb r0, [r3, #8] + 8010486: f340 1003 sbfx r0, r0, #4, #4 + 801048a: 2207 movs r2, #7 + 801048c: 2100 movs r1, #0 + 801048e: b240 sxtb r0, r0 + 8010490: f000 f919 bl 80106c6 <RegionCommonValueInRange> + 8010494: b1a8 cbz r0, 80104c2 <RegionAS923ChannelAdd+0x66> + 8010496: fab4 f484 clz r4, r4 + 801049a: 0964 lsrs r4, r4, #5 + 801049c: 6829 ldr r1, [r5, #0] + 801049e: 7a0b ldrb r3, [r1, #8] + 80104a0: 6808 ldr r0, [r1, #0] + 80104a2: f343 0203 sbfx r2, r3, #0, #4 + 80104a6: f343 1303 sbfx r3, r3, #4, #4 + 80104aa: b252 sxtb r2, r2 + 80104ac: b25b sxtb r3, r3 + 80104ae: 429a cmp r2, r3 + 80104b0: bfc8 it gt + 80104b2: 2401 movgt r4, #1 + 80104b4: f7ff fb74 bl 800fba0 <VerifyRfFreq> + 80104b8: b948 cbnz r0, 80104ce <RegionAS923ChannelAdd+0x72> + 80104ba: 2c00 cmp r4, #0 + 80104bc: d1d3 bne.n 8010466 <RegionAS923ChannelAdd+0xa> + 80104be: 2004 movs r0, #4 + 80104c0: e7d2 b.n 8010468 <RegionAS923ChannelAdd+0xc> + 80104c2: 2401 movs r4, #1 + 80104c4: e7ea b.n 801049c <RegionAS923ChannelAdd+0x40> + 80104c6: 2003 movs r0, #3 + 80104c8: e7ce b.n 8010468 <RegionAS923ChannelAdd+0xc> + 80104ca: 2005 movs r0, #5 + 80104cc: e7cc b.n 8010468 <RegionAS923ChannelAdd+0xc> + 80104ce: 2c00 cmp r4, #0 + 80104d0: d1fb bne.n 80104ca <RegionAS923ChannelAdd+0x6e> + 80104d2: 4f0c ldr r7, [pc, #48] ; (8010504 <RegionAS923ChannelAdd+0xa8>) + 80104d4: 6829 ldr r1, [r5, #0] + 80104d6: 683b ldr r3, [r7, #0] + 80104d8: eb06 0046 add.w r0, r6, r6, lsl #1 + 80104dc: eb03 0080 add.w r0, r3, r0, lsl #2 + 80104e0: 220c movs r2, #12 + 80104e2: f001 fa53 bl 801198c <memcpy1> + 80104e6: 683a ldr r2, [r7, #0] + 80104e8: 230c movs r3, #12 + 80104ea: fb03 2306 mla r3, r3, r6, r2 + 80104ee: 4620 mov r0, r4 + 80104f0: 725c strb r4, [r3, #9] + 80104f2: f8b2 1480 ldrh.w r1, [r2, #1152] ; 0x480 + 80104f6: 2301 movs r3, #1 + 80104f8: 40b3 lsls r3, r6 + 80104fa: 430b orrs r3, r1 + 80104fc: f8a2 3480 strh.w r3, [r2, #1152] ; 0x480 + 8010500: e7b2 b.n 8010468 <RegionAS923ChannelAdd+0xc> + 8010502: bf00 nop + 8010504: 20002624 .word 0x20002624 + +08010508 <RegionAS923ChannelsRemove>: + 8010508: b410 push {r4} + 801050a: 7801 ldrb r1, [r0, #0] + 801050c: 2901 cmp r1, #1 + 801050e: d90e bls.n 801052e <RegionAS923ChannelsRemove+0x26> + 8010510: 4b08 ldr r3, [pc, #32] ; (8010534 <RegionAS923ChannelsRemove+0x2c>) + 8010512: 6818 ldr r0, [r3, #0] + 8010514: 230c movs r3, #12 + 8010516: 434b muls r3, r1 + 8010518: 18c4 adds r4, r0, r3 + 801051a: 2200 movs r2, #0 + 801051c: 50c2 str r2, [r0, r3] + 801051e: e9c4 2201 strd r2, r2, [r4, #4] + 8010522: f500 6090 add.w r0, r0, #1152 ; 0x480 + 8010526: bc10 pop {r4} + 8010528: 2210 movs r2, #16 + 801052a: f000 b8d5 b.w 80106d8 <RegionCommonChanDisable> + 801052e: 2000 movs r0, #0 + 8010530: bc10 pop {r4} + 8010532: 4770 bx lr + 8010534: 20002624 .word 0x20002624 + +08010538 <RegionAS923ApplyCFList>: + 8010538: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 801053c: b086 sub sp, #24 + 801053e: 2350 movs r3, #80 ; 0x50 + 8010540: f88d 3014 strb.w r3, [sp, #20] + 8010544: 7903 ldrb r3, [r0, #4] + 8010546: 2b10 cmp r3, #16 + 8010548: 4607 mov r7, r0 + 801054a: d130 bne.n 80105ae <RegionAS923ApplyCFList+0x76> + 801054c: 6803 ldr r3, [r0, #0] + 801054e: 7bdd ldrb r5, [r3, #15] + 8010550: bb6d cbnz r5, 80105ae <RegionAS923ApplyCFList+0x76> + 8010552: 2402 movs r4, #2 + 8010554: 46a8 mov r8, r5 + 8010556: 2664 movs r6, #100 ; 0x64 + 8010558: 2c06 cmp r4, #6 + 801055a: d814 bhi.n 8010586 <RegionAS923ApplyCFList+0x4e> + 801055c: 683a ldr r2, [r7, #0] + 801055e: 5d53 ldrb r3, [r2, r5] + 8010560: 9303 str r3, [sp, #12] + 8010562: 442a add r2, r5 + 8010564: 7851 ldrb r1, [r2, #1] + 8010566: ea43 2301 orr.w r3, r3, r1, lsl #8 + 801056a: 9303 str r3, [sp, #12] + 801056c: 7892 ldrb r2, [r2, #2] + 801056e: ea43 4302 orr.w r3, r3, r2, lsl #16 + 8010572: 4373 muls r3, r6 + 8010574: e9cd 3803 strd r3, r8, [sp, #12] + 8010578: b963 cbnz r3, 8010594 <RegionAS923ApplyCFList+0x5c> + 801057a: 4668 mov r0, sp + 801057c: f88d 4000 strb.w r4, [sp] + 8010580: f7ff ffc2 bl 8010508 <RegionAS923ChannelsRemove> + 8010584: e00d b.n 80105a2 <RegionAS923ApplyCFList+0x6a> + 8010586: f8cd 800c str.w r8, [sp, #12] + 801058a: f88d 8014 strb.w r8, [sp, #20] + 801058e: f8cd 8010 str.w r8, [sp, #16] + 8010592: e7f2 b.n 801057a <RegionAS923ApplyCFList+0x42> + 8010594: ab03 add r3, sp, #12 + 8010596: a801 add r0, sp, #4 + 8010598: 9301 str r3, [sp, #4] + 801059a: f88d 4008 strb.w r4, [sp, #8] + 801059e: f7ff ff5d bl 801045c <RegionAS923ChannelAdd> + 80105a2: 3401 adds r4, #1 + 80105a4: b2e4 uxtb r4, r4 + 80105a6: 2c10 cmp r4, #16 + 80105a8: f105 0503 add.w r5, r5, #3 + 80105ac: d1d4 bne.n 8010558 <RegionAS923ApplyCFList+0x20> + 80105ae: b006 add sp, #24 + 80105b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + +080105b4 <RegionAS923NewChannelReq>: + 80105b4: b51f push {r0, r1, r2, r3, r4, lr} + 80105b6: 6802 ldr r2, [r0, #0] + 80105b8: 7903 ldrb r3, [r0, #4] + 80105ba: 6811 ldr r1, [r2, #0] + 80105bc: b951 cbnz r1, 80105d4 <RegionAS923NewChannelReq+0x20> + 80105be: a801 add r0, sp, #4 + 80105c0: f88d 3004 strb.w r3, [sp, #4] + 80105c4: f7ff ffa0 bl 8010508 <RegionAS923ChannelsRemove> + 80105c8: b978 cbnz r0, 80105ea <RegionAS923NewChannelReq+0x36> + 80105ca: 2000 movs r0, #0 + 80105cc: b240 sxtb r0, r0 + 80105ce: b005 add sp, #20 + 80105d0: f85d fb04 ldr.w pc, [sp], #4 + 80105d4: a802 add r0, sp, #8 + 80105d6: 9202 str r2, [sp, #8] + 80105d8: f88d 300c strb.w r3, [sp, #12] + 80105dc: f7ff ff3e bl 801045c <RegionAS923ChannelAdd> + 80105e0: 2806 cmp r0, #6 + 80105e2: d8f2 bhi.n 80105ca <RegionAS923NewChannelReq+0x16> + 80105e4: 4b02 ldr r3, [pc, #8] ; (80105f0 <RegionAS923NewChannelReq+0x3c>) + 80105e6: 5c18 ldrb r0, [r3, r0] + 80105e8: e7f0 b.n 80105cc <RegionAS923NewChannelReq+0x18> + 80105ea: 2003 movs r0, #3 + 80105ec: e7ee b.n 80105cc <RegionAS923NewChannelReq+0x18> + 80105ee: bf00 nop + 80105f0: 08015370 .word 0x08015370 + +080105f4 <RegionAS923SetContinuousWave>: + 80105f4: b570 push {r4, r5, r6, lr} + 80105f6: 4e11 ldr r6, [pc, #68] ; (801063c <RegionAS923SetContinuousWave+0x48>) + 80105f8: 7801 ldrb r1, [r0, #0] + 80105fa: 6832 ldr r2, [r6, #0] + 80105fc: 4b10 ldr r3, [pc, #64] ; (8010640 <RegionAS923SetContinuousWave+0x4c>) + 80105fe: 250c movs r5, #12 + 8010600: fb05 2201 mla r2, r5, r1, r2 + 8010604: 681b ldr r3, [r3, #0] + 8010606: 7a52 ldrb r2, [r2, #9] + 8010608: 2118 movs r1, #24 + 801060a: fb01 3302 mla r3, r1, r2, r3 + 801060e: 4604 mov r4, r0 + 8010610: f993 1002 ldrsb.w r1, [r3, #2] + 8010614: f990 0002 ldrsb.w r0, [r0, #2] + 8010618: f000 fb1f bl 8010c5a <RegionCommonLimitTxPower> + 801061c: 7823 ldrb r3, [r4, #0] + 801061e: 6832 ldr r2, [r6, #0] + 8010620: 6861 ldr r1, [r4, #4] + 8010622: 436b muls r3, r5 + 8010624: 58d5 ldr r5, [r2, r3] + 8010626: 68a2 ldr r2, [r4, #8] + 8010628: f000 fa49 bl 8010abe <RegionCommonComputeTxPower> + 801062c: 4b05 ldr r3, [pc, #20] ; (8010644 <RegionAS923SetContinuousWave+0x50>) + 801062e: 89a2 ldrh r2, [r4, #12] + 8010630: 6bdb ldr r3, [r3, #60] ; 0x3c + 8010632: 4601 mov r1, r0 + 8010634: 4628 mov r0, r5 + 8010636: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 801063a: 4718 bx r3 + 801063c: 20002624 .word 0x20002624 + 8010640: 20002620 .word 0x20002620 + 8010644: 080159b0 .word 0x080159b0 + +08010648 <RegionAS923ApplyDrOffset>: + 8010648: 4b07 ldr r3, [pc, #28] ; (8010668 <RegionAS923ApplyDrOffset+0x20>) + 801064a: 569b ldrsb r3, [r3, r2] + 801064c: 1ac9 subs r1, r1, r3 + 801064e: 1e43 subs r3, r0, #1 + 8010650: 4258 negs r0, r3 + 8010652: 4158 adcs r0, r3 + 8010654: 0040 lsls r0, r0, #1 + 8010656: 4288 cmp r0, r1 + 8010658: bfb8 it lt + 801065a: 4608 movlt r0, r1 + 801065c: 2805 cmp r0, #5 + 801065e: bfa8 it ge + 8010660: 2005 movge r0, #5 + 8010662: b2c0 uxtb r0, r0 + 8010664: 4770 bx lr + 8010666: bf00 nop + 8010668: 0801537f .word 0x0801537f + +0801066c <RegionCommonChanVerifyDr>: + 801066c: b5f0 push {r4, r5, r6, r7, lr} + 801066e: 429a cmp r2, r3 + 8010670: 9d06 ldr r5, [sp, #24] + 8010672: db03 blt.n 801067c <RegionCommonChanVerifyDr+0x10> + 8010674: f99d 3014 ldrsb.w r3, [sp, #20] + 8010678: 429a cmp r2, r3 + 801067a: dd20 ble.n 80106be <RegionCommonChanVerifyDr+0x52> + 801067c: 2000 movs r0, #0 + 801067e: bdf0 pop {r4, r5, r6, r7, pc} + 8010680: eb03 0343 add.w r3, r3, r3, lsl #1 + 8010684: f831 c014 ldrh.w ip, [r1, r4, lsl #1] + 8010688: eb05 0383 add.w r3, r5, r3, lsl #2 + 801068c: 2600 movs r6, #0 + 801068e: fa4c f706 asr.w r7, ip, r6 + 8010692: 07ff lsls r7, r7, #31 + 8010694: d507 bpl.n 80106a6 <RegionCommonChanVerifyDr+0x3a> + 8010696: 7a1f ldrb r7, [r3, #8] + 8010698: f007 0e0f and.w lr, r7, #15 + 801069c: 4572 cmp r2, lr + 801069e: db02 blt.n 80106a6 <RegionCommonChanVerifyDr+0x3a> + 80106a0: ebb2 1f17 cmp.w r2, r7, lsr #4 + 80106a4: dd0d ble.n 80106c2 <RegionCommonChanVerifyDr+0x56> + 80106a6: 3601 adds r6, #1 + 80106a8: 2e10 cmp r6, #16 + 80106aa: f103 030c add.w r3, r3, #12 + 80106ae: d1ee bne.n 801068e <RegionCommonChanVerifyDr+0x22> + 80106b0: 3401 adds r4, #1 + 80106b2: b2e4 uxtb r4, r4 + 80106b4: 0123 lsls r3, r4, #4 + 80106b6: b2db uxtb r3, r3 + 80106b8: 4298 cmp r0, r3 + 80106ba: d8e1 bhi.n 8010680 <RegionCommonChanVerifyDr+0x14> + 80106bc: e7de b.n 801067c <RegionCommonChanVerifyDr+0x10> + 80106be: 2400 movs r4, #0 + 80106c0: e7f8 b.n 80106b4 <RegionCommonChanVerifyDr+0x48> + 80106c2: 2001 movs r0, #1 + 80106c4: e7db b.n 801067e <RegionCommonChanVerifyDr+0x12> + +080106c6 <RegionCommonValueInRange>: + 80106c6: 4288 cmp r0, r1 + 80106c8: db04 blt.n 80106d4 <RegionCommonValueInRange+0xe> + 80106ca: 4290 cmp r0, r2 + 80106cc: bfcc ite gt + 80106ce: 2000 movgt r0, #0 + 80106d0: 2001 movle r0, #1 + 80106d2: 4770 bx lr + 80106d4: 2000 movs r0, #0 + 80106d6: 4770 bx lr + +080106d8 <RegionCommonChanDisable>: + 80106d8: b510 push {r4, lr} + 80106da: 0914 lsrs r4, r2, #4 + 80106dc: ebb4 1f11 cmp.w r4, r1, lsr #4 + 80106e0: 4603 mov r3, r0 + 80106e2: ea4f 1011 mov.w r0, r1, lsr #4 + 80106e6: d30e bcc.n 8010706 <RegionCommonChanDisable+0x2e> + 80106e8: 4291 cmp r1, r2 + 80106ea: d20c bcs.n 8010706 <RegionCommonChanDisable+0x2e> + 80106ec: b202 sxth r2, r0 + 80106ee: f001 010f and.w r1, r1, #15 + 80106f2: f833 4012 ldrh.w r4, [r3, r2, lsl #1] + 80106f6: 2001 movs r0, #1 + 80106f8: fa00 f101 lsl.w r1, r0, r1 + 80106fc: ea24 0101 bic.w r1, r4, r1 + 8010700: f823 1012 strh.w r1, [r3, r2, lsl #1] + 8010704: bd10 pop {r4, pc} + 8010706: 2000 movs r0, #0 + 8010708: e7fc b.n 8010704 <RegionCommonChanDisable+0x2c> + +0801070a <RegionCommonCountChannels>: + 801070a: b5f0 push {r4, r5, r6, r7, lr} + 801070c: b128 cbz r0, 801071a <RegionCommonCountChannels+0x10> + 801070e: eb00 0541 add.w r5, r0, r1, lsl #1 + 8010712: 2701 movs r7, #1 + 8010714: 2000 movs r0, #0 + 8010716: 4291 cmp r1, r2 + 8010718: d300 bcc.n 801071c <RegionCommonCountChannels+0x12> + 801071a: bdf0 pop {r4, r5, r6, r7, pc} + 801071c: 2400 movs r4, #0 + 801071e: f835 cb02 ldrh.w ip, [r5], #2 + 8010722: 4623 mov r3, r4 + 8010724: fa07 f604 lsl.w r6, r7, r4 + 8010728: ea36 060c bics.w r6, r6, ip + 801072c: bf08 it eq + 801072e: 3301 addeq r3, #1 + 8010730: f104 0401 add.w r4, r4, #1 + 8010734: bf08 it eq + 8010736: b2db uxtbeq r3, r3 + 8010738: 2c10 cmp r4, #16 + 801073a: d1f3 bne.n 8010724 <RegionCommonCountChannels+0x1a> + 801073c: 4418 add r0, r3 + 801073e: 3101 adds r1, #1 + 8010740: b2c0 uxtb r0, r0 + 8010742: b2c9 uxtb r1, r1 + 8010744: e7e7 b.n 8010716 <RegionCommonCountChannels+0xc> + +08010746 <RegionCommonChanMaskCopy>: + 8010746: b510 push {r4, lr} + 8010748: b100 cbz r0, 801074c <RegionCommonChanMaskCopy+0x6> + 801074a: b949 cbnz r1, 8010760 <RegionCommonChanMaskCopy+0x1a> + 801074c: bd10 pop {r4, pc} + 801074e: f831 4013 ldrh.w r4, [r1, r3, lsl #1] + 8010752: f820 4013 strh.w r4, [r0, r3, lsl #1] + 8010756: 3301 adds r3, #1 + 8010758: b2dc uxtb r4, r3 + 801075a: 42a2 cmp r2, r4 + 801075c: d8f7 bhi.n 801074e <RegionCommonChanMaskCopy+0x8> + 801075e: e7f5 b.n 801074c <RegionCommonChanMaskCopy+0x6> + 8010760: 2300 movs r3, #0 + 8010762: e7f9 b.n 8010758 <RegionCommonChanMaskCopy+0x12> + +08010764 <RegionCommonSetBandTxDone>: + 8010764: b082 sub sp, #8 + 8010766: b530 push {r4, r5, lr} + 8010768: 8804 ldrh r4, [r0, #0] + 801076a: 9304 str r3, [sp, #16] + 801076c: b96a cbnz r2, 801078a <RegionCommonSetBandTxDone+0x26> + 801076e: f5b3 6f61 cmp.w r3, #3600 ; 0xe10 + 8010772: d318 bcc.n 80107a6 <RegionCommonSetBandTxDone+0x42> + 8010774: f649 25af movw r5, #39599 ; 0x9aaf + 8010778: f242 7210 movw r2, #10000 ; 0x2710 + 801077c: 42ab cmp r3, r5 + 801077e: bf98 it ls + 8010780: f44f 727a movls.w r2, #1000 ; 0x3e8 + 8010784: 4294 cmp r4, r2 + 8010786: bf38 it cc + 8010788: 4614 movcc r4, r2 + 801078a: 2c01 cmp r4, #1 + 801078c: bf38 it cc + 801078e: 2401 movcc r4, #1 + 8010790: 4361 muls r1, r4 + 8010792: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 8010796: 68c3 ldr r3, [r0, #12] + 8010798: 428b cmp r3, r1 + 801079a: bf8c ite hi + 801079c: 1a5b subhi r3, r3, r1 + 801079e: 2300 movls r3, #0 + 80107a0: 60c3 str r3, [r0, #12] + 80107a2: b002 add sp, #8 + 80107a4: 4770 bx lr + 80107a6: 2264 movs r2, #100 ; 0x64 + 80107a8: e7ec b.n 8010784 <RegionCommonSetBandTxDone+0x20> + ... + +080107ac <RegionCommonUpdateBandTimeOff>: + 80107ac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80107b0: b091 sub sp, #68 ; 0x44 + 80107b2: 4615 mov r5, r2 + 80107b4: f8dd 806c ldr.w r8, [sp, #108] ; 0x6c + 80107b8: 9304 str r3, [sp, #16] + 80107ba: f89d 3068 ldrb.w r3, [sp, #104] ; 0x68 + 80107be: 9309 str r3, [sp, #36] ; 0x24 + 80107c0: 460c mov r4, r1 + 80107c2: 4606 mov r6, r0 + 80107c4: f003 fbc2 bl 8013f4c <UTIL_TIMER_GetCurrentTime> + 80107c8: 4a68 ldr r2, [pc, #416] ; (801096c <RegionCommonUpdateBandTimeOff+0x1c0>) + 80107ca: f8df b1a4 ldr.w fp, [pc, #420] ; 8010970 <RegionCommonUpdateBandTimeOff+0x1c4> + 80107ce: 9005 str r0, [sp, #20] + 80107d0: f5a8 33f6 sub.w r3, r8, #125952 ; 0x1ec00 + 80107d4: 3b30 subs r3, #48 ; 0x30 + 80107d6: fbb3 f3f2 udiv r3, r3, r2 + 80107da: 4353 muls r3, r2 + 80107dc: f503 32f6 add.w r2, r3, #125952 ; 0x1ec00 + 80107e0: f503 33a8 add.w r3, r3, #86016 ; 0x15000 + 80107e4: f503 73c0 add.w r3, r3, #384 ; 0x180 + 80107e8: 9303 str r3, [sp, #12] + 80107ea: 2318 movs r3, #24 + 80107ec: fb13 4305 smlabb r3, r3, r5, r4 + 80107f0: 3230 adds r2, #48 ; 0x30 + 80107f2: 9206 str r2, [sp, #24] + 80107f4: 9308 str r3, [sp, #32] + 80107f6: 2500 movs r5, #0 + 80107f8: f04f 3aff mov.w sl, #4294967295 + 80107fc: 9b08 ldr r3, [sp, #32] + 80107fe: 42a3 cmp r3, r4 + 8010800: d107 bne.n 8010812 <RegionCommonUpdateBandTimeOff+0x66> + 8010802: 2d00 cmp r5, #0 + 8010804: bf14 ite ne + 8010806: 4650 movne r0, sl + 8010808: f04f 30ff moveq.w r0, #4294967295 + 801080c: b011 add sp, #68 ; 0x44 + 801080e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8010812: f9bd 3070 ldrsh.w r3, [sp, #112] ; 0x70 + 8010816: f8ad 302c strh.w r3, [sp, #44] ; 0x2c + 801081a: 990b ldr r1, [sp, #44] ; 0x2c + 801081c: f8cd 806c str.w r8, [sp, #108] ; 0x6c + 8010820: 4640 mov r0, r8 + 8010822: f8cd 8028 str.w r8, [sp, #40] ; 0x28 + 8010826: f003 fb21 bl 8013e6c <SysTimeToMs> + 801082a: f8b4 9000 ldrh.w r9, [r4] + 801082e: b96e cbnz r6, 801084c <RegionCommonUpdateBandTimeOff+0xa0> + 8010830: f5b8 6f61 cmp.w r8, #3600 ; 0xe10 + 8010834: d35b bcc.n 80108ee <RegionCommonUpdateBandTimeOff+0x142> + 8010836: f649 22af movw r2, #39599 ; 0x9aaf + 801083a: f242 7310 movw r3, #10000 ; 0x2710 + 801083e: 4590 cmp r8, r2 + 8010840: bf98 it ls + 8010842: f44f 737a movls.w r3, #1000 ; 0x3e8 + 8010846: 4599 cmp r9, r3 + 8010848: bf38 it cc + 801084a: 4699 movcc r9, r3 + 801084c: 464b mov r3, r9 + 801084e: 2b01 cmp r3, #1 + 8010850: bf38 it cc + 8010852: 2301 movcc r3, #1 + 8010854: 9307 str r3, [sp, #28] + 8010856: 2e00 cmp r6, #0 + 8010858: d152 bne.n 8010900 <RegionCommonUpdateBandTimeOff+0x154> + 801085a: f1b9 0f64 cmp.w r9, #100 ; 0x64 + 801085e: d148 bne.n 80108f2 <RegionCommonUpdateBandTimeOff+0x146> + 8010860: 60a0 str r0, [r4, #8] + 8010862: 465f mov r7, fp + 8010864: 68a1 ldr r1, [r4, #8] + 8010866: a80e add r0, sp, #56 ; 0x38 + 8010868: f003 fb22 bl 8013eb0 <SysTimeFromMs> + 801086c: 9b0f ldr r3, [sp, #60] ; 0x3c + 801086e: 9300 str r3, [sp, #0] + 8010870: e9dd 120a ldrd r1, r2, [sp, #40] ; 0x28 + 8010874: 9b0e ldr r3, [sp, #56] ; 0x38 + 8010876: a80c add r0, sp, #48 ; 0x30 + 8010878: f003 fa79 bl 8013d6e <SysTimeSub> + 801087c: 9b04 ldr r3, [sp, #16] + 801087e: 9a0c ldr r2, [sp, #48] ; 0x30 + 8010880: b90b cbnz r3, 8010886 <RegionCommonUpdateBandTimeOff+0xda> + 8010882: 9b09 ldr r3, [sp, #36] ; 0x24 + 8010884: b12b cbz r3, 8010892 <RegionCommonUpdateBandTimeOff+0xe6> + 8010886: 6923 ldr r3, [r4, #16] + 8010888: 42bb cmp r3, r7 + 801088a: d102 bne.n 8010892 <RegionCommonUpdateBandTimeOff+0xe6> + 801088c: 4b39 ldr r3, [pc, #228] ; (8010974 <RegionCommonUpdateBandTimeOff+0x1c8>) + 801088e: 429a cmp r2, r3 + 8010890: d90d bls.n 80108ae <RegionCommonUpdateBandTimeOff+0x102> + 8010892: 4b39 ldr r3, [pc, #228] ; (8010978 <RegionCommonUpdateBandTimeOff+0x1cc>) + 8010894: 60e7 str r7, [r4, #12] + 8010896: 4598 cmp r8, r3 + 8010898: d909 bls.n 80108ae <RegionCommonUpdateBandTimeOff+0x102> + 801089a: 2300 movs r3, #0 + 801089c: f8ad 3034 strh.w r3, [sp, #52] ; 0x34 + 80108a0: 9b06 ldr r3, [sp, #24] + 80108a2: 990d ldr r1, [sp, #52] ; 0x34 + 80108a4: 930c str r3, [sp, #48] ; 0x30 + 80108a6: 4618 mov r0, r3 + 80108a8: f003 fae0 bl 8013e6c <SysTimeToMs> + 80108ac: 60a0 str r0, [r4, #8] + 80108ae: 6860 ldr r0, [r4, #4] + 80108b0: b900 cbnz r0, 80108b4 <RegionCommonUpdateBandTimeOff+0x108> + 80108b2: 60e7 str r7, [r4, #12] + 80108b4: 6127 str r7, [r4, #16] + 80108b6: b126 cbz r6, 80108c2 <RegionCommonUpdateBandTimeOff+0x116> + 80108b8: f003 fb52 bl 8013f60 <UTIL_TIMER_GetElapsedTime> + 80108bc: 68e3 ldr r3, [r4, #12] + 80108be: 4403 add r3, r0 + 80108c0: 60e3 str r3, [r4, #12] + 80108c2: e9d4 3203 ldrd r3, r2, [r4, #12] + 80108c6: 4293 cmp r3, r2 + 80108c8: 9b05 ldr r3, [sp, #20] + 80108ca: 991d ldr r1, [sp, #116] ; 0x74 + 80108cc: 6063 str r3, [r4, #4] + 80108ce: 9b07 ldr r3, [sp, #28] + 80108d0: bf88 it hi + 80108d2: 60e2 strhi r2, [r4, #12] + 80108d4: 434b muls r3, r1 + 80108d6: 68e1 ldr r1, [r4, #12] + 80108d8: 4299 cmp r1, r3 + 80108da: d202 bcs.n 80108e2 <RegionCommonUpdateBandTimeOff+0x136> + 80108dc: 9804 ldr r0, [sp, #16] + 80108de: b9a8 cbnz r0, 801090c <RegionCommonUpdateBandTimeOff+0x160> + 80108e0: b1a6 cbz r6, 801090c <RegionCommonUpdateBandTimeOff+0x160> + 80108e2: 2301 movs r3, #1 + 80108e4: 441d add r5, r3 + 80108e6: 7523 strb r3, [r4, #20] + 80108e8: b2ed uxtb r5, r5 + 80108ea: 3418 adds r4, #24 + 80108ec: e786 b.n 80107fc <RegionCommonUpdateBandTimeOff+0x50> + 80108ee: 2364 movs r3, #100 ; 0x64 + 80108f0: e7a9 b.n 8010846 <RegionCommonUpdateBandTimeOff+0x9a> + 80108f2: f5b9 7f7a cmp.w r9, #1000 ; 0x3e8 + 80108f6: bf0a itet eq + 80108f8: 4f20 ldreq r7, [pc, #128] ; (801097c <RegionCommonUpdateBandTimeOff+0x1d0>) + 80108fa: 4f21 ldrne r7, [pc, #132] ; (8010980 <RegionCommonUpdateBandTimeOff+0x1d4>) + 80108fc: 60a0 streq r0, [r4, #8] + 80108fe: e7b1 b.n 8010864 <RegionCommonUpdateBandTimeOff+0xb8> + 8010900: 9b04 ldr r3, [sp, #16] + 8010902: b90b cbnz r3, 8010908 <RegionCommonUpdateBandTimeOff+0x15c> + 8010904: f8c4 b00c str.w fp, [r4, #12] + 8010908: 465f mov r7, fp + 801090a: e7d0 b.n 80108ae <RegionCommonUpdateBandTimeOff+0x102> + 801090c: 2000 movs r0, #0 + 801090e: 4293 cmp r3, r2 + 8010910: 7520 strb r0, [r4, #20] + 8010912: d806 bhi.n 8010922 <RegionCommonUpdateBandTimeOff+0x176> + 8010914: 1a5b subs r3, r3, r1 + 8010916: 459a cmp sl, r3 + 8010918: f105 0501 add.w r5, r5, #1 + 801091c: bf28 it cs + 801091e: 469a movcs sl, r3 + 8010920: b2ed uxtb r5, r5 + 8010922: 2e00 cmp r6, #0 + 8010924: d1e1 bne.n 80108ea <RegionCommonUpdateBandTimeOff+0x13e> + 8010926: f1b9 0f64 cmp.w r9, #100 ; 0x64 + 801092a: 4a16 ldr r2, [pc, #88] ; (8010984 <RegionCommonUpdateBandTimeOff+0x1d8>) + 801092c: f8ad 6034 strh.w r6, [sp, #52] ; 0x34 + 8010930: d019 beq.n 8010966 <RegionCommonUpdateBandTimeOff+0x1ba> + 8010932: f649 23b0 movw r3, #39600 ; 0x9ab0 + 8010936: f5b9 7f7a cmp.w r9, #1000 ; 0x3e8 + 801093a: bf18 it ne + 801093c: 4613 movne r3, r2 + 801093e: 4590 cmp r8, r2 + 8010940: bf84 itt hi + 8010942: 9a03 ldrhi r2, [sp, #12] + 8010944: 189b addhi r3, r3, r2 + 8010946: 930c str r3, [sp, #48] ; 0x30 + 8010948: 9b1c ldr r3, [sp, #112] ; 0x70 + 801094a: 9300 str r3, [sp, #0] + 801094c: af0c add r7, sp, #48 ; 0x30 + 801094e: e897 0006 ldmia.w r7, {r1, r2} + 8010952: 9b1b ldr r3, [sp, #108] ; 0x6c + 8010954: 4638 mov r0, r7 + 8010956: f003 fa0a bl 8013d6e <SysTimeSub> + 801095a: e897 0003 ldmia.w r7, {r0, r1} + 801095e: f003 fa85 bl 8013e6c <SysTimeToMs> + 8010962: 4682 mov sl, r0 + 8010964: e7c1 b.n 80108ea <RegionCommonUpdateBandTimeOff+0x13e> + 8010966: f44f 6361 mov.w r3, #3600 ; 0xe10 + 801096a: e7e8 b.n 801093e <RegionCommonUpdateBandTimeOff+0x192> + 801096c: 00015180 .word 0x00015180 + 8010970: 001b7740 .word 0x001b7740 + 8010974: 0001517f .word 0x0001517f + 8010978: 0001ec2f .word 0x0001ec2f + 801097c: 0112a880 .word 0x0112a880 + 8010980: 02932e00 .word 0x02932e00 + 8010984: 0001ec30 .word 0x0001ec30 + +08010988 <RegionCommonParseLinkAdrReq>: + 8010988: 7803 ldrb r3, [r0, #0] + 801098a: 2b03 cmp r3, #3 + 801098c: d114 bne.n 80109b8 <RegionCommonParseLinkAdrReq+0x30> + 801098e: 7843 ldrb r3, [r0, #1] + 8010990: f003 020f and.w r2, r3, #15 + 8010994: 091b lsrs r3, r3, #4 + 8010996: 708a strb r2, [r1, #2] + 8010998: 704b strb r3, [r1, #1] + 801099a: 7883 ldrb r3, [r0, #2] + 801099c: 808b strh r3, [r1, #4] + 801099e: 78c2 ldrb r2, [r0, #3] + 80109a0: ea43 2302 orr.w r3, r3, r2, lsl #8 + 80109a4: 808b strh r3, [r1, #4] + 80109a6: 7903 ldrb r3, [r0, #4] + 80109a8: f3c3 1202 ubfx r2, r3, #4, #3 + 80109ac: f003 030f and.w r3, r3, #15 + 80109b0: 70ca strb r2, [r1, #3] + 80109b2: 700b strb r3, [r1, #0] + 80109b4: 2005 movs r0, #5 + 80109b6: 4770 bx lr + 80109b8: 2000 movs r0, #0 + 80109ba: 4770 bx lr + +080109bc <RegionCommonLinkAdrReqVerifyParams>: + 80109bc: e92d 47f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} + 80109c0: 4698 mov r8, r3 + 80109c2: 7943 ldrb r3, [r0, #5] + 80109c4: 7905 ldrb r5, [r0, #4] + 80109c6: f990 6007 ldrsb.w r6, [r0, #7] + 80109ca: 4691 mov r9, r2 + 80109cc: 4604 mov r4, r0 + 80109ce: f990 2006 ldrsb.w r2, [r0, #6] + 80109d2: 468a mov sl, r1 + 80109d4: b183 cbz r3, 80109f8 <RegionCommonLinkAdrReqVerifyParams+0x3c> + 80109d6: f990 7008 ldrsb.w r7, [r0, #8] + 80109da: b375 cbz r5, 8010a3a <RegionCommonLinkAdrReqVerifyParams+0x7e> + 80109dc: 2a0f cmp r2, #15 + 80109de: d112 bne.n 8010a06 <RegionCommonLinkAdrReqVerifyParams+0x4a> + 80109e0: f994 2009 ldrsb.w r2, [r4, #9] + 80109e4: 2e0f cmp r6, #15 + 80109e6: d11e bne.n 8010a26 <RegionCommonLinkAdrReqVerifyParams+0x6a> + 80109e8: f994 600a ldrsb.w r6, [r4, #10] + 80109ec: 2d07 cmp r5, #7 + 80109ee: d124 bne.n 8010a3a <RegionCommonLinkAdrReqVerifyParams+0x7e> + 80109f0: 2f00 cmp r7, #0 + 80109f2: bf08 it eq + 80109f4: 2701 moveq r7, #1 + 80109f6: e020 b.n 8010a3a <RegionCommonLinkAdrReqVerifyParams+0x7e> + 80109f8: f990 700b ldrsb.w r7, [r0, #11] + 80109fc: f990 2009 ldrsb.w r2, [r0, #9] + 8010a00: f990 600a ldrsb.w r6, [r0, #10] + 8010a04: e7e9 b.n 80109da <RegionCommonLinkAdrReqVerifyParams+0x1e> + 8010a06: 69a3 ldr r3, [r4, #24] + 8010a08: 9301 str r3, [sp, #4] + 8010a0a: f994 3015 ldrsb.w r3, [r4, #21] + 8010a0e: 9300 str r3, [sp, #0] + 8010a10: 6921 ldr r1, [r4, #16] + 8010a12: f994 3014 ldrsb.w r3, [r4, #20] + 8010a16: 7b20 ldrb r0, [r4, #12] + 8010a18: f7ff fe28 bl 801066c <RegionCommonChanVerifyDr> + 8010a1c: 2800 cmp r0, #0 + 8010a1e: d1e1 bne.n 80109e4 <RegionCommonLinkAdrReqVerifyParams+0x28> + 8010a20: f005 05fd and.w r5, r5, #253 ; 0xfd + 8010a24: e7de b.n 80109e4 <RegionCommonLinkAdrReqVerifyParams+0x28> + 8010a26: f994 301d ldrsb.w r3, [r4, #29] + 8010a2a: 42b3 cmp r3, r6 + 8010a2c: dc0f bgt.n 8010a4e <RegionCommonLinkAdrReqVerifyParams+0x92> + 8010a2e: f994 301c ldrsb.w r3, [r4, #28] + 8010a32: 42b3 cmp r3, r6 + 8010a34: dada bge.n 80109ec <RegionCommonLinkAdrReqVerifyParams+0x30> + 8010a36: f005 05fb and.w r5, r5, #251 ; 0xfb + 8010a3a: 4628 mov r0, r5 + 8010a3c: f88a 2000 strb.w r2, [sl] + 8010a40: f889 6000 strb.w r6, [r9] + 8010a44: f888 7000 strb.w r7, [r8] + 8010a48: b002 add sp, #8 + 8010a4a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8010a4e: 461e mov r6, r3 + 8010a50: e7cc b.n 80109ec <RegionCommonLinkAdrReqVerifyParams+0x30> + ... + +08010a54 <RegionCommonComputeSymbolTimeLoRa>: + 8010a54: 4b02 ldr r3, [pc, #8] ; (8010a60 <RegionCommonComputeSymbolTimeLoRa+0xc>) + 8010a56: fa03 f000 lsl.w r0, r3, r0 + 8010a5a: fbb0 f0f1 udiv r0, r0, r1 + 8010a5e: 4770 bx lr + 8010a60: 000f4240 .word 0x000f4240 + +08010a64 <RegionCommonComputeSymbolTimeFsk>: + 8010a64: f44f 53fa mov.w r3, #8000 ; 0x1f40 + 8010a68: fbb3 f0f0 udiv r0, r3, r0 + 8010a6c: 4770 bx lr + +08010a6e <RegionCommonComputeRxWindowParameters>: + 8010a6e: b530 push {r4, r5, lr} + 8010a70: f44f 757a mov.w r5, #1000 ; 0x3e8 + 8010a74: 1f0c subs r4, r1, #4 + 8010a76: 436a muls r2, r5 + 8010a78: fb00 2204 mla r2, r0, r4, r2 + 8010a7c: 0052 lsls r2, r2, #1 + 8010a7e: bf1e ittt ne + 8010a80: f100 34ff addne.w r4, r0, #4294967295 + 8010a84: 1912 addne r2, r2, r4 + 8010a86: fbb2 f2f0 udivne r2, r2, r0 + 8010a8a: 4291 cmp r1, r2 + 8010a8c: bf38 it cc + 8010a8e: 4611 movcc r1, r2 + 8010a90: 9a03 ldr r2, [sp, #12] + 8010a92: 6011 str r1, [r2, #0] + 8010a94: 0082 lsls r2, r0, #2 + 8010a96: 4348 muls r0, r1 + 8010a98: bf1c itt ne + 8010a9a: 3001 addne r0, #1 + 8010a9c: 0840 lsrne r0, r0, #1 + 8010a9e: f44f 717a mov.w r1, #1000 ; 0x3e8 + 8010aa2: 1a12 subs r2, r2, r0 + 8010aa4: fb01 2313 mls r3, r1, r3, r2 + 8010aa8: 2b00 cmp r3, #0 + 8010aaa: bfca itet gt + 8010aac: f203 33e7 addwgt r3, r3, #999 ; 0x3e7 + 8010ab0: fb93 f1f1 sdivle r1, r3, r1 + 8010ab4: fbb3 f1f1 udivgt r1, r3, r1 + 8010ab8: 9b04 ldr r3, [sp, #16] + 8010aba: 6019 str r1, [r3, #0] + 8010abc: bd30 pop {r4, r5, pc} + +08010abe <RegionCommonComputeTxPower>: + 8010abe: b538 push {r3, r4, r5, lr} + 8010ac0: 0040 lsls r0, r0, #1 + 8010ac2: 4614 mov r4, r2 + 8010ac4: 460d mov r5, r1 + 8010ac6: f7f0 ffa5 bl 8001a14 <__aeabi_ui2f> + 8010aca: 4601 mov r1, r0 + 8010acc: 4628 mov r0, r5 + 8010ace: f7f0 feef bl 80018b0 <__aeabi_fsub> + 8010ad2: 4621 mov r1, r4 + 8010ad4: f7f0 feec bl 80018b0 <__aeabi_fsub> + 8010ad8: f7f0 fdde bl 8001698 <__aeabi_f2d> + 8010adc: f003 fcd8 bl 8014490 <floor> + 8010ae0: f7f0 feba bl 8001858 <__aeabi_d2iz> + 8010ae4: b240 sxtb r0, r0 + 8010ae6: bd38 pop {r3, r4, r5, pc} + +08010ae8 <RegionCommonCountNbOfEnabledChannels>: + 8010ae8: e92d 4ff7 stmdb sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8010aec: 9301 str r3, [sp, #4] + 8010aee: 2300 movs r3, #0 + 8010af0: 461f mov r7, r3 + 8010af2: 469c mov ip, r3 + 8010af4: 011c lsls r4, r3, #4 + 8010af6: 8a05 ldrh r5, [r0, #16] + 8010af8: fa5f fe84 uxtb.w lr, r4 + 8010afc: f004 04f0 and.w r4, r4, #240 ; 0xf0 + 8010b00: 42a5 cmp r5, r4 + 8010b02: d806 bhi.n 8010b12 <RegionCommonCountNbOfEnabledChannels+0x2a> + 8010b04: 9b01 ldr r3, [sp, #4] + 8010b06: f882 c000 strb.w ip, [r2] + 8010b0a: 701f strb r7, [r3, #0] + 8010b0c: b003 add sp, #12 + 8010b0e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8010b12: eb0e 054e add.w r5, lr, lr, lsl #1 + 8010b16: ea4f 0943 mov.w r9, r3, lsl #1 + 8010b1a: 00ad lsls r5, r5, #2 + 8010b1c: 2400 movs r4, #0 + 8010b1e: 6846 ldr r6, [r0, #4] + 8010b20: f836 6009 ldrh.w r6, [r6, r9] + 8010b24: 4126 asrs r6, r4 + 8010b26: 07f6 lsls r6, r6, #31 + 8010b28: d527 bpl.n 8010b7a <RegionCommonCountNbOfEnabledChannels+0x92> + 8010b2a: 6886 ldr r6, [r0, #8] + 8010b2c: eb06 0a05 add.w sl, r6, r5 + 8010b30: 5976 ldr r6, [r6, r5] + 8010b32: b316 cbz r6, 8010b7a <RegionCommonCountNbOfEnabledChannels+0x92> + 8010b34: 7806 ldrb r6, [r0, #0] + 8010b36: b936 cbnz r6, 8010b46 <RegionCommonCountNbOfEnabledChannels+0x5e> + 8010b38: 6946 ldr r6, [r0, #20] + 8010b3a: b126 cbz r6, 8010b46 <RegionCommonCountNbOfEnabledChannels+0x5e> + 8010b3c: f836 6009 ldrh.w r6, [r6, r9] + 8010b40: 4126 asrs r6, r4 + 8010b42: 07f6 lsls r6, r6, #31 + 8010b44: d519 bpl.n 8010b7a <RegionCommonCountNbOfEnabledChannels+0x92> + 8010b46: f89a 6008 ldrb.w r6, [sl, #8] + 8010b4a: f990 b001 ldrsb.w fp, [r0, #1] + 8010b4e: f346 0803 sbfx r8, r6, #0, #4 + 8010b52: fa4f f888 sxtb.w r8, r8 + 8010b56: 45d8 cmp r8, fp + 8010b58: dc0f bgt.n 8010b7a <RegionCommonCountNbOfEnabledChannels+0x92> + 8010b5a: f346 1603 sbfx r6, r6, #4, #4 + 8010b5e: b276 sxtb r6, r6 + 8010b60: 455e cmp r6, fp + 8010b62: db0a blt.n 8010b7a <RegionCommonCountNbOfEnabledChannels+0x92> + 8010b64: f89a 6009 ldrb.w r6, [sl, #9] + 8010b68: eb06 0846 add.w r8, r6, r6, lsl #1 + 8010b6c: 68c6 ldr r6, [r0, #12] + 8010b6e: eb06 06c8 add.w r6, r6, r8, lsl #3 + 8010b72: 7d36 ldrb r6, [r6, #20] + 8010b74: b94e cbnz r6, 8010b8a <RegionCommonCountNbOfEnabledChannels+0xa2> + 8010b76: 3701 adds r7, #1 + 8010b78: b2ff uxtb r7, r7 + 8010b7a: 3401 adds r4, #1 + 8010b7c: 2c10 cmp r4, #16 + 8010b7e: f105 050c add.w r5, r5, #12 + 8010b82: d1cc bne.n 8010b1e <RegionCommonCountNbOfEnabledChannels+0x36> + 8010b84: 3301 adds r3, #1 + 8010b86: b2db uxtb r3, r3 + 8010b88: e7b4 b.n 8010af4 <RegionCommonCountNbOfEnabledChannels+0xc> + 8010b8a: f10c 0601 add.w r6, ip, #1 + 8010b8e: eb0e 0804 add.w r8, lr, r4 + 8010b92: f801 800c strb.w r8, [r1, ip] + 8010b96: fa5f fc86 uxtb.w ip, r6 + 8010b9a: e7ee b.n 8010b7a <RegionCommonCountNbOfEnabledChannels+0x92> + +08010b9c <RegionCommonIdentifyChannels>: + 8010b9c: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 8010ba0: 4604 mov r4, r0 + 8010ba2: 6840 ldr r0, [r0, #4] + 8010ba4: e9dd 670c ldrd r6, r7, [sp, #48] ; 0x30 + 8010ba8: 461d mov r5, r3 + 8010baa: 468a mov sl, r1 + 8010bac: 4691 mov r9, r2 + 8010bae: f003 f9d7 bl 8013f60 <UTIL_TIMER_GetElapsedTime> + 8010bb2: 6823 ldr r3, [r4, #0] + 8010bb4: 1a1b subs r3, r3, r0 + 8010bb6: 603b str r3, [r7, #0] + 8010bb8: f04f 0800 mov.w r8, #0 + 8010bbc: 2301 movs r3, #1 + 8010bbe: 7033 strb r3, [r6, #0] + 8010bc0: f885 8000 strb.w r8, [r5] + 8010bc4: 6863 ldr r3, [r4, #4] + 8010bc6: b113 cbz r3, 8010bce <RegionCommonIdentifyChannels+0x32> + 8010bc8: 6823 ldr r3, [r4, #0] + 8010bca: 4283 cmp r3, r0 + 8010bcc: d824 bhi.n 8010c18 <RegionCommonIdentifyChannels+0x7c> + 8010bce: f8ca 8000 str.w r8, [sl] + 8010bd2: f8d4 c01c ldr.w ip, [r4, #28] + 8010bd6: 69a3 ldr r3, [r4, #24] + 8010bd8: f89c e000 ldrb.w lr, [ip] + 8010bdc: 9303 str r3, [sp, #12] + 8010bde: e9d4 0103 ldrd r0, r1, [r4, #12] + 8010be2: ab01 add r3, sp, #4 + 8010be4: e883 0003 stmia.w r3, {r0, r1} + 8010be8: 7d23 ldrb r3, [r4, #20] + 8010bea: 9300 str r3, [sp, #0] + 8010bec: f8dc 100c ldr.w r1, [ip, #12] + 8010bf0: 7a23 ldrb r3, [r4, #8] + 8010bf2: 7a62 ldrb r2, [r4, #9] + 8010bf4: 4670 mov r0, lr + 8010bf6: f7ff fdd9 bl 80107ac <RegionCommonUpdateBandTimeOff> + 8010bfa: 4633 mov r3, r6 + 8010bfc: 6038 str r0, [r7, #0] + 8010bfe: 462a mov r2, r5 + 8010c00: 69e0 ldr r0, [r4, #28] + 8010c02: 4649 mov r1, r9 + 8010c04: f7ff ff70 bl 8010ae8 <RegionCommonCountNbOfEnabledChannels> + 8010c08: 782b ldrb r3, [r5, #0] + 8010c0a: b12b cbz r3, 8010c18 <RegionCommonIdentifyChannels+0x7c> + 8010c0c: f8c7 8000 str.w r8, [r7] + 8010c10: 2000 movs r0, #0 + 8010c12: b004 add sp, #16 + 8010c14: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8010c18: 7833 ldrb r3, [r6, #0] + 8010c1a: 2b00 cmp r3, #0 + 8010c1c: bf14 ite ne + 8010c1e: 200b movne r0, #11 + 8010c20: 200c moveq r0, #12 + 8010c22: e7f6 b.n 8010c12 <RegionCommonIdentifyChannels+0x76> + +08010c24 <RegionCommonGetNextLowerTxDr>: + 8010c24: b537 push {r0, r1, r2, r4, r5, lr} + 8010c26: f990 2000 ldrsb.w r2, [r0] + 8010c2a: f990 5002 ldrsb.w r5, [r0, #2] + 8010c2e: 4295 cmp r5, r2 + 8010c30: 4604 mov r4, r0 + 8010c32: d00f beq.n 8010c54 <RegionCommonGetNextLowerTxDr+0x30> + 8010c34: 3a01 subs r2, #1 + 8010c36: b252 sxtb r2, r2 + 8010c38: 4295 cmp r5, r2 + 8010c3a: d00b beq.n 8010c54 <RegionCommonGetNextLowerTxDr+0x30> + 8010c3c: 68a3 ldr r3, [r4, #8] + 8010c3e: 9301 str r3, [sp, #4] + 8010c40: f994 3001 ldrsb.w r3, [r4, #1] + 8010c44: 9300 str r3, [sp, #0] + 8010c46: 6861 ldr r1, [r4, #4] + 8010c48: 78e0 ldrb r0, [r4, #3] + 8010c4a: 462b mov r3, r5 + 8010c4c: f7ff fd0e bl 801066c <RegionCommonChanVerifyDr> + 8010c50: 2800 cmp r0, #0 + 8010c52: d0ef beq.n 8010c34 <RegionCommonGetNextLowerTxDr+0x10> + 8010c54: 4610 mov r0, r2 + 8010c56: b003 add sp, #12 + 8010c58: bd30 pop {r4, r5, pc} + +08010c5a <RegionCommonLimitTxPower>: + 8010c5a: 4288 cmp r0, r1 + 8010c5c: bfb8 it lt + 8010c5e: 4608 movlt r0, r1 + 8010c60: 4770 bx lr + ... + +08010c64 <RegionCommonGetBandwidth>: + 8010c64: f851 0020 ldr.w r0, [r1, r0, lsl #2] + 8010c68: 4b05 ldr r3, [pc, #20] ; (8010c80 <RegionCommonGetBandwidth+0x1c>) + 8010c6a: 4298 cmp r0, r3 + 8010c6c: d005 beq.n 8010c7a <RegionCommonGetBandwidth+0x16> + 8010c6e: 4b05 ldr r3, [pc, #20] ; (8010c84 <RegionCommonGetBandwidth+0x20>) + 8010c70: 1ac3 subs r3, r0, r3 + 8010c72: 4258 negs r0, r3 + 8010c74: 4158 adcs r0, r3 + 8010c76: 0040 lsls r0, r0, #1 + 8010c78: 4770 bx lr + 8010c7a: 2001 movs r0, #1 + 8010c7c: 4770 bx lr + 8010c7e: bf00 nop + 8010c80: 0003d090 .word 0x0003d090 + 8010c84: 0007a120 .word 0x0007a120 + +08010c88 <RegionCommonRxConfigPrint>: + 8010c88: 2805 cmp r0, #5 + 8010c8a: b51f push {r0, r1, r2, r3, r4, lr} + 8010c8c: d80e bhi.n 8010cac <RegionCommonRxConfigPrint+0x24> + 8010c8e: 4b0c ldr r3, [pc, #48] ; (8010cc0 <RegionCommonRxConfigPrint+0x38>) + 8010c90: f853 3020 ldr.w r3, [r3, r0, lsl #2] + 8010c94: 9300 str r3, [sp, #0] + 8010c96: e9cd 1201 strd r1, r2, [sp, #4] + 8010c9a: 4b0a ldr r3, [pc, #40] ; (8010cc4 <RegionCommonRxConfigPrint+0x3c>) + 8010c9c: 2201 movs r2, #1 + 8010c9e: 2100 movs r1, #0 + 8010ca0: 2002 movs r0, #2 + 8010ca2: f002 fe69 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8010ca6: b005 add sp, #20 + 8010ca8: f85d fb04 ldr.w pc, [sp], #4 + 8010cac: e9cd 1200 strd r1, r2, [sp] + 8010cb0: 4b05 ldr r3, [pc, #20] ; (8010cc8 <RegionCommonRxConfigPrint+0x40>) + 8010cb2: 2201 movs r2, #1 + 8010cb4: 2100 movs r1, #0 + 8010cb6: 2002 movs r0, #2 + 8010cb8: f002 fe5e bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8010cbc: e7f3 b.n 8010ca6 <RegionCommonRxConfigPrint+0x1e> + 8010cbe: bf00 nop + 8010cc0: 08015408 .word 0x08015408 + 8010cc4: 0801539f .word 0x0801539f + 8010cc8: 080153be .word 0x080153be + +08010ccc <RegionCommonTxConfigPrint>: + 8010ccc: b507 push {r0, r1, r2, lr} + 8010cce: 4b05 ldr r3, [pc, #20] ; (8010ce4 <RegionCommonTxConfigPrint+0x18>) + 8010cd0: e9cd 0100 strd r0, r1, [sp] + 8010cd4: 2201 movs r2, #1 + 8010cd6: 2100 movs r1, #0 + 8010cd8: 2002 movs r0, #2 + 8010cda: f002 fe4d bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8010cde: b003 add sp, #12 + 8010ce0: f85d fb04 ldr.w pc, [sp], #4 + 8010ce4: 080153da .word 0x080153da + +08010ce8 <AES_CMAC_Init>: + 8010ce8: b510 push {r4, lr} + 8010cea: 2210 movs r2, #16 + 8010cec: 4604 mov r4, r0 + 8010cee: 2100 movs r1, #0 + 8010cf0: 30f1 adds r0, #241 ; 0xf1 + 8010cf2: f000 fe5f bl 80119b4 <memset1> + 8010cf6: 2100 movs r1, #0 + 8010cf8: f8c4 1114 str.w r1, [r4, #276] ; 0x114 + 8010cfc: 4620 mov r0, r4 + 8010cfe: 22f0 movs r2, #240 ; 0xf0 + 8010d00: e8bd 4010 ldmia.w sp!, {r4, lr} + 8010d04: f000 be56 b.w 80119b4 <memset1> + +08010d08 <AES_CMAC_SetKey>: + 8010d08: 4602 mov r2, r0 + 8010d0a: 4608 mov r0, r1 + 8010d0c: 2110 movs r1, #16 + 8010d0e: f000 b9a5 b.w 801105c <lorawan_aes_set_key> + +08010d12 <AES_CMAC_Update>: + 8010d12: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8010d16: 4604 mov r4, r0 + 8010d18: f8d0 0114 ldr.w r0, [r0, #276] ; 0x114 + 8010d1c: b085 sub sp, #20 + 8010d1e: 460e mov r6, r1 + 8010d20: 4615 mov r5, r2 + 8010d22: f204 1901 addw r9, r4, #257 ; 0x101 + 8010d26: b388 cbz r0, 8010d8c <AES_CMAC_Update+0x7a> + 8010d28: f1c0 0810 rsb r8, r0, #16 + 8010d2c: 4590 cmp r8, r2 + 8010d2e: 4647 mov r7, r8 + 8010d30: bf28 it cs + 8010d32: 4617 movcs r7, r2 + 8010d34: b2ba uxth r2, r7 + 8010d36: 4448 add r0, r9 + 8010d38: f000 fe28 bl 801198c <memcpy1> + 8010d3c: f8d4 3114 ldr.w r3, [r4, #276] ; 0x114 + 8010d40: 443b add r3, r7 + 8010d42: 2b0f cmp r3, #15 + 8010d44: f8c4 3114 str.w r3, [r4, #276] ; 0x114 + 8010d48: d92d bls.n 8010da6 <AES_CMAC_Update+0x94> + 8010d4a: 45a8 cmp r8, r5 + 8010d4c: d22b bcs.n 8010da6 <AES_CMAC_Update+0x94> + 8010d4e: f104 03f0 add.w r3, r4, #240 ; 0xf0 + 8010d52: f504 7180 add.w r1, r4, #256 ; 0x100 + 8010d56: f813 2f01 ldrb.w r2, [r3, #1]! + 8010d5a: 7c18 ldrb r0, [r3, #16] + 8010d5c: 428b cmp r3, r1 + 8010d5e: ea82 0200 eor.w r2, r2, r0 + 8010d62: 701a strb r2, [r3, #0] + 8010d64: d1f7 bne.n 8010d56 <AES_CMAC_Update+0x44> + 8010d66: f104 08f1 add.w r8, r4, #241 ; 0xf1 + 8010d6a: 2210 movs r2, #16 + 8010d6c: 4641 mov r1, r8 + 8010d6e: 4668 mov r0, sp + 8010d70: f000 fe0c bl 801198c <memcpy1> + 8010d74: 4622 mov r2, r4 + 8010d76: 4669 mov r1, sp + 8010d78: 4668 mov r0, sp + 8010d7a: f000 f9e9 bl 8011150 <lorawan_aes_encrypt> + 8010d7e: 2210 movs r2, #16 + 8010d80: 4669 mov r1, sp + 8010d82: 4640 mov r0, r8 + 8010d84: f000 fe02 bl 801198c <memcpy1> + 8010d88: 443e add r6, r7 + 8010d8a: 1bed subs r5, r5, r7 + 8010d8c: f504 7880 add.w r8, r4, #256 ; 0x100 + 8010d90: f104 07f1 add.w r7, r4, #241 ; 0xf1 + 8010d94: 2d10 cmp r5, #16 + 8010d96: d809 bhi.n 8010dac <AES_CMAC_Update+0x9a> + 8010d98: b2aa uxth r2, r5 + 8010d9a: 4631 mov r1, r6 + 8010d9c: 4648 mov r0, r9 + 8010d9e: f000 fdf5 bl 801198c <memcpy1> + 8010da2: f8c4 5114 str.w r5, [r4, #276] ; 0x114 + 8010da6: b005 add sp, #20 + 8010da8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8010dac: f104 03f0 add.w r3, r4, #240 ; 0xf0 + 8010db0: 1e71 subs r1, r6, #1 + 8010db2: f813 2f01 ldrb.w r2, [r3, #1]! + 8010db6: f811 0f01 ldrb.w r0, [r1, #1]! + 8010dba: 4543 cmp r3, r8 + 8010dbc: ea82 0200 eor.w r2, r2, r0 + 8010dc0: 701a strb r2, [r3, #0] + 8010dc2: d1f6 bne.n 8010db2 <AES_CMAC_Update+0xa0> + 8010dc4: 2210 movs r2, #16 + 8010dc6: 4639 mov r1, r7 + 8010dc8: 4668 mov r0, sp + 8010dca: f000 fddf bl 801198c <memcpy1> + 8010dce: 4622 mov r2, r4 + 8010dd0: 4669 mov r1, sp + 8010dd2: 4668 mov r0, sp + 8010dd4: f000 f9bc bl 8011150 <lorawan_aes_encrypt> + 8010dd8: 2210 movs r2, #16 + 8010dda: 4669 mov r1, sp + 8010ddc: 4638 mov r0, r7 + 8010dde: f000 fdd5 bl 801198c <memcpy1> + 8010de2: 3610 adds r6, #16 + 8010de4: 3d10 subs r5, #16 + 8010de6: e7d5 b.n 8010d94 <AES_CMAC_Update+0x82> + +08010de8 <AES_CMAC_Final>: + 8010de8: b5f0 push {r4, r5, r6, r7, lr} + 8010dea: b089 sub sp, #36 ; 0x24 + 8010dec: 460c mov r4, r1 + 8010dee: 2210 movs r2, #16 + 8010df0: 2100 movs r1, #0 + 8010df2: 4605 mov r5, r0 + 8010df4: 4668 mov r0, sp + 8010df6: f000 fddd bl 80119b4 <memset1> + 8010dfa: 4622 mov r2, r4 + 8010dfc: 4669 mov r1, sp + 8010dfe: 4668 mov r0, sp + 8010e00: f000 f9a6 bl 8011150 <lorawan_aes_encrypt> + 8010e04: f99d 3000 ldrsb.w r3, [sp] + 8010e08: 2b00 cmp r3, #0 + 8010e0a: 466a mov r2, sp + 8010e0c: f04f 0100 mov.w r1, #0 + 8010e10: da43 bge.n 8010e9a <AES_CMAC_Final+0xb2> + 8010e12: 7813 ldrb r3, [r2, #0] + 8010e14: f812 0f01 ldrb.w r0, [r2, #1]! + 8010e18: 3101 adds r1, #1 + 8010e1a: 005b lsls r3, r3, #1 + 8010e1c: ea43 13d0 orr.w r3, r3, r0, lsr #7 + 8010e20: 290f cmp r1, #15 + 8010e22: f802 3c01 strb.w r3, [r2, #-1] + 8010e26: d1f4 bne.n 8010e12 <AES_CMAC_Final+0x2a> + 8010e28: f89d 300f ldrb.w r3, [sp, #15] + 8010e2c: 005b lsls r3, r3, #1 + 8010e2e: f083 0387 eor.w r3, r3, #135 ; 0x87 + 8010e32: f8d4 0114 ldr.w r0, [r4, #276] ; 0x114 + 8010e36: b2db uxtb r3, r3 + 8010e38: 2810 cmp r0, #16 + 8010e3a: f88d 300f strb.w r3, [sp, #15] + 8010e3e: d13b bne.n 8010eb8 <AES_CMAC_Final+0xd0> + 8010e40: f504 7380 add.w r3, r4, #256 ; 0x100 + 8010e44: 4669 mov r1, sp + 8010e46: f504 7088 add.w r0, r4, #272 ; 0x110 + 8010e4a: f813 6f01 ldrb.w r6, [r3, #1]! + 8010e4e: f811 2b01 ldrb.w r2, [r1], #1 + 8010e52: 4298 cmp r0, r3 + 8010e54: ea82 0206 eor.w r2, r2, r6 + 8010e58: 701a strb r2, [r3, #0] + 8010e5a: d1f6 bne.n 8010e4a <AES_CMAC_Final+0x62> + 8010e5c: f104 03f0 add.w r3, r4, #240 ; 0xf0 + 8010e60: f504 7180 add.w r1, r4, #256 ; 0x100 + 8010e64: f813 2f01 ldrb.w r2, [r3, #1]! + 8010e68: 7c18 ldrb r0, [r3, #16] + 8010e6a: 428b cmp r3, r1 + 8010e6c: ea82 0200 eor.w r2, r2, r0 + 8010e70: 701a strb r2, [r3, #0] + 8010e72: d1f7 bne.n 8010e64 <AES_CMAC_Final+0x7c> + 8010e74: 2210 movs r2, #16 + 8010e76: eb0d 0002 add.w r0, sp, r2 + 8010e7a: f104 01f1 add.w r1, r4, #241 ; 0xf1 + 8010e7e: f000 fd85 bl 801198c <memcpy1> + 8010e82: 4622 mov r2, r4 + 8010e84: 4629 mov r1, r5 + 8010e86: a804 add r0, sp, #16 + 8010e88: f000 f962 bl 8011150 <lorawan_aes_encrypt> + 8010e8c: 2210 movs r2, #16 + 8010e8e: 2100 movs r1, #0 + 8010e90: 4668 mov r0, sp + 8010e92: f000 fd8f bl 80119b4 <memset1> + 8010e96: b009 add sp, #36 ; 0x24 + 8010e98: bdf0 pop {r4, r5, r6, r7, pc} + 8010e9a: 7813 ldrb r3, [r2, #0] + 8010e9c: f812 0f01 ldrb.w r0, [r2, #1]! + 8010ea0: 3101 adds r1, #1 + 8010ea2: 005b lsls r3, r3, #1 + 8010ea4: ea43 13d0 orr.w r3, r3, r0, lsr #7 + 8010ea8: 290f cmp r1, #15 + 8010eaa: f802 3c01 strb.w r3, [r2, #-1] + 8010eae: d1f4 bne.n 8010e9a <AES_CMAC_Final+0xb2> + 8010eb0: f89d 300f ldrb.w r3, [sp, #15] + 8010eb4: 005b lsls r3, r3, #1 + 8010eb6: e7bc b.n 8010e32 <AES_CMAC_Final+0x4a> + 8010eb8: f99d 3000 ldrsb.w r3, [sp] + 8010ebc: 2b00 cmp r3, #0 + 8010ebe: 466a mov r2, sp + 8010ec0: f04f 0100 mov.w r1, #0 + 8010ec4: da37 bge.n 8010f36 <AES_CMAC_Final+0x14e> + 8010ec6: 7813 ldrb r3, [r2, #0] + 8010ec8: f812 6f01 ldrb.w r6, [r2, #1]! + 8010ecc: 3101 adds r1, #1 + 8010ece: 005b lsls r3, r3, #1 + 8010ed0: ea43 13d6 orr.w r3, r3, r6, lsr #7 + 8010ed4: 290f cmp r1, #15 + 8010ed6: f802 3c01 strb.w r3, [r2, #-1] + 8010eda: d1f4 bne.n 8010ec6 <AES_CMAC_Final+0xde> + 8010edc: f89d 300f ldrb.w r3, [sp, #15] + 8010ee0: 005b lsls r3, r3, #1 + 8010ee2: f083 0387 eor.w r3, r3, #135 ; 0x87 + 8010ee6: 1c47 adds r7, r0, #1 + 8010ee8: b2db uxtb r3, r3 + 8010eea: f88d 300f strb.w r3, [sp, #15] + 8010eee: 2f10 cmp r7, #16 + 8010ef0: eb04 0300 add.w r3, r4, r0 + 8010ef4: f1c0 060f rsb r6, r0, #15 + 8010ef8: f04f 0280 mov.w r2, #128 ; 0x80 + 8010efc: bf88 it hi + 8010efe: 2600 movhi r6, #0 + 8010f00: f500 7081 add.w r0, r0, #258 ; 0x102 + 8010f04: f883 2101 strb.w r2, [r3, #257] ; 0x101 + 8010f08: 2100 movs r1, #0 + 8010f0a: 4632 mov r2, r6 + 8010f0c: 4420 add r0, r4 + 8010f0e: 443e add r6, r7 + 8010f10: f003 fa72 bl 80143f8 <memset> + 8010f14: f8c4 6114 str.w r6, [r4, #276] ; 0x114 + 8010f18: f504 7380 add.w r3, r4, #256 ; 0x100 + 8010f1c: 4669 mov r1, sp + 8010f1e: f504 7088 add.w r0, r4, #272 ; 0x110 + 8010f22: f813 6f01 ldrb.w r6, [r3, #1]! + 8010f26: f811 2b01 ldrb.w r2, [r1], #1 + 8010f2a: 4298 cmp r0, r3 + 8010f2c: ea82 0206 eor.w r2, r2, r6 + 8010f30: 701a strb r2, [r3, #0] + 8010f32: d1f6 bne.n 8010f22 <AES_CMAC_Final+0x13a> + 8010f34: e792 b.n 8010e5c <AES_CMAC_Final+0x74> + 8010f36: 7813 ldrb r3, [r2, #0] + 8010f38: f812 6f01 ldrb.w r6, [r2, #1]! + 8010f3c: 3101 adds r1, #1 + 8010f3e: 005b lsls r3, r3, #1 + 8010f40: ea43 13d6 orr.w r3, r3, r6, lsr #7 + 8010f44: 290f cmp r1, #15 + 8010f46: f802 3c01 strb.w r3, [r2, #-1] + 8010f4a: d1f4 bne.n 8010f36 <AES_CMAC_Final+0x14e> + 8010f4c: f89d 300f ldrb.w r3, [sp, #15] + 8010f50: 005b lsls r3, r3, #1 + 8010f52: e7c8 b.n 8010ee6 <AES_CMAC_Final+0xfe> + +08010f54 <xor_block>: + 8010f54: 780a ldrb r2, [r1, #0] + 8010f56: 7803 ldrb r3, [r0, #0] + 8010f58: 4053 eors r3, r2 + 8010f5a: 7003 strb r3, [r0, #0] + 8010f5c: 784a ldrb r2, [r1, #1] + 8010f5e: 7843 ldrb r3, [r0, #1] + 8010f60: 4053 eors r3, r2 + 8010f62: 7043 strb r3, [r0, #1] + 8010f64: 788a ldrb r2, [r1, #2] + 8010f66: 7883 ldrb r3, [r0, #2] + 8010f68: 4053 eors r3, r2 + 8010f6a: 7083 strb r3, [r0, #2] + 8010f6c: 78ca ldrb r2, [r1, #3] + 8010f6e: 78c3 ldrb r3, [r0, #3] + 8010f70: 4053 eors r3, r2 + 8010f72: 70c3 strb r3, [r0, #3] + 8010f74: 790a ldrb r2, [r1, #4] + 8010f76: 7903 ldrb r3, [r0, #4] + 8010f78: 4053 eors r3, r2 + 8010f7a: 7103 strb r3, [r0, #4] + 8010f7c: 794a ldrb r2, [r1, #5] + 8010f7e: 7943 ldrb r3, [r0, #5] + 8010f80: 4053 eors r3, r2 + 8010f82: 7143 strb r3, [r0, #5] + 8010f84: 798a ldrb r2, [r1, #6] + 8010f86: 7983 ldrb r3, [r0, #6] + 8010f88: 4053 eors r3, r2 + 8010f8a: 7183 strb r3, [r0, #6] + 8010f8c: 79ca ldrb r2, [r1, #7] + 8010f8e: 79c3 ldrb r3, [r0, #7] + 8010f90: 4053 eors r3, r2 + 8010f92: 71c3 strb r3, [r0, #7] + 8010f94: 7a0a ldrb r2, [r1, #8] + 8010f96: 7a03 ldrb r3, [r0, #8] + 8010f98: 4053 eors r3, r2 + 8010f9a: 7203 strb r3, [r0, #8] + 8010f9c: 7a4a ldrb r2, [r1, #9] + 8010f9e: 7a43 ldrb r3, [r0, #9] + 8010fa0: 4053 eors r3, r2 + 8010fa2: 7243 strb r3, [r0, #9] + 8010fa4: 7a8a ldrb r2, [r1, #10] + 8010fa6: 7a83 ldrb r3, [r0, #10] + 8010fa8: 4053 eors r3, r2 + 8010faa: 7283 strb r3, [r0, #10] + 8010fac: 7aca ldrb r2, [r1, #11] + 8010fae: 7ac3 ldrb r3, [r0, #11] + 8010fb0: 4053 eors r3, r2 + 8010fb2: 72c3 strb r3, [r0, #11] + 8010fb4: 7b0a ldrb r2, [r1, #12] + 8010fb6: 7b03 ldrb r3, [r0, #12] + 8010fb8: 4053 eors r3, r2 + 8010fba: 7303 strb r3, [r0, #12] + 8010fbc: 7b4a ldrb r2, [r1, #13] + 8010fbe: 7b43 ldrb r3, [r0, #13] + 8010fc0: 4053 eors r3, r2 + 8010fc2: 7343 strb r3, [r0, #13] + 8010fc4: 7b8a ldrb r2, [r1, #14] + 8010fc6: 7b83 ldrb r3, [r0, #14] + 8010fc8: 4053 eors r3, r2 + 8010fca: 7383 strb r3, [r0, #14] + 8010fcc: 7bca ldrb r2, [r1, #15] + 8010fce: 7bc3 ldrb r3, [r0, #15] + 8010fd0: 4053 eors r3, r2 + 8010fd2: 73c3 strb r3, [r0, #15] + 8010fd4: 4770 bx lr + +08010fd6 <copy_and_key>: + 8010fd6: b510 push {r4, lr} + 8010fd8: 780b ldrb r3, [r1, #0] + 8010fda: 7814 ldrb r4, [r2, #0] + 8010fdc: 4063 eors r3, r4 + 8010fde: 7003 strb r3, [r0, #0] + 8010fe0: 7854 ldrb r4, [r2, #1] + 8010fe2: 784b ldrb r3, [r1, #1] + 8010fe4: 4063 eors r3, r4 + 8010fe6: 7043 strb r3, [r0, #1] + 8010fe8: 7894 ldrb r4, [r2, #2] + 8010fea: 788b ldrb r3, [r1, #2] + 8010fec: 4063 eors r3, r4 + 8010fee: 7083 strb r3, [r0, #2] + 8010ff0: 78d4 ldrb r4, [r2, #3] + 8010ff2: 78cb ldrb r3, [r1, #3] + 8010ff4: 4063 eors r3, r4 + 8010ff6: 70c3 strb r3, [r0, #3] + 8010ff8: 7914 ldrb r4, [r2, #4] + 8010ffa: 790b ldrb r3, [r1, #4] + 8010ffc: 4063 eors r3, r4 + 8010ffe: 7103 strb r3, [r0, #4] + 8011000: 7954 ldrb r4, [r2, #5] + 8011002: 794b ldrb r3, [r1, #5] + 8011004: 4063 eors r3, r4 + 8011006: 7143 strb r3, [r0, #5] + 8011008: 7994 ldrb r4, [r2, #6] + 801100a: 798b ldrb r3, [r1, #6] + 801100c: 4063 eors r3, r4 + 801100e: 7183 strb r3, [r0, #6] + 8011010: 79d4 ldrb r4, [r2, #7] + 8011012: 79cb ldrb r3, [r1, #7] + 8011014: 4063 eors r3, r4 + 8011016: 71c3 strb r3, [r0, #7] + 8011018: 7a14 ldrb r4, [r2, #8] + 801101a: 7a0b ldrb r3, [r1, #8] + 801101c: 4063 eors r3, r4 + 801101e: 7203 strb r3, [r0, #8] + 8011020: 7a54 ldrb r4, [r2, #9] + 8011022: 7a4b ldrb r3, [r1, #9] + 8011024: 4063 eors r3, r4 + 8011026: 7243 strb r3, [r0, #9] + 8011028: 7a8b ldrb r3, [r1, #10] + 801102a: 7a94 ldrb r4, [r2, #10] + 801102c: 4063 eors r3, r4 + 801102e: 7283 strb r3, [r0, #10] + 8011030: 7ad4 ldrb r4, [r2, #11] + 8011032: 7acb ldrb r3, [r1, #11] + 8011034: 4063 eors r3, r4 + 8011036: 72c3 strb r3, [r0, #11] + 8011038: 7b14 ldrb r4, [r2, #12] + 801103a: 7b0b ldrb r3, [r1, #12] + 801103c: 4063 eors r3, r4 + 801103e: 7303 strb r3, [r0, #12] + 8011040: 7b54 ldrb r4, [r2, #13] + 8011042: 7b4b ldrb r3, [r1, #13] + 8011044: 4063 eors r3, r4 + 8011046: 7343 strb r3, [r0, #13] + 8011048: 7b94 ldrb r4, [r2, #14] + 801104a: 7b8b ldrb r3, [r1, #14] + 801104c: 4063 eors r3, r4 + 801104e: 7383 strb r3, [r0, #14] + 8011050: 7bcb ldrb r3, [r1, #15] + 8011052: 7bd2 ldrb r2, [r2, #15] + 8011054: 4053 eors r3, r2 + 8011056: 73c3 strb r3, [r0, #15] + 8011058: bd10 pop {r4, pc} + ... + +0801105c <lorawan_aes_set_key>: + 801105c: f1a1 0310 sub.w r3, r1, #16 + 8011060: b2db uxtb r3, r3 + 8011062: 2b10 cmp r3, #16 + 8011064: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8011068: d804 bhi.n 8011074 <lorawan_aes_set_key+0x18> + 801106a: 4c37 ldr r4, [pc, #220] ; (8011148 <lorawan_aes_set_key+0xec>) + 801106c: fa24 f303 lsr.w r3, r4, r3 + 8011070: 07db lsls r3, r3, #31 + 8011072: d405 bmi.n 8011080 <lorawan_aes_set_key+0x24> + 8011074: 2300 movs r3, #0 + 8011076: f882 30f0 strb.w r3, [r2, #240] ; 0xf0 + 801107a: 20ff movs r0, #255 ; 0xff + 801107c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8011080: 1e53 subs r3, r2, #1 + 8011082: 1844 adds r4, r0, r1 + 8011084: 42a0 cmp r0, r4 + 8011086: d14e bne.n 8011126 <lorawan_aes_set_key+0xca> + 8011088: f101 031c add.w r3, r1, #28 + 801108c: 009b lsls r3, r3, #2 + 801108e: fa5f f983 uxtb.w r9, r3 + 8011092: f3c3 1303 ubfx r3, r3, #4, #4 + 8011096: 3b01 subs r3, #1 + 8011098: 4d2c ldr r5, [pc, #176] ; (801114c <lorawan_aes_set_key+0xf0>) + 801109a: f882 30f0 strb.w r3, [r2, #240] ; 0xf0 + 801109e: 2401 movs r4, #1 + 80110a0: 460b mov r3, r1 + 80110a2: 18d6 adds r6, r2, r3 + 80110a4: fbb3 f0f1 udiv r0, r3, r1 + 80110a8: fb01 3010 mls r0, r1, r0, r3 + 80110ac: f010 00ff ands.w r0, r0, #255 ; 0xff + 80110b0: f816 ac04 ldrb.w sl, [r6, #-4] + 80110b4: f816 ec03 ldrb.w lr, [r6, #-3] + 80110b8: f816 cc02 ldrb.w ip, [r6, #-2] + 80110bc: f816 7c01 ldrb.w r7, [r6, #-1] + 80110c0: d136 bne.n 8011130 <lorawan_aes_set_key+0xd4> + 80110c2: f815 800e ldrb.w r8, [r5, lr] + 80110c6: f815 e00c ldrb.w lr, [r5, ip] + 80110ca: f815 c007 ldrb.w ip, [r5, r7] + 80110ce: f815 700a ldrb.w r7, [r5, sl] + 80110d2: 09e0 lsrs r0, r4, #7 + 80110d4: eb00 0040 add.w r0, r0, r0, lsl #1 + 80110d8: ea84 0808 eor.w r8, r4, r8 + 80110dc: eb00 00c0 add.w r0, r0, r0, lsl #3 + 80110e0: 0064 lsls r4, r4, #1 + 80110e2: b2c0 uxtb r0, r0 + 80110e4: b2e4 uxtb r4, r4 + 80110e6: 4044 eors r4, r0 + 80110e8: 46c2 mov sl, r8 + 80110ea: 1a58 subs r0, r3, r1 + 80110ec: b2c0 uxtb r0, r0 + 80110ee: f812 8000 ldrb.w r8, [r2, r0] + 80110f2: ea8a 0a08 eor.w sl, sl, r8 + 80110f6: f802 a003 strb.w sl, [r2, r3] + 80110fa: 4410 add r0, r2 + 80110fc: 3304 adds r3, #4 + 80110fe: f890 8001 ldrb.w r8, [r0, #1] + 8011102: ea8e 0e08 eor.w lr, lr, r8 + 8011106: f886 e001 strb.w lr, [r6, #1] + 801110a: f890 e002 ldrb.w lr, [r0, #2] + 801110e: ea8c 0c0e eor.w ip, ip, lr + 8011112: f886 c002 strb.w ip, [r6, #2] + 8011116: 78c0 ldrb r0, [r0, #3] + 8011118: b2db uxtb r3, r3 + 801111a: 4047 eors r7, r0 + 801111c: 4599 cmp r9, r3 + 801111e: 70f7 strb r7, [r6, #3] + 8011120: d8bf bhi.n 80110a2 <lorawan_aes_set_key+0x46> + 8011122: 2000 movs r0, #0 + 8011124: e7aa b.n 801107c <lorawan_aes_set_key+0x20> + 8011126: f810 5b01 ldrb.w r5, [r0], #1 + 801112a: f803 5f01 strb.w r5, [r3, #1]! + 801112e: e7a9 b.n 8011084 <lorawan_aes_set_key+0x28> + 8011130: 2918 cmp r1, #24 + 8011132: d9da bls.n 80110ea <lorawan_aes_set_key+0x8e> + 8011134: 2810 cmp r0, #16 + 8011136: bf01 itttt eq + 8011138: f815 a00a ldrbeq.w sl, [r5, sl] + 801113c: f815 e00e ldrbeq.w lr, [r5, lr] + 8011140: f815 c00c ldrbeq.w ip, [r5, ip] + 8011144: 5def ldrbeq r7, [r5, r7] + 8011146: e7d0 b.n 80110ea <lorawan_aes_set_key+0x8e> + 8011148: 00010101 .word 0x00010101 + 801114c: 08015620 .word 0x08015620 + +08011150 <lorawan_aes_encrypt>: + 8011150: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8011154: b0a3 sub sp, #140 ; 0x8c + 8011156: f892 30f0 ldrb.w r3, [r2, #240] ; 0xf0 + 801115a: 911d str r1, [sp, #116] ; 0x74 + 801115c: 921b str r2, [sp, #108] ; 0x6c + 801115e: 9301 str r3, [sp, #4] + 8011160: 2b00 cmp r3, #0 + 8011162: f000 8153 beq.w 801140c <lorawan_aes_encrypt+0x2bc> + 8011166: 4601 mov r1, r0 + 8011168: a81e add r0, sp, #120 ; 0x78 + 801116a: f7ff ff34 bl 8010fd6 <copy_and_key> + 801116e: 9b1b ldr r3, [sp, #108] ; 0x6c + 8011170: 4ca7 ldr r4, [pc, #668] ; (8011410 <lorawan_aes_encrypt+0x2c0>) + 8011172: 4da8 ldr r5, [pc, #672] ; (8011414 <lorawan_aes_encrypt+0x2c4>) + 8011174: 4ea8 ldr r6, [pc, #672] ; (8011418 <lorawan_aes_encrypt+0x2c8>) + 8011176: 3310 adds r3, #16 + 8011178: 9302 str r3, [sp, #8] + 801117a: 2300 movs r3, #0 + 801117c: 9303 str r3, [sp, #12] + 801117e: f89d 007c ldrb.w r0, [sp, #124] ; 0x7c + 8011182: 9004 str r0, [sp, #16] + 8011184: f89d 0086 ldrb.w r0, [sp, #134] ; 0x86 + 8011188: 9005 str r0, [sp, #20] + 801118a: 5c20 ldrb r0, [r4, r0] + 801118c: 9006 str r0, [sp, #24] + 801118e: f89d 007b ldrb.w r0, [sp, #123] ; 0x7b + 8011192: 9007 str r0, [sp, #28] + 8011194: 5c20 ldrb r0, [r4, r0] + 8011196: 9008 str r0, [sp, #32] + 8011198: 9804 ldr r0, [sp, #16] + 801119a: f89d c081 ldrb.w ip, [sp, #129] ; 0x81 + 801119e: 5c20 ldrb r0, [r4, r0] + 80111a0: 9009 str r0, [sp, #36] ; 0x24 + 80111a2: f814 000c ldrb.w r0, [r4, ip] + 80111a6: 900a str r0, [sp, #40] ; 0x28 + 80111a8: f89d 0080 ldrb.w r0, [sp, #128] ; 0x80 + 80111ac: 900b str r0, [sp, #44] ; 0x2c + 80111ae: f89d 0085 ldrb.w r0, [sp, #133] ; 0x85 + 80111b2: f89d 8078 ldrb.w r8, [sp, #120] ; 0x78 + 80111b6: f89d e07d ldrb.w lr, [sp, #125] ; 0x7d + 80111ba: f89d a082 ldrb.w sl, [sp, #130] ; 0x82 + 80111be: f89d 9087 ldrb.w r9, [sp, #135] ; 0x87 + 80111c2: 900c str r0, [sp, #48] ; 0x30 + 80111c4: f89d 007a ldrb.w r0, [sp, #122] ; 0x7a + 80111c8: 9b02 ldr r3, [sp, #8] + 80111ca: 931c str r3, [sp, #112] ; 0x70 + 80111cc: f814 200a ldrb.w r2, [r4, sl] + 80111d0: f814 3009 ldrb.w r3, [r4, r9] + 80111d4: f814 1008 ldrb.w r1, [r4, r8] + 80111d8: f814 700e ldrb.w r7, [r4, lr] + 80111dc: 900d str r0, [sp, #52] ; 0x34 + 80111de: 5c20 ldrb r0, [r4, r0] + 80111e0: 900e str r0, [sp, #56] ; 0x38 + 80111e2: f89d 007f ldrb.w r0, [sp, #127] ; 0x7f + 80111e6: 900f str r0, [sp, #60] ; 0x3c + 80111e8: 5c20 ldrb r0, [r4, r0] + 80111ea: 9010 str r0, [sp, #64] ; 0x40 + 80111ec: 980b ldr r0, [sp, #44] ; 0x2c + 80111ee: 5c20 ldrb r0, [r4, r0] + 80111f0: 9011 str r0, [sp, #68] ; 0x44 + 80111f2: 980c ldr r0, [sp, #48] ; 0x30 + 80111f4: 5c20 ldrb r0, [r4, r0] + 80111f6: 9012 str r0, [sp, #72] ; 0x48 + 80111f8: f89d 0084 ldrb.w r0, [sp, #132] ; 0x84 + 80111fc: 9013 str r0, [sp, #76] ; 0x4c + 80111fe: f89d 0079 ldrb.w r0, [sp, #121] ; 0x79 + 8011202: 9014 str r0, [sp, #80] ; 0x50 + 8011204: f89d 007e ldrb.w r0, [sp, #126] ; 0x7e + 8011208: 9015 str r0, [sp, #84] ; 0x54 + 801120a: 5c20 ldrb r0, [r4, r0] + 801120c: 9016 str r0, [sp, #88] ; 0x58 + 801120e: f89d 0083 ldrb.w r0, [sp, #131] ; 0x83 + 8011212: 9017 str r0, [sp, #92] ; 0x5c + 8011214: 5c20 ldrb r0, [r4, r0] + 8011216: 9018 str r0, [sp, #96] ; 0x60 + 8011218: 9813 ldr r0, [sp, #76] ; 0x4c + 801121a: 5c20 ldrb r0, [r4, r0] + 801121c: 9019 str r0, [sp, #100] ; 0x64 + 801121e: 9814 ldr r0, [sp, #80] ; 0x50 + 8011220: 5c20 ldrb r0, [r4, r0] + 8011222: 901a str r0, [sp, #104] ; 0x68 + 8011224: 9803 ldr r0, [sp, #12] + 8011226: 3001 adds r0, #1 + 8011228: 9003 str r0, [sp, #12] + 801122a: 9802 ldr r0, [sp, #8] + 801122c: f8dd b004 ldr.w fp, [sp, #4] + 8011230: 3010 adds r0, #16 + 8011232: 9002 str r0, [sp, #8] + 8011234: f89d 000c ldrb.w r0, [sp, #12] + 8011238: 4583 cmp fp, r0 + 801123a: d836 bhi.n 80112aa <lorawan_aes_encrypt+0x15a> + 801123c: f88d 1078 strb.w r1, [sp, #120] ; 0x78 + 8011240: f88d 207a strb.w r2, [sp, #122] ; 0x7a + 8011244: 9909 ldr r1, [sp, #36] ; 0x24 + 8011246: 9a0e ldr r2, [sp, #56] ; 0x38 + 8011248: f88d 107c strb.w r1, [sp, #124] ; 0x7c + 801124c: f88d 2082 strb.w r2, [sp, #130] ; 0x82 + 8011250: 9911 ldr r1, [sp, #68] ; 0x44 + 8011252: 9a06 ldr r2, [sp, #24] + 8011254: f88d 1080 strb.w r1, [sp, #128] ; 0x80 + 8011258: f88d 207e strb.w r2, [sp, #126] ; 0x7e + 801125c: 9919 ldr r1, [sp, #100] ; 0x64 + 801125e: 9a16 ldr r2, [sp, #88] ; 0x58 + 8011260: f88d 1084 strb.w r1, [sp, #132] ; 0x84 + 8011264: f88d 2086 strb.w r2, [sp, #134] ; 0x86 + 8011268: 990a ldr r1, [sp, #40] ; 0x28 + 801126a: 9a18 ldr r2, [sp, #96] ; 0x60 + 801126c: f88d 107d strb.w r1, [sp, #125] ; 0x7d + 8011270: f88d 2087 strb.w r2, [sp, #135] ; 0x87 + 8011274: 9912 ldr r1, [sp, #72] ; 0x48 + 8011276: 9a10 ldr r2, [sp, #64] ; 0x40 + 8011278: f88d 307b strb.w r3, [sp, #123] ; 0x7b + 801127c: 9b1b ldr r3, [sp, #108] ; 0x6c + 801127e: f88d 1081 strb.w r1, [sp, #129] ; 0x81 + 8011282: f88d 2083 strb.w r2, [sp, #131] ; 0x83 + 8011286: 991a ldr r1, [sp, #104] ; 0x68 + 8011288: 9a08 ldr r2, [sp, #32] + 801128a: 981d ldr r0, [sp, #116] ; 0x74 + 801128c: f88d 1085 strb.w r1, [sp, #133] ; 0x85 + 8011290: f88d 207f strb.w r2, [sp, #127] ; 0x7f + 8011294: a91e add r1, sp, #120 ; 0x78 + 8011296: eb03 120b add.w r2, r3, fp, lsl #4 + 801129a: f88d 7079 strb.w r7, [sp, #121] ; 0x79 + 801129e: f7ff fe9a bl 8010fd6 <copy_and_key> + 80112a2: 2000 movs r0, #0 + 80112a4: b023 add sp, #140 ; 0x8c + 80112a6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80112aa: f815 b008 ldrb.w fp, [r5, r8] + 80112ae: ea82 0003 eor.w r0, r2, r3 + 80112b2: ea8b 0000 eor.w r0, fp, r0 + 80112b6: f816 b00e ldrb.w fp, [r6, lr] + 80112ba: ea80 000b eor.w r0, r0, fp + 80112be: f88d 0078 strb.w r0, [sp, #120] ; 0x78 + 80112c2: f815 000e ldrb.w r0, [r5, lr] + 80112c6: 404b eors r3, r1 + 80112c8: 4043 eors r3, r0 + 80112ca: f816 000a ldrb.w r0, [r6, sl] + 80112ce: 4043 eors r3, r0 + 80112d0: f88d 3079 strb.w r3, [sp, #121] ; 0x79 + 80112d4: ea81 0307 eor.w r3, r1, r7 + 80112d8: f815 100a ldrb.w r1, [r5, sl] + 80112dc: 4059 eors r1, r3 + 80112de: f816 3009 ldrb.w r3, [r6, r9] + 80112e2: 4059 eors r1, r3 + 80112e4: f816 3008 ldrb.w r3, [r6, r8] + 80112e8: f88d 107a strb.w r1, [sp, #122] ; 0x7a + 80112ec: 407a eors r2, r7 + 80112ee: 4053 eors r3, r2 + 80112f0: f815 2009 ldrb.w r2, [r5, r9] + 80112f4: 4053 eors r3, r2 + 80112f6: f88d 307b strb.w r3, [sp, #123] ; 0x7b + 80112fa: 9a08 ldr r2, [sp, #32] + 80112fc: 9b06 ldr r3, [sp, #24] + 80112fe: 4053 eors r3, r2 + 8011300: 9a04 ldr r2, [sp, #16] + 8011302: 5caa ldrb r2, [r5, r2] + 8011304: 4053 eors r3, r2 + 8011306: f816 200c ldrb.w r2, [r6, ip] + 801130a: 4053 eors r3, r2 + 801130c: f88d 307c strb.w r3, [sp, #124] ; 0x7c + 8011310: e9dd 3208 ldrd r3, r2, [sp, #32] + 8011314: 405a eors r2, r3 + 8011316: f815 300c ldrb.w r3, [r5, ip] + 801131a: 4053 eors r3, r2 + 801131c: 9a05 ldr r2, [sp, #20] + 801131e: 5cb2 ldrb r2, [r6, r2] + 8011320: 4053 eors r3, r2 + 8011322: f88d 307d strb.w r3, [sp, #125] ; 0x7d + 8011326: e9dd 3209 ldrd r3, r2, [sp, #36] ; 0x24 + 801132a: 405a eors r2, r3 + 801132c: 9b05 ldr r3, [sp, #20] + 801132e: 5ceb ldrb r3, [r5, r3] + 8011330: 4053 eors r3, r2 + 8011332: 9a07 ldr r2, [sp, #28] + 8011334: 5cb2 ldrb r2, [r6, r2] + 8011336: 4053 eors r3, r2 + 8011338: f88d 307e strb.w r3, [sp, #126] ; 0x7e + 801133c: 9b06 ldr r3, [sp, #24] + 801133e: 9a0a ldr r2, [sp, #40] ; 0x28 + 8011340: 4053 eors r3, r2 + 8011342: 9a04 ldr r2, [sp, #16] + 8011344: 5cb2 ldrb r2, [r6, r2] + 8011346: 405a eors r2, r3 + 8011348: 9b07 ldr r3, [sp, #28] + 801134a: 5ceb ldrb r3, [r5, r3] + 801134c: 405a eors r2, r3 + 801134e: f88d 207f strb.w r2, [sp, #127] ; 0x7f + 8011352: 9b0e ldr r3, [sp, #56] ; 0x38 + 8011354: 9a10 ldr r2, [sp, #64] ; 0x40 + 8011356: 4053 eors r3, r2 + 8011358: 9a0b ldr r2, [sp, #44] ; 0x2c + 801135a: 5caa ldrb r2, [r5, r2] + 801135c: 4053 eors r3, r2 + 801135e: 9a0c ldr r2, [sp, #48] ; 0x30 + 8011360: 5cb2 ldrb r2, [r6, r2] + 8011362: 4053 eors r3, r2 + 8011364: f88d 3080 strb.w r3, [sp, #128] ; 0x80 + 8011368: e9dd 3210 ldrd r3, r2, [sp, #64] ; 0x40 + 801136c: 405a eors r2, r3 + 801136e: 9b0c ldr r3, [sp, #48] ; 0x30 + 8011370: 5ceb ldrb r3, [r5, r3] + 8011372: 4053 eors r3, r2 + 8011374: 9a0d ldr r2, [sp, #52] ; 0x34 + 8011376: 5cb2 ldrb r2, [r6, r2] + 8011378: 4053 eors r3, r2 + 801137a: f88d 3081 strb.w r3, [sp, #129] ; 0x81 + 801137e: e9dd 3211 ldrd r3, r2, [sp, #68] ; 0x44 + 8011382: 405a eors r2, r3 + 8011384: 9b0d ldr r3, [sp, #52] ; 0x34 + 8011386: 5ceb ldrb r3, [r5, r3] + 8011388: 4053 eors r3, r2 + 801138a: 9a0f ldr r2, [sp, #60] ; 0x3c + 801138c: 5cb2 ldrb r2, [r6, r2] + 801138e: 4053 eors r3, r2 + 8011390: f88d 3082 strb.w r3, [sp, #130] ; 0x82 + 8011394: 9a12 ldr r2, [sp, #72] ; 0x48 + 8011396: 9b0e ldr r3, [sp, #56] ; 0x38 + 8011398: 4053 eors r3, r2 + 801139a: 9a0b ldr r2, [sp, #44] ; 0x2c + 801139c: 5cb2 ldrb r2, [r6, r2] + 801139e: 405a eors r2, r3 + 80113a0: 9b0f ldr r3, [sp, #60] ; 0x3c + 80113a2: 5ceb ldrb r3, [r5, r3] + 80113a4: 991c ldr r1, [sp, #112] ; 0x70 + 80113a6: 405a eors r2, r3 + 80113a8: f88d 2083 strb.w r2, [sp, #131] ; 0x83 + 80113ac: 9b16 ldr r3, [sp, #88] ; 0x58 + 80113ae: 9a18 ldr r2, [sp, #96] ; 0x60 + 80113b0: 4053 eors r3, r2 + 80113b2: 9a13 ldr r2, [sp, #76] ; 0x4c + 80113b4: 5caa ldrb r2, [r5, r2] + 80113b6: 4053 eors r3, r2 + 80113b8: 9a14 ldr r2, [sp, #80] ; 0x50 + 80113ba: 5cb2 ldrb r2, [r6, r2] + 80113bc: 4053 eors r3, r2 + 80113be: f88d 3084 strb.w r3, [sp, #132] ; 0x84 + 80113c2: e9dd 3218 ldrd r3, r2, [sp, #96] ; 0x60 + 80113c6: 405a eors r2, r3 + 80113c8: 9b14 ldr r3, [sp, #80] ; 0x50 + 80113ca: 5ceb ldrb r3, [r5, r3] + 80113cc: 4053 eors r3, r2 + 80113ce: 9a15 ldr r2, [sp, #84] ; 0x54 + 80113d0: 5cb2 ldrb r2, [r6, r2] + 80113d2: 4053 eors r3, r2 + 80113d4: f88d 3085 strb.w r3, [sp, #133] ; 0x85 + 80113d8: e9dd 3219 ldrd r3, r2, [sp, #100] ; 0x64 + 80113dc: 405a eors r2, r3 + 80113de: 9b15 ldr r3, [sp, #84] ; 0x54 + 80113e0: 5ceb ldrb r3, [r5, r3] + 80113e2: 4053 eors r3, r2 + 80113e4: 9a17 ldr r2, [sp, #92] ; 0x5c + 80113e6: 5cb2 ldrb r2, [r6, r2] + 80113e8: 4053 eors r3, r2 + 80113ea: f88d 3086 strb.w r3, [sp, #134] ; 0x86 + 80113ee: 9a1a ldr r2, [sp, #104] ; 0x68 + 80113f0: 9b16 ldr r3, [sp, #88] ; 0x58 + 80113f2: 4053 eors r3, r2 + 80113f4: 9a13 ldr r2, [sp, #76] ; 0x4c + 80113f6: 5cb2 ldrb r2, [r6, r2] + 80113f8: 4053 eors r3, r2 + 80113fa: 9a17 ldr r2, [sp, #92] ; 0x5c + 80113fc: 5caa ldrb r2, [r5, r2] + 80113fe: a81e add r0, sp, #120 ; 0x78 + 8011400: 4053 eors r3, r2 + 8011402: f88d 3087 strb.w r3, [sp, #135] ; 0x87 + 8011406: f7ff fda5 bl 8010f54 <xor_block> + 801140a: e6b8 b.n 801117e <lorawan_aes_encrypt+0x2e> + 801140c: 20ff movs r0, #255 ; 0xff + 801140e: e749 b.n 80112a4 <lorawan_aes_encrypt+0x154> + 8011410: 08015620 .word 0x08015620 + 8011414: 08015420 .word 0x08015420 + 8011418: 08015520 .word 0x08015520 + +0801141c <SecureElementInit>: + 801141c: b508 push {r3, lr} + 801141e: b138 cbz r0, 8011430 <SecureElementInit+0x14> + 8011420: 4a04 ldr r2, [pc, #16] ; (8011434 <SecureElementInit+0x18>) + 8011422: 4905 ldr r1, [pc, #20] ; (8011438 <SecureElementInit+0x1c>) + 8011424: 6010 str r0, [r2, #0] + 8011426: 22d8 movs r2, #216 ; 0xd8 + 8011428: f000 fab0 bl 801198c <memcpy1> + 801142c: 2000 movs r0, #0 + 801142e: bd08 pop {r3, pc} + 8011430: 2002 movs r0, #2 + 8011432: e7fc b.n 801142e <SecureElementInit+0x12> + 8011434: 20002628 .word 0x20002628 + 8011438: 08015b50 .word 0x08015b50 + +0801143c <SecureElementGetKeyByID>: + 801143c: 4b0a ldr r3, [pc, #40] ; (8011468 <SecureElementGetKeyByID+0x2c>) + 801143e: 681a ldr r2, [r3, #0] + 8011440: b570 push {r4, r5, r6, lr} + 8011442: 2300 movs r3, #0 + 8011444: f102 0518 add.w r5, r2, #24 + 8011448: eb03 1403 add.w r4, r3, r3, lsl #4 + 801144c: 5d2e ldrb r6, [r5, r4] + 801144e: 4286 cmp r6, r0 + 8011450: d104 bne.n 801145c <SecureElementGetKeyByID+0x20> + 8011452: 3418 adds r4, #24 + 8011454: 4422 add r2, r4 + 8011456: 600a str r2, [r1, #0] + 8011458: 2000 movs r0, #0 + 801145a: bd70 pop {r4, r5, r6, pc} + 801145c: 3301 adds r3, #1 + 801145e: 2b0b cmp r3, #11 + 8011460: d1f2 bne.n 8011448 <SecureElementGetKeyByID+0xc> + 8011462: 2003 movs r0, #3 + 8011464: e7f9 b.n 801145a <SecureElementGetKeyByID+0x1e> + 8011466: bf00 nop + 8011468: 20002628 .word 0x20002628 + +0801146c <ComputeCmac>: + 801146c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8011470: b0cc sub sp, #304 ; 0x130 + 8011472: 4606 mov r6, r0 + 8011474: f8dd 8148 ldr.w r8, [sp, #328] ; 0x148 + 8011478: 4617 mov r7, r2 + 801147a: 461c mov r4, r3 + 801147c: 460d mov r5, r1 + 801147e: b331 cbz r1, 80114ce <ComputeCmac+0x62> + 8011480: f1b8 0f00 cmp.w r8, #0 + 8011484: d023 beq.n 80114ce <ComputeCmac+0x62> + 8011486: a806 add r0, sp, #24 + 8011488: f7ff fc2e bl 8010ce8 <AES_CMAC_Init> + 801148c: 4620 mov r0, r4 + 801148e: a901 add r1, sp, #4 + 8011490: f7ff ffd4 bl 801143c <SecureElementGetKeyByID> + 8011494: 4604 mov r4, r0 + 8011496: b9b0 cbnz r0, 80114c6 <ComputeCmac+0x5a> + 8011498: 9901 ldr r1, [sp, #4] + 801149a: a806 add r0, sp, #24 + 801149c: 3101 adds r1, #1 + 801149e: f7ff fc33 bl 8010d08 <AES_CMAC_SetKey> + 80114a2: b126 cbz r6, 80114ae <ComputeCmac+0x42> + 80114a4: 2210 movs r2, #16 + 80114a6: 4631 mov r1, r6 + 80114a8: a806 add r0, sp, #24 + 80114aa: f7ff fc32 bl 8010d12 <AES_CMAC_Update> + 80114ae: 463a mov r2, r7 + 80114b0: 4629 mov r1, r5 + 80114b2: a806 add r0, sp, #24 + 80114b4: f7ff fc2d bl 8010d12 <AES_CMAC_Update> + 80114b8: a906 add r1, sp, #24 + 80114ba: a802 add r0, sp, #8 + 80114bc: f7ff fc94 bl 8010de8 <AES_CMAC_Final> + 80114c0: 9b02 ldr r3, [sp, #8] + 80114c2: f8c8 3000 str.w r3, [r8] + 80114c6: 4620 mov r0, r4 + 80114c8: b04c add sp, #304 ; 0x130 + 80114ca: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 80114ce: 2402 movs r4, #2 + 80114d0: e7f9 b.n 80114c6 <ComputeCmac+0x5a> + ... + +080114d4 <PrintKey>: + 80114d4: b530 push {r4, r5, lr} + 80114d6: b095 sub sp, #84 ; 0x54 + 80114d8: a913 add r1, sp, #76 ; 0x4c + 80114da: 4604 mov r4, r0 + 80114dc: f7ff ffae bl 801143c <SecureElementGetKeyByID> + 80114e0: 2800 cmp r0, #0 + 80114e2: d130 bne.n 8011546 <PrintKey+0x72> + 80114e4: 491b ldr r1, [pc, #108] ; (8011554 <PrintKey+0x80>) + 80114e6: 230c movs r3, #12 + 80114e8: fb03 f200 mul.w r2, r3, r0 + 80114ec: 5c55 ldrb r5, [r2, r1] + 80114ee: 42a5 cmp r5, r4 + 80114f0: d12b bne.n 801154a <PrintKey+0x76> + 80114f2: 9b13 ldr r3, [sp, #76] ; 0x4c + 80114f4: 7c18 ldrb r0, [r3, #16] + 80114f6: 9010 str r0, [sp, #64] ; 0x40 + 80114f8: 7bd8 ldrb r0, [r3, #15] + 80114fa: 900f str r0, [sp, #60] ; 0x3c + 80114fc: 7b98 ldrb r0, [r3, #14] + 80114fe: 900e str r0, [sp, #56] ; 0x38 + 8011500: 7b58 ldrb r0, [r3, #13] + 8011502: 900d str r0, [sp, #52] ; 0x34 + 8011504: 7b18 ldrb r0, [r3, #12] + 8011506: 900c str r0, [sp, #48] ; 0x30 + 8011508: 7ad8 ldrb r0, [r3, #11] + 801150a: 900b str r0, [sp, #44] ; 0x2c + 801150c: 7a98 ldrb r0, [r3, #10] + 801150e: 900a str r0, [sp, #40] ; 0x28 + 8011510: 7a58 ldrb r0, [r3, #9] + 8011512: 9009 str r0, [sp, #36] ; 0x24 + 8011514: 7a18 ldrb r0, [r3, #8] + 8011516: 9008 str r0, [sp, #32] + 8011518: 79d8 ldrb r0, [r3, #7] + 801151a: 9007 str r0, [sp, #28] + 801151c: 7998 ldrb r0, [r3, #6] + 801151e: 9006 str r0, [sp, #24] + 8011520: 7958 ldrb r0, [r3, #5] + 8011522: 9005 str r0, [sp, #20] + 8011524: 7918 ldrb r0, [r3, #4] + 8011526: 9004 str r0, [sp, #16] + 8011528: 78d8 ldrb r0, [r3, #3] + 801152a: 9003 str r0, [sp, #12] + 801152c: 7898 ldrb r0, [r3, #2] + 801152e: 9002 str r0, [sp, #8] + 8011530: 440a add r2, r1 + 8011532: 785b ldrb r3, [r3, #1] + 8011534: 9301 str r3, [sp, #4] + 8011536: 6893 ldr r3, [r2, #8] + 8011538: 9300 str r3, [sp, #0] + 801153a: 2200 movs r2, #0 + 801153c: 4b06 ldr r3, [pc, #24] ; (8011558 <PrintKey+0x84>) + 801153e: 4611 mov r1, r2 + 8011540: 2002 movs r0, #2 + 8011542: f002 fa19 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8011546: b015 add sp, #84 ; 0x54 + 8011548: bd30 pop {r4, r5, pc} + 801154a: 3001 adds r0, #1 + 801154c: 280b cmp r0, #11 + 801154e: d1cb bne.n 80114e8 <PrintKey+0x14> + 8011550: e7f9 b.n 8011546 <PrintKey+0x72> + 8011552: bf00 nop + 8011554: 08015898 .word 0x08015898 + 8011558: 08015720 .word 0x08015720 + +0801155c <SecureElementComputeAesCmac>: + 801155c: 2b0b cmp r3, #11 + 801155e: b410 push {r4} + 8011560: d802 bhi.n 8011568 <SecureElementComputeAesCmac+0xc> + 8011562: bc10 pop {r4} + 8011564: f7ff bf82 b.w 801146c <ComputeCmac> + 8011568: 2003 movs r0, #3 + 801156a: bc10 pop {r4} + 801156c: 4770 bx lr + +0801156e <SecureElementVerifyAesCmac>: + 801156e: b530 push {r4, r5, lr} + 8011570: 460d mov r5, r1 + 8011572: b085 sub sp, #20 + 8011574: 4614 mov r4, r2 + 8011576: 4601 mov r1, r0 + 8011578: b168 cbz r0, 8011596 <SecureElementVerifyAesCmac+0x28> + 801157a: aa03 add r2, sp, #12 + 801157c: 2000 movs r0, #0 + 801157e: 9200 str r2, [sp, #0] + 8011580: 462a mov r2, r5 + 8011582: 9003 str r0, [sp, #12] + 8011584: f7ff ff72 bl 801146c <ComputeCmac> + 8011588: b918 cbnz r0, 8011592 <SecureElementVerifyAesCmac+0x24> + 801158a: 9803 ldr r0, [sp, #12] + 801158c: 1b00 subs r0, r0, r4 + 801158e: bf18 it ne + 8011590: 2001 movne r0, #1 + 8011592: b005 add sp, #20 + 8011594: bd30 pop {r4, r5, pc} + 8011596: 2002 movs r0, #2 + 8011598: e7fb b.n 8011592 <SecureElementVerifyAesCmac+0x24> + +0801159a <SecureElementAesEncrypt>: + 801159a: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 801159e: 460d mov r5, r1 + 80115a0: b0bf sub sp, #252 ; 0xfc + 80115a2: 4614 mov r4, r2 + 80115a4: 4699 mov r9, r3 + 80115a6: 4680 mov r8, r0 + 80115a8: b320 cbz r0, 80115f4 <SecureElementAesEncrypt+0x5a> + 80115aa: b31b cbz r3, 80115f4 <SecureElementAesEncrypt+0x5a> + 80115ac: f011 010f ands.w r1, r1, #15 + 80115b0: d122 bne.n 80115f8 <SecureElementAesEncrypt+0x5e> + 80115b2: 22f0 movs r2, #240 ; 0xf0 + 80115b4: a801 add r0, sp, #4 + 80115b6: f000 f9fd bl 80119b4 <memset1> + 80115ba: 4620 mov r0, r4 + 80115bc: 4669 mov r1, sp + 80115be: f7ff ff3d bl 801143c <SecureElementGetKeyByID> + 80115c2: 4604 mov r4, r0 + 80115c4: b948 cbnz r0, 80115da <SecureElementAesEncrypt+0x40> + 80115c6: 9800 ldr r0, [sp, #0] + 80115c8: aa01 add r2, sp, #4 + 80115ca: 2110 movs r1, #16 + 80115cc: 3001 adds r0, #1 + 80115ce: f7ff fd45 bl 801105c <lorawan_aes_set_key> + 80115d2: 462e mov r6, r5 + 80115d4: 1baf subs r7, r5, r6 + 80115d6: b2ff uxtb r7, r7 + 80115d8: b91e cbnz r6, 80115e2 <SecureElementAesEncrypt+0x48> + 80115da: 4620 mov r0, r4 + 80115dc: b03f add sp, #252 ; 0xfc + 80115de: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 80115e2: aa01 add r2, sp, #4 + 80115e4: eb09 0107 add.w r1, r9, r7 + 80115e8: eb08 0007 add.w r0, r8, r7 + 80115ec: f7ff fdb0 bl 8011150 <lorawan_aes_encrypt> + 80115f0: 3e10 subs r6, #16 + 80115f2: e7ef b.n 80115d4 <SecureElementAesEncrypt+0x3a> + 80115f4: 2402 movs r4, #2 + 80115f6: e7f0 b.n 80115da <SecureElementAesEncrypt+0x40> + 80115f8: 2405 movs r4, #5 + 80115fa: e7ee b.n 80115da <SecureElementAesEncrypt+0x40> + +080115fc <SecureElementSetKey.part.0>: + 80115fc: b5f0 push {r4, r5, r6, r7, lr} + 80115fe: 4e18 ldr r6, [pc, #96] ; (8011660 <SecureElementSetKey.part.0+0x64>) + 8011600: 6834 ldr r4, [r6, #0] + 8011602: 4602 mov r2, r0 + 8011604: b085 sub sp, #20 + 8011606: 4608 mov r0, r1 + 8011608: 2300 movs r3, #0 + 801160a: f104 0118 add.w r1, r4, #24 + 801160e: eb03 1503 add.w r5, r3, r3, lsl #4 + 8011612: 5d4f ldrb r7, [r1, r5] + 8011614: 4297 cmp r7, r2 + 8011616: d11e bne.n 8011656 <SecureElementSetKey.part.0+0x5a> + 8011618: 2a0d cmp r2, #13 + 801161a: f105 0519 add.w r5, r5, #25 + 801161e: d113 bne.n 8011648 <SecureElementSetKey.part.0+0x4c> + 8011620: 2300 movs r3, #0 + 8011622: e9cd 3300 strd r3, r3, [sp] + 8011626: e9cd 3302 strd r3, r3, [sp, #8] + 801162a: 220c movs r2, #12 + 801162c: 2110 movs r1, #16 + 801162e: 466b mov r3, sp + 8011630: f7ff ffb3 bl 801159a <SecureElementAesEncrypt> + 8011634: 4604 mov r4, r0 + 8011636: 6830 ldr r0, [r6, #0] + 8011638: 2210 movs r2, #16 + 801163a: 4669 mov r1, sp + 801163c: 4428 add r0, r5 + 801163e: f000 f9a5 bl 801198c <memcpy1> + 8011642: 4620 mov r0, r4 + 8011644: b005 add sp, #20 + 8011646: bdf0 pop {r4, r5, r6, r7, pc} + 8011648: 4601 mov r1, r0 + 801164a: 2210 movs r2, #16 + 801164c: 1960 adds r0, r4, r5 + 801164e: f000 f99d bl 801198c <memcpy1> + 8011652: 2400 movs r4, #0 + 8011654: e7f5 b.n 8011642 <SecureElementSetKey.part.0+0x46> + 8011656: 3301 adds r3, #1 + 8011658: 2b0b cmp r3, #11 + 801165a: d1d8 bne.n 801160e <SecureElementSetKey.part.0+0x12> + 801165c: 2403 movs r4, #3 + 801165e: e7f0 b.n 8011642 <SecureElementSetKey.part.0+0x46> + 8011660: 20002628 .word 0x20002628 + +08011664 <SecureElementSetKey>: + 8011664: b109 cbz r1, 801166a <SecureElementSetKey+0x6> + 8011666: f7ff bfc9 b.w 80115fc <SecureElementSetKey.part.0> + 801166a: 2002 movs r0, #2 + 801166c: 4770 bx lr + +0801166e <SecureElementDeriveAndStoreKey>: + 801166e: b51f push {r0, r1, r2, r3, r4, lr} + 8011670: 4614 mov r4, r2 + 8011672: b1a0 cbz r0, 801169e <SecureElementDeriveAndStoreKey+0x30> + 8011674: 2a0c cmp r2, #12 + 8011676: d101 bne.n 801167c <SecureElementDeriveAndStoreKey+0xe> + 8011678: 290b cmp r1, #11 + 801167a: d112 bne.n 80116a2 <SecureElementDeriveAndStoreKey+0x34> + 801167c: 2300 movs r3, #0 + 801167e: e9cd 3300 strd r3, r3, [sp] + 8011682: e9cd 3302 strd r3, r3, [sp, #8] + 8011686: 460a mov r2, r1 + 8011688: 466b mov r3, sp + 801168a: 2110 movs r1, #16 + 801168c: f7ff ff85 bl 801159a <SecureElementAesEncrypt> + 8011690: b918 cbnz r0, 801169a <SecureElementDeriveAndStoreKey+0x2c> + 8011692: 4669 mov r1, sp + 8011694: 4620 mov r0, r4 + 8011696: f7ff ffb1 bl 80115fc <SecureElementSetKey.part.0> + 801169a: b004 add sp, #16 + 801169c: bd10 pop {r4, pc} + 801169e: 2002 movs r0, #2 + 80116a0: e7fb b.n 801169a <SecureElementDeriveAndStoreKey+0x2c> + 80116a2: 2003 movs r0, #3 + 80116a4: e7f9 b.n 801169a <SecureElementDeriveAndStoreKey+0x2c> + +080116a6 <SecureElementProcessJoinAccept>: + 80116a6: b5f8 push {r3, r4, r5, r6, r7, lr} + 80116a8: 461e mov r6, r3 + 80116aa: e9dd 4707 ldrd r4, r7, [sp, #28] + 80116ae: f89d 5018 ldrb.w r5, [sp, #24] + 80116b2: b35b cbz r3, 801170c <SecureElementProcessJoinAccept+0x66> + 80116b4: b354 cbz r4, 801170c <SecureElementProcessJoinAccept+0x66> + 80116b6: b34f cbz r7, 801170c <SecureElementProcessJoinAccept+0x66> + 80116b8: 2d21 cmp r5, #33 ; 0x21 + 80116ba: d829 bhi.n 8011710 <SecureElementProcessJoinAccept+0x6a> + 80116bc: 4619 mov r1, r3 + 80116be: 462a mov r2, r5 + 80116c0: 4620 mov r0, r4 + 80116c2: f000 f963 bl 801198c <memcpy1> + 80116c6: 2201 movs r2, #1 + 80116c8: 1c63 adds r3, r4, #1 + 80116ca: 1e69 subs r1, r5, #1 + 80116cc: 18b0 adds r0, r6, r2 + 80116ce: f7ff ff64 bl 801159a <SecureElementAesEncrypt> + 80116d2: b9f8 cbnz r0, 8011714 <SecureElementProcessJoinAccept+0x6e> + 80116d4: 7ae3 ldrb r3, [r4, #11] + 80116d6: 09db lsrs r3, r3, #7 + 80116d8: 703b strb r3, [r7, #0] + 80116da: b9eb cbnz r3, 8011718 <SecureElementProcessJoinAccept+0x72> + 80116dc: 1963 adds r3, r4, r5 + 80116de: 4620 mov r0, r4 + 80116e0: f813 2c01 ldrb.w r2, [r3, #-1] + 80116e4: f813 1c02 ldrb.w r1, [r3, #-2] + 80116e8: 0612 lsls r2, r2, #24 + 80116ea: ea42 4201 orr.w r2, r2, r1, lsl #16 + 80116ee: f813 1c04 ldrb.w r1, [r3, #-4] + 80116f2: 430a orrs r2, r1 + 80116f4: f813 1c03 ldrb.w r1, [r3, #-3] + 80116f8: 2301 movs r3, #1 + 80116fa: ea42 2201 orr.w r2, r2, r1, lsl #8 + 80116fe: 1f29 subs r1, r5, #4 + 8011700: f7ff ff35 bl 801156e <SecureElementVerifyAesCmac> + 8011704: 3800 subs r0, #0 + 8011706: bf18 it ne + 8011708: 2001 movne r0, #1 + 801170a: bdf8 pop {r3, r4, r5, r6, r7, pc} + 801170c: 2002 movs r0, #2 + 801170e: e7fc b.n 801170a <SecureElementProcessJoinAccept+0x64> + 8011710: 2005 movs r0, #5 + 8011712: e7fa b.n 801170a <SecureElementProcessJoinAccept+0x64> + 8011714: 2007 movs r0, #7 + 8011716: e7f8 b.n 801170a <SecureElementProcessJoinAccept+0x64> + 8011718: 2004 movs r0, #4 + 801171a: e7f6 b.n 801170a <SecureElementProcessJoinAccept+0x64> + +0801171c <SecureElementRandomNumber>: + 801171c: b510 push {r4, lr} + 801171e: 4604 mov r4, r0 + 8011720: b128 cbz r0, 801172e <SecureElementRandomNumber+0x12> + 8011722: 4b04 ldr r3, [pc, #16] ; (8011734 <SecureElementRandomNumber+0x18>) + 8011724: 695b ldr r3, [r3, #20] + 8011726: 4798 blx r3 + 8011728: 6020 str r0, [r4, #0] + 801172a: 2000 movs r0, #0 + 801172c: bd10 pop {r4, pc} + 801172e: 2002 movs r0, #2 + 8011730: e7fc b.n 801172c <SecureElementRandomNumber+0x10> + 8011732: bf00 nop + 8011734: 080159b0 .word 0x080159b0 + +08011738 <SecureElementSetDevEui>: + 8011738: b508 push {r3, lr} + 801173a: 4601 mov r1, r0 + 801173c: b130 cbz r0, 801174c <SecureElementSetDevEui+0x14> + 801173e: 4b04 ldr r3, [pc, #16] ; (8011750 <SecureElementSetDevEui+0x18>) + 8011740: 2208 movs r2, #8 + 8011742: 6818 ldr r0, [r3, #0] + 8011744: f000 f922 bl 801198c <memcpy1> + 8011748: 2000 movs r0, #0 + 801174a: bd08 pop {r3, pc} + 801174c: 2002 movs r0, #2 + 801174e: e7fc b.n 801174a <SecureElementSetDevEui+0x12> + 8011750: 20002628 .word 0x20002628 + +08011754 <SecureElementGetDevEui>: + 8011754: b508 push {r3, lr} + 8011756: b130 cbz r0, 8011766 <SecureElementGetDevEui+0x12> + 8011758: 4b04 ldr r3, [pc, #16] ; (801176c <SecureElementGetDevEui+0x18>) + 801175a: 2208 movs r2, #8 + 801175c: 6819 ldr r1, [r3, #0] + 801175e: f000 f915 bl 801198c <memcpy1> + 8011762: 2000 movs r0, #0 + 8011764: bd08 pop {r3, pc} + 8011766: 2002 movs r0, #2 + 8011768: e7fc b.n 8011764 <SecureElementGetDevEui+0x10> + 801176a: bf00 nop + 801176c: 20002628 .word 0x20002628 + +08011770 <SecureElementInitMcuID>: + 8011770: b57f push {r0, r1, r2, r3, r4, r5, r6, lr} + 8011772: 4e12 ldr r6, [pc, #72] ; (80117bc <SecureElementInitMcuID+0x4c>) + 8011774: 2300 movs r3, #0 + 8011776: 4604 mov r4, r0 + 8011778: a802 add r0, sp, #8 + 801177a: 9301 str r3, [sp, #4] + 801177c: 460d mov r5, r1 + 801177e: f7ff ffe9 bl 8011754 <SecureElementGetDevEui> + 8011782: 6833 ldr r3, [r6, #0] + 8011784: 695b ldr r3, [r3, #20] + 8011786: 9301 str r3, [sp, #4] + 8011788: b16c cbz r4, 80117a6 <SecureElementInitMcuID+0x36> + 801178a: aa02 add r2, sp, #8 + 801178c: 2308 movs r3, #8 + 801178e: f812 1b01 ldrb.w r1, [r2], #1 + 8011792: b941 cbnz r1, 80117a6 <SecureElementInitMcuID+0x36> + 8011794: 3b01 subs r3, #1 + 8011796: f013 03ff ands.w r3, r3, #255 ; 0xff + 801179a: d1f8 bne.n 801178e <SecureElementInitMcuID+0x1e> + 801179c: a802 add r0, sp, #8 + 801179e: 47a0 blx r4 + 80117a0: a802 add r0, sp, #8 + 80117a2: f7ff ffc9 bl 8011738 <SecureElementSetDevEui> + 80117a6: b135 cbz r5, 80117b6 <SecureElementInitMcuID+0x46> + 80117a8: 9b01 ldr r3, [sp, #4] + 80117aa: b923 cbnz r3, 80117b6 <SecureElementInitMcuID+0x46> + 80117ac: a801 add r0, sp, #4 + 80117ae: 47a8 blx r5 + 80117b0: 6833 ldr r3, [r6, #0] + 80117b2: 9a01 ldr r2, [sp, #4] + 80117b4: 615a str r2, [r3, #20] + 80117b6: 2000 movs r0, #0 + 80117b8: b004 add sp, #16 + 80117ba: bd70 pop {r4, r5, r6, pc} + 80117bc: 20002628 .word 0x20002628 + +080117c0 <SecureElementSetJoinEui>: + 80117c0: b508 push {r3, lr} + 80117c2: 4601 mov r1, r0 + 80117c4: b138 cbz r0, 80117d6 <SecureElementSetJoinEui+0x16> + 80117c6: 4b05 ldr r3, [pc, #20] ; (80117dc <SecureElementSetJoinEui+0x1c>) + 80117c8: 6818 ldr r0, [r3, #0] + 80117ca: 2208 movs r2, #8 + 80117cc: 4410 add r0, r2 + 80117ce: f000 f8dd bl 801198c <memcpy1> + 80117d2: 2000 movs r0, #0 + 80117d4: bd08 pop {r3, pc} + 80117d6: 2002 movs r0, #2 + 80117d8: e7fc b.n 80117d4 <SecureElementSetJoinEui+0x14> + 80117da: bf00 nop + 80117dc: 20002628 .word 0x20002628 + +080117e0 <SecureElementGetJoinEui>: + 80117e0: b508 push {r3, lr} + 80117e2: b138 cbz r0, 80117f4 <SecureElementGetJoinEui+0x14> + 80117e4: 4b04 ldr r3, [pc, #16] ; (80117f8 <SecureElementGetJoinEui+0x18>) + 80117e6: 6819 ldr r1, [r3, #0] + 80117e8: 2208 movs r2, #8 + 80117ea: 4411 add r1, r2 + 80117ec: f000 f8ce bl 801198c <memcpy1> + 80117f0: 2000 movs r0, #0 + 80117f2: bd08 pop {r3, pc} + 80117f4: 2002 movs r0, #2 + 80117f6: e7fc b.n 80117f2 <SecureElementGetJoinEui+0x12> + 80117f8: 20002628 .word 0x20002628 + +080117fc <SecureElementSetDevAddr>: + 80117fc: 4b03 ldr r3, [pc, #12] ; (801180c <SecureElementSetDevAddr+0x10>) + 80117fe: 681b ldr r3, [r3, #0] + 8011800: 2802 cmp r0, #2 + 8011802: bf0c ite eq + 8011804: 6119 streq r1, [r3, #16] + 8011806: 6159 strne r1, [r3, #20] + 8011808: 2000 movs r0, #0 + 801180a: 4770 bx lr + 801180c: 20002628 .word 0x20002628 + +08011810 <SecureElementGetDevAddr>: + 8011810: b141 cbz r1, 8011824 <SecureElementGetDevAddr+0x14> + 8011812: 4b05 ldr r3, [pc, #20] ; (8011828 <SecureElementGetDevAddr+0x18>) + 8011814: 681b ldr r3, [r3, #0] + 8011816: 2802 cmp r0, #2 + 8011818: bf0c ite eq + 801181a: 691b ldreq r3, [r3, #16] + 801181c: 695b ldrne r3, [r3, #20] + 801181e: 600b str r3, [r1, #0] + 8011820: 2000 movs r0, #0 + 8011822: 4770 bx lr + 8011824: 2002 movs r0, #2 + 8011826: 4770 bx lr + 8011828: 20002628 .word 0x20002628 + +0801182c <PrintIds>: + 801182c: b530 push {r4, r5, lr} + 801182e: b08f sub sp, #60 ; 0x3c + 8011830: 2400 movs r4, #0 + 8011832: 4605 mov r5, r0 + 8011834: a80c add r0, sp, #48 ; 0x30 + 8011836: 9409 str r4, [sp, #36] ; 0x24 + 8011838: f7ff ff8c bl 8011754 <SecureElementGetDevEui> + 801183c: f89d 3037 ldrb.w r3, [sp, #55] ; 0x37 + 8011840: 9307 str r3, [sp, #28] + 8011842: f89d 3036 ldrb.w r3, [sp, #54] ; 0x36 + 8011846: 9306 str r3, [sp, #24] + 8011848: f89d 3035 ldrb.w r3, [sp, #53] ; 0x35 + 801184c: 9305 str r3, [sp, #20] + 801184e: f89d 3034 ldrb.w r3, [sp, #52] ; 0x34 + 8011852: 9304 str r3, [sp, #16] + 8011854: f89d 3033 ldrb.w r3, [sp, #51] ; 0x33 + 8011858: 9303 str r3, [sp, #12] + 801185a: f89d 3032 ldrb.w r3, [sp, #50] ; 0x32 + 801185e: 9302 str r3, [sp, #8] + 8011860: f89d 3031 ldrb.w r3, [sp, #49] ; 0x31 + 8011864: 9301 str r3, [sp, #4] + 8011866: f89d 3030 ldrb.w r3, [sp, #48] ; 0x30 + 801186a: 9300 str r3, [sp, #0] + 801186c: 4622 mov r2, r4 + 801186e: 4621 mov r1, r4 + 8011870: 4b1e ldr r3, [pc, #120] ; (80118ec <PrintIds+0xc0>) + 8011872: 2002 movs r0, #2 + 8011874: f002 f880 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8011878: a80a add r0, sp, #40 ; 0x28 + 801187a: f7ff ffb1 bl 80117e0 <SecureElementGetJoinEui> + 801187e: f89d 302f ldrb.w r3, [sp, #47] ; 0x2f + 8011882: 9307 str r3, [sp, #28] + 8011884: f89d 302e ldrb.w r3, [sp, #46] ; 0x2e + 8011888: 9306 str r3, [sp, #24] + 801188a: f89d 302d ldrb.w r3, [sp, #45] ; 0x2d + 801188e: 9305 str r3, [sp, #20] + 8011890: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 8011894: 9304 str r3, [sp, #16] + 8011896: f89d 302b ldrb.w r3, [sp, #43] ; 0x2b + 801189a: 9303 str r3, [sp, #12] + 801189c: f89d 302a ldrb.w r3, [sp, #42] ; 0x2a + 80118a0: 9302 str r3, [sp, #8] + 80118a2: f89d 3029 ldrb.w r3, [sp, #41] ; 0x29 + 80118a6: 9301 str r3, [sp, #4] + 80118a8: f89d 3028 ldrb.w r3, [sp, #40] ; 0x28 + 80118ac: 9300 str r3, [sp, #0] + 80118ae: 4622 mov r2, r4 + 80118b0: 4b0f ldr r3, [pc, #60] ; (80118f0 <PrintIds+0xc4>) + 80118b2: 4621 mov r1, r4 + 80118b4: 2002 movs r0, #2 + 80118b6: f002 f85f bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80118ba: a909 add r1, sp, #36 ; 0x24 + 80118bc: 4628 mov r0, r5 + 80118be: f7ff ffa7 bl 8011810 <SecureElementGetDevAddr> + 80118c2: f89d 3024 ldrb.w r3, [sp, #36] ; 0x24 + 80118c6: 9303 str r3, [sp, #12] + 80118c8: f89d 3025 ldrb.w r3, [sp, #37] ; 0x25 + 80118cc: 9302 str r3, [sp, #8] + 80118ce: f89d 3026 ldrb.w r3, [sp, #38] ; 0x26 + 80118d2: 9301 str r3, [sp, #4] + 80118d4: f89d 3027 ldrb.w r3, [sp, #39] ; 0x27 + 80118d8: 9300 str r3, [sp, #0] + 80118da: 4622 mov r2, r4 + 80118dc: 4b05 ldr r3, [pc, #20] ; (80118f4 <PrintIds+0xc8>) + 80118de: 4621 mov r1, r4 + 80118e0: 2002 movs r0, #2 + 80118e2: f002 f849 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 80118e6: b00f add sp, #60 ; 0x3c + 80118e8: bd30 pop {r4, r5, pc} + 80118ea: bf00 nop + 80118ec: 0801577c .word 0x0801577c + 80118f0: 080157ba .word 0x080157ba + 80118f4: 080157f8 .word 0x080157f8 + +080118f8 <SecureElementPrintKeys>: + 80118f8: b508 push {r3, lr} + 80118fa: 2000 movs r0, #0 + 80118fc: f7ff fdea bl 80114d4 <PrintKey> + 8011900: 2001 movs r0, #1 + 8011902: f7ff fde7 bl 80114d4 <PrintKey> + 8011906: 2009 movs r0, #9 + 8011908: f7ff fde4 bl 80114d4 <PrintKey> + 801190c: 2008 movs r0, #8 + 801190e: f7ff fde1 bl 80114d4 <PrintKey> + 8011912: 2000 movs r0, #0 + 8011914: f7ff ff8a bl 801182c <PrintIds> + 8011918: 2000 movs r0, #0 + 801191a: bd08 pop {r3, pc} + +0801191c <SecureElementPrintSessionKeys>: + 801191c: b510 push {r4, lr} + 801191e: 4604 mov r4, r0 + 8011920: 200b movs r0, #11 + 8011922: f7ff fdd7 bl 80114d4 <PrintKey> + 8011926: 200c movs r0, #12 + 8011928: f7ff fdd4 bl 80114d4 <PrintKey> + 801192c: 2009 movs r0, #9 + 801192e: f7ff fdd1 bl 80114d4 <PrintKey> + 8011932: 2008 movs r0, #8 + 8011934: f7ff fdce bl 80114d4 <PrintKey> + 8011938: 200a movs r0, #10 + 801193a: f7ff fdcb bl 80114d4 <PrintKey> + 801193e: 4620 mov r0, r4 + 8011940: f7ff ff74 bl 801182c <PrintIds> + 8011944: 2000 movs r0, #0 + 8011946: bd10 pop {r4, pc} + +08011948 <srand1>: + 8011948: 4b01 ldr r3, [pc, #4] ; (8011950 <srand1+0x8>) + 801194a: 6018 str r0, [r3, #0] + 801194c: 4770 bx lr + 801194e: bf00 nop + 8011950: 200008bc .word 0x200008bc + +08011954 <randr>: + 8011954: 4a0b ldr r2, [pc, #44] ; (8011984 <randr+0x30>) + 8011956: b530 push {r4, r5, lr} + 8011958: 6814 ldr r4, [r2, #0] + 801195a: 4d0b ldr r5, [pc, #44] ; (8011988 <randr+0x34>) + 801195c: f243 0339 movw r3, #12345 ; 0x3039 + 8011960: fb05 3304 mla r3, r5, r4, r3 + 8011964: 6013 str r3, [r2, #0] + 8011966: 1a09 subs r1, r1, r0 + 8011968: f06f 4200 mvn.w r2, #2147483648 ; 0x80000000 + 801196c: fbb3 f2f2 udiv r2, r3, r2 + 8011970: ebc2 72c2 rsb r2, r2, r2, lsl #31 + 8011974: 3101 adds r1, #1 + 8011976: 1a9b subs r3, r3, r2 + 8011978: fb93 f2f1 sdiv r2, r3, r1 + 801197c: fb01 3312 mls r3, r1, r2, r3 + 8011980: 4418 add r0, r3 + 8011982: bd30 pop {r4, r5, pc} + 8011984: 200008bc .word 0x200008bc + 8011988: 41c64e6d .word 0x41c64e6d + +0801198c <memcpy1>: + 801198c: 3801 subs r0, #1 + 801198e: 440a add r2, r1 + 8011990: 4291 cmp r1, r2 + 8011992: d100 bne.n 8011996 <memcpy1+0xa> + 8011994: 4770 bx lr + 8011996: f811 3b01 ldrb.w r3, [r1], #1 + 801199a: f800 3f01 strb.w r3, [r0, #1]! + 801199e: e7f7 b.n 8011990 <memcpy1+0x4> + +080119a0 <memcpyr>: + 80119a0: 4410 add r0, r2 + 80119a2: 440a add r2, r1 + 80119a4: 4291 cmp r1, r2 + 80119a6: d100 bne.n 80119aa <memcpyr+0xa> + 80119a8: 4770 bx lr + 80119aa: f811 3b01 ldrb.w r3, [r1], #1 + 80119ae: f800 3d01 strb.w r3, [r0, #-1]! + 80119b2: e7f7 b.n 80119a4 <memcpyr+0x4> + +080119b4 <memset1>: + 80119b4: f002 bd20 b.w 80143f8 <memset> + +080119b8 <Crc32>: + 80119b8: b530 push {r4, r5, lr} + 80119ba: b130 cbz r0, 80119ca <Crc32+0x12> + 80119bc: 4d0a ldr r5, [pc, #40] ; (80119e8 <Crc32+0x30>) + 80119be: 4401 add r1, r0 + 80119c0: f04f 33ff mov.w r3, #4294967295 + 80119c4: 4281 cmp r1, r0 + 80119c6: d101 bne.n 80119cc <Crc32+0x14> + 80119c8: 43d8 mvns r0, r3 + 80119ca: bd30 pop {r4, r5, pc} + 80119cc: f810 2b01 ldrb.w r2, [r0], #1 + 80119d0: 4053 eors r3, r2 + 80119d2: 2208 movs r2, #8 + 80119d4: f343 0400 sbfx r4, r3, #0, #1 + 80119d8: 3a01 subs r2, #1 + 80119da: 402c ands r4, r5 + 80119dc: b292 uxth r2, r2 + 80119de: ea84 0353 eor.w r3, r4, r3, lsr #1 + 80119e2: 2a00 cmp r2, #0 + 80119e4: d1f6 bne.n 80119d4 <Crc32+0x1c> + 80119e6: e7ed b.n 80119c4 <Crc32+0xc> + 80119e8: edb88320 .word 0xedb88320 + +080119ec <RadioCheckRfFrequency>: + 80119ec: 2001 movs r0, #1 + 80119ee: 4770 bx lr + +080119f0 <RadioOnTxTimeoutIrq>: + 80119f0: 4b05 ldr r3, [pc, #20] ; (8011a08 <RadioOnTxTimeoutIrq+0x18>) + 80119f2: f44f 5200 mov.w r2, #8192 ; 0x2000 + 80119f6: 629a str r2, [r3, #40] ; 0x28 + 80119f8: 4b04 ldr r3, [pc, #16] ; (8011a0c <RadioOnTxTimeoutIrq+0x1c>) + 80119fa: 681b ldr r3, [r3, #0] + 80119fc: b113 cbz r3, 8011a04 <RadioOnTxTimeoutIrq+0x14> + 80119fe: 685b ldr r3, [r3, #4] + 8011a00: b103 cbz r3, 8011a04 <RadioOnTxTimeoutIrq+0x14> + 8011a02: 4718 bx r3 + 8011a04: 4770 bx lr + 8011a06: bf00 nop + 8011a08: 48000400 .word 0x48000400 + 8011a0c: 2000272c .word 0x2000272c + +08011a10 <RadioOnRxTimeoutIrq>: + 8011a10: 4b05 ldr r3, [pc, #20] ; (8011a28 <RadioOnRxTimeoutIrq+0x18>) + 8011a12: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8011a16: 629a str r2, [r3, #40] ; 0x28 + 8011a18: 4b04 ldr r3, [pc, #16] ; (8011a2c <RadioOnRxTimeoutIrq+0x1c>) + 8011a1a: 681b ldr r3, [r3, #0] + 8011a1c: b113 cbz r3, 8011a24 <RadioOnRxTimeoutIrq+0x14> + 8011a1e: 68db ldr r3, [r3, #12] + 8011a20: b103 cbz r3, 8011a24 <RadioOnRxTimeoutIrq+0x14> + 8011a22: 4718 bx r3 + 8011a24: 4770 bx lr + 8011a26: bf00 nop + 8011a28: 48000400 .word 0x48000400 + 8011a2c: 2000272c .word 0x2000272c + +08011a30 <RadioLrFhssSetCfg>: + 8011a30: 2001 movs r0, #1 + 8011a32: 4770 bx lr + +08011a34 <RadioLrFhssGetTimeOnAirInMs>: + 8011a34: 2001 movs r0, #1 + 8011a36: 4770 bx lr + +08011a38 <RadioRead>: + 8011a38: f001 b948 b.w 8012ccc <SUBGRF_ReadRegister> + +08011a3c <RadioWrite>: + 8011a3c: f001 b936 b.w 8012cac <SUBGRF_WriteRegister> + +08011a40 <RadioTxCw>: + 8011a40: b510 push {r4, lr} + 8011a42: f001 fe19 bl 8013678 <SUBGRF_SetRfTxPower> + 8011a46: 210e movs r1, #14 + 8011a48: 4604 mov r4, r0 + 8011a4a: f640 101f movw r0, #2335 ; 0x91f + 8011a4e: f001 f92d bl 8012cac <SUBGRF_WriteRegister> + 8011a52: 4620 mov r0, r4 + 8011a54: 2101 movs r1, #1 + 8011a56: f001 fdf9 bl 801364c <SUBGRF_SetSwitch> + 8011a5a: e8bd 4010 ldmia.w sp!, {r4, lr} + 8011a5e: f001 bad7 b.w 8013010 <SUBGRF_SetTxContinuousWave> + ... + +08011a64 <RadioSetRxDutyCycle>: + 8011a64: b570 push {r4, r5, r6, lr} + 8011a66: 4e0c ldr r6, [pc, #48] ; (8011a98 <RadioSetRxDutyCycle+0x34>) + 8011a68: eb01 0340 add.w r3, r1, r0, lsl #1 + 8011a6c: 460d mov r5, r1 + 8011a6e: 65b3 str r3, [r6, #88] ; 0x58 + 8011a70: f64f 71ff movw r1, #65535 ; 0xffff + 8011a74: 2300 movs r3, #0 + 8011a76: 4604 mov r4, r0 + 8011a78: 461a mov r2, r3 + 8011a7a: 4608 mov r0, r1 + 8011a7c: f001 fb5e bl 801313c <SUBGRF_SetDioIrqParams> + 8011a80: f896 0056 ldrb.w r0, [r6, #86] ; 0x56 + 8011a84: 2100 movs r1, #0 + 8011a86: f001 fde1 bl 801364c <SUBGRF_SetSwitch> + 8011a8a: 4629 mov r1, r5 + 8011a8c: 4620 mov r0, r4 + 8011a8e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8011a92: f001 ba95 b.w 8012fc0 <SUBGRF_SetRxDutyCycle> + 8011a96: bf00 nop + 8011a98: 20002748 .word 0x20002748 + +08011a9c <RadioRxBoosted>: + 8011a9c: b510 push {r4, lr} + 8011a9e: 4604 mov r4, r0 + 8011aa0: f001 feaa bl 80137f8 <RFW_Is_Init> + 8011aa4: 2801 cmp r0, #1 + 8011aa6: d11c bne.n 8011ae2 <RadioRxBoosted+0x46> + 8011aa8: f001 feae bl 8013808 <RFW_ReceiveInit> + 8011aac: b134 cbz r4, 8011abc <RadioRxBoosted+0x20> + 8011aae: 4812 ldr r0, [pc, #72] ; (8011af8 <RadioRxBoosted+0x5c>) + 8011ab0: 4621 mov r1, r4 + 8011ab2: f002 fb17 bl 80140e4 <UTIL_TIMER_SetPeriod> + 8011ab6: 4810 ldr r0, [pc, #64] ; (8011af8 <RadioRxBoosted+0x5c>) + 8011ab8: f002 fada bl 8014070 <UTIL_TIMER_Start> + 8011abc: 4c0f ldr r4, [pc, #60] ; (8011afc <RadioRxBoosted+0x60>) + 8011abe: 4b10 ldr r3, [pc, #64] ; (8011b00 <RadioRxBoosted+0x64>) + 8011ac0: 2100 movs r1, #0 + 8011ac2: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8011ac6: 65a1 str r1, [r4, #88] ; 0x58 + 8011ac8: 619a str r2, [r3, #24] + 8011aca: f894 0056 ldrb.w r0, [r4, #86] ; 0x56 + 8011ace: f001 fdbd bl 801364c <SUBGRF_SetSwitch> + 8011ad2: 7863 ldrb r3, [r4, #1] + 8011ad4: b16b cbz r3, 8011af2 <RadioRxBoosted+0x56> + 8011ad6: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 8011ada: e8bd 4010 ldmia.w sp!, {r4, lr} + 8011ade: f001 ba53 b.w 8012f88 <SUBGRF_SetRxBoosted> + 8011ae2: 2300 movs r3, #0 + 8011ae4: f240 2162 movw r1, #610 ; 0x262 + 8011ae8: 461a mov r2, r3 + 8011aea: 4608 mov r0, r1 + 8011aec: f001 fb26 bl 801313c <SUBGRF_SetDioIrqParams> + 8011af0: e7dc b.n 8011aac <RadioRxBoosted+0x10> + 8011af2: 68a0 ldr r0, [r4, #8] + 8011af4: 0180 lsls r0, r0, #6 + 8011af6: e7f0 b.n 8011ada <RadioRxBoosted+0x3e> + 8011af8: 20002730 .word 0x20002730 + 8011afc: 20002748 .word 0x20002748 + 8011b00: 48000400 .word 0x48000400 + +08011b04 <RadioStandby>: + 8011b04: 2000 movs r0, #0 + 8011b06: f001 b9bf b.w 8012e88 <SUBGRF_SetStandby> + ... + +08011b0c <RadioGetStatus>: + 8011b0c: b508 push {r3, lr} + 8011b0e: f001 f8c7 bl 8012ca0 <SUBGRF_GetOperatingMode> + 8011b12: 3804 subs r0, #4 + 8011b14: b2c0 uxtb r0, r0 + 8011b16: 2803 cmp r0, #3 + 8011b18: bf96 itet ls + 8011b1a: 4b02 ldrls r3, [pc, #8] ; (8011b24 <RadioGetStatus+0x18>) + 8011b1c: 2000 movhi r0, #0 + 8011b1e: 5c18 ldrbls r0, [r3, r0] + 8011b20: bd08 pop {r3, pc} + 8011b22: bf00 nop + 8011b24: 080159ac .word 0x080159ac + +08011b28 <RadioGetWakeupTime>: + 8011b28: b508 push {r3, lr} + 8011b2a: f001 fdba bl 80136a2 <SUBGRF_GetRadioWakeUpTime> + 8011b2e: 3003 adds r0, #3 + 8011b30: bd08 pop {r3, pc} + +08011b32 <RadioReadRegisters>: + 8011b32: f001 b949 b.w 8012dc8 <SUBGRF_ReadRegisters> + +08011b36 <RadioWriteRegisters>: + 8011b36: f001 b909 b.w 8012d4c <SUBGRF_WriteRegisters> + +08011b3a <RadioRssi>: + 8011b3a: b508 push {r3, lr} + 8011b3c: f001 fd00 bl 8013540 <SUBGRF_GetRssiInst> + 8011b40: b200 sxth r0, r0 + 8011b42: bd08 pop {r3, pc} + +08011b44 <RadioSetTxContinuousWave>: + 8011b44: b538 push {r3, r4, r5, lr} + 8011b46: 460d mov r5, r1 + 8011b48: 4614 mov r4, r2 + 8011b4a: f001 fb5d bl 8013208 <SUBGRF_SetRfFrequency> + 8011b4e: 4628 mov r0, r5 + 8011b50: f001 fd92 bl 8013678 <SUBGRF_SetRfTxPower> + 8011b54: 210e movs r1, #14 + 8011b56: 4605 mov r5, r0 + 8011b58: f640 101f movw r0, #2335 ; 0x91f + 8011b5c: f001 f8a6 bl 8012cac <SUBGRF_WriteRegister> + 8011b60: 4628 mov r0, r5 + 8011b62: 2101 movs r1, #1 + 8011b64: 4d07 ldr r5, [pc, #28] ; (8011b84 <RadioSetTxContinuousWave+0x40>) + 8011b66: f001 fd71 bl 801364c <SUBGRF_SetSwitch> + 8011b6a: f001 fa51 bl 8013010 <SUBGRF_SetTxContinuousWave> + 8011b6e: f44f 717a mov.w r1, #1000 ; 0x3e8 + 8011b72: 4361 muls r1, r4 + 8011b74: 4628 mov r0, r5 + 8011b76: f002 fab5 bl 80140e4 <UTIL_TIMER_SetPeriod> + 8011b7a: 4628 mov r0, r5 + 8011b7c: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 8011b80: f002 ba76 b.w 8014070 <UTIL_TIMER_Start> + 8011b84: 200027a4 .word 0x200027a4 + +08011b88 <RadioSetChannel>: + 8011b88: f001 bb3e b.w 8013208 <SUBGRF_SetRfFrequency> + +08011b8c <RadioStartCad>: + 8011b8c: b508 push {r3, lr} + 8011b8e: 4b08 ldr r3, [pc, #32] ; (8011bb0 <RadioStartCad+0x24>) + 8011b90: 2100 movs r1, #0 + 8011b92: f893 0056 ldrb.w r0, [r3, #86] ; 0x56 + 8011b96: f001 fd59 bl 801364c <SUBGRF_SetSwitch> + 8011b9a: 2300 movs r3, #0 + 8011b9c: f44f 71c0 mov.w r1, #384 ; 0x180 + 8011ba0: 461a mov r2, r3 + 8011ba2: 4608 mov r0, r1 + 8011ba4: f001 faca bl 801313c <SUBGRF_SetDioIrqParams> + 8011ba8: e8bd 4008 ldmia.w sp!, {r3, lr} + 8011bac: f001 ba24 b.w 8012ff8 <SUBGRF_SetCad> + 8011bb0: 20002748 .word 0x20002748 + +08011bb4 <RadioRx>: + 8011bb4: b510 push {r4, lr} + 8011bb6: 4604 mov r4, r0 + 8011bb8: f001 fe1e bl 80137f8 <RFW_Is_Init> + 8011bbc: 2801 cmp r0, #1 + 8011bbe: d11c bne.n 8011bfa <RadioRx+0x46> + 8011bc0: f001 fe22 bl 8013808 <RFW_ReceiveInit> + 8011bc4: b134 cbz r4, 8011bd4 <RadioRx+0x20> + 8011bc6: 4812 ldr r0, [pc, #72] ; (8011c10 <RadioRx+0x5c>) + 8011bc8: 4621 mov r1, r4 + 8011bca: f002 fa8b bl 80140e4 <UTIL_TIMER_SetPeriod> + 8011bce: 4810 ldr r0, [pc, #64] ; (8011c10 <RadioRx+0x5c>) + 8011bd0: f002 fa4e bl 8014070 <UTIL_TIMER_Start> + 8011bd4: 4c0f ldr r4, [pc, #60] ; (8011c14 <RadioRx+0x60>) + 8011bd6: 4b10 ldr r3, [pc, #64] ; (8011c18 <RadioRx+0x64>) + 8011bd8: 2100 movs r1, #0 + 8011bda: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8011bde: 65a1 str r1, [r4, #88] ; 0x58 + 8011be0: 619a str r2, [r3, #24] + 8011be2: f894 0056 ldrb.w r0, [r4, #86] ; 0x56 + 8011be6: f001 fd31 bl 801364c <SUBGRF_SetSwitch> + 8011bea: 7863 ldrb r3, [r4, #1] + 8011bec: b16b cbz r3, 8011c0a <RadioRx+0x56> + 8011bee: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 8011bf2: e8bd 4010 ldmia.w sp!, {r4, lr} + 8011bf6: f001 b97d b.w 8012ef4 <SUBGRF_SetRx> + 8011bfa: 2300 movs r3, #0 + 8011bfc: f240 2162 movw r1, #610 ; 0x262 + 8011c00: 461a mov r2, r3 + 8011c02: 4608 mov r0, r1 + 8011c04: f001 fa9a bl 801313c <SUBGRF_SetDioIrqParams> + 8011c08: e7dc b.n 8011bc4 <RadioRx+0x10> + 8011c0a: 68a0 ldr r0, [r4, #8] + 8011c0c: 0180 lsls r0, r0, #6 + 8011c0e: e7f0 b.n 8011bf2 <RadioRx+0x3e> + 8011c10: 20002730 .word 0x20002730 + 8011c14: 20002748 .word 0x20002748 + 8011c18: 48000400 .word 0x48000400 + +08011c1c <RadioSleep>: + 8011c1c: b508 push {r3, lr} + 8011c1e: f04f 0004 mov.w r0, #4 + 8011c22: f001 f917 bl 8012e54 <SUBGRF_SetSleep> + 8011c26: e8bd 4008 ldmia.w sp!, {r3, lr} + 8011c2a: 2002 movs r0, #2 + 8011c2c: f7f0 bfb8 b.w 8002ba0 <HAL_Delay> + +08011c30 <RadioRandom>: + 8011c30: b508 push {r3, lr} + 8011c32: 2300 movs r3, #0 + 8011c34: 461a mov r2, r3 + 8011c36: 4619 mov r1, r3 + 8011c38: 4618 mov r0, r3 + 8011c3a: f001 fa7f bl 801313c <SUBGRF_SetDioIrqParams> + 8011c3e: e8bd 4008 ldmia.w sp!, {r3, lr} + 8011c42: f001 b96d b.w 8012f20 <SUBGRF_GetRandom> + ... + +08011c48 <RadioInit>: + 8011c48: 4b1d ldr r3, [pc, #116] ; (8011cc0 <RadioInit+0x78>) + 8011c4a: b573 push {r0, r1, r4, r5, r6, lr} + 8011c4c: 4d1d ldr r5, [pc, #116] ; (8011cc4 <RadioInit+0x7c>) + 8011c4e: 6018 str r0, [r3, #0] + 8011c50: 2400 movs r4, #0 + 8011c52: 481d ldr r0, [pc, #116] ; (8011cc8 <RadioInit+0x80>) + 8011c54: 706c strb r4, [r5, #1] + 8011c56: e9c5 4401 strd r4, r4, [r5, #4] + 8011c5a: 65ac str r4, [r5, #88] ; 0x58 + 8011c5c: f001 fa98 bl 8013190 <SUBGRF_Init> + 8011c60: 81ac strh r4, [r5, #12] + 8011c62: f001 fa03 bl 801306c <SUBGRF_SetRegulatorMode> + 8011c66: 4621 mov r1, r4 + 8011c68: 4620 mov r0, r4 + 8011c6a: f001 fc4b bl 8013504 <SUBGRF_SetBufferBaseAddress> + 8011c6e: 4621 mov r1, r4 + 8011c70: 2204 movs r2, #4 + 8011c72: 2001 movs r0, #1 + 8011c74: f001 fafc bl 8013270 <SUBGRF_SetTxParams> + 8011c78: 4e14 ldr r6, [pc, #80] ; (8011ccc <RadioInit+0x84>) + 8011c7a: 4d15 ldr r5, [pc, #84] ; (8011cd0 <RadioInit+0x88>) + 8011c7c: f64f 71ff movw r1, #65535 ; 0xffff + 8011c80: 4623 mov r3, r4 + 8011c82: 4622 mov r2, r4 + 8011c84: 4608 mov r0, r1 + 8011c86: f001 fa59 bl 801313c <SUBGRF_SetDioIrqParams> + 8011c8a: f7ff ffc7 bl 8011c1c <RadioSleep> + 8011c8e: 4622 mov r2, r4 + 8011c90: 4b10 ldr r3, [pc, #64] ; (8011cd4 <RadioInit+0x8c>) + 8011c92: 9400 str r4, [sp, #0] + 8011c94: f04f 31ff mov.w r1, #4294967295 + 8011c98: 4630 mov r0, r6 + 8011c9a: f002 f93d bl 8013f18 <UTIL_TIMER_Create> + 8011c9e: 4b0e ldr r3, [pc, #56] ; (8011cd8 <RadioInit+0x90>) + 8011ca0: 9400 str r4, [sp, #0] + 8011ca2: 4622 mov r2, r4 + 8011ca4: f04f 31ff mov.w r1, #4294967295 + 8011ca8: 4628 mov r0, r5 + 8011caa: f002 f935 bl 8013f18 <UTIL_TIMER_Create> + 8011cae: 4630 mov r0, r6 + 8011cb0: f002 f990 bl 8013fd4 <UTIL_TIMER_Stop> + 8011cb4: 4628 mov r0, r5 + 8011cb6: b002 add sp, #8 + 8011cb8: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8011cbc: f002 b98a b.w 8013fd4 <UTIL_TIMER_Stop> + 8011cc0: 2000272c .word 0x2000272c + 8011cc4: 20002748 .word 0x20002748 + 8011cc8: 08012c91 .word 0x08012c91 + 8011ccc: 200027a4 .word 0x200027a4 + 8011cd0: 20002730 .word 0x20002730 + 8011cd4: 080119f1 .word 0x080119f1 + 8011cd8: 08011a11 .word 0x08011a11 + +08011cdc <RadioSetMaxPayloadLength>: + 8011cdc: 2801 cmp r0, #1 + 8011cde: 4808 ldr r0, [pc, #32] ; (8011d00 <RadioSetMaxPayloadLength+0x24>) + 8011ce0: d105 bne.n 8011cee <RadioSetMaxPayloadLength+0x12> + 8011ce2: 4b08 ldr r3, [pc, #32] ; (8011d04 <RadioSetMaxPayloadLength+0x28>) + 8011ce4: 77c1 strb r1, [r0, #31] + 8011ce6: 7019 strb r1, [r3, #0] + 8011ce8: 300e adds r0, #14 + 8011cea: f001 bba7 b.w 801343c <SUBGRF_SetPacketParams> + 8011cee: 7d43 ldrb r3, [r0, #21] + 8011cf0: 2b01 cmp r3, #1 + 8011cf2: d103 bne.n 8011cfc <RadioSetMaxPayloadLength+0x20> + 8011cf4: 4b03 ldr r3, [pc, #12] ; (8011d04 <RadioSetMaxPayloadLength+0x28>) + 8011cf6: 7581 strb r1, [r0, #22] + 8011cf8: 7019 strb r1, [r3, #0] + 8011cfa: e7f5 b.n 8011ce8 <RadioSetMaxPayloadLength+0xc> + 8011cfc: 4770 bx lr + 8011cfe: bf00 nop + 8011d00: 20002748 .word 0x20002748 + 8011d04: 200008c0 .word 0x200008c0 + +08011d08 <RadioSetPublicNetwork>: + 8011d08: 4b0d ldr r3, [pc, #52] ; (8011d40 <RadioSetPublicNetwork+0x38>) + 8011d0a: b510 push {r4, lr} + 8011d0c: 4604 mov r4, r0 + 8011d0e: 7318 strb r0, [r3, #12] + 8011d10: 7358 strb r0, [r3, #13] + 8011d12: 2001 movs r0, #1 + 8011d14: f000 f816 bl 8011d44 <RadioSetModem> + 8011d18: b15c cbz r4, 8011d32 <RadioSetPublicNetwork+0x2a> + 8011d1a: 2134 movs r1, #52 ; 0x34 + 8011d1c: f44f 60e8 mov.w r0, #1856 ; 0x740 + 8011d20: f000 ffc4 bl 8012cac <SUBGRF_WriteRegister> + 8011d24: 2144 movs r1, #68 ; 0x44 + 8011d26: e8bd 4010 ldmia.w sp!, {r4, lr} + 8011d2a: f240 7041 movw r0, #1857 ; 0x741 + 8011d2e: f000 bfbd b.w 8012cac <SUBGRF_WriteRegister> + 8011d32: 2114 movs r1, #20 + 8011d34: f44f 60e8 mov.w r0, #1856 ; 0x740 + 8011d38: f000 ffb8 bl 8012cac <SUBGRF_WriteRegister> + 8011d3c: 2124 movs r1, #36 ; 0x24 + 8011d3e: e7f2 b.n 8011d26 <RadioSetPublicNetwork+0x1e> + 8011d40: 20002748 .word 0x20002748 + +08011d44 <RadioSetModem>: + 8011d44: b538 push {r3, r4, r5, lr} + 8011d46: 4c11 ldr r4, [pc, #68] ; (8011d8c <RadioSetModem+0x48>) + 8011d48: 4605 mov r5, r0 + 8011d4a: 7020 strb r0, [r4, #0] + 8011d4c: f001 fd61 bl 8013812 <RFW_SetRadioModem> + 8011d50: 2d05 cmp r5, #5 + 8011d52: d804 bhi.n 8011d5e <RadioSetModem+0x1a> + 8011d54: e8df f005 tbb [pc, r5] + 8011d58: 17030b09 .word 0x17030b09 + 8011d5c: 0917 .short 0x0917 + 8011d5e: 2003 movs r0, #3 + 8011d60: f001 fa70 bl 8013244 <SUBGRF_SetPacketType> + 8011d64: 2300 movs r3, #0 + 8011d66: 7363 strb r3, [r4, #13] + 8011d68: bd38 pop {r3, r4, r5, pc} + 8011d6a: 2000 movs r0, #0 + 8011d6c: e7f8 b.n 8011d60 <RadioSetModem+0x1c> + 8011d6e: 2001 movs r0, #1 + 8011d70: f001 fa68 bl 8013244 <SUBGRF_SetPacketType> + 8011d74: 7b20 ldrb r0, [r4, #12] + 8011d76: 7b63 ldrb r3, [r4, #13] + 8011d78: 4283 cmp r3, r0 + 8011d7a: d0f5 beq.n 8011d68 <RadioSetModem+0x24> + 8011d7c: 7360 strb r0, [r4, #13] + 8011d7e: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 8011d82: f7ff bfc1 b.w 8011d08 <RadioSetPublicNetwork> + 8011d86: 2002 movs r0, #2 + 8011d88: e7ea b.n 8011d60 <RadioSetModem+0x1c> + 8011d8a: bf00 nop + 8011d8c: 20002748 .word 0x20002748 + +08011d90 <RadioSetTxGenericConfig>: + 8011d90: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 8011d94: 461e mov r6, r3 + 8011d96: b087 sub sp, #28 + 8011d98: 2300 movs r3, #0 + 8011d9a: 4605 mov r5, r0 + 8011d9c: e9cd 3301 strd r3, r3, [sp, #4] + 8011da0: 460c mov r4, r1 + 8011da2: 4617 mov r7, r2 + 8011da4: f001 fd27 bl 80137f6 <RFW_DeInit> + 8011da8: 2d03 cmp r5, #3 + 8011daa: d861 bhi.n 8011e70 <RadioSetTxGenericConfig+0xe0> + 8011dac: e8df f015 tbh [pc, r5, lsl #1] + 8011db0: 00c3007b .word 0x00c3007b + 8011db4: 0004010e .word 0x0004010e + 8011db8: 7ca2 ldrb r2, [r4, #18] + 8011dba: 2a08 cmp r2, #8 + 8011dbc: d904 bls.n 8011dc8 <RadioSetTxGenericConfig+0x38> + 8011dbe: f04f 30ff mov.w r0, #4294967295 + 8011dc2: b007 add sp, #28 + 8011dc4: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 8011dc8: 68a1 ldr r1, [r4, #8] + 8011dca: a801 add r0, sp, #4 + 8011dcc: f001 fedc bl 8013b88 <UTIL_MEM_cpy_8> + 8011dd0: 6821 ldr r1, [r4, #0] + 8011dd2: 2900 cmp r1, #0 + 8011dd4: d0f3 beq.n 8011dbe <RadioSetTxGenericConfig+0x2e> + 8011dd6: f242 7210 movw r2, #10000 ; 0x2710 + 8011dda: 4291 cmp r1, r2 + 8011ddc: 7ce3 ldrb r3, [r4, #19] + 8011dde: 4d86 ldr r5, [pc, #536] ; (8011ff8 <RadioSetTxGenericConfig+0x268>) + 8011de0: d851 bhi.n 8011e86 <RadioSetTxGenericConfig+0xf6> + 8011de2: 2203 movs r2, #3 + 8011de4: 73aa strb r2, [r5, #14] + 8011de6: f885 2038 strb.w r2, [r5, #56] ; 0x38 + 8011dea: 63e9 str r1, [r5, #60] ; 0x3c + 8011dec: f885 3044 strb.w r3, [r5, #68] ; 0x44 + 8011df0: f04f 0802 mov.w r8, #2 + 8011df4: 6863 ldr r3, [r4, #4] + 8011df6: 7da1 ldrb r1, [r4, #22] + 8011df8: 00db lsls r3, r3, #3 + 8011dfa: 822b strh r3, [r5, #16] + 8011dfc: 2304 movs r3, #4 + 8011dfe: 74ab strb r3, [r5, #18] + 8011e00: 7ca3 ldrb r3, [r4, #18] + 8011e02: 00db lsls r3, r3, #3 + 8011e04: 74eb strb r3, [r5, #19] + 8011e06: 2902 cmp r1, #2 + 8011e08: f04f 0300 mov.w r3, #0 + 8011e0c: 752b strb r3, [r5, #20] + 8011e0e: 7d63 ldrb r3, [r4, #21] + 8011e10: d002 beq.n 8011e18 <RadioSetTxGenericConfig+0x88> + 8011e12: 7d22 ldrb r2, [r4, #20] + 8011e14: 2a02 cmp r2, #2 + 8011e16: d142 bne.n 8011e9e <RadioSetTxGenericConfig+0x10e> + 8011e18: f103 020f add.w r2, r3, #15 + 8011e1c: b2d2 uxtb r2, r2 + 8011e1e: 2a01 cmp r2, #1 + 8011e20: d901 bls.n 8011e26 <RadioSetTxGenericConfig+0x96> + 8011e22: 2b01 cmp r3, #1 + 8011e24: d1cb bne.n 8011dbe <RadioSetTxGenericConfig+0x2e> + 8011e26: 4b75 ldr r3, [pc, #468] ; (8011ffc <RadioSetTxGenericConfig+0x26c>) + 8011e28: 4a75 ldr r2, [pc, #468] ; (8012000 <RadioSetTxGenericConfig+0x270>) + 8011e2a: 6819 ldr r1, [r3, #0] + 8011e2c: 9403 str r4, [sp, #12] + 8011e2e: f04f 0901 mov.w r9, #1 + 8011e32: a803 add r0, sp, #12 + 8011e34: f88d 9014 strb.w r9, [sp, #20] + 8011e38: f001 fcda bl 80137f0 <RFW_Init> + 8011e3c: 2800 cmp r0, #0 + 8011e3e: d1be bne.n 8011dbe <RadioSetTxGenericConfig+0x2e> + 8011e40: 7628 strb r0, [r5, #24] + 8011e42: f885 9017 strb.w r9, [r5, #23] + 8011e46: 7568 strb r0, [r5, #21] + 8011e48: f7ff fe5c bl 8011b04 <RadioStandby> + 8011e4c: 4640 mov r0, r8 + 8011e4e: f7ff ff79 bl 8011d44 <RadioSetModem> + 8011e52: 486c ldr r0, [pc, #432] ; (8012004 <RadioSetTxGenericConfig+0x274>) + 8011e54: f001 fa86 bl 8013364 <SUBGRF_SetModulationParams> + 8011e58: 486b ldr r0, [pc, #428] ; (8012008 <RadioSetTxGenericConfig+0x278>) + 8011e5a: f001 faef bl 801343c <SUBGRF_SetPacketParams> + 8011e5e: a801 add r0, sp, #4 + 8011e60: f000 ff84 bl 8012d6c <SUBGRF_SetSyncWord> + 8011e64: 8a20 ldrh r0, [r4, #16] + 8011e66: f000 ff55 bl 8012d14 <SUBGRF_SetWhiteningSeed> + 8011e6a: 89a0 ldrh r0, [r4, #12] + 8011e6c: f000 ff9a bl 8012da4 <SUBGRF_SetCrcPolynomial> + 8011e70: 4638 mov r0, r7 + 8011e72: f001 fc01 bl 8013678 <SUBGRF_SetRfTxPower> + 8011e76: 4c60 ldr r4, [pc, #384] ; (8011ff8 <RadioSetTxGenericConfig+0x268>) + 8011e78: f884 0056 strb.w r0, [r4, #86] ; 0x56 + 8011e7c: f001 fcc0 bl 8013800 <RFW_SetAntSwitch> + 8011e80: 6066 str r6, [r4, #4] + 8011e82: 2000 movs r0, #0 + 8011e84: e79d b.n 8011dc2 <RadioSetTxGenericConfig+0x32> + 8011e86: f04f 0800 mov.w r8, #0 + 8011e8a: 63e9 str r1, [r5, #60] ; 0x3c + 8011e8c: 0889 lsrs r1, r1, #2 + 8011e8e: f885 800e strb.w r8, [r5, #14] + 8011e92: f885 8038 strb.w r8, [r5, #56] ; 0x38 + 8011e96: f885 3044 strb.w r3, [r5, #68] ; 0x44 + 8011e9a: 6429 str r1, [r5, #64] ; 0x40 + 8011e9c: e7aa b.n 8011df4 <RadioSetTxGenericConfig+0x64> + 8011e9e: 75eb strb r3, [r5, #23] + 8011ea0: 7629 strb r1, [r5, #24] + 8011ea2: 756a strb r2, [r5, #21] + 8011ea4: e7d0 b.n 8011e48 <RadioSetTxGenericConfig+0xb8> + 8011ea6: 6823 ldr r3, [r4, #0] + 8011ea8: 2b00 cmp r3, #0 + 8011eaa: d088 beq.n 8011dbe <RadioSetTxGenericConfig+0x2e> + 8011eac: 7ca2 ldrb r2, [r4, #18] + 8011eae: 2a08 cmp r2, #8 + 8011eb0: d885 bhi.n 8011dbe <RadioSetTxGenericConfig+0x2e> + 8011eb2: 4d51 ldr r5, [pc, #324] ; (8011ff8 <RadioSetTxGenericConfig+0x268>) + 8011eb4: 68a1 ldr r1, [r4, #8] + 8011eb6: a801 add r0, sp, #4 + 8011eb8: f001 fe66 bl 8013b88 <UTIL_MEM_cpy_8> + 8011ebc: 2300 movs r3, #0 + 8011ebe: f885 3038 strb.w r3, [r5, #56] ; 0x38 + 8011ec2: 6822 ldr r2, [r4, #0] + 8011ec4: 63ea str r2, [r5, #60] ; 0x3c + 8011ec6: 7ce2 ldrb r2, [r4, #19] + 8011ec8: f885 2044 strb.w r2, [r5, #68] ; 0x44 + 8011ecc: 69a2 ldr r2, [r4, #24] + 8011ece: 73ab strb r3, [r5, #14] + 8011ed0: 642a str r2, [r5, #64] ; 0x40 + 8011ed2: 6862 ldr r2, [r4, #4] + 8011ed4: 7da1 ldrb r1, [r4, #22] + 8011ed6: 00d2 lsls r2, r2, #3 + 8011ed8: 822a strh r2, [r5, #16] + 8011eda: 2204 movs r2, #4 + 8011edc: 74aa strb r2, [r5, #18] + 8011ede: 7ca2 ldrb r2, [r4, #18] + 8011ee0: 752b strb r3, [r5, #20] + 8011ee2: 00d2 lsls r2, r2, #3 + 8011ee4: 2902 cmp r1, #2 + 8011ee6: 7d63 ldrb r3, [r4, #21] + 8011ee8: 74ea strb r2, [r5, #19] + 8011eea: d002 beq.n 8011ef2 <RadioSetTxGenericConfig+0x162> + 8011eec: 7d22 ldrb r2, [r4, #20] + 8011eee: 2a02 cmp r2, #2 + 8011ef0: d11d bne.n 8011f2e <RadioSetTxGenericConfig+0x19e> + 8011ef2: f103 020f add.w r2, r3, #15 + 8011ef6: b2d2 uxtb r2, r2 + 8011ef8: 2a01 cmp r2, #1 + 8011efa: d902 bls.n 8011f02 <RadioSetTxGenericConfig+0x172> + 8011efc: 2b01 cmp r3, #1 + 8011efe: f47f af5e bne.w 8011dbe <RadioSetTxGenericConfig+0x2e> + 8011f02: 4b3e ldr r3, [pc, #248] ; (8011ffc <RadioSetTxGenericConfig+0x26c>) + 8011f04: 4a3e ldr r2, [pc, #248] ; (8012000 <RadioSetTxGenericConfig+0x270>) + 8011f06: 6819 ldr r1, [r3, #0] + 8011f08: 9403 str r4, [sp, #12] + 8011f0a: f04f 0801 mov.w r8, #1 + 8011f0e: a803 add r0, sp, #12 + 8011f10: f88d 8014 strb.w r8, [sp, #20] + 8011f14: f001 fc6c bl 80137f0 <RFW_Init> + 8011f18: 2800 cmp r0, #0 + 8011f1a: f47f af50 bne.w 8011dbe <RadioSetTxGenericConfig+0x2e> + 8011f1e: 7628 strb r0, [r5, #24] + 8011f20: f885 8017 strb.w r8, [r5, #23] + 8011f24: 7568 strb r0, [r5, #21] + 8011f26: f7ff fded bl 8011b04 <RadioStandby> + 8011f2a: 2000 movs r0, #0 + 8011f2c: e78f b.n 8011e4e <RadioSetTxGenericConfig+0xbe> + 8011f2e: 75eb strb r3, [r5, #23] + 8011f30: 7629 strb r1, [r5, #24] + 8011f32: 756a strb r2, [r5, #21] + 8011f34: e7f7 b.n 8011f26 <RadioSetTxGenericConfig+0x196> + 8011f36: 4d30 ldr r5, [pc, #192] ; (8011ff8 <RadioSetTxGenericConfig+0x268>) + 8011f38: 2101 movs r1, #1 + 8011f3a: f885 1038 strb.w r1, [r5, #56] ; 0x38 + 8011f3e: 7822 ldrb r2, [r4, #0] + 8011f40: f885 2050 strb.w r2, [r5, #80] ; 0x50 + 8011f44: 7863 ldrb r3, [r4, #1] + 8011f46: f885 3051 strb.w r3, [r5, #81] ; 0x51 + 8011f4a: 78a3 ldrb r3, [r4, #2] + 8011f4c: f885 3052 strb.w r3, [r5, #82] ; 0x52 + 8011f50: 78e3 ldrb r3, [r4, #3] + 8011f52: 428b cmp r3, r1 + 8011f54: d002 beq.n 8011f5c <RadioSetTxGenericConfig+0x1cc> + 8011f56: 2b02 cmp r3, #2 + 8011f58: d003 beq.n 8011f62 <RadioSetTxGenericConfig+0x1d2> + 8011f5a: b93b cbnz r3, 8011f6c <RadioSetTxGenericConfig+0x1dc> + 8011f5c: f885 3053 strb.w r3, [r5, #83] ; 0x53 + 8011f60: e004 b.n 8011f6c <RadioSetTxGenericConfig+0x1dc> + 8011f62: 3a0b subs r2, #11 + 8011f64: 2a01 cmp r2, #1 + 8011f66: d829 bhi.n 8011fbc <RadioSetTxGenericConfig+0x22c> + 8011f68: f885 1053 strb.w r1, [r5, #83] ; 0x53 + 8011f6c: f04f 0801 mov.w r8, #1 + 8011f70: f885 800e strb.w r8, [r5, #14] + 8011f74: 88a3 ldrh r3, [r4, #4] + 8011f76: 83ab strh r3, [r5, #28] + 8011f78: 79a3 ldrb r3, [r4, #6] + 8011f7a: 77ab strb r3, [r5, #30] + 8011f7c: 79e3 ldrb r3, [r4, #7] + 8011f7e: f885 3020 strb.w r3, [r5, #32] + 8011f82: 7a23 ldrb r3, [r4, #8] + 8011f84: f885 3021 strb.w r3, [r5, #33] ; 0x21 + 8011f88: f7ff fdbc bl 8011b04 <RadioStandby> + 8011f8c: 4640 mov r0, r8 + 8011f8e: f7ff fed9 bl 8011d44 <RadioSetModem> + 8011f92: 481c ldr r0, [pc, #112] ; (8012004 <RadioSetTxGenericConfig+0x274>) + 8011f94: f001 f9e6 bl 8013364 <SUBGRF_SetModulationParams> + 8011f98: 481b ldr r0, [pc, #108] ; (8012008 <RadioSetTxGenericConfig+0x278>) + 8011f9a: f001 fa4f bl 801343c <SUBGRF_SetPacketParams> + 8011f9e: f895 3051 ldrb.w r3, [r5, #81] ; 0x51 + 8011fa2: 2b06 cmp r3, #6 + 8011fa4: f640 0089 movw r0, #2185 ; 0x889 + 8011fa8: d10a bne.n 8011fc0 <RadioSetTxGenericConfig+0x230> + 8011faa: f000 fe8f bl 8012ccc <SUBGRF_ReadRegister> + 8011fae: f000 01fb and.w r1, r0, #251 ; 0xfb + 8011fb2: f640 0089 movw r0, #2185 ; 0x889 + 8011fb6: f000 fe79 bl 8012cac <SUBGRF_WriteRegister> + 8011fba: e759 b.n 8011e70 <RadioSetTxGenericConfig+0xe0> + 8011fbc: 2300 movs r3, #0 + 8011fbe: e7cd b.n 8011f5c <RadioSetTxGenericConfig+0x1cc> + 8011fc0: f000 fe84 bl 8012ccc <SUBGRF_ReadRegister> + 8011fc4: f040 0104 orr.w r1, r0, #4 + 8011fc8: b2c9 uxtb r1, r1 + 8011fca: e7f2 b.n 8011fb2 <RadioSetTxGenericConfig+0x222> + 8011fcc: 6823 ldr r3, [r4, #0] + 8011fce: 3b01 subs r3, #1 + 8011fd0: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 8011fd4: f4bf aef3 bcs.w 8011dbe <RadioSetTxGenericConfig+0x2e> + 8011fd8: 2003 movs r0, #3 + 8011fda: f7ff feb3 bl 8011d44 <RadioSetModem> + 8011fde: 4806 ldr r0, [pc, #24] ; (8011ff8 <RadioSetTxGenericConfig+0x268>) + 8011fe0: 2302 movs r3, #2 + 8011fe2: f880 3038 strb.w r3, [r0, #56] ; 0x38 + 8011fe6: 6823 ldr r3, [r4, #0] + 8011fe8: 6483 str r3, [r0, #72] ; 0x48 + 8011fea: 2316 movs r3, #22 + 8011fec: f880 304c strb.w r3, [r0, #76] ; 0x4c + 8011ff0: 3038 adds r0, #56 ; 0x38 + 8011ff2: f001 f9b7 bl 8013364 <SUBGRF_SetModulationParams> + 8011ff6: e73b b.n 8011e70 <RadioSetTxGenericConfig+0xe0> + 8011ff8: 20002748 .word 0x20002748 + 8011ffc: 2000272c .word 0x2000272c + 8012000: 200027a4 .word 0x200027a4 + 8012004: 20002780 .word 0x20002780 + 8012008: 20002756 .word 0x20002756 + +0801200c <RadioSetRxGenericConfig>: + 801200c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8012010: 2600 movs r6, #0 + 8012012: b086 sub sp, #24 + 8012014: 461f mov r7, r3 + 8012016: 4614 mov r4, r2 + 8012018: e9cd 6601 strd r6, r6, [sp, #4] + 801201c: 4680 mov r8, r0 + 801201e: 460d mov r5, r1 + 8012020: f001 fbe9 bl 80137f6 <RFW_DeInit> + 8012024: 42b4 cmp r4, r6 + 8012026: 4c76 ldr r4, [pc, #472] ; (8012200 <RadioSetRxGenericConfig+0x1f4>) + 8012028: bf16 itet ne + 801202a: 2301 movne r3, #1 + 801202c: 4633 moveq r3, r6 + 801202e: 4637 movne r7, r6 + 8012030: 7063 strb r3, [r4, #1] + 8012032: f1b8 0f00 cmp.w r8, #0 + 8012036: d006 beq.n 8012046 <RadioSetRxGenericConfig+0x3a> + 8012038: f1b8 0f01 cmp.w r8, #1 + 801203c: d07c beq.n 8012138 <RadioSetRxGenericConfig+0x12c> + 801203e: 2000 movs r0, #0 + 8012040: b006 add sp, #24 + 8012042: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8012046: 68ab ldr r3, [r5, #8] + 8012048: 2b00 cmp r3, #0 + 801204a: f000 80d6 beq.w 80121fa <RadioSetRxGenericConfig+0x1ee> + 801204e: 68eb ldr r3, [r5, #12] + 8012050: 2b00 cmp r3, #0 + 8012052: f000 80d2 beq.w 80121fa <RadioSetRxGenericConfig+0x1ee> + 8012056: 7faa ldrb r2, [r5, #30] + 8012058: 2a08 cmp r2, #8 + 801205a: f200 80ce bhi.w 80121fa <RadioSetRxGenericConfig+0x1ee> + 801205e: 6929 ldr r1, [r5, #16] + 8012060: a801 add r0, sp, #4 + 8012062: f001 fd91 bl 8013b88 <UTIL_MEM_cpy_8> + 8012066: 6828 ldr r0, [r5, #0] + 8012068: 3800 subs r0, #0 + 801206a: bf18 it ne + 801206c: 2001 movne r0, #1 + 801206e: f000 ffd9 bl 8013024 <SUBGRF_SetStopRxTimerOnPreambleDetect> + 8012072: f884 8038 strb.w r8, [r4, #56] ; 0x38 + 8012076: 68ab ldr r3, [r5, #8] + 8012078: 63e3 str r3, [r4, #60] ; 0x3c + 801207a: f895 3020 ldrb.w r3, [r5, #32] + 801207e: f884 3044 strb.w r3, [r4, #68] ; 0x44 + 8012082: 6868 ldr r0, [r5, #4] + 8012084: f001 fb5a bl 801373c <SUBGRF_GetFskBandwidthRegValue> + 8012088: f884 800e strb.w r8, [r4, #14] + 801208c: f884 0045 strb.w r0, [r4, #69] ; 0x45 + 8012090: 68eb ldr r3, [r5, #12] + 8012092: 00db lsls r3, r3, #3 + 8012094: 8223 strh r3, [r4, #16] + 8012096: 7feb ldrb r3, [r5, #31] + 8012098: 74a3 strb r3, [r4, #18] + 801209a: 7fab ldrb r3, [r5, #30] + 801209c: 00db lsls r3, r3, #3 + 801209e: 74e3 strb r3, [r4, #19] + 80120a0: f895 3021 ldrb.w r3, [r5, #33] ; 0x21 + 80120a4: 7523 strb r3, [r4, #20] + 80120a6: f895 3022 ldrb.w r3, [r5, #34] ; 0x22 + 80120aa: 2b00 cmp r3, #0 + 80120ac: d13e bne.n 801212c <RadioSetRxGenericConfig+0x120> + 80120ae: 7d2a ldrb r2, [r5, #20] + 80120b0: f895 1024 ldrb.w r1, [r5, #36] ; 0x24 + 80120b4: 75a2 strb r2, [r4, #22] + 80120b6: 2902 cmp r1, #2 + 80120b8: f895 2023 ldrb.w r2, [r5, #35] ; 0x23 + 80120bc: d001 beq.n 80120c2 <RadioSetRxGenericConfig+0xb6> + 80120be: 2b02 cmp r3, #2 + 80120c0: d136 bne.n 8012130 <RadioSetRxGenericConfig+0x124> + 80120c2: f102 030f add.w r3, r2, #15 + 80120c6: b2db uxtb r3, r3 + 80120c8: 2b01 cmp r3, #1 + 80120ca: d902 bls.n 80120d2 <RadioSetRxGenericConfig+0xc6> + 80120cc: 2a01 cmp r2, #1 + 80120ce: f040 8094 bne.w 80121fa <RadioSetRxGenericConfig+0x1ee> + 80120d2: 2300 movs r3, #0 + 80120d4: f88d 3014 strb.w r3, [sp, #20] + 80120d8: 4b4a ldr r3, [pc, #296] ; (8012204 <RadioSetRxGenericConfig+0x1f8>) + 80120da: 4a4b ldr r2, [pc, #300] ; (8012208 <RadioSetRxGenericConfig+0x1fc>) + 80120dc: 6819 ldr r1, [r3, #0] + 80120de: 9504 str r5, [sp, #16] + 80120e0: a803 add r0, sp, #12 + 80120e2: f001 fb85 bl 80137f0 <RFW_Init> + 80120e6: 2800 cmp r0, #0 + 80120e8: f040 8087 bne.w 80121fa <RadioSetRxGenericConfig+0x1ee> + 80120ec: 2301 movs r3, #1 + 80120ee: 7620 strb r0, [r4, #24] + 80120f0: 75e3 strb r3, [r4, #23] + 80120f2: 7560 strb r0, [r4, #21] + 80120f4: f7ff fd06 bl 8011b04 <RadioStandby> + 80120f8: 2000 movs r0, #0 + 80120fa: f7ff fe23 bl 8011d44 <RadioSetModem> + 80120fe: 4843 ldr r0, [pc, #268] ; (801220c <RadioSetRxGenericConfig+0x200>) + 8012100: f001 f930 bl 8013364 <SUBGRF_SetModulationParams> + 8012104: 4842 ldr r0, [pc, #264] ; (8012210 <RadioSetRxGenericConfig+0x204>) + 8012106: f001 f999 bl 801343c <SUBGRF_SetPacketParams> + 801210a: a801 add r0, sp, #4 + 801210c: f000 fe2e bl 8012d6c <SUBGRF_SetSyncWord> + 8012110: 8ba8 ldrh r0, [r5, #28] + 8012112: f000 fdff bl 8012d14 <SUBGRF_SetWhiteningSeed> + 8012116: 8b28 ldrh r0, [r5, #24] + 8012118: f000 fe44 bl 8012da4 <SUBGRF_SetCrcPolynomial> + 801211c: f44f 53fa mov.w r3, #8000 ; 0x1f40 + 8012120: 68aa ldr r2, [r5, #8] + 8012122: 437b muls r3, r7 + 8012124: fbb3 f3f2 udiv r3, r3, r2 + 8012128: 60a3 str r3, [r4, #8] + 801212a: e788 b.n 801203e <RadioSetRxGenericConfig+0x32> + 801212c: 22ff movs r2, #255 ; 0xff + 801212e: e7bf b.n 80120b0 <RadioSetRxGenericConfig+0xa4> + 8012130: 75e2 strb r2, [r4, #23] + 8012132: 7621 strb r1, [r4, #24] + 8012134: 7563 strb r3, [r4, #21] + 8012136: e7dd b.n 80120f4 <RadioSetRxGenericConfig+0xe8> + 8012138: 8e2b ldrh r3, [r5, #48] ; 0x30 + 801213a: 2b00 cmp r3, #0 + 801213c: d05d beq.n 80121fa <RadioSetRxGenericConfig+0x1ee> + 801213e: f895 3032 ldrb.w r3, [r5, #50] ; 0x32 + 8012142: 6aa8 ldr r0, [r5, #40] ; 0x28 + 8012144: 2b01 cmp r3, #1 + 8012146: bf0c ite eq + 8012148: f895 8014 ldrbeq.w r8, [r5, #20] + 801214c: f04f 08ff movne.w r8, #255 ; 0xff + 8012150: 3800 subs r0, #0 + 8012152: bf18 it ne + 8012154: 2001 movne r0, #1 + 8012156: f000 ff65 bl 8013024 <SUBGRF_SetStopRxTimerOnPreambleDetect> + 801215a: b2f8 uxtb r0, r7 + 801215c: f000 ff6e bl 801303c <SUBGRF_SetLoRaSymbNumTimeout> + 8012160: 2101 movs r1, #1 + 8012162: f884 1038 strb.w r1, [r4, #56] ; 0x38 + 8012166: f895 202c ldrb.w r2, [r5, #44] ; 0x2c + 801216a: f884 2050 strb.w r2, [r4, #80] ; 0x50 + 801216e: f895 302d ldrb.w r3, [r5, #45] ; 0x2d + 8012172: f884 3051 strb.w r3, [r4, #81] ; 0x51 + 8012176: f895 302e ldrb.w r3, [r5, #46] ; 0x2e + 801217a: f884 3052 strb.w r3, [r4, #82] ; 0x52 + 801217e: f895 302f ldrb.w r3, [r5, #47] ; 0x2f + 8012182: 428b cmp r3, r1 + 8012184: d002 beq.n 801218c <RadioSetRxGenericConfig+0x180> + 8012186: 2b02 cmp r3, #2 + 8012188: d003 beq.n 8012192 <RadioSetRxGenericConfig+0x186> + 801218a: b93b cbnz r3, 801219c <RadioSetRxGenericConfig+0x190> + 801218c: f884 3053 strb.w r3, [r4, #83] ; 0x53 + 8012190: e004 b.n 801219c <RadioSetRxGenericConfig+0x190> + 8012192: 3a0b subs r2, #11 + 8012194: 2a01 cmp r2, #1 + 8012196: d828 bhi.n 80121ea <RadioSetRxGenericConfig+0x1de> + 8012198: f884 1053 strb.w r1, [r4, #83] ; 0x53 + 801219c: 8e2b ldrh r3, [r5, #48] ; 0x30 + 801219e: 83a3 strh r3, [r4, #28] + 80121a0: f895 3032 ldrb.w r3, [r5, #50] ; 0x32 + 80121a4: 77a3 strb r3, [r4, #30] + 80121a6: 8eab ldrh r3, [r5, #52] ; 0x34 + 80121a8: 8423 strh r3, [r4, #32] + 80121aa: 2601 movs r6, #1 + 80121ac: 73a6 strb r6, [r4, #14] + 80121ae: f884 801f strb.w r8, [r4, #31] + 80121b2: f7ff fca7 bl 8011b04 <RadioStandby> + 80121b6: 4630 mov r0, r6 + 80121b8: f7ff fdc4 bl 8011d44 <RadioSetModem> + 80121bc: 4813 ldr r0, [pc, #76] ; (801220c <RadioSetRxGenericConfig+0x200>) + 80121be: f001 f8d1 bl 8013364 <SUBGRF_SetModulationParams> + 80121c2: 4813 ldr r0, [pc, #76] ; (8012210 <RadioSetRxGenericConfig+0x204>) + 80121c4: f001 f93a bl 801343c <SUBGRF_SetPacketParams> + 80121c8: f894 3021 ldrb.w r3, [r4, #33] ; 0x21 + 80121cc: 42b3 cmp r3, r6 + 80121ce: f240 7036 movw r0, #1846 ; 0x736 + 80121d2: d10c bne.n 80121ee <RadioSetRxGenericConfig+0x1e2> + 80121d4: f000 fd7a bl 8012ccc <SUBGRF_ReadRegister> + 80121d8: f000 01fb and.w r1, r0, #251 ; 0xfb + 80121dc: f240 7036 movw r0, #1846 ; 0x736 + 80121e0: f000 fd64 bl 8012cac <SUBGRF_WriteRegister> + 80121e4: f64f 73ff movw r3, #65535 ; 0xffff + 80121e8: e79e b.n 8012128 <RadioSetRxGenericConfig+0x11c> + 80121ea: 2300 movs r3, #0 + 80121ec: e7ce b.n 801218c <RadioSetRxGenericConfig+0x180> + 80121ee: f000 fd6d bl 8012ccc <SUBGRF_ReadRegister> + 80121f2: f040 0104 orr.w r1, r0, #4 + 80121f6: b2c9 uxtb r1, r1 + 80121f8: e7f0 b.n 80121dc <RadioSetRxGenericConfig+0x1d0> + 80121fa: f04f 30ff mov.w r0, #4294967295 + 80121fe: e71f b.n 8012040 <RadioSetRxGenericConfig+0x34> + 8012200: 20002748 .word 0x20002748 + 8012204: 2000272c .word 0x2000272c + 8012208: 20002730 .word 0x20002730 + 801220c: 20002780 .word 0x20002780 + 8012210: 20002756 .word 0x20002756 + +08012214 <RadioSetTxConfig>: + 8012214: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8012218: b085 sub sp, #20 + 801221a: 4682 mov sl, r0 + 801221c: 9d0e ldr r5, [sp, #56] ; 0x38 + 801221e: f8bd b040 ldrh.w fp, [sp, #64] ; 0x40 + 8012222: f89d 7044 ldrb.w r7, [sp, #68] ; 0x44 + 8012226: f89d 9048 ldrb.w r9, [sp, #72] ; 0x48 + 801222a: 9201 str r2, [sp, #4] + 801222c: 4688 mov r8, r1 + 801222e: 461e mov r6, r3 + 8012230: f001 fae1 bl 80137f6 <RFW_DeInit> + 8012234: f1ba 0f01 cmp.w sl, #1 + 8012238: 4c52 ldr r4, [pc, #328] ; (8012384 <RadioSetTxConfig+0x170>) + 801223a: d054 beq.n 80122e6 <RadioSetTxConfig+0xd2> + 801223c: f1ba 0f04 cmp.w sl, #4 + 8012240: f000 8091 beq.w 8012366 <RadioSetTxConfig+0x152> + 8012244: f1ba 0f00 cmp.w sl, #0 + 8012248: d13a bne.n 80122c0 <RadioSetTxConfig+0xac> + 801224a: 220b movs r2, #11 + 801224c: 4630 mov r0, r6 + 801224e: f884 2044 strb.w r2, [r4, #68] ; 0x44 + 8012252: f884 a038 strb.w sl, [r4, #56] ; 0x38 + 8012256: 63e5 str r5, [r4, #60] ; 0x3c + 8012258: f001 fa70 bl 801373c <SUBGRF_GetFskBandwidthRegValue> + 801225c: 9b01 ldr r3, [sp, #4] + 801225e: 6423 str r3, [r4, #64] ; 0x40 + 8012260: ea4f 03cb mov.w r3, fp, lsl #3 + 8012264: f1b9 0f00 cmp.w r9, #0 + 8012268: 8223 strh r3, [r4, #16] + 801226a: f641 0304 movw r3, #6148 ; 0x1804 + 801226e: 8263 strh r3, [r4, #18] + 8012270: bf14 ite ne + 8012272: 23f2 movne r3, #242 ; 0xf2 + 8012274: 2301 moveq r3, #1 + 8012276: 75e3 strb r3, [r4, #23] + 8012278: f087 0701 eor.w r7, r7, #1 + 801227c: 2301 movs r3, #1 + 801227e: 7623 strb r3, [r4, #24] + 8012280: f884 0045 strb.w r0, [r4, #69] ; 0x45 + 8012284: f884 a00e strb.w sl, [r4, #14] + 8012288: f884 a014 strb.w sl, [r4, #20] + 801228c: 7567 strb r7, [r4, #21] + 801228e: f7ff fc39 bl 8011b04 <RadioStandby> + 8012292: 4650 mov r0, sl + 8012294: f7ff fd56 bl 8011d44 <RadioSetModem> + 8012298: f104 0038 add.w r0, r4, #56 ; 0x38 + 801229c: f001 f862 bl 8013364 <SUBGRF_SetModulationParams> + 80122a0: f104 000e add.w r0, r4, #14 + 80122a4: f001 f8ca bl 801343c <SUBGRF_SetPacketParams> + 80122a8: 4a37 ldr r2, [pc, #220] ; (8012388 <RadioSetTxConfig+0x174>) + 80122aa: 6810 ldr r0, [r2, #0] + 80122ac: 6851 ldr r1, [r2, #4] + 80122ae: ab02 add r3, sp, #8 + 80122b0: c303 stmia r3!, {r0, r1} + 80122b2: a802 add r0, sp, #8 + 80122b4: f000 fd5a bl 8012d6c <SUBGRF_SetSyncWord> + 80122b8: f240 10ff movw r0, #511 ; 0x1ff + 80122bc: f000 fd2a bl 8012d14 <SUBGRF_SetWhiteningSeed> + 80122c0: 4640 mov r0, r8 + 80122c2: f001 f9d9 bl 8013678 <SUBGRF_SetRfTxPower> + 80122c6: 210e movs r1, #14 + 80122c8: f884 0056 strb.w r0, [r4, #86] ; 0x56 + 80122cc: f640 101f movw r0, #2335 ; 0x91f + 80122d0: f000 fcec bl 8012cac <SUBGRF_WriteRegister> + 80122d4: f894 0056 ldrb.w r0, [r4, #86] ; 0x56 + 80122d8: f001 fa92 bl 8013800 <RFW_SetAntSwitch> + 80122dc: 9b16 ldr r3, [sp, #88] ; 0x58 + 80122de: 6063 str r3, [r4, #4] + 80122e0: b005 add sp, #20 + 80122e2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80122e6: 4929 ldr r1, [pc, #164] ; (801238c <RadioSetTxConfig+0x178>) + 80122e8: f884 a038 strb.w sl, [r4, #56] ; 0x38 + 80122ec: b2ea uxtb r2, r5 + 80122ee: 5d89 ldrb r1, [r1, r6] + 80122f0: f884 2050 strb.w r2, [r4, #80] ; 0x50 + 80122f4: bb76 cbnz r6, 8012354 <RadioSetTxConfig+0x140> + 80122f6: 3d0b subs r5, #11 + 80122f8: 2d01 cmp r5, #1 + 80122fa: bf8c ite hi + 80122fc: 2500 movhi r5, #0 + 80122fe: 2501 movls r5, #1 + 8012300: 3a05 subs r2, #5 + 8012302: 2a01 cmp r2, #1 + 8012304: d804 bhi.n 8012310 <RadioSetTxConfig+0xfc> + 8012306: f1bb 0f0c cmp.w fp, #12 + 801230a: bf38 it cc + 801230c: f04f 0b0c movcc.w fp, #12 + 8012310: 4b1f ldr r3, [pc, #124] ; (8012390 <RadioSetTxConfig+0x17c>) + 8012312: f89d 203c ldrb.w r2, [sp, #60] ; 0x3c + 8012316: 781b ldrb r3, [r3, #0] + 8012318: f884 5053 strb.w r5, [r4, #83] ; 0x53 + 801231c: 77e3 strb r3, [r4, #31] + 801231e: 2501 movs r5, #1 + 8012320: f89d 3054 ldrb.w r3, [sp, #84] ; 0x54 + 8012324: f884 1051 strb.w r1, [r4, #81] ; 0x51 + 8012328: f884 2052 strb.w r2, [r4, #82] ; 0x52 + 801232c: f884 3021 strb.w r3, [r4, #33] ; 0x21 + 8012330: 73a5 strb r5, [r4, #14] + 8012332: f8a4 b01c strh.w fp, [r4, #28] + 8012336: 77a7 strb r7, [r4, #30] + 8012338: f884 9020 strb.w r9, [r4, #32] + 801233c: f7ff fbe2 bl 8011b04 <RadioStandby> + 8012340: 4628 mov r0, r5 + 8012342: f7ff fcff bl 8011d44 <RadioSetModem> + 8012346: 4813 ldr r0, [pc, #76] ; (8012394 <RadioSetTxConfig+0x180>) + 8012348: f001 f80c bl 8013364 <SUBGRF_SetModulationParams> + 801234c: 4812 ldr r0, [pc, #72] ; (8012398 <RadioSetTxConfig+0x184>) + 801234e: f001 f875 bl 801343c <SUBGRF_SetPacketParams> + 8012352: e7b5 b.n 80122c0 <RadioSetTxConfig+0xac> + 8012354: 2e01 cmp r6, #1 + 8012356: d104 bne.n 8012362 <RadioSetTxConfig+0x14e> + 8012358: f1a5 030c sub.w r3, r5, #12 + 801235c: 425d negs r5, r3 + 801235e: 415d adcs r5, r3 + 8012360: e7ce b.n 8012300 <RadioSetTxConfig+0xec> + 8012362: 2500 movs r5, #0 + 8012364: e7cc b.n 8012300 <RadioSetTxConfig+0xec> + 8012366: 4650 mov r0, sl + 8012368: f7ff fcec bl 8011d44 <RadioSetModem> + 801236c: 2302 movs r3, #2 + 801236e: f884 3038 strb.w r3, [r4, #56] ; 0x38 + 8012372: f104 0038 add.w r0, r4, #56 ; 0x38 + 8012376: 2316 movs r3, #22 + 8012378: 64a5 str r5, [r4, #72] ; 0x48 + 801237a: f884 304c strb.w r3, [r4, #76] ; 0x4c + 801237e: f000 fff1 bl 8013364 <SUBGRF_SetModulationParams> + 8012382: e79d b.n 80122c0 <RadioSetTxConfig+0xac> + 8012384: 20002748 .word 0x20002748 + 8012388: 080145cc .word 0x080145cc + 801238c: 0801597a .word 0x0801597a + 8012390: 200008c0 .word 0x200008c0 + 8012394: 20002780 .word 0x20002780 + 8012398: 20002756 .word 0x20002756 + +0801239c <RadioSetRxConfig>: + 801239c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80123a0: b087 sub sp, #28 + 80123a2: f8df b2b4 ldr.w fp, [pc, #692] ; 8012658 <RadioSetRxConfig+0x2bc> + 80123a6: f89d a064 ldrb.w sl, [sp, #100] ; 0x64 + 80123aa: f89d 904c ldrb.w r9, [sp, #76] ; 0x4c + 80123ae: 9302 str r3, [sp, #8] + 80123b0: 4614 mov r4, r2 + 80123b2: f89d 3054 ldrb.w r3, [sp, #84] ; 0x54 + 80123b6: f89d 2050 ldrb.w r2, [sp, #80] ; 0x50 + 80123ba: f8bd 8048 ldrh.w r8, [sp, #72] ; 0x48 + 80123be: 9203 str r2, [sp, #12] + 80123c0: 4605 mov r5, r0 + 80123c2: f88b a001 strb.w sl, [fp, #1] + 80123c6: f8bd 6044 ldrh.w r6, [sp, #68] ; 0x44 + 80123ca: 9301 str r3, [sp, #4] + 80123cc: 460f mov r7, r1 + 80123ce: f001 fa12 bl 80137f6 <RFW_DeInit> + 80123d2: f1ba 0f00 cmp.w sl, #0 + 80123d6: bf18 it ne + 80123d8: f04f 0800 movne.w r8, #0 + 80123dc: f8df a27c ldr.w sl, [pc, #636] ; 801265c <RadioSetRxConfig+0x2c0> + 80123e0: 9a03 ldr r2, [sp, #12] + 80123e2: f1b9 0f00 cmp.w r9, #0 + 80123e6: bf08 it eq + 80123e8: 22ff moveq r2, #255 ; 0xff + 80123ea: 2d01 cmp r5, #1 + 80123ec: f88a 2000 strb.w r2, [sl] + 80123f0: f000 80c8 beq.w 8012584 <RadioSetRxConfig+0x1e8> + 80123f4: 2d05 cmp r5, #5 + 80123f6: d048 beq.n 801248a <RadioSetRxConfig+0xee> + 80123f8: 2d00 cmp r5, #0 + 80123fa: f040 80c0 bne.w 801257e <RadioSetRxConfig+0x1e2> + 80123fe: 4628 mov r0, r5 + 8012400: f000 fe10 bl 8013024 <SUBGRF_SetStopRxTimerOnPreambleDetect> + 8012404: 220b movs r2, #11 + 8012406: 4638 mov r0, r7 + 8012408: f88b 2044 strb.w r2, [fp, #68] ; 0x44 + 801240c: f88b 5038 strb.w r5, [fp, #56] ; 0x38 + 8012410: f8cb 403c str.w r4, [fp, #60] ; 0x3c + 8012414: f001 f992 bl 801373c <SUBGRF_GetFskBandwidthRegValue> + 8012418: 9b01 ldr r3, [sp, #4] + 801241a: f88b 0045 strb.w r0, [fp, #69] ; 0x45 + 801241e: f641 0204 movw r2, #6148 ; 0x1804 + 8012422: 2b00 cmp r3, #0 + 8012424: f8ab 2012 strh.w r2, [fp, #18] + 8012428: f89a 2000 ldrb.w r2, [sl] + 801242c: f88b 2016 strb.w r2, [fp, #22] + 8012430: bf14 ite ne + 8012432: 22f2 movne r2, #242 ; 0xf2 + 8012434: 2201 moveq r2, #1 + 8012436: f88b 2017 strb.w r2, [fp, #23] + 801243a: 00f6 lsls r6, r6, #3 + 801243c: 2201 movs r2, #1 + 801243e: f089 0901 eor.w r9, r9, #1 + 8012442: f88b 2018 strb.w r2, [fp, #24] + 8012446: f88b 500e strb.w r5, [fp, #14] + 801244a: f8ab 6010 strh.w r6, [fp, #16] + 801244e: f88b 5014 strb.w r5, [fp, #20] + 8012452: f88b 9015 strb.w r9, [fp, #21] + 8012456: f7ff fb55 bl 8011b04 <RadioStandby> + 801245a: 4628 mov r0, r5 + 801245c: f7ff fc72 bl 8011d44 <RadioSetModem> + 8012460: f10b 0038 add.w r0, fp, #56 ; 0x38 + 8012464: f000 ff7e bl 8013364 <SUBGRF_SetModulationParams> + 8012468: f10b 000e add.w r0, fp, #14 + 801246c: f000 ffe6 bl 801343c <SUBGRF_SetPacketParams> + 8012470: 497b ldr r1, [pc, #492] ; (8012660 <RadioSetRxConfig+0x2c4>) + 8012472: 6808 ldr r0, [r1, #0] + 8012474: 6849 ldr r1, [r1, #4] + 8012476: aa04 add r2, sp, #16 + 8012478: c203 stmia r2!, {r0, r1} + 801247a: a804 add r0, sp, #16 + 801247c: f000 fc76 bl 8012d6c <SUBGRF_SetSyncWord> + 8012480: f240 10ff movw r0, #511 ; 0x1ff + 8012484: f000 fc46 bl 8012d14 <SUBGRF_SetWhiteningSeed> + 8012488: e071 b.n 801256e <RadioSetRxConfig+0x1d2> + 801248a: 2001 movs r0, #1 + 801248c: f000 fdca bl 8013024 <SUBGRF_SetStopRxTimerOnPreambleDetect> + 8012490: 2209 movs r2, #9 + 8012492: f04f 0900 mov.w r9, #0 + 8012496: f88b 2044 strb.w r2, [fp, #68] ; 0x44 + 801249a: 4638 mov r0, r7 + 801249c: f44f 7248 mov.w r2, #800 ; 0x320 + 80124a0: f8cb 2040 str.w r2, [fp, #64] ; 0x40 + 80124a4: f88b 9038 strb.w r9, [fp, #56] ; 0x38 + 80124a8: f8cb 403c str.w r4, [fp, #60] ; 0x3c + 80124ac: f001 f946 bl 801373c <SUBGRF_GetFskBandwidthRegValue> + 80124b0: f44f 5280 mov.w r2, #4096 ; 0x1000 + 80124b4: f8ab 2012 strh.w r2, [fp, #18] + 80124b8: f89a 2000 ldrb.w r2, [sl] + 80124bc: f88b 0045 strb.w r0, [fp, #69] ; 0x45 + 80124c0: f88b 2016 strb.w r2, [fp, #22] + 80124c4: 4628 mov r0, r5 + 80124c6: 2201 movs r2, #1 + 80124c8: 00f6 lsls r6, r6, #3 + 80124ca: f88b 2017 strb.w r2, [fp, #23] + 80124ce: f88b 900e strb.w r9, [fp, #14] + 80124d2: f8ab 6010 strh.w r6, [fp, #16] + 80124d6: f8ab 9014 strh.w r9, [fp, #20] + 80124da: f88b 9018 strb.w r9, [fp, #24] + 80124de: f7ff fc31 bl 8011d44 <RadioSetModem> + 80124e2: f10b 0038 add.w r0, fp, #56 ; 0x38 + 80124e6: f000 ff3d bl 8013364 <SUBGRF_SetModulationParams> + 80124ea: f10b 000e add.w r0, fp, #14 + 80124ee: f000 ffa5 bl 801343c <SUBGRF_SetPacketParams> + 80124f2: 495b ldr r1, [pc, #364] ; (8012660 <RadioSetRxConfig+0x2c4>) + 80124f4: 6888 ldr r0, [r1, #8] + 80124f6: 68c9 ldr r1, [r1, #12] + 80124f8: aa04 add r2, sp, #16 + 80124fa: c203 stmia r2!, {r0, r1} + 80124fc: a804 add r0, sp, #16 + 80124fe: f000 fc35 bl 8012d6c <SUBGRF_SetSyncWord> + 8012502: f240 10ff movw r0, #511 ; 0x1ff + 8012506: f000 fc05 bl 8012d14 <SUBGRF_SetWhiteningSeed> + 801250a: f640 00b8 movw r0, #2232 ; 0x8b8 + 801250e: f000 fbdd bl 8012ccc <SUBGRF_ReadRegister> + 8012512: f000 01ef and.w r1, r0, #239 ; 0xef + 8012516: f640 00b8 movw r0, #2232 ; 0x8b8 + 801251a: f000 fbc7 bl 8012cac <SUBGRF_WriteRegister> + 801251e: 2104 movs r1, #4 + 8012520: f640 00b9 movw r0, #2233 ; 0x8b9 + 8012524: f000 fbc2 bl 8012cac <SUBGRF_WriteRegister> + 8012528: f640 009b movw r0, #2203 ; 0x89b + 801252c: f000 fbce bl 8012ccc <SUBGRF_ReadRegister> + 8012530: f000 01e3 and.w r1, r0, #227 ; 0xe3 + 8012534: f041 0108 orr.w r1, r1, #8 + 8012538: f640 009b movw r0, #2203 ; 0x89b + 801253c: f000 fbb6 bl 8012cac <SUBGRF_WriteRegister> + 8012540: f240 60d1 movw r0, #1745 ; 0x6d1 + 8012544: f000 fbc2 bl 8012ccc <SUBGRF_ReadRegister> + 8012548: f040 0118 orr.w r1, r0, #24 + 801254c: b2c9 uxtb r1, r1 + 801254e: f240 60d1 movw r0, #1745 ; 0x6d1 + 8012552: f000 fbab bl 8012cac <SUBGRF_WriteRegister> + 8012556: f240 60ac movw r0, #1708 ; 0x6ac + 801255a: f000 fbb7 bl 8012ccc <SUBGRF_ReadRegister> + 801255e: f000 018f and.w r1, r0, #143 ; 0x8f + 8012562: f041 0150 orr.w r1, r1, #80 ; 0x50 + 8012566: f240 60ac movw r0, #1708 ; 0x6ac + 801256a: f000 fb9f bl 8012cac <SUBGRF_WriteRegister> + 801256e: f44f 52fa mov.w r2, #8000 ; 0x1f40 + 8012572: fb02 f208 mul.w r2, r2, r8 + 8012576: fbb2 f2f4 udiv r2, r2, r4 + 801257a: f8cb 2008 str.w r2, [fp, #8] + 801257e: b007 add sp, #28 + 8012580: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8012584: 2000 movs r0, #0 + 8012586: f000 fd4d bl 8013024 <SUBGRF_SetStopRxTimerOnPreambleDetect> + 801258a: 4936 ldr r1, [pc, #216] ; (8012664 <RadioSetRxConfig+0x2c8>) + 801258c: f88b 5038 strb.w r5, [fp, #56] ; 0x38 + 8012590: b2e2 uxtb r2, r4 + 8012592: 5dc9 ldrb r1, [r1, r7] + 8012594: f88b 2050 strb.w r2, [fp, #80] ; 0x50 + 8012598: 2f00 cmp r7, #0 + 801259a: d14d bne.n 8012638 <RadioSetRxConfig+0x29c> + 801259c: 3c0b subs r4, #11 + 801259e: 2c01 cmp r4, #1 + 80125a0: bf8c ite hi + 80125a2: 2400 movhi r4, #0 + 80125a4: 2401 movls r4, #1 + 80125a6: 3a05 subs r2, #5 + 80125a8: 2a01 cmp r2, #1 + 80125aa: d802 bhi.n 80125b2 <RadioSetRxConfig+0x216> + 80125ac: 2e0c cmp r6, #12 + 80125ae: bf38 it cc + 80125b0: 260c movcc r6, #12 + 80125b2: 9b02 ldr r3, [sp, #8] + 80125b4: f89a 2000 ldrb.w r2, [sl] + 80125b8: f88b 3052 strb.w r3, [fp, #82] ; 0x52 + 80125bc: f88b 4053 strb.w r4, [fp, #83] ; 0x53 + 80125c0: 9b01 ldr r3, [sp, #4] + 80125c2: f88b 201f strb.w r2, [fp, #31] + 80125c6: 2401 movs r4, #1 + 80125c8: f89d 2060 ldrb.w r2, [sp, #96] ; 0x60 + 80125cc: f88b 2021 strb.w r2, [fp, #33] ; 0x21 + 80125d0: f88b 1051 strb.w r1, [fp, #81] ; 0x51 + 80125d4: f88b 3020 strb.w r3, [fp, #32] + 80125d8: f88b 400e strb.w r4, [fp, #14] + 80125dc: f8ab 601c strh.w r6, [fp, #28] + 80125e0: f88b 901e strb.w r9, [fp, #30] + 80125e4: f7ff fa8e bl 8011b04 <RadioStandby> + 80125e8: 4620 mov r0, r4 + 80125ea: f7ff fbab bl 8011d44 <RadioSetModem> + 80125ee: 481e ldr r0, [pc, #120] ; (8012668 <RadioSetRxConfig+0x2cc>) + 80125f0: f000 feb8 bl 8013364 <SUBGRF_SetModulationParams> + 80125f4: 481d ldr r0, [pc, #116] ; (801266c <RadioSetRxConfig+0x2d0>) + 80125f6: f000 ff21 bl 801343c <SUBGRF_SetPacketParams> + 80125fa: fa5f f088 uxtb.w r0, r8 + 80125fe: f000 fd1d bl 801303c <SUBGRF_SetLoRaSymbNumTimeout> + 8012602: f640 00a3 movw r0, #2211 ; 0x8a3 + 8012606: f000 fb61 bl 8012ccc <SUBGRF_ReadRegister> + 801260a: ea00 0104 and.w r1, r0, r4 + 801260e: f640 00a3 movw r0, #2211 ; 0x8a3 + 8012612: f000 fb4b bl 8012cac <SUBGRF_WriteRegister> + 8012616: f89b 2021 ldrb.w r2, [fp, #33] ; 0x21 + 801261a: 42a2 cmp r2, r4 + 801261c: f240 7036 movw r0, #1846 ; 0x736 + 8012620: d113 bne.n 801264a <RadioSetRxConfig+0x2ae> + 8012622: f000 fb53 bl 8012ccc <SUBGRF_ReadRegister> + 8012626: f000 01fb and.w r1, r0, #251 ; 0xfb + 801262a: f240 7036 movw r0, #1846 ; 0x736 + 801262e: f000 fb3d bl 8012cac <SUBGRF_WriteRegister> + 8012632: f64f 72ff movw r2, #65535 ; 0xffff + 8012636: e7a0 b.n 801257a <RadioSetRxConfig+0x1de> + 8012638: 2f01 cmp r7, #1 + 801263a: d104 bne.n 8012646 <RadioSetRxConfig+0x2aa> + 801263c: f1a4 030c sub.w r3, r4, #12 + 8012640: 425c negs r4, r3 + 8012642: 415c adcs r4, r3 + 8012644: e7af b.n 80125a6 <RadioSetRxConfig+0x20a> + 8012646: 2400 movs r4, #0 + 8012648: e7ad b.n 80125a6 <RadioSetRxConfig+0x20a> + 801264a: f000 fb3f bl 8012ccc <SUBGRF_ReadRegister> + 801264e: f040 0104 orr.w r1, r0, #4 + 8012652: b2c9 uxtb r1, r1 + 8012654: e7e9 b.n 801262a <RadioSetRxConfig+0x28e> + 8012656: bf00 nop + 8012658: 20002748 .word 0x20002748 + 801265c: 200008c0 .word 0x200008c0 + 8012660: 080145cc .word 0x080145cc + 8012664: 0801597a .word 0x0801597a + 8012668: 20002780 .word 0x20002780 + 801266c: 20002756 .word 0x20002756 + +08012670 <RadioIsChannelFree>: + 8012670: b5f0 push {r4, r5, r6, r7, lr} + 8012672: b08b sub sp, #44 ; 0x2c + 8012674: 460d mov r5, r1 + 8012676: 4604 mov r4, r0 + 8012678: 4617 mov r7, r2 + 801267a: 461e mov r6, r3 + 801267c: f7ff fa42 bl 8011b04 <RadioStandby> + 8012680: 2000 movs r0, #0 + 8012682: f7ff fb5f bl 8011d44 <RadioSetModem> + 8012686: 4620 mov r0, r4 + 8012688: f000 fdbe bl 8013208 <SUBGRF_SetRfFrequency> + 801268c: 2400 movs r4, #0 + 801268e: 2301 movs r3, #1 + 8012690: e9cd 4308 strd r4, r3, [sp, #32] + 8012694: 2303 movs r3, #3 + 8012696: f44f 7216 mov.w r2, #600 ; 0x258 + 801269a: 4629 mov r1, r5 + 801269c: 4620 mov r0, r4 + 801269e: e9cd 4406 strd r4, r4, [sp, #24] + 80126a2: e9cd 4404 strd r4, r4, [sp, #16] + 80126a6: e9cd 4402 strd r4, r4, [sp, #8] + 80126aa: e9cd 5300 strd r5, r3, [sp] + 80126ae: 4623 mov r3, r4 + 80126b0: f7ff fe74 bl 801239c <RadioSetRxConfig> + 80126b4: 4620 mov r0, r4 + 80126b6: f7ff fa7d bl 8011bb4 <RadioRx> + 80126ba: f7ff fa35 bl 8011b28 <RadioGetWakeupTime> + 80126be: f7f0 fa6f bl 8002ba0 <HAL_Delay> + 80126c2: f001 fc43 bl 8013f4c <UTIL_TIMER_GetCurrentTime> + 80126c6: 4604 mov r4, r0 + 80126c8: 4620 mov r0, r4 + 80126ca: f001 fc49 bl 8013f60 <UTIL_TIMER_GetElapsedTime> + 80126ce: 42b0 cmp r0, r6 + 80126d0: d305 bcc.n 80126de <RadioIsChannelFree+0x6e> + 80126d2: 2401 movs r4, #1 + 80126d4: f7ff fa16 bl 8011b04 <RadioStandby> + 80126d8: 4620 mov r0, r4 + 80126da: b00b add sp, #44 ; 0x2c + 80126dc: bdf0 pop {r4, r5, r6, r7, pc} + 80126de: f000 ff2f bl 8013540 <SUBGRF_GetRssiInst> + 80126e2: b200 sxth r0, r0 + 80126e4: 4287 cmp r7, r0 + 80126e6: daef bge.n 80126c8 <RadioIsChannelFree+0x58> + 80126e8: 2400 movs r4, #0 + 80126ea: e7f3 b.n 80126d4 <RadioIsChannelFree+0x64> + +080126ec <RadioSend>: + 80126ec: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 80126ee: 2300 movs r3, #0 + 80126f0: 460c mov r4, r1 + 80126f2: f240 2101 movw r1, #513 ; 0x201 + 80126f6: 461a mov r2, r3 + 80126f8: 4606 mov r6, r0 + 80126fa: 4608 mov r0, r1 + 80126fc: f000 fd1e bl 801313c <SUBGRF_SetDioIrqParams> + 8012700: 4b64 ldr r3, [pc, #400] ; (8012894 <RadioSend+0x1a8>) + 8012702: 4d65 ldr r5, [pc, #404] ; (8012898 <RadioSend+0x1ac>) + 8012704: f44f 5200 mov.w r2, #8192 ; 0x2000 + 8012708: 619a str r2, [r3, #24] + 801270a: f895 0056 ldrb.w r0, [r5, #86] ; 0x56 + 801270e: 2101 movs r1, #1 + 8012710: f000 ff9c bl 801364c <SUBGRF_SetSwitch> + 8012714: 782b ldrb r3, [r5, #0] + 8012716: 2b01 cmp r3, #1 + 8012718: f640 0089 movw r0, #2185 ; 0x889 + 801271c: d113 bne.n 8012746 <RadioSend+0x5a> + 801271e: f895 3051 ldrb.w r3, [r5, #81] ; 0x51 + 8012722: 2b06 cmp r3, #6 + 8012724: d10f bne.n 8012746 <RadioSend+0x5a> + 8012726: f000 fad1 bl 8012ccc <SUBGRF_ReadRegister> + 801272a: f000 01fb and.w r1, r0, #251 ; 0xfb + 801272e: f640 0089 movw r0, #2185 ; 0x889 + 8012732: f000 fabb bl 8012cac <SUBGRF_WriteRegister> + 8012736: 782b ldrb r3, [r5, #0] + 8012738: 2b04 cmp r3, #4 + 801273a: d86c bhi.n 8012816 <RadioSend+0x12a> + 801273c: e8df f003 tbb [pc, r3] + 8012740: 7f524b52 .word 0x7f524b52 + 8012744: 09 .byte 0x09 + 8012745: 00 .byte 0x00 + 8012746: f000 fac1 bl 8012ccc <SUBGRF_ReadRegister> + 801274a: f040 0104 orr.w r1, r0, #4 + 801274e: b2c9 uxtb r1, r1 + 8012750: e7ed b.n 801272e <RadioSend+0x42> + 8012752: 4a52 ldr r2, [pc, #328] ; (801289c <RadioSend+0x1b0>) + 8012754: 1e73 subs r3, r6, #1 + 8012756: 4610 mov r0, r2 + 8012758: f1c6 0701 rsb r7, r6, #1 + 801275c: f04f 0c00 mov.w ip, #0 + 8012760: 18f9 adds r1, r7, r3 + 8012762: 428c cmp r4, r1 + 8012764: dc6f bgt.n 8012846 <RadioSend+0x15a> + 8012766: 2200 movs r2, #0 + 8012768: 00e7 lsls r7, r4, #3 + 801276a: 4613 mov r3, r2 + 801276c: 42ba cmp r2, r7 + 801276e: d171 bne.n 8012854 <RadioSend+0x168> + 8012770: 019a lsls r2, r3, #6 + 8012772: ea42 12c3 orr.w r2, r2, r3, lsl #7 + 8012776: 015b lsls r3, r3, #5 + 8012778: f083 0320 eor.w r3, r3, #32 + 801277c: 4313 orrs r3, r2 + 801277e: 1c66 adds r6, r4, #1 + 8012780: 5503 strb r3, [r0, r4] + 8012782: b2f6 uxtb r6, r6 + 8012784: 2302 movs r3, #2 + 8012786: 4846 ldr r0, [pc, #280] ; (80128a0 <RadioSend+0x1b4>) + 8012788: 73ab strb r3, [r5, #14] + 801278a: 76ae strb r6, [r5, #26] + 801278c: f000 fe56 bl 801343c <SUBGRF_SetPacketParams> + 8012790: 2100 movs r1, #0 + 8012792: 20f1 movs r0, #241 ; 0xf1 + 8012794: f000 fa8a bl 8012cac <SUBGRF_WriteRegister> + 8012798: 2100 movs r1, #0 + 801279a: 20f0 movs r0, #240 ; 0xf0 + 801279c: f000 fa86 bl 8012cac <SUBGRF_WriteRegister> + 80127a0: 6cab ldr r3, [r5, #72] ; 0x48 + 80127a2: 2b64 cmp r3, #100 ; 0x64 + 80127a4: d170 bne.n 8012888 <RadioSend+0x19c> + 80127a6: 2170 movs r1, #112 ; 0x70 + 80127a8: 20f3 movs r0, #243 ; 0xf3 + 80127aa: f000 fa7f bl 8012cac <SUBGRF_WriteRegister> + 80127ae: 211d movs r1, #29 + 80127b0: 20f2 movs r0, #242 ; 0xf2 + 80127b2: f000 fa7b bl 8012cac <SUBGRF_WriteRegister> + 80127b6: 00e1 lsls r1, r4, #3 + 80127b8: 1c8c adds r4, r1, #2 + 80127ba: 20f4 movs r0, #244 ; 0xf4 + 80127bc: 0a09 lsrs r1, r1, #8 + 80127be: f000 fa75 bl 8012cac <SUBGRF_WriteRegister> + 80127c2: f004 01fe and.w r1, r4, #254 ; 0xfe + 80127c6: 20f5 movs r0, #245 ; 0xf5 + 80127c8: f000 fa70 bl 8012cac <SUBGRF_WriteRegister> + 80127cc: 4833 ldr r0, [pc, #204] ; (801289c <RadioSend+0x1b0>) + 80127ce: f06f 427f mvn.w r2, #4278190080 ; 0xff000000 + 80127d2: 4631 mov r1, r6 + 80127d4: e01d b.n 8012812 <RadioSend+0x126> + 80127d6: 77ec strb r4, [r5, #31] + 80127d8: 4831 ldr r0, [pc, #196] ; (80128a0 <RadioSend+0x1b4>) + 80127da: f000 fe2f bl 801343c <SUBGRF_SetPacketParams> + 80127de: 2200 movs r2, #0 + 80127e0: 4621 mov r1, r4 + 80127e2: e015 b.n 8012810 <RadioSend+0x124> + 80127e4: f001 f808 bl 80137f8 <RFW_Is_Init> + 80127e8: 2801 cmp r0, #1 + 80127ea: 4607 mov r7, r0 + 80127ec: d125 bne.n 801283a <RadioSend+0x14e> + 80127ee: 4621 mov r1, r4 + 80127f0: f10d 0207 add.w r2, sp, #7 + 80127f4: 4630 mov r0, r6 + 80127f6: f001 f804 bl 8013802 <RFW_TransmitInit> + 80127fa: 4604 mov r4, r0 + 80127fc: b9a0 cbnz r0, 8012828 <RadioSend+0x13c> + 80127fe: f89d 3007 ldrb.w r3, [sp, #7] + 8012802: 4827 ldr r0, [pc, #156] ; (80128a0 <RadioSend+0x1b4>) + 8012804: 75ab strb r3, [r5, #22] + 8012806: f000 fe19 bl 801343c <SUBGRF_SetPacketParams> + 801280a: f89d 1007 ldrb.w r1, [sp, #7] + 801280e: 4622 mov r2, r4 + 8012810: 4630 mov r0, r6 + 8012812: f000 fb65 bl 8012ee0 <SUBGRF_SendPayload> + 8012816: 6869 ldr r1, [r5, #4] + 8012818: 4822 ldr r0, [pc, #136] ; (80128a4 <RadioSend+0x1b8>) + 801281a: f001 fc63 bl 80140e4 <UTIL_TIMER_SetPeriod> + 801281e: 4821 ldr r0, [pc, #132] ; (80128a4 <RadioSend+0x1b8>) + 8012820: f001 fc26 bl 8014070 <UTIL_TIMER_Start> + 8012824: 2000 movs r0, #0 + 8012826: e006 b.n 8012836 <RadioSend+0x14a> + 8012828: 4b1f ldr r3, [pc, #124] ; (80128a8 <RadioSend+0x1bc>) + 801282a: 463a mov r2, r7 + 801282c: 2100 movs r1, #0 + 801282e: 2002 movs r0, #2 + 8012830: f001 f8a2 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8012834: 2003 movs r0, #3 + 8012836: b003 add sp, #12 + 8012838: bdf0 pop {r4, r5, r6, r7, pc} + 801283a: 75ac strb r4, [r5, #22] + 801283c: e7cc b.n 80127d8 <RadioSend+0xec> + 801283e: 2302 movs r3, #2 + 8012840: 73ab strb r3, [r5, #14] + 8012842: 76ac strb r4, [r5, #26] + 8012844: e7c8 b.n 80127d8 <RadioSend+0xec> + 8012846: f813 1f01 ldrb.w r1, [r3, #1]! + 801284a: 43c9 mvns r1, r1 + 801284c: 7019 strb r1, [r3, #0] + 801284e: f802 cb01 strb.w ip, [r2], #1 + 8012852: e785 b.n 8012760 <RadioSend+0x74> + 8012854: 10d1 asrs r1, r2, #3 + 8012856: ea6f 0c02 mvn.w ip, r2 + 801285a: 5c71 ldrb r1, [r6, r1] + 801285c: f00c 0c07 and.w ip, ip, #7 + 8012860: 3201 adds r2, #1 + 8012862: fa41 f10c asr.w r1, r1, ip + 8012866: f001 0101 and.w r1, r1, #1 + 801286a: ea4f 0ce2 mov.w ip, r2, asr #3 + 801286e: 404b eors r3, r1 + 8012870: 43d1 mvns r1, r2 + 8012872: f810 e00c ldrb.w lr, [r0, ip] + 8012876: f001 0107 and.w r1, r1, #7 + 801287a: fa03 f101 lsl.w r1, r3, r1 + 801287e: ea41 010e orr.w r1, r1, lr + 8012882: f800 100c strb.w r1, [r0, ip] + 8012886: e771 b.n 801276c <RadioSend+0x80> + 8012888: 21e1 movs r1, #225 ; 0xe1 + 801288a: 20f3 movs r0, #243 ; 0xf3 + 801288c: f000 fa0e bl 8012cac <SUBGRF_WriteRegister> + 8012890: 2104 movs r1, #4 + 8012892: e78d b.n 80127b0 <RadioSend+0xc4> + 8012894: 48000400 .word 0x48000400 + 8012898: 20002748 .word 0x20002748 + 801289c: 2000262c .word 0x2000262c + 80128a0: 20002756 .word 0x20002756 + 80128a4: 200027a4 .word 0x200027a4 + 80128a8: 0801591c .word 0x0801591c + +080128ac <RadioTimeOnAir>: + 80128ac: b5f0 push {r4, r5, r6, r7, lr} + 80128ae: f8bd 4014 ldrh.w r4, [sp, #20] + 80128b2: f89d 7018 ldrb.w r7, [sp, #24] + 80128b6: f89d e01c ldrb.w lr, [sp, #28] + 80128ba: f89d 5020 ldrb.w r5, [sp, #32] + 80128be: b140 cbz r0, 80128d2 <RadioTimeOnAir+0x26> + 80128c0: 2801 cmp r0, #1 + 80128c2: d014 beq.n 80128ee <RadioTimeOnAir+0x42> + 80128c4: 2201 movs r2, #1 + 80128c6: 2300 movs r3, #0 + 80128c8: 1898 adds r0, r3, r2 + 80128ca: 3801 subs r0, #1 + 80128cc: fbb0 f0f2 udiv r0, r0, r2 + 80128d0: bdf0 pop {r4, r5, r6, r7, pc} + 80128d2: f087 0701 eor.w r7, r7, #1 + 80128d6: 00e3 lsls r3, r4, #3 + 80128d8: eb03 03c7 add.w r3, r3, r7, lsl #3 + 80128dc: 3318 adds r3, #24 + 80128de: eb0e 0545 add.w r5, lr, r5, lsl #1 + 80128e2: eb03 03c5 add.w r3, r3, r5, lsl #3 + 80128e6: f44f 717a mov.w r1, #1000 ; 0x3e8 + 80128ea: 434b muls r3, r1 + 80128ec: e7ec b.n 80128c8 <RadioTimeOnAir+0x1c> + 80128ee: 1f50 subs r0, r2, #5 + 80128f0: 2801 cmp r0, #1 + 80128f2: f103 0304 add.w r3, r3, #4 + 80128f6: d802 bhi.n 80128fe <RadioTimeOnAir+0x52> + 80128f8: 2c0c cmp r4, #12 + 80128fa: bf38 it cc + 80128fc: 240c movcc r4, #12 + 80128fe: b9d1 cbnz r1, 8012936 <RadioTimeOnAir+0x8a> + 8012900: f1a2 0c0b sub.w ip, r2, #11 + 8012904: f1bc 0f01 cmp.w ip, #1 + 8012908: bf8c ite hi + 801290a: f04f 0c00 movhi.w ip, #0 + 801290e: f04f 0c01 movls.w ip, #1 + 8012912: 0128 lsls r0, r5, #4 + 8012914: 2f00 cmp r7, #0 + 8012916: eb00 00ce add.w r0, r0, lr, lsl #3 + 801291a: bf14 ite ne + 801291c: 2500 movne r5, #0 + 801291e: 2514 moveq r5, #20 + 8012920: eba0 0082 sub.w r0, r0, r2, lsl #2 + 8012924: 2a06 cmp r2, #6 + 8012926: ea4f 0682 mov.w r6, r2, lsl #2 + 801292a: 4428 add r0, r5 + 801292c: f1a2 0702 sub.w r7, r2, #2 + 8012930: d80d bhi.n 801294e <RadioTimeOnAir+0xa2> + 8012932: 4635 mov r5, r6 + 8012934: e010 b.n 8012958 <RadioTimeOnAir+0xac> + 8012936: 2901 cmp r1, #1 + 8012938: d106 bne.n 8012948 <RadioTimeOnAir+0x9c> + 801293a: f1a2 000c sub.w r0, r2, #12 + 801293e: f1d0 0c00 rsbs ip, r0, #0 + 8012942: eb4c 0c00 adc.w ip, ip, r0 + 8012946: e7e4 b.n 8012912 <RadioTimeOnAir+0x66> + 8012948: f04f 0c00 mov.w ip, #0 + 801294c: e7e1 b.n 8012912 <RadioTimeOnAir+0x66> + 801294e: 3008 adds r0, #8 + 8012950: f1bc 0f00 cmp.w ip, #0 + 8012954: d0ed beq.n 8012932 <RadioTimeOnAir+0x86> + 8012956: 00bd lsls r5, r7, #2 + 8012958: 2800 cmp r0, #0 + 801295a: bfac ite ge + 801295c: 182e addge r6, r5, r0 + 801295e: 1c2e addlt r6, r5, #0 + 8012960: 1e70 subs r0, r6, #1 + 8012962: fb90 f0f5 sdiv r0, r0, r5 + 8012966: fb03 4400 mla r4, r3, r0, r4 + 801296a: 4b09 ldr r3, [pc, #36] ; (8012990 <RadioTimeOnAir+0xe4>) + 801296c: 2a06 cmp r2, #6 + 801296e: 5c5a ldrb r2, [r3, r1] + 8012970: bf8c ite hi + 8012972: 340c addhi r4, #12 + 8012974: 340e addls r4, #14 + 8012976: 2a0a cmp r2, #10 + 8012978: d809 bhi.n 801298e <RadioTimeOnAir+0xe2> + 801297a: 00a3 lsls r3, r4, #2 + 801297c: 3301 adds r3, #1 + 801297e: f44f 717a mov.w r1, #1000 ; 0x3e8 + 8012982: 40bb lsls r3, r7 + 8012984: 434b muls r3, r1 + 8012986: 4903 ldr r1, [pc, #12] ; (8012994 <RadioTimeOnAir+0xe8>) + 8012988: f851 2022 ldr.w r2, [r1, r2, lsl #2] + 801298c: e79c b.n 80128c8 <RadioTimeOnAir+0x1c> + 801298e: deff udf #255 ; 0xff + 8012990: 0801597a .word 0x0801597a + 8012994: 08015980 .word 0x08015980 + +08012998 <RadioTxPrbs>: + 8012998: b508 push {r3, lr} + 801299a: 4b09 ldr r3, [pc, #36] ; (80129c0 <RadioTxPrbs+0x28>) + 801299c: 2101 movs r1, #1 + 801299e: f893 0056 ldrb.w r0, [r3, #86] ; 0x56 + 80129a2: f000 fe53 bl 801364c <SUBGRF_SetSwitch> + 80129a6: f44f 60d7 mov.w r0, #1720 ; 0x6b8 + 80129aa: 212d movs r1, #45 ; 0x2d + 80129ac: f000 f97e bl 8012cac <SUBGRF_WriteRegister> + 80129b0: f000 fb33 bl 801301a <SUBGRF_SetTxInfinitePreamble> + 80129b4: e8bd 4008 ldmia.w sp!, {r3, lr} + 80129b8: 4802 ldr r0, [pc, #8] ; (80129c4 <RadioTxPrbs+0x2c>) + 80129ba: f000 ba7b b.w 8012eb4 <SUBGRF_SetTx> + 80129be: bf00 nop + 80129c0: 20002748 .word 0x20002748 + 80129c4: 000fffff .word 0x000fffff + +080129c8 <RadioIrqProcess>: + 80129c8: b573 push {r0, r1, r4, r5, r6, lr} + 80129ca: 4ca4 ldr r4, [pc, #656] ; (8012c5c <RadioIrqProcess+0x294>) + 80129cc: f8b4 3054 ldrh.w r3, [r4, #84] ; 0x54 + 80129d0: 2500 movs r5, #0 + 80129d2: 2b20 cmp r3, #32 + 80129d4: f88d 5003 strb.w r5, [sp, #3] + 80129d8: 9501 str r5, [sp, #4] + 80129da: f000 811b beq.w 8012c14 <RadioIrqProcess+0x24c> + 80129de: d814 bhi.n 8012a0a <RadioIrqProcess+0x42> + 80129e0: 2b08 cmp r3, #8 + 80129e2: d80d bhi.n 8012a00 <RadioIrqProcess+0x38> + 80129e4: b17b cbz r3, 8012a06 <RadioIrqProcess+0x3e> + 80129e6: 3b01 subs r3, #1 + 80129e8: 2b07 cmp r3, #7 + 80129ea: d80c bhi.n 8012a06 <RadioIrqProcess+0x3e> + 80129ec: e8df f013 tbh [pc, r3, lsl #1] + 80129f0: 005b0042 .word 0x005b0042 + 80129f4: 00cd000b .word 0x00cd000b + 80129f8: 000b000b .word 0x000b000b + 80129fc: 00fd000b .word 0x00fd000b + 8012a00: 2b10 cmp r3, #16 + 8012a02: f000 8100 beq.w 8012c06 <RadioIrqProcess+0x23e> + 8012a06: b002 add sp, #8 + 8012a08: bd70 pop {r4, r5, r6, pc} + 8012a0a: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8012a0e: f000 8098 beq.w 8012b42 <RadioIrqProcess+0x17a> + 8012a12: d811 bhi.n 8012a38 <RadioIrqProcess+0x70> + 8012a14: 2b40 cmp r3, #64 ; 0x40 + 8012a16: f000 8110 beq.w 8012c3a <RadioIrqProcess+0x272> + 8012a1a: 2b80 cmp r3, #128 ; 0x80 + 8012a1c: d1f3 bne.n 8012a06 <RadioIrqProcess+0x3e> + 8012a1e: 4628 mov r0, r5 + 8012a20: f000 fa32 bl 8012e88 <SUBGRF_SetStandby> + 8012a24: 4b8e ldr r3, [pc, #568] ; (8012c60 <RadioIrqProcess+0x298>) + 8012a26: 681b ldr r3, [r3, #0] + 8012a28: 2b00 cmp r3, #0 + 8012a2a: d0ec beq.n 8012a06 <RadioIrqProcess+0x3e> + 8012a2c: 699b ldr r3, [r3, #24] + 8012a2e: 2b00 cmp r3, #0 + 8012a30: d0e9 beq.n 8012a06 <RadioIrqProcess+0x3e> + 8012a32: 4628 mov r0, r5 + 8012a34: 4798 blx r3 + 8012a36: e7e6 b.n 8012a06 <RadioIrqProcess+0x3e> + 8012a38: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 8012a3c: d1e3 bne.n 8012a06 <RadioIrqProcess+0x3e> + 8012a3e: 4b89 ldr r3, [pc, #548] ; (8012c64 <RadioIrqProcess+0x29c>) + 8012a40: 2201 movs r2, #1 + 8012a42: 4629 mov r1, r5 + 8012a44: 2002 movs r0, #2 + 8012a46: f000 ff97 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8012a4a: f000 f929 bl 8012ca0 <SUBGRF_GetOperatingMode> + 8012a4e: 2804 cmp r0, #4 + 8012a50: f040 8085 bne.w 8012b5e <RadioIrqProcess+0x196> + 8012a54: 4b84 ldr r3, [pc, #528] ; (8012c68 <RadioIrqProcess+0x2a0>) + 8012a56: 4885 ldr r0, [pc, #532] ; (8012c6c <RadioIrqProcess+0x2a4>) + 8012a58: f44f 5200 mov.w r2, #8192 ; 0x2000 + 8012a5c: 629a str r2, [r3, #40] ; 0x28 + 8012a5e: f001 fab9 bl 8013fd4 <UTIL_TIMER_Stop> + 8012a62: 4628 mov r0, r5 + 8012a64: f000 fa10 bl 8012e88 <SUBGRF_SetStandby> + 8012a68: 4b7d ldr r3, [pc, #500] ; (8012c60 <RadioIrqProcess+0x298>) + 8012a6a: 681b ldr r3, [r3, #0] + 8012a6c: 2b00 cmp r3, #0 + 8012a6e: d0ca beq.n 8012a06 <RadioIrqProcess+0x3e> + 8012a70: 685b ldr r3, [r3, #4] + 8012a72: e014 b.n 8012a9e <RadioIrqProcess+0xd6> + 8012a74: 4b7c ldr r3, [pc, #496] ; (8012c68 <RadioIrqProcess+0x2a0>) + 8012a76: 487d ldr r0, [pc, #500] ; (8012c6c <RadioIrqProcess+0x2a4>) + 8012a78: f44f 5200 mov.w r2, #8192 ; 0x2000 + 8012a7c: 629a str r2, [r3, #40] ; 0x28 + 8012a7e: f001 faa9 bl 8013fd4 <UTIL_TIMER_Stop> + 8012a82: 2000 movs r0, #0 + 8012a84: f000 fa00 bl 8012e88 <SUBGRF_SetStandby> + 8012a88: f000 feb8 bl 80137fc <RFW_Is_LongPacketModeEnabled> + 8012a8c: 2801 cmp r0, #1 + 8012a8e: d101 bne.n 8012a94 <RadioIrqProcess+0xcc> + 8012a90: f000 febd bl 801380e <RFW_DeInit_TxLongPacket> + 8012a94: 4b72 ldr r3, [pc, #456] ; (8012c60 <RadioIrqProcess+0x298>) + 8012a96: 681b ldr r3, [r3, #0] + 8012a98: 2b00 cmp r3, #0 + 8012a9a: d0b4 beq.n 8012a06 <RadioIrqProcess+0x3e> + 8012a9c: 681b ldr r3, [r3, #0] + 8012a9e: 2b00 cmp r3, #0 + 8012aa0: d0b1 beq.n 8012a06 <RadioIrqProcess+0x3e> + 8012aa2: 4798 blx r3 + 8012aa4: e7af b.n 8012a06 <RadioIrqProcess+0x3e> + 8012aa6: 4b70 ldr r3, [pc, #448] ; (8012c68 <RadioIrqProcess+0x2a0>) + 8012aa8: 4871 ldr r0, [pc, #452] ; (8012c70 <RadioIrqProcess+0x2a8>) + 8012aaa: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8012aae: 629a str r2, [r3, #40] ; 0x28 + 8012ab0: f001 fa90 bl 8013fd4 <UTIL_TIMER_Stop> + 8012ab4: 7865 ldrb r5, [r4, #1] + 8012ab6: b995 cbnz r5, 8012ade <RadioIrqProcess+0x116> + 8012ab8: 4628 mov r0, r5 + 8012aba: f000 f9e5 bl 8012e88 <SUBGRF_SetStandby> + 8012abe: 4629 mov r1, r5 + 8012ac0: f640 1002 movw r0, #2306 ; 0x902 + 8012ac4: f000 f8f2 bl 8012cac <SUBGRF_WriteRegister> + 8012ac8: f640 1044 movw r0, #2372 ; 0x944 + 8012acc: f000 f8fe bl 8012ccc <SUBGRF_ReadRegister> + 8012ad0: f040 0102 orr.w r1, r0, #2 + 8012ad4: b2c9 uxtb r1, r1 + 8012ad6: f640 1044 movw r0, #2372 ; 0x944 + 8012ada: f000 f8e7 bl 8012cac <SUBGRF_WriteRegister> + 8012ade: 22ff movs r2, #255 ; 0xff + 8012ae0: f10d 0103 add.w r1, sp, #3 + 8012ae4: 4863 ldr r0, [pc, #396] ; (8012c74 <RadioIrqProcess+0x2ac>) + 8012ae6: 4d5e ldr r5, [pc, #376] ; (8012c60 <RadioIrqProcess+0x298>) + 8012ae8: f000 fd5a bl 80135a0 <SUBGRF_GetPayload> + 8012aec: 4862 ldr r0, [pc, #392] ; (8012c78 <RadioIrqProcess+0x2b0>) + 8012aee: f000 fd71 bl 80135d4 <SUBGRF_GetPacketStatus> + 8012af2: 682b ldr r3, [r5, #0] + 8012af4: 2b00 cmp r3, #0 + 8012af6: d086 beq.n 8012a06 <RadioIrqProcess+0x3e> + 8012af8: 689e ldr r6, [r3, #8] + 8012afa: 2e00 cmp r6, #0 + 8012afc: d083 beq.n 8012a06 <RadioIrqProcess+0x3e> + 8012afe: f894 3024 ldrb.w r3, [r4, #36] ; 0x24 + 8012b02: 2b01 cmp r3, #1 + 8012b04: d108 bne.n 8012b18 <RadioIrqProcess+0x150> + 8012b06: f994 3031 ldrsb.w r3, [r4, #49] ; 0x31 + 8012b0a: f994 2030 ldrsb.w r2, [r4, #48] ; 0x30 + 8012b0e: f89d 1003 ldrb.w r1, [sp, #3] + 8012b12: 4858 ldr r0, [pc, #352] ; (8012c74 <RadioIrqProcess+0x2ac>) + 8012b14: 47b0 blx r6 + 8012b16: e776 b.n 8012a06 <RadioIrqProcess+0x3e> + 8012b18: 6be0 ldr r0, [r4, #60] ; 0x3c + 8012b1a: a901 add r1, sp, #4 + 8012b1c: f000 fe22 bl 8013764 <SUBGRF_GetCFO> + 8012b20: 9b01 ldr r3, [sp, #4] + 8012b22: f89d 1003 ldrb.w r1, [sp, #3] + 8012b26: 4853 ldr r0, [pc, #332] ; (8012c74 <RadioIrqProcess+0x2ac>) + 8012b28: f44f 727a mov.w r2, #1000 ; 0x3e8 + 8012b2c: f503 73fa add.w r3, r3, #500 ; 0x1f4 + 8012b30: fb93 f3f2 sdiv r3, r3, r2 + 8012b34: 682a ldr r2, [r5, #0] + 8012b36: b25b sxtb r3, r3 + 8012b38: 6895 ldr r5, [r2, #8] + 8012b3a: f994 2029 ldrsb.w r2, [r4, #41] ; 0x29 + 8012b3e: 47a8 blx r5 + 8012b40: e761 b.n 8012a06 <RadioIrqProcess+0x3e> + 8012b42: 4628 mov r0, r5 + 8012b44: f000 f9a0 bl 8012e88 <SUBGRF_SetStandby> + 8012b48: 4b45 ldr r3, [pc, #276] ; (8012c60 <RadioIrqProcess+0x298>) + 8012b4a: 681b ldr r3, [r3, #0] + 8012b4c: 2b00 cmp r3, #0 + 8012b4e: f43f af5a beq.w 8012a06 <RadioIrqProcess+0x3e> + 8012b52: 699b ldr r3, [r3, #24] + 8012b54: 2b00 cmp r3, #0 + 8012b56: f43f af56 beq.w 8012a06 <RadioIrqProcess+0x3e> + 8012b5a: 2001 movs r0, #1 + 8012b5c: e76a b.n 8012a34 <RadioIrqProcess+0x6c> + 8012b5e: f000 f89f bl 8012ca0 <SUBGRF_GetOperatingMode> + 8012b62: 2805 cmp r0, #5 + 8012b64: f47f af4f bne.w 8012a06 <RadioIrqProcess+0x3e> + 8012b68: 4b3f ldr r3, [pc, #252] ; (8012c68 <RadioIrqProcess+0x2a0>) + 8012b6a: 4841 ldr r0, [pc, #260] ; (8012c70 <RadioIrqProcess+0x2a8>) + 8012b6c: f44f 5280 mov.w r2, #4096 ; 0x1000 + 8012b70: 629a str r2, [r3, #40] ; 0x28 + 8012b72: f001 fa2f bl 8013fd4 <UTIL_TIMER_Stop> + 8012b76: 4628 mov r0, r5 + 8012b78: f000 f986 bl 8012e88 <SUBGRF_SetStandby> + 8012b7c: 4b38 ldr r3, [pc, #224] ; (8012c60 <RadioIrqProcess+0x298>) + 8012b7e: 681b ldr r3, [r3, #0] + 8012b80: 2b00 cmp r3, #0 + 8012b82: f43f af40 beq.w 8012a06 <RadioIrqProcess+0x3e> + 8012b86: 68db ldr r3, [r3, #12] + 8012b88: e789 b.n 8012a9e <RadioIrqProcess+0xd6> + 8012b8a: 2100 movs r1, #0 + 8012b8c: 4b3b ldr r3, [pc, #236] ; (8012c7c <RadioIrqProcess+0x2b4>) + 8012b8e: 2201 movs r2, #1 + 8012b90: 2002 movs r0, #2 + 8012b92: f000 fef1 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8012b96: 6da1 ldr r1, [r4, #88] ; 0x58 + 8012b98: 2900 cmp r1, #0 + 8012b9a: f43f af34 beq.w 8012a06 <RadioIrqProcess+0x3e> + 8012b9e: f3c1 4107 ubfx r1, r1, #16, #8 + 8012ba2: f640 1003 movw r0, #2307 ; 0x903 + 8012ba6: f000 f881 bl 8012cac <SUBGRF_WriteRegister> + 8012baa: f894 1059 ldrb.w r1, [r4, #89] ; 0x59 + 8012bae: f640 1004 movw r0, #2308 ; 0x904 + 8012bb2: f000 f87b bl 8012cac <SUBGRF_WriteRegister> + 8012bb6: f894 1058 ldrb.w r1, [r4, #88] ; 0x58 + 8012bba: f640 1005 movw r0, #2309 ; 0x905 + 8012bbe: f000 f875 bl 8012cac <SUBGRF_WriteRegister> + 8012bc2: f640 1002 movw r0, #2306 ; 0x902 + 8012bc6: f000 f881 bl 8012ccc <SUBGRF_ReadRegister> + 8012bca: f040 0101 orr.w r1, r0, #1 + 8012bce: b2c9 uxtb r1, r1 + 8012bd0: f640 1002 movw r0, #2306 ; 0x902 + 8012bd4: f000 f86a bl 8012cac <SUBGRF_WriteRegister> + 8012bd8: 2300 movs r3, #0 + 8012bda: f240 2162 movw r1, #610 ; 0x262 + 8012bde: 461a mov r2, r3 + 8012be0: 4608 mov r0, r1 + 8012be2: 65a3 str r3, [r4, #88] ; 0x58 + 8012be4: f000 faaa bl 801313c <SUBGRF_SetDioIrqParams> + 8012be8: e70d b.n 8012a06 <RadioIrqProcess+0x3e> + 8012bea: 4b25 ldr r3, [pc, #148] ; (8012c80 <RadioIrqProcess+0x2b8>) + 8012bec: 2201 movs r2, #1 + 8012bee: 2100 movs r1, #0 + 8012bf0: 2002 movs r0, #2 + 8012bf2: f000 fec1 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8012bf6: f000 fdff bl 80137f8 <RFW_Is_Init> + 8012bfa: 2801 cmp r0, #1 + 8012bfc: f47f af03 bne.w 8012a06 <RadioIrqProcess+0x3e> + 8012c00: f000 fe06 bl 8013810 <RFW_ReceivePayload> + 8012c04: e6ff b.n 8012a06 <RadioIrqProcess+0x3e> + 8012c06: 4b1f ldr r3, [pc, #124] ; (8012c84 <RadioIrqProcess+0x2bc>) + 8012c08: 2201 movs r2, #1 + 8012c0a: 2100 movs r1, #0 + 8012c0c: 2002 movs r0, #2 + 8012c0e: f000 feb3 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8012c12: e6f8 b.n 8012a06 <RadioIrqProcess+0x3e> + 8012c14: 4816 ldr r0, [pc, #88] ; (8012c70 <RadioIrqProcess+0x2a8>) + 8012c16: f001 f9dd bl 8013fd4 <UTIL_TIMER_Stop> + 8012c1a: 7860 ldrb r0, [r4, #1] + 8012c1c: b908 cbnz r0, 8012c22 <RadioIrqProcess+0x25a> + 8012c1e: f000 f933 bl 8012e88 <SUBGRF_SetStandby> + 8012c22: 4b0f ldr r3, [pc, #60] ; (8012c60 <RadioIrqProcess+0x298>) + 8012c24: 681b ldr r3, [r3, #0] + 8012c26: 2b00 cmp r3, #0 + 8012c28: f43f aeed beq.w 8012a06 <RadioIrqProcess+0x3e> + 8012c2c: 68db ldr r3, [r3, #12] + 8012c2e: 2b00 cmp r3, #0 + 8012c30: f43f aee9 beq.w 8012a06 <RadioIrqProcess+0x3e> + 8012c34: 4798 blx r3 + 8012c36: 4b14 ldr r3, [pc, #80] ; (8012c88 <RadioIrqProcess+0x2c0>) + 8012c38: e7e6 b.n 8012c08 <RadioIrqProcess+0x240> + 8012c3a: 4b14 ldr r3, [pc, #80] ; (8012c8c <RadioIrqProcess+0x2c4>) + 8012c3c: 2201 movs r2, #1 + 8012c3e: 4629 mov r1, r5 + 8012c40: 2002 movs r0, #2 + 8012c42: f000 fe99 bl 8013978 <UTIL_ADV_TRACE_COND_FSend> + 8012c46: 7860 ldrb r0, [r4, #1] + 8012c48: b908 cbnz r0, 8012c4e <RadioIrqProcess+0x286> + 8012c4a: f000 f91d bl 8012e88 <SUBGRF_SetStandby> + 8012c4e: 4b04 ldr r3, [pc, #16] ; (8012c60 <RadioIrqProcess+0x298>) + 8012c50: 681b ldr r3, [r3, #0] + 8012c52: 2b00 cmp r3, #0 + 8012c54: f43f aed7 beq.w 8012a06 <RadioIrqProcess+0x3e> + 8012c58: 691b ldr r3, [r3, #16] + 8012c5a: e720 b.n 8012a9e <RadioIrqProcess+0xd6> + 8012c5c: 20002748 .word 0x20002748 + 8012c60: 2000272c .word 0x2000272c + 8012c64: 08015931 .word 0x08015931 + 8012c68: 48000400 .word 0x48000400 + 8012c6c: 200027a4 .word 0x200027a4 + 8012c70: 20002730 .word 0x20002730 + 8012c74: 2000262c .word 0x2000262c + 8012c78: 2000276c .word 0x2000276c + 8012c7c: 08015945 .word 0x08015945 + 8012c80: 0801594e .word 0x0801594e + 8012c84: 08015958 .word 0x08015958 + 8012c88: 08015961 .word 0x08015961 + 8012c8c: 0801596a .word 0x0801596a + +08012c90 <RadioOnDioIrq>: + 8012c90: 4b02 ldr r3, [pc, #8] ; (8012c9c <RadioOnDioIrq+0xc>) + 8012c92: f8a3 0054 strh.w r0, [r3, #84] ; 0x54 + 8012c96: f7ff be97 b.w 80129c8 <RadioIrqProcess> + 8012c9a: bf00 nop + 8012c9c: 20002748 .word 0x20002748 + +08012ca0 <SUBGRF_GetOperatingMode>: + 8012ca0: 4b01 ldr r3, [pc, #4] ; (8012ca8 <SUBGRF_GetOperatingMode+0x8>) + 8012ca2: 7818 ldrb r0, [r3, #0] + 8012ca4: 4770 bx lr + 8012ca6: bf00 nop + 8012ca8: 200027c2 .word 0x200027c2 + +08012cac <SUBGRF_WriteRegister>: + 8012cac: b507 push {r0, r1, r2, lr} + 8012cae: 2301 movs r3, #1 + 8012cb0: f88d 1007 strb.w r1, [sp, #7] + 8012cb4: f10d 0207 add.w r2, sp, #7 + 8012cb8: 4601 mov r1, r0 + 8012cba: 4803 ldr r0, [pc, #12] ; (8012cc8 <SUBGRF_WriteRegister+0x1c>) + 8012cbc: f7f7 fa06 bl 800a0cc <HAL_SUBGHZ_WriteRegisters> + 8012cc0: b003 add sp, #12 + 8012cc2: f85d fb04 ldr.w pc, [sp], #4 + 8012cc6: bf00 nop + 8012cc8: 20000acc .word 0x20000acc + +08012ccc <SUBGRF_ReadRegister>: + 8012ccc: b507 push {r0, r1, r2, lr} + 8012cce: 2301 movs r3, #1 + 8012cd0: 4601 mov r1, r0 + 8012cd2: f10d 0207 add.w r2, sp, #7 + 8012cd6: 4804 ldr r0, [pc, #16] ; (8012ce8 <SUBGRF_ReadRegister+0x1c>) + 8012cd8: f7f7 fa31 bl 800a13e <HAL_SUBGHZ_ReadRegisters> + 8012cdc: f89d 0007 ldrb.w r0, [sp, #7] + 8012ce0: b003 add sp, #12 + 8012ce2: f85d fb04 ldr.w pc, [sp], #4 + 8012ce6: bf00 nop + 8012ce8: 20000acc .word 0x20000acc + +08012cec <Radio_SMPS_Set>: + 8012cec: b510 push {r4, lr} + 8012cee: 4604 mov r4, r0 + 8012cf0: f7f1 fda4 bl 800483c <RBI_IsDCDC> + 8012cf4: 2801 cmp r0, #1 + 8012cf6: d10c bne.n 8012d12 <Radio_SMPS_Set+0x26> + 8012cf8: f640 1023 movw r0, #2339 ; 0x923 + 8012cfc: f7ff ffe6 bl 8012ccc <SUBGRF_ReadRegister> + 8012d00: f000 01f9 and.w r1, r0, #249 ; 0xf9 + 8012d04: 4321 orrs r1, r4 + 8012d06: f640 1023 movw r0, #2339 ; 0x923 + 8012d0a: e8bd 4010 ldmia.w sp!, {r4, lr} + 8012d0e: f7ff bfcd b.w 8012cac <SUBGRF_WriteRegister> + 8012d12: bd10 pop {r4, pc} + +08012d14 <SUBGRF_SetWhiteningSeed>: + 8012d14: b510 push {r4, lr} + 8012d16: 4b0c ldr r3, [pc, #48] ; (8012d48 <SUBGRF_SetWhiteningSeed+0x34>) + 8012d18: 781b ldrb r3, [r3, #0] + 8012d1a: 4604 mov r4, r0 + 8012d1c: b99b cbnz r3, 8012d46 <SUBGRF_SetWhiteningSeed+0x32> + 8012d1e: f44f 60d7 mov.w r0, #1720 ; 0x6b8 + 8012d22: f7ff ffd3 bl 8012ccc <SUBGRF_ReadRegister> + 8012d26: f3c4 2100 ubfx r1, r4, #8, #1 + 8012d2a: f000 00fe and.w r0, r0, #254 ; 0xfe + 8012d2e: 4301 orrs r1, r0 + 8012d30: f44f 60d7 mov.w r0, #1720 ; 0x6b8 + 8012d34: f7ff ffba bl 8012cac <SUBGRF_WriteRegister> + 8012d38: b2e1 uxtb r1, r4 + 8012d3a: f240 60b9 movw r0, #1721 ; 0x6b9 + 8012d3e: e8bd 4010 ldmia.w sp!, {r4, lr} + 8012d42: f7ff bfb3 b.w 8012cac <SUBGRF_WriteRegister> + 8012d46: bd10 pop {r4, pc} + 8012d48: 200027c3 .word 0x200027c3 + +08012d4c <SUBGRF_WriteRegisters>: + 8012d4c: b510 push {r4, lr} + 8012d4e: 4613 mov r3, r2 + 8012d50: f3ef 8410 mrs r4, PRIMASK + 8012d54: b672 cpsid i + 8012d56: 460a mov r2, r1 + 8012d58: 4601 mov r1, r0 + 8012d5a: 4803 ldr r0, [pc, #12] ; (8012d68 <SUBGRF_WriteRegisters+0x1c>) + 8012d5c: f7f7 f9b6 bl 800a0cc <HAL_SUBGHZ_WriteRegisters> + 8012d60: f384 8810 msr PRIMASK, r4 + 8012d64: bd10 pop {r4, pc} + 8012d66: bf00 nop + 8012d68: 20000acc .word 0x20000acc + +08012d6c <SUBGRF_SetSyncWord>: + 8012d6c: b508 push {r3, lr} + 8012d6e: 4601 mov r1, r0 + 8012d70: 2208 movs r2, #8 + 8012d72: f44f 60d8 mov.w r0, #1728 ; 0x6c0 + 8012d76: f7ff ffe9 bl 8012d4c <SUBGRF_WriteRegisters> + 8012d7a: 2000 movs r0, #0 + 8012d7c: bd08 pop {r3, pc} + ... + +08012d80 <SUBGRF_SetCrcSeed>: + 8012d80: b507 push {r0, r1, r2, lr} + 8012d82: 4b07 ldr r3, [pc, #28] ; (8012da0 <SUBGRF_SetCrcSeed+0x20>) + 8012d84: 781b ldrb r3, [r3, #0] + 8012d86: ba40 rev16 r0, r0 + 8012d88: f8ad 0004 strh.w r0, [sp, #4] + 8012d8c: b92b cbnz r3, 8012d9a <SUBGRF_SetCrcSeed+0x1a> + 8012d8e: 2202 movs r2, #2 + 8012d90: a901 add r1, sp, #4 + 8012d92: f240 60bc movw r0, #1724 ; 0x6bc + 8012d96: f7ff ffd9 bl 8012d4c <SUBGRF_WriteRegisters> + 8012d9a: b003 add sp, #12 + 8012d9c: f85d fb04 ldr.w pc, [sp], #4 + 8012da0: 200027c3 .word 0x200027c3 + +08012da4 <SUBGRF_SetCrcPolynomial>: + 8012da4: b507 push {r0, r1, r2, lr} + 8012da6: 4b07 ldr r3, [pc, #28] ; (8012dc4 <SUBGRF_SetCrcPolynomial+0x20>) + 8012da8: 781b ldrb r3, [r3, #0] + 8012daa: ba40 rev16 r0, r0 + 8012dac: f8ad 0004 strh.w r0, [sp, #4] + 8012db0: b92b cbnz r3, 8012dbe <SUBGRF_SetCrcPolynomial+0x1a> + 8012db2: 2202 movs r2, #2 + 8012db4: a901 add r1, sp, #4 + 8012db6: f240 60be movw r0, #1726 ; 0x6be + 8012dba: f7ff ffc7 bl 8012d4c <SUBGRF_WriteRegisters> + 8012dbe: b003 add sp, #12 + 8012dc0: f85d fb04 ldr.w pc, [sp], #4 + 8012dc4: 200027c3 .word 0x200027c3 + +08012dc8 <SUBGRF_ReadRegisters>: + 8012dc8: b510 push {r4, lr} + 8012dca: 4613 mov r3, r2 + 8012dcc: f3ef 8410 mrs r4, PRIMASK + 8012dd0: b672 cpsid i + 8012dd2: 460a mov r2, r1 + 8012dd4: 4601 mov r1, r0 + 8012dd6: 4803 ldr r0, [pc, #12] ; (8012de4 <SUBGRF_ReadRegisters+0x1c>) + 8012dd8: f7f7 f9b1 bl 800a13e <HAL_SUBGHZ_ReadRegisters> + 8012ddc: f384 8810 msr PRIMASK, r4 + 8012de0: bd10 pop {r4, pc} + 8012de2: bf00 nop + 8012de4: 20000acc .word 0x20000acc + +08012de8 <SUBGRF_WriteBuffer>: + 8012de8: b510 push {r4, lr} + 8012dea: 4613 mov r3, r2 + 8012dec: f3ef 8410 mrs r4, PRIMASK + 8012df0: b672 cpsid i + 8012df2: 460a mov r2, r1 + 8012df4: 4601 mov r1, r0 + 8012df6: 4803 ldr r0, [pc, #12] ; (8012e04 <SUBGRF_WriteBuffer+0x1c>) + 8012df8: f7f7 fa93 bl 800a322 <HAL_SUBGHZ_WriteBuffer> + 8012dfc: f384 8810 msr PRIMASK, r4 + 8012e00: bd10 pop {r4, pc} + 8012e02: bf00 nop + 8012e04: 20000acc .word 0x20000acc + +08012e08 <SUBGRF_SetPayload>: + 8012e08: 460a mov r2, r1 + 8012e0a: 4601 mov r1, r0 + 8012e0c: 2000 movs r0, #0 + 8012e0e: f7ff bfeb b.w 8012de8 <SUBGRF_WriteBuffer> + ... + +08012e14 <SUBGRF_ReadBuffer>: + 8012e14: b510 push {r4, lr} + 8012e16: 4613 mov r3, r2 + 8012e18: f3ef 8410 mrs r4, PRIMASK + 8012e1c: b672 cpsid i + 8012e1e: 460a mov r2, r1 + 8012e20: 4601 mov r1, r0 + 8012e22: 4803 ldr r0, [pc, #12] ; (8012e30 <SUBGRF_ReadBuffer+0x1c>) + 8012e24: f7f7 fab0 bl 800a388 <HAL_SUBGHZ_ReadBuffer> + 8012e28: f384 8810 msr PRIMASK, r4 + 8012e2c: bd10 pop {r4, pc} + 8012e2e: bf00 nop + 8012e30: 20000acc .word 0x20000acc + +08012e34 <SUBGRF_WriteCommand>: + 8012e34: b510 push {r4, lr} + 8012e36: 4613 mov r3, r2 + 8012e38: f3ef 8410 mrs r4, PRIMASK + 8012e3c: b672 cpsid i + 8012e3e: 460a mov r2, r1 + 8012e40: 4601 mov r1, r0 + 8012e42: 4803 ldr r0, [pc, #12] ; (8012e50 <SUBGRF_WriteCommand+0x1c>) + 8012e44: f7f7 f9b6 bl 800a1b4 <HAL_SUBGHZ_ExecSetCmd> + 8012e48: f384 8810 msr PRIMASK, r4 + 8012e4c: bd10 pop {r4, pc} + 8012e4e: bf00 nop + 8012e50: 20000acc .word 0x20000acc + +08012e54 <SUBGRF_SetSleep>: + 8012e54: b513 push {r0, r1, r4, lr} + 8012e56: 4604 mov r4, r0 + 8012e58: 2000 movs r0, #0 + 8012e5a: f7f1 fcc9 bl 80047f0 <RBI_ConfigRFSwitch> + 8012e5e: 2002 movs r0, #2 + 8012e60: f7ff ff44 bl 8012cec <Radio_SMPS_Set> + 8012e64: f004 0407 and.w r4, r4, #7 + 8012e68: 2201 movs r2, #1 + 8012e6a: f10d 0107 add.w r1, sp, #7 + 8012e6e: 2084 movs r0, #132 ; 0x84 + 8012e70: f88d 4007 strb.w r4, [sp, #7] + 8012e74: f7ff ffde bl 8012e34 <SUBGRF_WriteCommand> + 8012e78: 4b02 ldr r3, [pc, #8] ; (8012e84 <SUBGRF_SetSleep+0x30>) + 8012e7a: 2200 movs r2, #0 + 8012e7c: 701a strb r2, [r3, #0] + 8012e7e: b002 add sp, #8 + 8012e80: bd10 pop {r4, pc} + 8012e82: bf00 nop + 8012e84: 200027c2 .word 0x200027c2 + +08012e88 <SUBGRF_SetStandby>: + 8012e88: b507 push {r0, r1, r2, lr} + 8012e8a: 2201 movs r2, #1 + 8012e8c: f88d 0007 strb.w r0, [sp, #7] + 8012e90: f10d 0107 add.w r1, sp, #7 + 8012e94: 2080 movs r0, #128 ; 0x80 + 8012e96: f7ff ffcd bl 8012e34 <SUBGRF_WriteCommand> + 8012e9a: f89d 3007 ldrb.w r3, [sp, #7] + 8012e9e: 2b00 cmp r3, #0 + 8012ea0: 4b03 ldr r3, [pc, #12] ; (8012eb0 <SUBGRF_SetStandby+0x28>) + 8012ea2: bf0c ite eq + 8012ea4: 2201 moveq r2, #1 + 8012ea6: 2202 movne r2, #2 + 8012ea8: 701a strb r2, [r3, #0] + 8012eaa: b003 add sp, #12 + 8012eac: f85d fb04 ldr.w pc, [sp], #4 + 8012eb0: 200027c2 .word 0x200027c2 + +08012eb4 <SUBGRF_SetTx>: + 8012eb4: b507 push {r0, r1, r2, lr} + 8012eb6: 4b09 ldr r3, [pc, #36] ; (8012edc <SUBGRF_SetTx+0x28>) + 8012eb8: f88d 0006 strb.w r0, [sp, #6] + 8012ebc: 2204 movs r2, #4 + 8012ebe: 701a strb r2, [r3, #0] + 8012ec0: 0c03 lsrs r3, r0, #16 + 8012ec2: f88d 3004 strb.w r3, [sp, #4] + 8012ec6: 2203 movs r2, #3 + 8012ec8: 0a03 lsrs r3, r0, #8 + 8012eca: a901 add r1, sp, #4 + 8012ecc: 2083 movs r0, #131 ; 0x83 + 8012ece: f88d 3005 strb.w r3, [sp, #5] + 8012ed2: f7ff ffaf bl 8012e34 <SUBGRF_WriteCommand> + 8012ed6: b003 add sp, #12 + 8012ed8: f85d fb04 ldr.w pc, [sp], #4 + 8012edc: 200027c2 .word 0x200027c2 + +08012ee0 <SUBGRF_SendPayload>: + 8012ee0: b510 push {r4, lr} + 8012ee2: 4614 mov r4, r2 + 8012ee4: f7ff ff90 bl 8012e08 <SUBGRF_SetPayload> + 8012ee8: 4620 mov r0, r4 + 8012eea: e8bd 4010 ldmia.w sp!, {r4, lr} + 8012eee: f7ff bfe1 b.w 8012eb4 <SUBGRF_SetTx> + ... + +08012ef4 <SUBGRF_SetRx>: + 8012ef4: b507 push {r0, r1, r2, lr} + 8012ef6: 4b09 ldr r3, [pc, #36] ; (8012f1c <SUBGRF_SetRx+0x28>) + 8012ef8: f88d 0006 strb.w r0, [sp, #6] + 8012efc: 2205 movs r2, #5 + 8012efe: 701a strb r2, [r3, #0] + 8012f00: 0c03 lsrs r3, r0, #16 + 8012f02: f88d 3004 strb.w r3, [sp, #4] + 8012f06: 2203 movs r2, #3 + 8012f08: 0a03 lsrs r3, r0, #8 + 8012f0a: a901 add r1, sp, #4 + 8012f0c: 2082 movs r0, #130 ; 0x82 + 8012f0e: f88d 3005 strb.w r3, [sp, #5] + 8012f12: f7ff ff8f bl 8012e34 <SUBGRF_WriteCommand> + 8012f16: b003 add sp, #12 + 8012f18: f85d fb04 ldr.w pc, [sp], #4 + 8012f1c: 200027c2 .word 0x200027c2 + +08012f20 <SUBGRF_GetRandom>: + 8012f20: b573 push {r0, r1, r4, r5, r6, lr} + 8012f22: 2600 movs r6, #0 + 8012f24: f640 00e2 movw r0, #2274 ; 0x8e2 + 8012f28: 9601 str r6, [sp, #4] + 8012f2a: f7ff fecf bl 8012ccc <SUBGRF_ReadRegister> + 8012f2e: f000 01fe and.w r1, r0, #254 ; 0xfe + 8012f32: 4605 mov r5, r0 + 8012f34: f640 00e2 movw r0, #2274 ; 0x8e2 + 8012f38: f7ff feb8 bl 8012cac <SUBGRF_WriteRegister> + 8012f3c: f640 00e5 movw r0, #2277 ; 0x8e5 + 8012f40: f7ff fec4 bl 8012ccc <SUBGRF_ReadRegister> + 8012f44: f000 017f and.w r1, r0, #127 ; 0x7f + 8012f48: 4604 mov r4, r0 + 8012f4a: f640 00e5 movw r0, #2277 ; 0x8e5 + 8012f4e: f7ff fead bl 8012cac <SUBGRF_WriteRegister> + 8012f52: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 8012f56: f7ff ffcd bl 8012ef4 <SUBGRF_SetRx> + 8012f5a: 2204 movs r2, #4 + 8012f5c: eb0d 0102 add.w r1, sp, r2 + 8012f60: f640 0019 movw r0, #2073 ; 0x819 + 8012f64: f7ff ff30 bl 8012dc8 <SUBGRF_ReadRegisters> + 8012f68: 4630 mov r0, r6 + 8012f6a: f7ff ff8d bl 8012e88 <SUBGRF_SetStandby> + 8012f6e: 4629 mov r1, r5 + 8012f70: f640 00e2 movw r0, #2274 ; 0x8e2 + 8012f74: f7ff fe9a bl 8012cac <SUBGRF_WriteRegister> + 8012f78: 4621 mov r1, r4 + 8012f7a: f640 00e5 movw r0, #2277 ; 0x8e5 + 8012f7e: f7ff fe95 bl 8012cac <SUBGRF_WriteRegister> + 8012f82: 9801 ldr r0, [sp, #4] + 8012f84: b002 add sp, #8 + 8012f86: bd70 pop {r4, r5, r6, pc} + +08012f88 <SUBGRF_SetRxBoosted>: + 8012f88: b513 push {r0, r1, r4, lr} + 8012f8a: 4b0c ldr r3, [pc, #48] ; (8012fbc <SUBGRF_SetRxBoosted+0x34>) + 8012f8c: 4604 mov r4, r0 + 8012f8e: 2205 movs r2, #5 + 8012f90: 2197 movs r1, #151 ; 0x97 + 8012f92: f640 00ac movw r0, #2220 ; 0x8ac + 8012f96: 701a strb r2, [r3, #0] + 8012f98: f7ff fe88 bl 8012cac <SUBGRF_WriteRegister> + 8012f9c: 0c23 lsrs r3, r4, #16 + 8012f9e: f88d 3004 strb.w r3, [sp, #4] + 8012fa2: 2203 movs r2, #3 + 8012fa4: 0a23 lsrs r3, r4, #8 + 8012fa6: a901 add r1, sp, #4 + 8012fa8: 2082 movs r0, #130 ; 0x82 + 8012faa: f88d 3005 strb.w r3, [sp, #5] + 8012fae: f88d 4006 strb.w r4, [sp, #6] + 8012fb2: f7ff ff3f bl 8012e34 <SUBGRF_WriteCommand> + 8012fb6: b002 add sp, #8 + 8012fb8: bd10 pop {r4, pc} + 8012fba: bf00 nop + 8012fbc: 200027c2 .word 0x200027c2 + +08012fc0 <SUBGRF_SetRxDutyCycle>: + 8012fc0: b507 push {r0, r1, r2, lr} + 8012fc2: 0c03 lsrs r3, r0, #16 + 8012fc4: f88d 3000 strb.w r3, [sp] + 8012fc8: 0a03 lsrs r3, r0, #8 + 8012fca: f88d 3001 strb.w r3, [sp, #1] + 8012fce: 0c0b lsrs r3, r1, #16 + 8012fd0: ba49 rev16 r1, r1 + 8012fd2: f88d 0002 strb.w r0, [sp, #2] + 8012fd6: f8ad 1004 strh.w r1, [sp, #4] + 8012fda: 2206 movs r2, #6 + 8012fdc: 4669 mov r1, sp + 8012fde: 2094 movs r0, #148 ; 0x94 + 8012fe0: f88d 3003 strb.w r3, [sp, #3] + 8012fe4: f7ff ff26 bl 8012e34 <SUBGRF_WriteCommand> + 8012fe8: 4b02 ldr r3, [pc, #8] ; (8012ff4 <SUBGRF_SetRxDutyCycle+0x34>) + 8012fea: 2206 movs r2, #6 + 8012fec: 701a strb r2, [r3, #0] + 8012fee: b003 add sp, #12 + 8012ff0: f85d fb04 ldr.w pc, [sp], #4 + 8012ff4: 200027c2 .word 0x200027c2 + +08012ff8 <SUBGRF_SetCad>: + 8012ff8: 2200 movs r2, #0 + 8012ffa: b508 push {r3, lr} + 8012ffc: 4611 mov r1, r2 + 8012ffe: 20c5 movs r0, #197 ; 0xc5 + 8013000: f7ff ff18 bl 8012e34 <SUBGRF_WriteCommand> + 8013004: 4b01 ldr r3, [pc, #4] ; (801300c <SUBGRF_SetCad+0x14>) + 8013006: 2207 movs r2, #7 + 8013008: 701a strb r2, [r3, #0] + 801300a: bd08 pop {r3, pc} + 801300c: 200027c2 .word 0x200027c2 + +08013010 <SUBGRF_SetTxContinuousWave>: + 8013010: 2200 movs r2, #0 + 8013012: 4611 mov r1, r2 + 8013014: 20d1 movs r0, #209 ; 0xd1 + 8013016: f7ff bf0d b.w 8012e34 <SUBGRF_WriteCommand> + +0801301a <SUBGRF_SetTxInfinitePreamble>: + 801301a: 2200 movs r2, #0 + 801301c: 4611 mov r1, r2 + 801301e: 20d2 movs r0, #210 ; 0xd2 + 8013020: f7ff bf08 b.w 8012e34 <SUBGRF_WriteCommand> + +08013024 <SUBGRF_SetStopRxTimerOnPreambleDetect>: + 8013024: b507 push {r0, r1, r2, lr} + 8013026: 2201 movs r2, #1 + 8013028: f88d 0007 strb.w r0, [sp, #7] + 801302c: f10d 0107 add.w r1, sp, #7 + 8013030: 209f movs r0, #159 ; 0x9f + 8013032: f7ff feff bl 8012e34 <SUBGRF_WriteCommand> + 8013036: b003 add sp, #12 + 8013038: f85d fb04 ldr.w pc, [sp], #4 + +0801303c <SUBGRF_SetLoRaSymbNumTimeout>: + 801303c: b507 push {r0, r1, r2, lr} + 801303e: 2201 movs r2, #1 + 8013040: f88d 0007 strb.w r0, [sp, #7] + 8013044: f10d 0107 add.w r1, sp, #7 + 8013048: 20a0 movs r0, #160 ; 0xa0 + 801304a: f7ff fef3 bl 8012e34 <SUBGRF_WriteCommand> + 801304e: f89d 1007 ldrb.w r1, [sp, #7] + 8013052: 293f cmp r1, #63 ; 0x3f + 8013054: d907 bls.n 8013066 <SUBGRF_SetLoRaSymbNumTimeout+0x2a> + 8013056: f001 01f8 and.w r1, r1, #248 ; 0xf8 + 801305a: 3101 adds r1, #1 + 801305c: b2c9 uxtb r1, r1 + 801305e: f240 7006 movw r0, #1798 ; 0x706 + 8013062: f7ff fe23 bl 8012cac <SUBGRF_WriteRegister> + 8013066: b003 add sp, #12 + 8013068: f85d fb04 ldr.w pc, [sp], #4 + +0801306c <SUBGRF_SetRegulatorMode>: + 801306c: b507 push {r0, r1, r2, lr} + 801306e: f7f1 fbe5 bl 800483c <RBI_IsDCDC> + 8013072: 1e43 subs r3, r0, #1 + 8013074: 4258 negs r0, r3 + 8013076: 4158 adcs r0, r3 + 8013078: f88d 0007 strb.w r0, [sp, #7] + 801307c: 2201 movs r2, #1 + 801307e: f10d 0107 add.w r1, sp, #7 + 8013082: 2096 movs r0, #150 ; 0x96 + 8013084: f7ff fed6 bl 8012e34 <SUBGRF_WriteCommand> + 8013088: b003 add sp, #12 + 801308a: f85d fb04 ldr.w pc, [sp], #4 + +0801308e <SUBGRF_Calibrate>: + 801308e: b507 push {r0, r1, r2, lr} + 8013090: f000 007f and.w r0, r0, #127 ; 0x7f + 8013094: f88d 0007 strb.w r0, [sp, #7] + 8013098: 2201 movs r2, #1 + 801309a: f10d 0107 add.w r1, sp, #7 + 801309e: 2089 movs r0, #137 ; 0x89 + 80130a0: f7ff fec8 bl 8012e34 <SUBGRF_WriteCommand> + 80130a4: b003 add sp, #12 + 80130a6: f85d fb04 ldr.w pc, [sp], #4 + ... + +080130ac <SUBGRF_CalibrateImage>: + 80130ac: 4b15 ldr r3, [pc, #84] ; (8013104 <SUBGRF_CalibrateImage+0x58>) + 80130ae: 4298 cmp r0, r3 + 80130b0: b507 push {r0, r1, r2, lr} + 80130b2: d81b bhi.n 80130ec <SUBGRF_CalibrateImage+0x40> + 80130b4: 4b14 ldr r3, [pc, #80] ; (8013108 <SUBGRF_CalibrateImage+0x5c>) + 80130b6: 4298 cmp r0, r3 + 80130b8: d81b bhi.n 80130f2 <SUBGRF_CalibrateImage+0x46> + 80130ba: 4b14 ldr r3, [pc, #80] ; (801310c <SUBGRF_CalibrateImage+0x60>) + 80130bc: 4298 cmp r0, r3 + 80130be: d81b bhi.n 80130f8 <SUBGRF_CalibrateImage+0x4c> + 80130c0: 4b13 ldr r3, [pc, #76] ; (8013110 <SUBGRF_CalibrateImage+0x64>) + 80130c2: 4298 cmp r0, r3 + 80130c4: d81b bhi.n 80130fe <SUBGRF_CalibrateImage+0x52> + 80130c6: 4b13 ldr r3, [pc, #76] ; (8013114 <SUBGRF_CalibrateImage+0x68>) + 80130c8: 4298 cmp r0, r3 + 80130ca: bf95 itete ls + 80130cc: 2229 movls r2, #41 ; 0x29 + 80130ce: 226b movhi r2, #107 ; 0x6b + 80130d0: 232b movls r3, #43 ; 0x2b + 80130d2: 236f movhi r3, #111 ; 0x6f + 80130d4: f88d 2004 strb.w r2, [sp, #4] + 80130d8: a901 add r1, sp, #4 + 80130da: 2202 movs r2, #2 + 80130dc: 2098 movs r0, #152 ; 0x98 + 80130de: f88d 3005 strb.w r3, [sp, #5] + 80130e2: f7ff fea7 bl 8012e34 <SUBGRF_WriteCommand> + 80130e6: b003 add sp, #12 + 80130e8: f85d fb04 ldr.w pc, [sp], #4 + 80130ec: 22e1 movs r2, #225 ; 0xe1 + 80130ee: 23e9 movs r3, #233 ; 0xe9 + 80130f0: e7f0 b.n 80130d4 <SUBGRF_CalibrateImage+0x28> + 80130f2: 22d7 movs r2, #215 ; 0xd7 + 80130f4: 23db movs r3, #219 ; 0xdb + 80130f6: e7ed b.n 80130d4 <SUBGRF_CalibrateImage+0x28> + 80130f8: 22c1 movs r2, #193 ; 0xc1 + 80130fa: 23c5 movs r3, #197 ; 0xc5 + 80130fc: e7ea b.n 80130d4 <SUBGRF_CalibrateImage+0x28> + 80130fe: 2275 movs r2, #117 ; 0x75 + 8013100: 2381 movs r3, #129 ; 0x81 + 8013102: e7e7 b.n 80130d4 <SUBGRF_CalibrateImage+0x28> + 8013104: 35a4e900 .word 0x35a4e900 + 8013108: 32a9f880 .word 0x32a9f880 + 801310c: 2de54480 .word 0x2de54480 + 8013110: 1b6b0b00 .word 0x1b6b0b00 + 8013114: 1954fc40 .word 0x1954fc40 + +08013118 <SUBGRF_SetPaConfig>: + 8013118: b507 push {r0, r1, r2, lr} + 801311a: f88d 2006 strb.w r2, [sp, #6] + 801311e: 2204 movs r2, #4 + 8013120: f88d 0004 strb.w r0, [sp, #4] + 8013124: f88d 1005 strb.w r1, [sp, #5] + 8013128: 2095 movs r0, #149 ; 0x95 + 801312a: eb0d 0102 add.w r1, sp, r2 + 801312e: f88d 3007 strb.w r3, [sp, #7] + 8013132: f7ff fe7f bl 8012e34 <SUBGRF_WriteCommand> + 8013136: b003 add sp, #12 + 8013138: f85d fb04 ldr.w pc, [sp], #4 + +0801313c <SUBGRF_SetDioIrqParams>: + 801313c: b507 push {r0, r1, r2, lr} + 801313e: ba52 rev16 r2, r2 + 8013140: f8ad 2004 strh.w r2, [sp, #4] + 8013144: ba40 rev16 r0, r0 + 8013146: 2208 movs r2, #8 + 8013148: ba49 rev16 r1, r1 + 801314a: f8ad 0000 strh.w r0, [sp] + 801314e: f8ad 1002 strh.w r1, [sp, #2] + 8013152: ba5b rev16 r3, r3 + 8013154: 4669 mov r1, sp + 8013156: 4610 mov r0, r2 + 8013158: f8ad 3006 strh.w r3, [sp, #6] + 801315c: f7ff fe6a bl 8012e34 <SUBGRF_WriteCommand> + 8013160: b003 add sp, #12 + 8013162: f85d fb04 ldr.w pc, [sp], #4 + +08013166 <SUBGRF_SetTcxoMode>: + 8013166: b507 push {r0, r1, r2, lr} + 8013168: 0c0b lsrs r3, r1, #16 + 801316a: 2204 movs r2, #4 + 801316c: f000 0007 and.w r0, r0, #7 + 8013170: ba49 rev16 r1, r1 + 8013172: f88d 0004 strb.w r0, [sp, #4] + 8013176: f8ad 1006 strh.w r1, [sp, #6] + 801317a: 2097 movs r0, #151 ; 0x97 + 801317c: eb0d 0102 add.w r1, sp, r2 + 8013180: f88d 3005 strb.w r3, [sp, #5] + 8013184: f7ff fe56 bl 8012e34 <SUBGRF_WriteCommand> + 8013188: b003 add sp, #12 + 801318a: f85d fb04 ldr.w pc, [sp], #4 + ... + +08013190 <SUBGRF_Init>: + 8013190: b510 push {r4, lr} + 8013192: b108 cbz r0, 8013198 <SUBGRF_Init+0x8> + 8013194: 4b19 ldr r3, [pc, #100] ; (80131fc <SUBGRF_Init+0x6c>) + 8013196: 6018 str r0, [r3, #0] + 8013198: f7ef fc04 bl 80029a4 <MX_SUBGHZ_Init> + 801319c: 2002 movs r0, #2 + 801319e: f7ff fda5 bl 8012cec <Radio_SMPS_Set> + 80131a2: 2400 movs r4, #0 + 80131a4: 4b16 ldr r3, [pc, #88] ; (8013200 <SUBGRF_Init+0x70>) + 80131a6: 4620 mov r0, r4 + 80131a8: 701c strb r4, [r3, #0] + 80131aa: f7ff fe6d bl 8012e88 <SUBGRF_SetStandby> + 80131ae: f7f1 fb43 bl 8004838 <RBI_IsTCXO> + 80131b2: 2801 cmp r0, #1 + 80131b4: d117 bne.n 80131e6 <SUBGRF_Init+0x56> + 80131b6: f44f 7120 mov.w r1, #640 ; 0x280 + 80131ba: f7ff ffd4 bl 8013166 <SUBGRF_SetTcxoMode> + 80131be: f640 1011 movw r0, #2321 ; 0x911 + 80131c2: 4621 mov r1, r4 + 80131c4: f7ff fd72 bl 8012cac <SUBGRF_WriteRegister> + 80131c8: f04f 007f mov.w r0, #127 ; 0x7f + 80131cc: f7ff ff5f bl 801308e <SUBGRF_Calibrate> + 80131d0: 210e movs r1, #14 + 80131d2: f640 101f movw r0, #2335 ; 0x91f + 80131d6: f7ff fd69 bl 8012cac <SUBGRF_WriteRegister> + 80131da: f7f1 fad5 bl 8004788 <RBI_Init> + 80131de: 4b09 ldr r3, [pc, #36] ; (8013204 <SUBGRF_Init+0x74>) + 80131e0: 2201 movs r2, #1 + 80131e2: 701a strb r2, [r3, #0] + 80131e4: bd10 pop {r4, pc} + 80131e6: 2110 movs r1, #16 + 80131e8: f640 1011 movw r0, #2321 ; 0x911 + 80131ec: f7ff fd5e bl 8012cac <SUBGRF_WriteRegister> + 80131f0: 2110 movs r1, #16 + 80131f2: f640 1012 movw r0, #2322 ; 0x912 + 80131f6: f7ff fd59 bl 8012cac <SUBGRF_WriteRegister> + 80131fa: e7e9 b.n 80131d0 <SUBGRF_Init+0x40> + 80131fc: 200027c4 .word 0x200027c4 + 8013200: 200027c0 .word 0x200027c0 + 8013204: 200027c2 .word 0x200027c2 + +08013208 <SUBGRF_SetRfFrequency>: + 8013208: b537 push {r0, r1, r2, r4, r5, lr} + 801320a: 4d0c ldr r5, [pc, #48] ; (801323c <SUBGRF_SetRfFrequency+0x34>) + 801320c: 782b ldrb r3, [r5, #0] + 801320e: 4604 mov r4, r0 + 8013210: b91b cbnz r3, 801321a <SUBGRF_SetRfFrequency+0x12> + 8013212: f7ff ff4b bl 80130ac <SUBGRF_CalibrateImage> + 8013216: 2301 movs r3, #1 + 8013218: 702b strb r3, [r5, #0] + 801321a: 2300 movs r3, #0 + 801321c: 4a08 ldr r2, [pc, #32] ; (8013240 <SUBGRF_SetRfFrequency+0x38>) + 801321e: 0660 lsls r0, r4, #25 + 8013220: 09e1 lsrs r1, r4, #7 + 8013222: f7ee fc75 bl 8001b10 <__aeabi_uldivmod> + 8013226: 2204 movs r2, #4 + 8013228: ba00 rev r0, r0 + 801322a: 9001 str r0, [sp, #4] + 801322c: eb0d 0102 add.w r1, sp, r2 + 8013230: 2086 movs r0, #134 ; 0x86 + 8013232: f7ff fdff bl 8012e34 <SUBGRF_WriteCommand> + 8013236: b003 add sp, #12 + 8013238: bd30 pop {r4, r5, pc} + 801323a: bf00 nop + 801323c: 200027c0 .word 0x200027c0 + 8013240: 01e84800 .word 0x01e84800 + +08013244 <SUBGRF_SetPacketType>: + 8013244: b507 push {r0, r1, r2, lr} + 8013246: 4b09 ldr r3, [pc, #36] ; (801326c <SUBGRF_SetPacketType+0x28>) + 8013248: f88d 0007 strb.w r0, [sp, #7] + 801324c: 4601 mov r1, r0 + 801324e: 7018 strb r0, [r3, #0] + 8013250: b918 cbnz r0, 801325a <SUBGRF_SetPacketType+0x16> + 8013252: f240 60ac movw r0, #1708 ; 0x6ac + 8013256: f7ff fd29 bl 8012cac <SUBGRF_WriteRegister> + 801325a: 2201 movs r2, #1 + 801325c: f10d 0107 add.w r1, sp, #7 + 8013260: 208a movs r0, #138 ; 0x8a + 8013262: f7ff fde7 bl 8012e34 <SUBGRF_WriteCommand> + 8013266: b003 add sp, #12 + 8013268: f85d fb04 ldr.w pc, [sp], #4 + 801326c: 200027c3 .word 0x200027c3 + +08013270 <SUBGRF_SetTxParams>: + 8013270: 2801 cmp r0, #1 + 8013272: b573 push {r0, r1, r4, r5, r6, lr} + 8013274: 460c mov r4, r1 + 8013276: 4616 mov r6, r2 + 8013278: d137 bne.n 80132ea <SUBGRF_SetTxParams+0x7a> + 801327a: 2000 movs r0, #0 + 801327c: f7f1 fae0 bl 8004840 <RBI_GetRFOMaxPowerConfig> + 8013280: 42a0 cmp r0, r4 + 8013282: bfb8 it lt + 8013284: b244 sxtblt r4, r0 + 8013286: 280e cmp r0, #14 + 8013288: 4605 mov r5, r0 + 801328a: d11a bne.n 80132c2 <SUBGRF_SetTxParams+0x52> + 801328c: 2301 movs r3, #1 + 801328e: 461a mov r2, r3 + 8013290: 2100 movs r1, #0 + 8013292: 2004 movs r0, #4 + 8013294: f7ff ff40 bl 8013118 <SUBGRF_SetPaConfig> + 8013298: f06f 0310 mvn.w r3, #16 + 801329c: 429c cmp r4, r3 + 801329e: bfb8 it lt + 80132a0: 461c movlt r4, r3 + 80132a2: 2118 movs r1, #24 + 80132a4: f640 00e7 movw r0, #2279 ; 0x8e7 + 80132a8: f7ff fd00 bl 8012cac <SUBGRF_WriteRegister> + 80132ac: 2202 movs r2, #2 + 80132ae: a901 add r1, sp, #4 + 80132b0: 208e movs r0, #142 ; 0x8e + 80132b2: f88d 4004 strb.w r4, [sp, #4] + 80132b6: f88d 6005 strb.w r6, [sp, #5] + 80132ba: f7ff fdbb bl 8012e34 <SUBGRF_WriteCommand> + 80132be: b002 add sp, #8 + 80132c0: bd70 pop {r4, r5, r6, pc} + 80132c2: 2301 movs r3, #1 + 80132c4: 280a cmp r0, #10 + 80132c6: b2e4 uxtb r4, r4 + 80132c8: 461a mov r2, r3 + 80132ca: f04f 0100 mov.w r1, #0 + 80132ce: d105 bne.n 80132dc <SUBGRF_SetTxParams+0x6c> + 80132d0: 4618 mov r0, r3 + 80132d2: f7ff ff21 bl 8013118 <SUBGRF_SetPaConfig> + 80132d6: 3403 adds r4, #3 + 80132d8: b264 sxtb r4, r4 + 80132da: e7dd b.n 8013298 <SUBGRF_SetTxParams+0x28> + 80132dc: 2007 movs r0, #7 + 80132de: f1c5 050e rsb r5, r5, #14 + 80132e2: f7ff ff19 bl 8013118 <SUBGRF_SetPaConfig> + 80132e6: 442c add r4, r5 + 80132e8: e7f6 b.n 80132d8 <SUBGRF_SetTxParams+0x68> + 80132ea: f640 00d8 movw r0, #2264 ; 0x8d8 + 80132ee: f7ff fced bl 8012ccc <SUBGRF_ReadRegister> + 80132f2: f040 011e orr.w r1, r0, #30 + 80132f6: b2c9 uxtb r1, r1 + 80132f8: f640 00d8 movw r0, #2264 ; 0x8d8 + 80132fc: f7ff fcd6 bl 8012cac <SUBGRF_WriteRegister> + 8013300: 2001 movs r0, #1 + 8013302: f7f1 fa9d bl 8004840 <RBI_GetRFOMaxPowerConfig> + 8013306: 42a0 cmp r0, r4 + 8013308: bfb8 it lt + 801330a: b244 sxtblt r4, r0 + 801330c: 2814 cmp r0, #20 + 801330e: 4605 mov r5, r0 + 8013310: f04f 0301 mov.w r3, #1 + 8013314: f04f 0200 mov.w r2, #0 + 8013318: d10c bne.n 8013334 <SUBGRF_SetTxParams+0xc4> + 801331a: 2105 movs r1, #5 + 801331c: 2003 movs r0, #3 + 801331e: f7ff fefb bl 8013118 <SUBGRF_SetPaConfig> + 8013322: 3402 adds r4, #2 + 8013324: b264 sxtb r4, r4 + 8013326: f06f 0308 mvn.w r3, #8 + 801332a: 429c cmp r4, r3 + 801332c: bfb8 it lt + 801332e: 461c movlt r4, r3 + 8013330: 2138 movs r1, #56 ; 0x38 + 8013332: e7b7 b.n 80132a4 <SUBGRF_SetTxParams+0x34> + 8013334: 2811 cmp r0, #17 + 8013336: d105 bne.n 8013344 <SUBGRF_SetTxParams+0xd4> + 8013338: 2103 movs r1, #3 + 801333a: 2002 movs r0, #2 + 801333c: f7ff feec bl 8013118 <SUBGRF_SetPaConfig> + 8013340: 3405 adds r4, #5 + 8013342: e7ef b.n 8013324 <SUBGRF_SetTxParams+0xb4> + 8013344: 280e cmp r0, #14 + 8013346: d104 bne.n 8013352 <SUBGRF_SetTxParams+0xe2> + 8013348: 2102 movs r1, #2 + 801334a: 4608 mov r0, r1 + 801334c: f7ff fee4 bl 8013118 <SUBGRF_SetPaConfig> + 8013350: e7e9 b.n 8013326 <SUBGRF_SetTxParams+0xb6> + 8013352: f1c5 0516 rsb r5, r5, #22 + 8013356: 2107 movs r1, #7 + 8013358: 2004 movs r0, #4 + 801335a: 4425 add r5, r4 + 801335c: f7ff fedc bl 8013118 <SUBGRF_SetPaConfig> + 8013360: b26c sxtb r4, r5 + 8013362: e7e0 b.n 8013326 <SUBGRF_SetTxParams+0xb6> + +08013364 <SUBGRF_SetModulationParams>: + 8013364: b513 push {r0, r1, r4, lr} + 8013366: 4a31 ldr r2, [pc, #196] ; (801342c <SUBGRF_SetModulationParams+0xc8>) + 8013368: 4604 mov r4, r0 + 801336a: 6851 ldr r1, [r2, #4] + 801336c: 6810 ldr r0, [r2, #0] + 801336e: 466b mov r3, sp + 8013370: c303 stmia r3!, {r0, r1} + 8013372: 4b2f ldr r3, [pc, #188] ; (8013430 <SUBGRF_SetModulationParams+0xcc>) + 8013374: 7820 ldrb r0, [r4, #0] + 8013376: 781b ldrb r3, [r3, #0] + 8013378: 4283 cmp r3, r0 + 801337a: d001 beq.n 8013380 <SUBGRF_SetModulationParams+0x1c> + 801337c: f7ff ff62 bl 8013244 <SUBGRF_SetPacketType> + 8013380: 7823 ldrb r3, [r4, #0] + 8013382: 2b03 cmp r3, #3 + 8013384: d827 bhi.n 80133d6 <SUBGRF_SetModulationParams+0x72> + 8013386: e8df f003 tbb [pc, r3] + 801338a: 3902 .short 0x3902 + 801338c: 3c28 .short 0x3c28 + 801338e: 6862 ldr r2, [r4, #4] + 8013390: 4b28 ldr r3, [pc, #160] ; (8013434 <SUBGRF_SetModulationParams+0xd0>) + 8013392: fbb3 f3f2 udiv r3, r3, r2 + 8013396: 0c1a lsrs r2, r3, #16 + 8013398: 68a1 ldr r1, [r4, #8] + 801339a: f88d 2000 strb.w r2, [sp] + 801339e: f88d 3002 strb.w r3, [sp, #2] + 80133a2: 0a1a lsrs r2, r3, #8 + 80133a4: 7b23 ldrb r3, [r4, #12] + 80133a6: f88d 3003 strb.w r3, [sp, #3] + 80133aa: 7b63 ldrb r3, [r4, #13] + 80133ac: f88d 2001 strb.w r2, [sp, #1] + 80133b0: f88d 3004 strb.w r3, [sp, #4] + 80133b4: 4a20 ldr r2, [pc, #128] ; (8013438 <SUBGRF_SetModulationParams+0xd4>) + 80133b6: 2300 movs r3, #0 + 80133b8: 0648 lsls r0, r1, #25 + 80133ba: 09c9 lsrs r1, r1, #7 + 80133bc: f7ee fba8 bl 8001b10 <__aeabi_uldivmod> + 80133c0: 0c03 lsrs r3, r0, #16 + 80133c2: ba40 rev16 r0, r0 + 80133c4: f88d 3005 strb.w r3, [sp, #5] + 80133c8: f8ad 0006 strh.w r0, [sp, #6] + 80133cc: 2208 movs r2, #8 + 80133ce: 4669 mov r1, sp + 80133d0: 208b movs r0, #139 ; 0x8b + 80133d2: f7ff fd2f bl 8012e34 <SUBGRF_WriteCommand> + 80133d6: b002 add sp, #8 + 80133d8: bd10 pop {r4, pc} + 80133da: 6922 ldr r2, [r4, #16] + 80133dc: 4b15 ldr r3, [pc, #84] ; (8013434 <SUBGRF_SetModulationParams+0xd0>) + 80133de: fbb3 f3f2 udiv r3, r3, r2 + 80133e2: 0c1a lsrs r2, r3, #16 + 80133e4: f88d 2000 strb.w r2, [sp] + 80133e8: f88d 3002 strb.w r3, [sp, #2] + 80133ec: 0a1a lsrs r2, r3, #8 + 80133ee: 7d23 ldrb r3, [r4, #20] + 80133f0: f88d 2001 strb.w r2, [sp, #1] + 80133f4: f88d 3003 strb.w r3, [sp, #3] + 80133f8: 2204 movs r2, #4 + 80133fa: e7e8 b.n 80133ce <SUBGRF_SetModulationParams+0x6a> + 80133fc: 69a3 ldr r3, [r4, #24] + 80133fe: 9300 str r3, [sp, #0] + 8013400: e7fa b.n 80133f8 <SUBGRF_SetModulationParams+0x94> + 8013402: 6862 ldr r2, [r4, #4] + 8013404: 4b0b ldr r3, [pc, #44] ; (8013434 <SUBGRF_SetModulationParams+0xd0>) + 8013406: fbb3 f3f2 udiv r3, r3, r2 + 801340a: 0c1a lsrs r2, r3, #16 + 801340c: f88d 2000 strb.w r2, [sp] + 8013410: f88d 3002 strb.w r3, [sp, #2] + 8013414: 0a1a lsrs r2, r3, #8 + 8013416: 7b23 ldrb r3, [r4, #12] + 8013418: f88d 3003 strb.w r3, [sp, #3] + 801341c: 7b63 ldrb r3, [r4, #13] + 801341e: f88d 2001 strb.w r2, [sp, #1] + 8013422: f88d 3004 strb.w r3, [sp, #4] + 8013426: 2205 movs r2, #5 + 8013428: e7d1 b.n 80133ce <SUBGRF_SetModulationParams+0x6a> + 801342a: bf00 nop + 801342c: 080145dc .word 0x080145dc + 8013430: 200027c3 .word 0x200027c3 + 8013434: 3d090000 .word 0x3d090000 + 8013438: 01e84800 .word 0x01e84800 + +0801343c <SUBGRF_SetPacketParams>: + 801343c: b51f push {r0, r1, r2, r3, r4, lr} + 801343e: 4a2e ldr r2, [pc, #184] ; (80134f8 <SUBGRF_SetPacketParams+0xbc>) + 8013440: 4604 mov r4, r0 + 8013442: 68d1 ldr r1, [r2, #12] + 8013444: 6890 ldr r0, [r2, #8] + 8013446: 7c12 ldrb r2, [r2, #16] + 8013448: ab01 add r3, sp, #4 + 801344a: c303 stmia r3!, {r0, r1} + 801344c: 701a strb r2, [r3, #0] + 801344e: 4b2b ldr r3, [pc, #172] ; (80134fc <SUBGRF_SetPacketParams+0xc0>) + 8013450: 7820 ldrb r0, [r4, #0] + 8013452: 781b ldrb r3, [r3, #0] + 8013454: 4283 cmp r3, r0 + 8013456: d001 beq.n 801345c <SUBGRF_SetPacketParams+0x20> + 8013458: f7ff fef4 bl 8013244 <SUBGRF_SetPacketType> + 801345c: 7823 ldrb r3, [r4, #0] + 801345e: 2b03 cmp r3, #3 + 8013460: d826 bhi.n 80134b0 <SUBGRF_SetPacketParams+0x74> + 8013462: e8df f003 tbb [pc, r3] + 8013466: 3802 .short 0x3802 + 8013468: 0233 .short 0x0233 + 801346a: 7a63 ldrb r3, [r4, #9] + 801346c: 2bf1 cmp r3, #241 ; 0xf1 + 801346e: d121 bne.n 80134b4 <SUBGRF_SetPacketParams+0x78> + 8013470: f64f 70ff movw r0, #65535 ; 0xffff + 8013474: f7ff fc84 bl 8012d80 <SUBGRF_SetCrcSeed> + 8013478: f248 0005 movw r0, #32773 ; 0x8005 + 801347c: f7ff fc92 bl 8012da4 <SUBGRF_SetCrcPolynomial> + 8013480: 2302 movs r3, #2 + 8013482: 8862 ldrh r2, [r4, #2] + 8013484: 88a1 ldrh r1, [r4, #4] + 8013486: f8ad 1006 strh.w r1, [sp, #6] + 801348a: ba52 rev16 r2, r2 + 801348c: 88e1 ldrh r1, [r4, #6] + 801348e: f8ad 2004 strh.w r2, [sp, #4] + 8013492: f88d 300b strb.w r3, [sp, #11] + 8013496: 7a22 ldrb r2, [r4, #8] + 8013498: 7aa3 ldrb r3, [r4, #10] + 801349a: f88d 200a strb.w r2, [sp, #10] + 801349e: f8ad 1008 strh.w r1, [sp, #8] + 80134a2: f88d 300c strb.w r3, [sp, #12] + 80134a6: 2209 movs r2, #9 + 80134a8: a901 add r1, sp, #4 + 80134aa: 208c movs r0, #140 ; 0x8c + 80134ac: f7ff fcc2 bl 8012e34 <SUBGRF_WriteCommand> + 80134b0: b004 add sp, #16 + 80134b2: bd10 pop {r4, pc} + 80134b4: 2bf2 cmp r3, #242 ; 0xf2 + 80134b6: d1e4 bne.n 8013482 <SUBGRF_SetPacketParams+0x46> + 80134b8: f641 500f movw r0, #7439 ; 0x1d0f + 80134bc: f7ff fc60 bl 8012d80 <SUBGRF_SetCrcSeed> + 80134c0: f241 0021 movw r0, #4129 ; 0x1021 + 80134c4: f7ff fc6e bl 8012da4 <SUBGRF_SetCrcPolynomial> + 80134c8: 2306 movs r3, #6 + 80134ca: e7da b.n 8013482 <SUBGRF_SetPacketParams+0x46> + 80134cc: 7b23 ldrb r3, [r4, #12] + 80134ce: f88d 3004 strb.w r3, [sp, #4] + 80134d2: 2201 movs r2, #1 + 80134d4: e7e8 b.n 80134a8 <SUBGRF_SetPacketParams+0x6c> + 80134d6: 89e3 ldrh r3, [r4, #14] + 80134d8: 4a09 ldr r2, [pc, #36] ; (8013500 <SUBGRF_SetPacketParams+0xc4>) + 80134da: ba5b rev16 r3, r3 + 80134dc: f8ad 3004 strh.w r3, [sp, #4] + 80134e0: 7c23 ldrb r3, [r4, #16] + 80134e2: 7013 strb r3, [r2, #0] + 80134e4: f88d 3006 strb.w r3, [sp, #6] + 80134e8: 7c63 ldrb r3, [r4, #17] + 80134ea: f88d 3007 strb.w r3, [sp, #7] + 80134ee: 8a63 ldrh r3, [r4, #18] + 80134f0: f8ad 3008 strh.w r3, [sp, #8] + 80134f4: 2206 movs r2, #6 + 80134f6: e7d7 b.n 80134a8 <SUBGRF_SetPacketParams+0x6c> + 80134f8: 080145dc .word 0x080145dc + 80134fc: 200027c3 .word 0x200027c3 + 8013500: 200027c1 .word 0x200027c1 + +08013504 <SUBGRF_SetBufferBaseAddress>: + 8013504: b507 push {r0, r1, r2, lr} + 8013506: 2202 movs r2, #2 + 8013508: f88d 0004 strb.w r0, [sp, #4] + 801350c: f88d 1005 strb.w r1, [sp, #5] + 8013510: 208f movs r0, #143 ; 0x8f + 8013512: a901 add r1, sp, #4 + 8013514: f7ff fc8e bl 8012e34 <SUBGRF_WriteCommand> + 8013518: b003 add sp, #12 + 801351a: f85d fb04 ldr.w pc, [sp], #4 + ... + +08013520 <SUBGRF_ReadCommand>: + 8013520: b510 push {r4, lr} + 8013522: 4613 mov r3, r2 + 8013524: f3ef 8410 mrs r4, PRIMASK + 8013528: b672 cpsid i + 801352a: 460a mov r2, r1 + 801352c: 4601 mov r1, r0 + 801352e: 4803 ldr r0, [pc, #12] ; (801353c <SUBGRF_ReadCommand+0x1c>) + 8013530: f7f6 fe78 bl 800a224 <HAL_SUBGHZ_ExecGetCmd> + 8013534: f384 8810 msr PRIMASK, r4 + 8013538: bd10 pop {r4, pc} + 801353a: bf00 nop + 801353c: 20000acc .word 0x20000acc + +08013540 <SUBGRF_GetRssiInst>: + 8013540: b507 push {r0, r1, r2, lr} + 8013542: 2201 movs r2, #1 + 8013544: a901 add r1, sp, #4 + 8013546: 2015 movs r0, #21 + 8013548: f7ff ffea bl 8013520 <SUBGRF_ReadCommand> + 801354c: f89d 0004 ldrb.w r0, [sp, #4] + 8013550: 4240 negs r0, r0 + 8013552: 1040 asrs r0, r0, #1 + 8013554: b003 add sp, #12 + 8013556: f85d fb04 ldr.w pc, [sp], #4 + ... + +0801355c <SUBGRF_GetRxBufferStatus>: + 801355c: b537 push {r0, r1, r2, r4, r5, lr} + 801355e: 4605 mov r5, r0 + 8013560: 460c mov r4, r1 + 8013562: 2202 movs r2, #2 + 8013564: a901 add r1, sp, #4 + 8013566: 2013 movs r0, #19 + 8013568: f7ff ffda bl 8013520 <SUBGRF_ReadCommand> + 801356c: 4b0a ldr r3, [pc, #40] ; (8013598 <SUBGRF_GetRxBufferStatus+0x3c>) + 801356e: 781b ldrb r3, [r3, #0] + 8013570: 2b01 cmp r3, #1 + 8013572: d10d bne.n 8013590 <SUBGRF_GetRxBufferStatus+0x34> + 8013574: 4b09 ldr r3, [pc, #36] ; (801359c <SUBGRF_GetRxBufferStatus+0x40>) + 8013576: 781b ldrb r3, [r3, #0] + 8013578: 2b01 cmp r3, #1 + 801357a: d109 bne.n 8013590 <SUBGRF_GetRxBufferStatus+0x34> + 801357c: f240 7002 movw r0, #1794 ; 0x702 + 8013580: f7ff fba4 bl 8012ccc <SUBGRF_ReadRegister> + 8013584: f89d 3005 ldrb.w r3, [sp, #5] + 8013588: 7028 strb r0, [r5, #0] + 801358a: 7023 strb r3, [r4, #0] + 801358c: b003 add sp, #12 + 801358e: bd30 pop {r4, r5, pc} + 8013590: f89d 0004 ldrb.w r0, [sp, #4] + 8013594: e7f6 b.n 8013584 <SUBGRF_GetRxBufferStatus+0x28> + 8013596: bf00 nop + 8013598: 200027c3 .word 0x200027c3 + 801359c: 200027c1 .word 0x200027c1 + +080135a0 <SUBGRF_GetPayload>: + 80135a0: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 80135a2: 460d mov r5, r1 + 80135a4: 4606 mov r6, r0 + 80135a6: 2400 movs r4, #0 + 80135a8: f10d 0107 add.w r1, sp, #7 + 80135ac: 4628 mov r0, r5 + 80135ae: 4617 mov r7, r2 + 80135b0: f88d 4007 strb.w r4, [sp, #7] + 80135b4: f7ff ffd2 bl 801355c <SUBGRF_GetRxBufferStatus> + 80135b8: 782a ldrb r2, [r5, #0] + 80135ba: 42ba cmp r2, r7 + 80135bc: d807 bhi.n 80135ce <SUBGRF_GetPayload+0x2e> + 80135be: f89d 0007 ldrb.w r0, [sp, #7] + 80135c2: 4631 mov r1, r6 + 80135c4: f7ff fc26 bl 8012e14 <SUBGRF_ReadBuffer> + 80135c8: 4620 mov r0, r4 + 80135ca: b003 add sp, #12 + 80135cc: bdf0 pop {r4, r5, r6, r7, pc} + 80135ce: 2001 movs r0, #1 + 80135d0: e7fb b.n 80135ca <SUBGRF_GetPayload+0x2a> + ... + +080135d4 <SUBGRF_GetPacketStatus>: + 80135d4: b513 push {r0, r1, r4, lr} + 80135d6: 2203 movs r2, #3 + 80135d8: 4604 mov r4, r0 + 80135da: a901 add r1, sp, #4 + 80135dc: 2014 movs r0, #20 + 80135de: f7ff ff9f bl 8013520 <SUBGRF_ReadCommand> + 80135e2: 4b18 ldr r3, [pc, #96] ; (8013644 <SUBGRF_GetPacketStatus+0x70>) + 80135e4: 781a ldrb r2, [r3, #0] + 80135e6: 7022 strb r2, [r4, #0] + 80135e8: b14a cbz r2, 80135fe <SUBGRF_GetPacketStatus+0x2a> + 80135ea: 2a01 cmp r2, #1 + 80135ec: d017 beq.n 801361e <SUBGRF_GetPacketStatus+0x4a> + 80135ee: 2214 movs r2, #20 + 80135f0: 2100 movs r1, #0 + 80135f2: 4620 mov r0, r4 + 80135f4: f000 fad2 bl 8013b9c <UTIL_MEM_set_8> + 80135f8: 230f movs r3, #15 + 80135fa: 7023 strb r3, [r4, #0] + 80135fc: e00d b.n 801361a <SUBGRF_GetPacketStatus+0x46> + 80135fe: f89d 3004 ldrb.w r3, [sp, #4] + 8013602: 7123 strb r3, [r4, #4] + 8013604: f89d 3005 ldrb.w r3, [sp, #5] + 8013608: 60a2 str r2, [r4, #8] + 801360a: 425b negs r3, r3 + 801360c: 105b asrs r3, r3, #1 + 801360e: 71a3 strb r3, [r4, #6] + 8013610: f89d 3006 ldrb.w r3, [sp, #6] + 8013614: 425b negs r3, r3 + 8013616: 105b asrs r3, r3, #1 + 8013618: 7163 strb r3, [r4, #5] + 801361a: b002 add sp, #8 + 801361c: bd10 pop {r4, pc} + 801361e: f89d 3004 ldrb.w r3, [sp, #4] + 8013622: 425b negs r3, r3 + 8013624: 105b asrs r3, r3, #1 + 8013626: 7323 strb r3, [r4, #12] + 8013628: f99d 3005 ldrsb.w r3, [sp, #5] + 801362c: 3302 adds r3, #2 + 801362e: 109b asrs r3, r3, #2 + 8013630: 7363 strb r3, [r4, #13] + 8013632: f89d 3006 ldrb.w r3, [sp, #6] + 8013636: 425b negs r3, r3 + 8013638: 105b asrs r3, r3, #1 + 801363a: 73a3 strb r3, [r4, #14] + 801363c: 4b02 ldr r3, [pc, #8] ; (8013648 <SUBGRF_GetPacketStatus+0x74>) + 801363e: 681b ldr r3, [r3, #0] + 8013640: 6123 str r3, [r4, #16] + 8013642: e7ea b.n 801361a <SUBGRF_GetPacketStatus+0x46> + 8013644: 200027c3 .word 0x200027c3 + 8013648: 200027bc .word 0x200027bc + +0801364c <SUBGRF_SetSwitch>: + 801364c: 2901 cmp r1, #1 + 801364e: b508 push {r3, lr} + 8013650: 4603 mov r3, r0 + 8013652: 4608 mov r0, r1 + 8013654: d10e bne.n 8013674 <SUBGRF_SetSwitch+0x28> + 8013656: 2b01 cmp r3, #1 + 8013658: d107 bne.n 801366a <SUBGRF_SetSwitch+0x1e> + 801365a: 2004 movs r0, #4 + 801365c: f7ff fb46 bl 8012cec <Radio_SMPS_Set> + 8013660: 2002 movs r0, #2 + 8013662: e8bd 4008 ldmia.w sp!, {r3, lr} + 8013666: f7f1 b8c3 b.w 80047f0 <RBI_ConfigRFSwitch> + 801366a: 2b02 cmp r3, #2 + 801366c: bf14 ite ne + 801366e: 4608 movne r0, r1 + 8013670: 2003 moveq r0, #3 + 8013672: e7f6 b.n 8013662 <SUBGRF_SetSwitch+0x16> + 8013674: 2001 movs r0, #1 + 8013676: e7f4 b.n 8013662 <SUBGRF_SetSwitch+0x16> + +08013678 <SUBGRF_SetRfTxPower>: + 8013678: b538 push {r3, r4, r5, lr} + 801367a: 4604 mov r4, r0 + 801367c: f7f1 f8da bl 8004834 <RBI_GetTxConfig> + 8013680: b150 cbz r0, 8013698 <SUBGRF_SetRfTxPower+0x20> + 8013682: 2802 cmp r0, #2 + 8013684: bf14 ite ne + 8013686: 2501 movne r5, #1 + 8013688: 2502 moveq r5, #2 + 801368a: 4628 mov r0, r5 + 801368c: 2202 movs r2, #2 + 801368e: 4621 mov r1, r4 + 8013690: f7ff fdee bl 8013270 <SUBGRF_SetTxParams> + 8013694: 4628 mov r0, r5 + 8013696: bd38 pop {r3, r4, r5, pc} + 8013698: 2c0f cmp r4, #15 + 801369a: bfcc ite gt + 801369c: 2502 movgt r5, #2 + 801369e: 2501 movle r5, #1 + 80136a0: e7f3 b.n 801368a <SUBGRF_SetRfTxPower+0x12> + +080136a2 <SUBGRF_GetRadioWakeUpTime>: + 80136a2: 200a movs r0, #10 + 80136a4: 4770 bx lr + ... + +080136a8 <HAL_SUBGHZ_TxCpltCallback>: + 80136a8: 4b01 ldr r3, [pc, #4] ; (80136b0 <HAL_SUBGHZ_TxCpltCallback+0x8>) + 80136aa: 2001 movs r0, #1 + 80136ac: 681b ldr r3, [r3, #0] + 80136ae: 4718 bx r3 + 80136b0: 200027c4 .word 0x200027c4 + +080136b4 <HAL_SUBGHZ_RxCpltCallback>: + 80136b4: 4b01 ldr r3, [pc, #4] ; (80136bc <HAL_SUBGHZ_RxCpltCallback+0x8>) + 80136b6: 2002 movs r0, #2 + 80136b8: 681b ldr r3, [r3, #0] + 80136ba: 4718 bx r3 + 80136bc: 200027c4 .word 0x200027c4 + +080136c0 <HAL_SUBGHZ_CRCErrorCallback>: + 80136c0: 4b01 ldr r3, [pc, #4] ; (80136c8 <HAL_SUBGHZ_CRCErrorCallback+0x8>) + 80136c2: 2040 movs r0, #64 ; 0x40 + 80136c4: 681b ldr r3, [r3, #0] + 80136c6: 4718 bx r3 + 80136c8: 200027c4 .word 0x200027c4 + +080136cc <HAL_SUBGHZ_CADStatusCallback>: + 80136cc: b111 cbz r1, 80136d4 <HAL_SUBGHZ_CADStatusCallback+0x8> + 80136ce: 2901 cmp r1, #1 + 80136d0: d004 beq.n 80136dc <HAL_SUBGHZ_CADStatusCallback+0x10> + 80136d2: 4770 bx lr + 80136d4: 4b04 ldr r3, [pc, #16] ; (80136e8 <HAL_SUBGHZ_CADStatusCallback+0x1c>) + 80136d6: 681b ldr r3, [r3, #0] + 80136d8: 2080 movs r0, #128 ; 0x80 + 80136da: 4718 bx r3 + 80136dc: 4b02 ldr r3, [pc, #8] ; (80136e8 <HAL_SUBGHZ_CADStatusCallback+0x1c>) + 80136de: f44f 7080 mov.w r0, #256 ; 0x100 + 80136e2: 681b ldr r3, [r3, #0] + 80136e4: e7f9 b.n 80136da <HAL_SUBGHZ_CADStatusCallback+0xe> + 80136e6: bf00 nop + 80136e8: 200027c4 .word 0x200027c4 + +080136ec <HAL_SUBGHZ_RxTxTimeoutCallback>: + 80136ec: 4b02 ldr r3, [pc, #8] ; (80136f8 <HAL_SUBGHZ_RxTxTimeoutCallback+0xc>) + 80136ee: f44f 7000 mov.w r0, #512 ; 0x200 + 80136f2: 681b ldr r3, [r3, #0] + 80136f4: 4718 bx r3 + 80136f6: bf00 nop + 80136f8: 200027c4 .word 0x200027c4 + +080136fc <HAL_SUBGHZ_HeaderErrorCallback>: + 80136fc: 4b01 ldr r3, [pc, #4] ; (8013704 <HAL_SUBGHZ_HeaderErrorCallback+0x8>) + 80136fe: 2020 movs r0, #32 + 8013700: 681b ldr r3, [r3, #0] + 8013702: 4718 bx r3 + 8013704: 200027c4 .word 0x200027c4 + +08013708 <HAL_SUBGHZ_PreambleDetectedCallback>: + 8013708: 4b01 ldr r3, [pc, #4] ; (8013710 <HAL_SUBGHZ_PreambleDetectedCallback+0x8>) + 801370a: 2004 movs r0, #4 + 801370c: 681b ldr r3, [r3, #0] + 801370e: 4718 bx r3 + 8013710: 200027c4 .word 0x200027c4 + +08013714 <HAL_SUBGHZ_SyncWordValidCallback>: + 8013714: 4b01 ldr r3, [pc, #4] ; (801371c <HAL_SUBGHZ_SyncWordValidCallback+0x8>) + 8013716: 2008 movs r0, #8 + 8013718: 681b ldr r3, [r3, #0] + 801371a: 4718 bx r3 + 801371c: 200027c4 .word 0x200027c4 + +08013720 <HAL_SUBGHZ_HeaderValidCallback>: + 8013720: 4b01 ldr r3, [pc, #4] ; (8013728 <HAL_SUBGHZ_HeaderValidCallback+0x8>) + 8013722: 2010 movs r0, #16 + 8013724: 681b ldr r3, [r3, #0] + 8013726: 4718 bx r3 + 8013728: 200027c4 .word 0x200027c4 + +0801372c <HAL_SUBGHZ_LrFhssHopCallback>: + 801372c: 4b02 ldr r3, [pc, #8] ; (8013738 <HAL_SUBGHZ_LrFhssHopCallback+0xc>) + 801372e: f44f 4080 mov.w r0, #16384 ; 0x4000 + 8013732: 681b ldr r3, [r3, #0] + 8013734: 4718 bx r3 + 8013736: bf00 nop + 8013738: 200027c4 .word 0x200027c4 + +0801373c <SUBGRF_GetFskBandwidthRegValue>: + 801373c: b168 cbz r0, 801375a <SUBGRF_GetFskBandwidthRegValue+0x1e> + 801373e: 4a08 ldr r2, [pc, #32] ; (8013760 <SUBGRF_GetFskBandwidthRegValue+0x24>) + 8013740: 2300 movs r3, #0 + 8013742: f852 1033 ldr.w r1, [r2, r3, lsl #3] + 8013746: 4281 cmp r1, r0 + 8013748: d903 bls.n 8013752 <SUBGRF_GetFskBandwidthRegValue+0x16> + 801374a: eb02 02c3 add.w r2, r2, r3, lsl #3 + 801374e: 7910 ldrb r0, [r2, #4] + 8013750: 4770 bx lr + 8013752: 3301 adds r3, #1 + 8013754: 2b16 cmp r3, #22 + 8013756: d1f4 bne.n 8013742 <SUBGRF_GetFskBandwidthRegValue+0x6> + 8013758: e7fe b.n 8013758 <SUBGRF_GetFskBandwidthRegValue+0x1c> + 801375a: 201f movs r0, #31 + 801375c: 4770 bx lr + 801375e: bf00 nop + 8013760: 08015a3c .word 0x08015a3c + +08013764 <SUBGRF_GetCFO>: + 8013764: b573 push {r0, r1, r4, r5, r6, lr} + 8013766: 4b1d ldr r3, [pc, #116] ; (80137dc <SUBGRF_GetCFO+0x78>) + 8013768: 9301 str r3, [sp, #4] + 801376a: 4604 mov r4, r0 + 801376c: f640 0007 movw r0, #2055 ; 0x807 + 8013770: 460d mov r5, r1 + 8013772: f7ff faab bl 8012ccc <SUBGRF_ReadRegister> + 8013776: f3c0 03c1 ubfx r3, r0, #3, #2 + 801377a: 3308 adds r3, #8 + 801377c: 446b add r3, sp + 801377e: f813 2c04 ldrb.w r2, [r3, #-4] + 8013782: f000 0307 and.w r3, r0, #7 + 8013786: 3301 adds r3, #1 + 8013788: fa02 f303 lsl.w r3, r2, r3 + 801378c: 4a14 ldr r2, [pc, #80] ; (80137e0 <SUBGRF_GetCFO+0x7c>) + 801378e: fbb2 f2f3 udiv r2, r2, r3 + 8013792: fbb2 f0f4 udiv r0, r2, r4 + 8013796: 2807 cmp r0, #7 + 8013798: d81e bhi.n 80137d8 <SUBGRF_GetCFO+0x74> + 801379a: 0040 lsls r0, r0, #1 + 801379c: 2803 cmp r0, #3 + 801379e: bf8c ite hi + 80137a0: 2302 movhi r3, #2 + 80137a2: 2304 movls r3, #4 + 80137a4: f44f 60d6 mov.w r0, #1712 ; 0x6b0 + 80137a8: fb02 f403 mul.w r4, r2, r3 + 80137ac: f7ff fa8e bl 8012ccc <SUBGRF_ReadRegister> + 80137b0: 0206 lsls r6, r0, #8 + 80137b2: f240 60b1 movw r0, #1713 ; 0x6b1 + 80137b6: f7ff fa89 bl 8012ccc <SUBGRF_ReadRegister> + 80137ba: f406 6670 and.w r6, r6, #3840 ; 0xf00 + 80137be: 4330 orrs r0, r6 + 80137c0: 0503 lsls r3, r0, #20 + 80137c2: bf44 itt mi + 80137c4: ea6f 5000 mvnmi.w r0, r0, lsl #20 + 80137c8: ea6f 5010 mvnmi.w r0, r0, lsr #20 + 80137cc: 0963 lsrs r3, r4, #5 + 80137ce: 4343 muls r3, r0 + 80137d0: 11db asrs r3, r3, #7 + 80137d2: 602b str r3, [r5, #0] + 80137d4: b002 add sp, #8 + 80137d6: bd70 pop {r4, r5, r6, pc} + 80137d8: 2301 movs r3, #1 + 80137da: e7e3 b.n 80137a4 <SUBGRF_GetCFO+0x40> + 80137dc: 0c0a0804 .word 0x0c0a0804 + 80137e0: 01e84800 .word 0x01e84800 + +080137e4 <RFW_TransmitLongPacket>: + 80137e4: f04f 30ff mov.w r0, #4294967295 + 80137e8: 4770 bx lr + +080137ea <RFW_ReceiveLongPacket>: + 80137ea: f04f 30ff mov.w r0, #4294967295 + 80137ee: 4770 bx lr + +080137f0 <RFW_Init>: + 80137f0: f04f 30ff mov.w r0, #4294967295 + 80137f4: 4770 bx lr + +080137f6 <RFW_DeInit>: + 80137f6: 4770 bx lr + +080137f8 <RFW_Is_Init>: + 80137f8: 2000 movs r0, #0 + 80137fa: 4770 bx lr + +080137fc <RFW_Is_LongPacketModeEnabled>: + 80137fc: 2000 movs r0, #0 + 80137fe: 4770 bx lr + +08013800 <RFW_SetAntSwitch>: + 8013800: 4770 bx lr + +08013802 <RFW_TransmitInit>: + 8013802: f04f 30ff mov.w r0, #4294967295 + 8013806: 4770 bx lr + +08013808 <RFW_ReceiveInit>: + 8013808: f04f 30ff mov.w r0, #4294967295 + 801380c: 4770 bx lr + +0801380e <RFW_DeInit_TxLongPacket>: + 801380e: 4770 bx lr + +08013810 <RFW_ReceivePayload>: + 8013810: 4770 bx lr + +08013812 <RFW_SetRadioModem>: + 8013812: 4770 bx lr + +08013814 <TRACE_AllocateBufer>: + 8013814: b570 push {r4, r5, r6, lr} + 8013816: f3ef 8610 mrs r6, PRIMASK + 801381a: b672 cpsid i + 801381c: 4b14 ldr r3, [pc, #80] ; (8013870 <TRACE_AllocateBufer+0x5c>) + 801381e: 8a5c ldrh r4, [r3, #18] + 8013820: 8a1a ldrh r2, [r3, #16] + 8013822: 4294 cmp r4, r2 + 8013824: d113 bne.n 801384e <TRACE_AllocateBufer+0x3a> + 8013826: f5c4 6280 rsb r2, r4, #1024 ; 0x400 + 801382a: b292 uxth r2, r2 + 801382c: 4290 cmp r0, r2 + 801382e: d306 bcc.n 801383e <TRACE_AllocateBufer+0x2a> + 8013830: 4284 cmp r4, r0 + 8013832: d918 bls.n 8013866 <TRACE_AllocateBufer+0x52> + 8013834: 2201 movs r2, #1 + 8013836: 709a strb r2, [r3, #2] + 8013838: 2200 movs r2, #0 + 801383a: 801c strh r4, [r3, #0] + 801383c: 825a strh r2, [r3, #18] + 801383e: 8a5a ldrh r2, [r3, #18] + 8013840: 800a strh r2, [r1, #0] + 8013842: 4402 add r2, r0 + 8013844: f3c2 0209 ubfx r2, r2, #0, #10 + 8013848: 825a strh r2, [r3, #18] + 801384a: 2000 movs r0, #0 + 801384c: e00d b.n 801386a <TRACE_AllocateBufer+0x56> + 801384e: d906 bls.n 801385e <TRACE_AllocateBufer+0x4a> + 8013850: f5c4 6580 rsb r5, r4, #1024 ; 0x400 + 8013854: b2ad uxth r5, r5 + 8013856: 4285 cmp r5, r0 + 8013858: d8f1 bhi.n 801383e <TRACE_AllocateBufer+0x2a> + 801385a: 4282 cmp r2, r0 + 801385c: e7e9 b.n 8013832 <TRACE_AllocateBufer+0x1e> + 801385e: 1b12 subs r2, r2, r4 + 8013860: b292 uxth r2, r2 + 8013862: 4282 cmp r2, r0 + 8013864: d8eb bhi.n 801383e <TRACE_AllocateBufer+0x2a> + 8013866: f04f 30ff mov.w r0, #4294967295 + 801386a: f386 8810 msr PRIMASK, r6 + 801386e: bd70 pop {r4, r5, r6, pc} + 8013870: 20002bc8 .word 0x20002bc8 + +08013874 <TRACE_Lock>: + 8013874: f3ef 8110 mrs r1, PRIMASK + 8013878: b672 cpsid i + 801387a: 4a03 ldr r2, [pc, #12] ; (8013888 <TRACE_Lock+0x14>) + 801387c: 8ad3 ldrh r3, [r2, #22] + 801387e: 3301 adds r3, #1 + 8013880: 82d3 strh r3, [r2, #22] + 8013882: f381 8810 msr PRIMASK, r1 + 8013886: 4770 bx lr + 8013888: 20002bc8 .word 0x20002bc8 + +0801388c <TRACE_UnLock>: + 801388c: f3ef 8110 mrs r1, PRIMASK + 8013890: b672 cpsid i + 8013892: 4a03 ldr r2, [pc, #12] ; (80138a0 <TRACE_UnLock+0x14>) + 8013894: 8ad3 ldrh r3, [r2, #22] + 8013896: 3b01 subs r3, #1 + 8013898: 82d3 strh r3, [r2, #22] + 801389a: f381 8810 msr PRIMASK, r1 + 801389e: 4770 bx lr + 80138a0: 20002bc8 .word 0x20002bc8 + +080138a4 <UTIL_ADV_TRACE_Init>: + 80138a4: b510 push {r4, lr} + 80138a6: 4808 ldr r0, [pc, #32] ; (80138c8 <UTIL_ADV_TRACE_Init+0x24>) + 80138a8: 2218 movs r2, #24 + 80138aa: 2100 movs r1, #0 + 80138ac: f000 f976 bl 8013b9c <UTIL_MEM_set_8> + 80138b0: 4806 ldr r0, [pc, #24] ; (80138cc <UTIL_ADV_TRACE_Init+0x28>) + 80138b2: f44f 6280 mov.w r2, #1024 ; 0x400 + 80138b6: 2100 movs r1, #0 + 80138b8: f000 f970 bl 8013b9c <UTIL_MEM_set_8> + 80138bc: 4b04 ldr r3, [pc, #16] ; (80138d0 <UTIL_ADV_TRACE_Init+0x2c>) + 80138be: 4805 ldr r0, [pc, #20] ; (80138d4 <UTIL_ADV_TRACE_Init+0x30>) + 80138c0: 681b ldr r3, [r3, #0] + 80138c2: e8bd 4010 ldmia.w sp!, {r4, lr} + 80138c6: 4718 bx r3 + 80138c8: 20002bc8 .word 0x20002bc8 + 80138cc: 200027c8 .word 0x200027c8 + 80138d0: 080146b4 .word 0x080146b4 + 80138d4: 08013a45 .word 0x08013a45 + +080138d8 <UTIL_ADV_TRACE_RegisterTimeStampFunction>: + 80138d8: 4b01 ldr r3, [pc, #4] ; (80138e0 <UTIL_ADV_TRACE_RegisterTimeStampFunction+0x8>) + 80138da: 6058 str r0, [r3, #4] + 80138dc: 4770 bx lr + 80138de: bf00 nop + 80138e0: 20002bc8 .word 0x20002bc8 + +080138e4 <UTIL_ADV_TRACE_SetVerboseLevel>: + 80138e4: 4b01 ldr r3, [pc, #4] ; (80138ec <UTIL_ADV_TRACE_SetVerboseLevel+0x8>) + 80138e6: 7218 strb r0, [r3, #8] + 80138e8: 4770 bx lr + 80138ea: bf00 nop + 80138ec: 20002bc8 .word 0x20002bc8 + +080138f0 <TRACE_Send>: + 80138f0: b573 push {r0, r1, r4, r5, r6, lr} + 80138f2: f3ef 8510 mrs r5, PRIMASK + 80138f6: b672 cpsid i + 80138f8: 4c1c ldr r4, [pc, #112] ; (801396c <TRACE_Send+0x7c>) + 80138fa: 8ae0 ldrh r0, [r4, #22] + 80138fc: 2800 cmp r0, #0 + 80138fe: d12f bne.n 8013960 <TRACE_Send+0x70> + 8013900: f7ff ffb8 bl 8013874 <TRACE_Lock> + 8013904: 8a21 ldrh r1, [r4, #16] + 8013906: 8a62 ldrh r2, [r4, #18] + 8013908: 4291 cmp r1, r2 + 801390a: d027 beq.n 801395c <TRACE_Send+0x6c> + 801390c: 78a3 ldrb r3, [r4, #2] + 801390e: 2b01 cmp r3, #1 + 8013910: d112 bne.n 8013938 <TRACE_Send+0x48> + 8013912: 8823 ldrh r3, [r4, #0] + 8013914: 8020 strh r0, [r4, #0] + 8013916: 1a5b subs r3, r3, r1 + 8013918: b29b uxth r3, r3 + 801391a: 2102 movs r1, #2 + 801391c: 82a3 strh r3, [r4, #20] + 801391e: 70a1 strb r1, [r4, #2] + 8013920: b963 cbnz r3, 801393c <TRACE_Send+0x4c> + 8013922: 70a3 strb r3, [r4, #2] + 8013924: 8223 strh r3, [r4, #16] + 8013926: 8a23 ldrh r3, [r4, #16] + 8013928: 429a cmp r2, r3 + 801392a: bf8b itete hi + 801392c: 1ad2 subhi r2, r2, r3 + 801392e: f5c3 6380 rsbls r3, r3, #1024 ; 0x400 + 8013932: 82a2 strhhi r2, [r4, #20] + 8013934: 82a3 strhls r3, [r4, #20] + 8013936: e001 b.n 801393c <TRACE_Send+0x4c> + 8013938: 2b00 cmp r3, #0 + 801393a: d0f4 beq.n 8013926 <TRACE_Send+0x36> + 801393c: 8a23 ldrh r3, [r4, #16] + 801393e: 4e0c ldr r6, [pc, #48] ; (8013970 <TRACE_Send+0x80>) + 8013940: 441e add r6, r3 + 8013942: f385 8810 msr PRIMASK, r5 + 8013946: f7ef f919 bl 8002b7c <UTIL_ADV_TRACE_PreSendHook> + 801394a: 4b0a ldr r3, [pc, #40] ; (8013974 <TRACE_Send+0x84>) + 801394c: 8aa1 ldrh r1, [r4, #20] + 801394e: 68db ldr r3, [r3, #12] + 8013950: 9301 str r3, [sp, #4] + 8013952: 4630 mov r0, r6 + 8013954: b002 add sp, #8 + 8013956: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 801395a: 4718 bx r3 + 801395c: f7ff ff96 bl 801388c <TRACE_UnLock> + 8013960: f385 8810 msr PRIMASK, r5 + 8013964: 2000 movs r0, #0 + 8013966: b002 add sp, #8 + 8013968: bd70 pop {r4, r5, r6, pc} + 801396a: bf00 nop + 801396c: 20002bc8 .word 0x20002bc8 + 8013970: 200027c8 .word 0x200027c8 + 8013974: 080146b4 .word 0x080146b4 + +08013978 <UTIL_ADV_TRACE_COND_FSend>: + 8013978: b408 push {r3} + 801397a: b5f0 push {r4, r5, r6, r7, lr} + 801397c: b086 sub sp, #24 + 801397e: 2300 movs r3, #0 + 8013980: f8ad 3000 strh.w r3, [sp] + 8013984: 4b2c ldr r3, [pc, #176] ; (8013a38 <UTIL_ADV_TRACE_COND_FSend+0xc0>) + 8013986: 9c0b ldr r4, [sp, #44] ; 0x2c + 8013988: 7a1d ldrb r5, [r3, #8] + 801398a: 4285 cmp r5, r0 + 801398c: d34d bcc.n 8013a2a <UTIL_ADV_TRACE_COND_FSend+0xb2> + 801398e: 68d8 ldr r0, [r3, #12] + 8013990: 4381 bics r1, r0 + 8013992: d14d bne.n 8013a30 <UTIL_ADV_TRACE_COND_FSend+0xb8> + 8013994: 685b ldr r3, [r3, #4] + 8013996: b11b cbz r3, 80139a0 <UTIL_ADV_TRACE_COND_FSend+0x28> + 8013998: b112 cbz r2, 80139a0 <UTIL_ADV_TRACE_COND_FSend+0x28> + 801399a: 4669 mov r1, sp + 801399c: a802 add r0, sp, #8 + 801399e: 4798 blx r3 + 80139a0: ab0c add r3, sp, #48 ; 0x30 + 80139a2: 4622 mov r2, r4 + 80139a4: f44f 7100 mov.w r1, #512 ; 0x200 + 80139a8: 4824 ldr r0, [pc, #144] ; (8013a3c <UTIL_ADV_TRACE_COND_FSend+0xc4>) + 80139aa: 9301 str r3, [sp, #4] + 80139ac: f000 fbf6 bl 801419c <tiny_vsnprintf_like> + 80139b0: f7ff ff60 bl 8013874 <TRACE_Lock> + 80139b4: f8bd 3000 ldrh.w r3, [sp] + 80139b8: 4418 add r0, r3 + 80139ba: f10d 0102 add.w r1, sp, #2 + 80139be: b280 uxth r0, r0 + 80139c0: f7ff ff28 bl 8013814 <TRACE_AllocateBufer> + 80139c4: 3001 adds r0, #1 + 80139c6: d02b beq.n 8013a20 <UTIL_ADV_TRACE_COND_FSend+0xa8> + 80139c8: 2200 movs r2, #0 + 80139ca: f8bd 3000 ldrh.w r3, [sp] + 80139ce: f8bd 7002 ldrh.w r7, [sp, #2] + 80139d2: 481b ldr r0, [pc, #108] ; (8013a40 <UTIL_ADV_TRACE_COND_FSend+0xc8>) + 80139d4: f10d 0c08 add.w ip, sp, #8 + 80139d8: 4616 mov r6, r2 + 80139da: b291 uxth r1, r2 + 80139dc: fa17 f582 uxtah r5, r7, r2 + 80139e0: 428b cmp r3, r1 + 80139e2: b2ad uxth r5, r5 + 80139e4: d816 bhi.n 8013a14 <UTIL_ADV_TRACE_COND_FSend+0x9c> + 80139e6: 443b add r3, r7 + 80139e8: b29b uxth r3, r3 + 80139ea: b10e cbz r6, 80139f0 <UTIL_ADV_TRACE_COND_FSend+0x78> + 80139ec: f8ad 3002 strh.w r3, [sp, #2] + 80139f0: f8bd 5002 ldrh.w r5, [sp, #2] + 80139f4: 9b01 ldr r3, [sp, #4] + 80139f6: 4622 mov r2, r4 + 80139f8: f44f 7100 mov.w r1, #512 ; 0x200 + 80139fc: 4428 add r0, r5 + 80139fe: f000 fbcd bl 801419c <tiny_vsnprintf_like> + 8013a02: f7ff ff43 bl 801388c <TRACE_UnLock> + 8013a06: f7ff ff73 bl 80138f0 <TRACE_Send> + 8013a0a: b006 add sp, #24 + 8013a0c: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 8013a10: b001 add sp, #4 + 8013a12: 4770 bx lr + 8013a14: f81c 1b01 ldrb.w r1, [ip], #1 + 8013a18: 5541 strb r1, [r0, r5] + 8013a1a: 3201 adds r2, #1 + 8013a1c: 2601 movs r6, #1 + 8013a1e: e7dc b.n 80139da <UTIL_ADV_TRACE_COND_FSend+0x62> + 8013a20: f7ff ff34 bl 801388c <TRACE_UnLock> + 8013a24: f06f 0002 mvn.w r0, #2 + 8013a28: e7ef b.n 8013a0a <UTIL_ADV_TRACE_COND_FSend+0x92> + 8013a2a: f06f 0004 mvn.w r0, #4 + 8013a2e: e7ec b.n 8013a0a <UTIL_ADV_TRACE_COND_FSend+0x92> + 8013a30: f06f 0005 mvn.w r0, #5 + 8013a34: e7e9 b.n 8013a0a <UTIL_ADV_TRACE_COND_FSend+0x92> + 8013a36: bf00 nop + 8013a38: 20002bc8 .word 0x20002bc8 + 8013a3c: 20002be0 .word 0x20002be0 + 8013a40: 200027c8 .word 0x200027c8 + +08013a44 <TRACE_TxCpltCallback>: + 8013a44: b513 push {r0, r1, r4, lr} + 8013a46: f3ef 8410 mrs r4, PRIMASK + 8013a4a: b672 cpsid i + 8013a4c: 4b20 ldr r3, [pc, #128] ; (8013ad0 <TRACE_TxCpltCallback+0x8c>) + 8013a4e: 789a ldrb r2, [r3, #2] + 8013a50: 8a58 ldrh r0, [r3, #18] + 8013a52: 2a02 cmp r2, #2 + 8013a54: bf1d ittte ne + 8013a56: 8a1a ldrhne r2, [r3, #16] + 8013a58: 8a99 ldrhne r1, [r3, #20] + 8013a5a: 1852 addne r2, r2, r1 + 8013a5c: 2200 moveq r2, #0 + 8013a5e: bf14 ite ne + 8013a60: f3c2 0209 ubfxne r2, r2, #0, #10 + 8013a64: 709a strbeq r2, [r3, #2] + 8013a66: 4290 cmp r0, r2 + 8013a68: 821a strh r2, [r3, #16] + 8013a6a: d028 beq.n 8013abe <TRACE_TxCpltCallback+0x7a> + 8013a6c: 8ad9 ldrh r1, [r3, #22] + 8013a6e: 2901 cmp r1, #1 + 8013a70: d125 bne.n 8013abe <TRACE_TxCpltCallback+0x7a> + 8013a72: 7899 ldrb r1, [r3, #2] + 8013a74: 2901 cmp r1, #1 + 8013a76: d113 bne.n 8013aa0 <TRACE_TxCpltCallback+0x5c> + 8013a78: 8819 ldrh r1, [r3, #0] + 8013a7a: 1a8a subs r2, r1, r2 + 8013a7c: 2102 movs r1, #2 + 8013a7e: b292 uxth r2, r2 + 8013a80: 7099 strb r1, [r3, #2] + 8013a82: 2100 movs r1, #0 + 8013a84: 829a strh r2, [r3, #20] + 8013a86: 8019 strh r1, [r3, #0] + 8013a88: b962 cbnz r2, 8013aa4 <TRACE_TxCpltCallback+0x60> + 8013a8a: 709a strb r2, [r3, #2] + 8013a8c: 821a strh r2, [r3, #16] + 8013a8e: 8a1a ldrh r2, [r3, #16] + 8013a90: 4290 cmp r0, r2 + 8013a92: bf8b itete hi + 8013a94: 1a80 subhi r0, r0, r2 + 8013a96: f5c2 6280 rsbls r2, r2, #1024 ; 0x400 + 8013a9a: 8298 strhhi r0, [r3, #20] + 8013a9c: 829a strhls r2, [r3, #20] + 8013a9e: e001 b.n 8013aa4 <TRACE_TxCpltCallback+0x60> + 8013aa0: 2900 cmp r1, #0 + 8013aa2: d0f4 beq.n 8013a8e <TRACE_TxCpltCallback+0x4a> + 8013aa4: 8a1a ldrh r2, [r3, #16] + 8013aa6: 480b ldr r0, [pc, #44] ; (8013ad4 <TRACE_TxCpltCallback+0x90>) + 8013aa8: 4410 add r0, r2 + 8013aaa: f384 8810 msr PRIMASK, r4 + 8013aae: 4a0a ldr r2, [pc, #40] ; (8013ad8 <TRACE_TxCpltCallback+0x94>) + 8013ab0: 8a99 ldrh r1, [r3, #20] + 8013ab2: 68d3 ldr r3, [r2, #12] + 8013ab4: 9301 str r3, [sp, #4] + 8013ab6: b002 add sp, #8 + 8013ab8: e8bd 4010 ldmia.w sp!, {r4, lr} + 8013abc: 4718 bx r3 + 8013abe: f384 8810 msr PRIMASK, r4 + 8013ac2: f7ef f85f bl 8002b84 <UTIL_ADV_TRACE_PostSendHook> + 8013ac6: b002 add sp, #8 + 8013ac8: e8bd 4010 ldmia.w sp!, {r4, lr} + 8013acc: f7ff bede b.w 801388c <TRACE_UnLock> + 8013ad0: 20002bc8 .word 0x20002bc8 + 8013ad4: 200027c8 .word 0x200027c8 + 8013ad8: 080146b4 .word 0x080146b4 + +08013adc <UTIL_LPM_Init>: + 8013adc: 4a02 ldr r2, [pc, #8] ; (8013ae8 <UTIL_LPM_Init+0xc>) + 8013ade: 2300 movs r3, #0 + 8013ae0: 6013 str r3, [r2, #0] + 8013ae2: 4a02 ldr r2, [pc, #8] ; (8013aec <UTIL_LPM_Init+0x10>) + 8013ae4: 6013 str r3, [r2, #0] + 8013ae6: 4770 bx lr + 8013ae8: 20002de4 .word 0x20002de4 + 8013aec: 20002de0 .word 0x20002de0 + +08013af0 <UTIL_LPM_SetStopMode>: + 8013af0: b510 push {r4, lr} + 8013af2: f3ef 8410 mrs r4, PRIMASK + 8013af6: b672 cpsid i + 8013af8: b141 cbz r1, 8013b0c <UTIL_LPM_SetStopMode+0x1c> + 8013afa: 2901 cmp r1, #1 + 8013afc: d103 bne.n 8013b06 <UTIL_LPM_SetStopMode+0x16> + 8013afe: 4a06 ldr r2, [pc, #24] ; (8013b18 <UTIL_LPM_SetStopMode+0x28>) + 8013b00: 6813 ldr r3, [r2, #0] + 8013b02: 4303 orrs r3, r0 + 8013b04: 6013 str r3, [r2, #0] + 8013b06: f384 8810 msr PRIMASK, r4 + 8013b0a: bd10 pop {r4, pc} + 8013b0c: 4a02 ldr r2, [pc, #8] ; (8013b18 <UTIL_LPM_SetStopMode+0x28>) + 8013b0e: 6813 ldr r3, [r2, #0] + 8013b10: ea23 0300 bic.w r3, r3, r0 + 8013b14: e7f6 b.n 8013b04 <UTIL_LPM_SetStopMode+0x14> + 8013b16: bf00 nop + 8013b18: 20002de4 .word 0x20002de4 + +08013b1c <UTIL_LPM_SetOffMode>: + 8013b1c: b510 push {r4, lr} + 8013b1e: f3ef 8410 mrs r4, PRIMASK + 8013b22: b672 cpsid i + 8013b24: b141 cbz r1, 8013b38 <UTIL_LPM_SetOffMode+0x1c> + 8013b26: 2901 cmp r1, #1 + 8013b28: d103 bne.n 8013b32 <UTIL_LPM_SetOffMode+0x16> + 8013b2a: 4a06 ldr r2, [pc, #24] ; (8013b44 <UTIL_LPM_SetOffMode+0x28>) + 8013b2c: 6813 ldr r3, [r2, #0] + 8013b2e: 4303 orrs r3, r0 + 8013b30: 6013 str r3, [r2, #0] + 8013b32: f384 8810 msr PRIMASK, r4 + 8013b36: bd10 pop {r4, pc} + 8013b38: 4a02 ldr r2, [pc, #8] ; (8013b44 <UTIL_LPM_SetOffMode+0x28>) + 8013b3a: 6813 ldr r3, [r2, #0] + 8013b3c: ea23 0300 bic.w r3, r3, r0 + 8013b40: e7f6 b.n 8013b30 <UTIL_LPM_SetOffMode+0x14> + 8013b42: bf00 nop + 8013b44: 20002de0 .word 0x20002de0 + +08013b48 <UTIL_LPM_EnterLowPower>: + 8013b48: b538 push {r3, r4, r5, lr} + 8013b4a: f3ef 8510 mrs r5, PRIMASK + 8013b4e: b672 cpsid i + 8013b50: 4b0a ldr r3, [pc, #40] ; (8013b7c <UTIL_LPM_EnterLowPower+0x34>) + 8013b52: 4c0b ldr r4, [pc, #44] ; (8013b80 <UTIL_LPM_EnterLowPower+0x38>) + 8013b54: 681b ldr r3, [r3, #0] + 8013b56: b133 cbz r3, 8013b66 <UTIL_LPM_EnterLowPower+0x1e> + 8013b58: 6823 ldr r3, [r4, #0] + 8013b5a: 4798 blx r3 + 8013b5c: 6863 ldr r3, [r4, #4] + 8013b5e: 4798 blx r3 + 8013b60: f385 8810 msr PRIMASK, r5 + 8013b64: bd38 pop {r3, r4, r5, pc} + 8013b66: 4b07 ldr r3, [pc, #28] ; (8013b84 <UTIL_LPM_EnterLowPower+0x3c>) + 8013b68: 681b ldr r3, [r3, #0] + 8013b6a: b11b cbz r3, 8013b74 <UTIL_LPM_EnterLowPower+0x2c> + 8013b6c: 68a3 ldr r3, [r4, #8] + 8013b6e: 4798 blx r3 + 8013b70: 68e3 ldr r3, [r4, #12] + 8013b72: e7f4 b.n 8013b5e <UTIL_LPM_EnterLowPower+0x16> + 8013b74: 6923 ldr r3, [r4, #16] + 8013b76: 4798 blx r3 + 8013b78: 6963 ldr r3, [r4, #20] + 8013b7a: e7f0 b.n 8013b5e <UTIL_LPM_EnterLowPower+0x16> + 8013b7c: 20002de4 .word 0x20002de4 + 8013b80: 08014608 .word 0x08014608 + 8013b84: 20002de0 .word 0x20002de0 + +08013b88 <UTIL_MEM_cpy_8>: + 8013b88: 3801 subs r0, #1 + 8013b8a: 440a add r2, r1 + 8013b8c: 4291 cmp r1, r2 + 8013b8e: d100 bne.n 8013b92 <UTIL_MEM_cpy_8+0xa> + 8013b90: 4770 bx lr + 8013b92: f811 3b01 ldrb.w r3, [r1], #1 + 8013b96: f800 3f01 strb.w r3, [r0, #1]! + 8013b9a: e7f7 b.n 8013b8c <UTIL_MEM_cpy_8+0x4> + +08013b9c <UTIL_MEM_set_8>: + 8013b9c: f000 bc2c b.w 80143f8 <memset> + +08013ba0 <UTIL_SEQ_SetTask>: + 8013ba0: b510 push {r4, lr} + 8013ba2: f3ef 8410 mrs r4, PRIMASK + 8013ba6: b672 cpsid i + 8013ba8: 4a06 ldr r2, [pc, #24] ; (8013bc4 <UTIL_SEQ_SetTask+0x24>) + 8013baa: 6813 ldr r3, [r2, #0] + 8013bac: 4303 orrs r3, r0 + 8013bae: 6013 str r3, [r2, #0] + 8013bb0: 4a05 ldr r2, [pc, #20] ; (8013bc8 <UTIL_SEQ_SetTask+0x28>) + 8013bb2: f852 3031 ldr.w r3, [r2, r1, lsl #3] + 8013bb6: 4303 orrs r3, r0 + 8013bb8: f842 3031 str.w r3, [r2, r1, lsl #3] + 8013bbc: f384 8810 msr PRIMASK, r4 + 8013bc0: bd10 pop {r4, pc} + 8013bc2: bf00 nop + 8013bc4: 20002e34 .word 0x20002e34 + 8013bc8: 20002e2c .word 0x20002e2c + +08013bcc <UTIL_SEQ_PreIdle>: + 8013bcc: 4770 bx lr + +08013bce <UTIL_SEQ_PostIdle>: + 8013bce: 4770 bx lr + +08013bd0 <SEQ_BitPosition>: + 8013bd0: 0c03 lsrs r3, r0, #16 + 8013bd2: 041b lsls r3, r3, #16 + 8013bd4: b9c3 cbnz r3, 8013c08 <SEQ_BitPosition+0x38> + 8013bd6: 0400 lsls r0, r0, #16 + 8013bd8: 2310 movs r3, #16 + 8013bda: f010 4f7f tst.w r0, #4278190080 ; 0xff000000 + 8013bde: bf02 ittt eq + 8013be0: 3308 addeq r3, #8 + 8013be2: 0200 lsleq r0, r0, #8 + 8013be4: b2db uxtbeq r3, r3 + 8013be6: f010 4f70 tst.w r0, #4026531840 ; 0xf0000000 + 8013bea: bf08 it eq + 8013bec: 0100 lsleq r0, r0, #4 + 8013bee: ea4f 7010 mov.w r0, r0, lsr #28 + 8013bf2: 4a06 ldr r2, [pc, #24] ; (8013c0c <SEQ_BitPosition+0x3c>) + 8013bf4: bf08 it eq + 8013bf6: 3304 addeq r3, #4 + 8013bf8: 5c12 ldrb r2, [r2, r0] + 8013bfa: bf08 it eq + 8013bfc: b2db uxtbeq r3, r3 + 8013bfe: f1c3 031f rsb r3, r3, #31 + 8013c02: 1a98 subs r0, r3, r2 + 8013c04: b2c0 uxtb r0, r0 + 8013c06: 4770 bx lr + 8013c08: 2300 movs r3, #0 + 8013c0a: e7e6 b.n 8013bda <SEQ_BitPosition+0xa> + 8013c0c: 08015aec .word 0x08015aec + +08013c10 <UTIL_SEQ_Run>: + 8013c10: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8013c14: 4d38 ldr r5, [pc, #224] ; (8013cf8 <UTIL_SEQ_Run+0xe8>) + 8013c16: 4e39 ldr r6, [pc, #228] ; (8013cfc <UTIL_SEQ_Run+0xec>) + 8013c18: f8d5 8000 ldr.w r8, [r5] + 8013c1c: f8df b0e0 ldr.w fp, [pc, #224] ; 8013d00 <UTIL_SEQ_Run+0xf0> + 8013c20: f8df a0e0 ldr.w sl, [pc, #224] ; 8013d04 <UTIL_SEQ_Run+0xf4> + 8013c24: f8df 90e0 ldr.w r9, [pc, #224] ; 8013d08 <UTIL_SEQ_Run+0xf8> + 8013c28: f8d6 c000 ldr.w ip, [r6] + 8013c2c: 4f37 ldr r7, [pc, #220] ; (8013d0c <UTIL_SEQ_Run+0xfc>) + 8013c2e: f8db 1000 ldr.w r1, [fp] + 8013c32: 4c37 ldr r4, [pc, #220] ; (8013d10 <UTIL_SEQ_Run+0x100>) + 8013c34: f8da 2000 ldr.w r2, [sl] + 8013c38: f8d9 3000 ldr.w r3, [r9] + 8013c3c: ea08 0000 and.w r0, r8, r0 + 8013c40: 6028 str r0, [r5, #0] + 8013c42: 6828 ldr r0, [r5, #0] + 8013c44: ea00 0e02 and.w lr, r0, r2 + 8013c48: ea1e 0f0c tst.w lr, ip + 8013c4c: d001 beq.n 8013c52 <UTIL_SEQ_Run+0x42> + 8013c4e: 4219 tst r1, r3 + 8013c50: d01e beq.n 8013c90 <UTIL_SEQ_Run+0x80> + 8013c52: f04f 33ff mov.w r3, #4294967295 + 8013c56: 603b str r3, [r7, #0] + 8013c58: f7ff ffb8 bl 8013bcc <UTIL_SEQ_PreIdle> + 8013c5c: f3ef 8410 mrs r4, PRIMASK + 8013c60: b672 cpsid i + 8013c62: 6833 ldr r3, [r6, #0] + 8013c64: f8db 2000 ldr.w r2, [fp] + 8013c68: f8da 1000 ldr.w r1, [sl] + 8013c6c: 400b ands r3, r1 + 8013c6e: 6829 ldr r1, [r5, #0] + 8013c70: 420b tst r3, r1 + 8013c72: d105 bne.n 8013c80 <UTIL_SEQ_Run+0x70> + 8013c74: f8d9 3000 ldr.w r3, [r9] + 8013c78: 4213 tst r3, r2 + 8013c7a: d101 bne.n 8013c80 <UTIL_SEQ_Run+0x70> + 8013c7c: f7ee ff0c bl 8002a98 <UTIL_SEQ_Idle> + 8013c80: f384 8810 msr PRIMASK, r4 + 8013c84: f7ff ffa3 bl 8013bce <UTIL_SEQ_PostIdle> + 8013c88: f8c5 8000 str.w r8, [r5] + 8013c8c: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8013c90: 6823 ldr r3, [r4, #0] + 8013c92: 6823 ldr r3, [r4, #0] + 8013c94: 4003 ands r3, r0 + 8013c96: 4013 ands r3, r2 + 8013c98: 6862 ldr r2, [r4, #4] + 8013c9a: 421a tst r2, r3 + 8013c9c: bf04 itt eq + 8013c9e: f04f 32ff moveq.w r2, #4294967295 + 8013ca2: 6062 streq r2, [r4, #4] + 8013ca4: 6860 ldr r0, [r4, #4] + 8013ca6: 4018 ands r0, r3 + 8013ca8: f7ff ff92 bl 8013bd0 <SEQ_BitPosition> + 8013cac: 6862 ldr r2, [r4, #4] + 8013cae: 6038 str r0, [r7, #0] + 8013cb0: 2301 movs r3, #1 + 8013cb2: fa03 f000 lsl.w r0, r3, r0 + 8013cb6: ea22 0200 bic.w r2, r2, r0 + 8013cba: 6062 str r2, [r4, #4] + 8013cbc: f3ef 8110 mrs r1, PRIMASK + 8013cc0: b672 cpsid i + 8013cc2: 683a ldr r2, [r7, #0] + 8013cc4: 4093 lsls r3, r2 + 8013cc6: 6832 ldr r2, [r6, #0] + 8013cc8: ea22 0203 bic.w r2, r2, r3 + 8013ccc: 6032 str r2, [r6, #0] + 8013cce: 6822 ldr r2, [r4, #0] + 8013cd0: ea22 0303 bic.w r3, r2, r3 + 8013cd4: 6023 str r3, [r4, #0] + 8013cd6: f381 8810 msr PRIMASK, r1 + 8013cda: 4a0e ldr r2, [pc, #56] ; (8013d14 <UTIL_SEQ_Run+0x104>) + 8013cdc: 683b ldr r3, [r7, #0] + 8013cde: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8013ce2: 4798 blx r3 + 8013ce4: f8d6 c000 ldr.w ip, [r6] + 8013ce8: f8db 1000 ldr.w r1, [fp] + 8013cec: f8da 2000 ldr.w r2, [sl] + 8013cf0: f8d9 3000 ldr.w r3, [r9] + 8013cf4: e7a5 b.n 8013c42 <UTIL_SEQ_Run+0x32> + 8013cf6: bf00 nop + 8013cf8: 200008c4 .word 0x200008c4 + 8013cfc: 20002e34 .word 0x20002e34 + 8013d00: 20002dec .word 0x20002dec + 8013d04: 200008c8 .word 0x200008c8 + 8013d08: 20002df0 .word 0x20002df0 + 8013d0c: 20002de8 .word 0x20002de8 + 8013d10: 20002e2c .word 0x20002e2c + 8013d14: 20002df4 .word 0x20002df4 + +08013d18 <UTIL_SEQ_RegTask>: + 8013d18: b510 push {r4, lr} + 8013d1a: 4611 mov r1, r2 + 8013d1c: f3ef 8410 mrs r4, PRIMASK + 8013d20: b672 cpsid i + 8013d22: f7ff ff55 bl 8013bd0 <SEQ_BitPosition> + 8013d26: 4b03 ldr r3, [pc, #12] ; (8013d34 <UTIL_SEQ_RegTask+0x1c>) + 8013d28: f843 1020 str.w r1, [r3, r0, lsl #2] + 8013d2c: f384 8810 msr PRIMASK, r4 + 8013d30: bd10 pop {r4, pc} + 8013d32: bf00 nop + 8013d34: 20002df4 .word 0x20002df4 + +08013d38 <SysTimeAdd>: + 8013d38: b082 sub sp, #8 + 8013d3a: b082 sub sp, #8 + 8013d3c: f10d 0c08 add.w ip, sp, #8 + 8013d40: e90c 0006 stmdb ip, {r1, r2} + 8013d44: f8bd 2004 ldrh.w r2, [sp, #4] + 8013d48: 9303 str r3, [sp, #12] + 8013d4a: 440b add r3, r1 + 8013d4c: f8bd 1010 ldrh.w r1, [sp, #16] + 8013d50: 440a add r2, r1 + 8013d52: b291 uxth r1, r2 + 8013d54: b212 sxth r2, r2 + 8013d56: f5b2 7f7a cmp.w r2, #1000 ; 0x3e8 + 8013d5a: bfa2 ittt ge + 8013d5c: f5a1 727a subge.w r2, r1, #1000 ; 0x3e8 + 8013d60: 3301 addge r3, #1 + 8013d62: b212 sxthge r2, r2 + 8013d64: 6003 str r3, [r0, #0] + 8013d66: 8082 strh r2, [r0, #4] + 8013d68: b002 add sp, #8 + 8013d6a: b002 add sp, #8 + 8013d6c: 4770 bx lr + +08013d6e <SysTimeSub>: + 8013d6e: b082 sub sp, #8 + 8013d70: b082 sub sp, #8 + 8013d72: f10d 0c08 add.w ip, sp, #8 + 8013d76: e90c 0006 stmdb ip, {r1, r2} + 8013d7a: f8bd 2004 ldrh.w r2, [sp, #4] + 8013d7e: 9303 str r3, [sp, #12] + 8013d80: 1acb subs r3, r1, r3 + 8013d82: f8bd 1010 ldrh.w r1, [sp, #16] + 8013d86: 1a52 subs r2, r2, r1 + 8013d88: b291 uxth r1, r2 + 8013d8a: b212 sxth r2, r2 + 8013d8c: 2a00 cmp r2, #0 + 8013d8e: bfbe ittt lt + 8013d90: f501 727a addlt.w r2, r1, #1000 ; 0x3e8 + 8013d94: f103 33ff addlt.w r3, r3, #4294967295 + 8013d98: b212 sxthlt r2, r2 + 8013d9a: 6003 str r3, [r0, #0] + 8013d9c: 8082 strh r2, [r0, #4] + 8013d9e: b002 add sp, #8 + 8013da0: b002 add sp, #8 + 8013da2: 4770 bx lr + +08013da4 <SysTimeSet>: + 8013da4: b530 push {r4, r5, lr} + 8013da6: b085 sub sp, #20 + 8013da8: 4d11 ldr r5, [pc, #68] ; (8013df0 <SysTimeSet+0x4c>) + 8013daa: 466b mov r3, sp + 8013dac: e883 0003 stmia.w r3, {r0, r1} + 8013db0: 2300 movs r3, #0 + 8013db2: 9302 str r3, [sp, #8] + 8013db4: f8ad 300c strh.w r3, [sp, #12] + 8013db8: a803 add r0, sp, #12 + 8013dba: 692b ldr r3, [r5, #16] + 8013dbc: 4798 blx r3 + 8013dbe: 9b00 ldr r3, [sp, #0] + 8013dc0: f8bd 4004 ldrh.w r4, [sp, #4] + 8013dc4: 9002 str r0, [sp, #8] + 8013dc6: 1a18 subs r0, r3, r0 + 8013dc8: f8bd 300c ldrh.w r3, [sp, #12] + 8013dcc: 1ae4 subs r4, r4, r3 + 8013dce: b2a3 uxth r3, r4 + 8013dd0: b224 sxth r4, r4 + 8013dd2: 2c00 cmp r4, #0 + 8013dd4: bfbe ittt lt + 8013dd6: f503 737a addlt.w r3, r3, #1000 ; 0x3e8 + 8013dda: b21c sxthlt r4, r3 + 8013ddc: f100 30ff addlt.w r0, r0, #4294967295 + 8013de0: 682b ldr r3, [r5, #0] + 8013de2: 4798 blx r3 + 8013de4: 68ab ldr r3, [r5, #8] + 8013de6: 4620 mov r0, r4 + 8013de8: 4798 blx r3 + 8013dea: b005 add sp, #20 + 8013dec: bd30 pop {r4, r5, pc} + 8013dee: bf00 nop + 8013df0: 08014674 .word 0x08014674 + +08013df4 <SysTimeGet>: + 8013df4: b573 push {r0, r1, r4, r5, r6, lr} + 8013df6: 4e11 ldr r6, [pc, #68] ; (8013e3c <SysTimeGet+0x48>) + 8013df8: 2300 movs r3, #0 + 8013dfa: 4605 mov r5, r0 + 8013dfc: 9300 str r3, [sp, #0] + 8013dfe: f8ad 3004 strh.w r3, [sp, #4] + 8013e02: a801 add r0, sp, #4 + 8013e04: 6933 ldr r3, [r6, #16] + 8013e06: 4798 blx r3 + 8013e08: 68f3 ldr r3, [r6, #12] + 8013e0a: 9000 str r0, [sp, #0] + 8013e0c: 4798 blx r3 + 8013e0e: 6873 ldr r3, [r6, #4] + 8013e10: 4604 mov r4, r0 + 8013e12: 4798 blx r3 + 8013e14: 9b00 ldr r3, [sp, #0] + 8013e16: 4418 add r0, r3 + 8013e18: f8bd 3004 ldrh.w r3, [sp, #4] + 8013e1c: 4423 add r3, r4 + 8013e1e: b29a uxth r2, r3 + 8013e20: b21b sxth r3, r3 + 8013e22: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 8013e26: bfa2 ittt ge + 8013e28: 3001 addge r0, #1 + 8013e2a: f5a2 737a subge.w r3, r2, #1000 ; 0x3e8 + 8013e2e: b21b sxthge r3, r3 + 8013e30: 6028 str r0, [r5, #0] + 8013e32: 4628 mov r0, r5 + 8013e34: 80ab strh r3, [r5, #4] + 8013e36: b002 add sp, #8 + 8013e38: bd70 pop {r4, r5, r6, pc} + 8013e3a: bf00 nop + 8013e3c: 08014674 .word 0x08014674 + +08013e40 <SysTimeGetMcuTime>: + 8013e40: b537 push {r0, r1, r2, r4, r5, lr} + 8013e42: 2300 movs r3, #0 + 8013e44: 9300 str r3, [sp, #0] + 8013e46: f8ad 3004 strh.w r3, [sp, #4] + 8013e4a: 4b07 ldr r3, [pc, #28] ; (8013e68 <SysTimeGetMcuTime+0x28>) + 8013e4c: 4604 mov r4, r0 + 8013e4e: 691b ldr r3, [r3, #16] + 8013e50: a801 add r0, sp, #4 + 8013e52: 4798 blx r3 + 8013e54: 466d mov r5, sp + 8013e56: 9000 str r0, [sp, #0] + 8013e58: e895 0003 ldmia.w r5, {r0, r1} + 8013e5c: e884 0003 stmia.w r4, {r0, r1} + 8013e60: 4620 mov r0, r4 + 8013e62: b003 add sp, #12 + 8013e64: bd30 pop {r4, r5, pc} + 8013e66: bf00 nop + 8013e68: 08014674 .word 0x08014674 + +08013e6c <SysTimeToMs>: + 8013e6c: b537 push {r0, r1, r2, r4, r5, lr} + 8013e6e: 4d0f ldr r5, [pc, #60] ; (8013eac <SysTimeToMs+0x40>) + 8013e70: ab02 add r3, sp, #8 + 8013e72: e903 0003 stmdb r3, {r0, r1} + 8013e76: 68eb ldr r3, [r5, #12] + 8013e78: 4798 blx r3 + 8013e7a: 686b ldr r3, [r5, #4] + 8013e7c: 4604 mov r4, r0 + 8013e7e: 4798 blx r3 + 8013e80: f8bd 3004 ldrh.w r3, [sp, #4] + 8013e84: 9a00 ldr r2, [sp, #0] + 8013e86: 1b1b subs r3, r3, r4 + 8013e88: b299 uxth r1, r3 + 8013e8a: b21b sxth r3, r3 + 8013e8c: 2b00 cmp r3, #0 + 8013e8e: eba2 0200 sub.w r2, r2, r0 + 8013e92: bfbe ittt lt + 8013e94: f501 717a addlt.w r1, r1, #1000 ; 0x3e8 + 8013e98: f102 32ff addlt.w r2, r2, #4294967295 + 8013e9c: b20b sxthlt r3, r1 + 8013e9e: f44f 707a mov.w r0, #1000 ; 0x3e8 + 8013ea2: fb00 3002 mla r0, r0, r2, r3 + 8013ea6: b003 add sp, #12 + 8013ea8: bd30 pop {r4, r5, pc} + 8013eaa: bf00 nop + 8013eac: 08014674 .word 0x08014674 + +08013eb0 <SysTimeFromMs>: + 8013eb0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8013eb4: f44f 757a mov.w r5, #1000 ; 0x3e8 + 8013eb8: fbb1 f5f5 udiv r5, r1, r5 + 8013ebc: ebc5 1345 rsb r3, r5, r5, lsl #5 + 8013ec0: f8df 803c ldr.w r8, [pc, #60] ; 8013f00 <SysTimeFromMs+0x50> + 8013ec4: eb05 0383 add.w r3, r5, r3, lsl #2 + 8013ec8: eba1 03c3 sub.w r3, r1, r3, lsl #3 + 8013ecc: b29c uxth r4, r3 + 8013ece: f8d8 300c ldr.w r3, [r8, #12] + 8013ed2: 4606 mov r6, r0 + 8013ed4: 4798 blx r3 + 8013ed6: f8d8 3004 ldr.w r3, [r8, #4] + 8013eda: 4607 mov r7, r0 + 8013edc: 4798 blx r3 + 8013ede: 19e3 adds r3, r4, r7 + 8013ee0: b299 uxth r1, r3 + 8013ee2: b21b sxth r3, r3 + 8013ee4: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 8013ee8: 4428 add r0, r5 + 8013eea: bfa2 ittt ge + 8013eec: f5a1 737a subge.w r3, r1, #1000 ; 0x3e8 + 8013ef0: 3001 addge r0, #1 + 8013ef2: b21b sxthge r3, r3 + 8013ef4: 6030 str r0, [r6, #0] + 8013ef6: 80b3 strh r3, [r6, #4] + 8013ef8: 4630 mov r0, r6 + 8013efa: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8013efe: bf00 nop + 8013f00: 08014674 .word 0x08014674 + +08013f04 <UTIL_TIMER_Init>: + 8013f04: 4b02 ldr r3, [pc, #8] ; (8013f10 <UTIL_TIMER_Init+0xc>) + 8013f06: 2200 movs r2, #0 + 8013f08: 601a str r2, [r3, #0] + 8013f0a: 4b02 ldr r3, [pc, #8] ; (8013f14 <UTIL_TIMER_Init+0x10>) + 8013f0c: 681b ldr r3, [r3, #0] + 8013f0e: 4718 bx r3 + 8013f10: 20002e38 .word 0x20002e38 + 8013f14: 08014688 .word 0x08014688 + +08013f18 <UTIL_TIMER_Create>: + 8013f18: b5f8 push {r3, r4, r5, r6, r7, lr} + 8013f1a: 4604 mov r4, r0 + 8013f1c: 4617 mov r7, r2 + 8013f1e: 4608 mov r0, r1 + 8013f20: 461e mov r6, r3 + 8013f22: b17c cbz r4, 8013f44 <UTIL_TIMER_Create+0x2c> + 8013f24: b173 cbz r3, 8013f44 <UTIL_TIMER_Create+0x2c> + 8013f26: 4b08 ldr r3, [pc, #32] ; (8013f48 <UTIL_TIMER_Create+0x30>) + 8013f28: 2500 movs r5, #0 + 8013f2a: 6a5b ldr r3, [r3, #36] ; 0x24 + 8013f2c: 6025 str r5, [r4, #0] + 8013f2e: 4798 blx r3 + 8013f30: 9b06 ldr r3, [sp, #24] + 8013f32: 6060 str r0, [r4, #4] + 8013f34: 8125 strh r5, [r4, #8] + 8013f36: 72a5 strb r5, [r4, #10] + 8013f38: 60e6 str r6, [r4, #12] + 8013f3a: 6123 str r3, [r4, #16] + 8013f3c: 72e7 strb r7, [r4, #11] + 8013f3e: 6165 str r5, [r4, #20] + 8013f40: 4628 mov r0, r5 + 8013f42: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8013f44: 2001 movs r0, #1 + 8013f46: e7fc b.n 8013f42 <UTIL_TIMER_Create+0x2a> + 8013f48: 08014688 .word 0x08014688 + +08013f4c <UTIL_TIMER_GetCurrentTime>: + 8013f4c: b510 push {r4, lr} + 8013f4e: 4c03 ldr r4, [pc, #12] ; (8013f5c <UTIL_TIMER_GetCurrentTime+0x10>) + 8013f50: 69e3 ldr r3, [r4, #28] + 8013f52: 4798 blx r3 + 8013f54: 6aa3 ldr r3, [r4, #40] ; 0x28 + 8013f56: e8bd 4010 ldmia.w sp!, {r4, lr} + 8013f5a: 4718 bx r3 + 8013f5c: 08014688 .word 0x08014688 + +08013f60 <UTIL_TIMER_GetElapsedTime>: + 8013f60: b570 push {r4, r5, r6, lr} + 8013f62: 4d06 ldr r5, [pc, #24] ; (8013f7c <UTIL_TIMER_GetElapsedTime+0x1c>) + 8013f64: 69eb ldr r3, [r5, #28] + 8013f66: 4606 mov r6, r0 + 8013f68: 4798 blx r3 + 8013f6a: 6a6b ldr r3, [r5, #36] ; 0x24 + 8013f6c: 4604 mov r4, r0 + 8013f6e: 4630 mov r0, r6 + 8013f70: 4798 blx r3 + 8013f72: 6aab ldr r3, [r5, #40] ; 0x28 + 8013f74: 1a20 subs r0, r4, r0 + 8013f76: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8013f7a: 4718 bx r3 + 8013f7c: 08014688 .word 0x08014688 + +08013f80 <TimerExists>: + 8013f80: 4b05 ldr r3, [pc, #20] ; (8013f98 <TimerExists+0x18>) + 8013f82: 681b ldr r3, [r3, #0] + 8013f84: b90b cbnz r3, 8013f8a <TimerExists+0xa> + 8013f86: 4618 mov r0, r3 + 8013f88: 4770 bx lr + 8013f8a: 4283 cmp r3, r0 + 8013f8c: d001 beq.n 8013f92 <TimerExists+0x12> + 8013f8e: 695b ldr r3, [r3, #20] + 8013f90: e7f8 b.n 8013f84 <TimerExists+0x4> + 8013f92: 2001 movs r0, #1 + 8013f94: 4770 bx lr + 8013f96: bf00 nop + 8013f98: 20002e38 .word 0x20002e38 + +08013f9c <TimerSetTimeout>: + 8013f9c: e92d 41f3 stmdb sp!, {r0, r1, r4, r5, r6, r7, r8, lr} + 8013fa0: 4e0b ldr r6, [pc, #44] ; (8013fd0 <TimerSetTimeout+0x34>) + 8013fa2: 6a33 ldr r3, [r6, #32] + 8013fa4: 4604 mov r4, r0 + 8013fa6: 4798 blx r3 + 8013fa8: 2301 movs r3, #1 + 8013faa: 69b7 ldr r7, [r6, #24] + 8013fac: 7223 strb r3, [r4, #8] + 8013fae: f8d4 8000 ldr.w r8, [r4] + 8013fb2: 4605 mov r5, r0 + 8013fb4: 47b8 blx r7 + 8013fb6: 4428 add r0, r5 + 8013fb8: 4580 cmp r8, r0 + 8013fba: d202 bcs.n 8013fc2 <TimerSetTimeout+0x26> + 8013fbc: 47b8 blx r7 + 8013fbe: 4428 add r0, r5 + 8013fc0: 6020 str r0, [r4, #0] + 8013fc2: 68b3 ldr r3, [r6, #8] + 8013fc4: 6820 ldr r0, [r4, #0] + 8013fc6: 9301 str r3, [sp, #4] + 8013fc8: b002 add sp, #8 + 8013fca: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 8013fce: 4718 bx r3 + 8013fd0: 08014688 .word 0x08014688 + +08013fd4 <UTIL_TIMER_Stop>: + 8013fd4: b570 push {r4, r5, r6, lr} + 8013fd6: b320 cbz r0, 8014022 <UTIL_TIMER_Stop+0x4e> + 8013fd8: f3ef 8610 mrs r6, PRIMASK + 8013fdc: b672 cpsid i + 8013fde: 4d12 ldr r5, [pc, #72] ; (8014028 <UTIL_TIMER_Stop+0x54>) + 8013fe0: 682b ldr r3, [r5, #0] + 8013fe2: 2201 movs r2, #1 + 8013fe4: 7282 strb r2, [r0, #10] + 8013fe6: b153 cbz r3, 8013ffe <UTIL_TIMER_Stop+0x2a> + 8013fe8: 2200 movs r2, #0 + 8013fea: 7242 strb r2, [r0, #9] + 8013fec: 4298 cmp r0, r3 + 8013fee: 695c ldr r4, [r3, #20] + 8013ff0: d10e bne.n 8014010 <UTIL_TIMER_Stop+0x3c> + 8013ff2: 7202 strb r2, [r0, #8] + 8013ff4: b13c cbz r4, 8014006 <UTIL_TIMER_Stop+0x32> + 8013ff6: 4620 mov r0, r4 + 8013ff8: 602c str r4, [r5, #0] + 8013ffa: f7ff ffcf bl 8013f9c <TimerSetTimeout> + 8013ffe: f386 8810 msr PRIMASK, r6 + 8014002: 2000 movs r0, #0 + 8014004: bd70 pop {r4, r5, r6, pc} + 8014006: 4b09 ldr r3, [pc, #36] ; (801402c <UTIL_TIMER_Stop+0x58>) + 8014008: 68db ldr r3, [r3, #12] + 801400a: 4798 blx r3 + 801400c: 602c str r4, [r5, #0] + 801400e: e7f6 b.n 8013ffe <UTIL_TIMER_Stop+0x2a> + 8014010: 461a mov r2, r3 + 8014012: 695b ldr r3, [r3, #20] + 8014014: 2b00 cmp r3, #0 + 8014016: d0f2 beq.n 8013ffe <UTIL_TIMER_Stop+0x2a> + 8014018: 4298 cmp r0, r3 + 801401a: d1f9 bne.n 8014010 <UTIL_TIMER_Stop+0x3c> + 801401c: 6943 ldr r3, [r0, #20] + 801401e: 6153 str r3, [r2, #20] + 8014020: e7ed b.n 8013ffe <UTIL_TIMER_Stop+0x2a> + 8014022: 2001 movs r0, #1 + 8014024: e7ee b.n 8014004 <UTIL_TIMER_Stop+0x30> + 8014026: bf00 nop + 8014028: 20002e38 .word 0x20002e38 + 801402c: 08014688 .word 0x08014688 + +08014030 <TimerInsertTimer>: + 8014030: 4b08 ldr r3, [pc, #32] ; (8014054 <TimerInsertTimer+0x24>) + 8014032: b510 push {r4, lr} + 8014034: 681a ldr r2, [r3, #0] + 8014036: 6953 ldr r3, [r2, #20] + 8014038: 6951 ldr r1, [r2, #20] + 801403a: b911 cbnz r1, 8014042 <TimerInsertTimer+0x12> + 801403c: 6150 str r0, [r2, #20] + 801403e: 6141 str r1, [r0, #20] + 8014040: bd10 pop {r4, pc} + 8014042: 6804 ldr r4, [r0, #0] + 8014044: 6819 ldr r1, [r3, #0] + 8014046: 428c cmp r4, r1 + 8014048: d902 bls.n 8014050 <TimerInsertTimer+0x20> + 801404a: 461a mov r2, r3 + 801404c: 695b ldr r3, [r3, #20] + 801404e: e7f3 b.n 8014038 <TimerInsertTimer+0x8> + 8014050: 4619 mov r1, r3 + 8014052: e7f3 b.n 801403c <TimerInsertTimer+0xc> + 8014054: 20002e38 .word 0x20002e38 + +08014058 <TimerInsertNewHeadTimer>: + 8014058: 4a04 ldr r2, [pc, #16] ; (801406c <TimerInsertNewHeadTimer+0x14>) + 801405a: 6813 ldr r3, [r2, #0] + 801405c: b10b cbz r3, 8014062 <TimerInsertNewHeadTimer+0xa> + 801405e: 2100 movs r1, #0 + 8014060: 7219 strb r1, [r3, #8] + 8014062: 6143 str r3, [r0, #20] + 8014064: 6010 str r0, [r2, #0] + 8014066: f7ff bf99 b.w 8013f9c <TimerSetTimeout> + 801406a: bf00 nop + 801406c: 20002e38 .word 0x20002e38 + +08014070 <UTIL_TIMER_Start>: + 8014070: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8014074: 4604 mov r4, r0 + 8014076: 2800 cmp r0, #0 + 8014078: d02d beq.n 80140d6 <UTIL_TIMER_Start+0x66> + 801407a: f7ff ff81 bl 8013f80 <TimerExists> + 801407e: bb50 cbnz r0, 80140d6 <UTIL_TIMER_Start+0x66> + 8014080: 7a65 ldrb r5, [r4, #9] + 8014082: bb45 cbnz r5, 80140d6 <UTIL_TIMER_Start+0x66> + 8014084: f3ef 8810 mrs r8, PRIMASK + 8014088: b672 cpsid i + 801408a: 4e14 ldr r6, [pc, #80] ; (80140dc <UTIL_TIMER_Start+0x6c>) + 801408c: 6867 ldr r7, [r4, #4] + 801408e: 6a33 ldr r3, [r6, #32] + 8014090: 4798 blx r3 + 8014092: 4287 cmp r7, r0 + 8014094: bf2c ite cs + 8014096: 6027 strcs r7, [r4, #0] + 8014098: 6020 strcc r0, [r4, #0] + 801409a: 4f11 ldr r7, [pc, #68] ; (80140e0 <UTIL_TIMER_Start+0x70>) + 801409c: 72a5 strb r5, [r4, #10] + 801409e: f44f 7380 mov.w r3, #256 ; 0x100 + 80140a2: 8123 strh r3, [r4, #8] + 80140a4: 683b ldr r3, [r7, #0] + 80140a6: b94b cbnz r3, 80140bc <UTIL_TIMER_Start+0x4c> + 80140a8: 6933 ldr r3, [r6, #16] + 80140aa: 4798 blx r3 + 80140ac: 4620 mov r0, r4 + 80140ae: f7ff ffd3 bl 8014058 <TimerInsertNewHeadTimer> + 80140b2: f388 8810 msr PRIMASK, r8 + 80140b6: 4628 mov r0, r5 + 80140b8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 80140bc: 69b3 ldr r3, [r6, #24] + 80140be: 4798 blx r3 + 80140c0: 6823 ldr r3, [r4, #0] + 80140c2: 4418 add r0, r3 + 80140c4: 683b ldr r3, [r7, #0] + 80140c6: 6020 str r0, [r4, #0] + 80140c8: 681b ldr r3, [r3, #0] + 80140ca: 4298 cmp r0, r3 + 80140cc: 4620 mov r0, r4 + 80140ce: d3ee bcc.n 80140ae <UTIL_TIMER_Start+0x3e> + 80140d0: f7ff ffae bl 8014030 <TimerInsertTimer> + 80140d4: e7ed b.n 80140b2 <UTIL_TIMER_Start+0x42> + 80140d6: 2501 movs r5, #1 + 80140d8: e7ed b.n 80140b6 <UTIL_TIMER_Start+0x46> + 80140da: bf00 nop + 80140dc: 08014688 .word 0x08014688 + 80140e0: 20002e38 .word 0x20002e38 + +080140e4 <UTIL_TIMER_SetPeriod>: + 80140e4: b510 push {r4, lr} + 80140e6: 4604 mov r4, r0 + 80140e8: 4608 mov r0, r1 + 80140ea: b17c cbz r4, 801410c <UTIL_TIMER_SetPeriod+0x28> + 80140ec: 4b08 ldr r3, [pc, #32] ; (8014110 <UTIL_TIMER_SetPeriod+0x2c>) + 80140ee: 6a5b ldr r3, [r3, #36] ; 0x24 + 80140f0: 4798 blx r3 + 80140f2: 6060 str r0, [r4, #4] + 80140f4: 4620 mov r0, r4 + 80140f6: f7ff ff43 bl 8013f80 <TimerExists> + 80140fa: b140 cbz r0, 801410e <UTIL_TIMER_SetPeriod+0x2a> + 80140fc: 4620 mov r0, r4 + 80140fe: f7ff ff69 bl 8013fd4 <UTIL_TIMER_Stop> + 8014102: 4620 mov r0, r4 + 8014104: e8bd 4010 ldmia.w sp!, {r4, lr} + 8014108: f7ff bfb2 b.w 8014070 <UTIL_TIMER_Start> + 801410c: 2001 movs r0, #1 + 801410e: bd10 pop {r4, pc} + 8014110: 08014688 .word 0x08014688 + +08014114 <UTIL_TIMER_IRQ_Handler>: + 8014114: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8014118: f3ef 8710 mrs r7, PRIMASK + 801411c: b672 cpsid i + 801411e: 4e1d ldr r6, [pc, #116] ; (8014194 <UTIL_TIMER_IRQ_Handler+0x80>) + 8014120: 4d1d ldr r5, [pc, #116] ; (8014198 <UTIL_TIMER_IRQ_Handler+0x84>) + 8014122: 6973 ldr r3, [r6, #20] + 8014124: 4798 blx r3 + 8014126: 6933 ldr r3, [r6, #16] + 8014128: 4604 mov r4, r0 + 801412a: 4798 blx r3 + 801412c: 682b ldr r3, [r5, #0] + 801412e: b94b cbnz r3, 8014144 <UTIL_TIMER_IRQ_Handler+0x30> + 8014130: f04f 0800 mov.w r8, #0 + 8014134: 682b ldr r3, [r5, #0] + 8014136: b98b cbnz r3, 801415c <UTIL_TIMER_IRQ_Handler+0x48> + 8014138: 6828 ldr r0, [r5, #0] + 801413a: bb28 cbnz r0, 8014188 <UTIL_TIMER_IRQ_Handler+0x74> + 801413c: f387 8810 msr PRIMASK, r7 + 8014140: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8014144: 1b01 subs r1, r0, r4 + 8014146: 1a24 subs r4, r4, r0 + 8014148: 681a ldr r2, [r3, #0] + 801414a: 428a cmp r2, r1 + 801414c: bf8c ite hi + 801414e: 1912 addhi r2, r2, r4 + 8014150: 2200 movls r2, #0 + 8014152: 601a str r2, [r3, #0] + 8014154: 695b ldr r3, [r3, #20] + 8014156: 2b00 cmp r3, #0 + 8014158: d1f6 bne.n 8014148 <UTIL_TIMER_IRQ_Handler+0x34> + 801415a: e7e9 b.n 8014130 <UTIL_TIMER_IRQ_Handler+0x1c> + 801415c: 681c ldr r4, [r3, #0] + 801415e: b11c cbz r4, 8014168 <UTIL_TIMER_IRQ_Handler+0x54> + 8014160: 69b3 ldr r3, [r6, #24] + 8014162: 4798 blx r3 + 8014164: 4284 cmp r4, r0 + 8014166: d2e7 bcs.n 8014138 <UTIL_TIMER_IRQ_Handler+0x24> + 8014168: 682c ldr r4, [r5, #0] + 801416a: 6963 ldr r3, [r4, #20] + 801416c: 602b str r3, [r5, #0] + 801416e: f8a4 8008 strh.w r8, [r4, #8] + 8014172: e9d4 3003 ldrd r3, r0, [r4, #12] + 8014176: 4798 blx r3 + 8014178: 8963 ldrh r3, [r4, #10] + 801417a: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 801417e: d1d9 bne.n 8014134 <UTIL_TIMER_IRQ_Handler+0x20> + 8014180: 4620 mov r0, r4 + 8014182: f7ff ff75 bl 8014070 <UTIL_TIMER_Start> + 8014186: e7d5 b.n 8014134 <UTIL_TIMER_IRQ_Handler+0x20> + 8014188: 7a03 ldrb r3, [r0, #8] + 801418a: 2b00 cmp r3, #0 + 801418c: d1d6 bne.n 801413c <UTIL_TIMER_IRQ_Handler+0x28> + 801418e: f7ff ff05 bl 8013f9c <TimerSetTimeout> + 8014192: e7d3 b.n 801413c <UTIL_TIMER_IRQ_Handler+0x28> + 8014194: 08014688 .word 0x08014688 + 8014198: 20002e38 .word 0x20002e38 + +0801419c <tiny_vsnprintf_like>: + 801419c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80141a0: b097 sub sp, #92 ; 0x5c + 80141a2: 2900 cmp r1, #0 + 80141a4: 4680 mov r8, r0 + 80141a6: 9103 str r1, [sp, #12] + 80141a8: f340 810e ble.w 80143c8 <tiny_vsnprintf_like+0x22c> + 80141ac: 469a mov sl, r3 + 80141ae: 4604 mov r4, r0 + 80141b0: 9903 ldr r1, [sp, #12] + 80141b2: 7813 ldrb r3, [r2, #0] + 80141b4: eba4 0008 sub.w r0, r4, r8 + 80141b8: 3901 subs r1, #1 + 80141ba: b923 cbnz r3, 80141c6 <tiny_vsnprintf_like+0x2a> + 80141bc: 2300 movs r3, #0 + 80141be: 7023 strb r3, [r4, #0] + 80141c0: b017 add sp, #92 ; 0x5c + 80141c2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80141c6: 4288 cmp r0, r1 + 80141c8: daf8 bge.n 80141bc <tiny_vsnprintf_like+0x20> + 80141ca: 2b25 cmp r3, #37 ; 0x25 + 80141cc: d004 beq.n 80141d8 <tiny_vsnprintf_like+0x3c> + 80141ce: f804 3b01 strb.w r3, [r4], #1 + 80141d2: 4616 mov r6, r2 + 80141d4: 1c72 adds r2, r6, #1 + 80141d6: e7eb b.n 80141b0 <tiny_vsnprintf_like+0x14> + 80141d8: f892 c001 ldrb.w ip, [r2, #1] + 80141dc: f1ac 0330 sub.w r3, ip, #48 ; 0x30 + 80141e0: f1d3 0e00 rsbs lr, r3, #0 + 80141e4: eb4e 0e03 adc.w lr, lr, r3 + 80141e8: f1ac 0330 sub.w r3, ip, #48 ; 0x30 + 80141ec: 2b09 cmp r3, #9 + 80141ee: f102 0601 add.w r6, r2, #1 + 80141f2: d829 bhi.n 8014248 <tiny_vsnprintf_like+0xac> + 80141f4: 4632 mov r2, r6 + 80141f6: 2500 movs r5, #0 + 80141f8: f04f 090a mov.w r9, #10 + 80141fc: 4616 mov r6, r2 + 80141fe: f812 3b01 ldrb.w r3, [r2], #1 + 8014202: f1a3 0030 sub.w r0, r3, #48 ; 0x30 + 8014206: 2809 cmp r0, #9 + 8014208: d919 bls.n 801423e <tiny_vsnprintf_like+0xa2> + 801420a: 7833 ldrb r3, [r6, #0] + 801420c: 2b69 cmp r3, #105 ; 0x69 + 801420e: f000 809c beq.w 801434a <tiny_vsnprintf_like+0x1ae> + 8014212: d81c bhi.n 801424e <tiny_vsnprintf_like+0xb2> + 8014214: 2b63 cmp r3, #99 ; 0x63 + 8014216: d028 beq.n 801426a <tiny_vsnprintf_like+0xce> + 8014218: 2b64 cmp r3, #100 ; 0x64 + 801421a: f000 8096 beq.w 801434a <tiny_vsnprintf_like+0x1ae> + 801421e: 2b58 cmp r3, #88 ; 0x58 + 8014220: d05b beq.n 80142da <tiny_vsnprintf_like+0x13e> + 8014222: 2b25 cmp r3, #37 ; 0x25 + 8014224: d119 bne.n 801425a <tiny_vsnprintf_like+0xbe> + 8014226: 7833 ldrb r3, [r6, #0] + 8014228: 2b00 cmp r3, #0 + 801422a: f000 8092 beq.w 8014352 <tiny_vsnprintf_like+0x1b6> + 801422e: f804 3b01 strb.w r3, [r4], #1 + 8014232: eba4 0308 sub.w r3, r4, r8 + 8014236: 428b cmp r3, r1 + 8014238: f280 8089 bge.w 801434e <tiny_vsnprintf_like+0x1b2> + 801423c: e7ca b.n 80141d4 <tiny_vsnprintf_like+0x38> + 801423e: fb09 3305 mla r3, r9, r5, r3 + 8014242: f1a3 0530 sub.w r5, r3, #48 ; 0x30 + 8014246: e7d9 b.n 80141fc <tiny_vsnprintf_like+0x60> + 8014248: f04f 35ff mov.w r5, #4294967295 + 801424c: e7dd b.n 801420a <tiny_vsnprintf_like+0x6e> + 801424e: 2b75 cmp r3, #117 ; 0x75 + 8014250: d07d beq.n 801434e <tiny_vsnprintf_like+0x1b2> + 8014252: 2b78 cmp r3, #120 ; 0x78 + 8014254: d043 beq.n 80142de <tiny_vsnprintf_like+0x142> + 8014256: 2b73 cmp r3, #115 ; 0x73 + 8014258: d01e beq.n 8014298 <tiny_vsnprintf_like+0xfc> + 801425a: 2325 movs r3, #37 ; 0x25 + 801425c: f804 3b01 strb.w r3, [r4], #1 + 8014260: eba4 0308 sub.w r3, r4, r8 + 8014264: 428b cmp r3, r1 + 8014266: da72 bge.n 801434e <tiny_vsnprintf_like+0x1b2> + 8014268: e7dd b.n 8014226 <tiny_vsnprintf_like+0x8a> + 801426a: 2d00 cmp r5, #0 + 801426c: f105 39ff add.w r9, r5, #4294967295 + 8014270: bfd8 it le + 8014272: f04f 0900 movle.w r9, #0 + 8014276: 464a mov r2, r9 + 8014278: 4620 mov r0, r4 + 801427a: 2120 movs r1, #32 + 801427c: f000 f8bc bl 80143f8 <memset> + 8014280: 4653 mov r3, sl + 8014282: 44a1 add r9, r4 + 8014284: 2d00 cmp r5, #0 + 8014286: f853 2b04 ldr.w r2, [r3], #4 + 801428a: f889 2000 strb.w r2, [r9] + 801428e: bfd8 it le + 8014290: 2501 movle r5, #1 + 8014292: 442c add r4, r5 + 8014294: 469a mov sl, r3 + 8014296: e79d b.n 80141d4 <tiny_vsnprintf_like+0x38> + 8014298: 4b4c ldr r3, [pc, #304] ; (80143cc <tiny_vsnprintf_like+0x230>) + 801429a: f85a 7b04 ldr.w r7, [sl], #4 + 801429e: 2f00 cmp r7, #0 + 80142a0: bf08 it eq + 80142a2: 461f moveq r7, r3 + 80142a4: 4638 mov r0, r7 + 80142a6: f7ed f88b bl 80013c0 <strlen> + 80142aa: eba5 0b00 sub.w fp, r5, r0 + 80142ae: 4285 cmp r5, r0 + 80142b0: bfb8 it lt + 80142b2: f04f 0b00 movlt.w fp, #0 + 80142b6: 465a mov r2, fp + 80142b8: 4681 mov r9, r0 + 80142ba: 2120 movs r1, #32 + 80142bc: 4620 mov r0, r4 + 80142be: f000 f89b bl 80143f8 <memset> + 80142c2: 44a3 add fp, r4 + 80142c4: 2300 movs r3, #0 + 80142c6: 454b cmp r3, r9 + 80142c8: db02 blt.n 80142d0 <tiny_vsnprintf_like+0x134> + 80142ca: eb0b 0409 add.w r4, fp, r9 + 80142ce: e781 b.n 80141d4 <tiny_vsnprintf_like+0x38> + 80142d0: 5cfa ldrb r2, [r7, r3] + 80142d2: f80b 2003 strb.w r2, [fp, r3] + 80142d6: 3301 adds r3, #1 + 80142d8: e7f5 b.n 80142c6 <tiny_vsnprintf_like+0x12a> + 80142da: f04e 0e40 orr.w lr, lr, #64 ; 0x40 + 80142de: 2010 movs r0, #16 + 80142e0: f8df 90ec ldr.w r9, [pc, #236] ; 80143d0 <tiny_vsnprintf_like+0x234> + 80142e4: 4f3b ldr r7, [pc, #236] ; (80143d4 <tiny_vsnprintf_like+0x238>) + 80142e6: f01e 0f40 tst.w lr, #64 ; 0x40 + 80142ea: bf08 it eq + 80142ec: 464f moveq r7, r9 + 80142ee: 4653 mov r3, sl + 80142f0: f1bc 0f30 cmp.w ip, #48 ; 0x30 + 80142f4: 9701 str r7, [sp, #4] + 80142f6: eba4 0208 sub.w r2, r4, r8 + 80142fa: bf0c ite eq + 80142fc: 2730 moveq r7, #48 ; 0x30 + 80142fe: 2720 movne r7, #32 + 8014300: f01e 0f02 tst.w lr, #2 + 8014304: eba1 0202 sub.w r2, r1, r2 + 8014308: 9702 str r7, [sp, #8] + 801430a: f853 1b04 ldr.w r1, [r3], #4 + 801430e: d022 beq.n 8014356 <tiny_vsnprintf_like+0x1ba> + 8014310: 2900 cmp r1, #0 + 8014312: da20 bge.n 8014356 <tiny_vsnprintf_like+0x1ba> + 8014314: 4249 negs r1, r1 + 8014316: 3d01 subs r5, #1 + 8014318: f04f 0e2d mov.w lr, #45 ; 0x2d + 801431c: af05 add r7, sp, #20 + 801431e: 9700 str r7, [sp, #0] + 8014320: 2700 movs r7, #0 + 8014322: 4689 mov r9, r1 + 8014324: f8dd a004 ldr.w sl, [sp, #4] + 8014328: fbb1 f1f0 udiv r1, r1, r0 + 801432c: fb00 9b11 mls fp, r0, r1, r9 + 8014330: 4548 cmp r0, r9 + 8014332: f81a b00b ldrb.w fp, [sl, fp] + 8014336: f8dd a000 ldr.w sl, [sp] + 801433a: f80a bb01 strb.w fp, [sl], #1 + 801433e: f107 0701 add.w r7, r7, #1 + 8014342: f8cd a000 str.w sl, [sp] + 8014346: d9ec bls.n 8014322 <tiny_vsnprintf_like+0x186> + 8014348: e00e b.n 8014368 <tiny_vsnprintf_like+0x1cc> + 801434a: f04e 0e02 orr.w lr, lr, #2 + 801434e: 200a movs r0, #10 + 8014350: e7c6 b.n 80142e0 <tiny_vsnprintf_like+0x144> + 8014352: 3e01 subs r6, #1 + 8014354: e76d b.n 8014232 <tiny_vsnprintf_like+0x96> + 8014356: b111 cbz r1, 801435e <tiny_vsnprintf_like+0x1c2> + 8014358: f04f 0e00 mov.w lr, #0 + 801435c: e7de b.n 801431c <tiny_vsnprintf_like+0x180> + 801435e: 2030 movs r0, #48 ; 0x30 + 8014360: f88d 0014 strb.w r0, [sp, #20] + 8014364: 468e mov lr, r1 + 8014366: 2701 movs r7, #1 + 8014368: f1bc 0f30 cmp.w ip, #48 ; 0x30 + 801436c: eba5 0507 sub.w r5, r5, r7 + 8014370: d004 beq.n 801437c <tiny_vsnprintf_like+0x1e0> + 8014372: 2020 movs r0, #32 + 8014374: 2d00 cmp r5, #0 + 8014376: f105 35ff add.w r5, r5, #4294967295 + 801437a: dc09 bgt.n 8014390 <tiny_vsnprintf_like+0x1f4> + 801437c: f1be 0f00 cmp.w lr, #0 + 8014380: d004 beq.n 801438c <tiny_vsnprintf_like+0x1f0> + 8014382: 212d movs r1, #45 ; 0x2d + 8014384: 3a01 subs r2, #1 + 8014386: f804 1b01 strb.w r1, [r4], #1 + 801438a: d083 beq.n 8014294 <tiny_vsnprintf_like+0xf8> + 801438c: 4425 add r5, r4 + 801438e: e00a b.n 80143a6 <tiny_vsnprintf_like+0x20a> + 8014390: 3a01 subs r2, #1 + 8014392: f804 0b01 strb.w r0, [r4], #1 + 8014396: d1ed bne.n 8014374 <tiny_vsnprintf_like+0x1d8> + 8014398: e77c b.n 8014294 <tiny_vsnprintf_like+0xf8> + 801439a: 9902 ldr r1, [sp, #8] + 801439c: f804 1b01 strb.w r1, [r4], #1 + 80143a0: 3a01 subs r2, #1 + 80143a2: f43f af77 beq.w 8014294 <tiny_vsnprintf_like+0xf8> + 80143a6: 1b29 subs r1, r5, r4 + 80143a8: 2900 cmp r1, #0 + 80143aa: dcf6 bgt.n 801439a <tiny_vsnprintf_like+0x1fe> + 80143ac: a905 add r1, sp, #20 + 80143ae: 4439 add r1, r7 + 80143b0: 4422 add r2, r4 + 80143b2: 4427 add r7, r4 + 80143b4: 42a7 cmp r7, r4 + 80143b6: f43f af6d beq.w 8014294 <tiny_vsnprintf_like+0xf8> + 80143ba: f811 0d01 ldrb.w r0, [r1, #-1]! + 80143be: f804 0b01 strb.w r0, [r4], #1 + 80143c2: 4294 cmp r4, r2 + 80143c4: d1f6 bne.n 80143b4 <tiny_vsnprintf_like+0x218> + 80143c6: e765 b.n 8014294 <tiny_vsnprintf_like+0xf8> + 80143c8: 2000 movs r0, #0 + 80143ca: e6f9 b.n 80141c0 <tiny_vsnprintf_like+0x24> + 80143cc: 08015afc .word 0x08015afc + 80143d0: 08015b03 .word 0x08015b03 + 80143d4: 08015b28 .word 0x08015b28 + +080143d8 <memcmp>: + 80143d8: b510 push {r4, lr} + 80143da: 3901 subs r1, #1 + 80143dc: 4402 add r2, r0 + 80143de: 4290 cmp r0, r2 + 80143e0: d101 bne.n 80143e6 <memcmp+0xe> + 80143e2: 2000 movs r0, #0 + 80143e4: e005 b.n 80143f2 <memcmp+0x1a> + 80143e6: 7803 ldrb r3, [r0, #0] + 80143e8: f811 4f01 ldrb.w r4, [r1, #1]! + 80143ec: 42a3 cmp r3, r4 + 80143ee: d001 beq.n 80143f4 <memcmp+0x1c> + 80143f0: 1b18 subs r0, r3, r4 + 80143f2: bd10 pop {r4, pc} + 80143f4: 3001 adds r0, #1 + 80143f6: e7f2 b.n 80143de <memcmp+0x6> + +080143f8 <memset>: + 80143f8: 4402 add r2, r0 + 80143fa: 4603 mov r3, r0 + 80143fc: 4293 cmp r3, r2 + 80143fe: d100 bne.n 8014402 <memset+0xa> + 8014400: 4770 bx lr + 8014402: f803 1b01 strb.w r1, [r3], #1 + 8014406: e7f9 b.n 80143fc <memset+0x4> + +08014408 <__libc_init_array>: + 8014408: b570 push {r4, r5, r6, lr} + 801440a: 4d0d ldr r5, [pc, #52] ; (8014440 <__libc_init_array+0x38>) + 801440c: 4c0d ldr r4, [pc, #52] ; (8014444 <__libc_init_array+0x3c>) + 801440e: 1b64 subs r4, r4, r5 + 8014410: 10a4 asrs r4, r4, #2 + 8014412: 2600 movs r6, #0 + 8014414: 42a6 cmp r6, r4 + 8014416: d109 bne.n 801442c <__libc_init_array+0x24> + 8014418: 4d0b ldr r5, [pc, #44] ; (8014448 <__libc_init_array+0x40>) + 801441a: 4c0c ldr r4, [pc, #48] ; (801444c <__libc_init_array+0x44>) + 801441c: f000 f8b8 bl 8014590 <_init> + 8014420: 1b64 subs r4, r4, r5 + 8014422: 10a4 asrs r4, r4, #2 + 8014424: 2600 movs r6, #0 + 8014426: 42a6 cmp r6, r4 + 8014428: d105 bne.n 8014436 <__libc_init_array+0x2e> + 801442a: bd70 pop {r4, r5, r6, pc} + 801442c: f855 3b04 ldr.w r3, [r5], #4 + 8014430: 4798 blx r3 + 8014432: 3601 adds r6, #1 + 8014434: e7ee b.n 8014414 <__libc_init_array+0xc> + 8014436: f855 3b04 ldr.w r3, [r5], #4 + 801443a: 4798 blx r3 + 801443c: 3601 adds r6, #1 + 801443e: e7f2 b.n 8014426 <__libc_init_array+0x1e> + 8014440: 08015c30 .word 0x08015c30 + 8014444: 08015c30 .word 0x08015c30 + 8014448: 08015c30 .word 0x08015c30 + 801444c: 08015c34 .word 0x08015c34 + +08014450 <strcpy>: + 8014450: 4603 mov r3, r0 + 8014452: f811 2b01 ldrb.w r2, [r1], #1 + 8014456: f803 2b01 strb.w r2, [r3], #1 + 801445a: 2a00 cmp r2, #0 + 801445c: d1f9 bne.n 8014452 <strcpy+0x2> + 801445e: 4770 bx lr + +08014460 <__aeabi_memcpy>: + 8014460: f000 b803 b.w 801446a <memcpy> + +08014464 <__aeabi_memclr>: + 8014464: 2200 movs r2, #0 + 8014466: f000 b80e b.w 8014486 <__aeabi_memset> + +0801446a <memcpy>: + 801446a: 440a add r2, r1 + 801446c: 4291 cmp r1, r2 + 801446e: f100 33ff add.w r3, r0, #4294967295 + 8014472: d100 bne.n 8014476 <memcpy+0xc> + 8014474: 4770 bx lr + 8014476: b510 push {r4, lr} + 8014478: f811 4b01 ldrb.w r4, [r1], #1 + 801447c: f803 4f01 strb.w r4, [r3, #1]! + 8014480: 4291 cmp r1, r2 + 8014482: d1f9 bne.n 8014478 <memcpy+0xe> + 8014484: bd10 pop {r4, pc} + +08014486 <__aeabi_memset>: + 8014486: 4613 mov r3, r2 + 8014488: 460a mov r2, r1 + 801448a: 4619 mov r1, r3 + 801448c: f7ff bfb4 b.w 80143f8 <memset> + +08014490 <floor>: + 8014490: f3c1 520a ubfx r2, r1, #20, #11 + 8014494: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8014498: f2a2 36ff subw r6, r2, #1023 ; 0x3ff + 801449c: 2e13 cmp r6, #19 + 801449e: 460b mov r3, r1 + 80144a0: 4607 mov r7, r0 + 80144a2: 460c mov r4, r1 + 80144a4: 4605 mov r5, r0 + 80144a6: dc32 bgt.n 801450e <floor+0x7e> + 80144a8: 2e00 cmp r6, #0 + 80144aa: da14 bge.n 80144d6 <floor+0x46> + 80144ac: a334 add r3, pc, #208 ; (adr r3, 8014580 <floor+0xf0>) + 80144ae: e9d3 2300 ldrd r2, r3, [r3] + 80144b2: f7ec ff93 bl 80013dc <__adddf3> + 80144b6: 2200 movs r2, #0 + 80144b8: 2300 movs r3, #0 + 80144ba: f7ed f9c3 bl 8001844 <__aeabi_dcmpgt> + 80144be: b138 cbz r0, 80144d0 <floor+0x40> + 80144c0: 2c00 cmp r4, #0 + 80144c2: da56 bge.n 8014572 <floor+0xe2> + 80144c4: f024 4400 bic.w r4, r4, #2147483648 ; 0x80000000 + 80144c8: 4325 orrs r5, r4 + 80144ca: d055 beq.n 8014578 <floor+0xe8> + 80144cc: 4c2e ldr r4, [pc, #184] ; (8014588 <floor+0xf8>) + 80144ce: 2500 movs r5, #0 + 80144d0: 4623 mov r3, r4 + 80144d2: 462f mov r7, r5 + 80144d4: e025 b.n 8014522 <floor+0x92> + 80144d6: 4a2d ldr r2, [pc, #180] ; (801458c <floor+0xfc>) + 80144d8: fa42 f806 asr.w r8, r2, r6 + 80144dc: ea01 0208 and.w r2, r1, r8 + 80144e0: 4302 orrs r2, r0 + 80144e2: d01e beq.n 8014522 <floor+0x92> + 80144e4: a326 add r3, pc, #152 ; (adr r3, 8014580 <floor+0xf0>) + 80144e6: e9d3 2300 ldrd r2, r3, [r3] + 80144ea: f7ec ff77 bl 80013dc <__adddf3> + 80144ee: 2200 movs r2, #0 + 80144f0: 2300 movs r3, #0 + 80144f2: f7ed f9a7 bl 8001844 <__aeabi_dcmpgt> + 80144f6: 2800 cmp r0, #0 + 80144f8: d0ea beq.n 80144d0 <floor+0x40> + 80144fa: 2c00 cmp r4, #0 + 80144fc: bfbe ittt lt + 80144fe: f44f 1380 movlt.w r3, #1048576 ; 0x100000 + 8014502: 4133 asrlt r3, r6 + 8014504: 18e4 addlt r4, r4, r3 + 8014506: ea24 0408 bic.w r4, r4, r8 + 801450a: 2500 movs r5, #0 + 801450c: e7e0 b.n 80144d0 <floor+0x40> + 801450e: 2e33 cmp r6, #51 ; 0x33 + 8014510: dd0b ble.n 801452a <floor+0x9a> + 8014512: f5b6 6f80 cmp.w r6, #1024 ; 0x400 + 8014516: d104 bne.n 8014522 <floor+0x92> + 8014518: 4602 mov r2, r0 + 801451a: f7ec ff5f bl 80013dc <__adddf3> + 801451e: 4607 mov r7, r0 + 8014520: 460b mov r3, r1 + 8014522: 4638 mov r0, r7 + 8014524: 4619 mov r1, r3 + 8014526: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 801452a: f2a2 4213 subw r2, r2, #1043 ; 0x413 + 801452e: f04f 38ff mov.w r8, #4294967295 + 8014532: fa28 f802 lsr.w r8, r8, r2 + 8014536: ea10 0f08 tst.w r0, r8 + 801453a: d0f2 beq.n 8014522 <floor+0x92> + 801453c: a310 add r3, pc, #64 ; (adr r3, 8014580 <floor+0xf0>) + 801453e: e9d3 2300 ldrd r2, r3, [r3] + 8014542: f7ec ff4b bl 80013dc <__adddf3> + 8014546: 2200 movs r2, #0 + 8014548: 2300 movs r3, #0 + 801454a: f7ed f97b bl 8001844 <__aeabi_dcmpgt> + 801454e: 2800 cmp r0, #0 + 8014550: d0be beq.n 80144d0 <floor+0x40> + 8014552: 2c00 cmp r4, #0 + 8014554: da0a bge.n 801456c <floor+0xdc> + 8014556: 2e14 cmp r6, #20 + 8014558: d101 bne.n 801455e <floor+0xce> + 801455a: 3401 adds r4, #1 + 801455c: e006 b.n 801456c <floor+0xdc> + 801455e: f1c6 0634 rsb r6, r6, #52 ; 0x34 + 8014562: 2301 movs r3, #1 + 8014564: 40b3 lsls r3, r6 + 8014566: 441d add r5, r3 + 8014568: 42af cmp r7, r5 + 801456a: d8f6 bhi.n 801455a <floor+0xca> + 801456c: ea25 0508 bic.w r5, r5, r8 + 8014570: e7ae b.n 80144d0 <floor+0x40> + 8014572: 2500 movs r5, #0 + 8014574: 462c mov r4, r5 + 8014576: e7ab b.n 80144d0 <floor+0x40> + 8014578: f04f 4400 mov.w r4, #2147483648 ; 0x80000000 + 801457c: e7a8 b.n 80144d0 <floor+0x40> + 801457e: bf00 nop + 8014580: 8800759c .word 0x8800759c + 8014584: 7e37e43c .word 0x7e37e43c + 8014588: bff00000 .word 0xbff00000 + 801458c: 000fffff .word 0x000fffff + +08014590 <_init>: + 8014590: b5f8 push {r3, r4, r5, r6, r7, lr} + 8014592: bf00 nop + 8014594: bcf8 pop {r3, r4, r5, r6, r7} + 8014596: bc08 pop {r3} + 8014598: 469e mov lr, r3 + 801459a: 4770 bx lr + +0801459c <_fini>: + 801459c: b5f8 push {r3, r4, r5, r6, r7, lr} + 801459e: bf00 nop + 80145a0: bcf8 pop {r3, r4, r5, r6, r7} + 80145a2: bc08 pop {r3} + 80145a4: 469e mov lr, r3 + 80145a6: 4770 bx lr diff --git a/STS-IOT-PCBA.pdf b/STS-IOT-PCBA.pdf new file mode 100644 index 0000000000000000000000000000000000000000..77f31b8480f6b27f20bcb989985e4155dd27dd23 GIT binary patch literal 269464 zcmagGc|6o#^go^`m7-F1MvIg%mSh_<c}prqsO%<$qAVfXm`Msn6j=&0m9j5MwlG7M z$vW9(8w|$I%ot`dGvAlq@6Yf1{r$dw{2mXlW$r!q+<Wfpo^zk)oco|~<KiV1bye+s z`_9R$$@{o??t?(~fiK;E5a9Mm9(?J6bAa1LH&>s#Zu`L3+`K&k?#Zj`p3^<I4+`Dq zAMnV{`Qg6cjOFmo_>*<<V_3|mLH@h{Sf1vh>!0v}mqMQLxvRz%Kd+-K+P^&5+IZRc z*6rEWg&&%M5kh@I`FdtC$1ILqc{8b(@NsK3s48j#RW-`>Zl(OlKKO{s@$tcN2_?a_ zgmpnqzgp+undpOfqI%Q(`;@@URMu)^phWL`(&`9^yNcTS5k5TvMpVjFVz^sMu!PtT zi%R!uXMY<F&TQ;`sT3hd0hiS#8{CBNxDXu98LTu~aOE-Rt32u=N{opGe{^mgd_6$L z5xuSr`V9%NXDRb~ZLZNF*jXxlYE8J9!1SkXMLU6~z1|yLo?HucuFj^C9wA;?Ibdky zX=Xz0xCY)!33Nt*7upVSA~_(Xw!AV(tPGeU0kuRQ@Iq_fXAIg$c@_7n%Q}(vSCY4M zL%2pIl^uiC9k1w&P_Nn)pTkoWtuEiNE=&>`wjR0|aKM;BnWYab>Ls6%O(+S9TJ+~; zKzJVq(|ZDCx7np<FG{s}$&iQ6{2d-5xUS}iHUy!phZwyK>KnN(sMkCg;C2hMcp&%X zMgnIsKhbCX?9<d0jMESEx&Zh@59(I_cvl|cr(61OGar4Kb${lb!H?c*Bz>JZGM5Gl zHRu}=7Uaa0_`QrouE2PrB{>Ptzp!TgY!WX7#WyCd!g!^FR>oww$WbY5i)8%1G9EBR zgo?eq&??ypuZ+p6v2_gZ_u`*ZVZjDN*TxnzC%@WmZkN21+bD@<iNQ%n1jENsTt)gu zM%$<19OFZH#DQu=na2TdkLGc^n(ptX?kt-yDxc&H#C?cfM3O+ke&+-6zk@uU1_-S7 z4+ZV5=t#>$B)V-G%ued{YhQ*5z6)z&W1r3H!gFj=j1E2cW4JKVlHYR(w2#wwd$ZQP zTREr7fJ|tmts?6@Io};S>*S^wQtdbP=Y-Frfj15r_2^NH&TjPs0|A-&bZwq8D<^(% zUaxOCm{k{_btbIdRb63;Eo|(To|DBB3hu#(M%BQ5m3fFU?P=ZOLA4`4%4;Wdz*Nu^ zo?)$o)?n3Q35=1UIch*&8EhXcFZ|(l+P>#>LQzSoc9?!=49^f@m$GO%H&t5~1tsqf zA}}+|2&BL>($fww_si6JkHJnC|3^|4p!U=*z0Oq5>h84$hv@JHvX_k1?I>;8(!8`g zc$9vS&P!RSEOD2bqtMIb=im3^1)bVN@h50sZs190o!azgNj3-j3`sB%gX0b(tgGPR z-;pXqm;?~F7qPVoBf1|of380BX{haY6X)CYr;k59g>U)c(%O!FlN3dbW|^TT<pNjr zXI*qZe>vlaz&iwt-MB{$2sU9nM;#6Bn+MB<ndlem9DpM&x?E;(QT+w(ThDuEW^R3| z9Rex`seT#J;gYXlEr;;YS|?u!>yq~P`tZ-#n0<16!+yjS@(`d)LJKAbOJnZnPxJ0E zc$QL52@754ihbNYB_G&rJ=c6nvB<#%H$lc9$IPY&4wuPK{dy!N;#+cj(l7@%x7f8w z{Cc>ncUIM)cH(&VlSUyWBqG6h)DdXoP)*kHE~~Ab)ks->7>alS5Ae?7U2N#@oByKx z$yZo!)6}AqB6|dMBl_^T;h3nH?fvj0nAeuJn6TXMu~VWw0k7zLDFT`6ikmT_RmeAP z?AE%`y-RW~jnD{=(ajHvU&CUMdC	k3?L;l;}+t$F)iStA}pTY6*?sbyqBrk3`!C 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
gP3ull{` zrkdsVGafY8H1LL;-r`q=I{tpUbay4XAUzAA-+cb$o!KRdYoGGVW{FJ_Xbm$@l#H|T z7856Ovq<>Z?tBMI@sZk9dBn4lHh+y5{Z83%p4|{WJBX8CBAj=afHVwZ1U7de9n#v) zWZY$_>uaId&pf0z#yh2gE9yWAmOdiLN}+zEdaD2((tZ9aS@7FU>Kc&s&7<9T@UY#D zC}=hf0eHmI#3n7k`*$%uNT5J4B<bveRd-ZP$3SW^WGBAc#ua-}=yYA=rOoeAfuoHl z6Jl#TeXahb+1cf%unbuz%vs0)X?U1QD~B{U|4jjPQL4H<YG1u{V2c##Yc*6~+wWnP z$q2R;qj3})i<y6pAq4_ICCdQI8*`A3iU!avp}M}0LvrRNPG^e8V~CgypSc~Dl=bMP zlKpusE~a$C=A)?2kN>X)!_tV%m%3{xv^WTI>S33ujKC$u4^*56Z2e|Foapbza`Kag z3G@*nMte1_?*s(|_djG+jij|g8u4dH{c{Wg5?Y%vmR*m~MX{P7rYeg3(6{7x-(px; zTiWagt^9;u0o=B86<wBWZh50)>UPv>VJN(2*Nz%AXVf|LFT>xWl<e542MqX`e=!H4 zNV;k4aHSB9!#7#ZH${HVp9mMFy4a#{3|2Y;_`w)q@W2N35e%Go{ug6!71h=keGB7G zaBFcW6p93BA-G$iK%uxh6btSyfkJVL1t}CME#Bhp?!`SoaCZpY{Qlo}AMP0U;XdW$ zoQ#Zf#@=VIwdY)GPTECGH=kVD;LolZrnbT<5MYUKPLFgR&==tTAX3g|+g{>)X!DVj zVI+9|LmA}MrY76Xkv0W1VD6$5e#FoV8VGhtt+`X2#sp-45^`Vc8Q!e=nK585Adoc8 z#tExhc))o&6IE7A1`RMBV2i6=$R~8)MuB#}%BlJ7g{MexbxBLwx*1T_fPS0)e(r|O zuF0uglcsb}(H_1MO!xwRPa5M|Q^|<?DoKl9g%o0yNu)OTPRRW|fU}ctk0VLzoE(<u z7zv9W)F*<cdPH3?4>0{Cgr6WWIh2&WC;H<nlSElJ=6%DlR*B~=XF85vBtX}XXrkHr z9sGEo+t=E9Hkh;0wawYn{8=A8B``w3m#51-$WvRA_ZZlz54dL?IrtgGekIV_1KO>& z9J^wL<>%2rt_sTgf_xcxY!C2ZRcf!mbx3ST)_*}Hw<FWI6ErUz7ao|_k=fo2y45lX zY6$KJ-6q6^Gwg3eA8Lz)Z+W>Sz_}@=WSd+S)SK(=tZwI`dPd}rv2tob{n+WSR{m#r z`XR^DqsW2&Q+F`g16#~<W6w|CWYDE2a|xfNd)r&=1(D&*ik7r+H6r(9@;X6QS3OJm zPIK;-u{(p8J67n`e;*ab9Aj%~9Yt-Xp>QiL{+9=aw2qr{YIQzr?0MgDuuWejrHqs9 z0OM_iZ_T!a2b_G>+W4})^=U8r_~3pVG2s#c7?3OG@LEsK5e~1x*-nD7SyyfVpT0Q2 zi=-z$1vH<9EB3DUyHL>7AMW%IPJN!A1@C~@$PV`_|HrCzB3__?1<eY<KDI5IB3{<w z03(Ijwg&jPr2{BjiFLs3CKkiMGE}12pAyBVmgg#_eDa!1(ukEoy~)jPZ<R$+7ukU_ zl?hW;qfayu2YO(CWss8@0?-DY_)Ja29f$rZIyNTWMJ^(_7N^9d#ipkNBbZ92!2>_q z)ATOyats$DZ6nrcl4X83ZZB|%aTbgq*%3Bz!f#`4V*vSuQT1Zf!V9_gzbm+F8E)@b z?+GPIdkU4PzE5Xs1_$Fd70D8Hp-avTW2@dT;UCWShn^<tWK?TK<5A_Wb$&4^b#7O% z>7}36@-;h|lC@-4Cn(8#U!0-|KEFd%y$>Y8Vz2zO(79JZD|k$v-*fx3l&;VmGx+P) zCy`e@YCFUS{f0C-zmoJ;N`PKj<rOYgjJ*EWVGKTG5i}%W4~-YrIA!k%-=C=Y4Djky zKTAa{FV@J$okB$yv+_;>`#hd-H-dBe=}#isd6wF6Uu>O(Geferu7U&={$`cP(45qv z<EoNBnPFdFNmBb`XYb&kKRAxxDxVR2vs5v%olMzuBviAWd?$XjRq2te7uos)HiS(K zc;Ehm>>p%8vHc}gaR6gaBp=Grpudf`0R^J~rQ!)PDOA}ROmtd$%gzJ<qbx3wXjn1e zY}7$~b;5NT(5o26yYY1~j3P@a`5U%&4qJ&R>RZ=eIs7CL#0Bu^$JW@oco{8{H;$F& zEpQX5Tj+RcWo{ACSEXO}M=}cAqDAcZ7+>9VxK_5fgac&(8xsml<y+SI&&sHFbB`X; zbZ)qHFp7qD)ia5CoH=&Nu%kp&^R~Gw)MZG3i5u-ekeFEvhr>?za8n3I978w!$hMB` zT(Tbg(ks?gM4lX0$2)Y<ndgOfF-S-9#Z|=m3anPr(*?Z>A5qLR_r+!xrU_Koqfm3p z?loUs87U`*pH+Ctj6B?_#k)~#=tNsC58qJ<KL%AYxFH+KTwGK0E@&^?|ENXYNe1jp zzS@;UeNs$I*#QmP22+OE*C@K{p>{#X-Y<{rjVO_tK4zvuz#>{H-PwzIXLm>vp>_wq zxmIm$%Xw8Eltb6tl@l}oGwEI#&0&iNuensAJ(e$*kElAkY&kv^yH*P2j(l9(ajk^& zf@?IuIrmG#2C7VBhhKs0Dx9Iu-72pQci20g<%AIh7sx6Coc>&uEmmm*TBli@dcY8w zaP5`#DoF82%vM5`5<737gf?Id4SLtd1b|&_bO*<#JVI`_)Y<z%qiflB3v0N`4myW< zwa{_`;4xB)KJ8AdUgpA_gB5J^T`Vlzx}@K@-Bm>(HoPd{n}4HqZV#Cc%w^S*(vOXu zhy_wu^6xeq%MvQq$O@o`k3z+ERMm0=Gh~CKKyqCCjjhE;-Ih<3La_%A2KCgC0Ywr3 zNj|V%*8oE}!SR)Abg6hqZL}rwq{iAf2>@x-J&+06-<C|*VtqH#Y78McGxXiPu>#k@ zu@M*I0RMU>z<GY}f{7<7MEqP4Jiz_BW5L82$sy#xtLk-gkq-un<xSfGt_cVqy{>7{ z&zM%Tp-hMQm$*dG^dIp;zPrc%+$3pvox&48U|!<>@w+Tz{ktK?^f`VdGOoTKel&%& zEBJAw7Dda}`{;W$6rf_P{-bMxc!UapTl-&qgE8SNRLi<b>O#Kcj44ccl5gotl1F_) zX@j=(sq_xo=BE#iYb7-uOs*RofoBzED!gZq^`KjT`M#^07$Yy8Ybq12$dfOMpeOZt zI9y+&37Zw;Mp27=V?qM+_+1`B(Sf-P*bY-^uDN=|r@pv~>lzIl9P~&W?_a$E4pvf( zs*<}!Itf)5IL^o00}&&tj7t)9vlT~^toN+Lo_5RJ(JG=1FqHHY{zHji0($Dnrs1kB zObE7@3TMh;{=wk^{2_Jhhz?kl<YIMrAOH57d->oEHQg}Bz`jV=Aw-g$S3ng~H`P5% zAg_du&^7hPX$=^+j`FVRRDMBt5Zp3MP)J3(Q*};7O4&M+*y3~)iyx{iM56S&qOx{I zL~~&k@=E8Fznhk=aXwjqyY|m8LDBHy?ixkw$i)9<pPk!APVv*p-5RJW+aLBj9UIy| zjWpXZKQ=Ui@w(G}B73eL2>P@5G5C$AupNspA2^bN2o?QKnNYN3-#*U9Krohp2GrpY z)Dirosfa`_OqWO??`qr+?1zsGW9~1uylodgg3!+dtEg4m6|R~!0&I2&E?dbVAX>!< zB3G0}<xn&o^36j~m{TBqU*#5|)C@tF%A3&qR!VY<C)#77plyu+kyODP)30FtBNaSv zCL|=qN`p+u446rZSD*Pm9H#{gY&`M>cvT)<ERW#_WYuG|skVJ`s(r=Z*D&t-F2Lwr zN8+IEbTi^xxLdBJ^C{tS+btzbLh&B0KBmNc^?vS}?Cw@=_{&+}HVXHL`qoeXRPzw0 zZ=WW4k_ubQpMQW4gHxZ|le+`vU?xu=d0)9sKr#b%S8d(jyFN_qU^A@XXEGq%bL+`+ zobE(H*}P27Bdx2se<xwU%CAZDi?zZ`@qRE9waUwt5vn1Q4;z91u6WY_fgjwihDs*4 zcRAfkZ)i;!FujFGd;{{04#*{R6e^sKy<eONVV+s5U04TN&26uioc{c5>#e{zVBQ94 z)b?zGUcy<Bd}|DJmddY1c+9@FIj!4|Zu7UX84>x0**Fx=nCAyQ>~?V#3`VCt+5q18 zu_X8hQg5xBLg5;fl-QE5NA%n2+-NKDp^wt3aD3=J1N@{OGz35Vl*3cvo7E#d9?_`% zRWvZ8BhzFQxs$STHAq0_hT*^0x}dXXTmY|Vdh9!~@xf!xp1~lS0|QE1ubdHoON_Y_ zQ4ASqxoEvxmCN|WPT&Z4UuW+4`bdJ(=6VT=ZIA{DAjlMT>~WL}5X1vp_eSz$=&?jr zuF)z1vE7e^u9Wq{<I23%K6Acm_X0f&ZBq7t0~IE<1G9|op!d<;_t^vXE9zShfu%t8 zmDMbNA=}&QS+NG;!C%cCE15)XgycK19{PuKx4RzJ8MQ}0fb}BcedbHMyjzYh9o!tO z;<^PV&_PQTc&>IX84ugM2@l)aNhtxj+jfHM0lsgE5KpYfqrk&)R=|1q&gR-+E3$!1 zKf})L`E?&t%Y_)=D6C2o%htSz3t(PEjNOR5UpCHh`_&w{gc0#pJ_En-0=M~bH!q3W zwI(UHXgRUV%0G8`A9!38HROrF-9gOye3r(Y4{&}h?)-J{0=Y})0{9hs-Vo)&RZoyJ ztA0YV-Yt>gT2ugZkjDyup<QfNZmCL!EJq3N{z8N9Eg^qyvhy4HW*H>p_DegDyXjSq zy9u^aL+&2z0A4PrV~3~25LaCHQ~W1-wTst1neA8?BC+AQjhQJ=Gn-rhja;qfFJS6Q zIW@O)ae(W0Ap4!<I8#tsr@q+HB<*G*4YXIX8`^hZqjo;BIbth3QkX5g2f3iVM?D;u zfgWBE+n%TNO6P{w-r)q1J=`R$Pw<?+8F!l<*QedWer%h99x>z~s}CYUgN^i%K&gz9 zn1FU(-`o=CaGqkqKCI6R9BFwd&xJz}HBef2BNYtCWp(Z>9S#y7KllAP8%tZavVTrH z^AXGTvtUek<6qF)RriR>x})J2SKu7ONaj*nPbY%FecyKHnjdiNMG67RpxJKVyo$fr z7P~R0kyrC$>){)r*!Xcn-<e(JuD=|4%eiz>vG(4*5aT7&FQ|KB9=1Ewn?&OM5;pYV z4!Q4;kdD7+|LTv3qP^OxZ8Y`P1XY+KspbUe!`0hJnBP}7(jBuru@Hd=&K~nNs?8t$ z83^BR!`DZWkG#N6jjiAUr~&cLDhaOJ?j8i3yi05=PPb{3r3B!C1J9pjprb(8x(K$& zh_oz<ZPrfZR=$2M$nF?pOecyJ@Miogw0uOLR_BRej0@1$DPvB{m4iI2Ja73%syqeK ztHFipZ|1X)yXO)A7*Kv*8#1R88xJhdi3n#;?ab^)enJc)QrJiDFIf9=q?t>Ua8<;7 zQEYKpYPA$}L2??Tpx9;PTU^7C^qm!u#J<j@*$a|u38@{>N5=Oaf-&Y)eOl(iI9XN- zQ0zb#Xx}xORx+fP@E0-Uu2(Q?%zcX85gpFEQ7U-_x=ll>v<R0g(mXEzoqYlyE#GJ_ zIe%?^oYEXOU!R>mX;lW_|LqC)rf=)!X-P@CKkn=FXYg(juW9Gd@xwlTYw1!0wVBEm zq?&(nGcfZEOdfQp+y*vX8%HA0D;XwFo|72cf;=z~g>pn;$5(|cO3YWuTZga2X+Pm~ zsVL}}8-@Q!H(MvlxU3hd9sHoSpZz+V1VaJuePn2XwuNkV-#3Y&rWFgHj$+|1*6<K& zqk@X@>yyRz<F5wdRt=*0U(9wZhWrLqE4uE6(wo^6?YI00-u=K!^1`y+J+VnH!iZ(g z-)C&|(%0x>!f70Z8vi=0mxKEYeH)u)i)o>ndtPDpy8nW`hg!}(;bigj4>iLB&8(Tq z>Z~l5eG{1UXQTL63e~~Z`|UUMi(mOfbXRIl1k_e=XiQs$3)H;8g5L^Eg2pFZPiID% zGGDCy$(38ydJg%HO`S?OaS@Z{?xL_An8LiIhV{fg<OC8;(((!HcWMYeZvG&cwebsD zCu<Q<!Lcm0BxtTi65$Ylzjs|0kfyY_+BO2I$5G#F$uk!f4&{C4C=i^Jpgq@F=ZcoM zJYpN*)>#B%_kG=?oXhSFGl=UBz&%@7`F;HX&@P#z^&HXIx_4yR(zU$W;}v;xEZuq@ z;40K)?LMytxENfhf9L#C0I=j=?=~MLHg4<>>061*9zFWn64T--^yJp~1?*o4hKk+^ zJt?hxY+ZvnKPfa^Wm_yCd_|Vpe8Z_1GIW1{r-+Jje)ShEC$C@PURZX1{^8nA*ZUyQ zb#!gWT;kMDeRB@0S84BeT{T|!;uY^}rB~W0wS7bw^BrI5;VB|$wtyz3^%p+751t?g z-T_-=5{qX0-<s%4JBy!j5(B+dW@Z=v)+@bc<2H2>*WCop?e-%)n4AXH%8t3|rFYXF z7GR7W^7VDD`eR@>--y7yJV~*e=^l$~p?4%}FmlEBo5Trt?x!%u)wCX_T%BlSyc^D; z2e|Fbb>A$H{A8#B#ZkrjM<8Pqj8V5pIF>30{?=4aj5E9zq(=$?t+If6n8-k}?lO|; zaHIgHYvMR^VWr>XG9kPuB`&$6-#qjVGkL#Zmafon5-fjwc+IHj3tJv`O7wpY8x=jx zzHNV|ym?}Aalx`h(Cm!y?!a<8J_1;v_ofLCfko4_TdXN5Vi3^rbR=l3Ury~pJn7`- zP50xcsowcNhIOM^OX8#dPAR(_l&Ok|umR5~5pj%4YuXm6Q%gtu7(^M+sb8ag#@C+! z&53Q<-Hf9`T~k_~e;4R}w!gP;^R7Cu@Am!K^GY*V>mpP@z-^p$?OVv6eUrEC)=pLM zN}LgbYb89+Xo*+z+KJP$U+$YkSMi>X;GYueZA7)|(li0T8&L)YyQOQhsu*cAHgNC8 zoYIxbS_1tJYnF&a!IHJsmmQn*<*(U<#<X_>tVLT61IDRSxj!ozo3C`R+Vw41u_sJ2 zubSI5Es(X6zYbF3w&X3iVi7OFl1E>p?0Mj_!RILMH4xxd<I^=mG!TIzwVXq{6qP%` zZ(?@=aC*eJ&HE(LkoZ2Xxukr`=YzWXw%bi=*hVZqQ{Y!2d}C?)EtP-G6NXF@&BTus z#})i}2W6gkJK+h=!%Q(k+DCPoNK`JpCI(@7yII$e>~rAa3>uZLASlUZePTP_u}}1V z!UD_?<t^`Jimf(jxbPi24=8OPv*E5v+WIOADZh40>^^bz?#9SAwQk5eLE^|?$>Z-& zX_gNzkRT2I7{ZTy!+ALzT3)-h8HAkTW_dp1i9<QLjU9tQ4-mu8TK`&w5`u0`iIMT} zr!@oA@AU|KePf>jTT)6-V5|WCJ=e+JaW+0JEAz-o4u}Lmn$xjBaJ+Z)!0R@lIww3A zpiKMrc%2`=8(K~shpeFj{WimemY3?&az!GeNIt8YcRk<gL-T4EZC}xi_XwZFZSy{9 zV@}NtSg3tx^24^HL_;@PDFgHJF(g<IBW3tza@z_ws&Q0hYRgRD)~)7JHo(hQ&sB{c z3%0(11jkChfKRtbg?+#L4o0IDhsmkYKl&bTe@JRpT%JKr&*^~T{*3v6ahS>Y5Acjj zRI_3+2=XK+PP@TMWIonrnp1nthRkpnpSOi~FMuU?**(&dtZq}fNT|z-ja}R*dfKnE zPd>K0sc#m623=q`S3B^}_#gZZ;q|7ZIqC{Dugh?~kF3%I!ptNkzsgGPy6$2pb`#qo za4&Y5p#PC2;(c43J<`E!Zc|J0px-Q+&{^JDN!0iQ7iM;UmY$ER%t%d*i{;_=7ufz> zJ(I!Xu&QayYm?~OoVR`EiaashWAxxUfjb<4=&ye0$wU;A5@{2Fb}XoQM*BBfoOQoF zhJB-I$Ts~<3#%tl6W!vV6+r8v-CRwaOzdGwVNN=MJ(~v|S9MEOnyAu=Hw9g(U6`jY zJ%%+`bNEif$?2r;+1|1JGrx#WrQW_Dh|@H7u};i=Q|lUE6<BslN1&O>L?{U<TII>@ z{ycZ1-efG6vykxqkbwjHSWzub)P0rdK+}Ur`n_}b6HXtW2b_PX1M!_E$fzrCcp#LK za0=~XVkeUDdkB9`YH4fdY(2M@suVaZV<U{cr@6Kj&7amC0da{nl03}tJJk$=6#ai> zGZp>Ih3-k}dcf2;F;m%idTG$OehzH?@#oKyUz8R4IaBAj-mD4Q>=PS-H_P_>SC_(z z3ArN1{@7P#`r(_SxBQ;imzuj%{d-~#n$ItXG*SiDM3oRYk)?S)CSJ!yTK_Ix_u;+5 zA~^dja_Kn*vOe#pRS({To*Yz;WLzF|<_{-$dD1?i;<#9AH1+_}9?BEEK8Skr=A;Gx z`L!!+!r3>Dc|9=w=ugCyL*f3*+)3Tqlg?V6;mA)h09kRe@#WaO6*I(FT?{vjmnQNM z^o&Z*FwcpqZc1|c`=)VSE|^m^@TJruA?p2!voYu{??PhkkD<et)&=d$KpqQh7gvs! zh2GW8<W)H5wT*6jJ)qISf}59wr?1;1k%yO<Nq3;mD+10n=H;>1QH+j#<J0plHl>f2 zTWy~!@lba6Mqf?|y%O&zK@we=p@sF;S=fUZQVA-Yb9u?V#7xUp3dfZ22zA*-dXQMK z>e~~_)T}-wMp_o`w0Ieg=;h*lPF)<oe)Cl!Pqys`tg~oz!M`7E9*8VZupOycMu<dw zo<D<EO`H;BMDfQud?i;%^K-hGjmo?jykHY*aM0t$!87Us?6T$m(&sMl|JvvNPC!85 z|Lk*b9Zo)aO;9XaSyFlyqXaog@87lEjXoA1p!H~f&JRT0ODEK$KHUCY>yUbdXmsbc zBu*wi)uz%i9D7EHQe0hk-$<H%n7mX5Q<Iq)&J<Bz{{?u-FWhhF#l7pUONesvMe9G) z2a!+PnVY_~etYQ0{o5c)_6TwrjwaZD9Y72?{qlim61n<>EPKpIS~9j5`kNWENxkTu zrx@fn3b#tH>8iMv4Jc?T9a^s9^b-}lL+bU-wuUa-yGzs3*(O5F_2ZmaSqr@>>JYM3 zVs*)6Q;gajO=6)tt)fg{mlI@P@YBy<>gLldlD-%Q6HblmZUFZgTX``L59~m3XNmV^ z^cI!wGA}02g+@>H?>%ho^i#J{pYGtnh~VePgy5&~-vDFrzyI3%8J<p_pKN!tEVxSS zUpyZTEnpf+l-=Lh?p*ZG3h*Qan{FZ=bM|$H;eFIQ&oq}Ubnp{XEMLibmwz-8qvN7) z{Uz#eme>C!Cg@(o?#&jr_Cbz}O*W2}H_A8%;6HyZEi!eaQ$iQXR=@5%=*nwVRw|7` zYy#z(Bo<d!wErUTn!SD<Nq*RAYtMtk!Z(9nFZGW*1%Eqw7IyA0Je2fyuX}0We3ZQ9 zc(VmMzpydD_GQjv9}fy@|Mv>87JS@u^e75T(jD%Zw7*;CuqFCl5l*}6FIEYEe%VLl z#uvY1nziJ<U*kqS=gu;Qs4Bbhk^)yrp1`)3)%WdpzP@W6Y$@NVSfsrpMVWz&JLv|u zawfDe?07k^cG;4>gMC+r$BLSy`?cM#T|J49X^k$g^&JmTVS7B42%VW<Y5clpE^&QJ z9{Bf(dJ|Y-JD0B?OyFLl0^1j#yLux$4@c%ZT@CVAD?#)hT{GHAg-1)2X?I*-u?I8e z%KC>f6l`tr-U(lhKM3EYR2#)L>j8o)sZVf?<{2bQd=%$p86daJx!v&94tY^2q}0j8 z6CTg1XpeUg0I|^jJ*W5f+}$t1{ZXR4_#lP$zBZ5O-)DYrnA+f=b17)4sL7~yP}{q! zTs#$ew4ZC(oYUt^ue|N`H073sE#KTJ_G@cPvJ`a7j{G-v26jnKDk>Ps<A~3gSANcy zHlwdL$dH12`q?1ISW@wUO?YWA;jEfE>R(K{mr1|x>LfT0-vbK69~4%Tj(1Ircc;B! z?QhWR7nb<v8t<NDNy{w^N3F`c1?`Ycf#7fW-CmSP#QSFG#b3*96@H>Uw=r8wU0yWI z93SuXrEiQ~^8HW|ehV7UHgJZUa@SupZyib=3YW`{%0l2ALM7YfL-D=mr|8PEYx6WX zB1g}U!ul^opL!YeS|YS<r$P~T@CFIQ1yMP)%Y`&t-bW8plK=HozPcBm(M-v>yUZEa z(KSmYZMPyzoF67^Gr%#$NSo)x%)exA74@&)U=%e~k$q#@rONN}%G$G2<5I$vxY>g5 zIP0*uRl#@190#B23Z3O@Vkgs^!ZQ=xYn$4KcDGF}oLYk!(lhQ1oOQk>#kGAFv}w~} zyT%@&418vwia2q{Ti9>K$x08z`>7Jxc%K<z175~h>X!2+Og0Xq3hpv`zBU(}?^Jdo zvpU5JO$r_A>X@*xFfO;$dTG^PQ$;2ihq~j2)A3wTQ1<xy7dpYC1eL(3e^<WG*+9PA zl=g=`&gLIHZ}jw!7t#-?+B?EMI~L9yxOztM6kl_@`9=&C)K$|vVOe?!rti8Df`V+! ztA65<x4Gl9afjwQYwS8%Fv|dc#%NR5#htK6yn<90e;4X(`BOFF6mvX|Gi|5&DihN= zS$Ll7gMlJ<+*f5<W3mP$l={s<79Gv&V|hon6#M%6V~CksE=ky6ZWPAkp^14-%+fO2 z<*yK+1`5x8g=PrJRb0n7lcRDLBSEHahfsz#3R#f+I!_q|?ZrBO!qCP7h4Ej&F+<*I zj-i<YGsat0RP(Y?KUobk_q&J*st*o2AHvYa85t-??t7R$ytXYUv9fOyh*deC$-3+= zo`o@L-&VQ&3NcGYjN>j>vNe-}wbw%h7UaW9Fy5jJqP?Wa3DG%|2>no_V^&*92EHe) zye>ymzbepLW9ulr!u?=Rb>RI?nmu3NF9qe>i@fDG(F;->9X+JP4FW!xd_`?q9eh6W zDC$^*9cpHV1td?jv@LFiF^DtVhXi%XTM|#SIu|KBe=W6F{yJHV3OH<zt1S5^68JVA za7qwp5|>)#UE1FW^H6l*@(x!xFEOy{8h<{Ty5#_4<lPoUL$@)>ebD0Pf-Q|{JUg@D zpUXqlxumy-MYsjZ6FRXr$i}0O(Z?4bQQ`0h3@>(@&RcWQak)1kHy3{xX}dn5woHa} ze2u1eDF^{HnRc|rl0?7P8~R)SrG_k2VFrd4f1$rS!Fz^hWu=LE`pw4NLLG~i_b*a= zpPZ5MDMIRdvt~$3s6qZ)h~r9#lrUuxN+a_^AX?bZ(^1X=E-8iY+^S5jdLbDmucC3p z88f;@a`vY25@)n<nG0`QP(p7%gyF1IFUT`ikjhy-M1&Y$enFYMpa^yELPdR)8<{)C zFcL;~Ot`#iIrTx!6JzYye_eM>7N$ox`r3?&;@~Hz^zV}QsIwxbtQ|G>S&Wp@)t;3& zRX==@lY<k_GndN1L(ivlg}ure2j|tjM2lG=8Q56ijoC)3!YQjjp%<g-MLR2Y%i$NV zY>|p1sgME(^s`%u*G&;8Nilz~JZ<ovgGdTDC3USYOQ^|@pO}kR=%ffZZ-QCg3^NWl zqi;Csq9HC}VQU}3j%183Z*E^{IDQZ|SfQ%oGW0Ss3{le?5-dF6vUW&ynEsO8i2)`f zTY8yiw!_C@bBTBLTXa587dUt0|0;VCCEVL1C&zh7?3l~-h}zXjD=_07;wh&DIC-sJ zRTF15VJgwxW)yx<-wgvlqP;u}@v&-g2>wTPoa#t)6a(bPaf-FqOQCfjHgIn2RgvCJ z5{J$1tP(&;3tCd8Z{>4MOp0%Q<eIfF8xC)}dR~3ts>e>w!?YPzsrA*z(kt#3uc+m{ zoid2_2K7iyFXlxB(h>d@P4z8qeJLV|Kuet)eH0nsok#zQ=|?d15=<XfQME;W9>~Xc zYPWG5X%^LfuE;$}B4$Nx#3dr?DmmN^{dm*<HFW$=l%|)P$7`g@)WX_V=)o-zEb;?u zy1N?jOyg0GViGQ{D&G&>|ED3S#4|q&(YY6|;tHQg+i1Y0*AnpCRiod_I495jnf0Yi zNSn<Fd<G+HlkKuoPYBMO_*49vjWw>W^t_$pQr_u6wGu~`Z^7V4;=~fOZV_-KH;1ED z8$YL<{E4p1O69u?*-p9*{-1wcX0aW}RR^mQNa1PCIS~w*So(|@K{L#2#`x3RZn(>4 z%hIM<s?v<|=RmhzzhfgHuVYq`JwI|9&(S-$zGHgD7)`B9G!%Z(jB%;Lk7qH{rajRx zwh$qSJ@{uiLH!nhf6L0zbxilfANo>)HRIX0nz3(2B_d}M*nZ_JoiUt_BYKd_7CpH8 zE-Yg|kHRZA<~{Lhg3SD#l^DU3Xc#ybhRI*q@O8JHcYP#NH(%UZI#eu#3YQo^SSH`h z6gl(JtgJUNX%>R?cHi3y%HkzfD3f{pEPpHgV_a|Edh=7*08yI)vGS~8gz>)atLV$~ z+AtiL1lMUaY3Q008iwmxm{G*-C>jroI9E>}+|~L>);5^7xo>sK@5-(IxFJFre9Q`2 z96^RJ&yn9PXoc2mhMD?Y<2|J#_I0>{iJsb6I)5h}KhH8eSd@DH=C~oK5S*zgwrk4P zTQar%<oRMWf0v9}+n6-Pn|-A>%cOgYPUD;BRg(7hld+8FC~o*lX=CQzxB-?npO6Wb z-nYq-zp(qDoigW1fur1_n&n!_s=Qw{C3r}`ox|&3Et!i*H74=8h#k5X>@N?f*}%6s z`lzFc`umBT==Q3TSR1{~3vN0F<PHZ)v(DImV>;Cc2znj6%g-2PuV16f`iFY{jsM^j z;(72huqXo<M!?nxq505YpfHY42CAx)tT{W4??Cm-AcQ;}TC6YURK?Sw3D_(<zF@HK zQ|Rbj<WZO%9qkjr7qGb^6_EAd{JeDicFV=O54tii5Qk?oa>Vh5=;&Nt?Kjzw{_3N9 zge%hpD52s`TerL2(sZeLvNBhJvP|tM%$ZKPJQl3Bpd8Y9P;~8P#_&oYDRQwn;zBbk zqOIf6_vewU(%q_-Q17*;)>HHNL^07vVCaO6#CtZp)$AX2C+l_r-`q@ZCfh7O_a|oa zyx|Ndt54}A7DK_ZM1MQ9_-PwRiFiD7dN_Hjef?v^VW)3fGPsfXk-sJ70nPo0QqsA} zgKr+wkEL)Lvse(lPz@Jw`IVsN4JupBn}ix<29i72AT}bA7CC8c^fUk+y!MskxjhO` zR1%I8!Hjt9`z{;MxcY>c7;}eDjHR6RT_vg}tNJbX8s+(i64oUolt*<sV9q9Z3sl8W z>FHu;+EZncBv@|JHvA;4GWSXK^dv7NK#eQLCjc~p%smw3T~Z)3M<yLcYYEiWnE`R* z0=^-CjYB#oxp)NW??Yp+<VR1IFaHL$R$5u7I%KzA+dTVsm~H>P#|b|<w3s1U_g(od z{zsc_)=T=oZ0SBWHn0;CfI$yg;huQ+ZJLSUL6$f@GJ#m3iwY4&_P%|j1r(9gx!XXV zlWIN9BhS8_#aOyD{;K`bzM_4QcVCu4JxDx<^db9kak|YGZ;%(;IN7w2%zH+H`A%Ms zwLMy4G25Qr;iBECq~z#BnYAyZwHp6cUBjf;dpgIO=1;0oAW_=4S83<o10S4354lvx zirYI^p@vL<xXj;Nn)?e7IA9JPuBke;^6buCZCi<MOTE9}$GFI0xRnD)L}I$1mcWs! znd{B>Y}ck^_03}l5%Wdbn`}M%wT}kdo8|xFpe~XfC)vrT@d2W;b4%@5Cu1YBpI30d zXPu#J1TGH%6IQLw5)FxfNiOVIcW2od1BHqLx)hDEjhqwabhCe2V+WW0q6sY%U3nh$ z6@)LE2!I2;Il%X7m^5sC`-~0;EvgTVicyVM*RVME1BB=Q3_{F`U~0G|WndUgtsTy} z89u=y6i#QTh_!YXF?pfM;Kpb7X27<jsxHAQW5`QJqEmt<Yqk-6sC!?y9f3O#bBUj* z`isoMO66!hVnOTJT?vWay!F(s{y|xG@3dV!=Vk||sj6+!Ta9}VU%0!Bd!Pw)G2gq2 z^9RkP388!C@~W3m2^=4Pn)^$jH*fZ7`_Jze6}E;Wc2_qxvKPo85Z+ZMVyF)I?gS6k z=*6*A&oh@e<})|^<x;F7<8(9q()@MF&&sYaW#Ni24zXPc-roTAbZNUU+xaoBf5P;a zaq(oW)z&`Z9eob?bxeUK?koB{b{@eO)(8gkdU(-s)uV`?eW_a9+5i%yqQ!OIdGDO@ zr7d9Ip1#EVOv)iudn4ce?<@~@rZUP?voy+-W#ZBOV@91oJ!L19r;u`&HoXvdxs#d- zkNjDR<vyU+RHYYprJ5fb=5+0RP4n4(H_5<G7az<yuO^OfX*(8*hbso&0rfln^8af_ zhyt-T4;@W5sZvWa%?LEu7}V=mc~eE?O+5Sj^O(G@s_U%00%vqKbEYeKG>7uWd#y<~ z!ucgPiA>|yfxvb@nR(`v3PM~runoojsLb()C^f0tAH-h8F2ZXT^kac~Qq2bx4W8Z# zlFFw+eI`|i{p1k!3SzHv{BEhXQg1vn6f1QC94o6-G(FH?DX$wrRAhB{e$4ilkWoPG zq9Nwt4A2Qq=EcIvs4>B)$c-~))uJe6E6O;L;*YsEaezVaq6Mud92HeIvmP&%MGHR_ zlJfnP)$tUj!^Sb${P8}f!xG|IhK(_ocpcS+d{=(ZiqHe=uM}b*SK6ip4ee_}NQnMl zIaDpb7t+OSYb<78v{?q;9#e#_u2Y~+Pojq2JC~uLE86Uumx}X-a3`4xF(&S5;T?*c zto93_^)l43<DrWFRY(jc+mycJU1eEMVaKiU6eb|Tou~0YZZ@Jd^N6>?45jkN5_vS% zTAA0~*y5!BO2LdcLbyNTS40{eO}PrB9pHMY-2B4I*0^7YD6(+d6W|IkB`Xtlo;Uep zLS09O_$Ooh33k0GgJ!H*g@^DO>@=~n%Npc}lea$k)bM)V_cB>3T_FPVfG7f^iGqdo z4>_{EZLQ@y<t}MLm6_#i)7DElIhHZB70qNGA4!(<Du1cnf|_zPv@5SW2?@@Q(lo?A zO=w)4CW>qw)qvj6cS_<Rr2Rt)9!#!e(3o^x*rpSj-$<qKKJy^5$obzHjZDZGSoyWe zeG>zDkH$+#K{m^L#W;5eY6hmeUH6!k66)bUmB=>gI=?SJD{jC2@(4Y?S;U7~$>K20 z$ZIWr>QtltoE`6zFhQ<ud%-;@BQ&p?qLa}#IMWfWyF}?^U+X4nE*#eO;+R|nr2d>` z23h2~Z2h2yjUkBQDXGX+q#S~c=`di^sY*~u`P)gI(#Ik*a?s?%t77INlnXPg&ap8X zjDr_;nAiL~xD!q5o5-U98MMn42*yFH331PQ3u6cs50`8f<Ds@vRZ{w&f*@22=o_@4 zTk$YQ()fQeXl+Da8AZ|ip-ia${!;li>6SpoiC=VwAVdpFt2iUU^*1?TP#PLF&0nb~ z$K~rcv+QVkldV!%zPyQ(>f~U~_f&TDpYVW1Ule-m4Y?Cd3&=ZeaB(Io&+)d(tjT|* zqdFf^pc+Hl?8<xtF3nL_q$?*V9I)+V!!G3`L!6Hwn9WFwulfUwIJUQ81gaireIS_* zFfIm7@*V~OHv^?r$1gIV*DNk|R5+t-Ad}e;T2q4hytO1L=17$lxew?8GgGFCS?{2B zxNHwY6|LsO41VfY(qA;fm;+@iuQen-a^Xf|47qV)4*V#?d_Q!YKK}Zwnd)`pvMg$e z`a~sSbfsR<1>)C%%r22UAO8)WJEXGofg=)W*ojb)S!l*uRf#ljUEQ&ZbtVIo?0?ai ztKg8rYZxjf>3O_(iIJiBy?iV6H)+qGVCnUsS1ajj?DHFkR1u2Ubyn<E`a_Haf<Ky- z?S^Yg9rJ%uioD#mFf=CN^p_8`32ol(kDRrk0~4$w_fHdej#eIM29rX#VlRK-TJ$a8 ziv7aGT%vhICd3SsK425l`5Wn!?_?8P#-s!4kG1YN)}1tuFZZ7N@HUlaWZ-UX-e`(c zo7z7y_hT6-CfteeSkn8g$g76`$schpPU6k4q06}ZO5RcmP6#RHlAq61$qA`zs;=Z_ z91vE-0R`fs+RA)ogu~@f=@MC`{q#ga$r40EwbD>gO~~0aB10PW$~%O&OCqwUN`<F$ zxWG^1j8#`8!a*Ch>mo8Xq0q6A4hJ56Oz_?`Cf?f?v<f?4Op@(GOuXt;v>tCEJaVHl zOgyvguu|QS31e=J;*BpM4m~u;w+60oSlkk36xz=GcIj=c>61En)wLAMz<pFa;BEo; zbj+GizF-{@=NJ~?mJ?Er4};O5`YTK2yH-#Re0z;q1>Wmg|J@l&8G+mWaaTc++gt~g zO=(YcnMG-hoiTBon0Nv*jWeYlV6^`3VFc|CJS97eyBmp*inumq*FcVhRf+}`A<ldg zaK_}7l%SYSqIRko*$vu)aS@8bvqETbfk)_$^hXUCm6?P()j%z|yl4<=OWPYXo^~;o zMA6rCRiv0kCl`3@ZbQ8aOzTZWY8|gMh_^J4{V|M^b#R*hIaPLywiz1C;kb25GR_D6 z9d0<l;97{L@*&tE--@??&8b9@4`pUt4?~-YEyd*2`G{9>l@LPgiS)Lw5U#o_sdhPx z$((bB=ED$YeYj!ZY?5U?WS`e)6xF=XEf3i8du%6n)K0)N6|f<O*trRhe{M92y`JvH zLT}H9h{nvj2Gx2xQuh^}5?gj5Mw>>CYA%)qxU=9)wPeKsUNG}9Fs^a_v=-=7Uhqp) zVa3Y_yT_ko2}8*X*W?k`9kB$VF`mQMeT}6TImbyF?m#R6bbV(*Ir~pU@UQeNEnD~h zk9|eQ93TxnE_R(~=cH}2ZXz0wUxYh6hUsE9Ih(kzoMO!l=NMrsmaj)>eH5b9OaXm= zO0KP%p1-;V{HU%xy4#g>ek|`K%sV~qzw)B5!t=f^`}wv-@btP~)W2*Y7VN;gZ*Xcg z9xxogR8Y-6QMA4tur(QQa%Iu*xo?HmJG&<g@8;U4!+W#s^^xn3+tbz+s-hm7n~!g! zg7`;BtQ(73O(N}o^jg&RD#!cA41$gNm!wA^?K!xW`rDeZ>9AUO1?v(kz@@~C;l(w7 z-<TIKy~qW~WW<tPa_3_}{3N*@(6DaY;?DqXM!C2dRJkQ%wT0^9(+xcV%V_KZB&0J3 z39R`5Z?%IXG!|MzkxxUHu=l16`1cF;9Q3${QrCQ6m!b1;(C_rqCziky0_rt{7fJ8; zW_#d`zR+>K1K%~vMK?9U2Rt^Go&F<!O!X<}GT?%L571soRUiRxn%0M|J2f|KQ1;_` zb?G4;fYiH?gXzrDPgHAi(O-_$r0dX6W8?cDcBi#ibEVOSdfhIg{xorR(TMWMjA~&# zL+T<L_3Z8d(Yh$V(xb+CA<JB4kNGjpAhE>1Hx{CNcq6EhfF)`+$(<@?h|>?Y#h!5C zQ`Ig(vupE1?M$%sh$_zr3pYS$$?5c;Gr4J>9q4U_QyR9cGiuzP_2J!8BT#Z%xQ{a8 zDUf$Z=%n{84+V8!3tq}qV|?d&kr{unkXg<3?TbyIDv&;|l~Z!(iLlmzoDy9le6Z3F zkiPT~+eeJ$3-n3gRL$kEQ0-`?m(}Vu5AeaMXw5JrM!TuE7?Sk?dNB+jJ@1yQ@U%qk zIS680DT<B6>SD0FBXYy+l`;I&sC46_KZaHZuf;5Ak;a@2Q@bykv>c`^uw%0Bcw7qi zdHm^szI@{9!>Gk_UtNg(Y0lUAyA#TMVYbVjVJq67u^8L?){EbK%%SUbTYM*SG>bzz zbvS_Y(iCj6f$@c391qG29!A6pnxniZAIodR$w?69H3&oNH>>??oJ;N6br9+M`XQa} zC!K|-|GCg?`HbL1iYp%u@*B(g3kQomK9HWIr)wVh8mBtQdB#lh{EOtJ`l%Y8oBhk+ zkydbKbsXN|ws1FRwE5=%#LiGQ)kpuw-JsVzyFPiEgD41aau!IN`zBW_nDXcj4}d`J zt4vOzJ9Xb3-}a08v`~CuquhQi4Or{%{xwKXU$|qe47=BYuE9pqwVp~OI;t7`?izBb z1zwsiJZphyIgq4yw+p3n5Jzseuh@GvTMQ22979$R)bLta?Wpk~*BO8q8vjn0FWH{Z z{eUT&zhP(V1wGV5R<!t$v5V&Qm<OG?I|oCB(x8uTB;i5PPva}J{gaq#K}mVjd~uur zh%%?Ii~4Nof%SI2k&fhJKutXky^n+X3*U@{Yt>XyAH#}DXX<e1lKW1$IJUy+(9<;f z$>E)lI(UhQ_jHhc9R?SpUs|M>A=~k484u|3IdyhEni7W|SuM@ie*Qr>>zYgTXL(E! z$<j1`a)#?qO02W*f*zPq#}Igrv~&zQC0<U!hvPS3dQ&PN!^|5bozXqXqdeyIJBz(> z(0nZfUz9_5$#&4UO)CB(c1uj%9yAtyvc9hSrr|UX6FXQNe5w)%U8{`q#(?<XHAJ6a zKyH&BO5$WOAwHCw@ejgqY&7U*mR`KCe4KYGbQ2)yGC{Ao%yeEv?EPA}mkRHxpN!*4 zPVrmtmhHM}*9m99nkwy*+Tb4Dt#F*LWQq4P2alsQ7o?4TytDXCL&nQbv^yEP;0*jq zcj37*(8xBC+lJvS=oTCVkocOHa<U6wx7>zp4Htti%hR9%_lm+j^zYTGKZrr*Ni9ll zT%-RXpccbMMq7Yn&=%Vx)XkRp=KE%1tS=@6O1?#G**M_)6SOshypS)!<L2uEOT3^6 zO3%}(@P(JqA*3V|-jo>&x@Wd>xHDRbO*+W`)ljrsM>4C%e2Y^xHFoT=-!0Jj(tk_e zjUT+G0On}E&b{x#lNKuCq{!FU^h|1cc6J`}OultA|Kb#tYLKJiBZmvt&1}arE?Mat zi|_jySzX6omT*;-%co&Vhp$nfJ0(CGVep5y^r;Qy`!Q|C!HrSe=Mfjn<9m<pe2?+b zd%k2(PpslfQ6gYqj*s)VqGMXe##rkzzJv-<b#rSPv+<dN^zB@PYZ}K>g9DX#@9rYr z)tl}0iuzzYOT2!v@3jhIO<>wpMQ1O|nA`c!8LzR~{{vAz?$C`k8T7{&ty!oi-A(rP z&=)aIr-kFs{<{(2+^Z;7!YW#0AMv0wo9SKTjykKY8yo(U=WnIgwHg5Z7!$Z8&+nJ+ zuKErmbC1_uOo(p5Y^hiKy?Q%#T(0GOGOst#&xPl|UHrdg^`*t({BpBc8N5R8)UKY{ z=pB=Rmmp0>f*Rf`N`}yuoNYAL;r)n)e-VPEpzlG?F`SG!pPN&}W!-jmFJ%fWUKca5 z|8@SJ;5D<iP&=)0uoRl<12xd)j|ywNXBM(l{NNH>FyE#=U7Sz?GZ6jbLZ|HXE8!r} z?%`>@81!N#)qhQ3CO+1_mF<J#FJG``p)@gsLsJOL(p?zw&g0;N9qiPlei_h6$Lu+{ z*uZQYnEE@m>8g1$LEnDP*;nXbALS*{M|tO+_*KpM$Y`DuEYow5l|vuqh=aE=s$BP0 zu_~DZO+>)YzsMDg*&{neOOAtvhTO*6jM}L&6V})%G_yI(f_HmKCelcs+_qB+8R=Y- zaY_VHH{VBK(@(!16Yy*^@?TXqH)UY#V?|jyW>QL8$Bm%ABnSLM6$#WVF+2>N2BUpI zGUI#MfuvK>vQ$8<tg|4z!Kl|}{z~brGBrPWu=0*<c206?V6`X?0GbXVzTF~co7L7_ z&lOJ{*PS?p$)v^_=hGWE0sgwv7HO=bfUeT^#58Zd-DVyvcK=J`#09N-Mqm^6qV**8 zyc&~IjvQ(^yBpR*Gsm2N#Ws#^M~zqqFT7Ggvw!YfBcQ^4-;SHevn`xAVCl%UjRLhk z+f9{quL=<tDkfET=BG5w<rnRqgq;;oj4e2gT0pfPvE}u>8MW#&fEe*2<Peoa4ja#G zDUkHrS3p6!AJ)R)t7wUH8Y`;oRg$J76k&3dfk|A?mjvO^L=kSCpcV84{6**8_qmLY z3Fe7tn#`p?blheIMcnr*jM9icJIED$nKx)|J&;W7jjdoPn`;d)!J-kQ5{Qgc2Yw9R zw$LIo)3~7+lq+9MdbdOw8`vrzZBE$du1XL0HoJ7J(di!FN(%7i110lDW<H_0PvC~X zK$||1Z|(5J^2AfbB5TRbJU+JBl5fzf5|lD@01qvSpdSD{QJe)kKWiAmLw3)RcW57> z6^&{Iw>~Dsz#Fp7l=v_#t?X^yQ+?b);cOc*N*-YqdZocemIH+5dyu31n0Xq-^@en# zCq!ZWGVa?zPkiqQeJ5=m4JoJR0*ui63D%)1)GigO2FnB$)8W)tuirENo^I4z^_1+a zsC-zdrOfyvwQIoH`f@YA8fI~t?(pvx!{YZzL`7lMNz|hp->Ke3Ae!|(6TtzjppcC7 z9J?Pc!2!sJ0An_VZAKsV%5r=)%Ytp$9oswCZKsq3H#ZqpZm-14yPlt@ER!3rj{7$c z1AE^1$7ran@+6oX2(K($U{pe!L_Oa!+@2T8Ik#mcCj`J|;-_1+-%EH_v`dcKj9uMa zoSAzB<|(bF${R0OQh2nO2K+<Z*mE|M+;kX<(98Ds57KL6BaSR-6B6IU0x-U%*NPAJ zo!M35FE1`N-~Q2C*ymZD$3K2F`m+RYXsmOY3nn+ZT+#(o&mq<1V#4s7e{7nqWvGb$ z+%(H`S+@v6Rw$Gp!-e#^#VR@NjwvS9#nT(mt;*SQyy;%aEAWQx&ZZ;L$$Ib)8I^C6 z^iOo_rx-EN)r>Fo@~si#!#DPG!`b!Sa_GxOI4?J4U5NN{MEom%=XoRX6~W-JdiQ2+ z?ZobEUGQXKvxV@S^XD5Dg<kU?XjGK);40OQ$X5qP+Fhb5xJG)*$arOLAzU90UHC+6 zqqJ^OOhIeo*xAW~!Xri{S&w+{r_d3J-H$M$jrS))7Ff1IkE8_SA;jUvQ?92Tk5D2> zh4D|lov>Bc^Glaa@}I1((H)Ppi-gRdD0s_1UbvsFsyNX8YcXQ0MZD4-ccV_Amr(1? zf-W-v%3+QSiG?|tjhQ1d(4(|1$2H_P44%XCEywY^El}l3x3EPb6t0gHbu>U4L2MxK zf~DN98CY#4d-}fzzYkUbpT>sZKaY+dfdaD({h1L{dVowB2C63kt1xX^{%uh;8UzNt zw#&jN_k?A((Q29_4ygUrHw&smSM}AwiY;=Rwhmk^+WIuY9Z4zGPoF+-3<}#*F&#Yw z<41I3^2;EqJ&(>>*U*R0)#hi_JEpHb^}je$U;gZjv*}Hmn%*`3x?;RN+^y2%(|05B z<!`32*!&Cs+zv~=DGn=v3mUtl<5vS(q1ZCqt@K`3ff}ig2OBf1xUSgYq~|fxX2NPr z3xz-ocgoSryn>KxqgQ93c65=-<(rN+fXu#tPuz>n@1+A}iTEQLj~CbT;>qT|&?8bN z$!2_+5_f^=p7AP6+rTI~(Y06KwyT!at6|lu6(s8x4Yo7d>|b-~{stM%i(+51T{C1) z6^BlDt$sQA_pl$kL!)$~HF6}*Dz!+PhF%v)Kd-F}?xGtzLe=zdBRwbcUDtpx*0W0o zoV=ZpAZ%nOlAm+fkgKav4zspj--a%@F}c<9$o-%px>0uNzo<cWVXBw>VrYC0D~M5~ zQFW)9=d&-du9#WpXy!ig3#A(emBLO~8#>}|78~>?%2R_X>Dd}bMHI+ZI2;}h9BI)B z!XPY#jfXS}for2tB40W|9(>S$w1?CrP1N%lWD0_(Xw!`w&T}n$l>%7~rHDTSURpc0 z#V!r{rfWTR0S(lI1`GnQb5a4x&oqCA;TgVw-Isngi|XU0Cp$JX|B0usWB!*E)O?sE zILwPR?<lkKe0H6^9vn$)AMWX}1(|O>w<KFDe>YZgX{_6k7>QRQNBX1rXF6Cbj5mq! zPX9}8$PiQi*%~9iRw*Cc*K0P$g5}O{D{+P)F(>2gp-{N$mJgdJzXBunHM}V%X8bZG zI7dju&)rsR%R=}&RkWqNJDyFfKi2tuU-}ht9H~+5&Jv(Ykyxm#_OlWVPI&oa72@Ck z1vaklkR`_YKu<Lr)io)`=uZFCzzJ4A_6YpdUmr~qHyS2Ir%My}^D#m1q2L@lf1w*A zt#4v|uO1T?znHa#W;qndXyTpv;PW{|q=qw5^T@AXk|E(Jvl@t#d=Ufu#GPu-$MQAP z`@rCvZ<KWz>KCgnlt5@Gw>bTP0!v44ZaM0UrYpzMCbddbW=Vnr&)l%XlScj`c48Y? zf@}rS5S%gZ2_8}Lc<0Y3N%HNXl&QYNVem{@NnT8CKwKD04g2M8l;z|%CcQ-+P5O06 zW6gK2d#CKJ1W52&w=IiJy;D>}xhCFe5&ZX(%n2N}C|u^e?EtCdJ$DxMTE7a|i`PyY zDk)fqkHK-Zg9ii{t-`=DvcX#5$#I75SmmEXa;xgUob>B)Aq`IOxR$?5K?vxBHfKHJ zk$ZU&@^<W+v*SBrt>3&Y<cX&L`Eh#Y0;q2@?<G_#eCPc_QH6LE{+#)|+fXlM59L0< z_O172Nw~0gPA$vyHGX^Dfh(E!Y|Hl!;ol&P$($r~J%cYvb>t;!O1Jt%3JD4layj~6 zjJ;J*Tus<Din}GaLvYvNP6z~o1b5d28Qk4ngS)%C53U0QcX!vp`RD!q@8+C37w4+? zp59fvs%v)l>eXwlN1OuUyXEyq^>jeBkW1?g4i0e{A8{{!rf7M4fY!GymWzR?s9bi} zGtX@pTU<nX^RnL7Kq@^DQ)~GCncZV6$t9zLi}^!sdADUt!H!ECED)$MKD@}S(*h=i zq=Jt9$n>OtEUwvgB;ZUhxR%KDx}(OZll@Y%WcB_RMA8NRuE1d-f^iO2SC^oI2HA5w z=Y>us4_S+%+1DoZga*>!O*xO%3D5jH++Euw+v4V;bGX4#B@s$W0o<I~Zf{x9I@~0^ zkv#v6m87=k#ory7nv9R+=Z^wYV`LMt9S_}jQ<rRg377!6egeSYe`<?eeLw?@a8m=~ zwftpPrc$In?k(r0>_@!zb|$qMl}S0pevokL$SM#vX#hs}HU=1A%lDGX?(MIAHisxb zPYxSpKDXVU7Lq<<+I#8iQbirEf$;gN)<wpQs<cO~qF-q;f1}!NE5X`hmwXkPsSz3E z&%vIQlJ93B`Hl0Md1LN_(S(Y^`Ws`XwHc?ZDxzC2^l(mfRd{DTLBZ+fX?Mk=qtjdF z@Z9B1f-|Sw`B~G=!j9tVw%GE-Io&fr@u4^<7<2VnC1>~EL(aRYNk_25x56_qG4>%O zJlJ*jB>U;<3}ZQiF{!hK*C_1JBX#!W-tiHl^;;Pp&J&G%_#i2{e*BE#g7DlEi~3T$ z<J{0r!+ZU&`^?mq$ZS!BY~$x(qdv#Ak8PB7*sYtpU&aram_MWz9oN)$=SoNr)!x{A z*2t)i=WIfP;zI}>u!Dc6<#^cj3YblwHt>>vVxz4*+%Z~Ael7g`sFd_qUbH)~rODX< zHgjlQDXPjj7B=%NBsTUzGXmeCaf;VIoeeJZ$&&ebG(;4iZ!#m+A$4=manSLG=`;V6 zoJh>utux8%lpAQ5H@ab6OjIbjK={rfjLo?1aZQ@PF(ab?CBTg(Ir9B%cN*ja`4eZW zh>i}@$@F}4B#@R>aG}a})J8r}jR<^Gb*R6E?8CDl8p`w>$Bu2GjFHhzC5IaeWB!M! zSo<rkH<H&hH+?o=r<LV2ZVaD-*r^Y<jt4F}#E%CA*4HO$4EvyfNIoe*SfK6Jmy3>I z$<DL^N)SBjjxBEJt6!|7?}L4Oird%FPV}Wv&6p?FMw9T&Gya2HgAuE2*=;_%i2Ecr z40oBWFH>bZ7x%Qhv4X_~5NRZ5U?lCP+_2Ntv9KE+NzRj$G#ipEovLa610Nf?&2b#8 zNXM!7TsG7}ftP7n>`Fr$h=DwPzhEuFHo_O|IM)pOz(w9vby0ATggN7yUDOXLz&RJ= z$G0-0Ch8@V6RYr`PASriWtdrX?4d)0IJ@{&ZdbtL0hLvvLLWviRI;Rhcl)1+jK-R2 zU^SDgZ9ws`e&AgAJ(dAUmWMOKwwO77;4Ql-=m?A24TChWpiPm0lmc&ZYv7z%%fP^l zombz`hTQakv~8L1z?6NrjllJ$avH79M;MV6?;n(g7*};x1Dym>HHsy|?Avsdknn&- z33QpC`J-MScl{M^4`F_WjHDn!J*E$Gy$WfFp-b!jrQg4)Dfp-5ZCiLcrvYqof9{yO zX+mAy;GvZ@^iimjJg$Erq)`x^<b`35UrdE0wU7rq9Twsljg0LSVy=)l&!>N7jq){t zZlFVxxOT8`ZH402^}+&@%)u9?vlD8*rZ&of0|maO<*jQH^N=Mgt1AKDTRB}K<z&Rt zwZ7?Qn>yxMW`-SGpGWibkn7DH;hJW+D_5eLh_7k-r|!b(q`Zv!E0ayAml5VxJ(MFl z9VTYO<15T<`rG}@k}Sk_CHW0<8$R8Y(#d~D2jKOWv)E8Co3o;1MV2;rn+oJNgP)AY zQ~u$zkhf%&quOaVd|L&5m^24puCOHEZuUg39-;t_Lf32)9AC!YU-@lcVo73S9cqbD zSkFF33D$f57Mb*|uU2`ozQF&p0nhK{D{2t3%Xjf~=C5WRu0Hy*z)Tnk&W@bAu(n8U zzC2`)dF>?q`J)$CVb^td6vJsy8+z{Id}`d?P8PdkL&09-Q8lSJ$YH8u%<CdXQ70>I zuVKb2Ik@Cq*h}-or&v`VcV3;m_`ti3Xp^+&@Q0bbpUb8F!L0?`_bVP-Iop43k~FNw zB=D^)W}kLf#&sCAKDiu2)`?qqTRDS)P73}hDx#QM4Wh#*?&w>g>g^*;IKHNmoCfmz z?ISj$k5>{4U(Q~uH5z+@%OkM<mZ>j9#w+>h(voioAKF$F%xb$z*~>2y@UZCcve8Ad zD|j@eZ9AM|Z6Vr1<8mY19U$p@Q5wY7YqZADT1)I>D+gDkrwlN{gh%XP<Xbw2V?BUG zZ{MZ_M7m?Gs7y4Vu)ZSVB7VR<PeDHRQa6R$+*nl6*(s~;TSx4bi-Rmpk*n|+<Bd-w z2k|L@^b!OSXwHGr91Z(0R0w&73Zzt6wvPzpCfRKb<sbYjt8iTwA(`0$G0mZ3xI;ns z#ek=vZ~E0A!oBvH#$>edDk8Fbh+YtJvIy%9v5&%&SNv34u%rkheyB56yswJ=2qI(a z2yZ#x9?PJ>r#-2ZH;MiBCh-Hkb)oWFf~+93$ioNen{{r1>S{6Sy=P_N!m;1(ZKeb_ z0krdgO<4CdPD1rzsaGz(D8w*aq`7R5FyCAAB{57wCeZ=)^o1@lpOH&T?Uw0tkC9uY zB-4~t9x>5<ajsbxhnX@IrA}KME32MVkKjxTv<;FcDt_y+iDCDle)%Fsj0_dYHBfKs z)4dOf49<1~-Tw4=ZLmuEf!SheW?ZVH4$%YCVoKv75svk_WNUf~o6lOkJA9VboTg-Q zGC#}FehH0qXU<oZ<k{j&$@M)uT}R%IVTzY-qpyg93m+uVNyYwXs`}|q+B<v5;ire) z?ai`G7XOd}DgU)^ehoBo+m_*!8aFy^lhE57B&l-$95O0A(mP^4g&#)WY9?Zp?0){{ zxiP78c<mby>2rGM^y*K*#<peLS;4oI2p5CL5#2C2Z{K_beIcNr3dk%I8Oqxnauo2P z8PFSUdUQV*dY~B?1$71`cB$Fd9?B}*2ITa=MC`NM`9wrsf1VoM#M;#u1d6mik;k7W zwZY<lEI3>}sgih&X@Zu`kC`g?z^zbpn>ZLE&m@TC0@<_v5Ho(Ae}p7j!5$735LzB` zw^qSFP%Xl`0&Q%98%ppFk;D&AotGD-MB48ix-_ZA%xVBO!9i&#%uLOaeu+iH4?Te< zqIV9d{B}Fsx2PCoK{>Pj=6#axsfi`Y13*cfsnf%1*y|nlQz0xxz>Kf<p%fY=2EKrp zs4q1BZc;@aE8yx3N7oI|SxdaN1uWxpbLo{bbw>?F(gaEckxrEfOC5*-rOf+=bvl)x zIGGp~5a;!`t5G2=EJ-i%4uGOIfENVo<C=+qh3E2f5U9Y&zkC?VKPlY;NF{g8JWvr0 z1;gCFjPpN9<%`nUla(BmJn>hW!E9E2)rUAOdUp3P4|jLm<%S2L1wrR&(UPy9$Ln(7 z_y$!NF|Jo)R63tND_lE3+@ZqpDn4SJHJTXiXriI-X|XCIblLrnvRi#3V(*OElIH;d zk?9D)yzi7Tf8^prfa(B{ugQa-y6f|Be-Eq|v+VAWrTd>X78Y_k@L~ItDtAUkyQ&rL z=|TF#PlDuyih5M4zgV$mzidh@HW{6C=IZb4J=>fy@=6lUwNjg9=%^>iaB$0Bg3B!{ z<}s=yG*<j`af`<=7-p!^&z$6NI&=I3+zvJ1e0sBbZD^jWHG09o{@q&`a7CQq_m8T8 zI+@@8)*H5^lM;HXQ`5*@ES6K0sYH))6xjt##pl0Ikn(gUR&c0NNdsO$SHJR_UI^Kc zjZ5`Doft(^_rnlCG5C#Io^?-Ubv@(4*r6*x3MLhp1Ff_4;9W+7ru~Oou$PLw5+Pej z8voVuPy%r#z=H&m<S(1F*n;WF+xg~>M-iiyf5I=<pV*?L8q6vc;K)EG98oSWaqOJ> zMvNzBXA77p)^V5EZs|x!Z^=1pic*697GJacR8G8M6z{@e1hBRJN%3adq5aoO-Nf(K z-JtbA7H|Za(EfTBH5AN}jT914jT+kiRiy^K1cwn&<USct^7)^yyu;ksDF7Bo$RtI^ zc8e%N2!k(I$m7YJ+O!WSOWq=s(~p`D?K6z^27dn?crynF#V2P&tWMCCrP>tOtnjI# z|KQU*lVBzSfBPS3FNZ<<3qch@Wk+dKl*l|(#G-6rc);@)A;7t0!NN>rLg(r3G#s<L z528BPT?m|GCgP(Q$9Tj;`9LJ*mif(x!ohH#Qt9Et?3J*#6L2V~RZy_BMOec8G#JFr zDnEZCh_O=&dZrIc3Rd<zlP-rM#3T8wi1Z~mh;}yuN~_7Q7f*p2x(f!O6B=5bi~X}t ztY3VsPU>C+)@14E+607B(Fghye@KjuHfgy@57)W5t<}-&8dmrN#(MTo=H1H)9F@Cc z{>cjp)cLc`&nbCo(Pdp<L;q&O7cTK4WYph2E_nDIN)U1W!fo^HCQxnSyJ?=VqE621 z*>Z|$D<J58jyvXkBeHUPOwFym=478#HuIP~PdIyb4D>=oQnt|p&aH5gWt#h_1LtPX z4#>0o5)EY7H-+^qt=lH0{4Ky*?6|x&xYIS)sLn==ZmcM0tu&}-3MkORvs#wFUqoPF z1lur?ADvC$ofceSUfu+tO;CIMvM4D4QFq$@h=;iT{ojo^U0^b3s(OcR?DHCeQ$I;u zMn%3!^vM5xbA)l4sg#he)9<7h+OmPsMEFY)^|Qxa={_7v{f-d2r&=1TLA)G_D+b3< zz2gg@=X2r}8#W*l6{2FOWtl;?goLL*hWjd|f8(e~^flPJGn-%I9*!~TH@?_O==DDD zhiN_IOUS|chDaC@qHLf6cXTAlp`<Xu6h`^}1=?D(lfC*dW#u<dZ6c#MfmIPyB07rk zMgq)Fe@5}26J;=NWMwd|>Wt7SUtM6>f{x&Hvp;1)Yj`-pRBL*RZ8<l__3o}QZJlHr zh@A#9h0%wp$#N%SB6sFT-VWQq{Cq!#afdhVT4VFmsKuv0lEojJ6e~u>QiCWytju%< zQL*+b;AKsM;Euw{am&vE2RzgxzcLv8%u3G~pi<zBl9OPTzSa1pks9^Q!d+UJ;%<$q z1z74$zzb7}u>sG1<@-I+R`os=oB9W`X8HN+)%X6|$A#8c?evRJ(ZCYssF)Tn!-|UK z7Duxvg7Ps|hkSy5y}078$bFLPC|kh=6t52-F@DGjv9*6bU(7*6YvT`Z)nF~@yTi|H zPitPlHFu1{Od+@;^GOe)=2rm@=8*Yj{=n-8VGGYN<vQZCg<W5FLb)S2A=V(py(uAo zxmRA^Z7A2nlcos^io>A@z9SMZ?1Pa&?bxDRFUFx*EcyHm#7O}Fe{%m-;|D8EZDv3% zmQBPWneS&l%JP$QQ88I@bo7X<RXFtfxZWRv6G!o6&&1}M;S}Ke8NUHzM&C834(Z{z zgL5X^E@^4<==h*nU&3wC0RE$?z6wuF3X7+^8h0_V?v~P~-m-zRLpepxinzM>ODn^+ zx<h%pK3`IRO3_{Q`VRlwn+~5)N{*yxkPCL^s=>qIl>Msjo|{)v;JVUPmR|j?jBY^H zwi~|-(cw5_7YW4JcWah9a((lYlsEXK1A=sSi*j2W$)uq{De3xKF0Zm67ct#>l!wFf zH8e7JWE<`hJz7Ltg!!0T+Zf@N4z7*9^XfQmP=`$88d^E&;rf>w;hQHLFhJyz<?pKF z7Q`0l=!ua@vM8cJoagFt3?b_vM`${OuD1bO?6IYM69&k-6aQnogU5gO%Te)s=6|GQ z#CZRFH-%|`toYnU>RPrI<9ZApa%dKXSPk={Tyb;<@O>0=JW)ekt{lT+bKm}EZgj*( zKE}K>B(Gl6tS<LI>7qZ8Z35dwZ-0H!XC2ClX;?=BI1)uP$`QppC^<A&jLg`U*k?=s z<C`*oz-fwRI#2^q%zI!=gD=e6p-YU9D)X@W^b~OF&N2P+)k`nm3Vf@|e0h!x`qzEV z|CCm<wIw>m+PPaf154+tKS;@{<PZVbcJrAHGhiq?MC_97V`(t*50)@u*k8n`kaX=P zAwtgV>EaY+_L6E^Ga~I#+*7|PJkc8|{s(7$FdinSth&SoGFkv(insRKh@b3>A|zi+ zx4u-X+Q%Qlf!-zUnwwe#KL+}#6#EV7@~W(Vy%zPeZ^bS)qWbFEaYh8a5nzU%pXA>d z2*is)Po^O;owXC^@h4CsavvH_Z)2iBK<!d>jmP5u3)M!nBa8b;&w7xqREG*-*3q%e zuSmw-<Z7YJ(BWs5LlyP2x->Q#FoS}6UuP%2=WCzqrX%}b!c<l@u-_JB{2HH*rHe`@ zSXr5z7<c0Gn4J?1^ZvN~fTGV$;{5;c3v>Vf_6zfK@%}&k!da6Ed#xB*;5VEGmv81W za~~#;gd|2&`JP5SAAMs#Kl5RUqkN_*dfrG^n{+K_`ip}MLxJ3GaajJ;<Ga>Sy&?Mg zzMrk)`T3Uo;YH)t+Jl&Q2<_JQ5nS_dT%LN*I(pRa^Kp``M%>UGyUfR`^<m98^(xu5 zq?9umVzIuYxky9!btO_hFgSY3yuPkZzy5gH^~ZPgcjIdQjG5ai&X09<f~I-K)ArQ) z=-^+XxfrN#m*2j>`TTv7o+m&TBCzW{8df{#z__C%is`i+k?dhJ$r@*`M-;d%1_aMf ziPZlQaE#BY%(gKdc2@WHDHKJszHr*+BD<qxEcCs3S?qyS=!R4r7xjJHe5w<w$S0RM zIceLS5UwP9KTh|!AfDx(`*^Jpz2!p7%2;{Mc?|sk`}z#}UQg8^HX#X3NP4;!UK&@e zP7NJtmBKsYfrE+JPei5>H3;s<aS=oU4no}!yzku(L=`NmH^-0mA<yb`$Ld9WuNW%- zO;sQ*9Q8CT5cW2n#4=Bg-gjFm@qDc?-2;)9>Ye1>b0NQN@gX-0J$C_@5Jy>okp@O9 zJzc5jMgZkiQ^HPhL(^OgBST9}<BUL_tgkbst$iUJ{q-2x2kc}+0x3pa<D8qFOi}t3 zL%ql)7jRMSS%%%?DC%l*57R#JdThALkZ|(fpK)a)bq4_%!^a21$Hi7e7O}IFGm|gF z-eh!eL|r-}l(oKXgW>N${eRN5F*^*`&Bi<;tG}N{i2{9Ja;H@C9$AfwgP=iNSYjUV zPwHps*Zh+#BHSNQj=QmrOS-O(Do3y2jF#Qkka7q8F5^q119`V&&&Ml}V(S7ZE5o<C z-s|!8ap%qP^;LPm;BxN6JF8{t`4)+7L%0O^@pgHAF&pH*;r#wm{B-AD^nGJe{^mmV z6FB}Lv?qV5&9Tt^!zt@>19fA{=wylc>8kSJ{U9XO^_H)!;`Wgn99qV(zuRDS=yGZz zGI2Sm#+13@?y*qgl-h9X<6~gbvUP6VaRA;amiidIa`7=}S{-yJF?;0e0hbA;hF)jy zH2||-o@yJ3)ydA3Lwf#&fmqJ6{~~&J>;bcL`b#Ws2^-Btybv1p919k6fSJ2%wywK3 zo@sndu}5~(AX<>Gbj;?PZp`U<X15*ku#5iHg~?ixcPeqqGr>N|p-YDQ3rDxK!*!d^ z(<8@o<YfnF(9?Q-)|)nv!~(*l9DW*g7pVtiE>a)5H$>gO`XEU6^bIYGipRW1?VaIo zdwvr=A<KO0MZ<j4ddwjt8!EWUG1B#ochrsB2D0MX*LtcexDfA@`KEl*`Px%x?<MW9 zW8n7giC;oj4|pB=uE1imGaaa_S*m^48p$6W#eIn6#)UW@zmq>)<o?0&!jC~kHJD-X zmZpwJwK@QFD0By>9mMPzZlko;uF+y}iQQ(3%zCFsrhNmXx})h%SO@e+c`zWx=K7(= z7K8<sz+TF^eGdqvYs!(syx=1nioc_mClS&jyZpiWg|eB8(^xR3|1i5Zk95sKMX{x? z><wS&t|HA<NU@0jE$g7msO+M9;`jy6-qHe`=|=X`(c>~ea)1hQoJlwHK5QR>gP-Gx z7CJIN!T_V-Xv-T_h@bhz8Aw@RxR+$axR(TE+==6tgLF(xr16=)<7IM&(PE@2oY@)d zB`wR_$Jfc-#`%K)BW^`*f*-r!aXH8MYuVeyTC(9mFO4Be6=$Io!q$TZq^0wnxEWqR zoiPPpr4T`@CJ>86T}ENMwoj#Z5G5hJUpC1<5|;&NWX3$0mlKA|12ihSP{v@2wjvv{ zN{Gart0GbF{Z?!$Sc1!5r<`@r7!Yy&ZjQk;gzu=mjQ5m@6N>9VRf6k=9g6Ei6`BPf zph8yZ^B`1n?6s=@w;F|tgcj`Wsn&>|iALV=gA_bdI}RW|?>ivfkTT9Uf~CBW5RDCa z3-M&I!Sc9kK-Mbo5nZ8;IQRT&^L&o;Kr5c{gJ@&$kz}0+z01_2{ef>x_#SBm{Ij3n zpOrAC!f);+Z=vDeYGnOGe7PBwlS>#m#aZ&3+@hNn3(x$K*N%9*hs;A$T2a0}AY+1U z$VE;A!91kFeEFYVlP6fu%yk^jpG9OA6FwQs6{9DUam+F(G0~wWe*&kYYG}_LYKKcb zWF%`5ZeOZtF$GI{%Y^Y=a@1iY>rh6S3%Bm91PDfuJX3;iLqm2@)hfiw8~p$St&g)K zs?_2VpK5Xt&H5-YJ2p`G-Rwk{U*QI(z0n=E6tGMVF1ko=oWrKt5T5=VQ1Yx3?JYvr zh8$L=a}SWg)RwXO^9iW(#dfbqlIi}58>ST}8JtV`9LECdY}d#GH=~IwX~#PK?;^mm zs|#L*lIR2OtdIKZPzaF)EAGFbfCft3qF;II8Y7C}S(&m+E20Dad;Rja#I2sqwHh{j z2W<nNYmG%Owy&4lKHkeCR^I%>Zzt=aFV1^mFZY|=<o%2*6NuV}Z?xbFTlb5_lvyv7 z3S09FjrA`V8Z-Kt3pFaQU;FxQG?*XvPLxwU#dkHdQY1E?%$8^2zzTee{gg2KSt)(0 zFJ|XaV$mX~4bawaeQjC<9zCXP!93PFpGg_noUpxyzWXC;C>-^fSM|f&A>T+4H!J$d zbD)|w-SiPO+xqEoqngH>05e`y;CrgZnWsYrG_N3W1JFd*)i6Hdkrb;a9{JWT8NI$J z!|r*02!^44o1L0l=J*oC4+6|KKZtq0?!nE3=`Ae)Dk(&~Vz+qJn0wlOVAV9EzOdZD zOp#0UmRV9>Rhr|v1>itL^@A`kXcovvwVLn`-kNbBNC2GEb>v@#6;eKdG{TFQRwvuU z%<m_C{3RS8@)+XM5s5R52OEq;{Dh{TD&Jn@f&$+JPjc3?L~kIGN?n2d*o6GvCfK3L zJPs$~Zw)nXF{U%StOwkj%DO>|tNdCq+@aYCJKlV0al7oC|JHK6G^4Ds|C_rcQ^7I2 zeSMJG@4qRk7fZ+w$3THb*>7~1It*C>g}p<c1&J+B6-u#C6^b`(WAmSV0!*v6S-{mT z29Bi{OP69Ig{}c7ygT#`#a-+-IJaC1(N|{wj6zK5qk5R`*x+8$YRr;5b+~sGNj}9# zXXqaHy532VpuiX{Xu*DoEvO&dUl5FTyh-Q{9~nemmHY#ZGyJZdm9e73^4hW3No%qA zJdJSqhSlf|$*MHBsP+Hr374qo9UTeob(c@1_*c7x-NOQa5n#x5mq$%yn?e%W-GlSZ zWM#XmOvXEc+b}+0#-pI~O`uRmIV#*#fL5pa8K8L`2g96A0IwM;E?#+`N!y#QmPWBK z7zM*zSA`lmC;&8?VVm^cjGw`Bs6%pR2$h<{DdEUGAeg_{YNU^txiiOztR`5u;A6os zX*OaS9=wX=XIY7?R7juQ=?U*YfT1dxM5V>ZpvB9q2dsNmWV_ls+pfcMwoSWmwv|AR z0gGwxaJj(VGZSwFaW(f&3d7lxYpWRiUe=kRhu?-%dq$Vfk^tO+*rY8Wd!8P=nArhg zK1GWq3@gwq&F$c;N1>RvZAq^W3?^)Y7_7~9Aqm4)C_d`zqzw#@pnwxU&^0PJ<4FVQ zjP>%f*P_AW2@mx8dvNckfqj_o5`!>^wjFS`E@*UBFrk(F{(@hJ#(AIvojLL^sB6u7 zRb{lr8ccCt(K4~w1qW>ZYEcZc;B{u)qZ>WA%-?A!SbE%hrozp%tI@Bwh#$>$YATe@ zXU^mH@deY3A{#GnD*?;gIVzwkglWYq>7%!Q+`v?77eSuyJ4!*0oH{bZKJ|y0K%f<$ zK;T0Qn&~O=+tr=mBQ#QSoi2vwHdXgOztDmq@~-H`j#S$kmE(R9hR@8BDiQgCMa4)} zn?m`W1*Ok)O$N%sGqzX$3yDVol(?jFFDUL4MN(TuugNsy6(4>cO?s5EKg*gH%!*z` zZ?o_d+c%gU6zHBUcbFdf_(~wi5VzGJi<SAazLf&<GIwZ@_NUNqWYjJyy3}8$4z4n- zFv3+~@xxcnGdC7pFv1VcGx0wEB*A0+)|WLjJD6!bxWhl&IfGF|%ilH_`5>C(y0Wc4 znzu>Rx&$vrnf?0a30Shx?Hy#bh$wL+aru?OcPAMkK6Pkpgtl?{!)wPGQo|6B$jFQE zDYxp9mVXJ6Y7tMDcmA!cq8+_rZMTBg*JJxaE>#e@E&xW=!|!tfA_pTAa@3ftd78fZ zjpadwsF+#A=jMVSQ{-FGN_Nk-k%DF1eL76WukP@x2JQ8gnfrwMbX8v&P%9*C86eC- zV@gD4JEJM`%TyJLyI0Z3-}1O_y+)Kcby`_mMVpW(PFamQkd3jbqO7Xt+C(nn9?I={ zIHSHlay#^FHYSr6kJgYHJDZ_RiqTz+6VLZIF_Q-3iOV%`(|gySo5@mULe;rBSvzH& zU+`6tghCBNrR2Tfc`f3mdGV-?c+h{S{XL)K*N=N*b~2X|F&pL-$!Z_DxByPvF^`6K zd{sA9qqcU3$p-QbIj0)-#wTjtcP}`wmJ7@_7#QH$6TOJ;MFLxcd~PB9J8*0DP|a{L zxN?R!NThJuJkQ4^rzyXXojB0~H(_@ZYb9=5^q1RV|B953SrEkCx1XF9a7m+Ogrp;V z8*rI#?jHg~0Ahmdkj`(NIq#g;23b2_p*8m5tskP;CqI0el|xbL4VK}~I@YbrMbqXo z{iuF-K<4s{+D4jS7^3>9t<9~x0Pbx<Ab7w*JOk0-wv;3ry+jYY@6sEF0KGvhgn_Ej z2prNFVSqPOiz)>|1mmn+fjY5d+b04pInDD>yDkL-$fcx_F1IG7Z2sar8(y$t=l0(# z3fQ!$<bL{k6)**cuSfe1T^XxIak#||y@uQ%rXQ%4+osaJ(j(TZfUe)~A3)MX2o&A@ z$GHT@EoXptgeog%gAL%RMRG9yfpP`nf>9_lz_Tp<i^>fuqD#c-P1X$Z4dzy;>65&S zhVoVJyR3v#DAc0BTwspt&-zqc+d)mIl(I_knAh-gX-!&ev&**|Y%({D!pT<$NhX=u zNG_~J+p~rl%JTL1^LPG!72S%qVFPnOgn?s-u*}+OLE0=L*I<X!d(*zPt4|wN!iZb? zqp(T=<w|7l8}$0&I1Fg&5b0kQ!G;FZSCzdqO}OJXUDjMlP5NBkbe!BzMZ-Guxq;cA zN-xKds2O_M3EX)1qTz`Ssq8o>kqu2JVB8}J^KiQ{-6Ot33k?>D)m>S^d^_5QDMFlp zDdIOhrG+1<ONAf99lc1zVPu5%uJn^USE5uMP(b}}gla|Zzs+~d2C#d7hn}eT1-0ta zL}A`E3zz!mS6l;EXK9q5NPi0aNe3Y`Y0Wtd+F>EZx;Q(bGSsPKdfY33G8eyF+RrW< z%XAv5$}`%}evZsvKvy|#CQH5-Ng0U%c~esJ`&}?hF*av_FFB$30cSJnoK#9#N+f(* zbU+tp33BZ(Ix43=oqTj@bAO(%gz!szW_XR6`$G*s`X9Sb8*M()o>`M#-uW|}*kAZF z?i_iJ!BfkH5co*@mMOn7_J7-F{){AJQHw;#UD5LYc1M5ee78<uAs{WW5dN4o$M_z4 zaeU%x+08~U@1+$I%YQ|_XbHdpE4w@#TtQM@f$MTJ?ZOENmsgsy?*k^y>bB7y($dop zUA+m#OWiv3zAH10$Bs^3_(nR-S`jg<K6VKq-CUT%4}wWA9uW`1v+VUw+8URf5h%qs z@t9#?sK6%Z_L;SxIc+yhHMw^EgKQlW@)KvD>Oj`Ncs2Q1U~Bn3YpJ*#uugRo!o|F~ z0;A%|E!Ao3b+s1wi8EFj(uBuUsCs7lM*6aW^kb*%`U_pIsH5G*4b7V)><%3D_G=UL z%8?NAqZ}=eUd)8M;9uM#!Nig2Z>NQO;$>KoJ+Y%63I!lzA#Fc0AM^_)BBYWCTD!$P z^4T7VO%TM@_w#3K(ras``jIty2E#K!i$6xzE-U)Ad<DQqD>}5#T?lhb^LwzKH`+kl zFnC=}CJ>G)PG}$%2AfG*eDc*c!1OOJ(kwKsO8(&I)RQ9>ZUmK*A@&TVUd!L2LH>dg zDkY$u!9{F*Q`cJ1xrOszv+k<iqBpz(pP~jgdAq+&prLZcQHlXKv9l)3p{Y_y%Ph5{ z=y|-QSVZyqMhmf{qW$S9Qg#U}g(~!bUt3zlzPF}JZC^&vB}4*IuAM8z7cD5=VHgKy z;{Ce!BaKcU#5PkN#ECdL%PRYHp9%Al7u+rR^Fp)fZ$u+l@O0`8<rhO62*2tII2jV1 zVJ)=3{jA&hXV~(qK8!M^<SS&~zrA#@HHRn09kfE$tj0G`K^cri(u>HvorBKM(1<zo zgC$59!MzI?!vya5lGyMPg(4Wk(`c0m5M{stFZ>zf!crzL52cO?ufKXqoJ<-AuL29P z5{1D_dK|!M3fl^sU$hRt?1BAFum?e>q_?~th-h86g%5%4uym5|3LRTZD-_Mby*`cN zXBdoyl%AA(7z*F%q1`9q(L03iAnra(yAdBM>INIXjr5B^Qz~$u+vTpL4x=0pWD`Q* z{_Jya6ZWYd_aC30DPp}+Atfi4O<40zCrZU5Ke=&i#s_@RLc)mrW%lHqNZHrxH>dw* zIb0(zc%?)=%WP2B6mU>tvr7>q@Ak6M68xZb@0ht%60DK4ql369E7*-mTTSm&x1*DG z0w$}~p?54PF8C`=?<8HU<zMlgm%g#jMKZWL?JE<yfjKdQlgWi`u;)%4${I%}0gZa_ zkTFX&XLs<IoRxCJ(?Xoq1NZ9#2NXTgEVXtEt`CF7O{qM{8<d^_WqBH}qno&c2C4)M z4X*mZ0yvw>uV#UW4DVyW()9;=lh!yu;tm^4)U%~_S|87mTJZ4H-I)QjoGW?oxwx|X z`LSjH^<5?mo>kzEa20ORdB2t?U=?Su!;d&gAhSwD@A!bnvZNsC`L>ydz9CdN_OLr< zRiNZCy49s9Bip3aQ>bd>Jy~r9B)S@m619~T!4{RQ7UayqWH`t<h6K(<{bQxxt8anh z<!C&_C-%cvAupiIl_O;dhd)II-U5w4t3`b;6Q0L3P@?&Fpv1xr6uk8-CCVfxD!h5I zUW6Cw(eS1YkgP{q+>WYhgu_A&U@Zslz2wR8ub)kWJ)xF?(-_Fxq6oA+!9a=SuLvj* zDKTt>RBtWM#TC>rTJ;R-TM&J-GcDf3Kxt8E3%FD@Pjx^6la?7Ob}9ff*F}PdGbhlK znNqVF8B=Y#Qob|{tHU?UJ>pd>n=S}f8TK?Y3CTL3RR7qr6w)vvPEffjb41aRE6Y91 zQr~;w*WM1JDKR9Ml6rV7{PKmJBS7jK!^b2TH>zBUm?T$B#{w6`97blWo(qm>0fg6U zhOMyzQUoNf3MiPiIPH{kDZ9k44vYe~CKKhC8q1cPFP6cVzRQ#Gel>>eHF1b%v9`N< zH4d|4URPZt2d;Fb8N>wt$O_usU+T!m1PkL9F0`0Jg)j<t>|16OmeG9iioR=2*WEUj z8$VC`KGp5pF<Y)KF$i-gJ-P%ejM+mAOt&i>=a#Ky9w|nwv~Y~s1o>zjOI~1PHpaSE zou@5ObP_z~8x)==6|qxve;ceVwu{fNwUaAqtg=t0<CN6?5e1va#|0r;0>6R%+=PzY zO8@q(!G+EsSbfl7{9Jh}lQ6<pr+<fDVfgJgCRv8njotTM5Kv@G)wzeGo@~@l$jj8; z>`OOUa*$(NDN%hiH4zH_+<TS{`|)<*vpq91Y;m8Cn3392Ls${>^yraoHCnP<?d8=& zL#`hVdY`nqj6FRt_-(N<)Jc5gdE9w$wiT(E_@N)LIQ1|uQq!{uKrncHf6A=C-FZ@3 zvws&JE?Xx#+<>p)k7Ql(1s;3PXGY>(;;(Y`=jB|zB)p-t9<?B_KKF#b43bm%>J@O^ z0zrb(Zw6QG3oCi(Y-~F<DH=`V4?pcMYaTejY<AaV1}#mGmrReR+Bj9BokFS~uC)eP zpws1*r^5js+ikuW^9}BI&uzCxd+nEut~J-^M`2cNeQ8~Q_ApN8uG%tuNf!m%1-9Dy z((U_ScyiIUvBXEL5TESXTTDA_PIYw=kyFs24c=NtW0+#WltMU|b5cBV%4whPKJ=KM zM`S9*t312<c9!*_KMgFT2wk&T()-3If6E@@a)mK$M^K_pHuN$<M{>zPb~dz^jUMaT z%mragmnIO&daS|8LQA7Gm@aA#%~Nt@XI_MdPiCWm2By10H7xF_h-Mu{?x~72hwfV4 z(%7LseYf3bp$M!)@Q;|ruXy&gn5+CxEYkKy!^$MD<k*NG)RVxCfDe_C(J6eA*E)E* z4;$dNCp7+fKgruXJe{v5;A#s0)oft%Jz*<TC)ukx5t#D>;;VcDD{fzPImNtPX@hn@ zwGv#?ker7{yJ~kPZ(D;E4%h4wNzNbOg`#Rmy{2~t<oH2s-xY4PZ_DtGlWz|KW`#Po zxD5=(fWGv5do4&9KA?a^avHuzy~&2dR))z@U!B)196C`Yz!fom=Ic)&&_EAxV+Xl3 zo$>A6)Cb%gLQIb0k0vCpGN9|oyJ5cUg!iSV*Q_&FxgJ&^aSwGv<6(m1+T0^<F6*S! zD-HkfpGksd+>usAhwKsv`HRjEdV$m^>`I;;C7?PK@(VT*5qAKIQVe^+cjHgkL0Y6c z#CXwok{kB5P16m88?-MUu<lUtu>uj28)AFFf0;MPk)4G5HQ(M@CK;w^Z+zlXbO2+Q zMK?iTYFKX~dZoye0V5VL`0l@eyUw9i#1a69<HJJ_Ul54MvHA3KqZyfvu#5>n3MgLb z$b-j*`ui*{@+QW-$>TcvoKxhb$W5ig8dh+YbxttItR@soL(Xzh*>X`siCkdM1Kq|> znXo}mFyCf2;5wsf^Ksh89$Uy{Gu4?l^#PA;g@umz;k(jQVz5pqCAt}hCcN^~8%wRD z`iNQL5r`d^H9`)4MD6xSgr{=31wqQH4>L&O2(vvLgRz2ZfanYg(G_{%=KfFZsfHnL z$^~86-w)^*``PU#c&L}h!SGYUxPL=u)cfNU#jT?A_b+ZEE@OezQlUQ4A$2VZ?pL5) z3*7?Xv)sw>`p*|e#kSYv!n{U4Wmb8Sm+ZQyZ(|~vq<zxYn>YY#8zpbA*W#~=IcxOJ zLM7!``glFKM})81dBpV}Fv570&hGW!>BOJ!yyLp#QLc#@lo~(xQ$F0}?zahV+g$ih zpQ?`7InteF!bl?O1g?p~J6${O@LB5w2%$l%tHF_<)X<jQXkmIWXQ|f(QkAa2VKyO? z|NbL7mxBI)&#>y;m?#uUQ8fBP(=45MkOTln8cH&l_OnE_RcRtvhH0rmaE>rymP0JN z^|;w6a|gPfOAKor!O!`XcP5b^gGUYe+oCP{KQ#fQipM|sCO@J(O9it0j~4#PeMfwx z56f;wDHEhMJXFsm$0VTLqeNg3`U!m#7Sc-x-6hp)IEFDgfzvPS+0=4|6Fd72lV!ND ze}{B>MYvGyjz1&O-)FzH=J?y*D7bp%bI>r|9fr}e=~fJ!5pkQ}bc>PeyAJ}Dnu)1~ zYaNelV4Tz<f##R0PVhBzH4{b@GYdz%`5~CC^}CqK#zALl?B!^4*4R<P<0RU}jDe92 zegnsIx6+<FBJoLA6zzxFf-^@30xI!lF!G)t`6fIDbzsHg*Y9t?J@7r_&h~jQq{T%< z78KNF5GUP6R<{2X#Tc$yY)^lxTtTY;m4BQ1gCO73kKn*%_E%hg9x2wX+#f9C#&n7x zN9c%=SW38X=m-*JKh6uPF^(vO?O#C0poLADzzlcZF<Ta=i9iPQXti>|?O?!ss0PJX zyyw-HARBz~lfk2Y*h<C_+j{ZGTwIxRE6Ave?>Uhm0R{Dfe;1md`<}%se0dEo2=Q$) z>lM|xsPm)K3$APFL9uiFw&K&RBT80H{*A4~@<usH1JP*=!6iCB9{&{EAm4b~^l$r8 zi`&*0bY=ZL%7}6Cj@)NnwNfE$5fSe)IMwd%6`zySA^mSyi?C(bG+S7L?Jo4mw%jt1 z=#mFk)QS<B5W@hH-&t)V#Gw=j1n`0b6!b6)&T<IQM1u%eSIb(&@aasI=hl@GD^LL@ zhWCxuqS4}8v93;1b!gQ1e$Kz@r8l*T&U@=Q>I#@P3i3I;T~&pQOkJg+b(V{`Z#-6( zh9)|x7&e3(Ic|S=e)Z(-_6*N(Sr{BMi2v({*v`c3U!hYiVGuw2Of+cqX8k-ls-MTl zQgPK<rtjab5?`3Eli$JqsJBR8EzULg)w1wScEdO;rr#dt7PZ#ghhlJnp@{EGxAZas zNegqU9rU#uQhYZ`1tV(NpEAHNsPfF`>pEuUc}<3|{{9JBZl#Hx;m<kb>8G_Qyo+;p zp;gb#$ie(}1}Y7uUI$}ItT!liIgiuLtEX{&uxmtpj<6RCS_Q4BM@T1bQUy~gndt7k zb39`WXDCgV`)e@s@&$~QjKp50AMbfSJ^?45R`yoGRt}08_0sqn$*DIEe+zBwii`>W z=oZwrH$|2Uim;Weow&5S`ht1NtrNZ~)ye7QHGYXCzP2pLS&~W3_bD+<sJCC0zP4Xv z;O+0CcgeDuYg+uZGRZ)H&Wv@ijU*6lmc*0JdURBYvkGlhBgE$UC@18EQY>Q@-thz2 z7}7OhV>0|0|N5>l__)u~`s+b8CxW3NYiNs(#=atxUe>U_s1=*=y}q(RSN7>og(~0h z>Je755%91(S%B4{TUG<5O7zZvwO?nfX*IG{QU_^;elzwNPPwVMy{oZ9yC&;rYf#f? z&}VtC&mZP6F&CCdEctzPZ)5}Ze?o<_#9zxKR(L|Cu|J3U#Ri;M?Xt~ThoVm~>aIK4 zRRve~?Pwq2Sli@r;vbq+sae*9RA02WNrm5;aG50%OQz**s|B4kY&~rHy!^D@-=`FH zty#4QTD>B7d5QXT>0m|ntl@POlRD6N*&o0#=TVyYDCvxkcE_YK(<@kHmyxeMPNJYu zoj-HDq%WP40z%VbtjP~A<D(SYJb%`)uyx0kKV=Q2GmuhIgU<HCmG@UU$Qc(qjuf5? zaW74D1<IP9M$KIq>}OSXZgTVEmqTOhzP^cky?XC#t06;r1y5usS%N0K=lkI8B>(n@ zy_AQcZUi$%d;-rCgw6;X&^&Fx!y2q<IO|@CsHRO^FEZ|S)NV(<oJ^sL1TiM}KWa}t z1QQNk=1i^v_>Xs<W?$z8H{dB}NmkCecs7E+;CCK-<;l#vqbgjE>oBx<_2diBW<H0z z8BEu}h5G#2oBN1f(-`Hx5wIrWb~I3P1R5ahzllQL&O&ujp~<?!1w3U?t%z!^A!67x z5f1Uv8hB&bsu!J;Y@O11s6cHspiF#Q8*(R^T+4Az*_|0OV4wg$y?D2R!GoJGxa~B) zHjWSQCiq^Z-rHJ0QE?;E_n024$H8L+P2eyf{K3kr@@@(@Gusy>B{ZY02TAW{)U!l# zVpS=ZU~_z;L}{9DSkgCDWOU0TjQ{*+zYiZjYis+KDgn==JBiH!I)3e-{qJ3&4Z8CA ztV5vfL?+5ZepcO$;c#&>Dr&)cV&?f?0z~4@zj_D(f!#@=Pf`vKk(ELde-dtm=vP@L z`@I<Xr^a`LSNOo#sbDG5Mtd^+5&Ks>fDyS1;6^8A*LpbNf3e@-%tro)$^dZ60B|!5 zhX}!b$DYU-=Tv-;6{rgDwOd;`Y^^o2JzJSB`VI!@qLWfD{hOlUvtU`rqtHcrelq{a zYyAOWHbHBxh7`%!_OHwrn~=bDk(|)$rnE@+h~0q-{z=sTfZsSiNtnAM&?*~OcVaQc z;ffrk^-2d0QB)dmRp5sTu`2?7xd7XUC=lz-)}95Vp0qP?v<H{u)$~mC$PN|b{WU<P z({C4P7XwJ?^XZ*uSmmFcsDI>RJ}Q2E>XRT{ZR6pH)Y_a#32>F>lLcXG*y0M-9qWz= zM73|qx+}Z&#TJ)jXA|{lZO~&3HkEG=`X|W^a<A08IABEM$}|269Y{&u_a=Uz=ocx3 z2Ifs`@fQjl`4EFZy@HsXxWiBGwcI7I{{mFrW%o9fNp7rD!HMqtTVHxg4w0qwNpB)h z72IWjlsOE1ds6s9`mRgu8ijw3<hoeXUxXGnwIdUfZL5uj_0<!rq}r4f>x0fqrI5eU zay8MDrpUI6vy8P~nC9b|J$7qGDjTT|5S)m%pJ;w}PR2A+njkz?c;MmrzKM^bP*V#$ zHv@E91Uq*{%g=!Q$~OgewUcZ|bDR0t86{$x=&3?zCcxqXtwAr+XK^m+VfBd|LD=xf zNM>{|LP6R|b-x0r@R5(Cf3Q?bD`DW{_2&~4&o#scYp`0k>E%U#97y&Aip}M#TAno0 zZ1B_u-z<YXXPUSQ+~6$O26a4cRPhppu-ipYjp!0eA*uaKL#z9W<x<P5hQ>M_&NUtF zfn8YdbNP)Dp39>;bNS3Hf@$Sa$DmxuGOXHG_M6T*{Lf&w)Vy4$i@tHQ_CX$JO1O;J zy<NGId+`8`IjalW!<uz+>j0YVj`GQ;FzqB3;Mre;Khr)fnmfPiH_VK_9#G&FoS7Va zAt%izFvK}G<QU^H*CTHbK*69uX>4d#<O~zh&|Dq<Z}H7H$@;}1tHDC}?Oij96UF?_ zI7ubxoWGr*$k5lBL)K7jU+W!fWoXV~+<kS*z_EWSYmGyYXY$Eeo!o~GYz6*(Y3O{n zk@=)xyDApS<Gk6E*b%Kv$@H^<nB8ZWit>abvFj>owowo!Hy_FTKB<$Zl5C~*ALY+z zm#{^<!)+WoUDejsM8RH45Oo>Ap3c>8N8tifcWsokjT3W{SAzaxN(8gdTd^W8BDo~@ zV@&BLlXC96w2agoxpvcisCx2S9-cGrG~UT-0G+|G>ISVzNq+S*LIkcZWuI1FYWxt& zn1Ei#h(FWi3Afsx$7BsAdh!~H`|C)%Uz%;&;%!ot_Pj9nnn81IgGDQJy-hE84`QcX zSSL-Nchn;&eWZh1qN~L0>rx#Mm+&mRDkuJK81giuSZBdhJO+~eFL1uEOHh5%hk$0X z-`FUtp?|0Tf*H$gUB)K1_NvSy?p4{gJxfy_NhSUg!$K-Z2OvkZ*xl;VU+j^k_CW@7 z@R;CoulTS}u<Z|gJ(r)W113u4ZqL)YU|VF(rpUX3t&{qtI~_PRa7V!wz4;e)CyW{C znOp2^$iA`->LNmE5sUiv@A>e8i@j>bkPmxT2e1>K$w|iH<MM&;7SD*JCJ%32U+d*n z5}GhRg{xNppY4L-At=}+BTz*LYR352uC>2pXRZd)Opr=o4yO0&MX*Xnptp4>8i0UG z#&;9SQv>Sui5NC&G1cukp}|Ro0RWJe)NWFtbQv^Wy60c=3*?Hn3WHS-ZVU-e-ZmXU z03asaE4qqRmYq<pJbhgffLH&EF0w@?URqqC4B;^Q7jS`fP2$#`es7k6OQfnuI&*A+ zqyw1O-#vm{EZ#)oV4&dhyJnK_G*aNw`Jf=$v+ozd@~>ZwNCCJmwp?cvs#k9(t8pDI zqz)p;f4)|WmENZYhf6d)eC=fPQQ&U6Lq*~Z77au-3n;Ngksf_eLt9wmg%m3ox01>C z^|7-3!XcA6-7`;MZIQ3IKtOAJbgN3=Emz8o^cIRr0JC<7Fm$cegJGcX(FuZncD#St z=v~vd2YLr^-dL>z<3t?)T7B@uJdSCSFekHnj0;41_Cq}7)8S|j_Ie}g4-r*o<T}e6 z_H@NIU-{G3)Iy%f^${X0FgzASiC(*q5n#)@%0m}KFm0wlS-HxMJecRiH-;+f>sp;E z^y7EvW-CJtFYI+%3MO@@?pPTs(NSa{C<sO&pq+uzzgEW@SxuB%`9BjN2Z5puJ|TZ+ zz+r@i8y5q;EQ^|#^%G!p&B8eXXAVALvHwDBFgqO#ZF<t0E~wR|67z@D1M&+9r{q%) zyRe4VPxGR~RSb=d4my;y&hn;z2D<^RurIFFw<Y!VCEL%vzP*qbZ05cns?`l?*b2J; zNb=HR5*(mwu_ayHO^|G^BOh;U;A66IQ73SdB~H5#*4zH2cM|;xHg+GSSSx9ALga;f zQoR$or10~w3pRE`?NB43kYGjsS&rFmsuAX6TtnW+LaXE?#xYHpoKX*&caIt+DB4^` zQqBS!G=9!Pku}i8zvr?E(<MKI--*yRjwkuCG3Cd{sfM(zOu5%pP^)bmiu;&Qw=RS{ z6oOBM`n7rnh5`w&Tf3L*=OYcXOHG@sWQ-t(Le#)&=VdW!GW-uIhn3#A`a|IM%?`gp zM844Mbe`|pOU8c@WiB~<Z2Lg%#n^IF1|YOnk812}0e_Cm54%G}3R@@snOz^+&2k*i zlj6Zt^LrawGb^g=xu{mKeYGjB`rS@1Qe__>;oUUXH?=0yj06K`wH~%CxAU+z=9eOl zKM#L=zn}H6yfjf!JtV%hi$DA^V{wpvIQ{o?@!)Ln;OFA+hw=2|m7KSB&I)I*chm%V z(I*I15{a<6d`0)6=FRfqY^;1{H{rWZ&CtyDQB;@ny67wWewwShh<;;0(^kE@-&0vu z4f(YWz%qZI_%YVYbz`tdH>iGNa7aCPk^G^&-3+I>D*OVV7!BSb@Qe-mW%Suc;vSBw zl|+!@>}cKvy{7h-6wl*@NXJ=|zQN9HtM<%-Dea4nO9geH`cNfdcj_`%T$Nz74QN7J zOU*3R-1BUrJ+z@b8EuMc#_?^2;#D5@PVourhvCPr<T%=?lIIIj*=Z)`o6=9<!hT*0 z9wSakQjD2L_?0BVSIJ~Z0QPs6U2X&(d&JYsXnC6u{`~>bH+s%XEuN?htwWGS_cFz( zk=b3lx>n|Bi^Xn}sXX#(4`=RvefRK=Zq{F`Hp#5P(Vr}dvNgCDKl3(Wzi&!r>Ix*! zc+L_C-J%p+%6ZF}Fuf$XvY)<N-pVF82X5)R{RH97HmrDT{Ea(XBr9Ferb05=&eP)_ zxXRn##j-_}>EM|&W3Gy`-*Kll)be!?z08g#G!DJi`8lAxoVZ1FIy}j&5L{IYT27sG zWi)c>`7?+={`jNsgFpJ7b$sM9B8?B1q~SBU5n`aR1Q8Ya(9nQa#pJja&o`0Wp`chL zi0akP;Ov>Lw{8@OeDhQ-CrQ6~m);mM32;Ib2UiwHV_6Ktot@AW`d4#wGF{F1{C4&B z|Hl&aLa(dkhEkX~qeId27tXr<NWMn=BHrbw4;mn-dzQoy*ey*<Ve9-W?{XiRo`(wE zs&xrvJ_~7ZqqZ2yoT}pQ$|oX0L-O1#t7UX!Z9MAn#<ygFhVxryolk9UU(I%#F|K}B zoei9m3pNK?ucg=ZHQTgW@<=?1qfpP*F0HfUh}HW!Y`=9YU9c(TwY=+4Tm(|^HSx5T z1_*xZapyeK{j`TLD(OYKM^2r4+9EkDC1FoISXLXo`J#W+v4f}ii)wa>Tg(m)Plt<$ zX|4S$RnA2D%fYd};<7QunPLDWNP1)OrRjRP$EPb~1#}pSF>k%<lOEy`tavM$9ir!z zN#1tha{Yf8d&{V{x*%M*P$*E^0L2|j3q=aFxP?-Rl>)`3#l5%&cL*-UHKkZ76!+ln z?iM^)2oOBT&3o@%-}>%a_s9K{GiO$^*U35i%--|NGc)#etV!zPsZ*>O;*7nZlWhr~ zv`qKX(q>OaM;E)4OJttI%<<03@%=kYbDo&2o33lRR&5L_OK|t#O?UG++K`0}9l!Bg z5(>Y1AAaZA?4~EFg2EK!Q;nP(JDM3ompgmJSsPqJ4*r-)@;mK5Xg1h65<v{&wDd=o zEXC@V#*<KU(cg(UZ+#^<Y`(i1mkFW#>`yCoPwx@V4eKwJVVpgbW5q7JlGd2Y40jh4 zbiGiIHf!aJ?*0LTbm952MBxS0O8_c7VM_eXqU4D6Dr_{DF{sT|kaF|Q$bjMEs3D1x zKBlnu-cKHYpLQhCn1y|3Zaqr7fA8;W#;#<hRFoe>l_`h<k~6amSuw-pYe?GE`|zmG z$1-`UORU^(@~$R<@5NDb+vTI?B5{3%_sarH|Bj9DELN>g)@H=#E8mY^xa^Sj<ytcw z)@_L!CY|!CB%kt1E((veRryYeUl9q8-bWm2TQl7Lenolb$$~5#%bvGOL0xgIb><A; z`X0EaZri55vJ|sew_>w2cpm918;c6v5^rPb^BlyqH)_U%doFiQl*eb?(QWM-u6rxE z#Dd~Y#W7eiXdcGv_bJxt&ld66M{#FC%4@7}!${$7ftTfJJ7l0V;cohuJQ)~?OL$A+ z+4r%_d$eL4)5Gl|jnh4+<hR?`F+8nH3R#O9jvhkR03aws9dgBhXZT<XFqQ3o#tNtm z35=pzqo6Yh!{#<2AO%xxz5yVGMwr7E#>}I!TG!kGzy&P;(1w}KurWRn>Gu>&)z#0g z#lAtz5^;GYp<HPgH00;a4t7f2NkV;gsi1wrefTpXSfUw=5+y?d_I$c1+0!H5kgYzd zF}w-dj3=b<Q_V<JvEFE6Y(P|u=|~s~`n?Dogz5NxG=&ud6aL8?^Q5|2pGPD|lDU~1 z`>SH4&!l31RkF0CHsbe5=QJ{|%KrdW@rk$;D)oGSD@f}~ZEzL(a%&~;3cfGpPq3)E z`BamK;%6=SY-^rf{Z4#k-qz&QHLtVm4^w63WOwX7>FZ?HBTe6pfJn0XKR~I&c+$Lu zNV1X{w%x16f*H1|WL9@gNWVr#gY`LqctvgbZTGu#miy6DQki7d`@&Pw&9l)!O%uXv zjHW0#nW<1@No??Qjp}$o^*qrn#kaQt?`o+jQj;sHqJ})_JKG1UszwUhL)2Yqf~zo1 z&ytFD*d?*Pa7wuGe`A-dOy~$HNzT_{S2xbw4NZ)Ht1xlSR_QCiait?BEdKkn8*Vt@ z^+IfoN(GcEl|`i~?@Pq=9266wN6f#*Q#7OViL#cl_337>L10yHcs+=qU!sc2E4a8* zCOQ25uD2Psi39<z8jni*4AiNg^{6pjjxV|7>vZC{5uK#O*{{Dhw{NiXgzE+<(skIy zb7ipbDn|&2vsF*<4?>MH302xnx|k2ULz9}Scva0lnxY9c=(;zCuYbIIY7-dw_w#${ zm532XRnYHRDTECYdY8xO@T}In`Ejn-MBnt{+V7)J{3a?vPT>ti&cR#jzq>z`H|Gfl zt>PdqL+Egqu38xJYh4LC|C&&-nU6NS=+=Wx>$#cGB&+ZGTL9OJomU0y*Bj8{UDn`; zh|6YFe*BcO>9T~sw6Yk)>GFY^PK7?n2{^;+c4KWo3s<M8-)w1R(RW@=FyCyR;_5O6 zH;+2Om!6Bn^dYi9kAC~=I9Bof2OKEeN`PwJ?{lnIs(kBC_xRT5@SG=z#^7DQ4u_NI zdgs_N_9u`KYP?}Y<j@`}!Lz|@_=pmvnxXD5?~*2j>@^lI6uDx<*r$&Ef%|;nD~E^A zp%hXNuda~#Svk}F#jn-q#>h8ld7by2V4G`F2R`;0mUo?9fplKoQJ3dr;@$tUyj(Np z#{Q-UffZS<DCoG<nc0R?H<A2^jpmAksc2^5VR1rbzBG)e*WICxiCST$3ug)FI*O7e zZl1NSMUMteQ8N+tRez>*5giKMbm9Yh5sEMzM*KlNa{n@&+7N&z1{=Oefk#z~jL8*< z4+rxxdbY~Di1M)s%L!^JTRv4;ryI}}$!;V=B<{G*R)@QEL$-dmWsl{?4r&25oj4uN zy|`Y}jioILL(acA_b07Uk6`EApz)lqTAy$)R`-cYTDt5KSp&|ap82#lDX;?0Q=eY_ zne$!j7ywW@S3Ot*kmj6VPmUfLf3Z;M2k^BQOX}uy_jUAnZPwTihpm^~icah08Nydx z?V%61Ajb*&Zz4HTec~T7P}E+-e9Kwt_pf?nBtvea*WyWdwvuusL%Rk85~d<UtRRT2 zTRaTi{?!C*GV4dB?e^~n$jG-At*-=>)OY;gznby64(A-&6x{Dm{uxl-0KS{eD$%_^ z`e&d*+t^>4DQs4y-aK`X{;i=us<2Vd@Q!ZP$mj1Y1lBRrblESn3Y|OHXS@D2cRl9V zz-X3CE0or74LgJE?QF9Hi*6)V@AE?zNYcLL-H;iJe6*50H;E-~9upxPvF&S?7{DJ{ zD#<q7GVdG*A0BaCvDm>V7B7#_W9GvGwybjV#ILwq%TLD5LXUJ+S(iC#l28<e$As8z zsOU$qu2<o8pP$Yz^`Nh++Vd`yF^RM9fIqPpKb5TMcanzgySV6jhmZTPmY9Dl2=RIf zT!X!IO`esZ#E$zD6|%oM#Puvd(})FyYn(68S;N~ZalH^Ms<jJion(_TCinW>f^Y0G zn^e-6IIh}TtdnMSGR+#jZV|LyGJ^m3t<S1l+N#iJpA=OWY@*S<g{hA}l#N&tUl@Ry zqyg83*ozmWxEW6QkE$2BzS3j3g-V@sgll~LJPmS8;DYZ=aa`=-t={TbcPkRuaj1`2 zG12%~7x=a^Q<&QI-Z)psCAbsevRJE3vhkU?3rmUE{NBm|POWmkj$BGV4CF`z)jSi# ziW%0*-J#3i_Z7rKlxeP6|Nh!OP@=O&@Sfd>g}V^(F;JYk`oroZcOd!*gzISIg6*N` z9pY$r*GbPs-makZv<v>i7F5CHvp<Cs&N_%gGDwAspPK)Oc|jovUsi>b=><3GCn|1S zc>on|zxgZNLxh6VE4BM4SU;7i>>Mb0UD!4jO#&Yqd>?7}*KX{Q&Qz6U;$|J!&aTC5 zL^H?nN^9dqXW@S2=*V+1Ei#qVB<=4a77y+3MZe@)j56~l%_~n(aJ-zJ(YO8s%l@qi zmGvdSe_Zf`R6#V>6H`0Ko4@AqMK#&;e>uOUzkl5@5%me0<$BIygvkWqrr@?s$e&tc zr*y`(TCo_fSx<VJ@mG@FSkPXHa&+YI#dxWZzObHa$nlZmiZ%{RJ8uOi6kC)^WPL^9 zK#cIvWdX;P1No|A?mJh-kii=x9VV}VZR}X0XzzPdoa+%%Y}sUyK$wy28q-x_rws=x zq9dza)h{=I{Ygptbqt2XnWR$LUR*+t-RzR^m6Jkv1iZOfhs~xs@ji)gYv7QWS0?5@ zS@jXT?E7(_N-Hz}`tTsPRE<4pY;_tgB_M^4`HGKiDCbI>(CCp5&K&YZzAguOyG{m< zaq;?dKW!ax`}9Y4xGfUw{giInSbf*-SfT=Yj3t<iaA&NTR?T*5yo@axEVlkB+=b$D zN~32cwoJX(Fs6X&7X5Zsg{LoZ-jFl#ifF9aPE+EH{*A!LOoz`%LTu`xDIDH)YpHy$ zW0gB{?D{gL_WxMaUHZ)7-Ltvaae4`0PI4wO4}YnA9X@O!6WM^<qg31@sDf1fOd>WQ z%Op?^f#G#m<uhfxVyP(dk9l;*!ER*qlkAg2Dt5Hqvki)e4c5*L!W4q>L*g(b@u#*$ zmSglhOMBBIIrc?23Wu(iK#D7!6}RS@7IS5MCUG4?jT+9Z4fgwhLbmF2JU1jiT6YL= zT*BW2zw<W@G4lK88#-}wSIp&2KZ)TdJ#u;ZA6MEbbhqGHnZ!zew_AyB-L=;Ovhq-% zF*E(#%izGR?cx1)3!gv#l^AXpD-Ghs+sDtu{AvIv<E!`AytV~;VB_GFhMM`O1Ft&J z!U@(8Xz=sgICVZuUZIwenUJ#S#*eL$QWstK!<l}^mP)VZr;h9g%dE40b*RXRn&259 zRrJ$MP6nH?W10a6KE!pn8#2g|T2}k5VaFnO*D;NCXpE}lxXy#??WnKefg~KyFxq}E zE2m8No`LrV=lrfGd$8p!)%U-jVcM2<(^`1%yyQen{>ES$B=s_Qv>gZ;i61HlF6wZD z&8Dc-z7~F@A|SfKB?s1s$&%O;$`)M{)gzV2(>NB$qxUJFEPmI34$<;C<_e_xRExE- zXe@MW46#;!@fg*T6|($@U!M?B!8asoX{zomSPj+x%PFWwwM^mr@}TjqpS=2=@Ex{# zQ}5#aqp+jU&RsJ_>OAZ8(MGE;(1-6(34P1eXYFoB|C6eTSApkq4BTxaTm_YX{PC_i z$e-|x$HFJ}$lEc8rmJKvPuYg}ZZv#mraI4IKoveyLld=oc8Fe*^5Zmf(hPUd3q7l< zkjr`Mv=whBL3U#w8N2|n77wugEEQ|Loc^`CHPh%|lGx($GyC6LuZLaF*lB{()lGL- zD0wp$h>X`_#xrMio2i^Pum=FMjd!JGT+hVyezajSPHpsJeg8L0^ElEQzb}$$b*x<C z>am^)V}9!2PCs$d9|y+XOlOmijq%j;AE?8YpW@^l2WVVP8{ml5<EbrX)4n45kEn?^ zbu?`sA}m^ycK>0%iJXe3&^|!V8OK=j--m*ru#|R%4q>IUaThrZ(1He;O`A4&?pez9 zb{t|p#$ux(^wf-~vuc*Sn}vjvYL-n1M)4c+aM*vfkdR;@DfZsa-An^>xM**)lIvaG zUpXs|(o<P)+F0p$BM|lt__D%3nd}16{qc-!a_^+GwAV;C6sT*ea~}^>3EhC=z;w*~ zgZl^_r^Kub<^o$+rF=hpe02Iz(<1|1SN|yJhCVvzf!;PcN5;^uALm@ih&atgA?Rl} z7S2tQLQFdTaGZr9(Y?wSe6vdj%^6v(s?^d~e<aziv^Q=y)*jyfF{6%DC%WM8U}#{; zb<{{%|MjKAUneD(E3blOh?qxfk8AWzX@&7{1=3D1KRT#aOORGgmU(C#9ZO|9)V?du z>x&Mn8_D~da+rI!@mO33_cIYpDB@|H8#>cs4IQ+6Y@b~wQRFT`*0L%eytgXbNF$W# zst|mqq*`|8i}QTvM(1<h4VFUWt8;b<Dfac0U-PY^+il*@?QZDkAtPk<>G|u=W5y~C z@^X=Dj^a_y4=b|hSZgY2QD3_?I*nyDbU+avRq69_yPd*pvGLozb7;*9aoNFDXJg!* zrPRJ7c}z4d*(?#oPR`60bwijOCV9I%B+=GfeUrL7k~Up@Gr`oOm!<DGt5@U;_m-`B zmzD8kwrJWlh<&BZ?n~Cm@tumLV@_AE)v(zD((r-N;~yjI|0Ne);Qu)n{hhGL|Cx)v zGE}zJRK>9GC(&a|+aGe2%EoKd9^-PsLbvA8`RB(xeOqht=l54&viu-Q{U4@WMpy!p znlT9q2~zJrshxXMm2CSzoFT3C9*)u4IRbY#ed{Y)SS73Klogc(dY5;bS7l;Vf1m0| zl2uUNZt(NN%zehxiBn&o?@RVpM%jhGJSn<ywp~51-`xRC$(o{azLn1?Hcr+bt}3~O z)ghgp+6Y+e-7?(t<w7|TQ2N_&kY4w;h1(PT7;*B-ZGL1cdt70LiRmnhzzcjOAb$*X z&<gt-8Q2^C38hcF&)-B|AV+1iZoHGDrg!S)XIsFmM$^zOUG-%CA3EcTgR=mdye7ZK zbET#k&G9d~s_Gsos`_~pWTu6&jCz`$F@C&)WnV&IsGq<FLds&R!Li^jS5`H|;HN(Y zxCwgU2j;&9=$UYE=WI4%;?yhPI4M+m<%iDj`b~V=U3WP5i%Pd~OCTPU6<2AU?j?CF zUdjF=rFEuBN>wJAOx}+gEa=O*hX+HyJIS{DIcKNC%*K+3g@<+jhd9HL=4U)ho;hIu z9d{pXMds-lNq_Nsu{G3<dFn&|h4FVkzsxQD>id(+a`WA@mfYY~v{z11;~$k3@i^(< z<^PJ=cc-AbvQL%B&u&&O3Vk+w)8-h9&#v`H&O{C_h0~mm(M1AN@FHh#Ov`6&VNS+B z5I@UHRp(jmd$pn~;)AabLMNZMA&<V*!y6+e(p!gvQk^q<1FBDTcRC@Xe}>M@|DxIJ z_Y;&6uX~nM`b1fUYi!zh_%634cVhcuqE<p~ZCXlF;@dO^43H2k2R?@ugG4Mh6dhv< zG4Qf+wYj9=b8O<OBmtyw0-eFXAAGcr*jsIt>?*LHL^mWY={PJp)PQV6D~^Ot5Dsp% zaJQqIgn-LC_!HZk@{*N{Ap!twC<f1YC050muFqOW@`0~`zRv_b;v7z!u6#la7h7Jr zec7>oX|P+myzIlV=GgY$M;%fuzL~wq12w$7z9mRsy4Hww*!Ym5{(T>2L*On2_W0u( z*_Ez*C!ZqyKz>lVtkYKPD5(5ZBt~UW<jkgkuGf2;?nbN)q<H-IAfVbwuUQ*LR8K8r zu$$?0PB7YwssbU`zcny}JwrMd#6v}fgOwcxkzzf@t?5Tgo@FhV$64R0>&LX9Yw$a3 z$z6M#*<lkj$aa;r4K<-Z<?}1@0S-}0EHWEXB9FyGx5@dkw%?{p8}KjeooKaqU*L}2 zjW90$&`A~i7n30hdq9qLR9D`q+`61y9SLyh_ZS$@#LDfd8i!@D#q;P8X?)o0*xlAc zFkbz2JyLVc7}dV?bRj=T=d3n$yYz@)shFOg{bS=6A!QfYB)B!zDyfE|@|{>Hds)C5 zLq%!5Z*kp@+Nm_q%MaXU-^8@jy*toSNVvb2sb{=rU3i~TyvNq0=`R+XA>F3?{;J-- zHZpt?<f%Z|MVx0ZH8l-0Y>wvI-;=mJkmoz6NUNQoIwWusAet$1mTyCi=ld(lDu$g7 zFQ<Hz9nll~-scf}avou+%eQP?q4C*<_wQatTd&pY=?E=NEI$9MULzD^S=TkoI`U0T zc9Ls}f!Z}wQ!7f!3e5N;L@i9f>*qw9Z!3aQ;K_465h|H1Ihs%U3l}yZ!i8lS8sA&a zXygat;pKgtV5hY}H~y-uAT7<k!aI6B7t`hJ4(<dt>J^rSFjlKV`*t7A_w#==k@pNs z<qFV%LTiT=V!N8DKQ)?AW!3j}E_*&MzNE{;oKA)<25OnYxXkn7c<k=6X&~#na442F z1ILEqGAx)z<aPF&#^x^y2S0rO#Ph#SegdgdSi%X?GW!ZhB>blYtvG*WN?O{|VZipU z<172**7_8=^j}3VrX1xDFrm^@_K8B|z2Z`bqlv?!QhUeq?%{lH@%ew!myG<@Q+z<R zTtjC;3p+$%rsD<085RGz)~BAr8;MS!@4(KT`cEjy7?sESCg(UQ(!`S|jJYLM3sy&H z>V8Nx0Y0kWOE);bki5qTH+aBzS)AZ9kg|wkqgyrutK%6+l82o?Po>`|%j}SPaCI#` z$ZQc#dnt~R_YlPHquSEpTedH}f317|_9eSMk22YqT!shzud}S(L(?~-?JjY3_@?{s z$X<@FM1(UIKRYEA|FkTL?V&LCR*l%^y|`TCGbn4gT#<DCI#Am=oP0$X9~<1D@`POS z`)|Z5B($4v$ouZ(3OO?}Xj*W2@N{RaFro)N%YF0wN)$*7L0ZTNa~Uf*@!8)ebu~x3 zAO1dSo9Y|j*3$M+Z^>Nb4)YHqvNNZ+hI_O`!x0uC;>ah^^p}hJzMQ*Lwn7mfpjY2k zE?fFD3#<@3G+b~GMp|h4pI_ykfj8I=FgFJwmu*kUvigq*R83i)e**|<--tBLL{2%E zAH19M_RfM8-gl#qb>A#Kp<f)*2V$((o#1AmI$gi3m_31q;nD~RFZW~<Jt%t<!uAJ3 z2*1v#Do&&utj-<jZ){c8Y{IcT|Cd#cN?LybcBelOuyfyWVjW^WV$bUN_GS#4<vZ$8 zbTcq0x1Nc9Emo5U7VCMg<zPy`v814UA~KX~XtYg?oMx05(QSDPpN>P*FH#EIw8gno zU8cBjs0aea90hqiFy&w(KxyStXid?c7)AOG<3e?xi#y*GJdX_NYctUm!({0@5g0QM z88ZGdK6|^oitf~U%q<5T4I0$0zJ*U^ZLc$r9fJB%hP!3@@TM5kX1dRfv<_^-(-2qq zIrR=@sYGXU#N8b_+rL}~gqpGwVG}En^sC?gKE8gfDpGXg5-AN02YCSc7ahXT5XH|7 z^#tvA@x}Mg!sZ5KPFv6JNcB7A4%ZfuFB9sV`o)%N#I{H4L(C5s%}*+9B`Zu%r?WG5 z<_1z)djb(gF@n~3jzPHfSsI%83W{$|xxBoU$M4<tDZ*|Oh%X}<bC){rm}<Ox;^O~K zEB>|QvCceKz(=<tDnBU5I}zC51}Z#Un9$m7=2sEWEKBh|{VMYe+m88wHhV;Wd{N)h z!)TL?*ZRYUCs7SUnb-SO&y~i%oG?%w){D-+Z!ruhhe0(oza`GisI!NMm*3>SBsqEg zR!laU*2#UvD`4Y&DI}veCp}YegG`&Y3I93VT;^}gveQ1`)R`o^<ary=tuHM3EA77_ z4uK!;J{c;ARrBewB$j-g)~Y6mcTAnMe2@0D{q!pH{pxpJyA=|{tnWJdcQNXhvc_{^ zX66o`ES3qtYA>ZLuwtSFeXD`#Sw)<`M_luXrG6&$B(KXeFNSj*_NlXf3Y|*sN$xGC z7JD;&Zdzq>-TMb^S5Qm;QS@J}2cw-?cE;Vx)>GA7sGM#Mi5pccS>DJiXO-=)-_PGg z3FfO#6dr&DzR#XZs!J>t%~(%7*<m5~br!F5b~dzx?0<AEPe>;IX^Y2tw}cXs8XRZ{ zNS5R-ad@iJ=}GNf!Z*72#sRGXHoI|Ab{@59oPII-yZG-f>qOg~xEyH)-Jf>gHs5q1 zJJHcl^}YM-n0Lk1Nw2=mg*ZJp=EW<tu~-olmlsb_DZ1d=rG2JRG$gNVU04DZxEaO& z4YK5!aF4&)&m4*_Xno^L&M$9GpH|G;6MLC3>fc{^#uAe6s?U57X0^olkYF@bCYJgP zAe;cO46Iq_wS8cq@+ESoG1JXM7YbZ4RJo1RJ<Fd;t?82@ud<g+iIYMoaMjZRSOk(e zoghX23Ix8??8}kiE}A#jFH@B2KwU<#7lHyP=tHZ{LDCr|E7NByJ+(t&P4^@+=tuqE zidrf6`{(;V=YHC&nQyiZPm&?OWi2`+{8f>6?I|c$n}$q&9(Hxg(NERZ^w!MzJ3+Jw zz2T1d_PN;m5{3x%pCw!Y*)bVhWqTOka64!irmc>EjLo}4PoVjHuDKwdyM6FA+O?FD z`wXVJTfj3;J2lBY46D72pxixoy(cs^H?*T@;%yMx!{zw``$uzt>jj3KcJ5NhKH=sX zfkX8zT0SU>c{0b^$JpHCB9U)AI(((HWGYK<DJ$wW?;6lSHnpX!22NPP(HB94W|@TC zI#q=`EfvdINCcNt?)@sfoA6lTrrxu7?>@*=vH0errM4-UyJ9fjd7Y2n>M!2+fWp}Y zp+6}t?bsh|E@^C~pR_$X*)OI9KF;=f+dW|C-rx2C&2tsHV0S!k@GJYxVW*{zMSYIM zKDJ%MP}>JfJa(RG`})_=+9BM<!a*K>d&8p$N-H9#L0qdJ7}XJ7^9QV7_A9bSYq(F% zFp3xV(}cuJD4wr<Y9M=3;6dax<sZi3mPaiv_qa4Pe|W~<u&iTq>QilC#BeTGto<W$ zN~5z3$3TJ6BtriAodo7f?Cz3w+zii?H~Y{4m#h%NtD!OIS|kqqM=s%!-!8Y2dAo?^ zZcqtgm9TVPm-g9r$ND;#zM^Hnjv04k=xR1Y4{Z_VUcGN3r0VwqC21W8Mg7LyH>PSr zs<UdIhO##(?2F(<!ZJnk(D0SIiy+!mE1rhRxJ&F3ZCswUum5&&t!jl!W7^t3%2rz# zr=AiR28?n#=9bKjF*LP{^7vsj{m$e`BRi{us_Prw{W`_|@<oGko(^mnu=k?vk^1`) zTwrbUJ@yw5P0IOYT~DmSb&o)$^J`pr-4Evk`j{$~tGFq~>|TKxF1y(I@f$owgF)sq zNt8?k;Ud&4xWlrQMbt7p4W)~ol;42~5-&~-+PN_QXDEN4+eppbrQ@}qkjlU@i9Vu9 zY%KIo?UOtCceo|f#XL#VZM<v5D`L;YJ@%KB-W#HsTh~pGBAK&snVIZ)g+KZ{6o;dI zq2bb`pKb~oLh#1lMqp=MEIA#w7zA|6=J7dJd$5Gx5r5*4brMPpZ)o1YU)gxN{NW2E z@#(EW_n2qMkxdv$)Db>fs+|UCIde^7gKzXrKWJX`Q~oSC<^W%R=~cJZp_F<D@B4Ac zyG40Rs;x~wV^12BGj3F5-eEnC=Gjv5lSmzRa}${0g)1<N7jk>EXLXR_y404c#39vO zeCAT2OlJ&RjzIbG=F7DTseZ7|V>B5&nC}Wdc}-e?AX9CC)slqflKjM$+kR<@KLY+k zbcwAtmfLPm?6?SH*}otY7A#`ck|AM#T4d7ZAjgn(c?TnD>UVtK^ytmYn3+%A@|hv_ zJF?*|NRp;i%8I|PSDjcH2Z=H>mwOBI0=mL(Qu&1e=0w6@M7#GLg)-2g<hS^iX_Q~4 zvge=c>L9#5NZ4&%$Yjx8A$g>ej{aNJvFq>Ny)=0f`n%onFWkU&=G(A(s44`#QCv+N zxz|twN^OcEw`KWtO^AuAL-xEmCi@w@Un%=L$0DY)zcMAq_~->4z0t5%TMU=0I4WvP zr4fTB?yTzttMk2l>rmpIfIv<ZN;1Fq__5{7_UXv-OBJqiOvqV^?GD99`@>IpU$Se? z#TJ?7Rox^jb`i6-C3R++=B13>HIzP7B$o0U<7F;bJ^#wz2@9|bN56KgMmoifG;M)d z1e^xu>pm^AdNpdPr);#25Kh=eod1Gy8gFHq!39IgWGze$(Fw@S(NF3u65+HJxcPcV z9bS^7WF(Ny@He<U{H_F8L`Ot*9s@=C8ZgPK#5WgkMJpB61ZAU%9GXO<>3;`r9VefA zi+#eZ-9lW{V&=PQiGchm1`BO%n&9<PTeKz-CGGQ>*LhxER{D9>``<oIk}|hu<lDR? zv22^POnPS>`nj6OKU4R{G(pl>Kov;)j{KuANOXBCvv&n{_G_=YIzb{UR!*DAxO<8D z<#RwqP|vTu(`)r(^~xpKC4c@6b+G0(Z&KMt$?^pO{oP9ugt`ktido4H<oQM2GIjZ0 zcjb^0>mhqhQR$YO>nl`*QUQTtdN6RT=V;XBxG!qG^ky8H_=3Cg4-$J}zN}u(IltKg z#$CZ;Y;xQ4>0gO-D(5jBy!ZZ%=5Nn%&4y|sv5>uP_3ivI6`vS~>_U3(J&(}W=2^Zx zf54?aK7jM|<Og46M8XUNmAw%*$jog=x4}@u0?~GN_*R$s&+%jw=x<IL;Zkl1UH*=+ zSn=v#@r}E%rWX~MiHSv6om@c4TJxdq`f<o>=yp&a))Du;`1r_CPaJebQv}#?@%G4` zh3e+nx4{PJi1nCbeJD>C{OJY${<57)2wHfqVj=;$r05wYR8h;ns4td5J1<P@xKu_7 zu?8j1>3`4ohGv262?8xe&Iny>qCzfN^y=@lbD;P9b9RztE<z0Qj&D?i02590Jf8Fi z@V%qnM1rG5{h%c$9vh@c>`C8&eQVc7?%e<K;B(eW>6UNbtbM)b0Hcp~Kn9lQ3rLO8 zQr~O3BU4N1%@$?Md2o{DxM<Jw0*o(jXGJ8^-4&z$-5lT~HdV|x;JV+&AA84?LVHoo z0X_+ywD#EmY5PZtMCW}Lsgt9#>=lbvk)_SQ9qqLSGTJ&m6Nx5D?-E7<g|hoBZcCl1 z#yGP^2sHpGLby*(C#Gc;2iS8tbaW?~1AJYKar9F~hV#;;8QNz^%d34prbxH`PJ+7c zyQP35Kp8yMK1rSL9Kx=jCrbnIP}jKGr>aH5Td-ph`F3{3KTg9!9Q3E@!^}K`IgF~S zwV_km;$^<gGg=p9B=;VQXD}%t%P8CCI=1jXD_M-44lujb(jl9D*4?u72H#G<zMX|S z#dG4xtGOmZ9+B8}WjHq%&+0<o8(`njuU}K}2+&;i-m+WN?tF}_*mQ~WQ5cram?i*$ z4`wV9^U3*A<a`XJ9bNZ5fzooDVCY5F>-IU&^|OscCBiE@@WJv*#lz>mJ%t>oHD!uQ zGt@e}*GZJ%oOjK>Y2QuzVS)czwjLq0#*J8Wqg1J}?|W;|cSaZ;RcGI)swc!Yn7uh- ztI{*%?!o|>Wb-ClWBmsQxrpa3mJEJ@-vO+Lbqou&r)Z`JMHC-;y;sVmM7H8%wS*Nx zXdjO_#A31S<Q@muwPh^#c40H%+2!5smm;tJ*7Ctz@!b1r^r;p2<_SW7k4%L>*6GV0 znYM~^Bx*R<FdVd7o-65<QSB5ymirI`qM|IO>or}oZN9_@J2`|^JJk*vF9R+)C$Ggf zfJNdz2bop2L1}$bt%`es_gNdnL@q16#z<J7=be7+cKn`eo6c$%QiCx~x<zzJxAo0x zaZ81dMv64Umvyc<%#h;wow_-sgV#P_@qc5vejM5Rjbpm4G>a3|v4|D8tw=qLJ+^o` zM*G_N&e^^XWnj5Pk=AvA*S6$|2a{djQMyG!5cWVS$E#NA(ZMOCyTLFL+NmoM;tYg& z4}-6=_PZ4Ro87fZkaYk;d5;(`HoGrTI!=5$G6>$F(Rl);<JpVntoJ3m<b2WTr`KdK zJe(tMf$sY8I&rl8twRkZr0!-X?V>c`qbxKmxHq=HX*z>>X5Ps}Dhdch00|i$Q`#+V z!fW~#?hdByLho7D9T+nV?|&*seEr2<ovOiXFu5Yhs8pi<D*}th{SAbI{Z+@E@I*c= z(<txXrp7a=;H9UsPMiFuat|`!U^xE{C;T0KAZ9x{Q6<AI=CbBH1TSoq2%cCH(5H!Y z{Sgd<zgn@IgtMT5ZqKObUweeQ`L-XYed;LGmx#Abmud92-(Rda^3{on&DDFdgSbEj zu1gu$Q~6j7tWERYv{t!6t2oSD<IGC_%IDp@Tp;utc-!FMUi51^1(jfuA)S#Ff&X@0 z#$T$tlP7CWPb_LACu)+wNtm)A?`Svww@-fB&lq3CxX%@TH#5%a3iIRj=}rE_Os>+B zXWe|L*b3^8!pPttY<>6NZKQIPeI*=&M&hnUyjpuS<&_@g2zBLyp$pdYTrb*#U+Gmr zeh=+82A0)#42RR363Pd(r-aP(8C)A0eWuUhEJzYG^N&ujym6qZ12|aPKY(A}b-qbG zamq34J@G2sBOI+-9zET`UO{^sE)*ME*g~wYIn6>}!uhf;k0rlwPnwkQS0y7;2oZJh z79`}TApIW&+P9$RqaVJ>^FYu)2BumQ+&bweY89V*S_e9tPFYfl!pU03q_jIs;w|>Q zN|&B>yXVWXKXwe@y%3>=0>k5TCQWO3nhq7-KmXw%E1c;=7qt#7-<M8hKH4Nn997sg zK$6RP#LWvctc`yUI&K>BQtq%flw5a9?Sye<hEj)3l#Lu6^p=q+=#zXP`tj`kqPbbg zE2O-Slj7+X)jyMzXo<r)n(Rz&>Q<^>e-!Y_@M0t?+NReQ%0}04ki}EFb2$I@7_E|9 z<ZkfL=9G{6@e&E04&vyBPqm+(VP~M(@?0+oU(WPu@E3o+zcu`nm`p};)E5y(ghpdO zA$)}0OM!c6=<Jwra*5Te2ivth!j?7Xp*DQPlvXS=Z3(kJGl^}f1mPUTWUS;0wDjgv zz8={5xn}+a?fv)(kI!$UJH!p@SW<7TP4p_5(n7T*h|*;up2na>)}JUE$k!~v)wk<s zrG)mAy$GrZs7wvh)WkXnlkb8fUaG|m^!Xxq!o~-6{MG@kDrnO9k0s$(_8)yXD&+2> z`Nc67rbGDyy2-B|GRDvSSbD*q2dMUTs%e4dmwPqt+NK4lpB%XG59f!_Hv*uGN43o- zM4^==aOv%nOV5MegmioRy}1#JiulZLxo4xRk$nw~1)0vro(>NUE-03A$3I{{AzCfL zbHnZN)+f-Riu^9*i0e%&2l$lk(0;T+U4k0HeccBYA!k3_u|WG)6-gAYWWBF-aoL~g zX+3MGUcgS@vk2ACSUPq1>sG3F>4o&JJ{Q}nTjd7EStvpW56*pi4oKYnK#1KR^$6dS zff!DoqmAfUL_^QP2(;rQjGl6DIR;v1|Ads%+W}AFhfr{%hvoJ{3mmDW3H1yPUL2vN z7CeXBIv{B2ZbujOMT8uJ=DV?yrL#ob8Tx!y=Y^zfH;TseJx?35*E1mw2MSVPr1xR7 zcy12Hkn@8thW0aI?Dl`?HhxaB`{is9*C#9A1x*&ijJI$3!S_isOQ)ktQ84S}(M1;F zsK;@RRF}PC$&YEZIkRGxOzC&bZ5d9)i*A2T+M%~m!u`S7TY|CMjZqN2`jZ9p<wA37 zQWsoupg8Le;7Qbg{ER`WTBTe2ks1%aqo=C608id<BA}&bGn5V}IVAmeStF3Y2u*&# zr9z9;aKNmV7`{!eul_!<&^-K1tmj=a)QOAd0hQhRP}=$q>{a48dt{W;bAQi5*XocW z?b+m6Hn-q=DKd<wE73f@;PSemjZI``%mWN}9dAuiMrdynGbV9Mlt=5Oi9Ltu>mQ^R zbhuA;e%BKno0T08BrrQ75fX>?yltxay^Cwf+u*Mp7c1k_5lM52G&heDLQDuA3+)98 zn0!A`=I=l^r@7wtmesh8O-g+R7;bv!Oit(MlNCuUi&l?*DY%Gj|B*yGvpS<u;AX?4 zL%yl`4bPNp=<<gh*du%P*-_na!=m>)-|8``+FG1BpRJOT;@7TJS&M?NY+Cr0Irw!r zzqg<{hAZ-M`7y;chg|#f=ip`a=?@SWO2VbF#wbZR_k9-hDn=P2X#MY#F^s-6=K-U3 zIr<Ir8`ZxR0i6Jsg`k)pN&0g`H~sCs&=lE?NV|>8x?yd-*dgm5u?LaE+V-&rrNfl3 zl_Vm!Y4bqaUHs`hMIiImL5qPGe1_5G{XVr_(7W3Upcv{k{p;hOtZldntnxf*F;VjB zuc(WcPbMPqz$<6)N5)mCpH*MNT~dQ`<vzUJpyrkn{>TebPn9^8lL=`6O}I69caLNR z*t2o0g^=ut@h*u^SM{49Jp080c$>;%EOZ#U0~kI&E07Zw5Zi*vLhrG{At?Nnxo0dC zD<n-zSUMm)`7x(H+4j07oJu!3W4zkYXbXwmMONlI6QWsY7bBfXP3~-9$6vY&v=wPE zw^x*W8(DB0p7)ZA5;{IsA~igIuWYw|YFM|s$|VuQP0oy2-|p*?CB&1(RqfxUkl&G| zp1*z!m;zL)WkvfY2JI|)I<Cfred-QV+&*>;A*GU;hP3Yz{~W|kh}~4|$Rnlt_6!jN zV81vZDS3X*Mri`eU*iuQ7wF<OF%#~z7-#N%-Cnk^(m?36|DL#wb&a>+SMjQc7`ODE zLNd{k6!>Z~_7!FkTrPKL0FV~WExb`as_n1FM;G9;UzxBeYt8^Roy9d#Iju+#WaqVy zkD<hEqN<<kkxruOY<b4*z#9kT4lG+008dvLdV`1E`+zp|pLw{g-+p*NX)8%?x0PEO zDL>po3{e{8D)yN>5aW#1I}maKqu^bnetm_BYA2x4KyRAAZZhzS?&fQ#+!hgPn?>NF z7V$um@U9$YSMN7$tf$vga}?J61CV8E4j)uA!Md5_JWS_99=}2x?PT-Pw-H<tIuk1Q z5ve{<nYQ(FVi&lXUcbp|;4$&oh<(lT+fwxY1DAl)+~`C#+fiz6rsLN#!#H69k&i-z zBAtIH*9lW+8oK0VdKew?+?6PlvjLvYaIbC-R-=zE!{BnCn)$>Mlls_GmIp>Rvl33& z6SEa$Xg*sd6xo*bb<Hp_i+^`_uK6L;jTtHGZHAyf);qU?ao!mBU>`k-y)~C8@0`RL zr2z9DxlLd#3Q<x^dit$k#^MwI4;PLGhIaN8hpa`Id(5Kq@!lIVGl50?Mkw1K8_G0X z39WUzp1#QIADs>IQvw%Xb0P95QtLt449gw}MBc?Fzc}-6r5tQ{>Np2{rvBYe@E&ak z;T(QvO>iC|oA~or$Jx3`o~K;Ro$ak;4J774lJ<cVVY%71iuvY)?d`+D6|(++sY@^i zcKLURJ=%wZLIb_ciX20+v0w>@d&_K#^J-LE@x?Z}S{Vh1`Br58ZT2zfer^O#{}$2Y z<&-0fW-ZuSrtDd@KvQ?zn?J7Wy>+p!7N&kxYD`=&^he_?^K}=F@Ewq(0C^g89R)QF zaJu|uCn+aa&g@UU-?n70Pmt+OWaMIPE*aB||Dh!#!B6d7qF<k%omp&$Gxop*2>CRa zy4tpjtitzV=V|a^P|Yvqj(jeC>k`|A13u8+Li4G`y-xpqa#(@?R^^W`Pt`J0F%7Lt zZ(q7fp{eX3et;v?ym;`QT7d|Dt<*k~GXE8qj4gyVCAy%NN5Dgn)cVj<t!7(%>1R%{ z%(n!%_av(G;}~P@*vEAdj%<6Jv2Vc_Kkwh!D-eIpdNs%=_s5Cn-K{J@3~I0RR%k|Y zleauE-ixadTwF3`SJju^4t$mUc6;K$mg;fX#Eq-XEW&}LH%Nt~D?meznn<2Gc+CYW z#XF@}D^|5@LR%D|+Vb<+s6kV2#tOAVLChkM3ow-#AyVZgJ^puao?qW8EtN8!=L=Z^ zLu|OP;7K@<MVXY-Ikg;V?xSLnp|FJ?Q_D!%FaEG7R(G$j@>K^U4!mwu3}jl$t3etq zpUCEB3O9fw5%bTb@^|*7>T?8XSEf4Y#QUj(Re7W*bl(eV2uTF2I!1n-{=+s!lgWzN z$>-Cu@*)Ltgx?yE95G1DHZ9t4jc95XUj%WPN##fX4e;UMWO~)l7;e2paJhF!7QNuQ zfLY{Ux<|AALdzEr6TTwITz@peLr!Aj%=&pu8&GKzxqiQ=fb(%mc`2jGf9GV-lUQxd z?6<k=V#|_y4mgleNuz%1)?n;&$xsePL|v6-2;B7o*i0xdibz8fUF@bx4NVzlSt4gO z-R@4M%^zBtJpb7j)+2AA-*}eho?hN%`POsG;d@?|0bdIlZde%4&OudX?CsCCQ~V4` zQ0Lagnd*kqBY}a8NZ1J6Zv@K$rc{0OTMg<7y4dm7KXmoK13(Pd|9{}h3CZZjvuXb} zX&?2gQ%1$;e@m$4(*D7V{b~WH<&?Ow66DM3qw7^4*aoAs6%U)Y#M0dAvHL$4N};l| z*EP`xj9vHFO)lEgQ0uoJYsVBt;t;dw0_(CdI>yaB{ba~?7nEVPBWn?jTu;qJ@1o2- zbjq2J->nMR;1dbgL7mdc(^Osi+3l}<^uk^o@Lop%POe`S-J5JqGb#;ro711>3!i0D zik%}5y?aEXIp1gZDgrIfQPzM>%x2>vbDP_KO;~*P9fKGB4rS%2AF=?jUFhuIX4Oh@ zPzpq64=y0b{Wi1r71$v#i1A7*u!L?gVUpdx+Z!hTpF=IF32*{V6~i#-$=oeq`^lYc z;gpB;rf^P#TPZ|HG=}f)Xwj`k<p4XZX|+3D9DI@wLn9Rv6h)&QR2&6!#+=jS-eira zr*(<%;#i_u)#-LJbpfdF7(#@W$QIr$#;b*M@tjzJJZYneDlzRaqfIfuPu4aH0-shf z7dgv3^!(f`&G1uXON9K$fAv-44$10`hmFBvMX}%ENy=7RqL1^;B)n{XX@8|@KXuzw z5yCdBUn{wi`f)GB!aK~gLH^i}e>-}ev+vz^Z~8%mi39C5D!v+-y!~}lNTjY$$8rTH z>aniD!qGh$<dC4@WOUG&8tOk-?bkG=ij&zV^wcuWe5g_6LcC|a@{}O9Yfc>0Wtt5& zZtQi+_;oT5DR*sZ^8+IZ&rwLHhBjh64Zw-q9vKni1{vIi4o%+%JtY!8pVI|w(v{Y$ zxZBQQ6*(or^lx7Fy_5LulIqtu`Oeq%AG9WIRR0Em<SE2^PzG76*~S6;&UktQ+a}&I z+|W;+6N52Z;eK|&onE23|32sqBc!Y0<&?E}7lZe;kH;9~v^Yu>!wTwHFdcj??8iVk zDh2M#;{f-SW3E0T9eR&VkIu$Co8#c@7>FidQxnsqLR~l$?;ZF$6;|9@dClUI2EL(N zq|XFNj<M%l(NFdR!B;7J@#O)xf5&uzpSINuE@6hJ(WtTV`Tq=cV|?)ehK2<FRV|V^ zxW`c8pf#9VwhSkh=5d|H`=E3pc7`c9F-w`VF)k$Sc|(75-`11cQc*eTt9;Ud<lTvK z3)f~7={ZZx+7T@Ec`7nmd*m#r?H?kojI}d)0%(kWX4#n5HpvX$266bOu!!|Ar-G_X zp`6>9CsbP*n%pt4Bt^Omi|a23@GDCi4yexA*uF(8Hs%I^-GKZ=UW~29?+W7FS1Ftq z<?c@G4ZwI}LiKrBbMB^Ykt%hVIEC&l-9;te_8O>KUTh0Bxl=OsG}qc{bwo`%Qx^#l z(-6X2RXG4>hF$2-DXN|?IorT|#r#44ESr$<RHuuUUkp{JCt@>}TK6E48aXZhQBWi; z2e_feDbl-?{<<06imV>Jyq^NsDgYpD)z@J$^{`Zm7_SGqYu<V(Fq+|D#9NQ3reQ)? z>_-aEb;PU;{i0j-vbegx4xJI;1a58M598M;w>MDE+{?~RKrRnk39YteF6IM->@7lw zPC8<nt5%wcbPxx&RZFXV6Yl3?jBQbYDyMt;mlpHs8`H6cwI$_!k1=$|F6v_g%!Nh& zvf-2P{H^XY>by(2b1t55v3$Yux#*sAC|7dCb-xcYCjvddry)+^gT~EUpg$0}SPYwK zb}iJS=szr$dUPXh%=kYncFfq11bOVO;;04Sl{^(oYU^C^1z%^wa{n_W>9sr%C|X$S z;Kaert$OK(?pSJ&Z+E%p`M;$G{#pBoFqppha#Kvnvi|a@+fv+C6Qa%a=tj!Gz6>(c zNGoZDA#q^?&Wo~^oHW?s2$J6P6M)mN`_}PB0?}@2h&GH;4TNQR5+l+*fcEk2JE(|3 zae)2g)@==bIj0%&VzSjRQ@WUL$B9xjQ~NL7PSI0K)b}0UI15bM%|C2F%j*y>u#XHo z*nQvSKTtN3jf=6sxj$3NM_qJ8NEg_aHFbMN2KIdI4cGu>NMZ&^{#@j_-D{oG;OS@9 z$988+#C+mC4K2!WuUXp6J<V@9Ndi3dZHDZTKX&Bu<DOi?ubRkCQDOu>-`mEe8~KI< zNB|nB4vPbu%ie$WzYxi`MM!}**Y2vo^5y<{lp@PP6AopGhUFyun0CNtPvh>O!1iNI z+3#S=m)T~=G^seWng8KSsW3Vn$=%@=zHq<F@T=H!TYmD@;3HgwSN;y`@2el@()ktb z6E#jgxKKPL7ukHRl*rAb!0B5uVSXr*`=x*)u6r=!Nw4R4O{2@Wri_G|It9tn1WA*& ziKk<Y-BimRNA%SNCrNR<!$)=LPu&i#A$P5lCd{yyLMP+r6D+kRv52oU>^cP|Ff(KQ z>x8y><qsaJFzQ_nooADTxaS^Mz)s@AmggtCnz7iYAlaNqJf7UCwk|-$A|-vaVBYvL zh-!K@dRp`foy+&`Y}7iI_5GU0$G9`N20vtrxVZbc%iGb4Tk3C$hftzpfHI8V;9f{6 z&!e)w9piD-Mn$71EZ!7()(vb(MyUusetIu9FmkV0o9UbK8Dhse4|ma&n!HUczOl$? zBqB$ov+r_8K-S#jl!Bn(rv~NLc1?3O9%&?w&<kIu%Zg8%&&8t&8uX*u8obj&wr4xL zis&$ivhz_Z<*YOpBtYG__q1)KSmN}?C2;9(Sx?BxdXwzZL+ojTguBET9y*?>XB|a^ zEGrrtSQh`J>gB*Vd6m6#=^;dvc;sp&m+kAJHL43eI_#2Rz#D&eFFv|-dAnkC=~OSw zG`8{^=L|q0;RuQn9QW4we)_BkW%S;cUPVaHFf8osD+O}10-(@F<U7&lhI8$U?;A^W zRw3R|Os|BDWSI1(Up%jg4QnGpKUQ|KzEM_3%ZYZwzZCfy`w3O+YXshf59U4$y6&q~ z)7>}~OnETP>Uwqxf7<3XI2D^7!+;ctCjbQZq|<T~LSjt+mOyv}#QXp42-pGJk5DX- z>Qn7TC{nl$1uYpf06X_ykUKWTDQf<fF$IatTE@-IWVEkrQ@b8*gw5K0*J}oOK5JX@ z=wIoX!Mxqs@G`~$w<Uk;m5bo!<?oUuZeo7pjkJ)ftT~9Y^5!3Bz#UUGpK10v2mvks z(sl^i1>G9>Vs8+;?#8t*2&1?iR=bQgUeQWopd7d+0EHb|eU0mqR)l$}<1wL?BQ>yR zLFdA)#y0PmIRItln1UDJwE^m9GZP-tPICEC<Odf2(yT6SeElX_diB{x<|O-S6&$w! zV*}V4^=(HW!B<%~O0}8y+6eb|{2&_1L%JO4#*xPiao@~t7c5R<T#pqKDX5XpQ*P-q zJn{XE&d5~i$_O$%%Y2N^O4EQJ%FdPQIyMzs(&Z-3UXw<*j_01ojP4xS2D5Dt2rAPA zvyHJWt__Zn70en5;ID8mH01`U&LqU7v~N-WJI$>X(+kFgQqOeW>#=|L5^)}PjBuvO zKz3>i6XFj=Ksj(nV%AF%%4K^@b|gBhwp)BHM$g_B_ZXJVBo*LlYotnpw2ijw13Zdk zh7AU(V|)TFU`cX%XA49p_=NmUEBWENQS2)E?gLJ3savldl#4k`Ckv_Oze*2rUiJ!Z z9xCb4r5jCG!_yl}cxgl`+{dY+e{t8fD%3YkQbk)8e}R}+s5$Ms&I*W@aFlmE+r*u! z<ocgf=PSjVSyg!<&2Hl+y5hk-k{{MmWS3E+*?=C+o+}}h-mdJXbp*8R|KvH#yW9lL z3*gBwgp(!xWC_>Yc7&uPsD9qRa)hvY4K(KcUDW#y7?x;11TXGPKiz4M)S1g)GHzg{ zE2KBE5$$Xhp)BGKv0j=e(iiO4T%n@7%$8w|q%|6q`^;Ie4$M3Msiw!h%Hf#hE-z^q zD4iI%L6Jmt_ynuy?kz=q?fCLvrpfNFpGqSa=82eH5#g*oFHM5U6IhW{)XK7yk4TAG z>|S8X2!uP`<3nZJF;2Q#NyY-liihqAURLyx*z5J_J>nq-$28aQ8L3Y{swjV#tdWI? zhr=JfOu+(I*5smv$l9)R26HEVM-*c6#dh{O+#duA;AX(+9AOIapMU5Ihw~FBA1w~! z^v35=&#dzgF@@>X_mF>u_ME%mZ-BDD!Y*w*9Gb=`v?u)8u8!aC7$fg2v&XZx4oCwh z8gyHJolTToo}$&F?G<-?fqtn$AwG`Zq!h2s=9bRy8h}RczX@n6$JHbOr_|n+clr9{ zbX}f`&3tQ<_FRQeE9?4(yM;fd6*?dkI&Vw@A&d1>w?gTFD)qgKO(P&uU!;pW;}YmW zw_fN8{eCWN#PcBY2C_Z{MI8Q|m};p!;E_BU-5x%n9=)4x6oYH5OXI?uoI&v3)t$1e zYxo)TpEeM_{pkGK6L3kn5irSqj{$4H6{^#XI)|e$gy~pV?rpB5CMKdPK6;Q#`|y2j zJQhP9<av8Enmg<99Bz29oITaju+X-C`D7Fiel$wmHoMXYxAY){|1)j8Ude{Xu69h? zAK9~eU?5e^L2vQ>KIAlmxA^bA+Jk^DRq^fRUP#GG@4$APqgi}Z7Y5ligqOiEmIsEh zJVgeU+mAQ#3Z{g+kzdP=vhrL}xkBgHIF<;`S?j1X)|@w4J+F6&`>djBV7ggmtAyYF z3Ekle9~h=dOBOiJ5&=7N8MQ^CIkQks02eAl_N)=mvM(IP?kL!13P8zeOJ0kUWsO)G z`?<DC`?bS)%cK7XV{aAL))RIM<4$mQ*8(jT914^IEl`|7aV_oym*Nz6hf<)pySoQ> z4Fq?0zWm?!+<oWbTqHY_y?@y=nPeWB^{nNZto7?5dc<gb%Y7)ar_E%WuTw>6jDhg= zj2l#Vzo&IPc4@G#1=Be8!FiI0W<Ik2RWpFPTVB}!o;fY5r_W~Hlbyp3Ff4o!XK6d7 zX|B*hJ0|yzpGGDgzb8o>_~zAC2gBU+2dV)+@ldxtXMq7>Sbm%}3j*7&RMJ1@yMx`# z);McTE>%PfoVWg%wVU}jv%Zxxv?<SlIK>;_>_v>DDD>1`4S10asr6NWPU1Xf9marl zBwj^}Zbt`X#Y3B_FJ6F?XWtatTFte^FCL9{8~kF9zCb1R@Xs~}at6820VdVR>++=? zj=^qe8XFdEv|Fbd8~wx{Z(^k#yd)k5b%z<arTJk{O`q-Wr;{aTy~ykSTpu!{nv}G< z-c~W&bnh?i0vdDQtcX3-)VgX=DVeF(+mk8Yw<SMqVYW$+HW0CvL8EnGLb7}9*3JD| zm|3;S6c=>X%{as!in?z&=g-LNPtJpY>JqnmV+)eBPJdFtCo2iIy2C3@BRdNb%&%Sv z*WG)>G2|mEt($8_J@9Po{2E8W76p3ch5c-aJzbbF-!J~5vwn+!det{bw?!1)wDm2# z@3_bN*dRW{o=x{xMT-SIV<f?L!zw}<0hx)+5@xE!6exC_GEZGUxyy49R6eWzk;7Xg zO952R3ltGKW2SNu8!m7Uw6<OLA!ZYyg%an-912b42K^1_3h3U7mil8yibCNPq}0@Q zqHGFp9il!eLd*APsJe7(5*Z||8dNA2reVK~Xy|%dsYY`4`WY=}50}nK9MyJH;^P9H z{LL{_7PA+A4_-@yoYKb#MTc#iFOQ8RD@_>yB<xdKQsiQKlz@iV|7;MK<<r4Qz;Cs# zQ;~n}IT-e{EH|pe;+C<;8x)yVpXUzFkEIWy`bw6U6(1w*_L(3b9BkjI#)WAgQnjxE zm)+-FuI^9gi>eg;XrIn<Ggw|Ia+0}Q#HF-aA7WyZYjs2&f-~O2?#!C>)A~u*fGclk z&15rvYtMr|;@rGY*Os^wW_kSce>HFS+gGN<{_JgUZE9OH9jzRzKCiLL<1G~m2Z~q6 zU$0j0c`A-FrdMI;gZ0G)=PJ(%x0w#{^#yaIYa&1nORtX5{c0Prsk6akwSN6=J#EaL zqxM3Psi%bj!=>xYy|lQx`FpIZ^$xBbC&5apVYjRF_$syLht*8Q4@W-F>T{mD5<cP` zM_{x+5)LJAe|*GNvj8UxXS?<8MnxX^F1&UZPdmi$u-xg1xp)0VK=h*M=(wM$r#+_Z z$?mQ#Y|Gu;EN@z*wT5R$#c!k;MDh&=Vvf9-ui(5Ei9}>~cVyl)H=~O&5q7_rIZ~M* zZM<5&yW*uhq<iYXuz;f9<gBIa3DsL`ZWvQRh6mX6&4l{q5;7q|&hrL+LL3(RG1+@6 z_Ag2=_GPuV`A(KGV{`z~F2~i3Jv+T}N6JRj%+o&`Yod@(MYr+LN#CVsz;f#d-K*a5 z|D<0Q-|md`{c?Km#vPgrIM24+OK`^WUNg^Pxi3ZPF>`AF2Z(Sy38FqD13btlNoUWT zB@S{yIhBu`hZ;GuE^mE9z4`0^jIQ+sjPG3w^}nyra6B%29&IKAhf*F=I2SjDc38Rd z*)Ko8T&<0vN&_|oNApB|l&&D-K3YPv(&-ynXUEO);5_ln9rc_S0Qex+$4sd1=(n2p zki&_|WZLaAm?~@U(&ES^TQRx!fm@--^_N1?m9e<p?ducO1ZWAE1;#(C8|=*N1#!^{ zS|AtPlWz)d?_$CKouOW7K3cC8yJO!m$ElpQ;yxerYQ1~gHdnqVT!m!$zOupUd(KpF z@>Wx&A8H@HbJSjpPA*jccZJKP>K4*u5521TkTtP|A>`v5bLTLzFkl64owl+UU%xX3 zSP*8ORZt<XMggZ+8w^gl0M`!0NCP=VtxM1=M_~en^#ji6tc)u$L8ZOlr>mJMkGMIV zM+>{&XC1vC>y<aQ=&!(f#SehDMW5&U`>gfsotu`?;?t`&m%}ou;OE-Xq6$#!t(Qq- zVpY?%L(zRE#5{KJ5!vNfE>Y=4D_Pnv{a`kxlyU%(t`SP+Kpx5pOU`La*gKOdhpaZV z>NTEF4YpsLLSp7^Mf?7<BffY}kL^Xk#Gnl;-@Xxp1D6dSz?Fz*PLk3|WKu0y*Xv5) z?g9^R)BJLpa*QysoHarR%L}HFG>M}0F$LFp3{gVZfsrdZfS1oLSFeh&^}gkD=cTM? z>0S!TBkp*!=VGy4tR3nYxM7re;7%TTpEdDlvR$Vg%8Rme@374`;r*-ko@_!LOX&9= z(ZnvYLeWD%EdKou>;wyiSN{U86#mZqj~BiM9RDMz1cK{qh32Lz54ntJWu8nb=}<Gz zu+jAIcKTL!WSI@ob#6JQfcG9U)hI8&LEDHQ`Tt6bt3YGzMcuL+O#z^9!rPt+?nz>Y zdgzplb&AiV3pi=+AuJN+<yn95V(exhA0{alB<!P8G3m2a7VcQ+vzt@GT?A;e?@2yw zSxSla#*V1P-190A5dR!ff5KA?Zy5BPT>Aq`t0Z;d-|;jpGJA(@g~gtkQs0-SGu;ee z716`2tD)iCLI>%tAdfzygIb@1(mks<?U@g|qubMr=y<NN;N3BQ{aL%ojMRE38qmDP zqD_m%5L~+&t%q<*OxqhKf8=ILa&qjuws+kQp*nn*xF@|jkGf7>O9}BW1#?Z9dTmUN z^`2dWp2cx?%MsY^=PSxj?cKa+5XGl@_=-dIVfkj>Gp(|n<_tXj&76+KvQ<ak1-(XC zaMViHFn@xT-8zaS+Pk#(>oUfj9aR%2P1>hpbnEpovmZ4{`uUqsUptnCBXE>%qDbV- zUGD*v@=-0R7dSH4JCpT0MNdR{)HWnOCdK>oL+<y+H1+b8D4Q!be9yqG53O3Q<B~bs zTny1rT&IkwjTRq-t~D_u)_rw9g%%$th^r;{eIN7YY{iBAEV9zYo_A;gRp0P$HA-`U zqyE8cXXeiA#y{BIU~%#c5cYdo@A4#aAm6)Ro7-!6+I1Z0v0Kp!bax8^3=qH~!a7%q zLE;<^BPgaj35+&xn^*XjM7Qx}blz6tuk!+qc)yiixf7{`eda*vn9=HAm-I86%w07V zn#E_kZ9YF!z?DjIqm8)k$dYLP+1z7iKH!QxMeABP<E)r+mnxR~MkvGmzgMc%i)U}1 z<`I7R7ReboGC2n^gMK+sl}{KJcW}#X8(Y*HP+Sh5i9<V~qSOkPLyBjB5AXGR9LGaU zSfu>Dvo{sx@iH=NfLI4$LN3q{=}vA^{T>=TF#v;ARKp-*Wqx_JLg6DucH8bPF>w=n z>J}nnbE86IvM)-_L0^hie~r-H<++UXi+1TKvCpvW{dF1n7x(sh;|G6HzufSDsm~So zf3432^8f#|qUB*C=aql=nj<Jv(oByt%x1|)%GgmHQO{2NR1#%SCmegS3|ZLLY5qh# z<I;t%=Q2>PM{T!TM&y&eQI%eZyKDm+-d<l>#zVcd#NYOgJbtW}8c{wO?ap0ajk1qE z)v%U~jE;KgDEry*J}*eXq?TW<I^P~D{R+XBrPXY2KVG*w-!>%H7S}Tl$R3>@_r}}z zi~QE#o?z0PIc=%CrlirAyX)<~M?r!!RZ;y)`t1Wl!$)3k=|Pk<kq0q1V@Gz`nvgjk zn>{1ti(7qViRNRAb)`48-!#yd>zN4S;FOtOEZY$GJ16q^yxS|c%#M;6kRNv;8@oY{ z!FuZfH<3oN;2a;(O+3yF{!weHvWUrddyVRyD;jP{!T@>sMr~GO(#_N0)8gU=rruyP z+o|i*^Ph~nUS}(rHmvlJ1?3Phxg!nE6YFrP*EjItwP?kYSZ{`%=4i2?x899v2u^R= zz_+u9ro)v~R3Bd=nnG9Y2L1K5qrnoI<hC4v2NhGHsFgcM4=&WAi-4O?+sBYgp*lYt zhvfxbA<;7_uI(>vohdV~<>}fI*LSy2(*mL2x_&eUN?jn)$8}rpCJ9#$0*T6?8BxGp zUV4t;xYQemg~&(B<G9G6ABakBSGcH8zVIxaJ^kGhbbwbZhs#J8>ZO=R1SMa?h$Bz) zH{S7HU(+|8yBk!YK4i8E&jVH*Pw=3|hOy{PB&YO`jnajbm-9~CS1;61gPonrJ}v;m z$xaQ7KmG2JV=BUnBQz@xLI`iamoGF;si_bVb61k>=a=3)@%gI4=T*6`_6H?j=y=gy zD@pGaP0pZHFV#+d^AAeSt{@3N-8iVRJUv(PV1IXwtRCl~u8;>3YO@C=>>&&^*e8?K z6a6PmDcV#EJY~3LrOFi5S%Wzvcvv2Zgw<L72VUG;9{>qHWI5f==`;6oqGhGwchDKa zy=HGEXZw{R^cTvaJ+UFP%nYw3(I4TIp`e&1837(ULZK<|tU)H#sE#{MuDH@jX{1aD zpB=6|LFi{ONc=Ykr(qr{NNl(85R-E<>_lvuv(xZ1UMN<6f?{F9{K{UFshe8nwP}Pk zig0hYe!;_W*$!~=4<UCTFX2+FH0ALza^?p<S%=qKhoSv4=ZS0F(5UE0=|WVXnH|?w zY_m`o+n;Sn?17`>5FC6FmP&f4YY!RuCZTeBlC*aUq(vF#;f<W=t^0oyZB6RUkdLUG z(Ob_|ZR^Y$rPywC@~Hg^O5#fq+~ES)Z)WMOpSJ?liDmRI4HLxJ`?%|y2^A9WAkadR zNQtmw?qw_d?a&tq2@Vb7QDyJv$U@^=FGLD*oD8=wDMnYQ654_uizY0li_eJEW#!@{ zJ9KI`HXm$!&#AtkY~M-5{75vig_@W+^Cw8$r+I&Qxt5;Sxw`hMF#nNcc6I)}%x5lj z%CkXd<_9>0$G4_0x=IenYNLP3@ugvwp>M242m2b_#L*jJY;Nn0*V;|;v;}0%%)!aS zn&2RDgaah?fQ;8s2EFD?^UB2hYu4UrDkxb$F4SyoC`E4JQl0&{d*>ju$boC|{rU&O zVT34_MX=S!RiV(WHhKaT!CG{)Bo@P^GRdiMpL(kAB~C;UmtVVeEXt*(ej8%$oCUPQ zYZhl`cP<$l3PS&ZEsPgpszIvVBsxZr6;rZ%<(g9^<9T;D>(ZApPEo99os9AAXCX~j zGUg+fB>uU0BH4H;Z^t0RW87b7%{mg(A@e5ofulMvpU_&RH4nn8%CUd~;%Ev|?}T2* ztv5f&tfIO~Ug8$@{?bHhN9PK<D>bUkyd%g<;*!!P#7L1RqxjC2MOYUvBfDj^f^YbP zK;P>350V<oR(!*I#;<0g>lk(TI)iy%7AH;fJhY&7l%~32G@o1|#0Q+H<x~b+SzmZE zlEI8#Aw5_6a(g5wfbU`kZhaIV_s3sH8{g&NP1W3~-uKHu(*k;ISbYe^?l%cr-@QE$ zzFwo)wEm9$H2PfH+fMD%IgGO<bhFZl?`D+jI%pH1(T)e%T}PfHEM@Lt3{5Ijl9G?j zn5<gP5r95Lb)XOKI;)75zN=y-yj48=nE#U?o?JWc8Q$5Z9b=p($$x;i8_2c_dH?Q( zR^r<8%cUG8a4+Df<Ls}EwNvh)mh3#Z50&jr^;Kk48l*EOt)m+<dIavEIU7Iv@fe6x z>3%a73ej&@-wbrGT>iy(cEfKg@kJb3I$+ejqE#-F9;34Ug2L75JbQ^uLR0sJZrsQl z<(*tuQzF&mJ;UI`;SIlE^k~~Qa9cPWSSF~=QYRiTBP`J;E%YbGU3GUKn#W1Io7d() zn3v>)#Ek<5j8U*<Y=W!`o&!Pe%qT_Atf)u6TK>oylGgbWawL4`uqx-nWF|~j@kHoh z&{h3AJhUb+{OAH}hl#TH+)*t1{fjcI*K}virY9u?gG-w9Wr8oKXm)&$iP%x61jKbk zuP6?wktJ@!eEH&#wLd?0Rb}TINwXWYthVMZUhyP6Ec>_Gcj$b5n)f}9C)==WaP4{| zXfgrTNNPT`;Kq5}7@Rxx096_2Qy<gDWGsK>#<@+|d*9vNF(YhLaWpgNYCt>a^I}Um z7<xT@qqiFeEbHY%^}#$kr{_8nfYjK9&p6|SI;sF(OHyK-A3j_i>g&4wgtVI#g*>h! z`(*D5zdk>p0$*Nhfn`^MPRnOp08bMU97lp94pf%*JEFEm$arbfF$2kh2hZ@7Z+k%G z`mMt(FCIyI;%@l>f9?jrsp=`k;ar+B^O+K|$qln9k-&SaP~d$)*RZ{d<Aq{)5RKv$ z;FZVmyp)0K71YPXMeBzJi40SG{^(2Ir?b;&0M0Of%_59x0`^HIi2vK&Q*ex^rIxyU z_G0CN?LbgEhCLP1wh0~+I-kST=KT;dAsdyOxMw0B=(gmk(&F#~370qkr3dU(gOO0y zz31=>nu$iZqPE`^x)X2v;t=myklv*P8#Q#Cv2$l9{wyEHp}LeWn!R(x>WB6q28qRq zYTCh31AQLZQxhiuLS@6bH$-g8Ur93@3<<?e_b!T3A7X@;2Gf)O3UCZ2DH)G0MEEv% zvsu3PP!q6Z^X+6+2q1A1M}ZY4Raac{{9_Lh92c-AuD7~OUNKiaaidEJY&+HeEssJJ zxK``qEX6dKL6*pGFjPP&GMdZT=2xGt^q!3ul^MDZd%y9_@C72oiE{G>6KqMgp{%jd zr*Qa*u&82|iiJvvu+-gR$7|if*sG9$gw;wOeVVFrBjZR@DvFgp_zT*uzyB#DFY3m) zSXKbqe&*JtVp<CrHHNRxC(qSPAi(P1*Dkg6C79)}P|GqWC49#L;tj5^i6bvPF)ayQ zzWr9bAdK_VYyl9ap^eTuCrjgB!-qG*KETdO5Rq-V=z_vYPV?*A_W;z$VnA=h<;RP7 zB7HUVPAn2%o!~Wzqq%hshtVznvv;8`vrfA>4%$ftZd3n48|J7>A{?@!N1GopA__6E zZ-vW~Uk9+upM-6bcU2KzvL>Iu5Ri8c|JqGR4>FE+MIh%uBq`#gzseN(sFRLvNht!B zKCgMljM8nckziKK^s5*lRfe&L)(I~G`5R7EO*om1W)~wn0m`>^z`TpNCLc9Q+$lyW zu?aGsNL9;d&4UT87aUf4*L7snpn@714WgLcd%qcq(rTqecaS;NKLi3XP8Y;#=<xR; z=3V9AwhHdi+xJn{+5FuatP+dvi?-z5&^Vd^k7YIA6Oc-WbCS-RW-8~niA{D=LMkUk z#_(lllu!54-RR=Tt=>}2*PB6}Z)_wr`9oC?I5^nBgNnNwk0#w48Jo|41+7c$=I?0} z!(W+!_5>1j2G}~sJqxla?Y`vXI1IgQqW5=6SalWSyApxO!0@cKeyCo<a=m%>A=Q`U z33hAZ=&JDuV~H!@(3D|kPBP%bMxSZ4O~dpL7^x-hv-X!{QY1G`FU|*_S)-rYNXEVb z;Hif)ZBp6DZteD<f3|_c-Yj}tl^OLcTmiW@9jII)K~|RLA8m-WB#su<a9_$Z4uWkl z<XIvSZ^TqP>$#cVN&mG=^z-Yca7$Oi$ap1Oz5%hX2uqb(G+(<<H(;qJPJ9xsZ2av) z+7WqJt3$Y;6A^L&<tKxo^h}?zem}}J3|d}rCi{J}(QExQ7|aknx%4NOQ$dXJPk3cc z;^v)r05$6pUGbSLE0r(C&haY?l2cV@hhX010~i-8Pyead(24n@{5_-pIx?9QO~k0q zWQRiI^1DER+4{l2_k=@l=m^E5u9yX?i){YOP;FY-Nzr<F_(X$NWL4HzP=JjEtF>Q- zBq7=C@)^Fr=L@?Oa1~VOk6PW4;)%QYLCS)!JPf(1;uQ|wZsH`6nY2@z_a3R(N3!d2 zghet74MDTg&mZo0in71kB!i)@B0}ASJUl1LEu1%kiv&ztSDcd7{|-~Kx4+`bEdXls z79nGHzb7#j8V(y6yr?nJYZG%U*#iMmm9)p^9a_3Wc2r95+h_RGo+v{!xdZJCf7*F% zzY2eiOL(cWTQLNIchvA1m5mt2FzV2*(>{2q<57SAb{f3C=vg}W7I!bC8q^I2$vq(k zT(e=RE~x-YXY;k!P|UspJL1i7hnhVWw1U=&C*;Ze-6qMFh61FieRHHq*6UQbY5ull z2~Pj$f~G7S43(67q+CwSeXn%F*g`i9$paF%m{o1KLNsJkn4Yu0m;^hV1tis9l#JNF z@fU&<sxsl`rIEq47t+3(1yYTW(AXju+(~aYn1%&6*gM}JQUCKOHIeqk19f);{#}h< z_NO$r0UlzbgyVNCRX-zk1sl73#U`RUH7~X~zev1!A-?K|j;Dr7`!Qv5KQAIcW8c`1 z&rY6YoHjn=PmBXJ^Xgc%gCDmSa%Wq3%2GPj4iQNk{=)CM)?(a58tzvF_`DG>wy7(V zkEmWtKhqP8>;_V;Ab|-Q8$OCYG3S6jB<;Ozvr==e${k>tw!@M(I~aeRizVwXf>cjV zyIpw1NmisX<*V((q9-&Gm!-<4n*-zLE9L92ao87b%8(^3;wG+h481~)uznNyG3&3c zEah{&z3iAhMb&w?Wq$-el39q|lYXqAtSsG=SRWhI^jUI0KYzk;Bo*8h=9UAgiBnzo zK39*Fcu=Mv{*xaWyb~aY6ZN?J`Nbnv8Ghv6MVUsg?Lhf5G^CUotXtaZ9lMa1w;cp- zzX++uP<jmnJO0W5SC40a$c%e?+b~WMerL##+pYg%#2Y`;a?pN5SMsz+#d(??bnWy4 zO;V6?xowf?q*h~tB6E-oEJs`?$Wwrp*YCW)@7(2Q%{VKqUpr@?(Z8yH8CMdI0c$62 zRUU5&zv76$C2as>lqwE>rGhyuyZ4ej@KUn2cCRKzVFQ^$vJ<zi;TwF=z<!jkI1(7n zU{msK&&c;l+={8?OL%(EmgcoErgIUd1<f3GyV!b7%`@_lsHCA&@k+eAbNn8!QQxz7 z;eFna&AWrgJt|as0$F>>n;d0tShUi|h6rU3_V?uU>yDo$^t(A$?I>|kyQBxTGbm>Q zJx=>z^0==Y4dc!;Pp|<k`l7OI1Oo3_aitHjJV4rbW3It9+)iRRBHaB;jVmK77D~Bg zHI&{4u*+K7-79Ugw>STY0Q*t;=rkWN0M(l5qfOt&b|JV=-Oq)<{>)s*nM`BzsYE<f zY}EJ9dri+ukaImN06AdbH!#XCJ!l{p#4<YhRRUtg<xI(`e>di?sbM1&9)$c~Kf8t* zJUCEecHvlJ#`?Rr6E0#zWgweY+5Ki&$6K3hqrzXDFR#tAxSKpi2todXK6oiZe=wvr z#kugnbbvU`J|<%ZK%7Az6TYmzyAhsT8+OM0@RqZKDEFSvqPh?O?~TNH#Iy-$s`9JW zU}yW#y*=(qB&M{vj7Bi$w@lxP;j<IvI?>b~CFER$Dsv#<-o}Pr9Lc11^NN1kBXr{j zUZ}g_QRYT9?C1(mI(z<QZ%wEAvmRI7>9q7AP9eOQ?EzEuPqB_KdBT8FMusMpRTR`> zPvE7cYB;Tb$JQnJTWv#Q%{Y}s9%y~?K6Os=Trtg+X5QD_b)|8s2Hwv|0J?C9`p`jx z`Kr{d!eYeF=Grw$H2ob{(E7GA^s2(SO9yqe_~Z}CcM=)Bp|Z2J?qv52GqNunJo`>Q zcz;fpGt%Y`T7N`gF8YsS9mj>)&fnRa+17{4%QGAoQhh0ONU|d6S2;rdaV0)cw!w0o z<TlFlZrT?y;pex=Vag>N?J~qj`2)T(em2Vx!1H!{$#y5|mjQ*5!i}*_LESI&@S>ID z>HXSS|Jg%LLW;C9lE}5H$UT-#r<ETF<?Y^-5lTl@3e8`o7tsYDFqus|ZL)#CD1xT+ z)x13=?oWM_F*juB1bP&wH(5{r9v&Nob`WBp>PP&P=;F0J2Y~-VlvND+2(zfD@>RLB za)BMX#l9;`b*D~*r?Ua?6~8qnpzi**(iU+j0%!cIxFJl^4L7t{BCM1!ULCoYY(pij z!&b3Z9<8Ct;Z@=HpuOK?A{}vr2@DjR1G-hduwSLUt<ZWzsjlrHdqSEinW0NDCM#L= zse^G~BfrW`M|-Uq8J5XPg8ii@r{cm+f#@G8cq*lEm68?5V00IhPECKDRKopyC5-&3 zmnuoOca`zu2<l|jaI^Sjw^V@#Z~FG{Z_)0xu$5B^s2b5m7C2JQh`MHPUkG*E*Lj$c z+hm?zLBi!^R|tzVgGe*f7&l6L7%dA2?E>7EA1`JdyKxUoG6UJ@W7SUerAU63YO5%} zj_JwVSiz5>zO9NO=;Vtswk&t5cR5$I^l_s-j&P`$fdXlZ&qt9AC7u!9|C5IwNBwTm zNb6xL1kX9;jNHwjh-q2+gV|DAilOx<SvTv~AKroH5%hccy=}Csic1pgqq{ZI#C3Ni znMVK#y8T0AyBFsg$&i9plIed#9F_%NRT)VKng!yJot6~z;YxRU1NB?frlJ)vP|E3z zkYn-caR1to_<w)=C0S?riRWinRJt&6SegSy*QXz>xT6QeVXhNshGmm44w!uj!)S)x zc@$7$zLPqkQIC29W`D6%0@3s@vnEQC%Y$rivh&t)A4<hj{AW2ZB^&?va{@5CKIQq3 zWvRh2-$WwqPkJF8HzvS|nc`OE>=QWbFqJY!pUQN-XF=zwn3JUn9%AgW^opUi*`q?3 zFtZ^kz8yxVHHy$dEP}(wC4*;9q3eYZOL~T0&5kCze>y+Pk%4=<0^i2oX_*$?_i}ch z%^(|Jt|Gh#k-`5&<pFK5OA=w;-clhnpoznilW6P6!>{~1!^_nXV>Fz>Hc7(E^*V<! z=e~pa3vNp$%Uu3HMtxVkkn&BVF=cv%ka2_bSYwBVSh{GfW8i|;qa;6e#$W*dR{emx zxT1z<76xGOq(Sf;dIng!_@*1tfVFNa{!1b;{=C1c6mHRY#2$<Sj+dk0sJJJY>;m>V zVhl~1mwDDB1)|Abv$KTLUc^Lh?v7{AIxUJ`U%cE7&zAm`AH$yhYiDOERR5o2?f*Id zQ@hJvOoTuBPN1zNA!W-Ctn|Mhpk4=~T+d>UV7kf9Dv3}6SRLvf!yLv&gIw;lQsbJ; zE&t!TlfP<(NicTfwuOJeyelsXfZYk6<@kUs0z2t2#>fQlmH@quH5f^I077IbJ4Qn{ zIYNzZ7>E1Y?o;l~CoiNHd^XT4Dh7FJwg~<{1)BN?{Q&kF0wf&gNdYYkPpkH3++XY2 zQ`%YVq(xFTBR>%I^EVi}#DJd}7I=}%$h;BMKZwKsoU+HO;s>%yM*ayLDmj=v#m~j_ zh0Sz5FY@tI@yI!b`qMFfSk8Uq+~4)VmjwJi8aH*g7*b5rx_AW6h5{k)PPq9eYIx66 zFQmMa8!q^YgaX4h3Cz6FOn+Dvfxn1P;?JWP40;XN92`zF82&gR@E->uRenzc>|!FD zqGusgfd`Rx{3(h2L!pG04*+cXWV8n)?I}X^I=E4mF8WHJz^XrP=yl8|RgxS~m6QTx z?M1m$Bw|)`q)oPL)-DER7R)|p39eX41_sM+h~yYPW^#M?B|_Ld7vX0tkRB~OXN-m_ zTwbd#Eqd??f_}KXl+Rf?!a5F`!-6?dy(TLQQW+TlL**S4vPKg;-F&z_Y(XeJmk!)< zZ$d8DV5CGpANE0@Tq}SRm<UJEXCjj_$(mYcAuX%jEqLT24EqRkKpQ)yy9kgA_nRcK z7%Tfqk(wkLFuPthPmT$4bMDRI=SK`!BypA)47n*+rIgY-<ls6F*ANs&A+a7vqAgW( z;&ix4j_PnFF(i7QXb+Q+b5|tja3h`dXx(B5+1cP~Pl&@(;t0<bkSfpA;ZI}Kkn5>U z<uT6ZhUnls!EoRY3|)-`w3{io;_w~6XyFTEJ7l~5@#MhG*aD;yk7mM0(0MEl@Er8j zwTzYg<(CMMTddvDd6cv8>XuLEnfwu=3j7mZRJb9;pNS&XVnO3Z=nVq;_R^j<maPta zc3Ky?KFMaF-F|Ut1`DSetO??*zU7g@fpf~yUV4k1eqhFug^2f_*z+FOZBBI+*e0`Q z=V<?UZERm}^;y}*Z3jy)xtm-fTqE+v;{9Sum+2b<M?~scS!WYESLaH|JhyT;G_50p zUsBMT*scm1YF5oP)`@Kf?LKVQSvfR6;h<2EIwfAz)MsryXC4&!f@YD0dwVH!a<!&$ z!5UGC!F^nUoG2k`M4+^W)r;T;PNu_L)UprIZfZxVXB30qlN+G74A4Hoa?l1)X%ZqH zClkme^?t5*0Lt!xGWVPGl+8eu8Di>!@)5Ud<k(*JS%<q>x8SNzLAMs<6SB&Vs&Pd% zXAHte*!lVHBaix=b1bT^5VxMf@7|rhFXViF;^J2ScGXb->Mg4i^q3x$b&X6~1)CKg zA!u@b)VXYmsPw-)dCC=yL%#^e`uxY#hA^1tQaGC@g9CRyp61Zz^p~w!S5?=1ZiRB- z+@(82+=e`$1sk5YA7Op0GreHIeeK+0sZLuMC^JsilqT)LEB9nx;ZIRP`?p2&n{o+} z6#GDUUCrXB8hDFIqoHqgrUFFDK{j-%^@R}5MZ)p-lKiVqxkO(@C0$XF@>k%h^n95; zKkRk40O6+Ub%VZIbQwRS?rV?Oe<I<-nJQ1(hytAJ;ELH2i~t!8b<4Y$WqQc}M`5|; zEBs;fe+tWc)%}JeIOXaC;)|R_%j|XW!fZ`n2-eCd6R^vVlYO4&NAlK=%|G-*yc%xn ze}0^Jjl=e4&-b+#aCk7W(~NLH?l~RoJqMY;tmK80@wvklekCTBr%@3WNHC{Z>&b#= z#>A;pNe(csS$dXJ5zzT0-=wyvz>sX?oa}VbmKb*Zo`XBVOmil;vDWMlC-=(KBKykm z;pg5GgGp+I9SPzcO(km;T_GU~zP01B)@PN-0PGrVH8UNp_PF65ysT}rDtMcQYlIps zffI}bY(IR8jCL$Sx+>qW!G7c1#B$EUXGf9@339CP{vC?|qj))b6MhtFLC$Q%eB1{X z;$G5SnZ-j|fHbiJR$(_Wk|R1P0uLHjr9ZxrkRgX-olG}6kgJv#|N3vP%+@{lN~Q6Q zybsqm?I0-joHRlFt7~<f)ETp3Eu=4%7l#e9A@{zsD&?p64t>e#s}x!!UcxZKds&;0 z+F$kel~q`B)2`=P@I83n4#%Ho*{V1`MK=7E9rTp{>!qG)b(EsMe8lw6eEHmYf%Ubf zT|H+}`C)v_%PLiH^|v+QU5Bctpf_?R4Xx*otl-1~50XrhPYA@a{^p(5I{nOTj?3oj zlw87o3**l^f~Ai}G_wL<;2LioDNg6kIiE%KBZz7@(9M%<sMxk^^1m7sc)D5r9xsc} zW*B2<8sRC$8a9}(Yc@LxwqatZH;qLvjbIuzAEPY}u*v8z7`K{vx0Kr{TjRd>;hg6k z3RhLXcg2Uct?E=xcUJy5Tl3m)FU^pf+H;?TXIXDveji02ls+v(U!a(KM$jxjIB@OQ zz>!5PGXG`4-JgxT4f~cT5Zvb*EITKS=qGD%RUzeb(+U_*kDM`VUo4cP(-2EFqrLes z6<drgq&;d#%s}c;-<QinIkNxPr@4Tfx=hVVSW*4)`n2$Nj~$9@_S<;NpJ;;hH%8B+ z<UfyNOv}ZAVzk)&X|xF1zX}mXzbC9wU01n2XURYP#=U7RUPF>O`Y?+!w#Z!L8ozWv z@?_1gQ5P4`e)qwn*RncEFmBniWB7xuM*BHU*V}iaQET`0ZuUEV@sp4L0=cuyHbYBK z#j-RoJAWn-RpvxUi6R-4IuzqbE=2-JSLxj==;2$pzLQ=TBUkVD|H{v-jz!sQQh(51 zL98-JFGuQ|esrc?I6w10na&A|X1|V<(rg_-Wjf@Gn$V#P(lQ;2m_jvkmoXD9$LU#@ z*)NM1(mzMEcnftydmZc-D&h>{TZu2v{_tHZ9n;6B7ONkdGp53KRL07c#O^c4l4H<9 zJ@U_ley<<D5Lu%i{tOAR5g(_-ncq)+Mtd#fQDAei3Q^+fVEX=19FJj74=b$yZ@!<Q zzuAPH>8i9Xde?8oPWGOy`#hh_95I*B?V73`bB*KzLoF(Q&4V5kOX?$Gti3_KV9mVc z@e#4Z>}5=-XPJiO>Aus$_PZQm<kAULv-UrSpSyJW;S*iqr@G9ru2aVg05irMH|gW_ z)~yT?x}SpG3SF4ITGD>^>Z2H)V^9!-QH+|Sa>iS@Mt7V0I1xX#nagl6*m%}81RhN8 zur6q7tJ}7Rl9SD6q<#IW%An}kE4sJ5BqJKG#^qWVR5-D>I4fNLCsFyNEDI_njCJ<M z+;#EOGDYdxn#;-YR1xd^0a5SGY%xt+Eb;jJh`pkVg1WDz#_|hb8MXXokx%1|TtzC| zX1E8#{3VYhaxAi?T*|H?(Q0+l0`EdFS(#7XJ#`=uoVj3!p<;4}*t(-7j}G>EeE9az z>_TR*dAlB>spLl_ux8}|61O5E9?cr4Dxb#1(fD3ZCh+U(%hP7riDuru3IT***r17= z*)tu@riEzH<)9O^?fnx7>_sn+rIacGCEiV{Fg7MAw8aIk#Rlm*OU3j?gR>p9GQBvJ zgfYp?qB9WBBjyzzd=+<FzDjxrI0JU>B$yLtO>{w9P3kG($Ep&Xw1rOi%K}9y-$c|s zliYu_p_A+A5~SZ9GUqym+9O1dUhr`T^4pvLE@4T`-%fECR|`iF`8VmV9}yr(Ev#KM zARm?Sw%SW<={-XXoJGxTldYvA8M;}aBg`f%f*<RJWBI7#hi<9<wnO&|tE*(7*H8l9 znz$21fT7Ci0+dVTKi8iY_0y@g?7+KBTNHJU39}Rf=a1)pS^ydRyrv>b{kEzvJpb-! ze3Uzn2O^iIA8Ky`VR@)d<%I37$o4rVrF`5Qr5Fi)rzO$%8+c9Efc~;+q>Oi?^fnEg z>x<o0Cej(EtMK%LRexl1j282Zzm=G19Dat!I@U3C(DpKS(bi4f$1%$Nqh#y@HOlo1 zs9%f!9r+#>6_}XS8oj?YlrvrLLNP+Nc~6RKlcm`o_-_@^oV*(7`El}>PfBQiYQRo` zOFMii^g)>*U(oc?7)7+wdT0E3a>qy~<GY-t?ayp@CDlI<j2<@vH*JNr1d9WpUkU#{ z(e0+8<o9nDq>2)chfc*wM*V^NnXR437-9s+Z-}TZfEl)xud!N(nvSfdYdAwzW$Dcm zS3V1*DfywPXqb$hVmJTLl`*F<Y$tzmX4#I+6(h?YHNyRlwTQ2JdK&ZP$LttlOKck- zCdR_QEnenaQ^qTy{+f~_uNBeCAgaep{++q2o}))c!O^1<6e3Z(z~Vs%_rA#naF)P^ z$vh$W!is{}=1a7|nveIIuG=^fUdPoy|1IxOmq3n`zEFzyH}|UPrS>s!&0c)%kHwO= zDCc3<4vL()di%lV9mk98!Jo70X%<P!h8%nGTB()g;E`riLk<m>`K3ze(cwohJB}ii z53cZf3AgpBrcvXU`*a@hWYHbAZ1Os%rO#8_buTMz3$0gG7u^IyyNzc754{8C!DASD z63I51k^;KjM;iqML(F_JOkNa4DW`7xRW9>h;TfHW=HhVb;<AIGrPfv@&dpyJ4w;VT zyx1F7T^!9d7RZ0#h`C0q&H4tLPZr<wRFO>^nP5hI;5VFg%O95d?O01ZSo1{_`(fmt z=|i|&>Ra7KwA%1!4Si_|>*$c~cj`QCBiB3hPxhwCW8z6|qTJ@SP@~$~G#_@*w!B%G zQbaFHQU)R}L<lk6RoP4ND<hg0K@@;VP{?xED{4#yLYnkunH(1=jP|E@W@T%xnai){ z5W_<g!A4n=^Bd1D=f|u07TYnw`j>XA!D^1q(=V5Y4<-Z^b;gr|BHpZ^ive|<jM`|{ zWR^$dPlNOZ282`!zCPbvSetX`c6*_+Eanp__8gIYc{_`d4^xsM0H%fJ)$aHcvBcFn ztDz*DX)fav6{pYd&m<C8l^q^q-Mn?_O59H>Pf#nZ4d(&d>|klVN4OPsOsJw`LZat$ z!>Oj>X(qQF%P5SbW)0Iu7!jc8w^bXQ=~XH+C>vo<6g_&ELYfKBr?2tpOyc)-<hJl= zhsdW!s_wq)prjHWin^RH<<`p$D&Q@ZNXUh18<)%I`<D91FOksVtCwO>(;k!1^*oOz zZ-p06ppTj4YTc+7ir~>&kAj$xRyH@{RtC{c;rIO1akZ$}ui17)5syH$scA;T)+lDv zjxYOu<41LO+wI)u26vV1Z`NmT%TI57UiMROWVh>flot!@emU)eFt=`eJqL>9J-=R= z=sMTSdSX9lb>8Agc_^o|AbtM%hz}dX_Y6NO=I<Lj(iJAP#<*Fv?D<e=-B+da5ebbK z#q-7eN<~?cK)LLH>=VReo!&*8d1nKIZ6^d#bHM1ElH3e0@LyzC(uTHNUx9t!Rq_w> zTXCy_LVjB180otjARzkg1|E(v#p{Km)TM|L(I#RKKD1f^!?6C!+gqEqHF;s~zk~)X z1~;viOk}dHuQQA#UxdZ(H{x$4CkWorQYEwW-KLR`TD|a{xtV2JYdc7Fq;6=;YNFV~ z+TQwby0-YU&;r?3XXFC7klWYi9A-^2R$8B%`atvV;=PLP;_K##b8LZII-VW4E?Xld ze>X2shVP55PLg)ze6%N(tSf1h@S<jROV~RNn-*~Fotrm9p02e9jI`01-)W0;Tyhh+ zd<Du^$<gZC#&1O4UeJ~X>cER4UG486=MPZ_KDc|=8_u5$A{%QD7(0E_2T2RaQXth* ziE`l{d50LfVYeaNe7HrkbeZd4qD>X6DTA9o)kT7|pAvNKt}@|TWbpNVgWoT$gQMr3 z&bNZ^1Fj%HL$%NyKGSL{qCp<c(H-7@9!n$I{0T<eHHx`2RHapW!X0~jqd=-zP6#}R z(_h=!9)~5t;vF$%;=Tq9?|e!0(f9w(M;!Li9G>-M8|FyE`i7c?!1IqU%(5X1;aqVQ z;ld{#;k%XvMxTa=j{m&Q>arMuo8z(yMiNo3NGc(pl(aeWeq;o#o3#XIs;%^KqZbn8 z*Lx(=R1YM|?O3>8CVa!syLb+kFj*&*Hfs36332$4EygYt8l=n`e`o@p;q7*;KQAW> zhN*}Ja_YxrhFG4=+MnX^%<y#hZWy!_vi7_aM4vTJKEUq~JjiN%qSa9<g8T5#E`ZU@ zB!JO(`|js?gx#yjr>gRKi^mbK$_fq8PETGEF-ZdP>4N1xUR%n@(e$A8oZIgS`}~Bu zGH}6_;&H;iw)cK*)m#hvdH_jv{XQ1f=*q7*&KuH4TyiXehI-LD5df&udTK~LuWjQa zulj;#gj@M^Rjth<tIWaI)uDUIJDaZWR{pcPKPL&ZD09CBT_xZ@-(t>Ui6h0N=g6gy zSLU|6bBCU)N(nU%(TTjl2Rw3oof36lfP8(Hf)_T`5AY1qk!m7{7oGT=EB=#Fr7{_5 zpH>dxre5A3uS*b}FJ6dq(lQ*0)ZhV$^k!<-9En^f&>zvLQqtt-BFY)QrJZ4p;XD%= zyg8?2Zx&tZ+|l2_t$K4V!fS9%zqzRFWGAtWD9sA8^gbw=XtU*!8s4rxDi_=6oxMd4 z9Dk6Ue|Y|9|DWhcWm}*9h2xNl-8VQ5)m&8kcPAJON97Uf>KP@Eun-#d#Ni*YYBr7U zwsYay{}LeQ!zmF}S+G5hyu&qXR)+CPSAPCA*W0k^t_ddrBp#|2LFQpd#d~a$Om_X` z|80UNxbc$`H~yx2yEIRTc?KDL<vJ|UlgAs_T~Z#2RP49TY3K?{f^)4`_W!xTV2Jq< zf#;K%W97#d0XAAik2JWiV$ZNFvkQwT!tIyO{vB9oi%)d$!m9LPJ~ek}yJDoRv0CVp zASDc$xPGqo{U5%+pWWa)oLDL!Ul77{Zqe#;1L)a`;Cg_Kl7XX`$oPyjM3Vd2c$@nl zJ-gWapXF4$IKEBu+e!J*SpNYYo*=C6kxA)hu+hQ3p-eR6cHNE9o-q&zsq9*+>oy3< zGUBuU`yD#?!B|w}eR2<^W3zjt{oz=+EPC83ITW=~UkDxiQ@%Y(?olS*7zK;legeYK zxszc$-sg~%pqw+pE|G*21i+`QzmwnK+j^Zacf`_k4g2?2eqt<N-VoP5HFCFB@!lp8 z9=C|x(q7-a*K79FjE<Ff6d%Pj6GMu=o&p<ogrifOma80!w<PpP7g&nue=(vqRiPKI zBU8}I&kWA+#LV`)8TakWfNj10mHmaPn1Yr+jYpsVb?dKr0{ma#>vTe((E^qKW8GOH zAH*3o#$9bOZ)N|Puz*SP-|a~3E44a`@sEib44k#CJ~2yh;9~i0hS4`9*8VSEMiTeA zv(9vh147J<?Nz}FB%~zRuI5MTrG2UMA-=QeY=tx(AxA0%DTVD?F@9>VD+^|y2cJbj zcVWvgekGPl%=hIP5`o**x|drQ7hlJoaI5ZIkxBf%w)tUMQe186#OU%VzJ8AX(qYmk zXO$&#q1k)IXFu}LO#fQk<Rh;2G#lY8j`I4N(fs^srDb_K(9iL8va4w>&&wct^nQUZ zvL&_h+Z6*}CmUcJ>xdCjQ(@_Av?knK=0{?Gs!XNw^pIKZe)*Wzpi}Yom{w1A<Ux5D z8yJ3nWZqtVcU6*d5ddO4lV;hLY_l>I>uO7>)cr|(l;^>3djz?0_Md6_dR3D%_-@?D zfYIZn*d=F>?2gL$V2${qn(}YaY^ew+WoxZAQqK}G_<72i%f(W4eS>C$Fxu~zsiMTo z#e1TyU+9;hL%>xY6_jy8nC3zh@A;K4lt6KWMvYNNjwUqdyD&FFXu^*!MbB>LBO^%a zPYwNVcAE2BCZ$rz?hFe)e726C8SM9ra?CwUPVTTmv6>Hmr=p4_>|pQiYQ*%5?zh8Q zLXIBYxt{#HQWCscVt$FJPd$1s`B<TQs;$IVhNwPzCu}jD%TO%)NiM|Dn?G(6!&YJ< zz|##ur)l2(#<sM`w{6H~PVVcN!-XHf@%##g+0yRo_hV23%Tf-Y0`E)lNc?~hNDhO2 zq!-cg2gk1>gKg!eSwNsq$Han8X3h~q=3QLSjBlrZ!mFd>q<zk|(OM1lD<#fT<jIg` zg(HN*BgV0GA4G!MO6*vj5!a3)qNsQ5>Xp-AOA0<}zQ=(<$KK(QNWc!?@JKpG`@8*| zoh}d=xO^EL&v{|JVIOC>Z-iYS1cBHSp!#Lczw5)q=0~1x`cruOk-QUk!6V{&_<gkP z$N08)JMPPE`2*Bo0kPWkfm<r{bqNDfi3OGcov}PwRELP|M~76gh^H{=%;L=LuMpfE zgd*S_Zs`3ZZm7pbH=Dhrw|)s;(KDjskk)>igD*qBtC+*<FW`=@OS_{l$|Y9nUbi>G zZk%^p^{vSm6L@<o)ga%Se5Z1{tse4{s;JMEwGq@t4@G3#U<JvJfML`!z#Z5SK;Izq zUZLal^yBSlpN!Cm_(NBeDLJ>a1FT7m((f!!gEH(d_|9<G5X!BMPbeN6Rlv5d158i$ zMO!HP8IUZ7(0_I)O<4UfRm-^0kjTi`Lu|4yy=#4+FBaJ6L~L$12xnY~sZhB4z4p%m z8KuSI89CIQ^?O(m?u*BHxhMq%``>m7BC0{2>aqn~!P9#k*hhv14lfaS)1(%zymsV> zqa+vWBFLj8{T{D010Mq3+i@nn@7IG8i#GU*K4d7%`2;*o#az@H!LWf1>w!00%3XCR zja%{-zt6hrW-e3t0>;SZR<fk_l4>(XK8Ed!ZUHb_aEdL1!vuck5GSRKC`qz2W!<`( zJpJs$pDY&PwO+!n;?ExTk#2ihzVB($n%32t)0pW@yQ0TWe`dTV#BqhTV}s&?+OR-) zB-|fSJ5d+ZNC+xvA{(79-7*6oAxSuq_qEK|H*KB(#@-yNfk%P|G!{*PtF3i@=XH0H zg<5`s$`Viqe%rfET9x=aHPM&!!3KZc&(!)oMup)Ey&N>LTb}HPqzfimavuCv6R}{$ z%hS2}%CSqiq8_adT+qv5)FKyX<(D_(RW;@V*3MVb%SewWJ@U%u*ckWtx7%|rn_y)7 zkXWtWi=0;lyi13nr=k)M=*b7Yc?%l#Z+)Rfhn`SOM*}P{B0jfRh_`ok5o=_Y=<x=Y zy*jv{=`aC{M&%93Cl!)#Sgvkg+`$BR6zUb3V#$3=D{T)0Rly2DDnJjStajpK4_Y*p zIXDtAF_GXmf{R_KRLX^iKmx(#ckp|f3@vf~ek<Qrx65GtZGtObkKc&pG`lV032m)f zf6E%3fv2rlXNMrM?bjQJS;QZH+|+Msa-N7nhcvq-m8qq^86GAF(z_*Eaf0BAs!Hz% z5us%&8m*_`ZU0+<(6StjmPjP!32=h@5q)e9r`t9770Vfh%y~)hyFsD8<$ef|ukfTD zo{B*hOW4}XDeW+>czm}jMdPIRzsnKBTmM^rsINYAOvlpj7WyX16ahgf9zB2oo6<b$ z6PkH;Q-w@+8XpcvmW94MR%IC<j))h>9#z7w^!cpi-rswN%5t<Iq2v3lbyRR9->;yA zLb5ZncX)7?%$o%dVL^pRO5}ItdSX5}ERiyloZ1n+9`Q_!faC<A_V-QGG^6$5ctn;_ zoTCU)H0_+7aQ|RB@cvIga)f9-AFA@m_3@&#`b)wE>o6}e4j;67nc9wwJgut343O>G z*Z;@eF^n`*j~<646pa~ze?hx9BtIC+@D4&}Y*G<NBWF&o^C2`WnO-z3icR&`(32<t z&-SjRDSyHtqN;V1YZoYU$Ofw?jo9A~%K@6AEf-DGm?-B6nKFk-Ga~}c#M2FJ^06=+ zW>?O35{(pKRUaejc%fs&4kN#sfu^&D9jqpDlpg}Cs9CqsGC!nL0oV{rj?#Gl={CbA zw6ffX{Hm%_2oamifF)(jF;OZM%bmTp!k5zmqL$|SG!FN$avl-@lz{`B`WQ_&ez%O= zlHT}f#O3=V-u?UL(T*x>RPXfNcWufGw{On35Y?urnZ%tS;!i9<TY~${8K7Mw77kc( zWwP5!cgv%&*{+na=wbRK=qh8EXQIj%1~cY?sGgrdeiH}M?5F}yA@#(Ga%~mZ^)p)F zpR2)-!aY_UB`R|n+f~%_LY0Cfp*P+z0tG1KC$Z7$2fgtlsNTY`dGslKnKaG9P3G2N za+j~XlZ%&O&VcCg9YJ%8QLY87Vn!pR^a=Gbw)qg88oB<dF`>DTYLcr7xXA5N)EOJv z<AQ-2?SLg14`V)e$I$iG>!raN<T)g-*jmAh-ZF~s^)S9a*dks3u)ssMAfJx2pELBR z?11s6yknF@4V98m`OYw`0rmh*Y9;!@x9>rvDhEXOop(##+C>*hVE+Ipv|Idx*3%KR z+i%mcLciZLDJ7+HB78hv>ncE7pG6i(MdbMMR7P`s)fpS~>gX^n(I*Ao2eJqq<nWQa z#a@Hy#B)2}y{_vD-G`!29AVtzIWERn0glLSTO)(Sg@$Aegqru;`9k-Q+sPd#dkeE; zPG;xyp5?#iaOrD5Brq2F$Wh*&kvL5AT5)YldX9Au<NN~A`CY0}LK68<C4|PA08Wl! zwL|vG&f(kBln}Hq4(=^nuxe(~E<SfFuy30XCvcq^;F%3ks1hM;ENouv=7X8JpMYDj zel~FIE`;P8H6jqI93~A*e$#bce^LTfNw?KKgHuBtcfE5Xr90lkY+v8Q7-7mYBUDRb zkd6jch4O?sg3}7zNefWZU*5fbMZR30dZHRGmGgecW*u+jCnRmzQ-HWzcu`>JEi-S{ zp7${$^RBuiz5>N=cwW&7ab_x2M4|SQKnovS{Y9ZoONoGo5k?Z9A6s<=Uyq8UbN&F$ z6G()2S#zGaI}<zXf`vmND57!s#LcABw(yFq()W0*ikQl^)W2%#sH&{6wK>6Jy)jy7 z+yBlN^M1@JTl09exm&;G**$J^ggiJu;$+$Pch<eB9Q=irnqK23sZXr10f}Gw3A17! zl1qmEzsBAIDz0W(6o!yMf|KA*Ah_$`!GpW&;0}X3gaHP3cY=kW!QI{6Ex5buKRMrj z-#z!dx7K^J)=baTR9DxoUAuO7?~<_S302<?5ipL>Tv|w5JNq3H^oBZ!mir<iRbzzW z<9|b9xCp(k1`%%Cfdzz~ud8WCf7A~ONI2J(PN=++>GF(&jlNyI|Fsr*{aZO%3*p+# zXiqQ?R~unp3tnck5e3T0`!P9Aqhmo#;Pc8E+;7jwkbRNrmMDb3|3Jh=J`g^C+@qd8 z?HxDo|DKaO-UO;{&2b(NOm@*CemxeP*1S@Fh9sKq*}di<EMaG_FZ}F+9eni6dBH0h zG8U-vCh-OjwS_3{u*yH@bPLt9d~Bc;=pd{39CLjq`s^+5RY_$j^ed@pk^LHTPW1C3 zCV7ji(sE*xdAz3=FMFA&ZlFP$Jh-wNAiW=08G74Uz?KclFI{75AkDIHhley`9pK&c zv7FD5`0mj+U#w{oj~*4b#q9n$5_CMqLcbh$^lP}`Np>^3b_u>;#upsn-Rq3XawMKR zd6GmOOWVnxS^6_!`qfjk-L1e~w|#dhea9;L2WjRSrd<VZObN+G1u8kQ2hAPeN(0cJ zPX!JWDGv&kE{De_*_*M)F1+{8gjSJ1?C5|xX8=l;qya}v2&aEIQ3>nV=az)zwknBh zFJNuC2JAH<jHrk1e%h+6IycgxQTA3yCsV;gKJu5G$yLz62#4sfRw>7p7Wiv2&`g#$ zY~7}x&*+&%Wp(&*U=qUPOp<-r7|sQ#b;f$b18D+7uY*B?<^}hvuYyCqtd9D=esy*0 z563dTGm39n|KJco{k0`s-?{a=8pDnUQWB)jJ`JZVj(twM13J1GLLD^P6PRVY>%ohE zfPkaUzqu`>f6c!<3;(ZBy8qq8^zzM{kf^_s?c}&(NBM?Y$(JTWR%x1jsteVIw@-6@ z+Q(iA)t?;$;$Fy59}s%Ep;3K#4Z}?PBsd7qaT^t7tHUPGQxB4k3liNx!O2Eh#|3CO z$3ypk7!%P(_N~$b8#Gwv8(Q28g14<>YWZdTd<Hw@8kw(h&JbZL{RtL<s%^t2{VF^R z>;pcR1YN;_^d@zlhljXJ#*PV}EHz%`7$3u)ZZIL<sXOQrem?a9;8tj?M%!1CM!=qS zD1wlngwDkWOgmv8@)5Gkz|1TQ)bqO;LXU_7z&4%^;RS(xG0e8=UmMdw({`nX3biqW z7tT<NCVBrA2jXQE+U1e$WtuwVu{ugd;)z}8b)*K(Qb;X$v=MCvFXwK7ljKFz()Zm< zw>#-HWO8}sQPJ~dZ|qU>Z2vGDGNwrE@d(wPtqzMGVqT0SJsw6>enNXZv-&Il`9TnY z?ap|bA@Aw=uxF@rc{rv7N5Y@UT)3I+sN#p7OfqxSvOkuYk@oDq^W<MfX2LxHsTMm2 za?I*=ZvhP=>h?}cUOFpsTk+y9&=uGxh|}*;oI>{y5gzq9vsh&w_1kxWM#CH>yfF}O zS)gfbapr(MijfcrC3nzLww)32l}nJ-9oj=y!(v!6LQ|K{acYulYUJt|<ntCIPV)x~ zcPd|T2*|^c`qcT$X6`2Ud27r$tlr8{1C>bZ=964AQK*TB%}<d5r1C7H<`hrzaSwrB z=QWc%g&~2-=fgig5rTH~Mz&k?<fC(6fMpM%4F`20u8zg_lX1hU<)8bQZz9r<<boi( zUmkmOjx!*+E5>CvINXb%Wc`az(Yd~F4nv>tb`Eel9;jXq9LgS(p1P3H{?6pu-tm9B z%uZs}dA1+7V?ldh-U&>M6Kc-(z`bWmH0U7m`3SFphuZe7EhP&Ez|R80<z8o>q(LQz zWs@XSdpiPCG9El6RhR-H5}~u=#gUEPs5Vmax@hkF!dZPe*^H93HI51|$D0W-59X|< z2xUhEjelKfsr_g@EOd#1AX}8qaiZPe@jxtx9Rkp(z??fbmi|UaPX(%|=83XS2?2kZ zyY5QN0=S_Yd>HryD=n7^eX`3J(@!o9I`>mb=My@c{*0!`*HJAYnMvc8UE3GRbTiQv zQSa8>Kd~8E?{>wAiUE$3-V%Zq$)!pPrrJQ~777rG!3KrQ2a9Y;#9)g?V<i1EsUv5^ z;1rA2ZgAn)40ho~)13lbP@=|ogj&^cM&5;p?0jwN1{Hh<{A)fZ(zFH=4}kje`sJ?r zknbWZr$TnOWw1c~*4zM-{$P;;ltvHb-bjG)+Z<k2lh4rJ9~&u^;W1h5<0bi{q<dpn zTWL`7W`m{SlUQdh7*jT>!Kf*xDyA8%578m=CJ(xH$Xh6I54#0fSv#vZl(Iz!PF`A_ z7Md^UB<r{esp_mcdc;97?hHHRT?7k3vJ72^n-R#5XFL?wi!c4Vxr?e#+;f*|)22Z~ z0GU+D=^{wdt=#lccb5Z^9##L~=OK$$gXKwRw0m#XEZTVmzY%fmJ&Rs2{`p0Aflf2A zm`yKV035qOT7y&Mw);YdNb=XijxLbyeSO)IRs9J$S{8j~Jqtj<Vl|AnI;D#*vqv96 zOy8EEtd5*;?$X$zM|aqMfvFp~Rx_sO!o<bVWzyCbIoP_qLZovw0JUngBM6{V#ZwG~ z=li{2++m)BKfz&{rzb4|43elWmKOjD`Uhd+<>ZiJPxo-ExH}5FFNAUzu&LvZ^_&e7 z0>X~ZR`q)L_I^?CbPU%wJ&J^55AWo4n8MD^J~C$XpH-BJ?>R*8H0t*vGLE>xp*`|+ zT`R>vmA$J^^);MB$Mns^V4o@p)H44K%O2G^_J`gRHZ}~}n)&8sq01lQ%XL8t?$M!c z5v>GwCX1P5h!b@w2{cd+HtSWW>|qy%swH4E<e?8r&A5J;{2&WC$=Uy5*NAY|G4vn9 zoY!X{82j?w`*<UpD_!SmOibrWFHc=ezTk=>LOwKZwbtFZZFIv>f0FQse!d2iidT;C z2^I&zchful`7^XdhT31MSLTr~jNcs31j~2O+wuVSV-}3(F<~N4Vm>~p(#trY5IUL@ zK$u8+Q-X3cJc!*PypNpmT%b23*{t1-t?SF__jBtYgvW27hd#jF2b#!xgq`SH7~hZ! z+HSJf&GmTw2Sn6+7N|ug3SUx_bMM52+(%qQ7xNAJ4mR>fiDYt)nD`QH#Lvl||A2W# zxfnQ1znttQYdc>5g?8<Yeh5Tc^LiBfgvvAsIkIH5s;iIFbDJa_heoYg(p#|<GacQ_ z;KP+O@6*z^;O0=VRG5tQ(u1v77>y_O^plZ$X|0OC5a1Y{anCaD^qXE-&mNO6ews68 zEx?|F|4qfF!Bi2&$@ahe;rKl?6WOLCv#iix?-d>m@Qw=LT%O;kjWxY`RWNLl`8uJL zJ1U$O{?vD&2)Zo&Rxy0_LZK0*F0w!xRnTREKllQiANn*9p+Fh0_6xbm5;p(Sp<TU) zlt(QqVbHty$lvev&)atmmhkKez0R=SGOjBy2H7Hlt>9cr(Zu=hceyjo*|eMjTxRk? zr*D*+PqwM^r8klBIqWzs=3{7np_DsIv!T#-h?r%3<oa;Rz*Aga|Ha*ALesl!ia~cK zB6IJ9`IRKsQeN8gxU4y6s`{a{{j6gBdr^r$JSy*{)%b}tRu*lZBF3L2^}a<lyaC3C zbMEdOYw|cTr>TF<7<p@L`Q2ta5Xev}bhLq{pkDb^=MpAu(68qr%-r$w%yEmjq7bR7 zNu{_V5t)s2SY*(KqS!z+7bgBH|02HWTbk94UzVDuR$|U=5vbmov(A|ZD`n<4vqku$ zC+^-}7<ig#H|53q3sP_@<V@%*-z8XY?#-?!VScf_QCLZ=TEDVR!1*<l=x1_<0_i|X z8}$>b^4kj-^vZ5Zh3p+ut~V2ZR9HD6Lf3WHY}7VDLcMEt{ix7|xll;iO)YWD-I4u~ z)Pd(cn*LjzIss~Y7T9xvAGKG)A9(gz^H=>ouB28(@B0O7uAes*tiSi)k#a47OKR&G zdYXGJuw7y{*nmgd>?}VZC_mPxBvrOgNt|w){K3GnMQXdZJ~~;N?l>Kqs<FaU9igsx zeK;;qXkLR%^iied>lIa5Zbu7W!odkAnVW%ILfeNw;^k*BW}O8W!q4XiDyhELrar3v zmV}jZ&Q$JYF9)<tVsmaIz+P(HOY&Ddl{$-1d{Ct&os&uV_o`f5VW+5`F|&Dw6{Am< zqTgT6RaJaCv46S<Wn$%oBQ_ozsEsF)=nH=Ec3=5sRbYwo<8(hz`^2mmhlx+{P1uH( zxlS4-;&1@hQ;zmenU=88s@?1hWG=_|c7e`#zrxgdsro;Mm@9J^As^5_y(0)?3`iJ} z(>rgnV9OK-jx!Y=Nwp$%aV${%`O)@%D3$#6UC{#%4Nttf0?RjyV=bmYi5mkv7%JO{ zj`41*aOkrE;ze&<M%Z2ww>Jefc}5qzhVxBU$xcIk=89h7wYf=yhSfAn%cb>2b?ffr zjTL+VBTc>lv88%*RnMY5^&2EkETqKp@Ttx2Z#bzjr%fTNS#`YcpK)%r0z=eAepxvP z%NRPH9bP;0j$bUum#&W^n1e{@1R1k*JyADXmm&^#Jos$pfG9&S7@015afLh_OXhQU zaoWuf<P0F~WDQ?dgX)n(TyI1)wOv^I%SPPK5a7@ADl~)ZbQu{dvhM@>_ssBU-MtmJ zH-?jM{Lk~(uj8*~X-gYbX?=Re3G<CNqLefpX|yoErkQAo-A2jcj7qq^DN7q-;g66t z$vG)F8~v#}`E&M8>aI2^?BPt?K>I#>Yfh$~SE!D`W><b^V2Bvuc@k6q^XcxP*c|E@ zT<sX!!?Cw@mf4-p$0yfB*Qia=h@`0Ubd{#9G4(pxAnCWP=Vfkzvoo<{ENYR0W%8+~ zfVTqcL@H<ZbB^^^gFQ8YWRdcrx8t4YeQmyaII602UIKd~n~7V@r+}AwpWxd+emDMe zm%2fHZnqwBD#W{EthF8kLmtFj_>db_?%C6I_Lt+9)YAu^m@W_VlP<45+;S3}xodZn zx#!B1uFJ^r%IUruRm-3uuZ%9LPjCzdaXPb0#H+2f^rgG+vgUjvqb41NZ&&=s9(hKF zJjq)aV|A{2fdYs5guW{CEu)K+(4B{OS=YM?Dmh+JS7%_?$u!aHhO{vkOX>qN=RaO` zdxdWI*3}p3<qw)~xYr^)K4e9?x4H2SU#4x0V6q0VT?xEUla?Yf+38>ZngOk1<?MD~ zHG8&7Wu5Z5oQpp(l8{Wd`QJ;OzZ6NCwbAteTdw7?0BgD^Uhioc7MZd(OaHhwH0(vN z&t)?H^bH2LIyg+kbqk?M=v?uEDv%Hw=E<pWn#2i@3gX6Y_%}Ax>+hG<$Wozo=oCy| zyw;t~f5vV$u14nybd0rS7H4vIDnjqQ;Zz4CB<j!L%Y==ezOjU}9}e=-95lu%<Z7W= zx}md=j)%PG!}UBa9m1=zcj;Hepz*joh|pRhu0$bV&n9h(&vw^PqSmpp%CJo-{RjX$ zL(n07ieOsbVrl^FiQvj#p}E?ptg);6UW+mwy3k4Z65NKx4Yi603Jw5Y#dWUWd&!d= z$L(k$&+!lBp{p~QbMigkP%dS{Bb=TF3q}`5y2APw4@RFi+h2l3R>^yMqCzj2yUCcG z{FDU_KBBr;VJ3n4&pXf5r}zd*3f#=udfmSv6gE?D-Inb}&jmKG38CKWrA<Ae_EYgT zY~@3rDOlq`p4_{?2%fI5&dEm|R%7emvYnG1eR*jlYOd2$civ<V?==!A!?G$J!^@g; zW6;y)D`O+*+qQ~C&MHUS+=lp))ZNbzW`*goHPrtKL{2&vt!dY(6C9NeowDLhUJIU^ zJ<OwkIOCr8dZ0}6mub=`mVcMq)Wt1%S5D8-N!Xj?{W4Y(89bMWFDkd$mcVs8p>#S7 z<cBG|-rT4VNb}SlfqFm`jll|>Cat|b`3jG-?EfEf7IFQ*<}702;ATS<5I}Tvaxekf zAiAX=XN*K{@eF6)I%2h;8i>T2Xt(;qz*gSHO23ar_TLw)95|M!H95!^Te#479^tM5 ze9bWXrCTebNFk=wSaodx0q(Uubj;W)NY&~4`e2>s*v7x^ak^`BWxQs&Y_yzfv;^Od zUhWLhs2-}(7|EZPaca@b*j?0S3D{nioxe_%x$D#UDssG@Ft7SA{&9IS%5dO%8C!2C zD<yetZAfU^&d>ZaD%f}eN1{JDUV5)^803?5UW+ovQiBH(eJ61Bho|7A`F*`<7&KK5 zqaBx<G9A-y0oroP8L@9<onCx3Pmi;Wb#xsc$uPx5;PPxl)`oXoSJS8?@A+!jFU9=k z(i##3ld{XvuuQA04c*dauT&sp>dvX=+M!sM+qFuHZp+)|DgJmxi}<4X_QGIT>m?)0 zf9i{VJ1BF<{cwA*fk^HlCps<@biLkJHJ3(sH4_@=L${HwuAY8%9~$>!MmQT2mOfkb z8TD{86mne`9hVV(Hv4VU$g0%BYn^|`P1&_d>0AAN7oW)m{F;RK1px9W!S5KD`$Ds+ z__}_#>pm^`h431!^_DNnW1ktpy(x^18+f7LzQAWlxI^A=7Rko1&@Gguvyokn2$=E| zBfO%Wdd-G}0ruT*h_iO9iCNqk*R6>l*D(ulVuVK#T<bDS9hW=Ydm`)RBpY{YeYq`- z9g?fWe@I`=?d<GRCESURz0wN<)30D2$f*GP`O<_}WS6HG=~oP!*;y&C?>#c_(<)lG zxbGS&R#$pb^r2%!uJw^I!nz=Zc^+M;5(a^Sk#yJTiLc++O}sRBCm1A^0U~?_ufoi6 z9KkM%(Q$mI1w~(7<`m`5TQ-}89u=SoUz_^7yiOst#6O7AHuJbX62rGd#}P}rjmJSB z&zkl6zCL8V?$7x?JqWg`tUTTtU8_I*d3`C@mz`p&6)p~1Oy0+7WqTS+b>)<Sd@M`w z-C*WNYPjYRIgD>w@SoqY#2!*RY-ACV#ky$ya8PE^*n`~=MNke8#uw}Yqc{cCG1AM+ zZuWTUTm~IB<Mq@pt^1^?0r70`o8~`%K&$NmjjldEf;{vn$GA~9UDCVwct-c1O#xYR zP-%<9-X<QQCpHML)>jPcZnUVUy&yPo+x2}rsKA#W8yI=wCf+`n@rrpZtj9M~b)|#c z-eD7NjimYdG|Y{B7~N_P?s^)$Tt_P1IsJm_vFS5<t$~5iVrj|sK=G`V1!s2C^##?X z6J#slIKA4R@*KVCasEO5&?gf?A5;_hN;v1@QG^DvGvSJ3#=0aWB(LKMAjfB;@4R&& zrtHEa&awhSB<nY9Q-*u^sFV04xSJzx!yKC9`tG;g6=vNdFXx<w3@dtaU)=q3GrfW& zo{!u$M90p4z9Ip%^#|Q_PNCy@MD#f~2jpfb^yYfM*&I9i`Ehlo#s6@KZ?J0DG<)sc zYVUCr?>*}&C%`6`a97bTeVq)m<5~|d%0qRbKEmIlKA!3D&1Qw133uyS)`r__V0tfE zUrKrxfMl1s4H}|*`Un~)c$dEaCEBrI4XVS%x1dJ(g0Wj}eI{Ip^R5M|i%Mpfhevwc zvs(W^rWZn_%XJv{!hIk2U5+d0OgZ`W@iP7KG|E0$5Yry}w*RuHd<&F-<AD82vw`l) zGm6ue**E1^<(zVEJ}1OSHZ(!(39G+BOXXI*R!Io00qI_S$jqqTO;)DSPjm8sURZxl zPPp+WFn!}*jPE4({Pvnp{|1%|0KL-so@E7~7s8F>LbDH<na2(W>O*NTSdU>{#tsLh zp}+O)x;Q&0T_XL3WG`#JAhWIC>-_b+CGJzS-Z^jO;Izlf)o#-3aw^I%Lq60Tj{Nb3 zq_4VZCm)Y=0<`$y?@5uOUk>Pz<z311U<HxD2EphO`>N;#cmti3a50|I6Hg03OT3=7 zHd^g8tQYwH9Vdkx?$AqDwB8Tj&<khe+wXc${Q*)d@$X)6tz`qI9=x$V9CO-87H@oh z9$|;)I$<m}vblbZkA?s-Pt8ba!U18o1}bkn6&OTrA947Jb+5Dyd_RMimVxZHX~=q8 z;P5S+*-<6Vd0tIrF3>h&muF}o*V1&0XE=>>a7^$3J>%s&X1<GvXuXb0=6)jKSZRz- zb8*jG$a?hqCD?CSLN{yp7inml(ck$?-cov}jkS+1!|_&qumJ8bC%=2gjQd6K&A>1Z z5;&#~Y2ak5!UnDDE;94GNEU>8pv*Ri0hg*%UZf6p1B89rVP1REVJ@5LXHLF~Agc~P zLAVT-O6Wk`3bK_CFfb$zPw9cF#Y^PLQD&+7`J?X(G~16zJTJ8BgQ|}iyC4k@hQn*~ ziXWi!YWMRMc?o3eB_=kztNs&MU+{|2LtUH82Dh<5SBh?|1u>S_iC^?vr5BwHe-hky z@zZ)3M~!fXoiYz466NX`618VAp$+8IbgJ?+T4>@=>Fp;W%QS~yN<EOV-k&Zs*RRS_ zkOl<BA0`nnrL<rlJXaI@WL}JOb+|ew_zlMwQkxmdcOQJyE8SCb2W=+JVMGVJqGjt# zej#`mDm{7OY%-cRvi9G4tiIK{q@V~}r$5rg!xVAfDh82ne5ByYhnZwJ{yOlc3pNBj z(I|lOnR5Q)`%)VJNqAWrx{@p6bdpeuTwnGAVUiF#yjMIB*9p!o9iPHw1YZF$E-@2> zpqkr0wg0>o)`3jrj*-;T!-3X*QAYQ?rs2raLXMLx0ui6eH%W&yK9@I&@vK|;2pPb$ zM>wavhEB)1vCDZp_$;nI&pjCMX5#MeDWphWG$Qpg?`=RhRjUiG59Y^6$vkv6P{iki z4kL$FQa=gM6jEnK2T_eT@ODK}JrPSUwTO9HX)K=A+N05h&`!H4vMgd=tMR>IewTOG z5Mio^jLnDBWaG|FgYU$B6!y0U%D1|1gy=qz7O3va?8-OV*j>om$(BU$f@s%#lxjVr zYJ|!K*nRQQff{|a`h?22%u(Ryosy6R83>E+QunB(Sn>lM_PS|k+&*WAt;MLa-*ab6 z^;`eBb<kW8s&H`2eg*qye=ca==m%^N-}oR_{-B3ZqA3W|Gs-j7LVg1PTk3io=-$vd zL_fL-g{!<nmgoVlZ224{q|$UK2D)2Y=!pl`b%uEu18AqP^w=FfM23CE)1y!SNSH)^ za|Sxs`eRZw1aw2GH?XxQLW!#<&3%h?A<hcTzfiE7X0OC(?WNa$&hZ(Zd&oc~S%O8< z1Qs5+og9#0<U!bew2v2Mx}D0jL$f;(zLU<n@<~AJ%f9nY`%|8;LwXB8o2H3i$G-dN zCNlw}J?9X~pKNES>9l0p&Ngu*+`6|w4eQ1(bXV`kaYa?H+~qbu6qfS{DzC2y`W%Ec z7t@l}Q(@f(&j$Ac1`PVhQe}@0PQheh`-RA?VfqetxG6Y=MZ>RSJREme$*aep`!jq~ zic#hI#Oxc-EF%Z}@sIFhU?YdT@j-!ziPf<Uno-+Y`zvKkBFdPqy(4BqU2@elN<Kaw zCBKeihptN5?sWF<iU)g{Fakr3A#O_bD_9x1b9dwu?!K*Ia`-txFsPZur`<lBQ*_wy z(>YevH+X|^PthX7jyUR6`st5UAHq&_+F3^5<|KZWnIH-W3Izung#t}J>*2~8owIaf z%68e4bgu#mz7e6JD%GQP?V_`Z4u1|0CX<n@w<q{Y0L_2#tWjTc8nVRc9m^nKGq;Bl zsp!H#oW?0T*jHEKgYt!NcQM1OVN4o2ACG4`%@03xKdosPEj)_d@<G1N8FLudBiDb} zNV=fm$X?hwCj>9Ku~9K4EAwR<+50nTkzn0~_N|a@)g!6&ZZeM3ai37?Zh~$<^u`^t z>i(%8LU6cX^h#lpIn7uf;%n*6_0hN#%QEIJL28>zrN@=`+7`;S%%{2Kp6eDPRD($| z%FYeH-H>v|>GSJ_FWeou#0~BT5$+Q9`N6gJVHMtv0!qHo$<a-c6RK5&rK{Cq6(&F; zv?IGh75fK#+ixF@mc`NDZP$kPxo<UW4YQ)I9)-s7YWEL}dD9?BJbb1aYYH~{ntX|C z-+LRoiR(6YA@0=f8w*`BUAhTtBz8S9Y~_)trC&)#R$WJG?uCQJ#%BARGBVT+YB`lr zlZVx<1UC)nFdZtLlgr<8E`-K0XmsaNIA~Lh(GXtnohm2~^8G}r=}2MlOjjm*S5+DY znBRMseh(iGF28_Jzt<8Y^y0+bMc!@Ij|5Yi3YcYz(4%|ph=)_N%JzEQ?KWVdjX1iM z@j(-gY<2;{FGIDdEDU>rCTFJN%ax-bjdN4SFAIn}glg-2r%4Q;+E_MJ><%RED)UH3 z4?WWuEKtRr!Ba|LKR_c@u+L`sV&><VWBOL2<^$<2o!q6rJ27)x<}S7oR~`Z*s3H%M z+sz;x+y|fT9uN+u!f!Z9e0s&QD~v;nT^n(5$pB>5or8YkY~=)0eQWn_j*tw4y0jQW zrx`*a=?h}&fJKWjd+=>r_@$M5d>!j5qX~_Bq)Ss<q~^`JT6&ppNS7m)1O6)(Nr_XI zEhE0xqeQ)H%|<ms?-O}#QZL}BMR&c@*Yzi^Hka(MYmTIAX-b~XLiN;O<gY>s_|kKV zog+;bX=R$5x<8w!x!MNdiyws-3eNfxu7>7~9qM{a+`km49g;O^-DG}O@uKPs<9L+% zf-a^1+l3ihsQf3}*p$LAT)HAOB@f8&WPB4+k%h101Z(Z3QmfneU8H?)3_a>*+-9RA z=J7kd(@~`IuQaBjMitd9c&Cq#va=>_V(D9wV+_{1zaqfT%CUrVR2{d_v#Trur@22| zl?)57Q5Z~fhWxHwF`!tRt}%xw&Se+V4|iG(TNnz#9WhUmG|`*WmYb%ch`(D14|F&o z5`VYRH0-jgiOym`A$QhHA;%joYMt~B1AOZuh_s<O_%%}+PZxe?_=EVRLtIDtDliW% z_`4pQ_(OTRV%smJf@y+E5XR|cMQ6THUKb`;GfbD$Qs8gA<SR?`SaZ<NDXZ9V%&%-Z zetCML??up1s$LxuT?pV3TZ^s2ci34f@KD*t38*y6(W;nzvJd@YGM9nbS<2#qu3X^j z-1Lb?52RdmYBnt^i<LE#!9?atRa>JD@kOAq{y=yy%u$Uj{LLCF(hWtGtA0oSXyVa1 zUHHxtCAfk1x9ltUp0V3HjddoTnTAt!w0(@u2z@;!S*fn#Y8|(TK{?!_eI&jM_o@C9 zqfjhAt_ZOwv$#;6#%?JyGD9aAHom~+vi27DE8b3cpcQPqsnl}vNq#KpjZD7eGed`9 z5}7m4JDaP_3Td^y`Ccp)H`HG{Z}Rka70^r+5Or0Q=tYC_Y5?rIc*9Q*{OJ09Cb-jM z+MNKC^=eom91)(xudmH4py(Bn@Fk$hcOl8-^50JQlE}!DM6)TpDc0+&?dutF3-%Ec z#(oTl^K9Vb@NZEJO~=UqcA3IRz2!RU)2}qn<;citW)HhWYLdR`V5imLT9at7P;lD4 zs6uOO@Hky9Whb*lRQvq(Gp0({ih_J$&nk+nC+vlILnr42ad&3@t;hggBL*$jpIOGM z1^8<9#z|;4JFSP#x^J&r`<0hX@|!y>h5iHy`63VPpD`bwU*0yCQn7tCWBQt&@5%fN zJSU=JUzlxADFH9O9a+ekkFFjQh93F*;E`w^A2z6nf_MeCqf~+v&mS*1^P1DRwUqn4 zI&rZ#M)eBt+xgNtX%WRwg2$s%;qx&uYOyFs=9SYv@}0&e()1{G)Lb_+gYjq>F1&A( zM#y>D=``1jCH@3X`@HVNp>2Ba|9tn8T$A?2C;TG|AIVd3sR>|>E2DZoaaY4fc9Vwx zWEZEqB<XJ5xBXVx61>vFMy@%N#3l3gQQrlzJ0cvcGOx#t?ep96W0S>P*Gxgyfs7qe zTedtU->_Kl%^}CPx~DN<sSiyq3rehyzfjN%$IcP_61_Avg9WvTv5QoAeoAY+^Dz?M z{^%!qY+r@WRSeuA(VIUX*Np6GJ}rQ&llp=4SzFMe2uH$$?Er-RIUrz2(=9y>*I0OM z1l7#Ij+LhPLjmKL!E^&macZ-?)<MnpUv+@lsV3ONV-Dg&0p0yaExkcIEZAtmFA!$j zw#)F<FUh8M?eUFC8TCnhtl%$+rbun+ioI71M^b@w^+>0qd%FHhSBTgG%T9Vm3!p8V zm8ksLF7>4w>Fup9-lyBhwK7Nix@^&U_46>_OsQ)!4L9ktcnh1Y5bBuf4hEYj=_4(t zgWsu&A%Q|mKrHEIz0VTWb0E5-kq`CVrGq)~(B1h>)CQH9K_DSduq`5UP;=f$kW}ac zIbT78M~#z`6>rVew6A+x@WnW8P{0vHvV^0K8PO=A5(m=5DPq8c8kYaed(&xnW2Q0p z%-n@Ok8RY!Socn|;t)BYB3XNFg3%cG`#l*wHkoKUcK?PJmk_e6b6o}Q$%BRX!aLH{ zI_AA);Uk7lL#}`(xxgM&NPBn1JZk~&Vq?n0N4JO`sHa+T$DJ+^_|#5MXYzVfF)uA* zVuz01#HHfGKz}nAFj%r+EXCj52~iK~S<E3e3n0#rZt>#V*J-3|X=4?aoS4IXE8X}4 z4-ZSu5zj0I&g<5$*Au*5Z5i#nOk~|FmoV}rs0y*6WJwfs`$U0JA0as=Jk~s5P(l<? z>V!uSd#L!rV?;)ivCyIN(loGjxH6Qt3nR{Yi7&qSM9S;t%giN>cds5#I+ix;G*;E| z{1$xf=?ahHP9g4?6E7t4ooMHw5RdbSjf;<f^GMn&T6YIZ@&?&RmsO4Biv`-CI=zuS zgyO>-Zbav0_(*4tVE<Rg>f_XyD<#fPm)-4~)JE$yQp2g*^N-b-6q+K%>bll!ZY}rg zJp$nE5d_GU08=gI@(FQ&j?E={Z>G;K=HaynJ<;!5L-y~|c!54eov6cXt$nYURXg6v zN@>>SqpS{G6usJD-2ho__<cqsgW@4lZri5l<yKW3X73L{IW2V|$%o4h*og$qQnOR% zT7~{RyxuSdsFQ73hJS?QS(28KY8fyz;*JbjVY~EbYQt*^!Y69cs@Wy+thrXkI>!cv zoy-<&Pv$7QqSpd{br3kzxVcTQ4p9eqBR!(H%Q?NSee7m0;>WEjS$)q)W9W&FM5oMM zoY&n2A!Q7^d9!SdP0O}#r$0QYN1qm+|J?mTeIf@RdP6yz%E~z}J4+Gv2la3TJ`VYf zVFiwZAW{@#)u?qPb2G0@-%A(`xSl@b6Z1#jUjKg9g6UM%Nu1pMFTy`5i}T=wKX2h{ z=AR|^EHpK+Nj-8<b2%HaP}O1FqQ-Q-u=kk{-|-7;n^RPqJINWjRLU4_X7cX+C_T;p z-Nsh^XLPbBLPTmw4sTJK!4)rJ&Kt$1kzsIYjM0daGru(3fK3`_p=03=GvdNCT*-oN zm@LIGf~k-5_;WWiH9>ZsO)XZCqYZ!N(7fwvmGiY5pv_UwqW?)Aj|$Cwr!i}kiEhh< zheoz|_s-2aZJ%m&!JhO6slivI#<Htp(S3CqoQYb=*JVS3y2rSs%n`t_-Dum3w}3z_ z)h52m^(Wi9_c<MknMt?WXm3EXi6VN+UB^TC?U8bM!5-%Hi*4b4nd)GZ0O53V&wfjF zTmk#9bV!wvdUG+sYpag-s06_bvX#3}>TTR{{)i;;RTuVYZ<m91SvlinHWdkUuXZQN zI|b7Dv#&la(1PPdqTw}56L66}Fs5yv4Bf<ZKv2J|4({?|g1XG+W0`pbfyUL_Q+$jF zuXd%mOUQ8m+J&Kj64&;HhkigwA+*u%26`hj7`i|mZ!67CHrUHgw+v2WUTC1c*u=XA zXs<i38~i^Oz^|icf@$d|PCfe}VSr}XQ|FP6z^rW{hdO{8ZrSYRMa=He$a0^yppB<% zC^%qsRGn>xfypxr9ArSqK8VCU<rQT=UjHuL;v~nmQIfb8Py*AwAf?m|eCHX^HR$!d zDuJYzVXVU+W|SVaw?i06NKdprZ0M0W)ohfw0++5?=}vq#Ggt|KV#)EkKd9uEsjcJc zkWL>d0dPa^YY02UaAOWk=lk^;HFH@coo_;#kZ%)ORrW1(&MzWLHYT)6`dO)erldsu zavNHD&n_~pF%2gz!G{{Ud+f*dJOFh_Q%-YNT;9m8`_A@^mR?F8-o@h_0^NQ4Ugg{z z4CYs8Pig4@%rl(nCAV|~=IxRI^AM&@I^M)BUucT_j9p-B`IA2%+Jo`7Ycl~PBOo{Z z-n-(HLr7PoELkB@&S%EQHc0J==iwL0kx{!PSus4Hj~OMc36ph`PR!gW$5;`kUnn`c z)~utm3K&*0u$;K!s=^0ZqXyahCWkW}W>X=!&xF!kx;$5yg)yrcH}1+qZI?DMKs`gB zddU<eE0^ba|EoF^>J@j?0*l`X>|Yx`z3+iTmXzCj9ztJqi@8#ntp1hf{zXJ8j^~Z! zi7VMir(0*@d$LbxWcl+wj#Z?uHaJSy+5yQj;t-1op!)k9Sc=Zo=C?OBwfWJ5XpYQ$ zteET@+{S7j#`8rGGJc`E?1yzhSF5#_Q9-wR`_Y4OvvFUX(|aXjbG_>%k{asdH@B`Y z`;I5X9vvIw-?$Oz+Dy$uBB$~>NGIp5D^jd^dS<95&AT!JW+~c8e0|VD>!Rd;ZC>CZ zh!tA>djH3yr|wNGhCW>|FdivdBY@(9x<~%&!?j~{=C^=5(Kp7q6f*Jefm@qyolDE# zNu{@$TSww5INs>IwMG-aHy+Qs4Y?fG@(1C+QK9{wa5qDb<x||b6k8;PLMYxt_OqL; zq<f-F^utdD|IZPXp&qPdpTAjv47E~b#cSc0g))|Y)W;6Q)1%a4e~u`o!9!y0*~T@{ zsn2i4Oqf2(jcrUMo!;k|h;2aQJa{8IWs9~b=SS-;!%n}SIq`NS$b5E^KNr>uM^sun zfE^WYK9$HEM;_4lVF^7W9v}-V)d#a}fUE6PF!)DTLO+*E!$-6Zb9$hIT}DNcg%VF{ zqBN|qqfn?Jx1-%fqxMU$!FnF#!3<T1K9Ko7N7w=)=_{?O(4DP?h^wl)K(PbIBVno( zI2V1_OyQaxz_}o|P2g>;>PTQ+$9l?4SNcBQ(3!_w4;w;nq@-aQCplBhWM+ZqM$^>9 z{v<_nYey|v;QN|L$|Si8&gba)Z6Jl(I29p<oJbm?SvA0ODJ<?U!c!RE@ito1@~t&% zay4%_<&&&+g&7{TutAG<R9N>{8fhV!2e;5b=`P{VER75r$$K&LhGIPpjP9tbooz#v zGu*JQ9h|5?9Mht8D)y|tqa}S0dwtis{VAHT<js66fvlW8JgS9#kXI`q1r_0|7eViS z8^Q#b>f0a;U#As4HJLqzG#(94um6T<k|O~t<dv}JtWy)eiwteT{8&GLG#po&G8n@U z!=F8&^Wx44K9uG3PV_C^d2xc<Oz5Irxw-j8&5s<(dD=Ye)bLU`8*iy1Lw;$aY?SgQ ziSyCX$-D0Dc)Q`|M8;DTvrXcj1`?Vje4jT3HZZPaVT#R&N{<2<v^8Hp3I|a1d@gaD z7T;S>$`?j!lRBD{AQ|hJ_k~&iJuiJ)cpcy6Ch~bUbvx2F`eSVw1xRw#G$q%=)i7d# z2NL)0Z5cC7j5%0R^4qqgtjU1N_Hle!MTXzBxF=;p#-wSxj3t1girIRY<nzu(i^AE7 zUT-9&ES^UDN4lzbps$1>#Ywce@RW?H2>b4|mv;S<sQwlNn1`T{{=FVn4Yi2d623R1 z78#i;wE~)1Z{vc*6~@ttg|oh>B3Wj+B-)&Pyj>?Gt=W^=_US}~Wpjgbo?_~X)|ea3 z@Z-0*UOd(mG8{I%Zk4yNCzQC<9ho{d3y1OIr_i7Z5yY6@De5t$`^FdtG?OU9MZc{P z(MBnRL!3dSzEwX?r;1$zicl#d#kbt5KbDD6D#1J_n4%{5@j!0TXT}UM6-kKDp9@lY z?#adOSsuirtAVG*2uvd5iq$06d4u@*QE}tNK}A!7QZmicec2nfmckC76`;)zm5#(! z<A+I$aVoip+Jf++d$kD&!mbt0<OdhC>_~*!<IWy>T2xhIgWb%)FyaK#g681pc(#HG z7(%6ls1$yfN2i6suQDZV2p7mNpDJXJLsWBwvydHh=G;<5;~>SfVOD1$Fe&(hP+A<c zSU?ZqJmds>R1^2u;cF)nvjQ9*Z1h@N7C~ZEZX4G3mHF0n-RAmcln0HmvmuDsnbc2{ zh*-)^_5xDBBM~{RuxR6q)p2s*S}+)UtUo1GtO>{e;pGuNlQpFOF}{trSYIy@FRX_u zBF6ZpdsyjHR1j{gy?D>;&6ldT>nsB#M@r?Vi#|oQ0(10QgS16?)v<&}!|$lK83_HL z`EX2di5+pIG%XV_-Al5Y9=YdJm8j*+Ggh086?e1u2T4PCEhCYU@li<!-rc>4`kgU* z9vwjQJHuEut=n4u&b~;Vx=+&8un@AaKFaDdeU9xoQ1x9|Zj-92Y{~eKu3<PV5LwAU zD?p~4QqBJ02zxsO>tlqp_Xn(v;sjjj5hXHlEnvK3IU`1~z0)r?B=a&(i2|h_xx8jW zv+_uUBFFMvL(6%gMWo4F%SLrq=w@i#RlH{=;s6*;$)sGdB%_zsA_YHT^4Y^2+w`PN z5j3`qO>6y*g}*@}_oZiIKyk`u>Mp2ESqEbLYZ(qx<Yw}r6^@O!@lE%SP6%*G*Pq8* z#)*o}BCBXXL-MyLo)pHju6fgvfmV7ok}A&>z*?5rP$)k>g-nFnlm`J^yA+rwA{Hz! zs_%wx`jCQNy@Fb;`;vwgRlumq#+Uge9Thk5Ud(AAnpbjQt-oW`ro(7Ah~|~R)bjpT zbR@U22-N|LvleIllWsz-HbaPE+V^@-N3^Xp!OwZ^MpjaPqAiDH?2BAKbbpf*U$8AQ zQ9*qR67$4GWYNahz;8iVD#JwGcQed{6=Dzg5pXsg@@?W|sg~an^oF}&+%+Hb*_IwK zUnq<vuBvxw{}!>$>1`u)M}vVK@8YQb1rSiemh<r|{o8ts*e8?h=!Ytl4kH*->kr`j zx5JdKaB&#Pa%BjMuo}51#`I*aaSLVPMbM|w?qx`9zXE<6@3kWn|B{0yy#;rJ23!2z zUb2&HVj<VIS<DD_RD}Lu08X|x3=bj_`hbZfUthdyC<9K+aij)dl`Ow^=QY1g$>+vk zm1g6TV?LT4H^n=BspzRl6K(6L;1!E4B+uVhxIr4$G*I|SgiAL~DgFS)-TRrQVJC&V zr*B}BR7r*hH-65p#_BjQ-^C+*iZV+o<Etv?S25cYuc1K;bprjy*r7p0-PyVnWI69Q z{B7R@HnsXjIlvqxq&6Am)CyNK1ZM<$a8QLdE1^i^H7#FwO|s&^M5|Jos;@lIFd)t1 zO1Rq}UOa&=50{s61hR@Dbd?L!%gjO}>C^=y4nfJT{UGY9C}qO~*W*+~KJM~Hr54%L zKVf1FVw|*soLs%2^aTq+O^M)31A((U+aWn~X-K$zf+vj-?L;^GkdnsgS6TYe!1?@S zxqA6`X)JKkQP}D}YBiTaJ}r8v+4q_CsAlY<FS|)oiI%jBE~%!M-$@%Y)N;<DRbu)! zeuy(knD99=i)v>4=F#&+KC(YPm*c+>k?n8-PE|V8YDP6Lc#S;q9>k;_Q+g>?wSKzp z7pd$bzcynvjJQCtE+lq`BsgC#6iL9>#tBl*c;yq!(9TjfsqpIuynEcYs9j+^n$#$N zKeyd)n`T&(joB+6+FM|~XiLyc6&B8<MjY1W18<9i7uLYSYu`qw`I8TupuNwoa?l7P zbh|(Qc+wg4$q7B<8FgbrS9JsK>*&-k>v=wD$LB$l#w41Bqf9x_mRA_>Wy8&0>m1%1 zC~~mL?2T@Xjy;5ojx~{#Mj5tjQFfjIcV%e=OF}Cp@8~?k(zvmQuB3VJPL#tTRe@sr zlMSmWLw?UE-jaPE|KB6Y@dGpc7CFholeAS$DLN5e6~cJUpPU<n7xetr$37?wyYZx% z2+Pfft^dMZuoYsNCVv~q`c7qAOjG!3|FaI3ED1y&(lEHGBH!L*sBiYhFh%Eg=Tp@r zd!5mr0`WOp0ruAw%NW<gNU{2<?_?+YXNFtG<?OS`j#xR9!an}R9{u+awVwV<w9?R+ zM;Mlma@y&*Z1T4>ss*_2Hr-wlf<aj1T-rI{_zVW|S{vdELe7JaztzK=-zJS=lk-|V z`^iJt+GycwRIY9dM2di<JIJ}wb|Ud!ex(ZmSGfQQC;BFvMxuJvwXiD5N)N|{o3}Pp zUz4<u1k*a)IZGYCz42<Y|Hj2Q!2w5oq*%r&5V$VgfsyF#8bM6g(!CDG{E6OFxh9jJ zyAU}Z`$HkbP?Lrj!z0hj_Vi3CA(BV%lQTi)0udw;-=95qxeI@u0Cpo!mJ6BI!VE|i zlU|r!XlwuFzPUk;+HefB1DIO~wR!@K!a5eL6|&wRJoG=)udOj?ooL$$>>KR+BtDKg zylS4j+6=XbzTyqFEHiCXEw`;XFx9eoE;#rmp`5)8wbbhJhqoEFrC-{4M1pLXZlMum zuao-F5Zv1~UyH^KUm`HYulonzrUE}b;sN@s4<0#(!pI^_hH%5asky}ZubW8$(kZW( zuRaC=sf$;a?`xjf3y05+-WM?opI=WZ>|Zs^!!2&ZzS9bdM3Fm{prDvS`(-Ot(lfjs zuGsW4yiWMAo`q^aP&hrwtrAGCx%bH%H!w0t&<Er5`p`B^PgX>A=vsKW^4)gmGy95B zH{e-Y{i?eVaxhPlC>_mWs>ktA4st6nDC8tT2@uI^xj1bxJZVkOvdi$%lPG2uJ}v() zGd1Rk)oVq1T23nnIEm@dlpM_JAC8^<WYQ}rBONtkk7-=E@ciSc4xzU|d1&JWFYS7M zzSfpNkaR@ibSvoR2Le#;ss$z1)^ycIZs+@$Y4qH>k~nDoM;<y2VboFD)4c1rEjK$; zC4t7*_oxIpqfKjiTFdIii%BvJSmJxnI3>O1JI~Z?4_3@8(oZ36GG6#hY^7<(L~YhZ z6G!}~D(naC@AFFnvhz!<WF`1}w~Cmd)#4<&>QhzGVf^iDPSoBXAANg1oT_H+<$sNK zfE`8ny-@W2Rzpa!RZAcA7$T20Ga<;w+IRHSocp$cn`kT7FR|nIs^V>x)tOq(KGpp_ zu7Fp-V(kfUn-7XlKx$)4w%-fL#c|3>c~7U<!qVCC&#sx}i0@h|s3YZ<62jx}<RqxK z7#I<$@wkwH;~*DgAJ8n1F}%ex<J6q|GW_eT!=;h4!;rYY>Mj^9Tw#d`yGkA4%vGj4 zBH`7!u5s$$xNh(M{N&$pztml*T$2XJ4|Z{0;@gRR@xF<y@xUYC;<H35o7ZQlX<lWC zgFD||uBd*wn_J?YjS~BoP5`g0t!nQx*JdivP&Vs$<+Rtru*W~K>Mh#aSU^0?M^A#) zjGqRq4i;(OsPYS&%so(aYu0?4=mOB&Hg3|WoohC!gW0~am6~E?$;Ur`GGR){R=dB} z9s^E}rPdIq1wBkXOS50xQ&~x%c}FIoipz6%ntJi1yq@bYEuFM4^)hfQ#sO-TYmstm ziA}YiBGV#qh^s17frty<<@Z+`$8J;oX^kXx22Zkm5}+0>7x15s@5G<J+I<YD)U^X7 z%$z@2QSR==H&{GD)CBPqo{;)_hpd0T;%jNUGR^Zm4}~AkYA1|_$*jqq^d~o43iQ_E zq*Kx!mJvImJiqr2Ki(HHBN7V;*M2bf3O|netxGQi*0v6rm1lbNFEyDQ%ESAicXAN< z*1&u&Tp)r;v^_t|mU+s<3VSSXrpxfVH-f-BlJBoTui@w9*J*7l<-kC$se*~D2xvjw zLm~MI>THN!v26*L6gXq&p|Ncz$d}ffHLLZd0gJuyoU`OSwd~xd-gN*x^UAWoDl+}E zhwBL$Ls|4WZ|C_9+n&op?)|*oz+QcaSIN@M-c_|f>M!?7ij7mpp9|~Bwk)^;;7{;{ z#Uq4>1l46rI01$#xaqDg1t6Vt$1GBjI|HYyT+fyOpn#<tF=1}f#=4OE`9#zJ^6$3c zewGN`P@$mFdkl|ZrI#ktndDxMMb9oX4ULeBf{XpAN=-DmP1zI>ZNy+NeMd}`D%;B3 zc<eg+NE~*SR@BJak6=&jVwQjfUvX+S;YeEH-rzt`))r#2egS8WfP9Vf6rcY0@{Rdn zk~MXf+v(vAHo(Aoec}^Be%A8JOEG;$Z_{cR?42TK@o&Xv_JYReVC1EfQ)-0b%h7`S z_{K<*MxnWuv^umFG=X7fv+|i%h`>6r>hd1PHTunx1ye2g(BACv0tm@@bl|eB`6}z_ zB~ZIK=Jh_1;CIYs!Ev&i1?5nzq6bdjhJA)6X0Btw$;hG0%9<X_!R$TKun`+4N?p_p z{j083(XCkl!AZdmMk50t<w3tHF%`H9o>TS>K&S)0mVKRC$M!9ld5$}_d=b|lW86_c z94S}dVku_kw9{RjZphEvSN@cQN7kgG;uG373ue0^_~2P;q<nZIERmSur6RdW&sAmY zszm24sKYW+wMm_q5L=7rYqcB1JGGsPb%BG*<~B+<6HilXoIUxjkHo1sE0TUIAr&j~ zG)2jHGyW`V^xN^C;b;-psM3cCGn(X=L8iE=BGlD&c9n(u^X?{>0SWvd3FUXeEfY%i zFJw!RJWfI;^R7X!fB0sToJ}pv18dAzxhxaYNq)F4J2f+_1bLg?xlK8FYUpE=ytA5! zR@z<^(wq*1K_$xP_r_k?2VbtrPsu%B^u}MlbaFn*{i?%;FKlM~-cLx73Tz`}R&r)< zmbFPLIuYcg1DIITF~M10-L4N66t5h;y&2Mn?b1ik>2Tfuk>G}e)rQchzpkjUSGljS zv6)3&m+Py+C}-5reg)VmJ{^&ENZmzq4Zwd6(=G95v9btqDG5)_{86bwf%WH(^-+;b zehgWkxN&<r|GcupEi776r5nqOTd($`-H#1d3_H9RSWI+XH&1lAs8y&vMxRzT%DW;i zqAit><b!jrefouGc8M8Ng3n>&?J<AtEC{hLj+847v8R<%Jl+z1q#}9+K21j*{LnSd z-xq4A{$T)H-dldC8MHn*HRd`s-kAZDVg0$$?hZn&bw0R6p0ir+FI#Lbd;i<Fq?6Rc zJ9MVv-OL)Yv}l`UV<TQ$c3baF+MmGd<LS&5eSyyX=Sc6RnJdVY;7^v8!pYLI$MeqP zB;VJ#rUJZD^EKnf_fOzC!VJ{4sJXIq%^wH$bYH2+atQj$`)VpUC_-s@97m?b9NleR z&ktYW!dXcA{|`RdfdBT%hB{oE*c#gzS|YOjH;_rh&eqAq*2$4no0J_2RwCv2*XQ5* zvr43YJ-U@h|I$z*<^I<v3-dn>%Rde4Kh0l)N~A3R5McR-0?R)nSpK1*i^wG6U}rCE z=LQ{!nGs3_`etF_W@hAIWoBk21+cR)aznqdlR`0NO^hvo|8J-YKnE!Ir2parkx9wK z(azby$i$J9<zGxgA$CqcClgX;L?#t?dlOP71)!P9U)S^hUlM=&{gntGACx~kXDB5W zL?&qq<G<qg=b)hM{C7{sf9v{J0{_+ZFIC6?V&Wfk5ug*$+Rp6XJN%X4fAtV@b~3kf zAf*;np!q8q6QGlYovr9!R;fjKSeaSbSeThPSpN!$i;fvU#mr0v#gnx&{=cCpIM^9G z8<{{U%UT#Y*g4vnI`NPyI9NcBOvR2=K~x+{M#aL(8aj@MosGSnqXl$GQ3s%_g{>LQ zzcK6PU}B2MOv=iPg2?>8UZk8H9Bdq<rvJcLIRRW8&|~`hBDMW*81&bF!r0lMs`2l5 z|N8MCeVJLfIk=$O@;~s{*x0zBlKvksb^w4IdV2o{jFS^8ssDg+bFpzkb@AWvSXi04 zSpO5o!NCIf5B^xVIM~?#6UNQL&i)_cvNCf5IG~FD?_;pCvI02&6ORqR!Uk2g|AEKB z$@QOOKxN9#@}GE|008s9(Q|SDT3DMn{7YvgZB6Y+S^jlt{?&CmsQ&)F6cL$}Ej&!1 eXYcPBb#wwcIQ{E<LaB2DSP{Q`5tA23{Qm&eJq|+v literal 0 HcmV?d00001